← back to Prestige Car Wash Video
src/adminSections.ts
38 lines
import dims from './dims.json';
import type { Section } from './sections';
import { FPS } from './sections';
const AMBER = '#f5b301';
const D: Record<string, { w: number; h: number }> = dims as any;
const sec = (s: number) => Math.round(s * FPS);
const TABS: Array<[string, string, string]> = [
['overview', 'Overview', 'Live counts across the whole growth dataset'],
['competitors', 'Competitors', '12 rival washes in the San Fernando Valley'],
['best-post', 'Best Times to Post', 'When engagement peaks by channel'],
['best-market', 'Best Times to Market', 'When to spend to convert'],
['holidays', 'Holiday-Driven', 'Eight seasonal campaign hooks'],
['services', 'Services', 'Editable service catalog behind the storefront'],
['suggestions', 'Grow the Business', 'Ten ranked growth plays with rationale'],
['ads', 'Online Ads', 'Platform-by-platform ad headlines'],
['directories', 'Groups · Directories', 'Nextdoor, local groups & listing sites'],
['google', 'Google Business', 'Places profile draft-update panel'],
['leads', 'Leads', 'Inbound booking requests from the site'],
['credentials', 'Credentials', 'Keys & access (presence + last-4 only)'],
];
export const ADMIN_SECTIONS: Section[] = [
{ kind: 'card', id: 'intro', act: 'Behind the scenes', title: 'Growth Center',
sub: 'The admin backend that keeps Prestige sharp', frames: sec(8), accent: AMBER },
...TABS.map(([key, title, sub]): Section => {
const dk = 'admin-' + key;
return { kind: 'shot', id: dk, file: `shots/${dk}.png`, w: D[dk]?.w, h: D[dk]?.h,
act: 'Admin · Growth Center', title, sub, url: 'prestigecarwash.com/admin',
frames: sec(4.6), accent: AMBER };
}),
{ kind: 'card', id: 'outro', act: 'Prestige Car Wash', title: 'Growth Center',
sub: 'Competitors · campaigns · ads · leads — all in one place', frames: sec(4.5), accent: '#34d399' },
];
export const ADMIN_TOTAL = ADMIN_SECTIONS.reduce((a, s) => a + s.frames, 0);