[Render Preview] [Feature] Toggle + ToggleGroup; refactor ThemeToggle
Merged
DJ
5mo ago+1234+1234+0123456789012345678901234567890123456789-240-240-012345678901234567890123456789
Summary
- Adds
RubyUI::Toggle— two-state button (<button aria-pressed>+ optional hidden input). Variants:default/:outline. Sizes:sm/:default/:lg. Mirrors shadcn/ui new-york-v4 Toggle. - Adds
RubyUI::ToggleGroup+RubyUI::ToggleGroupItem— single (radio-like, roving tabindex, WAI-ARIA radiogroup) or multiple (independent toggles). Group owns selection + native form serialization. - Refactors
RubyUI::ThemeToggleto composeToggle(pressed = dark mode); removesSetDarkMode/SetLightModehelpers (breaking — gem is copy-paste distribution). - Stimulus controllers for both primitives; no custom CSS; no new gem/npm deps.
- Docs pages, dependencies.yml, sidebar entries, sitemap/llms regenerated.
Test plan
-
cd gem && bundle exec rake— 187 tests, 779 assertions, 0 failures, StandardRB clean -
/docs/togglerenders, all examples interactive -
/docs/toggle_groupsingle (arrow keys + space/enter), multiple, disabled -
/docs/theme_toggletoggles theme, persists across reload - Cross-browser visual check
- Screen reader announces radio (single) vs toggle button (multiple/standalone)