Skip to content

feat(ui): layout, typography, and SVG #4907

Description

@ubugeeei

Tracks this family from #3134. Experimental @vizejs/ui workstream.

Outcome

Ship layout, typography, avatar, image, and first-class SVG primitives that stay lightweight and CSS-first.

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

  • Aspect Ratio, Separator, Spacer, Stack, Cluster, Grid, Container
  • Resizable / Splitter: nested groups, persisted sizes, min/max, collapse, keyboard resize
  • Scroll Area, Scroll Bar, Scroll Shadow, Scroll Top, overscroll affordance
  • Card, Panel, Surface, Sheet, Hero, Item, List Item, description list
  • App Shell, master-detail, split view, breakpoints, safe areas, viewport segments
  • Typography: Heading, Text, Prose, Code, Kbd, Blockquote, List, truncation/clamp
  • Avatar, Avatar Group, Icon, Icon Button
  • Image, Image Compare, responsive picture
  • SVG root, sprite, inline SVG, accessible title/desc, currentColor, and icon composer

Dependencies

Depends on #4893 and #4894. Charts are #4908. Graphics scenes are #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

Container query and logical-property CSS for the Lightning CSS pipeline. SVG title/desc a11y tests. Splitter keyboard tests.

Out of scope

Charts and signature canvas belong in data and editing. Three/WebGPU scenes belong in next-gen.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:uiAccessible SFC UI package (@vizejs/ui)priority:p1High priority before v1 alpha production readiness

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions