Changes in version 0.2.0 (2026-04-21) Ergonomics and discoverability - dash_titles() now accepts simple shiny::icon() inputs in addition to character icon names, and emits a more targeted error when icon= receives an unsupported object. - Added sidebar brand text controls for collapsed and expanded states: collapsed_text_size, expanded_text_size, collapsed_text_weight, and expanded_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 recommended dash_titles() + use_bs4Dashkit_core() workflow. - Added bs4dashkit_demo_app() plus a packaged inst/examples/real-shiny-app/app.R example 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.R as a minimal sidebar verification app and inst/examples/test-all/app.R as 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_text is 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 = NULL for 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 when app_name is 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, and expanded_text interact across collapsed, hover-expanded, and expanded sidebar states - documented 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 Changes in version 0.1.0 (2026-03-10) Initial release - Added dash_titles() as a unified constructor for brand and sidebar configuration. Returns $app_name, $brand, and $deps for placement in bs4DashPage(), bs4DashNavbar(), and bs4DashBody(). - 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 overrides - use_dash_theme_preset() for applying named presets - bs4dashkit_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 via dash_titles(). - Added support for image-based brand icons via icon_img and icon_shape. - Added navbar utilities: - dash_nav_title() - dash_nav_item() - dash_nav_refresh_button() - dash_nav_help_button() - dash_user_menu() - Added dash_footer()with independently positional logo and text elements. - Added global options: - bs4Dashkit.sidebar.collapsed - bs4Dashkit.sidebar.expanded - bs4Dashkit.brand_divider - bs4Dashkit.theme_preset - bs4Dashkit.accent