Back to site

Rebuild package

Handoff

Everything needed to move Responser into a Next.js monorepo: the theme as one config block, the archived logo files, the component inventory (shadcn/ui names) and the full page inventory with routes.

01 · Tokens

Tailwind theme tokens — single config block

/* Responser theme — single Tailwind v4 config block (src/styles.css).
 * Luminous dark is the default; .dark mirrors the same branded surfaces;
 * .app-light is the app.responser.com light theme. */

@theme inline {
  --font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, monospace;
  --font-display: "Outfit", "Inter", ui-sans-serif, sans-serif;

  --radius-control: 0.5rem;   /* buttons, inputs, chips */
  --radius-card: 0.75rem;     /* cards, panels, dialogs */
  --radius-sm: 0.25rem;

  --duration-control: 120ms;  /* hovers, tab switches */
  --duration-overlay: 180ms;  /* dialogs, toasts, entrances */

  --spacing: 0.25rem;         /* 4px base scale: 4 8 12 16 24 32 48 64 */
}

:root {
  /* Neutrals (grey ramp 50–950, cool hue 265) */
  --grey-50: oklch(0.985 0.002 265);  --grey-500: oklch(0.6 0.015 265);
  --grey-100: oklch(0.965 0.003 265); --grey-600: oklch(0.49 0.017 265);
  --grey-200: oklch(0.925 0.005 265); --grey-700: oklch(0.395 0.018 265);
  --grey-300: oklch(0.872 0.007 265); --grey-800: oklch(0.3 0.018 265);
  --grey-400: oklch(0.72 0.012 265);  --grey-900: oklch(0.225 0.018 265);
  --grey-950: oklch(0.155 0.017 265);

  /* Surfaces & ink — dark canvas default */
  --background: oklch(0.105 0.012 285);
  --paper: oklch(0.145 0.02 285);
  --foreground: oklch(0.985 0.004 285);
  --muted-foreground: oklch(0.76 0.024 285);
  --subtle-foreground: oklch(0.64 0.026 285);
  --border: oklch(0.985 0.004 285 / 0.13);
  --rule: oklch(0.985 0.004 285 / 0.17);
  --track: oklch(0.985 0.004 285 / 0.12);

  /* Brand — Signal violet primary, luminous spectrum */
  --primary: oklch(0.74 0.22 308);        /* Signal violet #B56BFF */
  --primary-strong: oklch(0.79 0.2 326);  /* Kinetic pink #F65BB7 */
  --primary-soft: oklch(0.74 0.22 308 / 0.16);
  --luminous-hot: oklch(0.7 0.26 326);    /* hot pink */
  --luminous-cyan: oklch(0.8 0.14 205);   /* Signal cyan #74DDE9 */
  --teal: oklch(0.82 0.14 202);

  /* Accents */
  --amber: oklch(0.84 0.17 78);           /* Score amber #F5C657 */
  --success: oklch(0.8 0.17 153);
  --warning: oklch(0.84 0.17 78);
  --danger: oklch(0.72 0.2 25);
  --info: oklch(0.82 0.13 220);

  /* Logo gradient — violet → hot → cyan (underline, fetch pulse) */
  --spectrum-violet: oklch(0.72 0.2 272); /* #8B7CF6 */
  --spectrum-pink: oklch(0.7 0.26 326);   /* #E85BC7 */
  --spectrum-amber: oklch(0.84 0.17 78);

  /* Elevation — minimal, luminous */
  --shadow-1: 0 1px 0 oklch(0.985 0.004 285 / 0.08),
              0 10px 32px oklch(0.03 0.015 285 / 0.22);
  --shadow-2: 0 28px 80px oklch(0.03 0.015 285 / 0.56),
              0 0 0 1px oklch(0.985 0.004 285 / 0.05);
}

02 · Logos

Logo files (archived under src/assets/logo-explorations/v03-fetch-gradient/)

responser-lockup-dark.svg

Full lockup on dark backgrounds (site default)

responser-lockup-light.svg

Full lockup on light backgrounds

responser-lockup-mono-black.svg

One-colour black — print, emboss, single ink

responser-lockup-mono-white.svg

One-colour white — print, emboss, single ink

responser-lockup-animated.svg

Lockup with the fetch pulse (SMIL; static fallback)

responser-mark-dark.svg / -light.svg

Compact R mark with gradient underline

responser-mark-mono-black.svg / -mono-white.svg

One-colour compact marks

responser-mark-animated.svg

Compact mark with pulse

responser-favicon.svg

64×64 app icon on #111015

favicon set (16/32/180/192/512)

Derive from responser-mark + favicon; PNG app icons for iOS/Android

Wordmark is Outfit 700 italic, uppercase — convert text to outlines before print. The underline carries the gradient #8B7CF6 → #E85BC7 → #7DEBEE and pulses forward (fetch motion); animated variants fall back to static where SMIL is unsupported.

03 · Components

Component inventory (shadcn/ui names)

Button

brand/primitives — primary, secondary, ghost, danger, link; sm/md/lg/icon, loading

Input / Select / Field

brand/primitives — invalid state, hint, focus ring

Badge

brand/primitives — neutral, primary, teal, amber, success, warning, danger, info

Card / SpecCard

brand/primitives — luminous-panel surface

Tabs

brand/primitives — segmented control, aria-selected

Dialog

brand/primitives — Escape close, overlay click

Toast

brand/primitives — success state (use Sonner in app shell)

Skeleton

brand/primitives — track-coloured pulse

EmptyState

brand/primitives — icon, title, body, action

ScoreRing

brand/primitives — 0–100 ring, amber ≥80, violet ≥50

ConfidenceBar

brand/primitives — labelled progress bar

TimerChip

brand/primitives — “Replied in 0:42”, live pulse

SourceTag / IntentBadge / StatusBadge

app/ui — lead metadata tags

Switch / Segmented / Panel / Bar / MiniRing / ReplyTimer

app/ui — app-shell controls

04 · Pages

Page & screen inventory with routes

Marketing — Home

/

index.tsx

Marketing — Product

/product · /product/capture · qualify · respond · recover · attribute

product.tsx, product.$slug.tsx

Marketing — Solutions

/solutions · /solutions/$industry

solutions*.tsx

Marketing — Pricing

/pricing

pricing.tsx

Marketing — Compare

/compare/$competitor

compare.$competitor.tsx

Marketing — Resources

/resources · speed-to-lead-europe · tools · glossary · form-providers/$provider

resources*.tsx

Marketing — Developers / Security / About / Contact

/developers · /security · /about · /contact

developers.tsx et al.

Brand manual

/brand

brand.tsx

Email templates

/emails

emails.tsx

Handoff

/handoff

handoff.tsx

App — Dashboard

/app

app.index.tsx

App — Inbox / Lead card

/app/inbox · /app/leads/$id

app.inbox.tsx, app.leads.*.tsx

App — Approvals / Leads / Analytics

/app/approvals · /app/leads · /app/analytics

app.approvals.tsx et al.

App — Forms / Knowledge / Integrations / Settings

/app/forms · /app/knowledge · /app/integrations · /app/settings

app.*.tsx

App — States gallery

/app/states

app.states.tsx

App — Support

/app/support

app.support.tsx

Operator desk

/admin · /admin/customers/$id · /admin/support · /admin/growth

admin*.tsx

Onboarding

/onboarding

onboarding.tsx

05 · Emails

Email templates (React Email + Resend)

Eleven table-safe templates at 600 px live at /emails: three filled customer replies (logo slot, brand colour slot, plain-text-first body, booking button, signature, optional AI footer, optional unsubscribe), one recovery message with a single resume button, and seven Responser product emails. All colours are hex in src/components/emails/primitives.tsx so the React Email build needs no Tailwind.