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 SheetTrigger < 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: {action: "click->
|
13
|
+
data: {action: "click->rbui--sheet#open"}
|
14
14
|
}
|
15
15
|
end
|
16
16
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class Tabs < Base
|
5
5
|
def initialize(default: nil, **attrs)
|
6
6
|
@default = default
|
@@ -16,8 +16,8 @@ module RubyUI
|
|
16
16
|
def default_attrs
|
17
17
|
{
|
18
18
|
data: {
|
19
|
-
controller: "
|
20
|
-
|
19
|
+
controller: "rbui--tabs",
|
20
|
+
rbui__tabs_active_value: @default
|
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 TabsContent < Base
|
5
5
|
def initialize(value:, **attrs)
|
6
6
|
@value = value
|
@@ -16,7 +16,7 @@ module RubyUI
|
|
16
16
|
def default_attrs
|
17
17
|
{
|
18
18
|
data: {
|
19
|
-
|
19
|
+
rbui__tabs_target: :content,
|
20
20
|
value: @value
|
21
21
|
},
|
22
22
|
class: "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 hidden"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class TabsTrigger < Base
|
5
5
|
def initialize(value:, **attrs)
|
6
6
|
@value = value
|
@@ -17,8 +17,8 @@ module RubyUI
|
|
17
17
|
{
|
18
18
|
type: :button,
|
19
19
|
data: {
|
20
|
-
|
21
|
-
action: "click->
|
20
|
+
rbui__tabs_target: "trigger",
|
21
|
+
action: "click->rbui--tabs#show",
|
22
22
|
value: @value
|
23
23
|
},
|
24
24
|
class: "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class Textarea < Base
|
5
5
|
def initialize(rows: 4, **attrs)
|
6
6
|
@rows = rows
|
@@ -16,8 +16,8 @@ module RubyUI
|
|
16
16
|
def default_attrs
|
17
17
|
{
|
18
18
|
data: {
|
19
|
-
|
20
|
-
action: "input->
|
19
|
+
rbui__form_field_target: "input",
|
20
|
+
action: "input->rbui--form-field#onInput invalid->rbui--form-field#onInvalid"
|
21
21
|
},
|
22
22
|
class: "flex w-full rounded-md border bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-none focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50 border-border focus-visible:ring-ring placeholder:text-muted-foreground"
|
23
23
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class ThemeToggle < Base
|
5
5
|
def view_template(&)
|
6
6
|
div(**attrs, &)
|
@@ -20,21 +20,21 @@ module RubyUI
|
|
20
20
|
|
21
21
|
def default_attrs
|
22
22
|
{
|
23
|
-
data: {controller: "
|
23
|
+
data: {controller: "rbui--theme-toggle"}
|
24
24
|
}
|
25
25
|
end
|
26
26
|
|
27
27
|
def default_light_attrs
|
28
28
|
{
|
29
29
|
class: "dark:hidden",
|
30
|
-
data: {action: "click->
|
30
|
+
data: {action: "click->rbui--theme-toggle#setDarkTheme"}
|
31
31
|
}
|
32
32
|
end
|
33
33
|
|
34
34
|
def default_dark_attrs
|
35
35
|
{
|
36
36
|
class: "hidden dark:inline-block",
|
37
|
-
data: {action: "click->
|
37
|
+
data: {action: "click->rbui--theme-toggle#setLightTheme"}
|
38
38
|
}
|
39
39
|
end
|
40
40
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class Tooltip < Base
|
5
5
|
def initialize(placement: "top", **attrs)
|
6
6
|
@placement = placement
|
@@ -16,8 +16,8 @@ module RubyUI
|
|
16
16
|
def default_attrs
|
17
17
|
{
|
18
18
|
data: {
|
19
|
-
controller: "
|
20
|
-
|
19
|
+
controller: "rbui--tooltip",
|
20
|
+
rbui__tooltip_placement_value: @placement
|
21
21
|
},
|
22
22
|
class: "group"
|
23
23
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class TooltipContent < Base
|
5
5
|
def initialize(**attrs)
|
6
6
|
@id = "tooltip#{SecureRandom.hex(4)}"
|
@@ -17,9 +17,9 @@ module RubyUI
|
|
17
17
|
{
|
18
18
|
id: @id,
|
19
19
|
data: {
|
20
|
-
|
20
|
+
rbui__tooltip_target: "content"
|
21
21
|
},
|
22
|
-
class: "invisible peer-hover:visible peer-focus:visible w-max absolute top-0 left-0 z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md peer-focus:zoom-in-95 animate-out fade-out-0 zoom-out-95 peer-hover:animate-in peer-focus:animate-in peer-hover:fade-in-0 peer-focus:fade-in-0 peer-hover:zoom-in-95 group-data-[
|
22
|
+
class: "invisible peer-hover:visible peer-focus:visible w-max absolute top-0 left-0 z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md peer-focus:zoom-in-95 animate-out fade-out-0 zoom-out-95 peer-hover:animate-in peer-focus:animate-in peer-hover:fade-in-0 peer-focus:fade-in-0 peer-hover:zoom-in-95 group-data-[rbui--tooltip-placement-value=bottom]:slide-in-from-top-2 group-data-[rbui--tooltip-placement-value=left]:slide-in-from-right-2 group-data-[rbui--tooltip-placement-value=right]:slide-in-from-left-2 group-data-[rbui--tooltip-placement-value=top]:slide-in-from-bottom-2 delay-500"
|
23
23
|
}
|
24
24
|
end
|
25
25
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module RBUI
|
4
4
|
class TooltipTrigger < 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__tooltip_target: "trigger"},
|
14
14
|
variant: :outline,
|
15
15
|
class: "peer"
|
16
16
|
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RBUI
|
4
|
+
class TypographyH1 < Base
|
5
|
+
def view_template(&)
|
6
|
+
h1(**attrs, &)
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def default_attrs
|
12
|
+
{
|
13
|
+
class: "scroll-m-20 text-3xl font-bold leading-normal lg:leading-normal tracking-tight lg:text-4xl"
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RBUI
|
4
|
+
class TypographyH2 < Base
|
5
|
+
def view_template(&)
|
6
|
+
h2(**attrs, &)
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def default_attrs
|
12
|
+
{
|
13
|
+
class: "scroll-m-20 text-2xl font-semibold tracking-tight transition-colors first:mt-0 pb-4 border-b"
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RBUI
|
4
|
+
class TypographyH3 < Base
|
5
|
+
def view_template(&)
|
6
|
+
h3(**attrs, &)
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def default_attrs
|
12
|
+
{
|
13
|
+
class: "scroll-m-20 text-xl font-semibold tracking-tight"
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RBUI
|
4
|
+
class TypographyList < Base
|
5
|
+
def initialize(items: [], numbered: false, **attrs)
|
6
|
+
@items = items
|
7
|
+
@numbered = numbered
|
8
|
+
super(**attrs)
|
9
|
+
end
|
10
|
+
|
11
|
+
def view_template(&)
|
12
|
+
if @items.empty?
|
13
|
+
list(**attrs, &)
|
14
|
+
else
|
15
|
+
list(**attrs) do
|
16
|
+
@items.each do |item|
|
17
|
+
TypographyListItem { item }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def list(**attrs, &)
|
26
|
+
if numbered?
|
27
|
+
ol(**attrs, &)
|
28
|
+
else
|
29
|
+
ul(**attrs, &)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def numbered? = @numbered
|
34
|
+
|
35
|
+
def not_numbered? = !numbered?
|
36
|
+
|
37
|
+
def default_attrs
|
38
|
+
{
|
39
|
+
class: tokens(
|
40
|
+
"my-6 ml-6 [&>li]:mt-2 [&>li]:pl-2",
|
41
|
+
numbered?: "list-decimal marker:font-medium",
|
42
|
+
not_numbered?: "list-disc"
|
43
|
+
)
|
44
|
+
}
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/rbui/version.rb
ADDED
data/lib/rbui.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "json"
|
4
|
+
require "phlex"
|
5
|
+
|
6
|
+
module RBUI
|
7
|
+
extend Phlex::Kit
|
8
|
+
|
9
|
+
def self.setup
|
10
|
+
yield self
|
11
|
+
create_namespace_module if namespace
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.create_namespace_module
|
15
|
+
source_module = self
|
16
|
+
mod = namespace.to_s.split("::").inject(Object) do |parent, const|
|
17
|
+
parent.const_get(const)
|
18
|
+
rescue
|
19
|
+
parent.const_set(const, Module.new)
|
20
|
+
end
|
21
|
+
|
22
|
+
mod.singleton_class.class_eval do
|
23
|
+
define_method :const_missing do |name|
|
24
|
+
source_module.const_defined?(name) ? source_module.const_get(name) : super(name)
|
25
|
+
end
|
26
|
+
|
27
|
+
define_method :method_missing do |name, *args, &block|
|
28
|
+
source_module.respond_to?(name) ? source_module.send(name, *args, &block) : super(name, *args, &block)
|
29
|
+
end
|
30
|
+
|
31
|
+
define_method :respond_to_missing? do |name, include_private = false|
|
32
|
+
source_module.respond_to?(name) || super(name, include_private)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.namespace
|
38
|
+
@namespace ||= nil
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.namespace=(value)
|
42
|
+
@namespace = value
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Require the Base class first
|
47
|
+
require_relative "rbui/base"
|
48
|
+
|
49
|
+
# Manually require all the files
|
50
|
+
Dir.glob(File.join(__dir__, "rbui", "**", "*.rb")).sort.each { |file| require file }
|
51
|
+
|
52
|
+
# If you need to require generators (assuming they're needed)
|
53
|
+
if defined?(Rails::Generators)
|
54
|
+
require_relative "generators/rbui/base_generator"
|
55
|
+
require_relative "generators/rbui/install/install_generator"
|
56
|
+
require_relative "generators/rbui/component_generator"
|
57
|
+
end
|
data/lib/ruby_ui.rb
CHANGED