better_ui 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/better_ui/version.rb +1 -1
- data/spec/components/previews/better_ui/action_messages_component_preview/all_styles.html.erb +17 -0
- data/spec/components/previews/better_ui/action_messages_component_preview/all_variants.html.erb +19 -0
- data/spec/components/previews/better_ui/action_messages_component_preview/auto_dismiss.html.erb +51 -0
- data/spec/components/previews/better_ui/action_messages_component_preview/dismissible.html.erb +19 -0
- data/spec/components/previews/better_ui/action_messages_component_preview/with_title.html.erb +17 -0
- data/spec/components/previews/better_ui/action_messages_component_preview.rb +224 -0
- data/spec/components/previews/better_ui/avatar_component_preview/all_shapes.html.erb +26 -0
- data/spec/components/previews/better_ui/avatar_component_preview/all_sizes.html.erb +24 -0
- data/spec/components/previews/better_ui/avatar_component_preview/all_variants.html.erb +12 -0
- data/spec/components/previews/better_ui/avatar_component_preview/with_initials.html.erb +22 -0
- data/spec/components/previews/better_ui/avatar_component_preview/with_status.html.erb +26 -0
- data/spec/components/previews/better_ui/avatar_component_preview.rb +73 -0
- data/spec/components/previews/better_ui/badge_component_preview/all_sizes.html.erb +29 -0
- data/spec/components/previews/better_ui/badge_component_preview/all_styles.html.erb +26 -0
- data/spec/components/previews/better_ui/badge_component_preview/all_variants.html.erb +14 -0
- data/spec/components/previews/better_ui/badge_component_preview/counter_badges.html.erb +39 -0
- data/spec/components/previews/better_ui/badge_component_preview/dot_badges.html.erb +28 -0
- data/spec/components/previews/better_ui/badge_component_preview.rb +69 -0
- data/spec/components/previews/better_ui/breadcrumb/breadcrumb_component_preview/all_separators.html.erb +47 -0
- data/spec/components/previews/better_ui/breadcrumb/breadcrumb_component_preview/default.html.erb +23 -0
- data/spec/components/previews/better_ui/breadcrumb/breadcrumb_component_preview/with_icons.html.erb +43 -0
- data/spec/components/previews/better_ui/breadcrumb/breadcrumb_component_preview.rb +38 -0
- data/spec/components/previews/better_ui/button_component_preview/all_sizes.html.erb +25 -0
- data/spec/components/previews/better_ui/button_component_preview/all_variants.html.erb +14 -0
- data/spec/components/previews/better_ui/button_component_preview/as_links.html.erb +18 -0
- data/spec/components/previews/better_ui/button_component_preview/auto_loading_submit.html.erb +112 -0
- data/spec/components/previews/better_ui/button_component_preview/external_links.html.erb +61 -0
- data/spec/components/previews/better_ui/button_component_preview/form_integration.html.erb +102 -0
- data/spec/components/previews/better_ui/button_component_preview/interactive.html.erb +149 -0
- data/spec/components/previews/better_ui/button_component_preview/link_states.html.erb +36 -0
- data/spec/components/previews/better_ui/button_component_preview/loading_states.html.erb +62 -0
- data/spec/components/previews/better_ui/button_component_preview/turbo_method_links.html.erb +98 -0
- data/spec/components/previews/better_ui/button_component_preview/with_icons.html.erb +123 -0
- data/spec/components/previews/better_ui/button_component_preview.rb +155 -0
- data/spec/components/previews/better_ui/card_component_preview/all_sizes.html.erb +10 -0
- data/spec/components/previews/better_ui/card_component_preview/all_styles.html.erb +22 -0
- data/spec/components/previews/better_ui/card_component_preview/all_variants.html.erb +10 -0
- data/spec/components/previews/better_ui/card_component_preview.rb +269 -0
- data/spec/components/previews/better_ui/container_component_preview/all_sizes.html.erb +13 -0
- data/spec/components/previews/better_ui/container_component_preview.rb +59 -0
- data/spec/components/previews/better_ui/dialog/alert_component_preview/all_variants.html.erb +17 -0
- data/spec/components/previews/better_ui/dialog/alert_component_preview/custom_button_label.html.erb +14 -0
- data/spec/components/previews/better_ui/dialog/alert_component_preview/default.html.erb +13 -0
- data/spec/components/previews/better_ui/dialog/alert_component_preview/playground.html.erb +16 -0
- data/spec/components/previews/better_ui/dialog/alert_component_preview/without_icon.html.erb +14 -0
- data/spec/components/previews/better_ui/dialog/alert_component_preview.rb +57 -0
- data/spec/components/previews/better_ui/dialog/confirm_component_preview/all_variants.html.erb +17 -0
- data/spec/components/previews/better_ui/dialog/confirm_component_preview/custom_labels.html.erb +15 -0
- data/spec/components/previews/better_ui/dialog/confirm_component_preview/danger_confirm.html.erb +15 -0
- data/spec/components/previews/better_ui/dialog/confirm_component_preview/default.html.erb +13 -0
- data/spec/components/previews/better_ui/dialog/confirm_component_preview/playground.html.erb +17 -0
- data/spec/components/previews/better_ui/dialog/confirm_component_preview.rb +60 -0
- data/spec/components/previews/better_ui/dialog/dialog_component_preview/all_sizes.html.erb +32 -0
- data/spec/components/previews/better_ui/dialog/dialog_component_preview/default.html.erb +34 -0
- data/spec/components/previews/better_ui/dialog/dialog_component_preview/no_close_button.html.erb +28 -0
- data/spec/components/previews/better_ui/dialog/dialog_component_preview/playground.html.erb +39 -0
- data/spec/components/previews/better_ui/dialog/dialog_component_preview/with_all_slots.html.erb +52 -0
- data/spec/components/previews/better_ui/dialog/dialog_component_preview.rb +51 -0
- data/spec/components/previews/better_ui/divider_component_preview/all_styles.html.erb +58 -0
- data/spec/components/previews/better_ui/divider_component_preview/with_labels.html.erb +67 -0
- data/spec/components/previews/better_ui/divider_component_preview.rb +62 -0
- data/spec/components/previews/better_ui/drawer/header_component_preview.rb +169 -0
- data/spec/components/previews/better_ui/drawer/layout_component_preview/complete_layout.html.erb +87 -0
- data/spec/components/previews/better_ui/drawer/layout_component_preview/dark_theme.html.erb +36 -0
- data/spec/components/previews/better_ui/drawer/layout_component_preview/dashboard_example.html.erb +188 -0
- data/spec/components/previews/better_ui/drawer/layout_component_preview/default.html.erb +22 -0
- data/spec/components/previews/better_ui/drawer/layout_component_preview/primary_theme.html.erb +36 -0
- data/spec/components/previews/better_ui/drawer/layout_component_preview/right_sidebar.html.erb +44 -0
- data/spec/components/previews/better_ui/drawer/layout_component_preview/with_header_only.html.erb +20 -0
- data/spec/components/previews/better_ui/drawer/layout_component_preview/with_sidebar_only.html.erb +21 -0
- data/spec/components/previews/better_ui/drawer/layout_component_preview.rb +91 -0
- data/spec/components/previews/better_ui/drawer/nav_group_component_preview/complete_navigation.html.erb +55 -0
- data/spec/components/previews/better_ui/drawer/nav_group_component_preview.rb +163 -0
- data/spec/components/previews/better_ui/drawer/nav_item_component_preview.rb +104 -0
- data/spec/components/previews/better_ui/drawer/sidebar_component_preview.rb +212 -0
- data/spec/components/previews/better_ui/dropdown/dropdown_component_preview/all_sizes.html.erb +19 -0
- data/spec/components/previews/better_ui/dropdown/dropdown_component_preview/default.html.erb +12 -0
- data/spec/components/previews/better_ui/dropdown/dropdown_component_preview/disabled_items.html.erb +14 -0
- data/spec/components/previews/better_ui/dropdown/dropdown_component_preview/placement_options.html.erb +16 -0
- data/spec/components/previews/better_ui/dropdown/dropdown_component_preview/playground.html.erb +35 -0
- data/spec/components/previews/better_ui/dropdown/dropdown_component_preview/with_dividers_and_headers.html.erb +18 -0
- data/spec/components/previews/better_ui/dropdown/dropdown_component_preview/with_icons.html.erb +34 -0
- data/spec/components/previews/better_ui/dropdown/dropdown_component_preview.rb +59 -0
- data/spec/components/previews/better_ui/fa_icon_component_preview/all_sizes.html.erb +17 -0
- data/spec/components/previews/better_ui/fa_icon_component_preview/all_styles.html.erb +19 -0
- data/spec/components/previews/better_ui/fa_icon_component_preview/all_variants.html.erb +26 -0
- data/spec/components/previews/better_ui/fa_icon_component_preview/animations.html.erb +26 -0
- data/spec/components/previews/better_ui/fa_icon_component_preview/transformations.html.erb +88 -0
- data/spec/components/previews/better_ui/fa_icon_component_preview.rb +85 -0
- data/spec/components/previews/better_ui/forms/checkbox_component_preview/all_sizes.html.erb +12 -0
- data/spec/components/previews/better_ui/forms/checkbox_component_preview/all_variants.html.erb +12 -0
- data/spec/components/previews/better_ui/forms/checkbox_component_preview/form_integration.html.erb +32 -0
- data/spec/components/previews/better_ui/forms/checkbox_component_preview.rb +143 -0
- data/spec/components/previews/better_ui/forms/checkbox_group_component_preview/all_variants.html.erb +14 -0
- data/spec/components/previews/better_ui/forms/checkbox_group_component_preview/form_integration.html.erb +47 -0
- data/spec/components/previews/better_ui/forms/checkbox_group_component_preview/orientations.html.erb +34 -0
- data/spec/components/previews/better_ui/forms/checkbox_group_component_preview.rb +150 -0
- data/spec/components/previews/better_ui/forms/number_input_component_preview/all_sizes.html.erb +14 -0
- data/spec/components/previews/better_ui/forms/number_input_component_preview/form_integration.html.erb +45 -0
- data/spec/components/previews/better_ui/forms/number_input_component_preview.rb +211 -0
- data/spec/components/previews/better_ui/forms/password_input_component_preview/all_sizes.html.erb +12 -0
- data/spec/components/previews/better_ui/forms/password_input_component_preview/confirm_password_example.html.erb +29 -0
- data/spec/components/previews/better_ui/forms/password_input_component_preview/form_integration.html.erb +34 -0
- data/spec/components/previews/better_ui/forms/password_input_component_preview.rb +181 -0
- data/spec/components/previews/better_ui/forms/select_component_preview/all_sizes.html.erb +13 -0
- data/spec/components/previews/better_ui/forms/select_component_preview/all_states.html.erb +64 -0
- data/spec/components/previews/better_ui/forms/select_component_preview.rb +167 -0
- data/spec/components/previews/better_ui/forms/text_input_component_preview/all_sizes.html.erb +12 -0
- data/spec/components/previews/better_ui/forms/text_input_component_preview/all_types.html.erb +12 -0
- data/spec/components/previews/better_ui/forms/text_input_component_preview/form_integration.html.erb +33 -0
- data/spec/components/previews/better_ui/forms/text_input_component_preview.rb +247 -0
- data/spec/components/previews/better_ui/forms/textarea_component_preview/all_resize_variants.html.erb +13 -0
- data/spec/components/previews/better_ui/forms/textarea_component_preview/all_sizes.html.erb +12 -0
- data/spec/components/previews/better_ui/forms/textarea_component_preview/form_integration.html.erb +36 -0
- data/spec/components/previews/better_ui/forms/textarea_component_preview.rb +239 -0
- data/spec/components/previews/better_ui/heading_component_preview/all_alignments.html.erb +12 -0
- data/spec/components/previews/better_ui/heading_component_preview/all_levels.html.erb +7 -0
- data/spec/components/previews/better_ui/heading_component_preview/all_variants.html.erb +14 -0
- data/spec/components/previews/better_ui/heading_component_preview.rb +113 -0
- data/spec/components/previews/better_ui/link_component_preview/all_sizes.html.erb +25 -0
- data/spec/components/previews/better_ui/link_component_preview/all_styles.html.erb +14 -0
- data/spec/components/previews/better_ui/link_component_preview/all_variants.html.erb +14 -0
- data/spec/components/previews/better_ui/link_component_preview/with_icons.html.erb +66 -0
- data/spec/components/previews/better_ui/link_component_preview.rb +66 -0
- data/spec/components/previews/better_ui/progress_component_preview/all_sizes.html.erb +15 -0
- data/spec/components/previews/better_ui/progress_component_preview/all_variants.html.erb +11 -0
- data/spec/components/previews/better_ui/progress_component_preview.rb +64 -0
- data/spec/components/previews/better_ui/spinner_component_preview/all_sizes.html.erb +17 -0
- data/spec/components/previews/better_ui/spinner_component_preview/all_variants.html.erb +11 -0
- data/spec/components/previews/better_ui/spinner_component_preview.rb +44 -0
- data/spec/components/previews/better_ui/table/table_component_preview/all_sizes.html.erb +28 -0
- data/spec/components/previews/better_ui/table/table_component_preview/all_variants.html.erb +34 -0
- data/spec/components/previews/better_ui/table/table_component_preview/bordered.html.erb +33 -0
- data/spec/components/previews/better_ui/table/table_component_preview/collection_mode.html.erb +31 -0
- data/spec/components/previews/better_ui/table/table_component_preview/default.html.erb +33 -0
- data/spec/components/previews/better_ui/table/table_component_preview/empty_state.html.erb +36 -0
- data/spec/components/previews/better_ui/table/table_component_preview/highlighted.html.erb +64 -0
- data/spec/components/previews/better_ui/table/table_component_preview/hoverable.html.erb +27 -0
- data/spec/components/previews/better_ui/table/table_component_preview/inside_card.html.erb +173 -0
- data/spec/components/previews/better_ui/table/table_component_preview/sortable.html.erb +44 -0
- data/spec/components/previews/better_ui/table/table_component_preview/striped.html.erb +31 -0
- data/spec/components/previews/better_ui/table/table_component_preview/with_footer.html.erb +40 -0
- data/spec/components/previews/better_ui/table/table_component_preview.rb +79 -0
- data/spec/components/previews/better_ui/tabs/container_component_preview/alignments.html.erb +24 -0
- data/spec/components/previews/better_ui/tabs/container_component_preview/all_sizes.html.erb +24 -0
- data/spec/components/previews/better_ui/tabs/container_component_preview/all_variants.html.erb +24 -0
- data/spec/components/previews/better_ui/tabs/container_component_preview/bordered_style.html.erb +30 -0
- data/spec/components/previews/better_ui/tabs/container_component_preview/default.html.erb +30 -0
- data/spec/components/previews/better_ui/tabs/container_component_preview/disabled_tab.html.erb +65 -0
- data/spec/components/previews/better_ui/tabs/container_component_preview/pills_style.html.erb +34 -0
- data/spec/components/previews/better_ui/tabs/container_component_preview/turbo_mode.html.erb +40 -0
- data/spec/components/previews/better_ui/tabs/container_component_preview/vertical_left.html.erb +38 -0
- data/spec/components/previews/better_ui/tabs/container_component_preview/vertical_right.html.erb +30 -0
- data/spec/components/previews/better_ui/tabs/container_component_preview/with_icons_and_badges.html.erb +71 -0
- data/spec/components/previews/better_ui/tabs/container_component_preview.rb +130 -0
- data/spec/components/previews/better_ui/tag_component_preview/all_styles.html.erb +14 -0
- data/spec/components/previews/better_ui/tag_component_preview/all_variants.html.erb +14 -0
- data/spec/components/previews/better_ui/tag_component_preview/as_links.html.erb +14 -0
- data/spec/components/previews/better_ui/tag_component_preview/dismissible.html.erb +34 -0
- data/spec/components/previews/better_ui/tag_component_preview.rb +56 -0
- data/spec/components/previews/better_ui/tooltip_component_preview/all_positions.html.erb +25 -0
- data/spec/components/previews/better_ui/tooltip_component_preview/variants.html.erb +37 -0
- data/spec/components/previews/better_ui/tooltip_component_preview.rb +40 -0
- metadata +164 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module BetterUi
|
|
4
|
+
module Dropdown
|
|
5
|
+
# @label Dropdown
|
|
6
|
+
class DropdownComponentPreview < ViewComponent::Preview
|
|
7
|
+
# @label Default
|
|
8
|
+
def default
|
|
9
|
+
render_with_template
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# @label All Sizes
|
|
13
|
+
def all_sizes
|
|
14
|
+
render_with_template
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# @label With Icons
|
|
18
|
+
def with_icons
|
|
19
|
+
render_with_template
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# @label With Dividers and Headers
|
|
23
|
+
def with_dividers_and_headers
|
|
24
|
+
render_with_template
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# @label Placement Options
|
|
28
|
+
def placement_options
|
|
29
|
+
render_with_template
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# @label Disabled Items
|
|
33
|
+
def disabled_items
|
|
34
|
+
render_with_template
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# @label Playground
|
|
38
|
+
# @param size select { choices: [sm, md, lg] }
|
|
39
|
+
# @param placement select { choices: [bottom_start, bottom_end, top_start, top_end] }
|
|
40
|
+
# @param shadow select { choices: [none, sm, md, lg, xl] }
|
|
41
|
+
# @param auto_close toggle
|
|
42
|
+
# @param close_on_item_click toggle
|
|
43
|
+
def playground(
|
|
44
|
+
size: :md,
|
|
45
|
+
placement: :bottom_start,
|
|
46
|
+
shadow: :lg,
|
|
47
|
+
auto_close: true,
|
|
48
|
+
close_on_item_click: true
|
|
49
|
+
)
|
|
50
|
+
@size = size.presence&.to_sym || :md
|
|
51
|
+
@placement = placement.presence&.to_sym || :bottom_start
|
|
52
|
+
@shadow = shadow.presence&.to_sym || :lg
|
|
53
|
+
@auto_close = auto_close
|
|
54
|
+
@close_on_item_click = close_on_item_click
|
|
55
|
+
render_with_template
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<div class="p-8">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-6">FontAwesome Icon Sizes</h3>
|
|
3
|
+
|
|
4
|
+
<div class="space-y-6">
|
|
5
|
+
<% (@sizes || BetterUi::FaIconComponent::SIZES.keys).each do |size| %>
|
|
6
|
+
<div class="flex items-center gap-4">
|
|
7
|
+
<span class="w-20 text-sm font-medium text-gray-600 uppercase"><%= size %></span>
|
|
8
|
+
|
|
9
|
+
<div class="flex gap-4 items-center">
|
|
10
|
+
<%= render BetterUi::FaIconComponent.new(name: "user", style: :solid, size: size) %>
|
|
11
|
+
<%= render BetterUi::FaIconComponent.new(name: "heart", style: :solid, size: size, variant: :danger) %>
|
|
12
|
+
<%= render BetterUi::FaIconComponent.new(name: "star", style: :solid, size: size, variant: :warning) %>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
<% end %>
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<div class="p-8 space-y-6">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-4">FontAwesome Icon Styles</h3>
|
|
3
|
+
|
|
4
|
+
<div class="space-y-4">
|
|
5
|
+
<% (@styles || BetterUi::FaIconComponent::STYLES.keys).each do |style| %>
|
|
6
|
+
<div class="flex items-center gap-4">
|
|
7
|
+
<span class="w-24 text-sm font-medium text-gray-600 capitalize"><%= style %></span>
|
|
8
|
+
|
|
9
|
+
<div class="flex gap-4 items-center text-2xl">
|
|
10
|
+
<%= render BetterUi::FaIconComponent.new(name: "user", style: style) %>
|
|
11
|
+
<%= render BetterUi::FaIconComponent.new(name: "heart", style: style) %>
|
|
12
|
+
<%= render BetterUi::FaIconComponent.new(name: "star", style: style) %>
|
|
13
|
+
<%= render BetterUi::FaIconComponent.new(name: "bell", style: style) %>
|
|
14
|
+
<%= render BetterUi::FaIconComponent.new(name: "bookmark", style: style) %>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
<% end %>
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<div class="p-8">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-6">FontAwesome Icon Variants</h3>
|
|
3
|
+
|
|
4
|
+
<div class="space-y-4">
|
|
5
|
+
<div class="flex items-center gap-4 mb-2">
|
|
6
|
+
<span class="w-24 text-sm font-medium text-gray-600">inherit</span>
|
|
7
|
+
<div class="flex gap-4 items-center text-2xl">
|
|
8
|
+
<%= render BetterUi::FaIconComponent.new(name: "user", style: :solid) %>
|
|
9
|
+
<%= render BetterUi::FaIconComponent.new(name: "heart", style: :solid) %>
|
|
10
|
+
<%= render BetterUi::FaIconComponent.new(name: "star", style: :solid) %>
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<% (@variants || BetterUi::ApplicationComponent::VARIANTS.keys).each do |variant| %>
|
|
15
|
+
<div class="flex items-center gap-4">
|
|
16
|
+
<span class="w-24 text-sm font-medium text-gray-600 capitalize"><%= variant %></span>
|
|
17
|
+
|
|
18
|
+
<div class="flex gap-4 items-center text-2xl">
|
|
19
|
+
<%= render BetterUi::FaIconComponent.new(name: "user", style: :solid, variant: variant) %>
|
|
20
|
+
<%= render BetterUi::FaIconComponent.new(name: "heart", style: :solid, variant: variant) %>
|
|
21
|
+
<%= render BetterUi::FaIconComponent.new(name: "star", style: :solid, variant: variant) %>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
<% end %>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<div class="p-8 space-y-8">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-6">FontAwesome Icon Animations</h3>
|
|
3
|
+
|
|
4
|
+
<div class="space-y-6 text-2xl">
|
|
5
|
+
<div class="flex items-center gap-4">
|
|
6
|
+
<span class="w-32 text-sm font-medium text-gray-600">No animation</span>
|
|
7
|
+
<%= render BetterUi::FaIconComponent.new(name: "spinner", style: :solid) %>
|
|
8
|
+
<%= render BetterUi::FaIconComponent.new(name: "gear", style: :solid) %>
|
|
9
|
+
<%= render BetterUi::FaIconComponent.new(name: "circle-notch", style: :solid) %>
|
|
10
|
+
</div>
|
|
11
|
+
|
|
12
|
+
<div class="flex items-center gap-4">
|
|
13
|
+
<span class="w-32 text-sm font-medium text-gray-600">Spin</span>
|
|
14
|
+
<%= render BetterUi::FaIconComponent.new(name: "spinner", style: :solid, spin: true) %>
|
|
15
|
+
<%= render BetterUi::FaIconComponent.new(name: "gear", style: :solid, spin: true) %>
|
|
16
|
+
<%= render BetterUi::FaIconComponent.new(name: "circle-notch", style: :solid, spin: true) %>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<div class="flex items-center gap-4">
|
|
20
|
+
<span class="w-32 text-sm font-medium text-gray-600">Pulse</span>
|
|
21
|
+
<%= render BetterUi::FaIconComponent.new(name: "spinner", style: :solid, pulse: true) %>
|
|
22
|
+
<%= render BetterUi::FaIconComponent.new(name: "gear", style: :solid, pulse: true) %>
|
|
23
|
+
<%= render BetterUi::FaIconComponent.new(name: "circle-notch", style: :solid, pulse: true) %>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
<div class="p-8 space-y-8">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-6">FontAwesome Icon Transformations</h3>
|
|
3
|
+
|
|
4
|
+
<div class="space-y-8 text-2xl">
|
|
5
|
+
<%# Flip transformations %>
|
|
6
|
+
<div>
|
|
7
|
+
<h4 class="text-base font-medium mb-4 text-gray-700">Flip</h4>
|
|
8
|
+
<div class="space-y-4">
|
|
9
|
+
<div class="flex items-center gap-4">
|
|
10
|
+
<span class="w-32 text-sm font-medium text-gray-600">Normal</span>
|
|
11
|
+
<%= render BetterUi::FaIconComponent.new(name: "flag", style: :solid) %>
|
|
12
|
+
<%= render BetterUi::FaIconComponent.new(name: "shield", style: :solid) %>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<div class="flex items-center gap-4">
|
|
16
|
+
<span class="w-32 text-sm font-medium text-gray-600">Horizontal</span>
|
|
17
|
+
<%= render BetterUi::FaIconComponent.new(name: "flag", style: :solid, flip: :horizontal) %>
|
|
18
|
+
<%= render BetterUi::FaIconComponent.new(name: "shield", style: :solid, flip: :horizontal) %>
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
<div class="flex items-center gap-4">
|
|
22
|
+
<span class="w-32 text-sm font-medium text-gray-600">Vertical</span>
|
|
23
|
+
<%= render BetterUi::FaIconComponent.new(name: "flag", style: :solid, flip: :vertical) %>
|
|
24
|
+
<%= render BetterUi::FaIconComponent.new(name: "shield", style: :solid, flip: :vertical) %>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<div class="flex items-center gap-4">
|
|
28
|
+
<span class="w-32 text-sm font-medium text-gray-600">Both</span>
|
|
29
|
+
<%= render BetterUi::FaIconComponent.new(name: "flag", style: :solid, flip: :both) %>
|
|
30
|
+
<%= render BetterUi::FaIconComponent.new(name: "shield", style: :solid, flip: :both) %>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<%# Rotate transformations %>
|
|
36
|
+
<div>
|
|
37
|
+
<h4 class="text-base font-medium mb-4 text-gray-700">Rotate</h4>
|
|
38
|
+
<div class="space-y-4">
|
|
39
|
+
<div class="flex items-center gap-4">
|
|
40
|
+
<span class="w-32 text-sm font-medium text-gray-600">Normal</span>
|
|
41
|
+
<%= render BetterUi::FaIconComponent.new(name: "arrow-right", style: :solid) %>
|
|
42
|
+
<%= render BetterUi::FaIconComponent.new(name: "phone", style: :solid) %>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
<div class="flex items-center gap-4">
|
|
46
|
+
<span class="w-32 text-sm font-medium text-gray-600">90 degrees</span>
|
|
47
|
+
<%= render BetterUi::FaIconComponent.new(name: "arrow-right", style: :solid, rotate: 90) %>
|
|
48
|
+
<%= render BetterUi::FaIconComponent.new(name: "phone", style: :solid, rotate: 90) %>
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
<div class="flex items-center gap-4">
|
|
52
|
+
<span class="w-32 text-sm font-medium text-gray-600">180 degrees</span>
|
|
53
|
+
<%= render BetterUi::FaIconComponent.new(name: "arrow-right", style: :solid, rotate: 180) %>
|
|
54
|
+
<%= render BetterUi::FaIconComponent.new(name: "phone", style: :solid, rotate: 180) %>
|
|
55
|
+
</div>
|
|
56
|
+
|
|
57
|
+
<div class="flex items-center gap-4">
|
|
58
|
+
<span class="w-32 text-sm font-medium text-gray-600">270 degrees</span>
|
|
59
|
+
<%= render BetterUi::FaIconComponent.new(name: "arrow-right", style: :solid, rotate: 270) %>
|
|
60
|
+
<%= render BetterUi::FaIconComponent.new(name: "phone", style: :solid, rotate: 270) %>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
|
|
65
|
+
<%# Fixed width %>
|
|
66
|
+
<div>
|
|
67
|
+
<h4 class="text-base font-medium mb-4 text-gray-700">Fixed Width</h4>
|
|
68
|
+
<div class="space-y-2">
|
|
69
|
+
<div class="flex items-center gap-1 bg-gray-100 p-2 rounded">
|
|
70
|
+
<%= render BetterUi::FaIconComponent.new(name: "home", style: :solid, fixed_width: true) %>
|
|
71
|
+
<span class="text-sm">Home</span>
|
|
72
|
+
</div>
|
|
73
|
+
<div class="flex items-center gap-1 bg-gray-100 p-2 rounded">
|
|
74
|
+
<%= render BetterUi::FaIconComponent.new(name: "info", style: :solid, fixed_width: true) %>
|
|
75
|
+
<span class="text-sm">Info</span>
|
|
76
|
+
</div>
|
|
77
|
+
<div class="flex items-center gap-1 bg-gray-100 p-2 rounded">
|
|
78
|
+
<%= render BetterUi::FaIconComponent.new(name: "book", style: :solid, fixed_width: true) %>
|
|
79
|
+
<span class="text-sm">Book</span>
|
|
80
|
+
</div>
|
|
81
|
+
<div class="flex items-center gap-1 bg-gray-100 p-2 rounded">
|
|
82
|
+
<%= render BetterUi::FaIconComponent.new(name: "music", style: :solid, fixed_width: true) %>
|
|
83
|
+
<span class="text-sm">Music</span>
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module BetterUi
|
|
4
|
+
class FaIconComponentPreview < ViewComponent::Preview
|
|
5
|
+
# @label Default
|
|
6
|
+
def default
|
|
7
|
+
render BetterUi::FaIconComponent.new(name: "user")
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# @label All Styles
|
|
11
|
+
# @display bg_color #f5f5f5
|
|
12
|
+
def all_styles
|
|
13
|
+
@styles = BetterUi::FaIconComponent::STYLES.keys
|
|
14
|
+
render_with_template
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# @label All Sizes
|
|
18
|
+
# @display bg_color #f5f5f5
|
|
19
|
+
def all_sizes
|
|
20
|
+
@sizes = BetterUi::FaIconComponent::SIZES.keys
|
|
21
|
+
render_with_template
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# @label All Variants
|
|
25
|
+
# @display bg_color #f5f5f5
|
|
26
|
+
def all_variants
|
|
27
|
+
@variants = BetterUi::ApplicationComponent::VARIANTS.keys
|
|
28
|
+
render_with_template
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @label Animations
|
|
32
|
+
# @display bg_color #f5f5f5
|
|
33
|
+
def animations
|
|
34
|
+
render_with_template
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# @label Transformations
|
|
38
|
+
# @display bg_color #f5f5f5
|
|
39
|
+
def transformations
|
|
40
|
+
render_with_template
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# @label Playground
|
|
44
|
+
# @param name text
|
|
45
|
+
# @param style select { choices: [regular, solid, light, thin, brands] }
|
|
46
|
+
# @param variant select { choices: [~, primary, secondary, accent, success, danger, warning, info, light, dark] }
|
|
47
|
+
# @param size select { choices: [xs, sm, md, lg, xl, 2xl] }
|
|
48
|
+
# @param spin toggle
|
|
49
|
+
# @param pulse toggle
|
|
50
|
+
# @param flip select { choices: [~, horizontal, vertical, both] }
|
|
51
|
+
# @param rotate select { choices: [~, 90, 180, 270] }
|
|
52
|
+
# @param fixed_width toggle
|
|
53
|
+
def playground(
|
|
54
|
+
name: "user",
|
|
55
|
+
style: :regular,
|
|
56
|
+
variant: nil,
|
|
57
|
+
size: :md,
|
|
58
|
+
spin: false,
|
|
59
|
+
pulse: false,
|
|
60
|
+
flip: nil,
|
|
61
|
+
rotate: nil,
|
|
62
|
+
fixed_width: false
|
|
63
|
+
)
|
|
64
|
+
spin_bool = ActiveModel::Type::Boolean.new.cast(spin)
|
|
65
|
+
pulse_bool = ActiveModel::Type::Boolean.new.cast(pulse)
|
|
66
|
+
fixed_width_bool = ActiveModel::Type::Boolean.new.cast(fixed_width)
|
|
67
|
+
variant_val = variant.present? && variant != "~" ? variant.to_sym : nil
|
|
68
|
+
flip_val = flip.present? && flip != "~" ? flip.to_sym : nil
|
|
69
|
+
rotate_val = rotate.present? && rotate != "~" ? rotate.to_i : nil
|
|
70
|
+
size_val = size.to_s == "2xl" ? :"2xl" : size.to_sym
|
|
71
|
+
|
|
72
|
+
render BetterUi::FaIconComponent.new(
|
|
73
|
+
name: name,
|
|
74
|
+
style: style,
|
|
75
|
+
variant: variant_val,
|
|
76
|
+
size: size_val,
|
|
77
|
+
spin: spin_bool,
|
|
78
|
+
pulse: pulse_bool,
|
|
79
|
+
flip: flip_val,
|
|
80
|
+
rotate: rotate_val,
|
|
81
|
+
fixed_width: fixed_width_bool
|
|
82
|
+
)
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<div class="space-y-4 p-4">
|
|
2
|
+
<% BetterUi::Forms::CheckboxComponent::SIZES.each do |size| %>
|
|
3
|
+
<div>
|
|
4
|
+
<%= render BetterUi::Forms::CheckboxComponent.new(
|
|
5
|
+
name: "size_#{size}",
|
|
6
|
+
label: "Size: #{size.to_s.upcase}",
|
|
7
|
+
size: size,
|
|
8
|
+
checked: true
|
|
9
|
+
) %>
|
|
10
|
+
</div>
|
|
11
|
+
<% end %>
|
|
12
|
+
</div>
|
data/spec/components/previews/better_ui/forms/checkbox_component_preview/all_variants.html.erb
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<div class="space-y-4 p-4">
|
|
2
|
+
<% BetterUi::ApplicationComponent::VARIANTS.each do |variant, _| %>
|
|
3
|
+
<div>
|
|
4
|
+
<%= render BetterUi::Forms::CheckboxComponent.new(
|
|
5
|
+
name: "variant_#{variant}",
|
|
6
|
+
label: "Variant: #{variant.to_s.titleize}",
|
|
7
|
+
variant: variant,
|
|
8
|
+
checked: true
|
|
9
|
+
) %>
|
|
10
|
+
</div>
|
|
11
|
+
<% end %>
|
|
12
|
+
</div>
|
data/spec/components/previews/better_ui/forms/checkbox_component_preview/form_integration.html.erb
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<div class="p-4 max-w-md">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-4">Form Builder Integration Example</h3>
|
|
3
|
+
|
|
4
|
+
<%= form_with url: "#", method: :post, builder: BetterUi::UiFormBuilder, data: { turbo: false } do |f| %>
|
|
5
|
+
<div class="space-y-4">
|
|
6
|
+
<%= render BetterUi::Forms::CheckboxComponent.new(
|
|
7
|
+
name: "user[newsletter]",
|
|
8
|
+
label: "Subscribe to newsletter",
|
|
9
|
+
hint: "Receive weekly updates about new features"
|
|
10
|
+
) %>
|
|
11
|
+
|
|
12
|
+
<%= render BetterUi::Forms::CheckboxComponent.new(
|
|
13
|
+
name: "user[marketing]",
|
|
14
|
+
label: "Receive marketing emails",
|
|
15
|
+
variant: :secondary
|
|
16
|
+
) %>
|
|
17
|
+
|
|
18
|
+
<%= render BetterUi::Forms::CheckboxComponent.new(
|
|
19
|
+
name: "user[terms]",
|
|
20
|
+
label: "I agree to the terms and conditions",
|
|
21
|
+
required: true,
|
|
22
|
+
variant: :primary
|
|
23
|
+
) %>
|
|
24
|
+
|
|
25
|
+
<div class="pt-4">
|
|
26
|
+
<%= render BetterUi::ButtonComponent.new(type: :submit, variant: :primary) do %>
|
|
27
|
+
Submit
|
|
28
|
+
<% end %>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
<% end %>
|
|
32
|
+
</div>
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module BetterUi
|
|
4
|
+
module Forms
|
|
5
|
+
# @label Checkbox
|
|
6
|
+
class CheckboxComponentPreview < ViewComponent::Preview
|
|
7
|
+
# @label Default
|
|
8
|
+
# @display bg_color #f5f5f5
|
|
9
|
+
def default
|
|
10
|
+
render BetterUi::Forms::CheckboxComponent.new(
|
|
11
|
+
name: "newsletter",
|
|
12
|
+
label: "Subscribe to newsletter"
|
|
13
|
+
)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# @label Checked
|
|
17
|
+
# @display bg_color #f5f5f5
|
|
18
|
+
def checked
|
|
19
|
+
render BetterUi::Forms::CheckboxComponent.new(
|
|
20
|
+
name: "terms",
|
|
21
|
+
label: "I agree to the terms and conditions",
|
|
22
|
+
checked: true
|
|
23
|
+
)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# @label With Hint
|
|
27
|
+
# @display bg_color #f5f5f5
|
|
28
|
+
def with_hint
|
|
29
|
+
render BetterUi::Forms::CheckboxComponent.new(
|
|
30
|
+
name: "marketing",
|
|
31
|
+
label: "Receive marketing emails",
|
|
32
|
+
hint: "We'll send you occasional updates about new features and promotions."
|
|
33
|
+
)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# @label With Errors
|
|
37
|
+
# @display bg_color #f5f5f5
|
|
38
|
+
def with_errors
|
|
39
|
+
render BetterUi::Forms::CheckboxComponent.new(
|
|
40
|
+
name: "terms",
|
|
41
|
+
label: "I agree to the terms and conditions",
|
|
42
|
+
errors: [ "You must accept the terms and conditions to continue" ]
|
|
43
|
+
)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# @label Required Field
|
|
47
|
+
# @display bg_color #f5f5f5
|
|
48
|
+
def required
|
|
49
|
+
render BetterUi::Forms::CheckboxComponent.new(
|
|
50
|
+
name: "terms",
|
|
51
|
+
label: "I agree to the terms and conditions",
|
|
52
|
+
required: true
|
|
53
|
+
)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# @label Disabled State
|
|
57
|
+
# @display bg_color #f5f5f5
|
|
58
|
+
def disabled
|
|
59
|
+
render BetterUi::Forms::CheckboxComponent.new(
|
|
60
|
+
name: "disabled_option",
|
|
61
|
+
label: "This option is disabled",
|
|
62
|
+
disabled: true,
|
|
63
|
+
checked: true
|
|
64
|
+
)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# @label Readonly State
|
|
68
|
+
# @display bg_color #f5f5f5
|
|
69
|
+
def readonly
|
|
70
|
+
render BetterUi::Forms::CheckboxComponent.new(
|
|
71
|
+
name: "readonly_option",
|
|
72
|
+
label: "This option is readonly",
|
|
73
|
+
readonly: true,
|
|
74
|
+
checked: true
|
|
75
|
+
)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# @label Label on Left
|
|
79
|
+
# @display bg_color #f5f5f5
|
|
80
|
+
def label_left
|
|
81
|
+
render BetterUi::Forms::CheckboxComponent.new(
|
|
82
|
+
name: "active",
|
|
83
|
+
label: "Active",
|
|
84
|
+
label_position: :left
|
|
85
|
+
)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# @label All Sizes
|
|
89
|
+
# @display bg_color #f5f5f5
|
|
90
|
+
def all_sizes
|
|
91
|
+
render_with_template
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# @label All Variants
|
|
95
|
+
# @display bg_color #f5f5f5
|
|
96
|
+
def all_variants
|
|
97
|
+
render_with_template
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# @label Form Integration
|
|
101
|
+
# @display bg_color #f5f5f5
|
|
102
|
+
def form_integration
|
|
103
|
+
render_with_template
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# @label Playground
|
|
107
|
+
# @param variant select { choices: [primary, secondary, accent, success, danger, warning, info, light, dark] }
|
|
108
|
+
# @param size select { choices: [xs, sm, md, lg, xl] }
|
|
109
|
+
# @param label_position select { choices: [left, right] }
|
|
110
|
+
# @param checked toggle
|
|
111
|
+
# @param disabled toggle
|
|
112
|
+
# @param readonly toggle
|
|
113
|
+
# @param required toggle
|
|
114
|
+
# @param with_hint toggle
|
|
115
|
+
# @param with_error toggle
|
|
116
|
+
def playground(
|
|
117
|
+
variant: :primary,
|
|
118
|
+
size: :md,
|
|
119
|
+
label_position: :right,
|
|
120
|
+
checked: false,
|
|
121
|
+
disabled: false,
|
|
122
|
+
readonly: false,
|
|
123
|
+
required: false,
|
|
124
|
+
with_hint: false,
|
|
125
|
+
with_error: false
|
|
126
|
+
)
|
|
127
|
+
render BetterUi::Forms::CheckboxComponent.new(
|
|
128
|
+
name: "playground",
|
|
129
|
+
label: "Playground Checkbox",
|
|
130
|
+
variant: variant.to_sym,
|
|
131
|
+
size: size.to_sym,
|
|
132
|
+
label_position: label_position.to_sym,
|
|
133
|
+
checked: checked,
|
|
134
|
+
disabled: disabled,
|
|
135
|
+
readonly: readonly,
|
|
136
|
+
required: required,
|
|
137
|
+
hint: with_hint ? "This is a helpful hint" : nil,
|
|
138
|
+
errors: with_error ? [ "This field has an error" ] : nil
|
|
139
|
+
)
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
data/spec/components/previews/better_ui/forms/checkbox_group_component_preview/all_variants.html.erb
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<div class="space-y-6 p-4">
|
|
2
|
+
<% BetterUi::ApplicationComponent::VARIANTS.each do |variant, _| %>
|
|
3
|
+
<div>
|
|
4
|
+
<%= render BetterUi::Forms::CheckboxGroupComponent.new(
|
|
5
|
+
name: "variant_#{variant}",
|
|
6
|
+
collection: ["Option 1", "Option 2", "Option 3"],
|
|
7
|
+
selected: ["Option 1", "Option 2"],
|
|
8
|
+
variant: variant,
|
|
9
|
+
legend: "Variant: #{variant.to_s.titleize}",
|
|
10
|
+
orientation: :horizontal
|
|
11
|
+
) %>
|
|
12
|
+
</div>
|
|
13
|
+
<% end %>
|
|
14
|
+
</div>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<div class="p-4 max-w-lg">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-4">Form Builder Integration Example</h3>
|
|
3
|
+
|
|
4
|
+
<%= form_with url: "#", method: :post, builder: BetterUi::UiFormBuilder, data: { turbo: false } do |f| %>
|
|
5
|
+
<div class="space-y-6">
|
|
6
|
+
<%= render BetterUi::Forms::CheckboxGroupComponent.new(
|
|
7
|
+
name: "user[roles]",
|
|
8
|
+
collection: [
|
|
9
|
+
["Administrator", "admin"],
|
|
10
|
+
["Editor", "editor"],
|
|
11
|
+
["Viewer", "viewer"]
|
|
12
|
+
],
|
|
13
|
+
selected: ["editor"],
|
|
14
|
+
legend: "User Roles",
|
|
15
|
+
hint: "Select the roles for this user",
|
|
16
|
+
required: true
|
|
17
|
+
) %>
|
|
18
|
+
|
|
19
|
+
<%= render BetterUi::Forms::CheckboxGroupComponent.new(
|
|
20
|
+
name: "user[notifications]",
|
|
21
|
+
collection: [
|
|
22
|
+
["Email", "email"],
|
|
23
|
+
["Push", "push"],
|
|
24
|
+
["SMS", "sms"]
|
|
25
|
+
],
|
|
26
|
+
legend: "Notification Preferences",
|
|
27
|
+
orientation: :horizontal,
|
|
28
|
+
variant: :secondary
|
|
29
|
+
) %>
|
|
30
|
+
|
|
31
|
+
<%= render BetterUi::Forms::CheckboxGroupComponent.new(
|
|
32
|
+
name: "user[skills]",
|
|
33
|
+
collection: ["Ruby", "JavaScript", "Python", "Go", "Rust", "TypeScript"],
|
|
34
|
+
legend: "Programming Skills",
|
|
35
|
+
orientation: :horizontal,
|
|
36
|
+
size: :sm,
|
|
37
|
+
variant: :accent
|
|
38
|
+
) %>
|
|
39
|
+
|
|
40
|
+
<div class="pt-4">
|
|
41
|
+
<%= render BetterUi::ButtonComponent.new(type: :submit, variant: :primary) do %>
|
|
42
|
+
Save Preferences
|
|
43
|
+
<% end %>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
<% end %>
|
|
47
|
+
</div>
|
data/spec/components/previews/better_ui/forms/checkbox_group_component_preview/orientations.html.erb
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<div class="space-y-8 p-4">
|
|
2
|
+
<div>
|
|
3
|
+
<h4 class="text-sm font-medium text-gray-700 mb-2">Vertical Orientation (Default)</h4>
|
|
4
|
+
<%= render BetterUi::Forms::CheckboxGroupComponent.new(
|
|
5
|
+
name: "vertical_options",
|
|
6
|
+
collection: ["Option 1", "Option 2", "Option 3", "Option 4"],
|
|
7
|
+
selected: ["Option 1"],
|
|
8
|
+
legend: "Vertical Layout",
|
|
9
|
+
orientation: :vertical
|
|
10
|
+
) %>
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
<div>
|
|
14
|
+
<h4 class="text-sm font-medium text-gray-700 mb-2">Horizontal Orientation</h4>
|
|
15
|
+
<%= render BetterUi::Forms::CheckboxGroupComponent.new(
|
|
16
|
+
name: "horizontal_options",
|
|
17
|
+
collection: ["Option 1", "Option 2", "Option 3", "Option 4"],
|
|
18
|
+
selected: ["Option 2", "Option 3"],
|
|
19
|
+
legend: "Horizontal Layout",
|
|
20
|
+
orientation: :horizontal
|
|
21
|
+
) %>
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
<div>
|
|
25
|
+
<h4 class="text-sm font-medium text-gray-700 mb-2">Horizontal with Many Options (Wraps)</h4>
|
|
26
|
+
<%= render BetterUi::Forms::CheckboxGroupComponent.new(
|
|
27
|
+
name: "many_options",
|
|
28
|
+
collection: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
|
|
29
|
+
selected: ["Mon", "Wed", "Fri"],
|
|
30
|
+
legend: "Days of Week",
|
|
31
|
+
orientation: :horizontal
|
|
32
|
+
) %>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|