11import { cn } from '@/lib/utils' ;
2+ import type { HomepageTranslations } from '@/lib/homepage-i18n' ;
23
34interface CodePreviewProps {
45 className ?: string ;
6+ t : HomepageTranslations [ 'agentPreview' ] ;
57}
68
79/**
8- * Homepage code preview.
10+ * Homepage hero preview.
911 *
10- * Shows a real docker-compose.yml that an enterprise operator can copy,
11- * paste, and run to bring ObjectOS up against their own database in a
12- * single command. Replaces the previous developer-flavored object
13- * definition snippet.
12+ * An end-user conversation with an ObjectOS Agent — querying, analyzing,
13+ * and acting on live business data through natural language.
1414 */
15- export function CodePreview ( { className } : CodePreviewProps ) {
16- const kw = 'text-purple-600 dark:text-purple-400 font-semibold' ;
17- const str = 'text-green-600 dark:text-green-300' ;
18- const num = 'text-amber-600 dark:text-yellow-300' ;
19- const key = 'text-cyan-600 dark:text-sky-300' ;
20- const fg = 'text-foreground' ;
21- const cm = 'text-foreground/40 italic' ;
15+ export function CodePreview ( { className, t } : CodePreviewProps ) {
16+ const user = 'text-foreground' ;
17+ const ai = 'text-foreground/90' ;
18+ const label = 'text-cyan-600 dark:text-sky-300 font-semibold' ;
19+ const aiLabel = 'text-purple-600 dark:text-purple-400 font-semibold' ;
20+ const ok = 'text-green-600 dark:text-green-400' ;
21+ const dim = 'text-foreground/50' ;
22+ const accent = 'text-amber-600 dark:text-yellow-300' ;
23+ const tool = 'text-blue-600 dark:text-blue-300' ;
2224
2325 return (
2426 < div className = { cn (
@@ -32,62 +34,52 @@ export function CodePreview({ className }: CodePreviewProps) {
3234 < div className = "h-3 w-3 rounded-full bg-yellow-500/80" />
3335 < div className = "h-3 w-3 rounded-full bg-green-500/80" />
3436 < div className = "ml-2 text-xs font-medium text-muted-foreground font-mono" >
35- docker-compose.yml
37+ { t . windowTitle }
3638 </ div >
3739 </ div >
3840
39- { /* Code Content — real docker-compose deployment */ }
41+ { /* Conversation */ }
4042 < div className = "overflow-x-auto p-6 text-left bg-gradient-to-br from-card to-muted/20" >
41- < pre className = "font-mono text-sm leading-7" >
43+ < pre className = "font-mono text-sm leading-7 whitespace-pre-wrap break-words " >
4244 < code >
43- < span className = { cm } > { '# Run ObjectOS against your own Postgres' } </ span >
45+ < span className = { label } > { t . userLabel } </ span >
4446 < br />
45- < span className = { key } > services </ span > < span className = { fg } > : </ span >
47+ < span className = { user } > { t . user1Line1 } </ span >
4648 < br />
47- { ' ' } < span className = { key } > objectos</ span > < span className = { fg } > :</ span >
48- < br />
49- { ' ' } < span className = { key } > image</ span > < span className = { fg } > :</ span > { ' ' }
50- < span className = { str } > ghcr.io/objectstack/objectos:latest</ span >
51- < br />
52- { ' ' } < span className = { key } > ports</ span > < span className = { fg } > :</ span > { ' ' }
53- [< span className = { str } > "3000:3000"</ span > ]
54- < br />
55- { ' ' } < span className = { key } > environment</ span > < span className = { fg } > :</ span >
56- < br />
57- { ' ' } < span className = { key } > OS_ARTIFACT_FILE</ span > < span className = { fg } > :</ span > { ' ' }
58- < span className = { str } > /artifacts/objectstack.json</ span >
59- < br />
60- { ' ' } < span className = { key } > OS_DATABASE_URL</ span > < span className = { fg } > :</ span > { ' ' }
61- < span className = { str } > postgres://app@db:5432/objectos</ span >
49+ < span className = { user } > { t . user1Line2 } </ span >
50+ < br /> < br />
51+
52+ < span className = { aiLabel } > { t . agentLabel } </ span >
53+ < span className = { dim } > { ' ' } </ span >
54+ < span className = { tool } > { t . tool1Name } </ span >
55+ < span className = { dim } > { t . tool1Target } </ span >
6256 < br />
63- { ' ' } < span className = { key } > OS_AUTH_SECRET</ span > < span className = { fg } > :</ span > { ' ' }
64- < span className = { fg } > $</ span > < span className = { key } > { '{AUTH_SECRET}' } </ span >
57+ < span className = { ai } > { t . matchSummary } </ span >
6558 < br />
66- { ' ' } < span className = { key } > volumes </ span > < span className = { fg } > : </ span >
59+ < span className = { ai } > • </ span > < span className = { accent } > TKT-2041 </ span > < span className = { ai } > { t . ticket1Meta } </ span > < span className = { dim } > { t . ticket1Note } </ span >
6760 < br />
68- { ' ' } < span className = { fg } > -</ span > { ' ' }
69- < span className = { str } > ./artifacts:/artifacts:ro</ span >
61+ < span className = { ai } > • </ span > < span className = { accent } > TKT-2038</ span > < span className = { ai } > { t . ticket2Meta } </ span > < span className = { dim } > { t . ticket2Note } </ span >
7062 < br />
71- { ' ' } < span className = { fg } > -</ span > { ' ' }
72- < span className = { str } > objectos-data:/var/lib/objectos</ span >
63+ < span className = { ai } > • </ span > < span className = { accent } > TKT-2035</ span > < span className = { ai } > { t . ticket3Meta } </ span > < span className = { dim } > { t . ticket3Note } </ span >
7364 < br />
74- { ' ' } < span className = { key } > depends_on</ span > < span className = { fg } > :</ span > { ' ' }
75- [< span className = { str } > db</ span > ]
65+ < span className = { ai } > { t . insight } </ span >
7666 < br /> < br />
77- { ' ' } < span className = { key } > db</ span > < span className = { fg } > :</ span >
78- < br />
79- { ' ' } < span className = { key } > image</ span > < span className = { fg } > :</ span > { ' ' }
80- < span className = { str } > postgres:</ span > < span className = { num } > 16</ span >
67+
68+ < span className = { label } > { t . userLabel } </ span >
8169 < br />
82- { ' ' } < span className = { key } > volumes</ span > < span className = { fg } > :</ span > { ' ' }
83- [< span className = { str } > db-data:/var/lib/postgresql/data</ span > ]
70+ < span className = { user } > { t . user2 } </ span >
8471 < br /> < br />
85- < span className = { key } > volumes</ span > < span className = { fg } > :</ span > { ' ' }
86- < span className = { fg } > { '{ objectos-data: {}, db-data: {} }' } </ span >
87- < br /> < br />
88- < span className = { cm } > { '# → Application at http://localhost:3000' } </ span >
72+
73+ < span className = { aiLabel } > { t . agentLabel } </ span >
74+ < span className = { dim } > { ' ' } </ span >
75+ < span className = { tool } > { t . tool2Name } </ span >
76+ < span className = { dim } > { t . tool2Count } </ span >
77+ < span className = { tool } > { t . tool3Name } </ span >
78+ < span className = { dim } > { t . tool3Count } </ span >
79+ < br />
80+ < span className = { ok } > { t . actionResult } </ span >
8981 < br />
90- < span className = { cm } > { '# → Setup app at http://localhost:3000/_setup/' } </ span >
82+ < span className = { dim } > { t . governance } </ span >
9183 </ code >
9284 </ pre >
9385 </ div >
0 commit comments