1. format
  2. lint
  3. typecheck
  4. architecture
  5. self-proof
  6. tests
  7. coverage
  8. e2e
  9. duplication
  10. security
main · greenwall 10/10sample

Wesley DeitchFront-End & Design EngineerWellsville, PARemote (ET)

Work 04

Strevian

Three design systems

Three accessible React design systems, 113-130 components each, with design tokens layered Style, then Brand, then Theme; light and dark; WCAG AA contrast checked in CI; Storybook; published as private npm packages.

Eternal Quest of Legends card frames showing the Evergreen Grove structure and the QX-001 legend at ranks one to four
Card illustration: Ludmila Vishnyakova and Ivanwithvodka, credited on each card. Frame, type and layout: Wesley.
Role
Design and build; the rulings on tokens, theming and review
Years
Jul 2026 to present
Lane
design + build
Tools
  • React
  • TypeScript
  • design tokens
  • Storybook

Proof

Every figure with what it measures, where it came from and when.

None of them is a headline on its own.

  • 3accessible React design systems, used across three product linesprivate npm packages · Jul 2026 to present
  • 113-130components in each systemresume · Sep 2026
  • 2themes, light and dark, from one token setthe Theme layer of the tokens · Jul 2026 to present
  • AAWCAG contrast, checked in CI on every builda standing contrast test · Jul 2026 to present

The work

Strevian

Jul 2026 to present

Three accessible React design systems, 113-130 components each, with design tokens, theming, Storybook and WCAG AA contrast checks in CI. They are published as private npm packages and used across three product lines, so nothing here links out; this page describes how they are built, and this site is built the same way.

Tokens, layered

Design tokens layered Style, then Brand, then Theme. Style holds space, type, radius and motion. Brand holds the accent and its text and label pairs. Theme holds paper, ink and rule for light and dark. A theme switch rewrites only the third layer; a rebrand rewrites only the second.

Token layers · Style, then Brand, then Theme

  1. 01Stylespace, type, radius, motion--wd-space-05 to 12 · --wd-fs--1 to display · --wd-radius-0 to 3 · --wd-font-display, body, monorewritten bycode
  2. 02Brandthe accent and its pairs--wd-amber #A0560F · --wd-amber-text #8F4D10 · --wd-on-amber #F7F3ECrewritten bythe Token Bench
  3. 03Themepaper, ink, rule, the pass and fail states--wd-paper #F7F3EC · --wd-paper-2 #EFE9DF · --wd-ink #191714 · --wd-ink-2 #5C574F · --wd-rule #D9D2C5rewritten bythe Switch
Style, then Brand, then Theme. The Switch rewrites only the third.
This site's Button, on the same layerssrc/components/ui/Button.astro
.btn {
  min-height: 44px;                   /* the tap target */
  padding: 0 var(--wd-space-3);       /* Style */
  border-radius: var(--wd-radius-2);  /* Style */
  background: var(--btn-bg);
  color: var(--btn-fg);
}
.btn-primary {
  --btn-bg: var(--wd-amber);          /* Brand */
  --btn-fg: var(--wd-on-amber);       /* Brand, paired for contrast */
}

Style tokens for size and shape, Brand for the fill and its label. Nothing is hard-coded, so the token bench can rewrite one layer and the contrast test can read the pairs.

Competent but generic.

My verdict on the first version of the shared system, which I had rebuilt behind review gates I signed off myself

One identity per product

I kept ChurchVue on its own system rather than the shared library, to keep each product's identity distinct. Each product keeps its own token set; the presets share hues, not identities.

Components per system113 to 130

Solid cells show the lower bound; outlined cells run to the upper.

  • Shared systemTokens, light and dark, contrast in CI, Storybook. The one I had rebuilt.
    Tactile
  • ChurchVueKept separate on purpose, so the product's identity stays its own.
    own system
  • DwinterThe games' system, from the same token layers.
    games
Components per system, 113 to 130. Solid cells show the lower bound; outlined cells run to the upper.

A component with variants, on card stock

No product UI is public, so the plates show the same idea on paper. The Eternal Quest of Legends card frame is one component with four faction variants and rank 1 to 4 progressions: a faction-colored border, a type and rank bar, cost and stat badges, an ability block, a version ID with the artist credit.

Followers spread: four faction-colored card frames side by side with artist credits visible on each
Illustration: Ludmila Vishnyakova, Alessia Fiorentino, Adriano Rizza and others, credited on each card. Frame, type and layout: Wesley.
Four faction variants of one frame. The same thinking as a design system, on card stock.

Contrast in CI

Both themes are contrast-checked by a test, so a color that fails WCAG AA cannot merge. This site runs the same check on its own tokens; the systems page lets you move a hue and watch the guard.

Write to me

What do you need built?

It lands in my inbox and I reply by email. No list, no forwarding, no bot.

The role or the engagement, and what a good outcome looks like.

Nothing sent yet.

or write to deitchwesley@gmail.com