Releases: bodynar/bodynarf.react-components
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 tex...
v1.14
-
ModalWrapper (new)
- Added new modal window wrapper component based on Bulma modal.
- Supports
title,size,className,dataprops. - Action buttons in footer via
actionsprop (array of ButtonProps). - Close behavior options:
showCloseButton,closeOnBackgroundClick,closeOnEscape. - Keyboard support: close on Escape, optional
onEnterPresshandler.
-
Number
- Added the
resetToDefaultOnBlurprop: when enabled, resets the value todefaultValue(or0if not specified) on focus out if the field is empty.
- Added the
-
Search
- Added optional search icon (magnifying glass) via
showIconprop. Icon size matches the input field size.
- Added optional search icon (magnifying glass) via
-
Switch (new)
- Added new toggle/switch component with Bulma styling.
- Supports
size,style(color),label,name,onValueChange,defaultValue,classNameprops. - Additional style options:
rounded(pill shape),outlined,thin,rtl(right-to-left mode). - Supports form label mode via
isFormLabelprop.
-
Slider (new)
- Added new range/slider component with Bulma styling.
- Supports
min,max,step,size,style(color),defaultValue,onValueChange,classNameprops. - Additional options:
showValue(tooltip with current value),showMinMax(min/max labels),showProgress(filled track). - Supports vertical mode via
verticalprop with configurable height. - Circle style thumb available via
circleprop. - Added
valuePositionprop to position the value tooltip below the slider ("bottom") in horizontal mode. - Tooltip positioning now adjusts based on thumb size for all sizes (Small, Normal, Medium, Large).
- Custom value formatting via
valueFormattercallback.
-
RadioGroup (new)
- Added new radio group component for single selection from multiple options.
- Supports
items,value,onValueChange,size,style(color),name,classNameprops. - Additional style options:
horizontal(row layout),block(filled background),circle,withoutBorder,hasBackgroundColor. - Each item can be individually disabled.
-
Stepper (new)
- Added new stepper/progress indicator component for multi-step workflows.
- Supports
steps,currentStep,size,color,classNameprops. - Additional options:
vertical(vertical layout),showNumbers(step numbers vs checkmarks),showConnectors(lines between steps),animated(connector animations). - Clickable steps support via
clickableandonStepClickprops for navigating to completed steps. - Each step can have a title, description, and optional custom icon.
-
Timeline (new)
- Added new timeline component for displaying chronological events.
- Supports
items,size,color,classNameprops. - Layout options:
leftAligned(default, markers on left) or centered mode with alternating content. - Additional options:
showConnectors,animated(fade-in animation),hollow(outlined markers). - Supports
showTimestampsSeparatefor displaying timestamps on opposite side in centered mode. - Each item can have title, content, timestamp, icon, marker, and individual color override.
-
TimePicker (new)
- Added new time input component for hours/minutes/seconds selection.
- Supports
defaultValue,onValueChange,size,style,name,classNameprops. - Time value represented as object with
hours,minutes, and optionalsecondsfields. - Additional options:
showSeconds(enable seconds input),step(value increment in seconds),min,max(time range limits). - Supports all standard input features:
rounded,loading,disabled,readonly, validation states, labels, and hints.
v1.10
What's Changed
- #11 add no data option to dropdown by @bodynar in #12
- Feature/#8 add search to dropdown by @bodynar in #14
- #18 add missed table styles, update heading structure by @bodynar in #19
- Feature/update components by @bodynar in #23
- Feature/#22 fix date picker icon by @bodynar in #24
- Feature/#20 add multiselect by @bodynar in #26
Demo: https://bodynar.github.io/bodynarf.react-components/#/home
Full Changelog: v1.9...v1.10
v1.9
What's Changed
- Add new components: BreadCrumbs, Table
- Fix existing components
- Add hint prop to input components
- Add icons for dropdown items
- Add title for dropdown items
Demo: https://bodynar.github.io/bodynarf.react-components/#/home
Full Changelog: v1.8...v1.9
v1.8 Release
I. Add new components:
- Accordion
- Paginator
- Tabs
- Tag
And new controls:
- Checkbox
- Color
- Number
- Password
II. Update existed controls & components
II. Reorganize exports & polish code, fix all known issues
IV. Added the demo project with use-cases of components & controls, deployed at https://bodynar.github.io/bodynarf.react-components/
For all available features - please follow the readme
Initial release
Baseline for components