Browse docs
Browse docs
Released 2026-06-18 · Sprint 4.4
Note on
1.1.0—@dashforge/[email protected]was published briefly on 2026-06-18 and immediately unpublished due to a packaging bug (a stale 10 MB tarball had been included inside the published npm package — same code worked, just an oversized download).1.1.1ships the identical Sprint 4.4 code with the packaging fixed — tarball dropped from 11.2 MB to ~310 KB (-97 %). If you triednpm install @dashforge/[email protected]in that brief window, just bump to^1.1.1.
First minor release on the stable line. Adds nine presentational
primitives, rolls the Dashforge bridge contract (access +
visibleWhen) out to every interactive component shipped to date,
and consolidates two prior-release components (<Button>,
Table <RenderChip>) onto the new primitives to enforce DRY.
The release introduces one visual breaking change scoped to
<Snackbar> (no API surface change — same call sites continue to
work) and is otherwise a drop-in upgrade from 1.0.0.
| Package | What changed |
|---|---|
@dashforge/tw | 1.0.0 → 1.1.0. Nine new components + universal bridge alignment. Snackbar visual refresh. Detail in the per-package CHANGELOG.md. |
Sister packages (@dashforge/tw-theme, @dashforge/tw-tokens) stay
on 1.0.0 — no changes required.
<Alert> + <AlertTitle> — inline persistent status surface,
companion to <Snackbar>'s transient toast. Full MUI Alert API
parity. Single divergence: severity="danger" (token-aligned)
instead of MUI's "error".<IconButton> — icon-only action surface, shares the same
variant axis as <Button> (solid / outline / ghost / link).
Required aria-label enforced at the TypeScript level.<Chip> — inline status / filter pill. 3×7 variant matrix
(soft / solid / outline × 6 semantic colors + neutral). Full MUI
Chip API (label, icon, avatar, clickable, onClick, onDelete,
selected). The Table <RenderChip> cell now wraps <Chip>.<Card> + <CardContent> + <CardActionArea> — opinionated
<Box> alias for card surfaces. Three variants (outlined /
elevated / plain). Inherits Box's full access + visibleWhen
support transparently.<Avatar> + <AvatarGroup> — identity surface with a 4-step
fallback chain (src → auto-initials from name → custom
fallbackIcon → generic SVG). Type-safe color + tone from the
token palette. AvatarGroup handles overflow (+N) and size
propagation.<Spinner> — dedicated loading indicator with size, color,
thickness, opt-in track ring, and an anti-flash delay prop
(Atlaskit-style). <Button> and <IconButton> loading states
now delegate to <Spinner>.<Badge> — anchored indicator wrapper. content / dot / max
(default 99 → "99+") / placement (4 corners) / overlap
(rectangular | circular).<Menu> family — <Menu> + <MenuTrigger> + <MenuContent>
<MenuItem> + <MenuLabel> + <MenuSeparator> +
<MenuSkeleton>. Built on @radix-ui/react-dropdown-menu with
full WAI-ARIA menu pattern, keyboard navigation, lazy portal
mount, and React.memo-wrapped items (Atlaskit perf pattern).Sprint 4.4 establishes a contract for every interactive component
shipped by @dashforge/tw: it supports access (RBAC) and
visibleWhen (engine-reactive predicate) props with the same
contract as <TextField> / <Checkbox> / etc. This release
retrofits <Button> + <IconButton> + <Box> (which lacked the
props before this sprint), bringing every interactive primitive in
the catalog to 100 % bridge coverage.
_shared/severity/ foundationA new internal module that centralises the 3×4 (variant × severity)
color matrix + 4 inline severity SVG icons. Consumed by <Alert>
and the refactored <Snackbar> (and future Banner / status
indicators). Every cell is token-driven via dashforgePreset() —
zero hardcoded hex, no dark: variants on neutral.
<Snackbar> visual refresh<Snackbar> adopts the same 3-variant severity surface as
<Alert> (standard / filled / outlined), with standard
(soft tinted) as the new default. Previously severity discriminated
only border + icon colour; the surface stayed neutral. The new
default visually communicates severity at first glance.
Other visual changes:
ⓘ ✓ ⚠ ✕) replaced with inline stroke SVG
shared with <Alert>.severity="info" now uses the dedicated info-* token scale
(previously aliased to primary-* — inadvertent inconsistency).× Unicode to inline SVG.No API surface change. Existing call sites continue to work.
Consumers who want the closest visual match to 1.0.x can pass
variant="outlined" on each enqueue() or set
<SnackbarProvider defaults={{ variant: 'outlined' }}>.
Drop-in upgrade for everything except the Snackbar visual surface.
pnpm update @dashforge/twTo preserve the 1.0.x Snackbar look-and-feel:
<SnackbarProvider defaults={{ variant: 'outlined' }}>
{/* your app */}
</SnackbarProvider>| Peer | Required range |
|---|---|
react | ^18.0.0 || ^19.0.0 |
react-dom | ^18.0.0 || ^19.0.0 |
tailwindcss | ^3.4.0 |
@dashforge/tw-theme | ^1.0.0 |
@dashforge/tw-tokens | ^1.0.0 |
@dashforge/forms | ^1.0.0 |
@dashforge/ui-core | ^1.0.0 |
@dashforge/rbac | ^1.0.0 |
New runtime dep: @radix-ui/react-dropdown-menu ^2.1.0 (powers
<Menu>).