Changelog
What changed in each release of Nana UI — new components and features, fixes, and anything that changes existing behaviour.
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)