docs(product): commit design references under docs/product/reference/

Copy the founder's design handoff bundle (.proto/design/) into
docs/product/reference/ byte-for-byte so dispatch agents running in git
worktrees can read the HTML prototypes, veect-codebase/ prototype,
upload PNGs, and remaining bundle files (ADR-029: reference only, never
vendored into packages/). Ignore-list entries so whole-codebase auditors
and formatters skip reference material: .prettierignore (byte
preservation through lint-staged), .fallowrc.json ignorePatterns, root
ESLint ignores, and the coverage:diff allowlist in
scripts/coverage/diff.mjs (+ unit test). .DS_Store files skipped.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016j8z4VHjedXDTjEDNg7qHK
This commit is contained in:
2026-07-12 14:09:30 +02:00
parent c80e09e732
commit 1483a45406
97 changed files with 15685 additions and 1 deletions

View File

@@ -0,0 +1,28 @@
/**
* Demo fiction — single source of truth for the customer identity Veect
* is shown composing against. Swapping these swaps the whole demo brand;
* nothing else hard-codes "Solstice" or the import paths.
*/
/** The customer's mapped component library (what export imports). */
export const CUSTOMER_LIB = '@solstice/ui';
/** Fallback kit for components the user hasn't mapped yet. */
export const BASE_KIT = '@veect/base-kit';
/** The customer design system on show. */
export const SYSTEM_NAME = 'Solstice';
/** The demo project opened in the editor. */
export const PROJECT_NAME = 'Solstice — Marketing site';
/** Workspace members — designer (owner) + design engineer (reviewer/veto). */
export const TEAM = [
{ initials: 'MK', name: 'Maya Kade', role: 'product designer — composes & ships', chip: 'owner' },
{
initials: 'DP',
name: 'Devon Park',
role: `design engineer — owns ${CUSTOMER_LIB}, holds the merge veto`,
chip: 'reviewer',
},
] as const;

View File

@@ -0,0 +1,30 @@
/** The base kit — 10 components, mapped to the customer's real library. */
export const LIBRARY = [
{ type: 'stack', name: 'Stack', primitive: true },
{ type: 'heading', name: 'Heading' },
{ type: 'text', name: 'Text' },
{ type: 'button', name: 'Button' },
{ type: 'badge', name: 'Badge', unmapped: true },
{ type: 'card', name: 'Card' },
{ type: 'input', name: 'Input' },
{ type: 'avatar', name: 'Avatar' },
{ type: 'image', name: 'Image', primitive: true },
{ type: 'divider', name: 'Divider', primitive: true },
] as const;
export type LibraryItem = (typeof LIBRARY)[number];
export const NODE_GLYPHS: Record<string, string> = {
frame: '▣',
stack: '▤',
card: '▢',
heading: 'Aa',
text: '¶',
button: '▭',
badge: '◦',
input: '⌷',
avatar: '◉',
image: '▧',
divider: '—',
custom: '◈',
};