Files
zeekayandGitHub e20dc71ad8 i18n: /s* to /z*, the app's rooms and settings read their copy through t (#69)
The product pages from /s3 to /zap, /university and its course data,
/trust, /security, /sdks, /support, /tasks, /startups, /sms-opt-in, the
buying specialist, Zen, Kai's guide, Studio, the settings pages, and the
shared sales, solutions, zap and ui pieces. Client code draws with t(),
server components with <T>, copy held as data is marked with phrase()
and drawn through t() where it lands. A link or a figure inside a
sentence is a value, so a translator reorders the whole sentence.

Rebased on main: every page main moved onto Fold or Steps keeps main's
layout, with its words wrapped (label, title, lede, points). Steps now
draws a step's body through t, as it already drew the title. Settings
keeps main's usage panel, refresh, rewards wallet and sign-in wallet
rows, each label wrapped.

Left English: the skills page's install line (a command and two URLs),
and the solution eyebrow and sibling heading built from a kind label.

Claude-Session: https://claude.ai/code/session_015XYKLjZtDTJEnMo4eK3AFH
2026-10-29 23:51:44 -07:00

101 lines
5.5 KiB
TypeScript

'use client'
/**
* NO TAILWIND. `Band` and `Head` carry the section frame and the centred head;
* the diagram frame and the three figures under it are gui props over
* @hanzo/design's tokens.
*/
import React from "react";
import { motion } from "@/components/motion";
import { Box, View } from '@hanzo/ui'
import { Grid as Columns } from '@hanzo/ui/grid'
import { Band, Head, Words } from '@/components/marketing/band'
import { useI18n } from '@hanzo/i18n/react'
/** The drawing's ink, and the names inside it one step brighter. */
const RULES = 'color-mix(in oklab, var(--foreground) 80%, transparent)'
const SOFT = 'color-mix(in oklab, var(--foreground) 70%, transparent)'
/** A box's name inside the drawing. */
function Name({ children }: { children: string }) {
return <Words color={SOFT}>{children}</Words>
}
/** One figure under the drawing: the ratio, and what it counts. */
function Figure({ value, caption }: { value: string; caption: string }) {
return (
<Box $platform-web={{ textAlign: 'center' }}>
<Words render="div" mb={8} fontSize="$8" lineHeight="1.2" weight="700" color={SOFT}>{value}</Words>
<Words render="div" color="var(--muted-foreground)">{caption}</Words>
</Box>
)
}
const ZapArchitecture = () => {
const { t } = useI18n();
return (
<Band rule={false} pad="$11" measure={1152} ground="color-mix(in oklab, var(--secondary) 30%, transparent)">
<Head
title={t('How it is put together')}
lede={t('Many agents on one side, many tool servers on the other, one address in the middle.')}
/>
<Words
render={<motion.div initial={{ opacity: 0, y: 20 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true }} transition={{ duration: 0.5, delay: 0.1 }} />}
overflowX="auto"
rounded="var(--radius-xl)"
borderWidth={1}
borderColor="var(--border)"
background="color-mix(in oklab, var(--background) 50%, transparent)"
p={32}
fontSize="$2"
lineHeight="1.4286"
>
<Words render="pre" my="1em" whiteSpace="pre" color={RULES}>
{`┌─────────────────────────────────────────────────────────────────┐
│ Agent Swarm │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Agent 1 │ │ Agent 2 │ │ Agent 3 │ │ Agent N │ ... │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
│ │ │ │ │ │
│ └────────────┴─────┬──────┴────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────┐ │
│ │ `}<Name>ZAP Gateway</Name>{` │ │
│ │ zap://localhost:9999│ │
│ │ │ │
│ │ • Schema Federation │ │
│ │ • Request Routing │ │
│ │ • Capability Control │ │
│ └───────────┬───────────┘ │
│ │ │
│ ┌──────────────────┼──────────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │`}<Name>MCP Srv</Name>{` │ │`}<Name>ZAP Srv</Name>{` │ │`}<Name>MCP Srv</Name>{` │ │
│ │ GitHub │ │ Native │ │ Slack │ ... │
│ └─────────┘ └─────────┘ └─────────┘ │
└─────────────────────────────────────────────────────────────────┘`}
</Words>
</Words>
<View
render={<motion.div initial={{ opacity: 0, y: 20 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true }} transition={{ duration: 0.5, delay: 0.2 }} />}
display="block"
mt={32}
>
<Columns columns={{ min: 224, max: 3 }} gap={24}>
<Figure value="N:1" caption={t('Every agent, one address')} />
<Figure value="1:M" caption={t('One schema over every backend')} />
<Figure value="0" caption={t('Copies of the same tool server')} />
</Columns>
</View>
</Band>
);
};
export default ZapArchitecture;