Changelog
View SourceAll notable changes to Sutra UI will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.3.0] - 2026-03-06
Added
- drawer: New
SutraUI.Drawercomponent API withdrawer/1,drawer_trigger/1,drawer_group/1,drawer_item/1,drawer_submenu/1, anddrawer_separator/1 - input: New
descriptionattribute with automaticaria-describedbylinking across input types - install: New
mix sutra_ui.installtask for CSS setup anduse SutraUIinsertion inhtml_helpers
Changed
- docs: Updated installation flow, cheatsheets, and guides to reflect runtime hooks, unified input patterns, and current APIs
- live_select: Updated form integration to structured field payloads (single uses
[value], tags use[id][]) while preserving backward-compatible decoding - component naming: Sidebar terminology updated to Drawer across library docs, tests, and references
Breaking Changes
- sidebar -> drawer:
SutraUI.Sidebarand allsidebar_*functions were renamed toSutraUI.Draweranddrawer_* - field removed:
SutraUI.Fieldwas removed; use unifiedSutraUI.Inputwithlabel,description, anderrorsinstead
Fixed
- install task: Corrected
html_helpersinjection matching to avoid insertinguse SutraUIintoverified_routes - demo/docs parity: Resolved stale examples for
tab_nav, form snippets, and LiveSelect event/update patterns
[0.2.0] - 2026-01-06
Added
- input: Support for
type="switch"- renders checkbox withrole="switch"and proper styling - input: Support for
type="range"- delegates to Slider component with visual fill - tab_nav: Full ARIA tablist pattern with
role="tablist",role="tab",aria-selected - tab_nav: Keyboard navigation (ArrowLeft/Right, Home, End) with roving tabindex
- tooltip:
aria-describedbylinking between trigger and tooltip content - tooltip:
role="tooltip"on tooltip content element - tooltip: Escape key dismisses tooltip
- carousel:
aria-live="polite"region announces slide changes to screen readers - breadcrumb: Visible focus styles with
focus-visible:ring
Changed
- dialog: Converted from native
<dialog>element to div-based overlay for screen sharing compatibility (Zoom, Meet, etc.) - dialog: Now uses
showattribute for server-controlled visibility (recommended pattern) - dialog: Uses
focus_wrapfrom Phoenix.Component for focus management - input: Delegates
type="checkbox"toSutraUI.Checkbox - input: Delegates
type="textarea"toSutraUI.Textarea - input: Delegates
type="switch"toSutraUI.Switch - input: Delegates
type="range"toSutraUI.Slider - tooltip: Changed from CSS
::beforepseudo-element to real<span role="tooltip">element
Breaking Changes
- dialog: API changed - use
show={@show_dialog}andon_cancel="event"pattern instead of JS-only control - tab_nav: Now requires
idattribute (needed for keyboard navigation hook) - tooltip: CSS selector changed from
[data-tooltip]to.tooltip-trigger .tooltip-content
Fixed
- dialog: Now visible during screen sharing (native
<dialog>top-layer was invisible in Zoom/Meet) - tab_nav: Now properly accessible with screen readers (was missing tablist semantics)
- tooltip: Screen readers now announce tooltip content via
aria-describedby - carousel: Screen readers now announce slide changes
- breadcrumb: Keyboard users can now see focus indicator on links
[0.1.0]
Added
- Initial release with 43 components
- Foundation: button, badge, spinner, kbd
- Form Controls: input, textarea, checkbox, switch, radio_group, select, slider, range_slider, live_select, field, simple_form, input_group, filter_bar, label
- Layout: card, header, table, item, sidebar
- Feedback: alert, progress, skeleton, empty, loading_state, toast, flash
- Overlay: dialog, popover, tooltip, dropdown_menu, command
- Navigation: tabs, accordion, breadcrumb, pagination, nav_pills, tab_nav
- Display: avatar, carousel, theme_switcher
- CSS variables for theme customization (compatible with shadcn/ui themes)
- Dark mode support
- Colocated JavaScript hooks
- Full accessibility (ARIA) support
- Tailwind CSS v4 compatibility
- Zero external icon dependencies - components use inline SVGs
usage_rules.mdfor AI assistant guidance