[Render Preview] [Feature] Toggle + ToggleGroup; refactor ThemeToggle

Merged
DJ
5mo ago
+1234-240

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::ThemeToggle to compose Toggle (pressed = dark mode); removes SetDarkMode / SetLightMode helpers (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/toggle renders, all examples interactive
  • /docs/toggle_group single (arrow keys + space/enter), multiple, disabled
  • /docs/theme_toggle toggles theme, persists across reload
  • Cross-browser visual check
  • Screen reader announces radio (single) vs toggle button (multiple/standalone)