// Caret landing — hero: spirit mesh, headline, CTAs, and the animated keyboard-flow stage. const HERO_SUMMARY = ['Steady','growth','across','regions.','EMEA','beat','projections','by','12%;','APAC','held','flat.']; const HERO_SUMMARY_STR = HERO_SUMMARY.join(' '); const HERO_SELECTED = 'The quarterly report shows steady growth across all regions, with EMEA outperforming projections by twelve percent while APAC stayed flat against a strong prior year.'; const HERO_INIT = { visible: false, query: '', showCursor: false, mode: 'list', activeAlias: null, result: '', streaming: false, keyflash: null, replaced: false }; const HERO_STATIC = { visible: true, query: 'ss', showCursor: false, mode: 'result', activeAlias: 'ss', result: HERO_SUMMARY_STR, streaming: false, keyflash: null, replaced: true }; const HERO_EVENTS = [ { t: 500, patch: { keyflash: 'summon' } }, { t: 720, patch: { visible: true } }, { t: 760, patch: { showCursor: true } }, { t: 1150, patch: { keyflash: null } }, { t: 1500, patch: { query: 's', keyflash: 'type' } }, { t: 1660, patch: { query: 'ss', activeAlias: 'ss' } }, { t: 1980, patch: { keyflash: null } }, { t: 2300, patch: { keyflash: 'run' } }, { t: 2470, patch: { mode: 'result', streaming: true, showCursor: false, result: '' } }, ...streamEvents(HERO_SUMMARY, 2600, 115), { t: 2920, patch: { keyflash: null } }, { t: 4250, patch: { streaming: false } }, { t: 4950, patch: { keyflash: 'replace' } }, { t: 5150, patch: { replaced: true } }, { t: 5600, patch: { visible: false, keyflash: null } }, ]; const HERO_LOOP = 6700; const FLASHES = { summon: { keys: ['⌥', 'Space'], label: 'Summon Caret' }, type: { keys: ['s', 's'], label: 'Type the alias' }, run: { keys: ['↩'], label: 'Run' }, replace: { keys: ['⌘', '⇧', '↩'], label: 'Replace selection' }, }; function KeyFlash({ flash }) { const f = flash && FLASHES[flash]; return (
{f && (
{f.label}
)}
); } // the document "behind" the panel — the app you're working in function HeroDoc({ replaced }) { return (

{replaced ? HERO_SUMMARY_STR : HERO_SELECTED}

); } function Hero({ headline, reduced }) { return (
Your keyboard companion for macOS

{headline}

Launch apps, find files, reuse your clipboard, and expand snippets. When you need AI, run an action on your selection and put the result back where you’re working.

macOS 14 or later · Apple Silicon and Intel · Bring your own AI provider

Apps · Files · Clipboard · Snippets · AI actions

); } Object.assign(window, { Hero });