veect design-system-native canvas

Connect your repository.

Veect reads your components and tokens straight from the source — then composes production React on a branch you can publish. Nothing to paste, nothing to upload.

Authorize Veect on GitHub

Enter this code at github.com to grant access. Veect requests the narrowest scope that still lets it read components and open pull requests.

DEVICE CODE Approve in browser →
waiting for approval…
{{ cxErr }}

Your org hasn't authorized Veect yet

Sign-in worked, but solstice/web is behind an organization policy. An owner needs to approve Veect once — then every seat can connect.

You can Open the org's third-party access settings and approve Veect, or send the request to an admin.

Confirm the host key

First connection to git.solstice.dev over SSH. Check this fingerprint matches what your host published before trusting it.

ED25519 FINGERPRINT SHA256:kR8Hq3vL0pR2mNbXcZ1wY7tSh6dKfJ4aQeUoIgP5s

Trust this repository?

Veect will run {{ cxRepoName }}'s install scripts and dev server on your machine to render real components. Only connect repositories you trust.

the “without scripts” choice is remembered per repository

Connecting {{ cxRepoName }}

This runs on your machine and can take a few minutes on first connect. You can leave it running.

{{ item.tick }} {{ item.label }} {{ item.note }}
{{ cxErr }}

Point Veect at your components

No veect.config.json yet — pick the folders to read. This config rides your first published branch.

COMPONENT FOLDERS
APP DIRECTORY (MONOREPO)
DETECTED
{{ item.k }} {{ item.v }}

Environment

Your preview needs a few keys. They stay on this machine, encrypted — Veect never sends them anywhere.

{{ item.key }} {{ item.src }} {{ item.chip }}

Reading your repository…

Your system is live.

{{ revealStat }}
Get started
Secondary
NEW
Filter · 3
Email
you@company.com
MK
Maya Kade Product designer
Overview Members Billing
Notifications
volume — 62
Ag {{ revealFontNote }}
⌘K anywhere · ✦ to compose
veect
Solstice workspace · solstice/web · main
PROJECTS · EACH ON ITS BRANCH
{{ saveLabel }}
{{ leftTabTitle }}
BASE KIT — MAPPED TO YOUR CODE
{{ item.glyph }} {{ item.name }}
PATTERNS — YOURS
{{ item.name }}
Save a selection as a pattern — it lives here, in your system.
CUSTOM — YOUR CODE
{{ item.name }} {{ item.file }}
COLOR — BRAND
edits ripple across canvas + code
{{ whereUsed }}
COLOR — NEUTRAL
TYPE
Ag
NEUTRALS
RADIUS
radius-md {{ radiusChip }}
SPACING
4 · 8 · 12 · 16 · 24 · 32 · 48
HISTORY — EVERY CHANGE, LABELLED
No steps yet — every edit lands here with a label. Click one to travel back.
{{ canvasEl }}
ISOLATION {{ isoName }} {{ isoMap }} real runtime · variants × states
{{ isoEl }}
{{ bubbleTag }}
scroll — pan · ⌘ scroll — zoom · drag board — pan
COMPOSE — CONSTRAINED TO YOUR SYSTEM
Describe a section — Veect composes it from your mapped components and tokens only.
◎ pick — scope an edit to one element
✎ draw — scribble a note on the board
{{ item.roleLabel }}
▧ {{ att.name }}
{{ item.text }}
staged as a ghost — nothing applied
composing from your system…
▧ {{ att.name }} ⏎ send · esc dismiss
{{ rightTabTitle }}
Select a component on the canvas.
click — select · drag — move
⌘K — commands · ✦ — compose
⌘Z — undo · ⌫ — delete
{{ selGlyph }}
{{ selName }} {{ selType }}
FRAME
width
{{ frameWVal }}
active view {{ frameViewInfo }}
CONTENT
VARIANT
SIZE
WEIGHT
TONE
{{ toneNote }}
LAYOUT
gap
{{ selGap }}
padding
{{ selPad }}
{{ item.cat }} {{ item.selectEl }}
TOKENS BOUND
{{ item.prop }} {{ item.tok }}
Critique this screen against your craft standard. Spacing, hierarchy, contrast, alignment, states — every fix lands in your tokens and components, with the why. standard: Impeccable
Scanning spacing, hierarchy, contrast…
{{ polishCount }}
{{ item.sev }} {{ item.title }}
{{ item.why }}
Impeccable. Nothing to fix. Every check passed against your standard.
{{ codeDraftEl }}
{{ codeEl }}
prettier ✓tsc --noEmit ✓imports @solstice/ui
veect

Sign in.

Your system is waiting — everything you compose exports as real React.

or
design-partner MVP — accounts are provisioned manually
veect
WORKSPACE · ONE REPO EACH
{{ connIcon }}
Solstice {{ connAccess }}
workspace · one repo · solstice/web · {{ connMeta }}

Projects

{{ homeMeta }}

Design systems

Solstice {{ homeSysMeta }}
Settings
CONNECTION
{{ connIcon }}
solstice/web {{ connAccess }}
{{ connMeta }}
Tokens & components discovered from this repo — no paste, no upload. {{ setSysMeta }}
ENVIRONMENT
{{ item.key }} {{ item.masked }} {{ item.src }} {{ item.chip }}
stays on this machine, encrypted · Veect never transmits your keys
DOCTOR — CONNECTION HEALTH
{{ item.dot }} {{ item.name }} {{ item.detail }}
COMPONENT MAPPINGS — THE MERGE BAR
{{ item.glyph }} {{ item.name }} {{ item.path }}
unmapped components fall back to the Veect base kit at export — the warning follows them
CRAFT STANDARD — POLISH RULESET
EXPORT DEFAULTS
{{ item.label }} {{ item.note }} {{ item.chip }}
PLAN — DESIGN PARTNER
$0 during the MVP billing starts at GA · seats 2 of 5 used · no card on file
Profile
M
Maya Kade maya@solstice.team · Product designer
DESIGN PARTNER
PREFERENCES
App theme
WORKSPACE — SOLSTICE
{{ item.initials }}
{{ item.name }} {{ item.role }}
{{ item.chip }}
KEYBOARD
⌘K — commands · ✦ — compose · ⌘Z — undo ⌘0 — zoom to fit · ⌘1 — 100% · scroll — pan · ⌘scroll — zoom ⌫ — delete selection · esc — dismiss anything
System update re-import tokens · diff · apply with undo

Devon updated the tokens. Paste the new file — Veect diffs it against the live system and shows the impact before anything changes.

{{ item.tag }} {{ item.tok }} {{ item.from }} {{ item.to }}
i {{ sysImpact }}
System updated. radius-md 12 → 10 rippled across every bound component on the canvas and in the code. Bindings preserved — nothing broke silently.
{{ previewEl }}
preview — real components, real states
{{ exportTitle }} PRODUCTION-GRADE
Real components, real tokens — nothing inlined, nothing to translate.
! Badge isn't mapped to your library — export falls back to the Veect default for it.
{{ item.name }} {{ item.note }}
Ready to ship.
npm i && npm run dev
· {{ exportImportsLine }} · tokens as CSS variables — tokens.css · deterministic — same tree, same code
⏎ run · ↑↓ navigate · esc close · ✦ routes to compose
{{ item.glyph }} {{ item.text }}