@saasflare/ui@3.4.0
Minor Changes
-
11eb992: Add data-driven and wizard components plus Button/overlay parity — all additive, no breaking changes.
New components
DataTable+useDataTable— dependency-free, typed data grid built on the Table primitives: typed column defs, client-side single/multi-column sort, row selection (current-page select-all), client-side pagination, density, sticky header, loading/empty states, and a documentedmanualSort/manualPaginationescape hatch for server-side / TanStack. Sort + select + paginate in ~15 LOC with zero extra dependencies.MultiSelect— searchable multi-select (Popover + cmdk) with chips, select-all,max,+N morecollapse, and async option loading viaonSearchChange. Plainstring[]value.Stepper+useStepper(+StepperNav/StepperPanel/StepperContent) — a controlled multi-step wizard over the existing visualSteps: linear / non-linear flow, optional steps, and an async validation gate before advancing. The headlessuseStepperhook composes with the bareStepsindicator too.DataPagination+paginationSummary— total-driven pagination convenience: prev/next, numbered pages with ellipsis, an optional page-size selector, and an "X–Y of N" summary. One component wires a whole table footer.
API parity additions
Button— new optionalstartContent,endContent,isLoading,isIconOnly, andspinnerPlacementprops (StatefulButtonnow delegates its loading state toButton.isLoading).- Overlays —
DialogContentgainsshowCloseButton(defaults to current behavior);PopoverArrow,TooltipArrow, andHoverCardArrowsub-components added for the floating overlays. Stepgains an additive optionaloptionalprop.
-
11eb992: Make the
SaasflareComponentPropscontract consistent across the catalog, fix verified correctness bugs, and clean up quality issues. Additive — no public API removed or renamed.Contract consistency — every visibly-rendering component now extends
SaasflareComponentPropsand resolvessurface/radius/animated/iconWeightviauseSaasflareProps, emitting thedata-surface/data-radius/data-animatedattributes (coverage went from ~91 to 131 files). Concretely this fixes three systemic gaps:- Motion kill-switch — ~15 JS-motion components (e.g.
HeroVideoDialog,Dock,Timeline,GalleryLightbox,AnimatedTooltip,BentoGridItem) gated only onuseReducedMotion()and silently ignoredanimated={false}; they now honor it viauseSaasflareMotion. data-animatedemission — CSS-motion components (Toggle,Avatar,Sheet,StatCard,TeamCard,TestimonialCard,TagInput,FeatureCard, …) now emit the attribute so the per-component motion gate actually engages.- Off-contract primitives —
Separator,Label,Kbd,Item,ButtonGroup,GradientText, and others now accept the standard axes.
Correctness fixes (44 verified) — including 3
Math.random()SSR-hydration bugs replaced withuseId()(sidebar skeleton,Ratingclip-path, animatedbeamgradient),CommandDialoga11y nesting,AppIcondropping its ref/props,Formhook-order,MouseGradientBlobglobal selector, animatedcursorlistener leak, and missing"use client"onStatCard/TeamCard/Empty/FeatureCard(RSC crash).Quality — replaced hardcoded colors with design tokens (brand colors preserved), swapped reimplemented inline
<svg>icons for Phosphor icons that honoriconWeight(e.g.Stepscheckmark), removed 3 empty stub files, and corrected stale@module/ "Framer Motion" doc labels. Also fixed thesocial-buttonregistry description, which incorrectly advertised 16 providers (it supports 5; the 16-provider component isSocialAuthButton).Documentation — the docs catalog + shadcn registry now also cover 9 previously-undocumented public exports (
Sidebarsystem,SocialAuthButton,StatefulButton,ThemeModeToggle,ThemeModeMultiToggle,UserAvatar,TopLoadingBar,ScrollToTopButton,AnimatedTooltip), so every shipped export now has a props table, demos, and an installable registry block. - Motion kill-switch — ~15 JS-motion components (e.g.