UNPKG

natura11y

Version:

Natura11y is an open-source design system for creating beautiful web interfaces with a focus on accessible interaction design and front-end development.

282 lines (198 loc) 11.3 kB
# Changelog All notable changes to this project will be documented in this file. --- ## [5.1.1] — 2026-06-29 ### Package - Added package exports for framework CSS, SCSS source entry points, and shared JavaScript utilities used by React integrations. - Exposed utility imports for `focus`, `getCurrentBreakpoint`, and `keyboardNavigation`. ### Bug Fixes #### Collapse - Improved collapse transition cleanup and Safari behavior. #### Dropdown - Fixed dropdown behavior and updated the HTML examples to match current menu patterns. #### Grid - Updated grid divider and sidebar behavior, including top alignment for sidebar items. #### Lightbox - Fixed thumbnail image sizing so media fills the thumbnail frame correctly. ### Examples - Cleaned up framework HTML examples served by the development build. --- ## [5.1.0] — 2026-03-14 ### New Components #### Search - New `FormSearch` class (`form.js`) — powers enhanced search input behavior - New CSS modifier: `.form-entry--search` on `.form-entry` - `[data-search-clear]` attribute — marks a button that clears the input; shown automatically via `.has-value` class when input has content - Native browser search cancel button suppressed cross-browser via CSS (`-webkit-search-cancel-button`, `-webkit-search-decoration`) - ARIA live region (`aria-live="polite"`) injected automatically — announces "Search cleared" to screen readers when the clear button is used - New CSS variable: `--main-menu-search-width` (default `300px`) — controls inline search width inside the main menu bar at desktop breakpoints --- ### Bug Fixes #### Collapse - Scoped breakpoint override from `.shown` to `.collapse.shown` — the unscoped rule was overriding `.shown` on unrelated components (e.g. `modal--scroll-all` lost its `overflow-y: scroll` behavior) #### Flyout - Added `user-select: none` to `.flyout :is(a, button)` — prevents browser text-selection artifacts on flyout links during rapid open/close interactions #### Button - Added `user-select: none` to `.button` — prevents accidental text selection on interactive controls #### Main Menu - Added `user-select: none` to mobile nav `> ul > li > :is(a, button)` — consistent with flyout and button fix #### Form Entry - Improved button sizing inside `.form-entry__field__input`: replaced hardcoded `margin` and `font-size` with `--_form-entry-button-inset` internal variable; `gap` added between input and button; icon-only buttons now correctly size to target size --- ## [5.0.1] — 2026-03-10 ### Bug Fixes #### Collapse - Scoped breakpoint override from `.shown` to `.collapse.shown` — the unscoped rule was overriding `.shown` on unrelated components (e.g. `modal--scroll-all` lost its `overflow-y: scroll` behavior) #### Flyout - Added `user-select: none` to `.flyout :is(a, button)` — prevents browser text-selection artifacts on flyout links and controls during rapid open/close interactions #### Button - Added `user-select: none` to `.button` — prevents accidental text selection on interactive button controls --- ## [5.0.0] — 2026-03-09 ### New Components #### Badge - New component: `_badge.scss` - Class: `.badge` - CSS variables: `--badge-font-size`, `--badge-padding-x`, `--badge-padding-y`, `--badge-border-radius` #### Nested Nav - New component: `_nested-nav.scss` - Class: `.nested-nav` - Supports up to three levels of indented navigation with bordered structure and active indicator bar - CSS variables: `--nav-nested-padding-x`, `--nav-nested-padding-y`, `--nav-nested-parent-font-size`, `--nav-nested-child-font-size`, `--nav-nested-indicator-width`, `--nav-nested-indicator-color` --- ### Templates - Added landing page template - Added two-column layout template - Added three-column layout template - Added form page template --- ### Bug Fixes & Polish - Fixed CSS variable name: `--nav-nested-decendent-font-size``--nav-nested-child-font-size` - `package.json` `main` field updated to point to `dist/natura11y.js` --- ## [5.0.0-alpha.1] — 2026-03-05 ### New Components #### Flyout - Full-height overlay panel that slides in from the side - Supports simple nav or drill-down panel navigation for multi-level menus - New files: `flyout.js`, `_flyout.scss` - Trigger: `data-open="flyout"` on a button with `aria-controls` pointing to the flyout ID - Internal controls: `data-flyout-close`, `data-flyout-back`, `data-flyout-next` - `inert` is managed by JS — do not add it manually #### Pagination - New component: `_pagination.scss` - Class: `.pagination` - `[aria-current="page"]` receives a subtle fill background automatically - CSS variables: `--pagination-font-size`, `--pagination-item-size`, `--pagination-border-radius` #### Breadcrumb - Separated from `_navigation.scss` into its own partial: `_breadcrumb.scss` - **Class renamed:** `.nav-breadcrumb``.breadcrumb` - CSS variable: `--breadcrumb-font-size` --- ### New Utilities #### Drop Shadow - New utility classes: `.drop-shadow-1`, `.drop-shadow-2`, `.drop-shadow-3` with responsive modifiers `--{bp}` - Uses CSS `filter: drop-shadow()` — works with transparent and cutout shapes, unlike `box-shadow` - Includes a Safari/Firefox `translateZ(0)` workaround #### Container Breakpoint Modifiers - `.container` now supports responsive modifiers: `.container--{bp}` - Defers container padding and centering until a specific breakpoint --- ### Breaking Changes #### `Navigation` class removed The `Navigation` class (`navigation.js`), which handled `primary-nav` dropdown behavior, has been removed and replaced by two dedicated classes: - `Dropdown` (`dropdown.js`) — handles dropdown and mega menu behavior - `MainMenu` (`main-menu.js`) — handles the global site header navigation `Flyout` (`flyout.js`) is a brand new class for the off-canvas panel component and is unrelated to this change. #### `primary-nav` is now the `Main Menu` component What was previously `primary-nav` is now a fully named component: **Main Menu**. All classes, CSS variables, and the dedicated JS class reflect this. | v4 | v5 | |---|---| | `primary-nav--inline--{bp}` | `main-menu--bar--{bp}` | | `primary-nav--below--{bp}` | `main-menu--stack--{bp}` | | `primary-nav__logo` | `main-menu__logo` | | `primary-nav__menu` | `main-menu__nav` | | `primary-nav__toggle` | `main-menu__toggle` | | `primary-nav__search` | `main-menu__search` | | `primary-nav__actions` | `main-menu__actions` | | `mobile-menu-toggle` *(extra class on toggle buttons)* | removed | | `--primary-nav-padding-x` | `--main-menu-padding-x` | | `--primary-nav-padding-y` | `--main-menu-padding-y` | #### `nav__dropdown` renamed to `dropdown__menu` Any element previously using `.nav__dropdown` must be updated to `.dropdown__menu`. #### `.nav-breadcrumb` renamed to `.breadcrumb` #### `.nav--has-icons` removed Icon styles are now applied automatically when nav items contain icon elements — no modifier class required. Also: `.nav__text``.text` (generic text wrapper class). #### Navigation SCSS restructured `_navigation.scss` was significantly reduced. Styles have moved to dedicated component partials: - `_main-menu.scss` — global site header (the renamed `primary-nav`) - `_dropdown.scss` — dropdown menus, mega menus, `nav-dropdown`, `nav-link-dropdown` - `_breadcrumb.scss` — breadcrumb (new dedicated partial) - `_pagination.scss` — pagination (new dedicated partial) - `_flyout.scss` — off-canvas panel (new component) --- ### Dropdown Updates - `.nav-dropdown` — new component wrapper class for dropdown trigger buttons - `.nav-link-dropdown` — updated; inner `.text` element now uses `.link-expanded` automatically - `.dropdown__menu` — renamed from `.nav__dropdown`; now sets explicit `background-color: var(--background-color)` - Indicator icon (caret) now uses an icon font character via CSS `::after` pseudo-element - `[data-toggle="dropdown"][aria-expanded="true"]::after` rotates the indicator 180deg --- ### Accessibility Improvements #### `inert` attribute adoption Replaced `aria-hidden` + manual `tabindex` management with the native `inert` attribute across all interactive components: - **Accordion** — panels use `inert` instead of `aria-hidden` + tabindex manipulation - **Modal** — all modals initialized with `inert`; toggled on open/close - **Collapse**`inert` set at init only when the element is not already visible; `ResizeObserver` handles responsive transitions - **Lightbox** — replaced `aria-hidden`/`aria-live` with `inert` + CSS `.shown` class #### Focus utility (`focus.js`) - `getFocusableElements` now filters out elements inside `[inert]` and `[hidden]` ancestors - `focusTrap` queries focusable elements dynamically — respects `inert`/`hidden` state changes during flyout panel navigation - Focus trap no longer overwrites `tabindex` on natively focusable elements - Optional chaining on first/last element to prevent null errors #### Track component - `scroll-behavior: smooth` is now always on by default - Previous approach was inverted (opt-in via `no-preference`) — corrected per WCAG motion guidance --- ### Component Enhancements #### Accordion - New CSS variable: `--accordion-animation-duration` (default `0.3s`) - Separate asymmetric enter/exit durations (exit is 0.75x, enter is 1x) - Uses logical properties: `padding-block` (was `padding-top`/`padding-bottom`) #### Collapse - Full rewrite - `data-focus-first` attribute: focuses the first focusable element on open - Keyboard activation (`event.detail === 0`) focuses the panel with `tabIndex = -1` - Escape key closes the panel and returns focus to the trigger - `data-target-close`: close a sibling collapse when opening this one - CSS: `grid-template-rows: 0fr → 1fr` as fallback; `@supports (interpolate-size)` uses `height: 0 → auto` - New CSS variable: `--collapse-animation-duration` - `interpolate-size: allow-keywords` on `:root` enables `height: auto` animation #### Modal - New enter/exit animation variables: - `--modal-animation-duration` (default `0.35s`) - `--modal-animation-scale` (default `0.85`; set to `1` to disable scale) - `--modal-animation-translate-y` (default `2rem`) #### Lightbox - New slide direction animation on prev/next (`data-entering="next|prev"` on container) - New open/close animation variables: - `--lightbox-animation-duration` (default `0.35s`) - `--lightbox-animation-translate-x` (default `2rem`) - Overlay fades in/out separately from content - DOM removal now waits for `transitionend` for a clean exit animation --- ### `prefers-reduced-motion` Support All animations and transitions now explicitly respect `prefers-reduced-motion: reduce`: | Component | What is disabled | |---|---| | Track | `scroll-behavior` set to `auto` | | Modal | All transitions | | Lightbox | All transitions; DOM element removed immediately | | Collapse | All transitions; `data-active` removed immediately | | Accordion | All transitions | | Flyout | All transitions and panel animations | | Alert | `.dismissed` fade-out animation | | Form | Toggle switch slider transition | | Document | `--html-scroll-behavior` set to `auto` (disables smooth page scrolling) | --- *Previous public release: [4.2.2](https://github.com/cavidano/natura11y/releases/tag/v4.2.2)*