import type { CSSProperties } from 'react' import { ChipTag, chipContentLabelClass, chipGeometryClass, cn } from '@sim/emcn' import { CircleCheck, Lock } from '@sim/emcn/icons' import { ThinkingLoader } from '@/components/ui' import styles from '@/app/(landing)/enterprise/components/feature-graphics/deploy-graphic.module.css' import { FeatureGraphicShell } from '@/app/(landing)/enterprise/components/feature-graphics/feature-graphic-shell' /** * The ThinkingLoader's light-grey material (its dark-surface theme from * `thinking-loader.module.css`), asserted inline because the always-light * landing would otherwise ink the loader dark — invisible on the dark * Deploy button. */ const DEPLOY_LOADER_INK = { '--tl-grad-inner': '#a7a7a7', '--tl-grad-outer': '#d6d6d6', '--tl-glow': 'rgba(255, 255, 255, 0.9)', } as CSSProperties /** * The moment of a one-click deploy, told top to bottom: the agent being * shipped, the Deploy button, and a * minimal dark browser window rising from the bottom edge with the hosted * endpoint's URL in its address bar — the deployed agent is literally a live * web address, no infrastructure in between. The window is an outlined shell * (grey hairline, tile shows through) whose address bar carries the Deploy * button's `--text-muted` fill, so click and outcome read as one system. A * single causal vignette instead of a workflow canvas, so the click itself is * the subject. Faint `--text-muted-inverse` hairlines (mixed toward the dark * tile background so they read as guides) link agent → button → browser, and * a white progress sweep (from `deploy-graphic.module.css`) loops down the * two hairlines in sequence on a shared 4.5s timeline — pill → button, then * button → browser. The instant the sweep's leading edge lands on the * browser's top edge, the outline trace takes over with no gap: the white * line splits at the top-center connection point and draws outward both * ways along the top border, bends around the rounded corners, and * continues down the sides while its tail releases from center and follows * the head — a traveling pulse that runs out and off the outline rather * than painting it permanently. It is implemented as four rounded-rect * border overlay copies (top pair + side pair, mirrored) revealed by * animated `clip-path` inset windows, so the trace follows the exact * rounded-corner geometry at any width. Under `prefers-reduced-motion` * everything is static — plain faint lines, no sweep or trace. * * The Deploy button's icon is the gooey {@link ThinkingLoader} pinned to * `relay` — the Return shape (work coming back) — looping its ball pass, * inked light so it reads on the dark button. * * The agent header follows the nested-corner radius rule: the `v3` ChipTag is * `rounded-md` (6px) and sits 6px (`py-1.5` / `pr-1.5`) from the container * edge, so the container radius is 6px + 6px = 12px. * * The feature tile's visual slot bleeds `2rem` right (`1.5rem` under `max-lg`) * but not left, so this centered vignette adds matching right padding to land * on the tile's visible center instead of the bled slot's center. * * The browser window is pinned to `h-24` (96px) so its top edge lands on the * same line as the neighboring build-methods tile's composer (76px tall + * `bottom-5`), keeping the tile row horizontally aligned; both connector * lines are `flex-1` with mirrored margins, so the Deploy button stays * equidistant between the agent pill and the browser at any tile height. */ export function DeployGraphic() { return ( ) }