bs4Dashkit 0.3.0
Navbar ergonomics
-
Added complete navbar item helpers for safer
bs4DashNavbar(rightUi = ...)usage: Added
dash_nav_status_badge()for compact navbar status indicators.Added
validate_bs4dash_navbar()to catch common custom navbar structure mistakes, including<li>children missing the required"dropdown"class.Kept
dash_nav_help_button()anddash_nav_refresh_button()as lower-level button builders for custom wrappers.
Branding and layout
Added
dash_brand_options()anddash_titles_from()so shared brand configuration can be reused across app families without growing eachdash_titles()call.Added prototype top-navigation support with
use_dash_topnav()anduse_bs4Dashkit_core(layout = "topnav"). The sidebar menu remains the source of truth and is mirrored into the navbar sobs4TabItems(),input$sidebar,updateTabItems(), and bookmarking can keep using native bs4Dash wiring.Top-navigation tabs can now be aligned left, center, or right with
align/topnav_align, and spaced withgap/topnav_gap.Added
dash_topnav_options()so production apps can pass one compacttopnav = ...object touse_bs4Dashkit_core(layout = "topnav")instead of a long run oftopnav_*arguments.Top-navigation mode now includes an animated active underline, mobile hamburger behavior, optional pill and compact tab styles, optional
Moreoverflow, centered title auto-compact/hide behavior, keyboard navigation, optional active page-title sync, a Shiny click event atinput$bs4dashkit_topnav, and a debug outline mode.use_bs4Dashkit_core()anduse_dash_sidebar_behavior()now accept explicit CSS lengths fortopbar_h,collapsed_w, andexpanded_w, such as"56px","4.25rem", and"270px". Existing numeric values remain supported with their historical default units.Removed the
digestimport; scoped brand CSS now uses a tiny internal ID counter.
bs4Dashkit 0.2.1
Hardened generated JavaScript by encoding dynamic sidebar brand strings as JSON literals.
Added validation for CSS values used in theme, brand, and sidebar helpers before they are emitted into HTML/style blocks.
Reused sidebar dimension validation for direct
use_dash_sidebar_behavior()calls.Removed unused package metadata and cleaned unnecessary source comments.
Added regression tests for JavaScript escaping, CSS validation, and direct sidebar dimension validation.
Added a packaged hardening regression example app that exercises JavaScript label escaping, CSS validation, sidebar dimensions, runtime DOM tracing, and visual theme fixtures.
bs4Dashkit 0.2.0
CRAN release: 2026-04-21
Ergonomics and discoverability
dash_titles()now accepts simpleshiny::icon()inputs in addition to character icon names, and emits a more targeted error whenicon=receives an unsupported object.Added sidebar brand text controls for collapsed and expanded states:
collapsed_text_size,expanded_text_size,collapsed_text_weight, andexpanded_text_weight.Added
bs4dashkit_theme_presets()to list shipped theme presets and improved unknown-preset errors to enumerate valid choices.Polished the built-in theme presets so they style navbar, sidebar, footer, link, and status colors more coherently, and extended
bs4dashkit_theme_presets(values = TRUE)to expose the shipped preset tokens for inspection and customization.Added
bs4dashkit_example_app()as a minimal runnable example of the recommendeddash_titles()+use_bs4Dashkit_core()workflow.Added
bs4dashkit_demo_app()plus a packagedinst/examples/real-shiny-app/app.Rexample for interactively testing sidebar brand states, hover-expand behavior, presets, navbar controls, and footer styling together. The packaged example now contains the full standalone app code directly.Added
inst/examples/sidebar-smoke-test/app.Ras a minimal sidebar verification app andinst/examples/test-all/app.Ras a heavier end-to-end stress test for branding, sidebar, navbar, theme, and footer features.Refined sidebar brand state handling so hover-expanded sidebars use the expanded text rules consistently,
brand_textis treated as the default expanded label, and icon-requested states fall back more gracefully when no icon is supplied.Fixed reactive sidebar mode updates by clearing stale collapsed/expanded body classes before applying the current mode and cleaning up old observers and hover listeners before installing new ones.
Fixed collapsed and expanded sidebar text sizing and weight controls so live updates consistently win over AdminLTE defaults, and centered the collapsed
"text-only"label layout.Allowed
brand_text = NULLfor fully icon-only brands when both sidebar states are"icon-only"and an icon or image brand is supplied, with a browser-title fallback warning whenapp_nameis omitted.Improved
dash_nav_title()centering so the title stays visually centered as the viewport and surrounding navbar content change, and added left/center/right alignment controls to the interactive demo.
Documentation and package polish
-
Updated README and vignettes to match the shipped API:
removed references to the non-existent
dash_nav_logout_button()aligned documentation with the current preset names
"professional","modern", and"dark-lite"clarified preset discoverability and the recommended body-level placement of
use_bs4Dashkit_core()clarified how
brand_text,collapsed_text, andexpanded_textinteract across collapsed, hover-expanded, and expanded sidebar statesdocumented the textless icon-only brand path, the automatic sidebar mirroring of
bs4DashNavbar(title = ttl$brand), and the shipped example apps for smoke testing and full feature testing
Testing
-
Expanded test coverage for:
icon normalization in
dash_titles()targeted validation errors for invalid icon objects
collapsed and expanded sidebar brand text styling controls
sidebar mode class resets and cleanup of reactive hover/state listeners
theme preset discovery and preset validation errors
the exported minimal example app helper
bs4Dashkit 0.1.0
CRAN release: 2026-03-10
Initial release
Added
dash_titles()as a unified constructor for brand and sidebar configuration. Returns$app_name,$brand, and$depsfor placement inbs4DashPage(),bs4DashNavbar(), andbs4DashBody().Added
use_bs4Dashkit_core()as the recommended entry point for injecting dependencies, applying a theme preset, and configuring sidebar behavior.-
Added theme support via CSS custom properties:
Presets:
"professional","modern", and"dark-lite"use_dash_theme()for direct CSS variable overridesuse_dash_theme_preset()for applying named presetsbs4dashkit_theme_presets()for inspecting available presets
-
Added configurable sidebar brand modes:
“icon-only”,
"icon-text", and"text-only"Independent configuration for collapsed and expanded states
Added use_dash_sidebar_behavior() for configurable collapsed width, expanded width, and topbar height.
Added
use_dash_sidebar_brand_divider()for optional brand/menu separation.Added brand visual effects (
"glow","shimmer","emboss") and two-color gradients viadash_titles().Added support for image-based brand icons via
icon_imgandicon_shape.-
Added navbar utilities:
Added
dash_footer()with independently positional logo and text elements.-
Added global options:
bs4Dashkit.sidebar.collapsedbs4Dashkit.sidebar.expandedbs4Dashkit.brand_dividerbs4Dashkit.theme_presetbs4Dashkit.accent
