Case Study

Brand Engineering at the Component Level

Arellano Global's brand flagship website — built on a comprehensive Radix UI component library, shadcn/ui design system, and a bidirectional AI-assisted design workflow that keeps code and design in sync.

40+
Radix Primitives
EN/ES
i18next
AI
Design Workflow
Employer
Arellano Global LLC
Live URL
arellanoglobal.org
Stack
React 18 · Vite 5 · Tailwind 3 · shadcn/ui
Components
40+ Radix UI Primitives
Built by
Del Rey Valmoria
// 01 — The Problem

Marketing Sites Need Design Consistency at Scale

Building a brand flagship isn't a design problem — it's an architecture problem. The first version of any marketing site is hand-crafted and looks exactly as designed. The problem surfaces six weeks later when a dropdown needs a keyboard accessibility fix, a dialog needs an animation update, and a tooltip needs to work on mobile without any of those changes affecting the other two.

Component libraries exist precisely to solve this. But most teams treat component libraries as a collection of styled elements rather than a behavioral contract. Radix UI's primitives are different: they provide the accessibility tree, keyboard navigation, focus management, and screen reader semantics as a baseline — and let you own the styling entirely. That's the foundation this site needed.

The secondary constraint was iteration velocity. The agency's design workflow needed to stay in sync with code. Rather than the traditional handoff loop (design → review → implementation → QA → repeat), the build uses Lovable.dev for bidirectional sync: AI-generated design changes flow into the repository, and code changes push back. The result is a design workflow that eliminates the handoff gap entirely.

The site also needed to be bilingual from the start — not translated after the fact. Every piece of copy lives in structured i18next locale files. Language switching is instant, with no page reload and no layout reflow. Lenis smooth scroll wraps the entire page for the tactile scroll feel that distinguishes premium sites from standard ones.

AG Main Site — About hero

ABOUT — HERO SECTION

AG Main Site — Reference hero

HERO — arellanoglobal.org

AG Main Site — Case study

CASE STUDY SECTION

AG Main Site — Story section

OUR STORY — arellanoglobal.org

// 02 — How It Was Built

shadcn/ui System + Radix Primitives + Lovable.dev AI Workflow

Three layers working together: a design system that enforces consistency, a component library that guarantees accessibility, and an AI-assisted workflow that keeps design and implementation in sync.

"Radix UI gives you the behavior contract. shadcn/ui gives you the styling contract. Together, they make consistency a structural property of the codebase."
Layer 01

shadcn/ui Design System

All UI components are built on the shadcn/ui pattern: copy-owned components that live in src/components/ui/ and are never imported from a registry at runtime. Tailwind CSS variables define the design token layer. Modifying a button's border-radius or a card's shadow updates every instance site-wide from a single change in globals.css.

Layer 02 — Radix UI Primitives

40+ Accessible Components, Zero Reinvention

Every interactive element — dropdown menus, dialogs, accordion sections, tabs, tooltips, radio groups, select menus, sliders, toast notifications — is backed by a Radix UI primitive. Radix handles the WAI-ARIA roles, keyboard navigation, focus trapping, and screen reader announcements. The implementation layer handles only visual styling. This separation means accessibility fixes happen upstream in Radix and flow down automatically.

Accordion AlertDialog Avatar Badge Button Calendar Card Carousel Chart Checkbox Command ContextMenu Dialog DropdownMenu Form HoverCard Input Label Menubar NavigationMenu Popover Progress RadioGroup ScrollArea Select Separator Sheet Skeleton Slider Switch Table Tabs Textarea Toast Toggle Tooltip
Layer 03 — AI Design Workflow

Lovable.dev — Bidirectional Design-to-Code Sync

The site uses Lovable.dev as a design acceleration layer. Design changes initiated in Lovable's AI interface generate React component code that is committed directly to the repository. Code changes made in the IDE push back to Lovable's canvas. This bidirectional sync eliminates the traditional design-handoff gap: there is no Figma → developer translation step, no "make it look like the mockup" QA pass, and no drift between what was designed and what shipped. The AI generates components that conform to the existing shadcn/ui system — it knows the token names, the utility class patterns, and the component API shapes. Updates land in the repository as normal commits, visible in git history, reviewable in PRs.

Layer 04

Lenis Smooth Scroll

Lenis wraps the entire page scroll context. The result is the inertia-based momentum scroll that distinguishes premium web experiences from standard browser scroll. Lenis's lerp parameter controls the smoothing factor — set to 0.1 for a natural deceleration that doesn't feel sluggish at low values.

Layer 05

Form Handling: react-hook-form + Zod

Contact and intake forms use react-hook-form for uncontrolled input management — zero re-renders on keystrokes until validation runs. Schema validation is handled by Zod. The Zod schema is the single source of truth for both client-side validation error messages and TypeScript types — z.infer<typeof schema> eliminates the type duplication that comes from maintaining separate interface definitions. Data visualization for service metrics uses recharts, which integrates cleanly with Radix's composition model.

01
Lovable.dev
AI generates React components conforming to shadcn/ui system
→
02
GitHub Repo
Committed as normal PRs. Reviewable, diffable, history-tracked.
→
03
Coolify Deploy
Auto-build on push. Vite bundles. Docker serves. Traefik routes.
COMPONENT HIERARCHY Radix Primitive WAI-ARIA roles Keyboard nav Focus management shadcn/ui (copy-owned) Tailwind styling CSS variable tokens Lovable.dev AI sync i18NEXT BILINGUAL SYSTEM locales/en/translation.json locales/es/translation.json navigator.language <LanguageToggle /> Lenis smooth scroll lerp: 0.1 Instant lang switch — no reload, no reflow

Left: component hierarchy — Radix primitives as behavioral base, shadcn/ui as styling layer, Lovable.dev as sync layer. Right: i18next bilingual architecture and Lenis scroll.

React 18 Vite 5 TypeScript Tailwind 3 shadcn/ui Radix UI (40+) react-hook-form Zod recharts Lenis i18next Lovable.dev Coolify v4 Docker
// 03 — Proof

By the Numbers

A brand flagship built on a component library that makes consistency structural, accessibility non-optional, and design iteration fast.

40+
Radix Primitives
EN/ES
i18next Bilingual
0ms
Lang Switch Reload

Design Iteration Without Handoff Lag

The Lovable.dev bidirectional sync eliminates the design-to-dev handoff entirely. A design change that would take 2 days under a traditional Figma workflow — design update → developer implementation → QA → sign-off — takes hours when the AI generates the component code directly into the repository.

Type-Safe Forms with Zero Duplication

Zod schemas serve as the single source of truth for validation logic and TypeScript types simultaneously. z.infer<typeof contactSchema> eliminates the maintenance burden of keeping a separate interface in sync with validation rules — they are provably identical by construction.

shadcn/ui COMPONENT SYSTEM — arellanoglobal.org Accordion (Radix) ↓ ↑ Tabs (Radix) Dialog (Radix + focus-trap) × DropdownMenu (Radix) ↓ Form (react-hook-form + Zod) Required — Zod schema validation recharts (data viz)

shadcn/ui + Radix UI component showcase: Accordion with keyboard nav, Tabs, Dialog with focus trapping, DropdownMenu, react-hook-form with Zod validation errors, and recharts data visualization

Need a Component System That Scales With Your Brand?

Accessible-by-default UI engineering with Radix primitives, shadcn/ui, and a design workflow that ships.

View All Work →
VIEW LIVE → VERIFIED DELIVERY RECORD → GITHUB →