Skip to content
Nana UI

Changelog

What changed in each release of Nana UI — new components and features, fixes, and anything that changes existing behaviour.

View .md Download

0.0.39 (2026-10-08)

Features

  • hover-card: add the web component on the headless hover rules and position (55da48b)
  • hover-card: lay the card out from media, title, subtitle, body and actions at the body weight or heavier (b1fb510)

0.0.38 (2026-10-08)

Features

  • checklist: add the checklist and check item for pass and fail data sections (844e19b)
  • file: add the file row and card and the file viewer with zoom, PDF, media and text previews (5c174ba)
  • headless: add the file kind and preview rules and the checklist summary (db77bc5)
  • primitives: add formatBytes for file sizes (ae18026)
  • themes: lift the accent to a living pine, ring focus with a page-coloured gap, and add the alert and change tones (e91b854)
  • tokens: rebuild the palette on even ramps around the brand ink and amber, with softer radii, ink-tinted shadows and a spring easing (6421d82)

Bug Fixes

  • components: fill the primary button and sortable header with the brand green (bc36e4c)
  • components: fill the warning button with readable amber and keep the sortable header ring inside the cell (46f3885)
  • components: read alert, tag and status fills from the theme so they follow dark mode (aa493c3)
  • tokens: return the primary ramp and the accent to the brand green (3e2ceff)

0.0.37 (2026-10-08)

Features

  • approval-card: sit the decision buttons on the right by default (1fb4208)
  • components: add money, status, unit map, timeline, evidence compare and approval card for rentals (c4aaf2a)
  • headless: add the money, status, unit map, timeline, evidence zoom and approval rules (ee3501c)
  • headless: give unit states icons and the alert and change tones (a1ac6dc)
  • headless: model a unit’s tenants, rooms, rent and lease, with search and avatar stacks (5cf0a71)
  • headless: work out step states and the reading order for steps and tracking timelines (7ca3907)
  • primitives: add initials for avatars without a photograph (3f0ba0b)
  • scripts: generate a docs page and stories for any component that has none (84baf73)
  • status: add the alert and change tones (805a2ef)
  • timeline: add steps and tracking variants, a horizontal orientation and icons on any entry (95781b1)
  • unit-map: redesign as a property explorer with photographs, stacked avatars, a hover card and a side panel (6bff385)

0.0.36 (2026-10-05)

Features

  • headless: add documentStats for the editor’s word, character and reading counts (ec62a9e)
  • primitives: add countWords (2694be6)

Bug Fixes

  • carousel: count slides from one source before the first render (1395a4c)
  • drawer: settle presence before render so opening and closing no longer schedule a second update (3539cba)
  • editor: load a new value before render and count through headless documentStats (6c498f7)
  • split-panel: derive the pixel position before render through headless slider (1ea7045)
  • table: clamp the page before render so paging does not schedule a second update (50adf57)

0.0.35 (2026-10-05)

Features

  • dialog: open as a bottom sheet on phones (832076d)
  • drawer: open as a bottom sheet on phones whatever the placement (83c07d2)
  • stat-card: add nana-stat-card with tones (adbe632)
  • stats-cards: match the dashboard card design and accept tones (56b9119)
  • tabs: restyle the segmented variant as a compact strip (2dc5d53)
  • tailwind: expose the text roles as utilities in react and svelte (448bbea)
  • textarea: move counters under the field and allow vertical resize (cf8f07e)
  • themes: apply the text hierarchy and a medium body weight (a407b0f)
  • tokens: add a text hierarchy with medium as the lightest weight (5e9e64f)

Bug Fixes

  • components: lift light weights and sub-12px text onto the type scale (0829f4e)
  • drawer: track open and close through headless presence so a quick reopen stays open (fd486a1)
  • icon: draw an exclamation mark for the error icon, not a tick (3c5de90)
  • select: let the option panel grow past a narrow trigger to fit its options (5a37588)
  • tooltip: take Escape through a dismiss layer stack so a dialog around it stays open (6559c79)

0.0.34 (2026-10-01)

Features

  • dialog: give it the same close button the drawer has (7966f83)

0.0.33 (2026-10-01)

Features

  • table: lay row actions out as a button row on a stacked card (a6b783b)

Bug Fixes

  • components: keep the manifest in place for the whole build (621da97)

0.0.32 (2026-10-01)

Bug Fixes

  • menu-button: let an aria-label reach the trigger (9324750)

0.0.31 (2026-10-01)

Features

  • menu-button: add a button that opens a menu (1cb8503)

0.0.30 (2026-10-01)

Bug Fixes

  • components: stop an empty props type rejecting children and class (1ca21d7)
  • packaging: publish compiled output from headless and primitives (028519a)
  • table: stack whole cards, notice late rows, and leave other bodies alone (62b2620)

0.0.28 (2026-10-01)

Features

  • bulk-progress: add the long-run progress component with per-item failures (3b6db56)
  • components: add the number input and the stepper on their headless rules (f9125d5)
  • components: give nana-details accordion keyboard navigation (f156275)
  • components: stack the table into cards on a narrow container (eb14d3a)
  • dialog: make every part unstyled-capable and slottable (c5b096b)
  • dropdown: navigate the web component with the listbox rules (53764cb)
  • empty-state: add the component for web components, React and Svelte (aeb3776)
  • headless: add the breadcrumb collapsing rules (3ce59c3)
  • headless: add the calendar and date range rules (9c08b9c)
  • headless: add the carousel rules (0e43be0)
  • headless: add the checkbox state rules (3e89254)
  • headless: add the collapsible rules for accordions and disclosures (296eb53)
  • headless: add the dialog rules module (42d6552)
  • headless: add the dismissal layer rules (b7fe284)
  • headless: add the field description rules (15f7c20)
  • headless: add the floating position rules (4ba0dcd)
  • headless: add the hover-card intent rules (7010dfb)
  • headless: add the menu rules module (3e9fba3)
  • headless: add the number input rules (d8443fd)
  • headless: add the one-time-code rules (98e2bc4)
  • headless: add the presence rules for exit animations (6a9f8b2)
  • headless: add the resizable panel rules (d43965b)
  • headless: add the selection rules for radio and toggle groups (9dd9eb6)
  • headless: add the slider value rules (6cfe687)
  • headless: add the stepper rules (36aead5)
  • headless: add the table view rules (e2d19ec)
  • headless: add the tabs rules module (9f099b5)
  • headless: add the toast queue rules (674bd0b)
  • headless: add the tooltip timing rules (a0ba1bd)
  • headless: add the tree rules (7d23a5a)
  • headless: add the virtual window rules (338a565)
  • headless: cover the dialog rules with tests (a8a005b)
  • headless: cover the field rules with tests (32b87fb)
  • headless: cover the menu rules with tests (e5cbca3)
  • headless: cover the table rules with tests (62a5b70)
  • headless: cover the tabs rules with tests (0702c6a)
  • headless: cover the tooltip rules with tests (fad3f05)
  • headless: cycle a bare sort direction beside the keyed one (597009d)
  • headless: export every rule set from the barrel (9c220d0)
  • headless: export the new rule sets from the barrel (f5531b4)
  • headless: export the overlay rule sets (68f3c92)
  • headless: extract the behaviour rules into their own package (c09420e)
  • headless: take the menu’s step keys from its orientation (34cfd72)
  • hover-card: add the react component (08559b9)
  • hover-card: add the svelte component (5da5aac)
  • image-comparer: hold the divider within its limits (5610da8)
  • listbox: add shared listbox utils and combobox component (2287f4a)
  • meter-input: add the rental meter reading field for web components, React and Svelte (0612800)
  • otp: add a one-time-code field built on the headless rules (5f548de)
  • otp: group the boxes and keep focus out of a gap (7b278bf)
  • primitives: add isOutside, applyRovingTabIndex and ariaBoolean (ecf1653)
  • primitives: add press, focus, announcer and collection (e20167a)
  • primitives: add the framework-agnostic building blocks (fcfc3e9)
  • primitives: add the reduced-motion, dismiss-key and form-control rules (ec0c8ed)
  • primitives: add typeahead matching (625b35d)
  • primitives: own the clamp and the index step no component owns (469acd4)
  • react: add the alert component (3e91de7)
  • react: add the badge component (9f0609b)
  • react: add the card component (a53ce87)
  • react: add the checkbox component (bb608ec)
  • react: add the class merging helper (144a230)
  • react: add the data-table block (42cbc63)
  • react: add the dialog component (76bcd5c)
  • react: add the divider component (c2efde0)
  • react: add the dropdown component (ade316a)
  • react: add the input component (9b37e64)
  • react: add the login-form block (f4deb49)
  • react: add the pagination component (6697040)
  • react: add the radio component (ee13499)
  • react: add the select component (2aa78ab)
  • react: add the settings-form block (1c4a9bb)
  • react: add the signup-form block (7ef5ff8)
  • react: add the slot and part-class helpers for unstyled use (dd8f010)
  • react: add the stats-cards block (3133301)
  • react: add the switch component (8a2871f)
  • react: add the table component (f2e9df8)
  • react: add the tabs component (16cc645)
  • react: add the tooltip component (7c0b432)
  • react: bridge the design tokens into tailwind’s theme (6134afe)
  • react: carry the dialog rules copy (560350c)
  • react: carry the menu rules copy (dbea542)
  • react: carry the table rules copy (3ec156f)
  • react: carry the tabs rules copy (3cfbc78)
  • react: carry the tooltip rules copy (f3721dd)
  • react: cover the unstyled, classNames and asChild paths (1782720)
  • react: depend on clsx and tailwind-merge (b74034a)
  • react: give tabs an orientation and activation mode (3ab44da)
  • registry: emit prop tables for the framework targets (f2095a4)
  • registry: publish components without their doc comments (ac35f9c)
  • registry: read React and Svelte prop contracts from their types (f791ce8)
  • registry: strip documentation comments from the served source (1b5b62b)
  • select: slot the empty-panel message on select and combobox (17c39ee)
  • split-panel: hold each panel within its own limits (8741f02)
  • svelte: add a stable id helper (cbbd596)
  • svelte: add the alert component (0252d49)
  • svelte: add the badge component (30877f7)
  • svelte: add the card component (280da75)
  • svelte: add the checkbox component (dc5bebd)
  • svelte: add the class merging helper (2fdcb7f)
  • svelte: add the data-table block (a407fb9)
  • svelte: add the dialog component (805094d)
  • svelte: add the divider component (cf3c392)
  • svelte: add the dropdown component (83adafa)
  • svelte: add the login-form block (3102fb6)
  • svelte: add the pagination component (17464f1)
  • svelte: add the radio component (201d533)
  • svelte: add the select component (acf0ea2)
  • svelte: add the settings-form block (c2430ed)
  • svelte: add the signup-form block (8ddab30)
  • svelte: add the stats-cards block (0bcf060)
  • svelte: add the switch component (9fe1ccc)
  • svelte: add the table component (4e0fde9)
  • svelte: add the tabs component (3f2a55e)
  • svelte: add the tooltip component (d9b0b18)
  • svelte: bridge the design tokens into tailwind’s theme (e29ef93)
  • svelte: carry the dialog rules copy (f71bcdc)
  • svelte: carry the menu rules copy (57479b0)
  • svelte: carry the table rules copy (8d6c882)
  • svelte: carry the tabs rules copy (b41df5a)
  • svelte: carry the tooltip rules copy (f75045d)
  • svelte: depend on clsx and tailwind-merge (814ebbe)
  • svelte: give tabs an orientation and activation mode (3940b1b)
  • svelte: use the stable id helper in the input (96dd81b)
  • table: order, filter and page its own rows through the headless rules (62bd253)

Bug Fixes

  • components: forward the parts of a nested component so a consumer can reach them (baf1881)
  • editor: let the document keep the keys while the slash menu is empty (9661c62)
  • headless: open the tooltip on focus and share one dismiss-key rule (189f4ed)
  • headless: pull stray focus back inside the dialog on tab (8eba4ac)
  • headless: stop the breadcrumb ellipsis spending the max-items budget (f285b83)
  • menu: keep arrow, Home and End working from a non-item child (034793d)
  • popup: flip on both axes and stay inside the viewport (44176dc)
  • primitives: keep nextEnabled inside the collection for any step (852fa61)
  • primitives: leave the validity anchor out when there is none (8e3f653)
  • react: complete the dropdown keyboard pattern (10a5c14)
  • react: delay the tooltip and keep the trigger’s own handlers (5379a11)
  • react: focus the first control when a dialog opens (3f87a2a)
  • react: import the listbox rules without an extension (a6fd714)
  • react: import without a file extension for turbopack (b267aec)
  • react: import without a file extension for turbopack (79fe2ae)
  • react: mark the stateful blocks as client components (5a23406)
  • react: mark the stateful components as client components (34ab28e)
  • react: show a pointer on the alert dismiss button (313f220)
  • react: show a pointer on the table sort button (32f1fb0)
  • react: stop the dialog stealing focus on every parent render (18179a5)
  • scripts: scaffold against the base class that replaced the mixins (20347f5)
  • scripts: scaffold sub-elements with the SSR-safe decorator (5e9281a)
  • svelte: complete the dropdown keyboard pattern (1d19594)
  • svelte: delay the tooltip and describe the trigger itself (0516542)
  • svelte: dismiss the dialog when its backdrop is clicked (1e5e4f7)
  • svelte: merge a class passed to the button (f9adc6d)
  • table-head: send the direction the next activation should land on (6849a50)
  • table: keep watching its width after it is moved in the DOM (7ca5f63)

0.0.27 (2026-09-02)

Features

  • cli: add from the configured framework (be5e9c5)
  • cli: detect react from react or next (ec4b0ed)
  • cli: detect the project’s framework and its conventions (3f39daa)
  • cli: detect whether a project can compile decorators (423d59a)
  • cli: fetch from the framework’s registry path (eeb24de)
  • cli: list the configured framework’s registry (e152ed4)
  • cli: offer to enable decorators during init (16ef452)
  • cli: record the framework and use its default paths (0734096)
  • cli: update from the configured framework (1946220)
  • react: add a native react button (64e2132)
  • react: add the button barrel (4caa140)
  • react: add the button’s own types (9372855)
  • react: add the react component package (8399912)
  • react: add the shared size and variant types (ff1e95a)
  • react: configure the typecheck (067d4a8)
  • react: declare the css module type (b42e1cb)
  • react: style the button from the shared tokens (848a63e)
  • svelte: add a native svelte button (0457b41)
  • svelte: add the button barrel (43d1a43)
  • svelte: add the button’s own types (6ab419e)
  • svelte: add the shared size and variant types (fc8f78d)
  • svelte: add the svelte component package (ae2ba51)
  • svelte: configure svelte-check (3ff8f31)

Bug Fixes

  • cli: say what to do when a scoped install 404s (5d03847)
  • cli: stop treating a glob path as a block comment (fcc97fc)

0.0.26 (2026-09-02)

Features

  • cli: add remove, keeping shared and edited files (a848576)
  • cli: add update, skipping files you have edited (ff8e185)
  • cli: fetch from a pinned registry snapshot (5607cc4)
  • cli: let add install from a pinned version (58f4725)
  • cli: list blocks apart from components (e914276)
  • cli: list what the project has installed (af162c0)
  • cli: parse name@version install specs (bb6783a)
  • cli: record installed files by content hash (03c8979)
  • cli: record what add writes in the lock (1bb3827)
  • cli: register the update and remove commands (0e49208)
  • login-form: add a login block composed from the library (a1809e6)
  • login-form: add the block barrel (d36c05c)
  • login-form: style the block (be02c2c)

Bug Fixes

  • cli: apply the TypeScript check to update (6c5f1e5)
  • cli: detect whether the project compiles TypeScript (f87cd42)
  • cli: refuse to write TypeScript into a JavaScript project (a5bfb86)

0.0.25 (2026-09-02)

Features

  • registry: distribute components as source via a registry and CLI (95f8f3d)

0.0.24 (2026-08-31)

Bug Fixes

  • menubar-menu: declare the three menubar events it fires (6691595)
  • select: attach the class JSDoc to the class, not the icon helper (eb07bb1)
  • textarea: declare its public API in JSDoc (e10d7b7)

0.0.23 (2026-08-17)

Bug Fixes

  • combobox: compute filtering and query text before render (47371b4)
  • select: compute open-state derived values before render (24b3c98)

0.0.22 (2026-08-17)

Features

  • components: add an autoloader that registers tags on demand (e6a26b1)
  • components: add the generated autoloader tag map (a4b20a0)
  • components: export the autoloader subpath (ad91c2a)
  • components: generate the autoloader tag map from the manifest (8b56b56)

Bug Fixes

  • filter-item: treat nana-clear as a committed value change (0a86600)

0.0.21 (2026-08-17)

Features

  • button: make the secondary variant the brand amber (3b25f27)
  • tokens: add the brand secondary colour scale (458ee4e)

Bug Fixes

  • components: rename the publish script so npm stops recursing (fdaba69)
  • themes: rename the publish script so npm stops recursing (f360c45)
  • tokens: rename the publish script so npm stops recursing (9076ec8)

0.0.19 (2026-08-16)

Features

  • filter-item: add the package barrel (d95f047)
  • filter-item: read and report any slotted field’s value (784cb12)
  • filter-item: style the label and control (360c607)
  • filter: add the filter state and variant types (f582e8c)
  • filter: add the filter subpath exports (e3229c4)
  • filter: add the package barrel (618d787)
  • filter: aggregate filter items into one value (3e6f8b7)
  • filter: export the filter components from the root (b908963)
  • filter: style the bar, panel and popover surfaces (105615d)
  • forms: unify field sizing and affix zones across the form controls (2db3771)
  • react: bind the nana-input events on the generated wrapper (24374bd)
  • tab-group: tighten the segmented track and indicator easing (8249389)
  • tab: recede unselected tabs and raise the segmented thumb (c40ec49)
  • tabs: sharpen the active indicator and fix the count badge in dark mode (71c1841)
  • tokens: add an emphasized easing curve (8e177cc)

Bug Fixes

  • components: correct duplicate change events, disabled guards and date coercion (27f446d)
  • input: restore the hover border affordance (d92ffef)
  • scripts: make workspace symlinking idempotent (0c3ceae)
  • themes: raise focus ring and muted text contrast to meet WCAG (ab73a4f)
  • tokens: align component fallbacks with their token values (4ded3e3)

0.0.18 (2026-08-14)

Features

  • forms: unify field sizing and affix zones across the form controls (2db3771)
  • react: bind the nana-input events on the generated wrapper (24374bd)
  • tabs: sharpen the active indicator and fix the count badge in dark mode (71c1841)

Bug Fixes

  • components: correct duplicate change events, disabled guards and date coercion (27f446d)
  • scripts: make workspace symlinking idempotent (0c3ceae)
  • themes: raise focus ring and muted text contrast to meet WCAG (ab73a4f)
  • tokens: align component fallbacks with their token values (4ded3e3)

0.0.17 (2026-08-14)

Bug Fixes

  • input: drop the icon-side padding when a prefix or suffix is slotted (c9bbdf2)

0.0.16 (2026-08-14)

Features

  • components: add shared interaction-state styles (9725733)
  • components: export editor from barrel (9800319)
  • editor: add barrel exports (2e91885)
  • editor: add document model and HTML serialization (0de4593)
  • editor: add document model types (135bced)
  • editor: add JSON/HTML/Markdown serializers (e7fb872)
  • editor: add nana-editor component (cc48d82)
  • editor: add RichEditor with snapshot undo/redo (15801ae)
  • editor: add toolbar component (4ced9c7)
  • editor: add transaction steps (6206037)
  • input: forward the numeric and keyboard attributes (7868de3)
  • qr-code: add logo monogram support (e6b24cd)
  • table: warn on the removed layout attribute (3812d97)

Bug Fixes

  • build: analyze the custom elements manifest with —litelement (671b7ee)
  • build: externalize lit from the ESM build (5ec66f9)
  • color-picker: lock picker width across formats (20fc2a8)
  • color-picker: size stability, a11y, drop duplicate more-colors (fb99e45)
  • components: warn when a tag is already registered (71e76fb)
  • icon: correct align and color icon paths (bd4f182)
  • icon: stop the host shrinking in flex rows (65e7524)
  • table: give sizing=“fixed” a min-width floor (1c4a4d8)

0.0.15 (2026-07-19)

Features

  • components: add shared interaction-state styles (9725733)
  • components: export editor from barrel (9800319)
  • editor: add barrel exports (2e91885)
  • editor: add document model and HTML serialization (0de4593)
  • editor: add document model types (135bced)
  • editor: add JSON/HTML/Markdown serializers (e7fb872)
  • editor: add nana-editor component (cc48d82)
  • editor: add RichEditor with snapshot undo/redo (15801ae)
  • editor: add toolbar component (4ced9c7)
  • editor: add transaction steps (6206037)
  • qr-code: add logo monogram support (e6b24cd)

Bug Fixes

  • color-picker: lock picker width across formats (20fc2a8)
  • color-picker: size stability, a11y, drop duplicate more-colors (fb99e45)
  • icon: correct align and color icon paths (bd4f182)

0.0.11 (2026-07-15)

Features

  • alert: add barrel export (14d26f4)
  • alert: add nana-alert component (9ed57c6)
  • alert: add nana-alert styles (a14b9a2)
  • animated-icon: add component barrel export (b2ffc6a)
  • animated-icon: add component styles and motion keyframes (7d7561d)
  • animated-icon: add nana-animated-icon component (0b4036b)
  • breadcrumb item and component (a47d7ef)
  • button-group: add barrel export (ed46c9e)
  • button-group: add nana-button-group component (771d8eb)
  • button-group: add nana-button-group styles (a8b2845)
  • button-group: add radius customization hook (6431bb1)
  • button-group: expose base part and radius variable (b84fd6d)
  • button: add shape, polymorphic as, active state and icon-only a11y warning (352c4bb)
  • button: add tertiary/link variants, shape and active styles via .base class (7297c46)
  • button: expose base/loader parts and minimal theming variables (0d8a37b)
  • button: route colour/size/radius through customization slots (60885ea)
  • card: add bg/color/radius customization hooks (f04cea8)
  • card: add composable card component with docs and stories (de82d74)
  • card: document customization variables (041da77)
  • caurosle and caurosel item component (3154eae)
  • combobox: add combobox component (9225297)
  • combobox: add entry point (098cfe4)
  • combobox: add styles (f0f0698)
  • components: add ./animated-icon export subpath (236e9df)
  • components: add ButtonVariant, ButtonShape and ButtonAs types (fd0d830)
  • components: add subpath exports for new components (bbd790e)
  • components: add switch, tag, and tab system types (f2fd606)
  • components: add switch, tag, and tabs storybook stories (28f97cb)
  • components: add textarea storybook story (15db49d)
  • components: add tooltip storybook story (e4ac9ef)
  • components: add top-level types/main/module fields; bump to 0.0.7 (5228370)
  • components: add tree and tree-item storybook stories (2ac101a)
  • components: add types for new components (48dc126)
  • components: export icon registry helpers and IconCategory type (4234f23)
  • components: generate framework types from the custom elements manifest (e12ecbf)
  • components: register NanaAnimatedIcon in package entry (5b0f250)
  • components: register new component exports (950d425)
  • components: register new components (62a08fd)
  • components: register switch, tag, and tab exports (3606959)
  • components: register textarea export (045df37)
  • components: register tooltip export (6c18014)
  • components: register tree and tree-item exports (182c644)
  • components: update tab stories, fix a11y contrast and nested controls (d5835a4)
  • copy-button: add copy button component (687908f)
  • copy-button: add entry point (5d59026)
  • copy-button: add styles (e38a77d)
  • date-range: add nana-date-range (bbafb4b)
  • details: add details component (8ecd244)
  • details: add entry point (e0a8c27)
  • details: add styles (35ffaea)
  • drawer: add size, label and close button (804ce36)
  • drawer: exit animation lifecycle, floating close button outside header (472d31a)
  • drawer: exit animation with backdrop fade, floating close button (4ab6096)
  • drawer: export DrawerSize type (1d565c3)
  • drawer: style size scale and close button (f3a6eb4)
  • fix components (ee7e792)
  • gen-types: resolve named type aliases to literal unions (0f18e10)
  • getting started with button and icons (stories and component ) (efdf998)
  • icon: add finance, accounting and admin glyphs (ca2d58e)
  • icon: add loans, treasury, reporting and compliance glyphs (9ee6791)
  • icon: add shared icon registry core (ced904b)
  • icon: alias call/groups/badge/upload_file/etc to existing glyphs (f1029f9)
  • improve sidebar (c010b2c)
  • input: add bg/color/radius customization hooks (87c8b7b)
  • input: document customization variables and parts (768cba7)
  • menubar: add menubar and menubar-menu components (dce9135)
  • more components (f62f378)
  • option: add active keyboard-highlight state (7ed6036)
  • pagination: add barrel export (3bd4089)
  • pagination: add nana-pagination component (c28f206)
  • pagination: add nana-pagination styles (2c72536)
  • pagination: add radius and active-page customization hooks (ade2fcc)
  • pagination: document customization variables and parts (042402d)
  • qr-code: add dependency-free qr encoder (c8b04c9)
  • qr-code: add entry point (3b5c137)
  • qr-code: add qr code component (5eedf37)
  • qr-code: add styles (40e08d5)
  • radio: add radio, radio-button and radio-group components (352dbfa)
  • range: add range slider component (68e7638)
  • rating: add rating component (992aeb6)
  • react: add generated JSX intrinsics for raw nana-* tags (9ae2fd5)
  • react: add generated typed React wrappers (8fd941d)
  • relative-time: add auto-updating relative time component (57039be)
  • resize-observer: add resize-observer component (541b0b7)
  • select: add select component (b2ab7b4)
  • select: add select storybook stories (1f13673)
  • select: add select subpath export (eabef31)
  • select: add SelectSize type (21468d9)
  • select: export select component from package index (5a1636a)
  • skeleton: add loading prop with fade-out, wave animation, natural line widths (b3091fb)
  • skeleton: add skeleton storybook stories (d8fa3c5)
  • skeleton: add skeleton subpath export (019cece)
  • skeleton: add SkeletonShape, SkeletonSize, SkeletonAnimation types (12cbcc5)
  • skeleton: export skeleton component from package index (58876ab)
  • spinner: add variant, speed and label props with a11y, docs and stories (9d531d9)
  • spinner: expose spinner part (f7c738c)
  • split-panel: add split panel component and types (9c78324)
  • split-panel: add split panel storybook stories (26584cf)
  • split-panel: add split panel subpath export (555ad58)
  • split-panel: export split panel component from package index (56e6299)
  • svelte: add generated IntrinsicElements types (1d0d1a5)
  • switch: add form-associated switch component (7d38ec3)
  • tab-group: add smart focus and count support to tab and tab-panel (1d0c67b)
  • tab-group: add tab, tab panel, and tab group components (b975125)
  • table-cell: add truncate, width and numeric (d160871)
  • table-cell: truncation, numeric and content-wrapper styles (26eb0b3)
  • table-head: add truncate, width and numeric (aeba15b)
  • table-head: truncation and numeric styles (7e13981)
  • table: add barrel export (0709d5c)
  • table: add empty-state slot and skeleton loading (9e1759f)
  • table: add expandable rows with full-width detail panels (be9e456)
  • table: add hairline frame and fix skeleton and sticky-header rules (51058ed)
  • table: add header background customization hook (e856992)
  • table: add header text colour customization hook (e72d8aa)
  • table: add layout, max-height and loading (5d8db54)
  • table: add nana-table component (86599a5)
  • table: add nana-table styles (b8865da)
  • table: add nana-table-body component (991a256)
  • table: add nana-table-body styles (c137635)
  • table: add nana-table-caption component (a761ba0)
  • table: add nana-table-caption styles (4d139b3)
  • table: add nana-table-cell component (ba62ddc)
  • table: add nana-table-cell styles (83a0607)
  • table: add nana-table-footer component (08844ea)
  • table: add nana-table-footer styles (fc64ec3)
  • table: add nana-table-head component (238f5f4)
  • table: add nana-table-head styles (25d4213)
  • table: add nana-table-header component (59cc984)
  • table: add nana-table-header styles (e2ff79f)
  • table: add nana-table-row component (f5b8805)
  • table: add nana-table-row styles (d0f0d10)
  • table: document customization variables and parts (1813bc6)
  • table: fixed-layout, scrollable body and loading overlay styles (3febcca)
  • tabs: give the pill variant a track (aaf3bf3)
  • tag: add tag component with variants and removable option (b31fb85)
  • textarea: add form-associated textarea component (a0aefeb)
  • themes: add dark accent-contrast token (6b6895d)
  • themes: add surface accent-contrast token (7a72c04)
  • themes: add theme-aware surface layer and accent tokens (f4e473b)
  • themes: import dark.css from base so dark mode applies by default (dfdc65f)
  • tooltip: add tooltip component with 12 placements and variants (bcf7626)
  • tree: add tree and tree-item components (e03b4ba)
  • types: add animated-icon animation/trigger/speed types (fe33963)
  • types: add shared component type unions (b7af428)
  • utils: add SSR-safe, idempotent customElement decorator (b3a94ea)
  • vue: add generated GlobalComponents types (99f8e9a)

Bug Fixes

  • badge: follow data-theme instead of the OS colour scheme (ffbca02), closes #ca8a04
  • badge: move box styling off :host so global resets can’t flatten it (c996512)
  • build: non-incremental d.ts emit so react/index.d.ts always ships (92062dd)
  • component import bug (07bd76a)
  • components: declare sideEffects so element registration survives bundler tree-shaking (e66e93a)
  • components: register tab, tag, textarea, tooltip and tree from the barrel (59abaf2)
  • input,combobox: drop the leading gap when no icon is slotted (16d1721)
  • input: use —nana-* surface tokens so it follows global theming (a59a9c0)
  • range: render vertical slider with definite height (cb3bd26)
  • react: generate JSX types for jsx-runtime/jsx-dev-runtime and allow class (2fb7651)
  • react: JSX intrinsics target jsx-runtime and support class attribute (509eacd)
  • scripts: point generated exports at dist, not src (cce6259)
  • scripts: stop create-component deleting exports from the barrel (6e77b3d)
  • skeleton: resolve CSS custom property chain so skeleton is always visible (3590ecf)
  • table: expose rows and cells to assistive tech (6a6d067)
  • table: tighten row density and stop the frame overflowing (e766585)
  • tabs: make backgrounds legible on any surface (72fe65d), closes #f5f5f5
  • tokens: emit dash-separated CSS var names for fractional keys (24fcc49)
  • tooltip: use fixed positioning to escape ancestor clipping (27cf348)
  • tooltip: viewport-relative position calcs for fixed positioning (84302aa)

Performance

  • icon: code-split bundled icon data behind a dynamic import (7b102c5)