ruby_ui 1.0.0.beta1 → 1.0.0.pre.alpha.4
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/generators/rbui/base_generator.rb +17 -0
- data/lib/generators/rbui/component_generator.rb +137 -0
- data/lib/generators/rbui/install/install_generator.rb +194 -0
- data/lib/{ruby_ui → rbui}/accordion/accordion.rb +1 -1
- data/lib/{ruby_ui → rbui}/accordion/accordion_content.rb +2 -2
- data/lib/{ruby_ui → rbui}/accordion/accordion_default_content.rb +1 -1
- data/lib/{ruby_ui → rbui}/accordion/accordion_default_trigger.rb +3 -3
- data/lib/{ruby_ui → rbui}/accordion/accordion_icon.rb +2 -2
- data/lib/{ruby_ui → rbui}/accordion/accordion_item.rb +4 -4
- data/lib/{ruby_ui → rbui}/accordion/accordion_trigger.rb +2 -3
- data/lib/{ruby_ui → rbui}/alert/alert.rb +2 -2
- data/lib/{ruby_ui → rbui}/alert/alert_description.rb +1 -1
- data/lib/{ruby_ui → rbui}/alert/alert_title.rb +1 -1
- data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog.rb +3 -3
- data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog_action.rb +2 -2
- data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog_cancel.rb +3 -3
- data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog_content.rb +4 -4
- data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog_description.rb +1 -1
- data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog_footer.rb +1 -1
- data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog_header.rb +1 -1
- data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog_title.rb +1 -1
- data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog_trigger.rb +2 -2
- data/lib/{ruby_ui → rbui}/aspect_ratio/aspect_ratio.rb +1 -1
- data/lib/{ruby_ui → rbui}/avatar/avatar.rb +2 -2
- data/lib/{ruby_ui → rbui}/avatar/avatar_fallback.rb +1 -1
- data/lib/{ruby_ui → rbui}/avatar/avatar_image.rb +1 -1
- data/lib/{ruby_ui → rbui}/badge/badge.rb +2 -2
- data/lib/{ruby_ui → rbui}/base.rb +8 -1
- data/lib/{ruby_ui → rbui}/button/button.rb +13 -13
- data/lib/rbui/calendar/calendar.rb +39 -0
- data/lib/{ruby_ui → rbui}/calendar/calendar_body.rb +2 -2
- data/lib/{ruby_ui → rbui}/calendar/calendar_days.rb +14 -14
- data/lib/{ruby_ui → rbui}/calendar/calendar_header.rb +1 -1
- data/lib/{ruby_ui → rbui}/calendar/calendar_next.rb +2 -2
- data/lib/{ruby_ui → rbui}/calendar/calendar_prev.rb +2 -2
- data/lib/{ruby_ui → rbui}/calendar/calendar_title.rb +2 -2
- data/lib/{ruby_ui → rbui}/calendar/calendar_weekdays.rb +2 -2
- data/lib/{ruby_ui → rbui}/card/card.rb +1 -1
- data/lib/{ruby_ui → rbui}/card/card_content.rb +1 -1
- data/lib/{ruby_ui → rbui}/card/card_description.rb +1 -1
- data/lib/{ruby_ui → rbui}/card/card_footer.rb +1 -1
- data/lib/{ruby_ui → rbui}/card/card_header.rb +1 -1
- data/lib/{ruby_ui → rbui}/card/card_title.rb +1 -1
- data/lib/{ruby_ui → rbui}/chart/chart.rb +3 -3
- data/lib/{ruby_ui → rbui}/checkbox/checkbox.rb +4 -4
- data/lib/{ruby_ui → rbui}/checkbox/checkbox_group.rb +2 -2
- data/lib/{ruby_ui → rbui}/clipboard/clipboard.rb +6 -6
- data/lib/{ruby_ui → rbui}/clipboard/clipboard_popover.rb +2 -2
- data/lib/{ruby_ui → rbui}/clipboard/clipboard_source.rb +2 -2
- data/lib/{ruby_ui → rbui}/clipboard/clipboard_trigger.rb +3 -3
- data/lib/{ruby_ui → rbui}/codeblock/codeblock.rb +10 -7
- data/lib/{ruby_ui → rbui}/collapsible/collapsible.rb +3 -3
- data/lib/{ruby_ui → rbui}/collapsible/collapsible_content.rb +2 -2
- data/lib/{ruby_ui → rbui}/collapsible/collapsible_trigger.rb +2 -2
- data/lib/rbui/combobox/combobox.rb +24 -0
- data/lib/rbui/combobox/combobox_content.rb +31 -0
- data/lib/{ruby_ui → rbui}/combobox/combobox_empty.rb +2 -2
- data/lib/{ruby_ui → rbui}/combobox/combobox_group.rb +2 -2
- data/lib/{ruby_ui → rbui}/combobox/combobox_input.rb +4 -4
- data/lib/{ruby_ui → rbui}/combobox/combobox_item.rb +5 -5
- data/lib/{ruby_ui → rbui}/combobox/combobox_list.rb +4 -2
- data/lib/{ruby_ui → rbui}/combobox/combobox_search_input.rb +3 -3
- data/lib/{ruby_ui → rbui}/combobox/combobox_separator.rb +1 -1
- data/lib/{ruby_ui → rbui}/combobox/combobox_trigger.rb +3 -3
- data/lib/{ruby_ui → rbui}/combobox/combobox_value.rb +2 -2
- data/lib/{ruby_ui → rbui}/command/command.rb +1 -1
- data/lib/{ruby_ui → rbui}/command/command_dialog.rb +2 -2
- data/lib/{ruby_ui → rbui}/command/command_dialog_content.rb +6 -6
- data/lib/{ruby_ui → rbui}/command/command_dialog_trigger.rb +3 -3
- data/lib/{ruby_ui → rbui}/command/command_empty.rb +2 -2
- data/lib/{ruby_ui → rbui}/command/command_group.rb +2 -2
- data/lib/{ruby_ui → rbui}/command/command_input.rb +3 -3
- data/lib/{ruby_ui → rbui}/command/command_item.rb +2 -2
- data/lib/{ruby_ui → rbui}/command/command_list.rb +1 -1
- data/lib/{ruby_ui → rbui}/context_menu/context_menu.rb +2 -2
- data/lib/{ruby_ui → rbui}/context_menu/context_menu_content.rb +2 -2
- data/lib/{ruby_ui → rbui}/context_menu/context_menu_item.rb +3 -3
- data/lib/{ruby_ui → rbui}/context_menu/context_menu_label.rb +2 -2
- data/lib/{ruby_ui → rbui}/context_menu/context_menu_separator.rb +1 -1
- data/lib/{ruby_ui → rbui}/context_menu/context_menu_trigger.rb +3 -3
- data/lib/{ruby_ui → rbui}/dialog/dialog.rb +3 -3
- data/lib/{ruby_ui → rbui}/dialog/dialog_content.rb +7 -7
- data/lib/{ruby_ui → rbui}/dialog/dialog_description.rb +1 -1
- data/lib/{ruby_ui → rbui}/dialog/dialog_footer.rb +1 -1
- data/lib/{ruby_ui → rbui}/dialog/dialog_header.rb +1 -1
- data/lib/{ruby_ui → rbui}/dialog/dialog_middle.rb +1 -1
- data/lib/{ruby_ui → rbui}/dialog/dialog_title.rb +1 -1
- data/lib/{ruby_ui → rbui}/dialog/dialog_trigger.rb +2 -2
- data/lib/{ruby_ui → rbui}/dropdown_menu/dropdown_menu.rb +4 -4
- data/lib/{ruby_ui → rbui}/dropdown_menu/dropdown_menu_content.rb +2 -2
- data/lib/{ruby_ui → rbui}/dropdown_menu/dropdown_menu_item.rb +3 -3
- data/lib/{ruby_ui → rbui}/dropdown_menu/dropdown_menu_label.rb +1 -1
- data/lib/{ruby_ui → rbui}/dropdown_menu/dropdown_menu_separator.rb +1 -1
- data/lib/{ruby_ui → rbui}/dropdown_menu/dropdown_menu_trigger.rb +2 -2
- data/lib/{ruby_ui → rbui}/form/form.rb +1 -1
- data/lib/{ruby_ui → rbui}/form/form_field.rb +2 -2
- data/lib/{ruby_ui → rbui}/form/form_field_error.rb +2 -2
- data/lib/{ruby_ui → rbui}/form/form_field_hint.rb +1 -1
- data/lib/{ruby_ui → rbui}/form/form_field_label.rb +1 -1
- data/lib/{ruby_ui → rbui}/hover_card/hover_card.rb +3 -3
- data/lib/{ruby_ui → rbui}/hover_card/hover_card_content.rb +2 -2
- data/lib/{ruby_ui → rbui}/hover_card/hover_card_trigger.rb +2 -2
- data/lib/{ruby_ui → rbui}/input/input.rb +3 -3
- data/lib/{ruby_ui → rbui}/link/link.rb +13 -13
- data/lib/{ruby_ui → rbui}/pagination/pagination.rb +1 -1
- data/lib/{ruby_ui → rbui}/pagination/pagination_content.rb +1 -1
- data/lib/{ruby_ui → rbui}/pagination/pagination_ellipsis.rb +1 -1
- data/lib/{ruby_ui → rbui}/pagination/pagination_item.rb +4 -4
- data/lib/{ruby_ui → rbui}/popover/popover.rb +4 -4
- data/lib/{ruby_ui → rbui}/popover/popover_content.rb +2 -2
- data/lib/{ruby_ui → rbui}/popover/popover_trigger.rb +2 -2
- data/lib/{ruby_ui → rbui}/radio_button/radio_button.rb +3 -3
- data/lib/rbui/railtie.rb +52 -0
- data/lib/{ruby_ui → rbui}/select/select.rb +5 -5
- data/lib/{ruby_ui → rbui}/select/select_content.rb +3 -3
- data/lib/{ruby_ui → rbui}/select/select_group.rb +1 -1
- data/lib/{ruby_ui → rbui}/select/select_input.rb +4 -4
- data/lib/{ruby_ui → rbui}/select/select_item.rb +4 -4
- data/lib/{ruby_ui → rbui}/select/select_label.rb +1 -1
- data/lib/{ruby_ui → rbui}/select/select_trigger.rb +3 -3
- data/lib/{ruby_ui → rbui}/select/select_value.rb +2 -2
- data/lib/{ruby_ui → rbui}/sheet/sheet.rb +2 -2
- data/lib/{ruby_ui → rbui}/sheet/sheet_content.rb +7 -7
- data/lib/{ruby_ui → rbui}/sheet/sheet_description.rb +1 -1
- data/lib/{ruby_ui → rbui}/sheet/sheet_footer.rb +1 -1
- data/lib/{ruby_ui → rbui}/sheet/sheet_header.rb +1 -1
- data/lib/{ruby_ui → rbui}/sheet/sheet_middle.rb +1 -1
- data/lib/{ruby_ui → rbui}/sheet/sheet_title.rb +1 -1
- data/lib/{ruby_ui → rbui}/sheet/sheet_trigger.rb +2 -2
- data/lib/{ruby_ui → rbui}/shortcut_key/shortcut_key.rb +1 -1
- data/lib/{ruby_ui → rbui}/table/table.rb +1 -1
- data/lib/{ruby_ui → rbui}/table/table_body.rb +1 -1
- data/lib/{ruby_ui → rbui}/table/table_caption.rb +1 -1
- data/lib/{ruby_ui → rbui}/table/table_cell.rb +1 -1
- data/lib/{ruby_ui → rbui}/table/table_footer.rb +1 -1
- data/lib/{ruby_ui → rbui}/table/table_head.rb +1 -1
- data/lib/{ruby_ui → rbui}/table/table_header.rb +1 -1
- data/lib/{ruby_ui → rbui}/table/table_row.rb +1 -1
- data/lib/{ruby_ui → rbui}/tabs/tabs.rb +3 -3
- data/lib/{ruby_ui → rbui}/tabs/tabs_content.rb +2 -2
- data/lib/{ruby_ui → rbui}/tabs/tabs_list.rb +1 -1
- data/lib/{ruby_ui → rbui}/tabs/tabs_trigger.rb +3 -3
- data/lib/{ruby_ui → rbui}/textarea/textarea.rb +3 -3
- data/lib/{ruby_ui → rbui}/theme_toggle/theme_toggle.rb +4 -4
- data/lib/{ruby_ui → rbui}/tooltip/tooltip.rb +3 -3
- data/lib/{ruby_ui → rbui}/tooltip/tooltip_content.rb +3 -3
- data/lib/{ruby_ui → rbui}/tooltip/tooltip_trigger.rb +2 -2
- data/lib/{ruby_ui → rbui}/typography/typography_blockquote.rb +1 -1
- data/lib/rbui/typography/typography_h1.rb +17 -0
- data/lib/rbui/typography/typography_h2.rb +17 -0
- data/lib/rbui/typography/typography_h3.rb +17 -0
- data/lib/rbui/typography/typography_h4.rb +17 -0
- data/lib/{ruby_ui/typography/inline_code.rb → rbui/typography/typography_inline_code.rb} +2 -2
- data/lib/{ruby_ui/typography/inline_link.rb → rbui/typography/typography_inline_link.rb} +2 -2
- data/lib/rbui/typography/typography_large.rb +17 -0
- data/lib/rbui/typography/typography_lead.rb +17 -0
- data/lib/rbui/typography/typography_list.rb +47 -0
- data/lib/rbui/typography/typography_list_item.rb +17 -0
- data/lib/rbui/typography/typography_muted.rb +17 -0
- data/lib/rbui/typography/typography_p.rb +17 -0
- data/lib/rbui/typography/typography_small.rb +17 -0
- data/lib/rbui/version.rb +5 -0
- data/lib/rbui.rb +57 -0
- data/lib/ruby_ui.rb +1 -5
- metadata +174 -163
- data/lib/generators/ruby_ui/component_generator.rb +0 -130
- data/lib/generators/ruby_ui/install/install_generator.rb +0 -90
- data/lib/generators/ruby_ui/javascript_utils.rb +0 -36
- data/lib/ruby_ui/calendar/calendar.rb +0 -39
- data/lib/ruby_ui/combobox/combobox.rb +0 -24
- data/lib/ruby_ui/combobox/combobox_content.rb +0 -31
- data/lib/ruby_ui/masked_input/masked_input.rb +0 -15
- data/lib/ruby_ui/typography/heading.rb +0 -60
- data/lib/ruby_ui/typography/text.rb +0 -53
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class Badge < Base
|
5
5
|
SIZES = {
|
6
6
|
sm: "px-1.5 py-0.5 text-xs",
|
@@ -53,7 +53,7 @@ module RubyUI
|
|
53
53
|
|
54
54
|
def default_attrs
|
55
55
|
{
|
56
|
-
class:
|
56
|
+
class: tokens("inline-flex items-center rounded-md font-medium ring-1 ring-inset", SIZES[@size], COLORS[@variant])
|
57
57
|
}
|
58
58
|
end
|
59
59
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require "tailwind_merge"
|
4
4
|
|
5
|
-
module
|
5
|
+
module RBUI
|
6
6
|
class Base < Phlex::HTML
|
7
7
|
TAILWIND_MERGER = ::TailwindMerge::Merger.new.freeze unless defined?(TAILWIND_MERGER)
|
8
8
|
|
@@ -13,6 +13,13 @@ module RubyUI
|
|
13
13
|
@attrs[:class] = TAILWIND_MERGER.merge(@attrs[:class]) if @attrs[:class]
|
14
14
|
end
|
15
15
|
|
16
|
+
if defined?(Rails) && Rails.env.development?
|
17
|
+
def before_template
|
18
|
+
comment { "Before #{self.class.name}" }
|
19
|
+
super
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
16
23
|
private
|
17
24
|
|
18
25
|
def default_attrs
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class Button < Base
|
5
5
|
def initialize(type: :button, variant: :primary, size: :md, icon: false, **attrs)
|
6
6
|
@type = type
|
@@ -35,45 +35,45 @@ module RubyUI
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def primary_classes
|
38
|
-
|
38
|
+
tokens(
|
39
39
|
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground shadow hover:bg-primary/90",
|
40
40
|
size_classes
|
41
|
-
|
41
|
+
)
|
42
42
|
end
|
43
43
|
|
44
44
|
def link_classes
|
45
|
-
|
45
|
+
tokens(
|
46
46
|
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 text-primary underline-offset-4 hover:underline",
|
47
47
|
size_classes
|
48
|
-
|
48
|
+
)
|
49
49
|
end
|
50
50
|
|
51
51
|
def secondary_classes
|
52
|
-
|
52
|
+
tokens(
|
53
53
|
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-secondary text-secondary-foreground hover:bg-opacity-80",
|
54
54
|
size_classes
|
55
|
-
|
55
|
+
)
|
56
56
|
end
|
57
57
|
|
58
58
|
def destructive_classes
|
59
|
-
|
59
|
+
tokens(
|
60
60
|
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
|
61
61
|
size_classes
|
62
|
-
|
62
|
+
)
|
63
63
|
end
|
64
64
|
|
65
65
|
def outline_classes
|
66
|
-
|
66
|
+
tokens(
|
67
67
|
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
|
68
68
|
size_classes
|
69
|
-
|
69
|
+
)
|
70
70
|
end
|
71
71
|
|
72
72
|
def ghost_classes
|
73
|
-
|
73
|
+
tokens(
|
74
74
|
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground",
|
75
75
|
size_classes
|
76
|
-
|
76
|
+
)
|
77
77
|
end
|
78
78
|
|
79
79
|
def default_classes
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RBUI
|
4
|
+
class Calendar < Base
|
5
|
+
def initialize(selected_date: nil, input_id: nil, date_format: "yyyy-MM-dd", **attrs)
|
6
|
+
@selected_date = selected_date
|
7
|
+
@input_id = input_id
|
8
|
+
@date_format = date_format
|
9
|
+
super(**attrs)
|
10
|
+
end
|
11
|
+
|
12
|
+
def view_template
|
13
|
+
div(**attrs) do
|
14
|
+
RBUI.CalendarHeader do
|
15
|
+
RBUI.CalendarTitle
|
16
|
+
RBUI.CalendarPrev
|
17
|
+
RBUI.CalendarNext
|
18
|
+
end
|
19
|
+
RBUI.CalendarBody # Where the calendar is rendered (Weekdays and Days)
|
20
|
+
RBUI.CalendarWeekdays # Template for the weekdays
|
21
|
+
RBUI.CalendarDays # Template for the days
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def default_attrs
|
28
|
+
{
|
29
|
+
class: "p-3 space-y-4",
|
30
|
+
data: {
|
31
|
+
controller: "rbui--calendar",
|
32
|
+
rbui__calendar_selected_date_value: @selected_date&.to_s,
|
33
|
+
rbui__calendar_format_value: @date_format,
|
34
|
+
rbui__calendar_rbui__calendar_input_outlet: @input_id
|
35
|
+
}
|
36
|
+
}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class CalendarBody < Base
|
5
5
|
def view_template
|
6
6
|
table(**attrs)
|
@@ -11,7 +11,7 @@ module RubyUI
|
|
11
11
|
def default_attrs
|
12
12
|
{
|
13
13
|
data: {
|
14
|
-
|
14
|
+
rbui__calendar_target: "calendar"
|
15
15
|
}
|
16
16
|
}
|
17
17
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class CalendarDays < Base
|
5
5
|
BASE_CLASS = "inline-flex items-center justify-center rounded-md text-sm ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 h-8 w-8 p-0 font-normal aria-selected:opacity-100"
|
6
6
|
|
@@ -17,13 +17,13 @@ module RubyUI
|
|
17
17
|
date_template("selectedDateTemplate") do
|
18
18
|
button(
|
19
19
|
data_day: "{{day}}",
|
20
|
-
data_action: "click->
|
20
|
+
data_action: "click->rbui--calendar#selectDay",
|
21
21
|
name: "day",
|
22
22
|
class:
|
23
|
-
|
23
|
+
tokens(
|
24
24
|
BASE_CLASS,
|
25
25
|
"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground"
|
26
|
-
|
26
|
+
),
|
27
27
|
role: "gridcell",
|
28
28
|
tabindex: "0",
|
29
29
|
type: "button",
|
@@ -36,13 +36,13 @@ module RubyUI
|
|
36
36
|
date_template("todayDateTemplate") do
|
37
37
|
button(
|
38
38
|
data_day: "{{day}}",
|
39
|
-
data_action: "click->
|
39
|
+
data_action: "click->rbui--calendar#selectDay",
|
40
40
|
name: "day",
|
41
41
|
class:
|
42
|
-
|
42
|
+
tokens(
|
43
43
|
BASE_CLASS,
|
44
44
|
"bg-accent text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground"
|
45
|
-
|
45
|
+
),
|
46
46
|
role: "gridcell",
|
47
47
|
tabindex: "-1",
|
48
48
|
type: "button"
|
@@ -54,13 +54,13 @@ module RubyUI
|
|
54
54
|
date_template("currentMonthDateTemplate") do
|
55
55
|
button(
|
56
56
|
data_day: "{{day}}",
|
57
|
-
data_action: "click->
|
57
|
+
data_action: "click->rbui--calendar#selectDay",
|
58
58
|
name: "day",
|
59
59
|
class:
|
60
|
-
|
60
|
+
tokens(
|
61
61
|
BASE_CLASS,
|
62
62
|
"bg-background text-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground"
|
63
|
-
|
63
|
+
),
|
64
64
|
role: "gridcell",
|
65
65
|
tabindex: "-1",
|
66
66
|
type: "button"
|
@@ -72,13 +72,13 @@ module RubyUI
|
|
72
72
|
date_template("otherMonthDateTemplate") do
|
73
73
|
button(
|
74
74
|
data_day: "{{day}}",
|
75
|
-
data_action: " click->
|
75
|
+
data_action: " click->rbui--calendar#selectDay",
|
76
76
|
name: "day",
|
77
77
|
class:
|
78
|
-
|
78
|
+
tokens(
|
79
79
|
BASE_CLASS,
|
80
80
|
"bg-background text-muted-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground"
|
81
|
-
|
81
|
+
),
|
82
82
|
role: "gridcell",
|
83
83
|
tabindex: "-1",
|
84
84
|
type: "button"
|
@@ -87,7 +87,7 @@ module RubyUI
|
|
87
87
|
end
|
88
88
|
|
89
89
|
def date_template(target, &block)
|
90
|
-
|
90
|
+
template_tag(data: {rbui__calendar_target: target}) do
|
91
91
|
td(
|
92
92
|
class:
|
93
93
|
"relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected])]:rounded-md",
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class CalendarNext < Base
|
5
5
|
def view_template(&block)
|
6
6
|
button(**attrs) do
|
@@ -36,7 +36,7 @@ module RubyUI
|
|
36
36
|
class:
|
37
37
|
"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input hover:bg-accent hover:text-accent-foreground h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 absolute right-1",
|
38
38
|
type: "button",
|
39
|
-
data_action: "click->
|
39
|
+
data_action: "click->rbui--calendar#nextMonth"
|
40
40
|
}
|
41
41
|
end
|
42
42
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class CalendarPrev < Base
|
5
5
|
def view_template(&block)
|
6
6
|
button(**attrs) do
|
@@ -36,7 +36,7 @@ module RubyUI
|
|
36
36
|
class:
|
37
37
|
"rdp-button_reset rdp-button inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input hover:bg-accent hover:text-accent-foreground h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 absolute left-1",
|
38
38
|
type: "button",
|
39
|
-
data_action: "click->
|
39
|
+
data_action: "click->rbui--calendar#prevMonth"
|
40
40
|
}
|
41
41
|
end
|
42
42
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class CalendarTitle < Base
|
5
5
|
def initialize(default: "Month Year", **attrs)
|
6
6
|
@default = default
|
@@ -19,7 +19,7 @@ module RubyUI
|
|
19
19
|
aria_live: "polite",
|
20
20
|
role: "presentation",
|
21
21
|
data: {
|
22
|
-
|
22
|
+
rbui__calendar_target: "title"
|
23
23
|
}
|
24
24
|
}
|
25
25
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class CalendarWeekdays < Base
|
5
5
|
DAYS = %w[Monday Tuesday Wednesday Thursday Friday Saturday Sunday].freeze
|
6
6
|
|
7
7
|
def view_template
|
8
|
-
|
8
|
+
template_tag(data: {rbui__calendar_target: "weekdaysTemplate"}) do
|
9
9
|
thead(**attrs) do
|
10
10
|
tr(class: "flex") do
|
11
11
|
DAYS.each do |day|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class Chart < Base
|
5
5
|
def initialize(options: {}, **attrs)
|
6
6
|
@options = options.to_json
|
@@ -15,8 +15,8 @@ module RubyUI
|
|
15
15
|
|
16
16
|
def default_attrs
|
17
17
|
{
|
18
|
-
data_controller: "
|
19
|
-
|
18
|
+
data_controller: "rbui--chart",
|
19
|
+
data_rbui__chart_options_value: @options
|
20
20
|
}
|
21
21
|
end
|
22
22
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class Checkbox < Base
|
5
5
|
def view_template
|
6
6
|
input(**attrs)
|
@@ -12,9 +12,9 @@ module RubyUI
|
|
12
12
|
{
|
13
13
|
type: "checkbox",
|
14
14
|
data: {
|
15
|
-
|
16
|
-
|
17
|
-
action: "
|
15
|
+
rbui__form_field_target: "input",
|
16
|
+
rbui__checkbox_group_target: "checkbox",
|
17
|
+
action: "input->rbui--form-field#onInput invalid->rbui--form-field#onInvalid change->rbui--checkbox-group#onChange"
|
18
18
|
},
|
19
19
|
class: "peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 accent-primary"
|
20
20
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class CheckboxGroup < Base
|
5
5
|
def view_template(&)
|
6
6
|
div(**attrs, &)
|
@@ -12,7 +12,7 @@ module RubyUI
|
|
12
12
|
{
|
13
13
|
role: "group",
|
14
14
|
data: {
|
15
|
-
controller: "
|
15
|
+
controller: "rbui--checkbox-group"
|
16
16
|
}
|
17
17
|
}
|
18
18
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class Clipboard < Base
|
5
5
|
def initialize(options: {}, success: "Copied!", error: "Copy Failed!", **attrs)
|
6
6
|
@options = options
|
@@ -30,11 +30,11 @@ module RubyUI
|
|
30
30
|
def default_attrs
|
31
31
|
{
|
32
32
|
data: {
|
33
|
-
controller: "
|
34
|
-
action: "click@window->
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
controller: "rbui--clipboard",
|
34
|
+
action: "click@window->rbui--clipboard#onClickOutside",
|
35
|
+
rbui__clipboard_success_value: @success,
|
36
|
+
rbui__clipboard_error_value: @error,
|
37
|
+
rbui__clipboard_options_value: @options.to_json
|
38
38
|
}
|
39
39
|
}
|
40
40
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class ClipboardPopover < Base
|
5
5
|
def initialize(type:, **attrs)
|
6
6
|
@type = type
|
@@ -11,7 +11,7 @@ module RubyUI
|
|
11
11
|
div(
|
12
12
|
class: "hidden",
|
13
13
|
style: "width: max-content; position: absolute; top: 0; left: 0;",
|
14
|
-
data: {
|
14
|
+
data: {rbui__clipboard_target: clipboard_target}
|
15
15
|
) do
|
16
16
|
div(**attrs, &block)
|
17
17
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class ClipboardSource < Base
|
5
5
|
def view_template(&)
|
6
6
|
div(**attrs, &)
|
@@ -11,7 +11,7 @@ module RubyUI
|
|
11
11
|
def default_attrs
|
12
12
|
{
|
13
13
|
data: {
|
14
|
-
|
14
|
+
rbui__clipboard_target: "source"
|
15
15
|
}
|
16
16
|
}
|
17
17
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class ClipboardTrigger < Base
|
5
5
|
def view_template(&)
|
6
6
|
div(**attrs, &)
|
@@ -11,8 +11,8 @@ module RubyUI
|
|
11
11
|
def default_attrs
|
12
12
|
{
|
13
13
|
data: {
|
14
|
-
|
15
|
-
action: "click->
|
14
|
+
rbui__clipboard_target: "trigger",
|
15
|
+
action: "click->rbui--clipboard#copy"
|
16
16
|
}
|
17
17
|
}
|
18
18
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require "rouge"
|
4
4
|
|
5
|
-
module
|
5
|
+
module RBUI
|
6
6
|
class Codeblock < Base
|
7
7
|
FORMATTER = ::Rouge::Formatters::HTML.new
|
8
8
|
ROUGE_CSS = Rouge::Themes::Github.mode(:dark).render(scope: ".highlight") # See themes here: https://rouge-ruby.github.io/docs/Rouge/CSSTheme.html
|
@@ -34,19 +34,18 @@ module RubyUI
|
|
34
34
|
|
35
35
|
def default_attrs
|
36
36
|
{
|
37
|
-
style: {tab_size: 2},
|
38
37
|
class: "highlight text-sm max-h-[350px] after:content-none flex font-mono overflow-auto overflow-x rounded-md border !bg-stone-900 [&_pre]:p-4"
|
39
38
|
}
|
40
39
|
end
|
41
40
|
|
42
41
|
def with_clipboard
|
43
|
-
|
44
|
-
|
42
|
+
RBUI.Clipboard(success: @clipboard_success, error: @clipboard_error, class: "relative") do
|
43
|
+
RBUI.ClipboardSource do
|
45
44
|
codeblock
|
46
45
|
end
|
47
46
|
div(class: "absolute top-2 right-2") do
|
48
|
-
|
49
|
-
|
47
|
+
RBUI.ClipboardTrigger do
|
48
|
+
RBUI.Button(variant: :ghost, size: :sm, icon: true, class: "text-white hover:text-white hover:bg-white/20") { clipboard_icon }
|
50
49
|
end
|
51
50
|
end
|
52
51
|
end
|
@@ -55,7 +54,11 @@ module RubyUI
|
|
55
54
|
def codeblock
|
56
55
|
div(**attrs) do
|
57
56
|
div(class: "after:content-none") do
|
58
|
-
pre
|
57
|
+
pre do
|
58
|
+
unsafe_raw FORMATTER.format(
|
59
|
+
lexer.lex(@code)
|
60
|
+
)
|
61
|
+
end
|
59
62
|
end
|
60
63
|
end
|
61
64
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class Collapsible < Base
|
5
5
|
def initialize(open: false, **attrs)
|
6
6
|
@open = open
|
@@ -16,8 +16,8 @@ module RubyUI
|
|
16
16
|
def default_attrs
|
17
17
|
{
|
18
18
|
data: {
|
19
|
-
controller: "
|
20
|
-
|
19
|
+
controller: "rbui--collapsible",
|
20
|
+
rbui__collapsible_open_value: @open
|
21
21
|
}
|
22
22
|
}
|
23
23
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class CollapsibleContent < Base
|
5
5
|
def view_template(&)
|
6
6
|
div(**attrs, &)
|
@@ -10,7 +10,7 @@ module RubyUI
|
|
10
10
|
|
11
11
|
def default_attrs
|
12
12
|
{
|
13
|
-
data: {
|
13
|
+
data: {rbui__collapsible_target: "content"},
|
14
14
|
class: "overflow-y-hidden"
|
15
15
|
}
|
16
16
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class CollapsibleTrigger < Base
|
5
5
|
def view_template(&)
|
6
6
|
div(**attrs, &)
|
@@ -11,7 +11,7 @@ module RubyUI
|
|
11
11
|
def default_attrs
|
12
12
|
{
|
13
13
|
data: {
|
14
|
-
action: "click->
|
14
|
+
action: "click->rbui--collapsible#toggle"
|
15
15
|
}
|
16
16
|
}
|
17
17
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RBUI
|
4
|
+
class Combobox < Base
|
5
|
+
def view_template(&)
|
6
|
+
div(**attrs, &)
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def default_attrs
|
12
|
+
{
|
13
|
+
data: {
|
14
|
+
controller: "rbui--combobox",
|
15
|
+
rbui__combobox_open_value: "false",
|
16
|
+
action: "click@window->rbui--combobox#onClickOutside",
|
17
|
+
rbui__combobox_rbui__combobox_content_outlet: ".combobox-content",
|
18
|
+
rbui__combobox_rbui__combobox_item_outlet: ".combobox-item"
|
19
|
+
},
|
20
|
+
class: "group/combobox w-full relative"
|
21
|
+
}
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|