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,269 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module BetterUi
|
|
4
|
+
# @label Card
|
|
5
|
+
class CardComponentPreview < ViewComponent::Preview
|
|
6
|
+
# @label Default
|
|
7
|
+
# @display bg_color #f5f5f5
|
|
8
|
+
def default
|
|
9
|
+
render BetterUi::CardComponent.new do
|
|
10
|
+
"This is a default card with solid primary style and medium size."
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# @label With Header
|
|
15
|
+
# @display bg_color #f5f5f5
|
|
16
|
+
def with_header
|
|
17
|
+
render BetterUi::CardComponent.new do |card|
|
|
18
|
+
card.with_header { "Card Header" }
|
|
19
|
+
card.with_body { "This card has a header section separated by a divider." }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# @label With Footer
|
|
24
|
+
# @display bg_color #f5f5f5
|
|
25
|
+
def with_footer
|
|
26
|
+
render BetterUi::CardComponent.new do |card|
|
|
27
|
+
card.with_body { "This card has a footer section for actions or additional information." }
|
|
28
|
+
card.with_footer { "Card Footer" }
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# @label With All Sections
|
|
33
|
+
# @display bg_color #f5f5f5
|
|
34
|
+
def with_all_sections
|
|
35
|
+
render BetterUi::CardComponent.new do |card|
|
|
36
|
+
card.with_header { "Complete Card" }
|
|
37
|
+
card.with_body { "This card demonstrates all three sections: header, body, and footer." }
|
|
38
|
+
card.with_footer { "Footer with actions" }
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# @label Solid Style
|
|
43
|
+
# @display bg_color #f5f5f5
|
|
44
|
+
def solid_style
|
|
45
|
+
render BetterUi::CardComponent.new(variant: :primary, style: :solid) do |card|
|
|
46
|
+
card.with_header { "Solid Card" }
|
|
47
|
+
card.with_body { "Filled background with subtle border and dark text. Best for emphasis." }
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# @label Outline Style
|
|
52
|
+
# @display bg_color #f5f5f5
|
|
53
|
+
def outline_style
|
|
54
|
+
render BetterUi::CardComponent.new(variant: :primary, style: :outline) do |card|
|
|
55
|
+
card.with_header { "Outline Card" }
|
|
56
|
+
card.with_body { "White background with colored border. Clean and minimal." }
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# @label Ghost Style (Transparent)
|
|
61
|
+
# @display bg_color #f5f5f5
|
|
62
|
+
def ghost_style
|
|
63
|
+
render BetterUi::CardComponent.new(variant: :primary, style: :ghost) do |card|
|
|
64
|
+
card.with_header { "Ghost Card" }
|
|
65
|
+
card.with_body { "Transparent background with colored text. Most subtle option." }
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# @label Soft Style
|
|
70
|
+
# @display bg_color #f5f5f5
|
|
71
|
+
def soft_style
|
|
72
|
+
render BetterUi::CardComponent.new(variant: :primary, style: :soft) do |card|
|
|
73
|
+
card.with_header { "Soft Card" }
|
|
74
|
+
card.with_body { "Light colored background with subtle border. Gentle appearance." }
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# @label Bordered Style
|
|
79
|
+
# @display bg_color #f5f5f5
|
|
80
|
+
def bordered_style
|
|
81
|
+
render BetterUi::CardComponent.new(style: :bordered) do |card|
|
|
82
|
+
card.with_header { "Bordered Card" }
|
|
83
|
+
card.with_body { "White background with variant-colored border. Defaults to light variant. Positioned between soft and outline in visual weight." }
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# @label Success Card
|
|
88
|
+
# @display bg_color #f5f5f5
|
|
89
|
+
def success_card
|
|
90
|
+
render BetterUi::CardComponent.new(variant: :success) do |card|
|
|
91
|
+
card.with_header { "✓ Success" }
|
|
92
|
+
card.with_body { "Operation completed successfully!" }
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# @label Danger Card
|
|
97
|
+
# @display bg_color #f5f5f5
|
|
98
|
+
def danger_card
|
|
99
|
+
render BetterUi::CardComponent.new(variant: :danger) do |card|
|
|
100
|
+
card.with_header { "⚠ Error" }
|
|
101
|
+
card.with_body { "An error occurred while processing your request." }
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# @label Info Card
|
|
106
|
+
# @display bg_color #f5f5f5
|
|
107
|
+
def info_card
|
|
108
|
+
render BetterUi::CardComponent.new(variant: :info) do |card|
|
|
109
|
+
card.with_header { "ℹ Information" }
|
|
110
|
+
card.with_body { "Here's some helpful information for you." }
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# @label Without Shadow
|
|
115
|
+
# @display bg_color #f5f5f5
|
|
116
|
+
def without_shadow
|
|
117
|
+
render BetterUi::CardComponent.new(shadow: false) do |card|
|
|
118
|
+
card.with_header { "Flat Card" }
|
|
119
|
+
card.with_body { "This card has no shadow elevation." }
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# @label Extra Small Size
|
|
124
|
+
# @display bg_color #f5f5f5
|
|
125
|
+
def extra_small_size
|
|
126
|
+
render BetterUi::CardComponent.new(size: :xs) do |card|
|
|
127
|
+
card.with_header { "XS Card" }
|
|
128
|
+
card.with_body { "Extra small card with compact padding." }
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
# @label Small Size
|
|
133
|
+
# @display bg_color #f5f5f5
|
|
134
|
+
def small_size
|
|
135
|
+
render BetterUi::CardComponent.new(size: :sm) do |card|
|
|
136
|
+
card.with_header { "Small Card" }
|
|
137
|
+
card.with_body { "Small card with reduced padding." }
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# @label Large Size
|
|
142
|
+
# @display bg_color #f5f5f5
|
|
143
|
+
def large_size
|
|
144
|
+
render BetterUi::CardComponent.new(size: :lg) do |card|
|
|
145
|
+
card.with_header { "Large Card" }
|
|
146
|
+
card.with_body { "Large card with generous padding." }
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
# @label Extra Large Size
|
|
151
|
+
# @display bg_color #f5f5f5
|
|
152
|
+
def extra_large_size
|
|
153
|
+
render BetterUi::CardComponent.new(size: :xl) do |card|
|
|
154
|
+
card.with_header { "XL Card" }
|
|
155
|
+
card.with_body { "Extra large card with maximum padding." }
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
# @label All Variants
|
|
160
|
+
# @display bg_color #f5f5f5
|
|
161
|
+
def all_variants
|
|
162
|
+
render_with_template
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# @label All Styles
|
|
166
|
+
# @display bg_color #f5f5f5
|
|
167
|
+
def all_styles
|
|
168
|
+
render_with_template
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
# @label All Sizes
|
|
172
|
+
# @display bg_color #f5f5f5
|
|
173
|
+
def all_sizes
|
|
174
|
+
render_with_template
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# @label Full-Width Image
|
|
178
|
+
# @display bg_color #f5f5f5
|
|
179
|
+
def full_width_image
|
|
180
|
+
render BetterUi::CardComponent.new(body_padding: false) do |card|
|
|
181
|
+
card.with_header { "Photo Gallery" }
|
|
182
|
+
card.with_body do
|
|
183
|
+
"<div class='bg-gradient-to-r from-blue-500 to-purple-600 h-48 flex items-center justify-center text-white font-bold'>Full-Width Image Placeholder</div>".html_safe
|
|
184
|
+
end
|
|
185
|
+
card.with_footer { "Image caption or actions" }
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
# @label Table Container
|
|
190
|
+
# @display bg_color #f5f5f5
|
|
191
|
+
def table_container
|
|
192
|
+
render BetterUi::CardComponent.new(body_padding: false, style: :bordered) do |card|
|
|
193
|
+
card.with_header { "Data Table" }
|
|
194
|
+
card.with_body do
|
|
195
|
+
"<table class='w-full'><thead class='bg-gray-50'><tr><th class='px-6 py-3 text-left'>Name</th><th class='px-6 py-3 text-left'>Status</th></tr></thead><tbody><tr class='border-t'><td class='px-6 py-4'>Item 1</td><td class='px-6 py-4'>Active</td></tr><tr class='border-t'><td class='px-6 py-4'>Item 2</td><td class='px-6 py-4'>Pending</td></tr></tbody></table>".html_safe
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
# @label No Padding
|
|
201
|
+
# @display bg_color #f5f5f5
|
|
202
|
+
def no_padding
|
|
203
|
+
render BetterUi::CardComponent.new(
|
|
204
|
+
header_padding: false,
|
|
205
|
+
body_padding: false,
|
|
206
|
+
footer_padding: false
|
|
207
|
+
) do |card|
|
|
208
|
+
card.with_header do
|
|
209
|
+
"<div class='bg-blue-100 p-4 font-bold'>Custom Padded Header</div>".html_safe
|
|
210
|
+
end
|
|
211
|
+
card.with_body do
|
|
212
|
+
"<div class='bg-white p-8'>Content with custom padding</div>".html_safe
|
|
213
|
+
end
|
|
214
|
+
card.with_footer do
|
|
215
|
+
"<div class='bg-gray-100 p-4'>Custom Padded Footer</div>".html_safe
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
# @label Selective Padding
|
|
221
|
+
# @display bg_color #f5f5f5
|
|
222
|
+
def selective_padding
|
|
223
|
+
render BetterUi::CardComponent.new(
|
|
224
|
+
variant: :info,
|
|
225
|
+
header_padding: true,
|
|
226
|
+
body_padding: false,
|
|
227
|
+
footer_padding: true
|
|
228
|
+
) do |card|
|
|
229
|
+
card.with_header { "Normal Header (with padding)" }
|
|
230
|
+
card.with_body do
|
|
231
|
+
"<div class='bg-gradient-to-b from-blue-50 to-white p-8'>Body with custom padding - the card body_padding is false, allowing custom spacing</div>".html_safe
|
|
232
|
+
end
|
|
233
|
+
card.with_footer { "Normal Footer (with padding)" }
|
|
234
|
+
end
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
# @label Playground
|
|
238
|
+
# @param variant select { choices: [primary, secondary, accent, success, danger, warning, info, light, dark] }
|
|
239
|
+
# @param style select { choices: [solid, outline, ghost, soft, bordered] }
|
|
240
|
+
# @param size select { choices: [xs, sm, md, lg, xl] }
|
|
241
|
+
# @param shadow toggle
|
|
242
|
+
# @param header_padding toggle
|
|
243
|
+
# @param body_padding toggle
|
|
244
|
+
# @param footer_padding toggle
|
|
245
|
+
# @param with_header toggle
|
|
246
|
+
# @param with_footer toggle
|
|
247
|
+
def playground(variant: :primary, style: :solid, size: :md, shadow: true, header_padding: true, body_padding: true, footer_padding: true, with_header: true, with_footer: false)
|
|
248
|
+
render BetterUi::CardComponent.new(
|
|
249
|
+
variant: variant.to_sym,
|
|
250
|
+
style: style.to_sym,
|
|
251
|
+
size: size.to_sym,
|
|
252
|
+
shadow: shadow,
|
|
253
|
+
header_padding: header_padding,
|
|
254
|
+
body_padding: body_padding,
|
|
255
|
+
footer_padding: footer_padding
|
|
256
|
+
) do |card|
|
|
257
|
+
if with_header
|
|
258
|
+
card.with_header { "Playground Card Header" }
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
card.with_body { "This is an interactive card playground. Adjust the parameters to see how the card changes." }
|
|
262
|
+
|
|
263
|
+
if with_footer
|
|
264
|
+
card.with_footer { "Card Footer" }
|
|
265
|
+
end
|
|
266
|
+
end
|
|
267
|
+
end
|
|
268
|
+
end
|
|
269
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<div class="space-y-6 p-4">
|
|
2
|
+
<% [:sm, :md, :lg, :xl, :full].each do |size| %>
|
|
3
|
+
<div>
|
|
4
|
+
<p class="text-sm font-medium text-gray-500 mb-2">Size: <code><%= size %></code></p>
|
|
5
|
+
<%= render BetterUi::ContainerComponent.new(size: size, container_classes: "bg-blue-50 border border-blue-200 rounded-lg") do %>
|
|
6
|
+
<div class="bg-white p-4 rounded shadow-sm text-center">
|
|
7
|
+
Container with <strong><%= size %></strong> max-width
|
|
8
|
+
(<%= size == :full ? "max-w-full" : "max-w-screen-#{size}" %>)
|
|
9
|
+
</div>
|
|
10
|
+
<% end %>
|
|
11
|
+
</div>
|
|
12
|
+
<% end %>
|
|
13
|
+
</div>
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module BetterUi
|
|
4
|
+
# @label Container
|
|
5
|
+
class ContainerComponentPreview < ViewComponent::Preview
|
|
6
|
+
# @label Default
|
|
7
|
+
# @display bg_color #f5f5f5
|
|
8
|
+
def default
|
|
9
|
+
render BetterUi::ContainerComponent.new do
|
|
10
|
+
"<div class='bg-white p-6 rounded-lg shadow-sm'>This is a default container with lg max-width, horizontal padding, and centered alignment.</div>".html_safe
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# @label All Sizes
|
|
15
|
+
# @display bg_color #f5f5f5
|
|
16
|
+
def all_sizes
|
|
17
|
+
render_with_template
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# @label Without Padding
|
|
21
|
+
# @display bg_color #f5f5f5
|
|
22
|
+
def without_padding
|
|
23
|
+
render BetterUi::ContainerComponent.new(padding: false) do
|
|
24
|
+
"<div class='bg-white p-6 shadow-sm'>This container has no horizontal padding. Content goes edge-to-edge within the max-width constraint.</div>".html_safe
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @label Without Centering
|
|
29
|
+
# @display bg_color #f5f5f5
|
|
30
|
+
def without_centering
|
|
31
|
+
render BetterUi::ContainerComponent.new(centered: false) do
|
|
32
|
+
"<div class='bg-white p-6 rounded-lg shadow-sm'>This container is not centered. It aligns to the left by default.</div>".html_safe
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# @label Full Width
|
|
37
|
+
# @display bg_color #f5f5f5
|
|
38
|
+
def full_width
|
|
39
|
+
render BetterUi::ContainerComponent.new(size: :full) do
|
|
40
|
+
"<div class='bg-white p-6 rounded-lg shadow-sm'>This container uses full width with no max-width constraint (other than max-w-full).</div>".html_safe
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# @label Playground
|
|
45
|
+
# @param size select { choices: [sm, md, lg, xl, full] }
|
|
46
|
+
# @param padding toggle
|
|
47
|
+
# @param centered toggle
|
|
48
|
+
def playground(size: :lg, padding: true, centered: true)
|
|
49
|
+
render BetterUi::ContainerComponent.new(
|
|
50
|
+
size: size.to_sym,
|
|
51
|
+
padding: padding,
|
|
52
|
+
centered: centered,
|
|
53
|
+
container_classes: "bg-blue-50 border border-blue-200 rounded-lg"
|
|
54
|
+
) do
|
|
55
|
+
"<div class='bg-white p-6 rounded shadow-sm'>Interactive container playground. Adjust the parameters to see how the container changes. Current size: <strong>#{size}</strong>, padding: <strong>#{padding}</strong>, centered: <strong>#{centered}</strong>.</div>".html_safe
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<div class="p-4 space-y-4">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-4">All Variants</h3>
|
|
3
|
+
|
|
4
|
+
<div class="flex flex-wrap gap-3">
|
|
5
|
+
<% BetterUi::ApplicationComponent::VARIANTS.each do |variant, _| %>
|
|
6
|
+
<%= render BetterUi::Dialog::AlertComponent.new(
|
|
7
|
+
variant: variant,
|
|
8
|
+
title: variant.to_s.capitalize,
|
|
9
|
+
text: "This is a #{variant} alert dialog."
|
|
10
|
+
) do |a| %>
|
|
11
|
+
<% a.with_trigger do %>
|
|
12
|
+
<%= render(BetterUi::ButtonComponent.new(variant: variant, style: :outline)) do %><%= variant.to_s.capitalize %><% end %>
|
|
13
|
+
<% end %>
|
|
14
|
+
<% end %>
|
|
15
|
+
<% end %>
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
data/spec/components/previews/better_ui/dialog/alert_component_preview/custom_button_label.html.erb
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<div class="p-4">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-4">Custom Button Label</h3>
|
|
3
|
+
|
|
4
|
+
<%= render BetterUi::Dialog::AlertComponent.new(
|
|
5
|
+
variant: :success,
|
|
6
|
+
title: "Saved Successfully!",
|
|
7
|
+
text: "Your changes have been saved.",
|
|
8
|
+
button_label: "Got it!"
|
|
9
|
+
) do |a| %>
|
|
10
|
+
<% a.with_trigger do %>
|
|
11
|
+
<%= render(BetterUi::ButtonComponent.new(variant: :success)) do %>Show Success Alert<% end %>
|
|
12
|
+
<% end %>
|
|
13
|
+
<% end %>
|
|
14
|
+
</div>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<div class="p-4">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-4">Default Alert (Info)</h3>
|
|
3
|
+
|
|
4
|
+
<%= render BetterUi::Dialog::AlertComponent.new(
|
|
5
|
+
variant: :info,
|
|
6
|
+
title: "Information",
|
|
7
|
+
text: "This is an informational alert. Click OK to dismiss."
|
|
8
|
+
) do |a| %>
|
|
9
|
+
<% a.with_trigger do %>
|
|
10
|
+
<%= render(BetterUi::ButtonComponent.new(variant: :info)) do %>Show Info Alert<% end %>
|
|
11
|
+
<% end %>
|
|
12
|
+
<% end %>
|
|
13
|
+
</div>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<div class="p-4">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-4">Playground</h3>
|
|
3
|
+
|
|
4
|
+
<%= render BetterUi::Dialog::AlertComponent.new(
|
|
5
|
+
variant: @variant,
|
|
6
|
+
title: @title,
|
|
7
|
+
text: @text,
|
|
8
|
+
icon: @icon,
|
|
9
|
+
button_label: @button_label,
|
|
10
|
+
size: @size
|
|
11
|
+
) do |a| %>
|
|
12
|
+
<% a.with_trigger do %>
|
|
13
|
+
<%= render(BetterUi::ButtonComponent.new(variant: @variant.presence || :info)) do %>Show Alert<% end %>
|
|
14
|
+
<% end %>
|
|
15
|
+
<% end %>
|
|
16
|
+
</div>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<div class="p-4">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-4">Without Icon</h3>
|
|
3
|
+
|
|
4
|
+
<%= render BetterUi::Dialog::AlertComponent.new(
|
|
5
|
+
variant: :warning,
|
|
6
|
+
title: "Warning",
|
|
7
|
+
text: "This alert has no icon displayed.",
|
|
8
|
+
icon: false
|
|
9
|
+
) do |a| %>
|
|
10
|
+
<% a.with_trigger do %>
|
|
11
|
+
<%= render(BetterUi::ButtonComponent.new(variant: :warning)) do %>Show Alert (No Icon)<% end %>
|
|
12
|
+
<% end %>
|
|
13
|
+
<% end %>
|
|
14
|
+
</div>
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module BetterUi
|
|
4
|
+
module Dialog
|
|
5
|
+
# @label Dialog Alert
|
|
6
|
+
class AlertComponentPreview < ViewComponent::Preview
|
|
7
|
+
# @label Default (Info)
|
|
8
|
+
# @display max_height 600px
|
|
9
|
+
def default
|
|
10
|
+
render_with_template
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# @label All Variants
|
|
14
|
+
# @display max_height 800px
|
|
15
|
+
def all_variants
|
|
16
|
+
render_with_template
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# @label Without Icon
|
|
20
|
+
# @display max_height 600px
|
|
21
|
+
def without_icon
|
|
22
|
+
render_with_template
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# @label Custom Button Label
|
|
26
|
+
# @display max_height 600px
|
|
27
|
+
def custom_button_label
|
|
28
|
+
render_with_template
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @label Playground
|
|
32
|
+
# @display max_height 600px
|
|
33
|
+
# @param variant select { choices: [primary, secondary, accent, success, danger, warning, info, light, dark] }
|
|
34
|
+
# @param title text
|
|
35
|
+
# @param text text
|
|
36
|
+
# @param icon toggle
|
|
37
|
+
# @param button_label text
|
|
38
|
+
# @param size select { choices: [sm, md, lg] }
|
|
39
|
+
def playground(
|
|
40
|
+
variant: :info,
|
|
41
|
+
title: "Alert Title",
|
|
42
|
+
text: "This is the alert message.",
|
|
43
|
+
icon: true,
|
|
44
|
+
button_label: "OK",
|
|
45
|
+
size: :sm
|
|
46
|
+
)
|
|
47
|
+
@variant = variant.presence&.to_sym || :info
|
|
48
|
+
@title = title
|
|
49
|
+
@text = text
|
|
50
|
+
@icon = icon
|
|
51
|
+
@button_label = button_label
|
|
52
|
+
@size = size.presence&.to_sym || :sm
|
|
53
|
+
render_with_template
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
data/spec/components/previews/better_ui/dialog/confirm_component_preview/all_variants.html.erb
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<div class="p-4 space-y-4">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-4">All Variants</h3>
|
|
3
|
+
|
|
4
|
+
<div class="flex flex-wrap gap-3">
|
|
5
|
+
<% BetterUi::ApplicationComponent::VARIANTS.each do |variant, _| %>
|
|
6
|
+
<%= render BetterUi::Dialog::ConfirmComponent.new(
|
|
7
|
+
variant: variant,
|
|
8
|
+
title: "#{variant.to_s.capitalize} Confirm",
|
|
9
|
+
text: "This is a #{variant} confirmation dialog."
|
|
10
|
+
) do |c| %>
|
|
11
|
+
<% c.with_trigger do %>
|
|
12
|
+
<%= render(BetterUi::ButtonComponent.new(variant: variant, style: :outline)) do %><%= variant.to_s.capitalize %><% end %>
|
|
13
|
+
<% end %>
|
|
14
|
+
<% end %>
|
|
15
|
+
<% end %>
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
data/spec/components/previews/better_ui/dialog/confirm_component_preview/custom_labels.html.erb
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<div class="p-4">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-4">Custom Labels</h3>
|
|
3
|
+
|
|
4
|
+
<%= render BetterUi::Dialog::ConfirmComponent.new(
|
|
5
|
+
variant: :primary,
|
|
6
|
+
title: "Publish Article?",
|
|
7
|
+
text: "This will make the article visible to all users.",
|
|
8
|
+
confirm_label: "Publish Now",
|
|
9
|
+
cancel_label: "Save as Draft"
|
|
10
|
+
) do |c| %>
|
|
11
|
+
<% c.with_trigger do %>
|
|
12
|
+
<%= render(BetterUi::ButtonComponent.new(variant: :primary)) do %>Publish<% end %>
|
|
13
|
+
<% end %>
|
|
14
|
+
<% end %>
|
|
15
|
+
</div>
|
data/spec/components/previews/better_ui/dialog/confirm_component_preview/danger_confirm.html.erb
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<div class="p-4">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-4">Danger Confirm (Delete)</h3>
|
|
3
|
+
|
|
4
|
+
<%= render BetterUi::Dialog::ConfirmComponent.new(
|
|
5
|
+
variant: :danger,
|
|
6
|
+
title: "Delete Item?",
|
|
7
|
+
text: "This action cannot be undone. This will permanently delete the item and all associated data.",
|
|
8
|
+
confirm_label: "Yes, delete it",
|
|
9
|
+
cancel_label: "No, keep it"
|
|
10
|
+
) do |c| %>
|
|
11
|
+
<% c.with_trigger do %>
|
|
12
|
+
<%= render(BetterUi::ButtonComponent.new(variant: :danger)) do %>Delete Item<% end %>
|
|
13
|
+
<% end %>
|
|
14
|
+
<% end %>
|
|
15
|
+
</div>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<div class="p-4">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-4">Default Confirm (Warning)</h3>
|
|
3
|
+
|
|
4
|
+
<%= render BetterUi::Dialog::ConfirmComponent.new(
|
|
5
|
+
variant: :warning,
|
|
6
|
+
title: "Confirm Action",
|
|
7
|
+
text: "Are you sure you want to proceed with this action?"
|
|
8
|
+
) do |c| %>
|
|
9
|
+
<% c.with_trigger do %>
|
|
10
|
+
<%= render(BetterUi::ButtonComponent.new(variant: :warning)) do %>Show Confirm<% end %>
|
|
11
|
+
<% end %>
|
|
12
|
+
<% end %>
|
|
13
|
+
</div>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<div class="p-4">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-4">Playground</h3>
|
|
3
|
+
|
|
4
|
+
<%= render BetterUi::Dialog::ConfirmComponent.new(
|
|
5
|
+
variant: @variant,
|
|
6
|
+
title: @title,
|
|
7
|
+
text: @text,
|
|
8
|
+
icon: @icon,
|
|
9
|
+
confirm_label: @confirm_label,
|
|
10
|
+
cancel_label: @cancel_label,
|
|
11
|
+
size: @size
|
|
12
|
+
) do |c| %>
|
|
13
|
+
<% c.with_trigger do %>
|
|
14
|
+
<%= render(BetterUi::ButtonComponent.new(variant: @variant.presence || :warning)) do %>Open Confirm<% end %>
|
|
15
|
+
<% end %>
|
|
16
|
+
<% end %>
|
|
17
|
+
</div>
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module BetterUi
|
|
4
|
+
module Dialog
|
|
5
|
+
# @label Dialog Confirm
|
|
6
|
+
class ConfirmComponentPreview < ViewComponent::Preview
|
|
7
|
+
# @label Default (Warning)
|
|
8
|
+
# @display max_height 600px
|
|
9
|
+
def default
|
|
10
|
+
render_with_template
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# @label All Variants
|
|
14
|
+
# @display max_height 800px
|
|
15
|
+
def all_variants
|
|
16
|
+
render_with_template
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# @label Danger Confirm
|
|
20
|
+
# @display max_height 600px
|
|
21
|
+
def danger_confirm
|
|
22
|
+
render_with_template
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# @label Custom Labels
|
|
26
|
+
# @display max_height 600px
|
|
27
|
+
def custom_labels
|
|
28
|
+
render_with_template
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @label Playground
|
|
32
|
+
# @display max_height 600px
|
|
33
|
+
# @param variant select { choices: [primary, secondary, accent, success, danger, warning, info, light, dark] }
|
|
34
|
+
# @param title text
|
|
35
|
+
# @param text text
|
|
36
|
+
# @param icon toggle
|
|
37
|
+
# @param confirm_label text
|
|
38
|
+
# @param cancel_label text
|
|
39
|
+
# @param size select { choices: [sm, md, lg] }
|
|
40
|
+
def playground(
|
|
41
|
+
variant: :warning,
|
|
42
|
+
title: "Confirm Action",
|
|
43
|
+
text: "Are you sure you want to proceed?",
|
|
44
|
+
icon: true,
|
|
45
|
+
confirm_label: "Confirm",
|
|
46
|
+
cancel_label: "Cancel",
|
|
47
|
+
size: :sm
|
|
48
|
+
)
|
|
49
|
+
@variant = variant.presence&.to_sym || :warning
|
|
50
|
+
@title = title
|
|
51
|
+
@text = text
|
|
52
|
+
@icon = icon
|
|
53
|
+
@confirm_label = confirm_label
|
|
54
|
+
@cancel_label = cancel_label
|
|
55
|
+
@size = size.presence&.to_sym || :sm
|
|
56
|
+
render_with_template
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<div class="p-4 space-y-4">
|
|
2
|
+
<h3 class="text-lg font-semibold mb-4">All Sizes</h3>
|
|
3
|
+
|
|
4
|
+
<div class="flex flex-wrap gap-3">
|
|
5
|
+
<% %i[sm md lg xl xxl full].each do |size| %>
|
|
6
|
+
<%= render BetterUi::Dialog::DialogComponent.new(size: size) do |d| %>
|
|
7
|
+
<% d.with_trigger do %>
|
|
8
|
+
<%= render(BetterUi::ButtonComponent.new(variant: :primary, style: :outline)) do %><%= size.to_s.upcase %><% end %>
|
|
9
|
+
<% end %>
|
|
10
|
+
|
|
11
|
+
<%= render BetterUi::CardComponent.new(style: :bordered, shadow: true, size: :md) do |card| %>
|
|
12
|
+
<% card.with_header do %>
|
|
13
|
+
<h3 class="text-lg font-semibold text-grayscale-900">Size: <%= size.to_s.upcase %></h3>
|
|
14
|
+
<% end %>
|
|
15
|
+
|
|
16
|
+
<% card.with_body do %>
|
|
17
|
+
<p class="text-grayscale-600">This dialog uses the <code class="bg-grayscale-100 px-1 rounded"><%= size %></code> size option.</p>
|
|
18
|
+
<% end %>
|
|
19
|
+
|
|
20
|
+
<% card.with_footer do %>
|
|
21
|
+
<div class="flex justify-end">
|
|
22
|
+
<%= render(BetterUi::ButtonComponent.new(
|
|
23
|
+
variant: :primary,
|
|
24
|
+
data: { action: "click->better-ui--dialog--dialog#close" }
|
|
25
|
+
)) do %>Close<% end %>
|
|
26
|
+
</div>
|
|
27
|
+
<% end %>
|
|
28
|
+
<% end %>
|
|
29
|
+
<% end %>
|
|
30
|
+
<% end %>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|