Skip to content

ui: seven catalog gaps this app filled with wrappers — StatTile, BarChart, Sparkline, Kbd, CopyButton, QrSvg, CommandPalette #445

Description

@ivndev001

What

Seven components this app had to write as app-owned wrappers. None is app-specific; each looks like something the next app will write again. None exists in packages/ui/src or CATALOG.md at 46aa5b9.

wrapper built from note
StatTile Card + Text label + tabular-nums value; every dashboard needs it
BarChart inline <svg>, no dependency role="img", aria-label, <title> per bar, token fills
Sparkline inline <svg> path vector-effect: non-scaling-stroke matters once it stretches
Kbd <kbd> mono + hairline on surface-raised
CopyButton IconButton + clipboard + announce() must degrade where navigator.clipboard is absent
QrSvg pure-TS encoder → <svg> byte mode, EC level M, versions 1–3; ~480 lines
CommandPalette <dialog> + roving list ⌘K, filter, Enter runs, Esc closes

The wiki's own cautionary example is a sparkline that pulls in chart.js; a dependency-free Sparkline/BarChart in the catalog would be the positive version of that lesson.

One probable bug, reported with its provenance

Inside an island, Card/Text given an as prop threw on hydration while SSR rendered fine. The pattern is const Tag = props.as ?? 'div'; return <Tag …> — Card.tsx:20, Text.tsx:40, and the same in Container, Stack, Section, Grid — where Solid's compiler treats the capitalised Tag as a component call rather than a dynamic element. Provenance: observed by the agent that built the dashboard island, which switched to plain tags to get past it; it was not re-reproduced in isolation before filing, so treat it as a lead. Happy to split it into its own issue with a minimal repro.

The source repository is private; the wrapper source can be shared on request.


Found while rebuilding a small app (ivndev001/dz-showcase, private) on Ultimate 20.1.0; re-checked against main at 46aa5b9 (20.1.2) on 2026-09-17 before filing. Filed by an agent on the repository owner's instruction.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions