v1.15
v1.15.0
-
Chip (new) — Compact element similar to Tag, but with the delete button rendered inside the chip itself. Supports all Tag features: colors, sizes, rounded, light variants, custom colors,
onClickandonRemove. -
Multiselect (updated)
- Removed
displayModeandtagsConfigprops. - Added
resultDisplayConfigprop ("default"|MultiselectResultAsChipDisplayConfig)."default"preserves existing behavior (summary text like "3 items selected"). When a chip config object is provided, selected items are rendered as removableChipcomponents. - Chip config supports
position:"label"renders chips inside the dropdown trigger with auto-expanding height;"belowLabel"renders chips below the standard label. - Chip config extends
ChipProps(minuscontent,size,onRemove) — supportsstyle,rounded,lightColor,customColor,className,data, etc. - Added optional
containerClassNamefor custom styling of the chips container.
- Removed
-
DateInput (new) — Date input field with masked manual entry and Calendar popover. Supports configurable format (
dd.MM.yyyy,MM/dd/yyyy, etc.), automatic separator insertion, per-character validation (rejects impossible dates like30.57), min/max date constraints, locale, all standard input props (sizes, colors, rounded, disabled, readonly, label, hint, validation). Calendar opens on click and closes on date selection or Escape. -
Date primitive (deprecated) — The native
<input type="date">wrapper is deprecated since v1.15. UseDateInputinstead. Will be removed in v1.16. -
TreeView (new) — Hierarchical tree component for displaying nested data (file explorers, org charts, category trees). Supports expand/collapse, single and multi-selection with parent ↔ child propagation, optional checkboxes with indeterminate state, and full keyboard navigation (arrows, Enter, Space). Uncontrolled by default; becomes controlled when
expandedIds/selectedIdsare provided. -
Popover (new) — Lightweight floating panel anchored to a trigger element; useful for rich tooltips, mini-forms or contextual actions. Compound component:
Popover.Trigger+Popover.Content. Uncontrolled by default; becomes controlled withvisible+onToggle. -
DateRangePicker (new) — Calendar-based date range selector for booking, reporting and filtering flows. First click sets start, second sets end; live hover preview between dates. Fully controlled.
-
Spinner (new) — Loading indicator for async operations and pending states.
-
EmptyState (new) — Placeholder for empty lists, search results or pages with no data.
-
Stat (new) — KPI / statistics display card for dashboards. Shows a primary metric value with label, optional icon badge and trend indicator (up/down/neutral).
-
OtpInput (new) — One-time password / PIN input rendered as a row of single-character cells. Supports paste, Backspace navigation and arrow keys between cells.
-
Rating (new) — Star-based rating input for reviews and feedback forms. Supports half-star increments and read-only display mode.
-
SegmentedControl (new) — Pill-style option selector (tab bar alternative) for switching between a small set of values. Fully controlled.
-
ImageViewer (new) — Lightbox-style fullscreen overlay for viewing single images and galleries. Supports keyboard navigation and closes on Escape. Fully controlled (
visible+onClose). -
Menu (new) — Vertical navigation sidebar based on Bulma
.menu. Supports grouped sections, icons, active item highlight and disabled items. -
Skeleton (new) — Shimmer placeholders for content loading states. Compound component with sub-variants:
Skeleton.Text,Skeleton.Block,Skeleton.Avatar,Skeleton.Button. -
Notification (new) — Toast-like notification system with auto-close and stacking. Requires
NotificationContainer.Provideras a wrapper around the app/subtree. Programmatic control viauseNotification()hook (add,remove,clear). -
TagGroup (new) — Editable tag list for label management, filtering and multi-value inputs. Supports add/remove, duplicate prevention, configurable confirm keys and max tag limit.
-
Tag (updated)
- Added
onRemove?: () => void— when provided, the component wraps itself in a<div class="tags has-addons">and appends anis-deletespan. The delete span receives the same size class as the tag so they always scale together.
- Added
-
ContextMenu (new) — Right-click context menu for any element. Rendered via portal into
<body>, auto-flips when near viewport edges. Closes on outside click, Escape or scroll. -
ConfirmDialog (new) — Focused confirmation modal for destructive or important actions. Supports async confirm with loading state.
cancellablemode prevents closing via backdrop/Escape — user must click a button. -
Carousel (new) — Slides carousel for image galleries, banners and onboarding flows. Supports Fade and Slide effects, auto-play, loop, dots and arrow navigation. Uncontrolled by default; becomes controlled with
activeIndex+onChange. -
Alert (new) — Styled message banner for informational, warning or error notices. Optional closable header.
-
AutoComplete (new) — Text input with dropdown suggestions for search and selection. Supports static items (local filter) and async
onSearchfor server-side lookup. Blur validation auto-selects on exact/prefix match or shows an error underline. -
Badge (new) — Overlay indicator (counter or dot) rendered on the top-right corner of any child element. Useful for unread counts, "new" markers and notification badges.
-
animations.scss (new)
- Standalone global animation stylesheet (
src/animations.scss) — import once at the app entry point, then apply animations viaclassNameon any element. - Infinite (support pause via
bbr-anim-paused):bbr-pulse,bbr-spin,bbr-spin-reverse,bbr-bounce,bbr-heartbeat,bbr-float,bbr-wobble. - One-time (re-trigger by changing React
key):bbr-shake,bbr-fade-in,bbr-pop,bbr-flip,bbr-rubber-band,bbr-tada,bbr-zoom-in,bbr-slide-in-left,bbr-slide-in-right,bbr-slide-in-down. bbr-anim-paused— pauses any running animation viaanimation-play-state: paused.
- Standalone global animation stylesheet (
-
Avatar (new) — User avatar component with automatic fallback chain: image → initials → icon. Supports status indicator dot (Online/Away/Offline) and multiple shapes (circle, square, rounded square).
-
Calendar (new) — Standalone date-picker panel with day-grid, month-picker and year-picker views. Supports locale, min/max date range, optional Today and Clear footer buttons. Pre-selected value outside min/max is auto-cleared on mount.
-
Card (new) — Generic content container. Compound component with optional
Card.Header,Card.BodyandCard.Footersub-components in any combination. -
Toast (new) — Inline or fixed-position notification banner. Supports auto-close and color variants. Use
fixed+positionfor viewport-anchored toasts. -
Tooltip (new) — Hover/click-triggered popup for contextual hints and help text. Compound component:
Tooltip.Hint(content) +Tooltip.Target(anchor). Supports Fade/Slide animation, configurable close behavior (MouseLeave, OutsideClick, Manual) and controlled mode. -
SidePanel (new) — Sliding side panel with backdrop overlay for detail views, settings and filters. Compound component:
SidePanel.Title+SidePanel.Body. Closes on Escape and backdrop click. -
ModalWrapper (extended)
- Added compound component pattern:
ModalWrapper.Header,ModalWrapper.Body,ModalWrapper.Footer. - Only
ModalWrapper.Bodyis required;ModalWrapper.HeaderandModalWrapper.Footerare optional. - When
ModalWrapper.Bodyis detected in children, compound mode activates automatically — legacytitle/actionsprops are ignored. No breaking change. ModalWrapper.Headerrenders a fully customizablemodal-card-head— add any content, extra buttons, or icons.ModalWrapper.Footerrenders amodal-card-footwith arbitrary content instead of theactionsbutton array.- Added
showMaximizeButtonprop (defaultfalse) — renders a maximize / restore icon button (arrows-angle-expand/arrows-angle-contract) to the left of the close button. - Maximize stretches the modal card to
95vw × 95vh; restore returns it to its original size. Both transitions are animated. actionsprop is now optional (defaults to empty array); no breaking change.
- Added compound component pattern:
New hooks
- useDebounce (new) — returns a debounced copy of
valuethat only updates afterdelayms of inactivity. - useDebounceHandler (new) — wraps an async handler and returns
[canFire, fire];canFireisfalsefordebounceTimeseconds after each invocation. - usePrevious (new) — stores and returns the previous render's value of any state or prop; returns
undefinedon the first render. - useUpdateEffect (new) — identical to
useEffectbut skips execution on the initial render. - useTimeout (new) — fires
callbackonce afterdelayms; passnullto disable. Auto-clears on unmount or delay change. - useInterval (new) — repeats
callbackeverydelayms; passnullto pause without unmounting. Auto-clears on unmount. - useEventListener (new) — attaches a typed event listener to
window(default) or anyHTMLElement/Document; cleans up automatically. - useLocalStorage (new) —
useState-like hook that persists its value tolocalStorage; initialises from storage on first render. - useSessionStorage (new) — mirrors
useLocalStorageAPI but usessessionStorage; value is cleared when the tab is closed. - useClipboard (new) — copies text to the clipboard via the Clipboard API; exposes
{ copy, copied, reset }.copiedresets automatically afterresetDelayms (default2000). - useKeyPress (new) — tracks whether a specific
KeyboardEvent.keyis currently held down; returnsboolean. - useFocus (new) — returns
[ref, isFocused]; attachrefto any element to reactively track its focus state. - useWindowSize (new) — reactively tracks
{ width, height }of the browser viewport; updates on everyresizeevent.