0.19.0
PasswordInput visibility control, translations for every label, and time-zone fixes
PasswordInput's reveal state can now be controlled: one checkbox can drive two fields, and the toggle can be replaced or hidden. It is also reachable from the keyboard. Every label the kit hard-coded can now be set through a translations prop, from DataTable's sort and filter names to Notification's dismiss button. Tabs, SegmentGroup and Table lay out correctly right to left. Calendar, DatePicker and DataTable's date filter now follow IntlProvider's time zone, and Schedule prints every time in its own zone. Chart's neutral color and light-mode contrast are fixed, and Spinner, TreeSelect and TimeInput get correct accessible names.
Spotlight
One switch for every password field
Pass visible and onVisibleChange to control the reveal state, so one "Show passwords" checkbox can drive Password and Confirm together. hideToggle removes the built-in button once another control owns the state. To keep the button but change what it shows, renderToggle={(visible) => …} renders your own content, like the lock icons below. The kit's button keeps its keyboard access and accessible name.
A schedule in its own time zone
Set timeZone and every surface reads it: chip times, their labels, the details popover, the now-cursor and the resize handles. A 09:00 New York meeting shows 09:00 wherever the viewer is.
Every label in your language
DataTable's translations covers every label it renders: sort and filter names, the options menu, row checkboxes, pagination and the filters' own controls. About twenty other components get the same translations prop for their built-in labels.
Contributeurs
| Ada | Staff | 128 | |
| Grace | Student | 64 | |
| Alan | Student | 32 |
1
Changes
- added8
- Password Input#312
Control the reveal state with
visible,defaultVisibleandonVisibleChange(visible), for example one "Show passwords" checkbox driving two fields - Password Input#322
renderToggle={(visible) => …}replaces the eye icon inside the kit's button, andhideToggleremoves the button when another control owns the state - Password Input#312
translations.visibilityTrigger(visible)localizes the reveal button's accessible name - DataTable#331
translationscovers every label: select-all and row checkboxes, sort, filter and resize names, the options menu, filter placeholders, Retry, and the page-size Select and filters it renders - ComboboxSelectAutocomplete#331
A
translationsprop for the built-in trigger, clear, remove, search, increment/decrement and upload labels - NotificationNotifierModal#331
A
translationsprop for the close, dismiss, collapse/expand and region labels;<Notifications />forwards its keys to every toast - Focus#326
focusStyles({ inset: true })draws the ring inside the element, for rows stacked flush in a scroller - Field#329
Fieldtakescompositefor controls with no single labelable element: the label becomes a span and the control is named througharia-labelledby - changed7
- Password Input#323
The reveal toggle is in the Tab order and toggles on Enter, Space and screen-reader activation;
toggleTabIndex={-1}restores the old pointer-only button - Password Input#324
In development, a warning flags a
renderTogglewhose visible text is missing from the button's accessible name, and points totranslations.visibilityTrigger - Combobox#331
Combobox.Root's trigger is named "Show options" by default, the kit's English, instead of zag's "Toggle suggestions" - Schedule#331
Event time ranges are formatted with
IntlformatRange, so the locale merges shared parts ("9:00 – 10:30 AM") and a range that crosses midnight shows its dates - Chart#321
In light mode, chart fills use the 600 step (700 for yellow) and clear the 3:1 non-text contrast minimum. Dark mode is unchanged
- ThemeIconTabsSegment Group#316
The
defaultThemeIcon and thefilledTabs and SegmentGroup tray use the kit's hairline border and quiet fill instead of the gray scale - MultiComboboxListTreeMultiSelect#316
Option checkboxes render exactly like a standalone
Checkbox, including its sizes (mdgrows from 16px to 18px) - fixed11
- CalendarDatePickerDataTable#317
Calendar, DatePicker, DataTable's date filter and Schedule's event details follow
IntlProvider'stimeZone(prop, then provider, then host) instead of always reading the host zone - CalendarDatePicker#327
When the time zone changes, the picked date keeps its instant and is shown in the new zone. Nothing remounts,
onChangedoesn't fire, and focus stays where it was - Schedule#328
With
timeZoneset, chip times, theiraria-labels, the details popover, the now-cursor and the resize handles all read the schedule's zone instead of the host's - Chart#318
color="neutral"no longer renders blue, and a chart with nocolorfollows an ancestor'sdata-colorlike every other component - SpinnerButtonActionIcon#319
Spinner's accessible name comes from
label, andlabel={null}takes it out of the accessibility tree, so loading Buttons and ActionIcons no longer expose an extra "Spinner" image - TreeSelectTreeMultiSelect#325
The trigger is named by the Field label, announces the description or error, and its
aria-controlspoints at the tree - TreeSelectTreeMultiSelectNotification#326
Tree rows and Notification's action, close and collapse buttons show the kit's opaque 2px focus ring instead of a faint translucent one
- Time InputDatePickerSegment Group#329
Time-segment and AM/PM groups take their name from the field label, and DatePicker's range rows are announced as "Start time" and "End time"
- TabsSegment GroupTable#331
Right to left, Tabs and SegmentGroup separators sit between the items, and Table headers align to the start with scroll fades on the correct edge
- Timeline#316
Bullet rings and the gradient bullet's cut-out paint the page background in light mode instead of white
- Choice Card GroupClipboardProgress#320
These entry points ship
"use client", so a Server Component can import them