Historique des versions

Changelog

Le journal de version canonique de VLLNT UI, genere a partir des Conventional Commits au format Keep a Changelog.

Flux RSS

0.4.0 - 2026-10-31

2026-10-31#v0-4-0

Added

feat
  • New hooks - useFocusContainment (trap Tab inside a custom modal and restore focus on close) and useEventCallback (stable callback that always calls the latest closure). Registry items import them from @vllnt/ui.

  • Props types exported from the barrel - BreadcrumbProps, CommandDialogProps, SheetContentProps, CarouselProps, CodeBlockProps, MDXContentProps, SidebarProps, TableOfContentsProps, CategoryFilterProps, SearchBarProps, ShareSectionProps, SearchDialogProps, LangProviderProps, ThemeToggleProps, ProfileSectionProps, TLDRSectionProps, AreaChartProps, BarChartProps, LineChartProps and ThemePresetProviderProps.

  • Source-only React Native renderer and shared design contracts (@vllnt/ui-core, @vllnt/ui-native). They are experimental and not published with this release; installing @vllnt/ui is unchanged.

  • Localized Native catalog discovery, dependency/capability comparison, and extensible React/React Native source tabs in a single component preview surface.

  • Accessibility gate - the Storybook test-runner runs axe-core (WCAG 2.0, 2.1 and 2.2, levels A and AA) on every story in the light and dark theme and fails on any violation. A story can turn a rule off only through parameters.a11y.config.rules with a written reason. (#543)

  • Optional accessibility props (English defaults, nothing required): popoverLabel on Combobox, MultiSelect, DatePicker, DateRangePicker, TimePicker and ColorPicker; aria-label / aria-labelledby / aria-describedby / id on Combobox; aria-label / aria-labelledby on InlineInput and ScrollArea; NumberInput incrementLabel / decrementLabel; Marquee and TickerTape pauseControl + labels; TabsContent tabIndex; GanttChartLabels region; CompletionDialog modal; Pagination labels; AIArtifactLabels content; ModelSelector listLabel; DataTableFilter ariaLabel; VideoEmbed playLabel. (#543)

  • New exports - moveRovingFocus (+ RovingFocusOptions, RovingOrientation), useReturnFocus (+ ReturnFocusHandlers), focusCalendarDay, CHECKLIST_PROGRESS_EVENT, parseChecklistStorageValue, MarqueeLabels, TickerTapeLabels, PaginationLabels. Registry items now import these from @vllnt/ui, so installing them needs a @vllnt/ui release that contains them (the registry pins ^0.3.0, which does not). registry:integrity now fails when a registry item imports a name that @vllnt/ui does not export. (#543)

Changed

all
  • Colour tokens meet WCAG AA (#538). The default light theme uses a darker --muted-foreground, --destructive and --input; in the dark theme --destructive is lighter with a dark foreground and --input is lighter, so input borders are easier to see in both. Presets adjust --primary, --destructive, --input and --ring the same way. Visual snapshots change.

  • Font tokens on :root - styles.css now defines --font-sans, --font-display and --font-mono on :root. If your app sets variables with these names, declare them later in the cascade or on body so yours win.

  • Lighter imports (#541) - CodeBlock renders its code as plain text first and highlights it once the Prism build loads on the client; TutorialMDX loads the MDX compiler only for content with JSX, and FlowDiagram loads html-to-image only when copied. Apps that use neither toast nor Toaster no longer bundle sonner.

  • Smaller package - the tarball has 361 files instead of 659: the per-component re-export stubs and dist/test-setup.js are gone. Only the exports entry points are public, so imports do not change.

  • Peer dependency ranges now match what the package needs. next is >=15.0.0 (Next 14 peers React 18, which the React 19 build cannot use), tailwindcss is ^3.4.0 (components use size-*, text-balance and has-[], and the preset and CSS are Tailwind v3 only), and next-themes is now a required peer because the root entry imports it. next stays optional in metadata, but the root entry still imports next/link, next/image and next/navigation, so non-Next apps must alias them (see the README workaround). react and react-dom stay >=19.0.0: SearchBar and Slideshow no longer call React 19.2's useEffectEvent, so 19.0 and 19.1 work.

  • Accessibility behaviour changes (#543):

    • Drawer moves focus into its content on open (autoFocus now defaults to true; pass autoFocus={false} for vaul's previous behaviour).
    • CompletionDialog is built on the Radix dialog: it traps focus, closes on Escape and returns focus to the opener. modal (default true) maps to Radix modal; modal={false} leaves the page behind it interactive. Shortcuts work only while focus is inside the dialog, an empty string turns one off, and Enter no longer confirms from any focused element.
    • Marquee and TickerTape show a 24px pause/play button by default (pauseControl={false} hides it). It overlays the top-right corner of the Marquee and the right edge of the TickerTape, and hides under reduced motion, when nothing moves.
    • Pagination renders a nav landmark of single links styled as buttons, with aria-current="page" on the current page (it used to nest a button in each link).
    • CodeBlock syntax colours come from the --vllnt-code-* CSS variables (OKLCH channels) instead of JS theme detection. The defaults reach 4.5:1 on the background in light and dark mode for the default theme and every preset; override the variables to restyle.
    • CommandSeparator renders an aria-hidden divider.
    • Under prefers-reduced-motion, components stop their own decorative animation and AnimatedText shows its final text at once; loaders marked data-motion="essential" keep spinning, slower. The stylesheet changes motion only on library components, never on your own elements.
    • TabsContent is a tab stop only when the panel holds no focusable element; the ScrollArea viewport is a tab stop only while its content scrolls.
    • TreeView supports Home / End, ArrowRight to the first child and ArrowLeft to the parent, and keeps the active row in view.

Fixed

fix
  • Setup docs - the Tailwind config in both READMEs, the installation page and the agent skill now lists ./node_modules/@vllnt/ui/dist/**/*.js in content. Tailwind 3 ignores a preset's content once the app sets its own, so the documented config generated no component styles. The agent skill's peer ranges and colour format (OKLCH) are corrected too.

  • Tailwind preset dependency - tailwindcss-animate, which @vllnt/ui/tailwind-preset imports, is now a runtime dependency. With 0.3.0 the preset failed to load unless the app installed it.

  • Duplicate React keys - Terminal, FileUpload, AvatarGroup, Breadcrumb and about 20 other list renderers no longer key rows by content or label alone, so repeated or blank entries stop triggering duplicate-key errors. FileUpload adds an identical file (same name, size and lastModified) once, so removal removes one entry, and a selection that adds nothing new does not call onFilesChange.

  • "use client" directives - Toolbar, Stepper, AIChatInput, ObjectCard, OverviewBoard and ZoomHUD use event handlers or browser globals and now carry the directive. check:use-client also flags handler props and browser globals.

  • Focus in custom dialogs - KeyboardShortcutsHelp, TableOfContentsPanel, the FlowDiagram fullscreen view and the Slideshow contents panel keep Tab and Shift+Tab inside the dialog and return focus to the opener on close.

  • DataTable sortable headers expose aria-sort.

  • Contrast - Rating stars and the green success icons in Checklist, Curriculum and LearningObjectives reach 3:1 against the background in light and dark themes.

  • Decorative inline <svg> icons are hidden from assistive technology.

  • Preserve nested scrolling, reduced-motion behavior and sidebar keyboard focus in the affected Web components.

  • Forward explicit tab accessibility relationships and label/keyboard handlers without changing default tab navigation.

  • Emit JSON-LD graph documents and localized Native discovery metadata without advertising unpublished npm packages.

  • Accessible names, ARIA structure, APG keyboard patterns (tabs, radio groups, listbox, tree, dialogs and focus return), reduced motion and hard-coded palette contrast across the Web components flagged by the #535 audit. (#543)

0.3.0 - 2026-06-26

2026-06-26#v0-3-0

Added

feat
  • Release intelligence surface — /changelog, /releases, /rss.xml, and /atom.xml expose one changelog source through HTML, GitHub release cards, and feed readers. /docs/changelog redirects to /changelog.

  • Hooks + utility primitives — CopyButton (+ useCopyToClipboard hook), Banner + BannerAction, Kbd, EmptyState, DocumentSiblingNav.

  • Pricing + identity cards — PricingTable + PricingPlan, HistoricalFigureCard, CivilizationCard (+ CivilizationComparison).

  • Newsletter — NewsletterSignup (state-machine driven submit flow).

  • AI compound families — ModelComparison (+ Column, Meta, Vote), PromptTemplates, AgentActivity, AISidebar, AIArtifact.

  • Era / financial — EraComparison, TransactionList.

  • Forms — Form, MultiSelect, SegmentedControl, TagsInput, AutoReload.

  • Educational — KnowledgeCheck (inline question runner).

  • Charts + timelines — GanttChart, ParallelTimeline, Timeline + TimelineItem, HistoricTimeline, InteractiveTimeline, ChronologicalTimeline, TreeView.

  • Document + reading — PrimarySourceViewer compound family.

  • Maps + geography — Map2D, ChoroplethMap, RouteMap, HeatMapOverlay, GeographyQuizMap, MapTimeline, StoryMap, Globe3D.

  • Canvas foundation — CanvasShell, CanvasView, InfinitePlane, ViewportBookmarks, WorldBreadcrumbs, TopBar, LeftRail, RightDock, ZoomHud, MiniMapPanel, WorkspaceSwitcher.

  • Canvas selection + manipulation — SelectionHalo, SnapGuides, FloatingToolbar, MultiSelectLasso, FollowMode, HandoffBeacon.

  • Canvas spatial objects — ObjectCard, ObjectHandle, AnchorPort, ConnectorEdge, EdgeLabel, GroupHull.

  • Canvas collaboration primitives — LiveCursor, CommentPin, PresenceSyncIndicator, PresenceStack, SelectionPresence, ThreadBubble.

  • 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.

  • 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: 309 (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

all
  • 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.

Fixed

fix
  • 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

2026-04-21#v0-2-1

Fixed

fix
  • Public API: ProgressCard now re-exported from @vllnt/ui — it shipped in 0.2.0's tarball but was missing from the barrel, so import { ProgressCard } from "@vllnt/ui" resolved to undefined.

Docs

all
  • Correct casing for the AI family (AIChatInput, AIMessageBubble, AISourceCitation, AIStreamingText, AIToolCallDisplay) and SocialFAB across README, package README, CHANGELOG, and llms-full.txt.

0.2.0 - 2026-04-21

2026-04-21#v0-2-0

Added

feat
  • AI family — AIChatInput, AIMessageBubble, AISourceCitation, AIStreamingText, AIToolCallDisplay, ThinkingBlock, ModelSelector.
  • Financial family — CandlestickChart, MarketTreemap, OrderBook, TickerTape, SparklineGrid, WalletCard, Watchlist.
  • Ops / Status family — StatusBoard, StatusIndicator, LiveFeed, WorldClockBar, SeverityBadge, RoleBadge, ScopeSelector.
  • Billing & Plans family — SubscriptionCard, PlanBadge, CreditBadge, UsageBreakdown.
  • Animation family — AnimatedText, BorderBeam, Marquee, NumberTicker, and a standalone spinner library exported via Spinner.
  • Educational family — Flashcard, Stepper, Tour, Annotation, CompletionDialog, TruncatedText, TableOfContentsPanel.
  • Form additions — DatePicker, FileUpload, NumberInput, PasswordInput, InlineInput, Combobox, Rating.
  • Data / metric additions — DataTable, DataList, StatCard, MetricGauge, ActivityHeatmap, ActivityLog.
  • App shell additions — CategoryFilter, FilterBar, CookieConsent, Slideshow, CountdownTimer, AvatarGroup, FloatingActionButton, SocialFab, KeyboardShortcutsHelp, ShareDialog, HorizontalScrollRow, ViewSwitcher.
  • Total component count: 144 (up from 93).
  • Full Storybook integration with E2E smoke tests in CI.
  • OG image generation for every registry page.
  • Signed provenance attestations on every published artifact (sigstore).

Changed

all
  • Documentation domain moved to ui.vllnt.com / storybook.vllnt.ai.
  • Default package registry is the public npm registry (no longer GitHub Packages).
  • README component tables expanded to cover all 144 components organized by family.

Fixed

fix
  • Publish workflow now uses npx --yes npm@latest publish so OIDC trusted publishing survives GitHub runners that ship pre-11.5.1 npm.

0.1.11 - 2026-04

2026-04#v0-1-11

Fixed

fix
  • Re-extract tarball path from pnpm pack output for publish step.

0.1.10

#v0-1-10

Changed

all
  • Switched to pnpm pack + npm publish flow to support publishConfig with OIDC auth.

0.1.9

#v0-1-9

Fixed

fix
  • Use pnpm publish and repair release creation step in CI.

0.1.8

#v0-1-8

Fixed

fix
  • Annotated tags + --notes-file for release creation.

0.1.7

#v0-1-7

Added

feat
  • HorizontalScrollRow, ViewSwitcher, and useHorizontalScroll hook.

Fixed

fix
  • Comparison: defensive prop validation to prevent runtime crash on malformed input.

0.1.6

#v0-1-6

Fixed

fix
  • Bundle-free build to preserve per-file "use client" directives in published chunks.

0.1.5

#v0-1-5

Fixed

fix
  • Add "use client" to all dist JS including index.js.

0.1.4

#v0-1-4

Fixed

fix
  • Exclude index.js from "use client" banner.

0.1.3

#v0-1-3

Fixed

fix
  • Add "use client" directive to published dist chunks.

0.1.2

#v0-1-2

Added

feat
  • Initial public publish to the public npm registry.