DESIGN SYSTEMS & FRONTEND ARCHITECTURE

Vernix Accessible UI Primitives.

Inconsistent design patterns and slow UI development fragmented our engineering efforts across multiple frontends. Vernix was developed as a unified Svelte component library to enforce design system consistency and provide pre-built accessible components with smooth transitions.

EXECUTIVE SUMMARY

Inconsistent design patterns and slow UI development fragmented our engineering efforts across multiple frontends. Vernix was developed as a unified Svelte component library to enforce design system consistency and provide pre-built accessible components with smooth transitions.

KEY CONTRIBUTION

"Built a headless, unstyled core alongside a styled thematic layer using CSS variables, allowing consumer apps to inherit logic while retaining deep branding control."

LIBRARY STRUCTURE

High-level overview of the control and data plane components.

UI COMPONENTS LAYER

Components

Buttons, Inputs, Modals & Base Primitives

Theming System

CSS variables and theme injection

INTEGRATION LAYER

SvelteKit

Native framework integration & SSR

Vite

Fast compilation & asset bundling

ENGINEERING STACK

Modern frontend tooling for component libraries.

FRAMEWORK

Svelte 4SvelteKitTypeScript

STYLING

SCSSCSS VariablesPostCSS

DOCUMENTATION

StorybookHistoire

TECHNICAL DECISIONS

Documenting the trade-offs and architectural shifts during development.

Styling Strategy

Tailwind inside Components
CSS Variables (CSS-in-JS)
Rationale: Baking utility classes into the distributed package forced consumer apps to match our exact Tailwind config. By defining semantic CSS variables instead, consumers can hot-swap themes globally with a single class change on the body element.

MEASURABLE IMPACT

Impact of systemic component reuse.

UI DEV SPEED
3x
⚡ Faster feature delivery
COMPONENTS
45 +
⚡ Fully accessible

POSTMORTEM & LEARNINGS

Reflections on design system maintainability.

Extracting complex accessibility logic (like focus-trapping in modals and keyboard navigation in dropdowns) into the library meant consumer applications became instantly compliant with ARIA standards without extra developer effort.

Migrating the entire codebase from Svelte 4 to Svelte 5 to take advantage of runes and the new reactivity paradigm, which will further reduce bundle size and simplify internal component state.