From f14cbba7196c97b65e33f899bec9b7a643b5f43f Mon Sep 17 00:00:00 2001 From: Seth Horsley Date: Thu, 10 Apr 2025 14:42:37 +0200 Subject: [PATCH] split theme components from slot to components --- lib/ruby_ui/theme_toggle/set_dark_mode.rb | 16 +++++++++++ lib/ruby_ui/theme_toggle/set_light_mode.rb | 16 +++++++++++ lib/ruby_ui/theme_toggle/theme_toggle.rb | 32 ---------------------- test/ruby_ui/theme_toggle_test.rb | 4 +-- 4 files changed, 34 insertions(+), 34 deletions(-) create mode 100644 lib/ruby_ui/theme_toggle/set_dark_mode.rb create mode 100644 lib/ruby_ui/theme_toggle/set_light_mode.rb diff --git a/lib/ruby_ui/theme_toggle/set_dark_mode.rb b/lib/ruby_ui/theme_toggle/set_dark_mode.rb new file mode 100644 index 00000000..65019f06 --- /dev/null +++ b/lib/ruby_ui/theme_toggle/set_dark_mode.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module RubyUI + class SetDarkMode < ThemeToggle + def view_template(&) + div(**attrs, &) + end + + def default_attrs + { + class: "hidden dark:inline-block", + data: {controller: "ruby-ui--theme-toggle", action: "click->ruby-ui--theme-toggle#setLightTheme"} + } + end + end +end diff --git a/lib/ruby_ui/theme_toggle/set_light_mode.rb b/lib/ruby_ui/theme_toggle/set_light_mode.rb new file mode 100644 index 00000000..205b0224 --- /dev/null +++ b/lib/ruby_ui/theme_toggle/set_light_mode.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module RubyUI + class SetLightMode < ThemeToggle + def view_template(&) + div(**attrs, &) + end + + def default_attrs + { + class: "dark:hidden", + data: {controller: "ruby-ui--theme-toggle", action: "click->ruby-ui--theme-toggle#setDarkTheme"} + } + end + end +end diff --git a/lib/ruby_ui/theme_toggle/theme_toggle.rb b/lib/ruby_ui/theme_toggle/theme_toggle.rb index a667c1aa..000f8054 100644 --- a/lib/ruby_ui/theme_toggle/theme_toggle.rb +++ b/lib/ruby_ui/theme_toggle/theme_toggle.rb @@ -5,37 +5,5 @@ class ThemeToggle < Base def view_template(&) div(**attrs, &) end - - def light_mode(**user_attrs, &) - light_attrs = mix(default_light_attrs, user_attrs) - div(**light_attrs, &) - end - - def dark_mode(**user_attrs, &) - dark_attrs = mix(default_dark_attrs, user_attrs) - div(**dark_attrs, &) - end - - private - - def default_attrs - { - data: {controller: "ruby-ui--theme-toggle"} - } - end - - def default_light_attrs - { - class: "dark:hidden", - data: {action: "click->ruby-ui--theme-toggle#setDarkTheme"} - } - end - - def default_dark_attrs - { - class: "hidden dark:inline-block", - data: {action: "click->ruby-ui--theme-toggle#setLightTheme"} - } - end end end diff --git a/test/ruby_ui/theme_toggle_test.rb b/test/ruby_ui/theme_toggle_test.rb index 42a59c00..3ad57de8 100644 --- a/test/ruby_ui/theme_toggle_test.rb +++ b/test/ruby_ui/theme_toggle_test.rb @@ -6,11 +6,11 @@ class RubyUI::ThemeToggleTest < ComponentTest def test_render_with_all_items output = phlex do RubyUI.ThemeToggle do |toggle| - toggle.light_mode do + RubyUI.SetLightMode do RubyUI.Button(variant: :primary) { "Light" } end - toggle.dark_mode do + RubyUI.SetDarkMode do RubyUI.Button(variant: :primary) { "Dark" } end end