Fills the auth-flow gap: 2FA / PIN / phone-verification codes.
Horizontal row of N square slots (4..8), one digit per slot.
Renders three states per caller intent:
- blank (no `digits`): all slots empty, `focused_index` marks
the currently-typing slot with an accent-color 2px outline
- partial: first M slots filled with digit text, slot M+1
focused, rest empty
- full: all N slots filled (final submittable state)
Filled slots get role=otp-slot-filled + slate-700 border + 20/600
digit text. Focused empty slot gets role=otp-slot-focused +
2px accent border. Blank unfocused slots get role=otp-slot +
1px slate-300 border.
Wired through all standard points — schema into ext-2 (shorter
shard) + shim + SERVER_BUILDERS + parity CASES + contract
allow-list + elements.md decision tree + triggers + minimal
usage for each state.
Handler test covers 8 cases: registration + defaults (6 blank
focused-first) + partial state / full state / length clamp low
(< 4 → 4) + length clamp high (> 8 → 8) + accent color override
+ bogus parent_id rejection.
|
||
|---|---|---|
| .. | ||
| __tests__ | ||
| element-builders | ||
| layout | ||
| merge | ||
| normalize | ||
| variables | ||
| arc-path.ts | ||
| boolean-ops.ts | ||
| constants.ts | ||
| design-md-parser.ts | ||
| font-utils.ts | ||
| id.ts | ||
| index.ts | ||
| node-helpers.ts | ||
| normalize.ts | ||
| path-anchors.ts | ||
| sync-lock.ts | ||
| tree-utils.ts | ||