Tracks this family from #3134 . Experimental @vizejs/ui workstream.
Outcome
Ship rich editing, code, terminal, in-place edit, and drawing surfaces with accessible fallbacks.
Authoring contract
Public components are real .vue files. Handwritten render functions and JSX are not the public authoring model.
Generated compiler output stays an internal artifact.
Hover and completion must be enough to use the API without leaving the editor.
Keep runtime script small. Prefer native HTML, CSS, and platform APIs.
Extension is a first-class contract: parts, slots, CSS properties, and typed hooks.
Inventory
Rich Text Editor: semantic model, toolbar, links, lists, tables, media, history, paste sanitation, collaboration adapters
Markdown Editor: preview, source, extensions, sanitization, round-trip tests
Code Editor and Diff Editor: highlighting, diagnostics, completion, search, minimap, textarea fallback
Terminal and log viewer: ANSI, streaming, selection, search, copy, resize, screen-reader transcript
In-place Editor and Cell Editor: commit/cancel, conflict, optimistic persistence
Drag Handle, Sortable, Resize Handle, Selection Rectangle
Signature Pad and drawing canvas: eraser, pressure adapter, export, keyboard-accessible alternative
Dependencies
Depends on #4892 and #4891 . HTML-in-canvas host is #4912 .
Quality gates
This family is not done until it satisfies the parent definition of done in #3134 :
Canonical Vue SFCs with explicit <template>, <script setup lang="ts">, and scoped <style>
kebab-case filenames for every public source, test, story, and fixture
Every public prop, emit, slot, expose, CSS custom property, part, and data attribute documented; every option states @default
Literal types for props, emits, slots, expose, and useTemplateRef
Equivalent public contracts across DOM, SSR, and Vapor builds
WCAG 2.2 AA, WAI-ARIA APG, keyboard, pointer, touch, focus, and dismissal where applicable
LTR/RTL, locale, reduced motion, forced colors, and zoom
SSR, hydration, deterministic IDs, Teleport, Suspense, islands, and no request-global state
Colocated Vue Test Utils tests, Vitest browser-mode coverage, and Playwright visual regression
Musea stories covering states, slots, parts, and presets
Tree-shakable ESM subpath, exact sideEffects, and enforced bundle budgets
Headless by default; visual style arrives only through opt-in presets
Testbed notes
Contenteditable and textarea fallback dual trees. Terminal ANSI parsing tests. Drawing canvas hit-testing in browser mode.
Out of scope
Shortcut/history primitives and drag primitives are dependencies. HTML-in-canvas host belongs in next-gen.
Tracks this family from #3134. Experimental
@vizejs/uiworkstream.Outcome
Ship rich editing, code, terminal, in-place edit, and drawing surfaces with accessible fallbacks.
Authoring contract
.vuefiles. Handwritten render functions and JSX are not the public authoring model.Inventory
Dependencies
Depends on #4892 and #4891. HTML-in-canvas host is #4912.
Quality gates
This family is not done until it satisfies the parent definition of done in #3134:
<template>,<script setup lang="ts">, and scoped<style>@defaultuseTemplateRefsideEffects, and enforced bundle budgetsTestbed notes
Contenteditable and textarea fallback dual trees. Terminal ANSI parsing tests. Drawing canvas hit-testing in browser mode.
Out of scope
Shortcut/history primitives and drag primitives are dependencies. HTML-in-canvas host belongs in next-gen.