v0.90.0: ExpandableRow graduation, a ListToolbar menu facet, formatPhone
0.90.0
Added
ExpandableRowgraduates into theadmin-toolkitsubpath (second consumer landed:
aksailingclub-org's ownsrc/admin-club/toolkit/ExpandableRow.svelte), carrying three visual
fixes from the Members-refinement audit: the summary row's hover wash now reaches the sticky
trigger cell with its own opaque tint (a transparent-based wash would let content scrolling
underneath a pinned column show through); the trigger cell follows zebra parity
(base-200on striped rows) instead of a hardcodedbase-100, closing the right-edge seam;
and the expanded panel's<td>getsbackground: var(--color-base-300)with an inset
top-border, so the drawer reads as its own surface instead of merging with the zebra stripe.
All of the component's contracts (colspan mechanics, the 390 column-hiding pattern,
aria-expanded/keyboard behavior) are unchanged.ListToolbargains adisplay: 'menu'filter variant: a quiet bordered button showing the
facet's name at rest ("Standing") and its applied value in-control ("Standing: Overdue") with
a separate inline clear affordance, opening a keyboard-operable option list (focus moves to
the first option on open, Escape and outside-pointerdown close it, only one facet stays open
at a time). The existing'select'variant is unchanged behaviorally and now shares the same
30px control height and 13px text as every other control in the row.formatPhone(phone: string): stringjoins theadmin-toolkitformatters: a stored E.164 NANP
number (+19075550100) renders as the hyphenated907-555-0100for a table cell; anything
outside that shape passes through unchanged.
Changed
ListToolbar's controls row recomposes from a rigidrepeat(auto-fill, minmax(11rem, 1fr))
grid to a wrapped flex row (searchflex: 1 1 240px), so five promoted facets plus search fit
one line at a realistic container width and wrap cleanly at narrow widths instead of forcing
ragged per-cell wrapping. The applied-pills row is retired;computeAppliedFiltersnow only
feeds the count line. The 13px count line gainstabular-nums, as doesPagination's range
line.StatusChip's border demotes frombadge-outline's full-strengthcurrentColor(which read
as a clickable button) tocolor-mix(in oklab, currentColor 35%, transparent), the value
verified against zebra stripes in both themes; thesmsize keeps its5remmin-width floor.OfficeList's header stack (eyebrow/title/subtitle) no longer leaks the browser's default
h1/pmargins past its owngap-0.5(flex does not collapse child margins), so the
rendered gaps settle to the intended few px instead of a ~32px leak; the header's action slot
no longer stretches full-width below thesmbreakpoint.- cairn's own
ConceptListcreate-button label now resolves its singular noun through the same
itemNoungrammarPaginationandListToolbaruse, instead of a bespoke fallback, so a
concept that only declares a plurallabel(the showcase'spages, before this change) no
longer reads "New Pages" where "New Page" was intended.
No consumer action is required. ExpandableRow and formatPhone are new, additive exports;
ListToolbar's 'menu' display value widens an existing string union; every other change is a
visual refinement inside cairn's own admin-toolkit and built-in admin screens.