Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 45 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ Release automation can regenerate this file from Conventional Commits with

## [Unreleased]

> Target version: **`0.3.0`** - shipping as `0.3.0-canary.<sha>` on the npm
> `canary` tag on every merge to main. The stable `latest` release is gated on
> the [ROADMAP.md](./ROADMAP.md) shipping criteria and is not yet published.
_Nothing yet._

## [0.3.0] - 2026-06-17

### Added

Expand Down Expand Up @@ -72,7 +72,26 @@ Release automation can regenerate this file from Conventional Commits with
`ContextLens`.
- **Time navigation** - `TimelineScrubber`, `PlaybackGhost`,
`BottomActivityStrip`, and `RunTimeline`.
- Total component count: **225** (up from 140).
- **Form primitives (18)** - `ButtonGroup`, `InputGroup`, `Field`, `Fieldset`,
`Item`, `ColorPicker`, `CheckboxGroup`, `NativeSelect`, `ListBox`,
`SearchField`, `TextField`, `PhoneInput`, `TimePicker`, `TimeField`,
`DateField`, `DateRangePicker`, `RangeCalendar`, and `TagGroup`.
- **Charts / dataviz (5)** - `PieChart`, `RadarChart`, `GaugeChart`,
`SankeyChart`, and `ContributionGraph` (joining the existing `BarChart` /
`LineChart` / `AreaChart`).
- **AI primitives (3)** - `Reasoning`, `ChainOfThought`, and `PromptInput`.
- **Core primitives (7)** - `Typography`, `Link`, `Toolbar`, `Meter`, `QrCode`,
`Grid`, and `Panel`.
- **Motion / effects (37)** - `BentoGrid`, `Sparkles`, `Typewriter`,
`AnimatedList`, `Dock`, `MagneticButton`, `TextShimmer`, `AnimatedBeam`,
`AnimatedTabs`, `ScrollProgress`, `ShimmerButton`, `ShimmerText`,
`AnimatedGridPattern`, `AnimatedTestimonials`, `AnimatedTooltip`, `BlurReveal`,
`CardFlip`, `Cursor`, `DotPattern`, `ExpandableCards`, `FloatingNavbar`,
`GlassCard`, `GlassProgress`, `LiquidGlass`, `Magnetic`, `Meteors`,
`Particles`, `ProgressiveBlur`, `RevealText`, `ScrambleText`, `ShineBorder`,
`ShinyButton`, `SpinningText`, `SpotlightCard`, `TextAnimate`, `TextReveal`,
and `TiltCard`.
- Total component count: **295** (up from 140).
- **OKLCH theming system** - color tokens migrated to the OKLCH color space, with
13 runtime theme presets, a `/themes` web theme editor route, and a `/r/themes`
endpoint. New public theme exports from `@vllnt/ui` (`THEME_PRESETS`,
Expand All @@ -99,16 +118,32 @@ Release automation can regenerate this file from Conventional Commits with

### Changed

- **BREAKING - React 19 required.** The peer dependency moved to `react` /
`react-dom` `>=19`; **React 18 is no longer supported**. Components migrated
from `React.forwardRef` to the React 19 ref-as-prop pattern, and `useContext`
→ `use()`. React-18 consumers must upgrade to React 19.
- **Internal quality sweep** - cleared the react-doctor backlog:
`no-react19-deprecated-apis` 456 → 0, plus state/effect warnings
(`useEffectEvent` for effect-captured handlers, derived-state, cascading
`setState`) and structural warnings (giant-component splits, render-in-render,
polymorphic children, passive listeners).
- **Shared internals** - extracted reusable hooks/utilities (reference-counted
body-scroll-lock fixing a multi-overlay unlock bug, escape-key, live-date,
cached `Intl` formatters, clipboard migration) and a Zod parse seam for the
registry shape.
- Registry installs use a **hybrid CLI strategy** - leaf component source is
inlined, sibling registry items resolve via `@vllnt/ui` to keep installs
minimal and dedupe shared primitives.

### Notes
### Fixed

- `ROADMAP.md` tracks the open work gating the `0.3.0` cut.
- `0.3.0` requires the codebase-health gate (`react-doctor` CI + 0 errors), the
agent-first surface (`/llms.txt`, `/mcp`, sitemap, JSON-LD), and the rebuilt
landing page before shipping.
- **Docs sidebar dropped components** - the registry category union omitted four
categories (`ai`, `billing`, `data-display`, `educational`), silently hiding
~32 components from the docs sidebar; all now render, with a structural
fallback so a missing category can no longer regress.
- **Theme-adaptive chart colors** - `CandlestickChart` and `SparklineGrid`
series colors now follow the active theme and dark mode instead of hardcoded
values.

## [0.2.1] - 2026-04-21

Expand Down Expand Up @@ -233,6 +268,7 @@ Release automation can regenerate this file from Conventional Commits with

- Initial public publish to the public npm registry.

[0.3.0]: https://github.com/vllnt/ui/releases/tag/v0.3.0
[0.2.1]: https://github.com/vllnt/ui/releases/tag/v0.2.1
[0.2.0]: https://github.com/vllnt/ui/releases/tag/v0.2.0
[0.1.11]: https://github.com/vllnt/ui/releases/tag/v0.1.11
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# @vllnt/ui

**144 accessible React components** built on [Radix UI](https://radix-ui.com) primitives, styled with [Tailwind CSS](https://tailwindcss.com), powered by [CVA](https://cva.style).
**295 accessible React components** built on [Radix UI](https://radix-ui.com) primitives, styled with [Tailwind CSS](https://tailwindcss.com), powered by [CVA](https://cva.style).

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![TypeScript](https://img.shields.io/badge/TypeScript-strict-blue)](https://www.typescriptlang.org)
Expand All @@ -16,7 +16,7 @@

## Features

- **225 components** — primitives (Button, Input), composites (Command, DataTable, Carousel), and domain families (AI, Financial, Ops, Educational, Billing, Animation, Maps, Canvas, Timelines)
- **295 components** — primitives (Button, Input), composites (Command, DataTable, Carousel), and domain families (AI, Financial, Ops, Educational, Billing, Animation, Maps, Canvas, Timelines)
- **Accessible by default** — Radix UI handles focus, keyboard nav, and ARIA
- **Tailwind CSS + CVA** — variant-driven styling with full theme override via CSS variables
- **shadcn-compatible registry** — install individual components with `shadcn add`
Expand Down Expand Up @@ -112,7 +112,7 @@ Override CSS variables after importing styles:
## Components

<details>
<summary>All 225 components</summary>
<summary>All 295 components</summary>

| Category | Components |
|----------|------------|
Expand Down
4 changes: 2 additions & 2 deletions ROADMAP.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Roadmap — 0.3.0

> Status: **planning** · Previous release: `v0.2.1` · Current canary: `0.3.0-canary.<sha>` (+85 components) · Tracking: [milestone TBD](https://github.com/vllnt/ui/milestones)
> Status: **release prep** · Previous release: `v0.2.1` · Current canary: `0.3.0-canary.<sha>` (+85 components) · Tracking: [milestone 0.3.0](https://github.com/vllnt/ui/milestone/1)

## TLDR

Expand All @@ -16,7 +16,7 @@

## Components — canary → release (+85)

Counts taken from `registry.json` at `v0.2.1` (140) vs `HEAD` (225).
Counts taken from `registry.json` at `v0.2.1` (140) vs `HEAD` (295).

### Hooks + utility primitives
- `CopyButton` + `useCopyToClipboard` hook (#159)
Expand Down
2 changes: 1 addition & 1 deletion docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ vllnt/ui/
├── packages/
│ └── ui/ # @vllnt/ui — the shipped library
│ ├── src/
│ │ ├── components/ # 144 component folders
│ │ ├── components/ # 295 component folders
│ │ ├── hooks/ # shared hooks (useDebounce, etc.)
│ │ ├── lib/ # utilities (cn, registry helpers)
│ │ └── index.ts # barrel — the public surface
Expand Down
13 changes: 13 additions & 0 deletions docs/RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,11 @@ The release workflow does not push commits to `main`. Version bumps land via nor
Open a PR that:

- Updates `packages/ui/package.json` `"version"` to the new target (follow SemVer — see below).
- Updates `apps/registry/package.json` `"version"` to match.
- Moves the matching entry in root `CHANGELOG.md` and `packages/ui/CHANGELOG.md` from `[Unreleased]` to a dated `[x.y.z]` section. Root `CHANGELOG.md` is the source used for the website, feeds, and GitHub Release notes.
- Syncs docs that name a count or version: component count in `README.md` + `packages/ui/README.md`, `docs/ARCHITECTURE.md`, and the ROADMAP status line.

Do **not** touch `PUBLISHED_VERSION` in `apps/registry/scripts/inline-component-source.ts` here — that pins the shadcn install target and must only advance **after** the new version is live on npm `latest` (see step 3). Bumping it before publish makes the deployed registry advertise `@vllnt/ui@^{x.y.z}` while npm `latest` is still the previous version, breaking `npx shadcn add`.

Merge the PR normally. The canary workflow on `main` will immediately publish `@vllnt/ui@{x.y.z}-canary.{sha}` — a dress-rehearsal of the release tarball.

Expand All @@ -40,6 +44,15 @@ CI will:
- `pnpm pack` and `npx --yes npm@latest publish --tag latest --provenance --access public`. OIDC trusted publishing signs the provenance attestation.
- Create the GitHub Release for the new tag.

### 3. Point the registry at the published version (post-publish)

Once `@vllnt/ui@{x.y.z}` is live on npm `latest`, open a small follow-up PR that:

- Sets `PUBLISHED_VERSION` in `apps/registry/scripts/inline-component-source.ts` to `{x.y.z}`.
- Runs `pnpm -F @vllnt/ui-registry registry:build` and commits the regenerated `registry.json` + `registry/default` shims (the install target becomes `@vllnt/ui@^{x.y.z}` and item versions update).

The `registry:check` and `registry:integrity` CI guards confirm the regenerated registry is in sync and pins a real (non-prerelease) published version. Until this lands, `npx shadcn add` keeps resolving to the previous published version — harmless, just one release behind.

## Versioning policy

- [SemVer](https://semver.org). Track API compatibility, not surface area — adding 50 new components is a **minor** bump if no existing exports break.
Expand Down
21 changes: 16 additions & 5 deletions packages/ui/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),

## [Unreleased]

> Target version: **`0.3.0`** — shipping as `0.3.0-canary.<sha>` on the npm `canary` tag on every merge to main. The stable `latest` release is gated on the [ROADMAP.md](../../ROADMAP.md) shipping criteria and is not yet published.
_Nothing yet._

## [0.3.0] - 2026-06-17

### Added

Expand All @@ -28,20 +30,28 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
- **Inspector + dock panels** — `PropertySection`, `ObjectInspector`, `RelationshipInspector`, `RuntimeOverviewPanel`, `RoutingAssignmentPanel`, `PolicyDeliveryPanel`.
- **Runtime overlays** — `AlertPulse`, `ThresholdRing`, `StickyMetric`, `HeatOverlay`, `StateBadgeOverlay`, `MetricCluster`, `JarvisDock`, `ContextLens`.
- **Time navigation** — `TimelineScrubber`, `PlaybackGhost`, `BottomActivityStrip`, `RunTimeline`.
- Total component count: **225** (up from 140).
- **Form primitives (18)** — `ButtonGroup`, `InputGroup`, `Field`, `Fieldset`, `Item`, `ColorPicker`, `CheckboxGroup`, `NativeSelect`, `ListBox`, `SearchField`, `TextField`, `PhoneInput`, `TimePicker`, `TimeField`, `DateField`, `DateRangePicker`, `RangeCalendar`, `TagGroup`.
- **Charts / dataviz (5)** — `PieChart`, `RadarChart`, `GaugeChart`, `SankeyChart`, `ContributionGraph` (joining the existing `BarChart` / `LineChart` / `AreaChart`).
- **AI primitives (3)** — `Reasoning`, `ChainOfThought`, `PromptInput`.
- **Core primitives (7)** — `Typography`, `Link`, `Toolbar`, `Meter`, `QrCode`, `Grid`, `Panel`.
- **Motion / effects (37)** — `BentoGrid`, `Sparkles`, `Typewriter`, `AnimatedList`, `Dock`, `MagneticButton`, `TextShimmer`, `AnimatedBeam`, `AnimatedTabs`, `ScrollProgress`, `ShimmerButton`, `ShimmerText`, `AnimatedGridPattern`, `AnimatedTestimonials`, `AnimatedTooltip`, `BlurReveal`, `CardFlip`, `Cursor`, `DotPattern`, `ExpandableCards`, `FloatingNavbar`, `GlassCard`, `GlassProgress`, `LiquidGlass`, `Magnetic`, `Meteors`, `Particles`, `ProgressiveBlur`, `RevealText`, `ScrambleText`, `ShineBorder`, `ShinyButton`, `SpinningText`, `SpotlightCard`, `TextAnimate`, `TextReveal`, `TiltCard`.
- Total component count: **295** (up from 140).

- **OKLCH theming system** — color tokens migrated to the OKLCH color space, with 13 runtime theme presets (`default`, `matrix`, `dracula`, `synthwave`, `tron`, `cyberpunk`, `nord`, `claude`, `chatgpt`, `gemini`, `dusk`, `cyberlime`, `aura`). New public theme exports from `@vllnt/ui`: `THEME_PRESETS`, `DEFAULT_THEME_PRESET`, `CUSTOM_THEME_NAME`, `isThemePresetName`, the `ThemePreset` and `ThemePresetName` types, plus the `useThemePreset` hook (with `UseThemePresetResult`), `setThemePreset`, and `setCustomTheme` for runtime preset switching and user-supplied custom themes.

- **A11y heading-level override** — every title-bearing component (`ProfileSection`, `FAQ`, `Slideshow`, `WorldClockBar`, `TableOfContentsPanel`, `TableOfContents`, `KeyboardShortcutsHelp`, `Watchlist`, `OrderBook`, `HorizontalScrollRow`, `MarketTreemap`, `ActivityHeatmap`, `Glossary`, `StatusBoard`, `CodePlayground`, `Comparison`, `Quiz`, `Exercise`, `ShareSection`, `CompletionDialog`, `Checklist`, `LearningObjectives`, `CandlestickChart`, `StepByStep`) accepts an `as` prop (`"h1"`–`"h6"`); multi-title components (`ContentIntro`, `TutorialComplete`) expose `titleAs` + `tocLabelAs` / `sectionLabelAs`. Defaults preserve existing heading tags. `HeadingTag` is re-exported from `@vllnt/ui`.

### Changed

- **BREAKING — React 19 required.** The peer dependency moved to `react` / `react-dom` `>=19`; **React 18 is no longer supported**. Components migrated from `React.forwardRef` to the React 19 ref-as-prop pattern, and `useContext` → `use()`. React-18 consumers must upgrade to React 19.
- **Internal quality sweep** — cleared the react-doctor backlog: `no-react19-deprecated-apis` 456 → 0, plus state/effect warnings (`useEffectEvent` for effect-captured handlers, derived-state, cascading `setState`) and structural warnings (giant-component splits, render-in-render, polymorphic children, passive listeners).
- **Shared internals** — extracted reusable hooks/utilities (reference-counted body-scroll-lock that fixes a multi-overlay unlock bug, escape-key, live-date, cached `Intl` formatters, clipboard migration) and a Zod parse seam for the registry shape.
- Registry installs use a **hybrid CLI strategy** — leaf component source is inlined, sibling registry items resolve via `@vllnt/ui` to keep installs minimal and dedupe shared primitives.

### Notes
### Fixed

- `ROADMAP.md` added at repo root tracking 50 open issues across 8 phases gating the `0.3.0` cut.
- `0.3.0` requires the codebase-health gate (`react-doctor` CI + 0 errors), the agent-first surface (`/llms.txt`, `/mcp`, sitemap, JSON-LD), and the rebuilt landing page before shipping.
- **Docs sidebar dropped components** — the registry category union omitted four categories (`ai`, `billing`, `data-display`, `educational`), silently hiding ~32 components from the docs sidebar; all now render, with a structural fallback so a missing category can no longer regress.
- **Theme-adaptive chart colors** — `CandlestickChart` and `SparklineGrid` series colors now follow the active theme and dark mode instead of hardcoded values.

## [0.2.1] - 2026-04-21

Expand Down Expand Up @@ -145,6 +155,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),

- Initial public publish to the public npm registry.

[0.3.0]: https://github.com/vllnt/ui/releases/tag/v0.3.0
[0.2.1]: https://github.com/vllnt/ui/releases/tag/v0.2.1
[0.2.0]: https://github.com/vllnt/ui/releases/tag/v0.2.0
[0.1.11]: https://github.com/vllnt/ui/releases/tag/v0.1.11
Expand Down
2 changes: 1 addition & 1 deletion packages/ui/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# @vllnt/ui

React component library — 144 components built on Radix UI primitives, Tailwind CSS, and CVA.
React component library — 295 components built on Radix UI primitives, Tailwind CSS, and CVA.

See [CHANGELOG.md](./CHANGELOG.md) for release history.

Expand Down
Loading