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.
Files changed (175) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/rbui/base_generator.rb +17 -0
  3. data/lib/generators/rbui/component_generator.rb +137 -0
  4. data/lib/generators/rbui/install/install_generator.rb +194 -0
  5. data/lib/{ruby_ui → rbui}/accordion/accordion.rb +1 -1
  6. data/lib/{ruby_ui → rbui}/accordion/accordion_content.rb +2 -2
  7. data/lib/{ruby_ui → rbui}/accordion/accordion_default_content.rb +1 -1
  8. data/lib/{ruby_ui → rbui}/accordion/accordion_default_trigger.rb +3 -3
  9. data/lib/{ruby_ui → rbui}/accordion/accordion_icon.rb +2 -2
  10. data/lib/{ruby_ui → rbui}/accordion/accordion_item.rb +4 -4
  11. data/lib/{ruby_ui → rbui}/accordion/accordion_trigger.rb +2 -3
  12. data/lib/{ruby_ui → rbui}/alert/alert.rb +2 -2
  13. data/lib/{ruby_ui → rbui}/alert/alert_description.rb +1 -1
  14. data/lib/{ruby_ui → rbui}/alert/alert_title.rb +1 -1
  15. data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog.rb +3 -3
  16. data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog_action.rb +2 -2
  17. data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog_cancel.rb +3 -3
  18. data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog_content.rb +4 -4
  19. data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog_description.rb +1 -1
  20. data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog_footer.rb +1 -1
  21. data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog_header.rb +1 -1
  22. data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog_title.rb +1 -1
  23. data/lib/{ruby_ui → rbui}/alert_dialog/alert_dialog_trigger.rb +2 -2
  24. data/lib/{ruby_ui → rbui}/aspect_ratio/aspect_ratio.rb +1 -1
  25. data/lib/{ruby_ui → rbui}/avatar/avatar.rb +2 -2
  26. data/lib/{ruby_ui → rbui}/avatar/avatar_fallback.rb +1 -1
  27. data/lib/{ruby_ui → rbui}/avatar/avatar_image.rb +1 -1
  28. data/lib/{ruby_ui → rbui}/badge/badge.rb +2 -2
  29. data/lib/{ruby_ui → rbui}/base.rb +8 -1
  30. data/lib/{ruby_ui → rbui}/button/button.rb +13 -13
  31. data/lib/rbui/calendar/calendar.rb +39 -0
  32. data/lib/{ruby_ui → rbui}/calendar/calendar_body.rb +2 -2
  33. data/lib/{ruby_ui → rbui}/calendar/calendar_days.rb +14 -14
  34. data/lib/{ruby_ui → rbui}/calendar/calendar_header.rb +1 -1
  35. data/lib/{ruby_ui → rbui}/calendar/calendar_next.rb +2 -2
  36. data/lib/{ruby_ui → rbui}/calendar/calendar_prev.rb +2 -2
  37. data/lib/{ruby_ui → rbui}/calendar/calendar_title.rb +2 -2
  38. data/lib/{ruby_ui → rbui}/calendar/calendar_weekdays.rb +2 -2
  39. data/lib/{ruby_ui → rbui}/card/card.rb +1 -1
  40. data/lib/{ruby_ui → rbui}/card/card_content.rb +1 -1
  41. data/lib/{ruby_ui → rbui}/card/card_description.rb +1 -1
  42. data/lib/{ruby_ui → rbui}/card/card_footer.rb +1 -1
  43. data/lib/{ruby_ui → rbui}/card/card_header.rb +1 -1
  44. data/lib/{ruby_ui → rbui}/card/card_title.rb +1 -1
  45. data/lib/{ruby_ui → rbui}/chart/chart.rb +3 -3
  46. data/lib/{ruby_ui → rbui}/checkbox/checkbox.rb +4 -4
  47. data/lib/{ruby_ui → rbui}/checkbox/checkbox_group.rb +2 -2
  48. data/lib/{ruby_ui → rbui}/clipboard/clipboard.rb +6 -6
  49. data/lib/{ruby_ui → rbui}/clipboard/clipboard_popover.rb +2 -2
  50. data/lib/{ruby_ui → rbui}/clipboard/clipboard_source.rb +2 -2
  51. data/lib/{ruby_ui → rbui}/clipboard/clipboard_trigger.rb +3 -3
  52. data/lib/{ruby_ui → rbui}/codeblock/codeblock.rb +10 -7
  53. data/lib/{ruby_ui → rbui}/collapsible/collapsible.rb +3 -3
  54. data/lib/{ruby_ui → rbui}/collapsible/collapsible_content.rb +2 -2
  55. data/lib/{ruby_ui → rbui}/collapsible/collapsible_trigger.rb +2 -2
  56. data/lib/rbui/combobox/combobox.rb +24 -0
  57. data/lib/rbui/combobox/combobox_content.rb +31 -0
  58. data/lib/{ruby_ui → rbui}/combobox/combobox_empty.rb +2 -2
  59. data/lib/{ruby_ui → rbui}/combobox/combobox_group.rb +2 -2
  60. data/lib/{ruby_ui → rbui}/combobox/combobox_input.rb +4 -4
  61. data/lib/{ruby_ui → rbui}/combobox/combobox_item.rb +5 -5
  62. data/lib/{ruby_ui → rbui}/combobox/combobox_list.rb +4 -2
  63. data/lib/{ruby_ui → rbui}/combobox/combobox_search_input.rb +3 -3
  64. data/lib/{ruby_ui → rbui}/combobox/combobox_separator.rb +1 -1
  65. data/lib/{ruby_ui → rbui}/combobox/combobox_trigger.rb +3 -3
  66. data/lib/{ruby_ui → rbui}/combobox/combobox_value.rb +2 -2
  67. data/lib/{ruby_ui → rbui}/command/command.rb +1 -1
  68. data/lib/{ruby_ui → rbui}/command/command_dialog.rb +2 -2
  69. data/lib/{ruby_ui → rbui}/command/command_dialog_content.rb +6 -6
  70. data/lib/{ruby_ui → rbui}/command/command_dialog_trigger.rb +3 -3
  71. data/lib/{ruby_ui → rbui}/command/command_empty.rb +2 -2
  72. data/lib/{ruby_ui → rbui}/command/command_group.rb +2 -2
  73. data/lib/{ruby_ui → rbui}/command/command_input.rb +3 -3
  74. data/lib/{ruby_ui → rbui}/command/command_item.rb +2 -2
  75. data/lib/{ruby_ui → rbui}/command/command_list.rb +1 -1
  76. data/lib/{ruby_ui → rbui}/context_menu/context_menu.rb +2 -2
  77. data/lib/{ruby_ui → rbui}/context_menu/context_menu_content.rb +2 -2
  78. data/lib/{ruby_ui → rbui}/context_menu/context_menu_item.rb +3 -3
  79. data/lib/{ruby_ui → rbui}/context_menu/context_menu_label.rb +2 -2
  80. data/lib/{ruby_ui → rbui}/context_menu/context_menu_separator.rb +1 -1
  81. data/lib/{ruby_ui → rbui}/context_menu/context_menu_trigger.rb +3 -3
  82. data/lib/{ruby_ui → rbui}/dialog/dialog.rb +3 -3
  83. data/lib/{ruby_ui → rbui}/dialog/dialog_content.rb +7 -7
  84. data/lib/{ruby_ui → rbui}/dialog/dialog_description.rb +1 -1
  85. data/lib/{ruby_ui → rbui}/dialog/dialog_footer.rb +1 -1
  86. data/lib/{ruby_ui → rbui}/dialog/dialog_header.rb +1 -1
  87. data/lib/{ruby_ui → rbui}/dialog/dialog_middle.rb +1 -1
  88. data/lib/{ruby_ui → rbui}/dialog/dialog_title.rb +1 -1
  89. data/lib/{ruby_ui → rbui}/dialog/dialog_trigger.rb +2 -2
  90. data/lib/{ruby_ui → rbui}/dropdown_menu/dropdown_menu.rb +4 -4
  91. data/lib/{ruby_ui → rbui}/dropdown_menu/dropdown_menu_content.rb +2 -2
  92. data/lib/{ruby_ui → rbui}/dropdown_menu/dropdown_menu_item.rb +3 -3
  93. data/lib/{ruby_ui → rbui}/dropdown_menu/dropdown_menu_label.rb +1 -1
  94. data/lib/{ruby_ui → rbui}/dropdown_menu/dropdown_menu_separator.rb +1 -1
  95. data/lib/{ruby_ui → rbui}/dropdown_menu/dropdown_menu_trigger.rb +2 -2
  96. data/lib/{ruby_ui → rbui}/form/form.rb +1 -1
  97. data/lib/{ruby_ui → rbui}/form/form_field.rb +2 -2
  98. data/lib/{ruby_ui → rbui}/form/form_field_error.rb +2 -2
  99. data/lib/{ruby_ui → rbui}/form/form_field_hint.rb +1 -1
  100. data/lib/{ruby_ui → rbui}/form/form_field_label.rb +1 -1
  101. data/lib/{ruby_ui → rbui}/hover_card/hover_card.rb +3 -3
  102. data/lib/{ruby_ui → rbui}/hover_card/hover_card_content.rb +2 -2
  103. data/lib/{ruby_ui → rbui}/hover_card/hover_card_trigger.rb +2 -2
  104. data/lib/{ruby_ui → rbui}/input/input.rb +3 -3
  105. data/lib/{ruby_ui → rbui}/link/link.rb +13 -13
  106. data/lib/{ruby_ui → rbui}/pagination/pagination.rb +1 -1
  107. data/lib/{ruby_ui → rbui}/pagination/pagination_content.rb +1 -1
  108. data/lib/{ruby_ui → rbui}/pagination/pagination_ellipsis.rb +1 -1
  109. data/lib/{ruby_ui → rbui}/pagination/pagination_item.rb +4 -4
  110. data/lib/{ruby_ui → rbui}/popover/popover.rb +4 -4
  111. data/lib/{ruby_ui → rbui}/popover/popover_content.rb +2 -2
  112. data/lib/{ruby_ui → rbui}/popover/popover_trigger.rb +2 -2
  113. data/lib/{ruby_ui → rbui}/radio_button/radio_button.rb +3 -3
  114. data/lib/rbui/railtie.rb +52 -0
  115. data/lib/{ruby_ui → rbui}/select/select.rb +5 -5
  116. data/lib/{ruby_ui → rbui}/select/select_content.rb +3 -3
  117. data/lib/{ruby_ui → rbui}/select/select_group.rb +1 -1
  118. data/lib/{ruby_ui → rbui}/select/select_input.rb +4 -4
  119. data/lib/{ruby_ui → rbui}/select/select_item.rb +4 -4
  120. data/lib/{ruby_ui → rbui}/select/select_label.rb +1 -1
  121. data/lib/{ruby_ui → rbui}/select/select_trigger.rb +3 -3
  122. data/lib/{ruby_ui → rbui}/select/select_value.rb +2 -2
  123. data/lib/{ruby_ui → rbui}/sheet/sheet.rb +2 -2
  124. data/lib/{ruby_ui → rbui}/sheet/sheet_content.rb +7 -7
  125. data/lib/{ruby_ui → rbui}/sheet/sheet_description.rb +1 -1
  126. data/lib/{ruby_ui → rbui}/sheet/sheet_footer.rb +1 -1
  127. data/lib/{ruby_ui → rbui}/sheet/sheet_header.rb +1 -1
  128. data/lib/{ruby_ui → rbui}/sheet/sheet_middle.rb +1 -1
  129. data/lib/{ruby_ui → rbui}/sheet/sheet_title.rb +1 -1
  130. data/lib/{ruby_ui → rbui}/sheet/sheet_trigger.rb +2 -2
  131. data/lib/{ruby_ui → rbui}/shortcut_key/shortcut_key.rb +1 -1
  132. data/lib/{ruby_ui → rbui}/table/table.rb +1 -1
  133. data/lib/{ruby_ui → rbui}/table/table_body.rb +1 -1
  134. data/lib/{ruby_ui → rbui}/table/table_caption.rb +1 -1
  135. data/lib/{ruby_ui → rbui}/table/table_cell.rb +1 -1
  136. data/lib/{ruby_ui → rbui}/table/table_footer.rb +1 -1
  137. data/lib/{ruby_ui → rbui}/table/table_head.rb +1 -1
  138. data/lib/{ruby_ui → rbui}/table/table_header.rb +1 -1
  139. data/lib/{ruby_ui → rbui}/table/table_row.rb +1 -1
  140. data/lib/{ruby_ui → rbui}/tabs/tabs.rb +3 -3
  141. data/lib/{ruby_ui → rbui}/tabs/tabs_content.rb +2 -2
  142. data/lib/{ruby_ui → rbui}/tabs/tabs_list.rb +1 -1
  143. data/lib/{ruby_ui → rbui}/tabs/tabs_trigger.rb +3 -3
  144. data/lib/{ruby_ui → rbui}/textarea/textarea.rb +3 -3
  145. data/lib/{ruby_ui → rbui}/theme_toggle/theme_toggle.rb +4 -4
  146. data/lib/{ruby_ui → rbui}/tooltip/tooltip.rb +3 -3
  147. data/lib/{ruby_ui → rbui}/tooltip/tooltip_content.rb +3 -3
  148. data/lib/{ruby_ui → rbui}/tooltip/tooltip_trigger.rb +2 -2
  149. data/lib/{ruby_ui → rbui}/typography/typography_blockquote.rb +1 -1
  150. data/lib/rbui/typography/typography_h1.rb +17 -0
  151. data/lib/rbui/typography/typography_h2.rb +17 -0
  152. data/lib/rbui/typography/typography_h3.rb +17 -0
  153. data/lib/rbui/typography/typography_h4.rb +17 -0
  154. data/lib/{ruby_ui/typography/inline_code.rb → rbui/typography/typography_inline_code.rb} +2 -2
  155. data/lib/{ruby_ui/typography/inline_link.rb → rbui/typography/typography_inline_link.rb} +2 -2
  156. data/lib/rbui/typography/typography_large.rb +17 -0
  157. data/lib/rbui/typography/typography_lead.rb +17 -0
  158. data/lib/rbui/typography/typography_list.rb +47 -0
  159. data/lib/rbui/typography/typography_list_item.rb +17 -0
  160. data/lib/rbui/typography/typography_muted.rb +17 -0
  161. data/lib/rbui/typography/typography_p.rb +17 -0
  162. data/lib/rbui/typography/typography_small.rb +17 -0
  163. data/lib/rbui/version.rb +5 -0
  164. data/lib/rbui.rb +57 -0
  165. data/lib/ruby_ui.rb +1 -5
  166. metadata +174 -163
  167. data/lib/generators/ruby_ui/component_generator.rb +0 -130
  168. data/lib/generators/ruby_ui/install/install_generator.rb +0 -90
  169. data/lib/generators/ruby_ui/javascript_utils.rb +0 -36
  170. data/lib/ruby_ui/calendar/calendar.rb +0 -39
  171. data/lib/ruby_ui/combobox/combobox.rb +0 -24
  172. data/lib/ruby_ui/combobox/combobox_content.rb +0 -31
  173. data/lib/ruby_ui/masked_input/masked_input.rb +0 -15
  174. data/lib/ruby_ui/typography/heading.rb +0 -60
  175. data/lib/ruby_ui/typography/text.rb +0 -53
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module RubyUI
3
+ module RBUI
4
4
  class SheetMiddle < Base
5
5
  def view_template(&)
6
6
  div(**attrs, &)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module RubyUI
3
+ module RBUI
4
4
  class SheetTitle < Base
5
5
  def view_template(&)
6
6
  h3(**attrs, &)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module RubyUI
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->ruby-ui--sheet#open"}
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 RubyUI
3
+ module RBUI
4
4
  class ShortcutKey < Base
5
5
  def view_template(&)
6
6
  kbd(**attrs, &)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module RubyUI
3
+ module RBUI
4
4
  class Table < Base
5
5
  def view_template(&block)
6
6
  div(class: "relative w-full overflow-auto") do
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module RubyUI
3
+ module RBUI
4
4
  class TableBody < Base
5
5
  def view_template(&)
6
6
  tbody(**attrs, &)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module RubyUI
3
+ module RBUI
4
4
  class TableCaption < Base
5
5
  def view_template(&)
6
6
  caption(**attrs, &)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module RubyUI
3
+ module RBUI
4
4
  class TableCell < Base
5
5
  def view_template(&)
6
6
  td(**attrs, &)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module RubyUI
3
+ module RBUI
4
4
  class TableFooter < Base
5
5
  def view_template(&)
6
6
  tfoot(**attrs, &)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module RubyUI
3
+ module RBUI
4
4
  class TableHead < Base
5
5
  def view_template(&)
6
6
  th(**attrs, &)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module RubyUI
3
+ module RBUI
4
4
  class TableHeader < Base
5
5
  def view_template(&)
6
6
  thead(**attrs, &)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module RubyUI
3
+ module RBUI
4
4
  class TableRow < Base
5
5
  def view_template(&)
6
6
  tr(**attrs, &)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module RubyUI
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: "ruby-ui--tabs",
20
- ruby_ui__tabs_active_value: @default
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 RubyUI
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
- ruby_ui__tabs_target: :content,
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 RubyUI
3
+ module RBUI
4
4
  class TabsList < Base
5
5
  def view_template(&)
6
6
  div(**attrs, &)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module RubyUI
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
- ruby_ui__tabs_target: "trigger",
21
- action: "click->ruby-ui--tabs#show",
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 RubyUI
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
- ruby_ui__form_field_target: "input",
20
- action: "input->ruby-ui--form-field#onInput invalid->ruby-ui--form-field#onInvalid"
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 RubyUI
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: "ruby-ui--theme-toggle"}
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->ruby-ui--theme-toggle#setDarkTheme"}
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->ruby-ui--theme-toggle#setLightTheme"}
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 RubyUI
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: "ruby-ui--tooltip",
20
- ruby_ui__tooltip_placement_value: @placement
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 RubyUI
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
- ruby_ui__tooltip_target: "content"
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-[ruby-ui--tooltip-placement-value=bottom]:slide-in-from-top-2 group-data-[ruby-ui--tooltip-placement-value=left]:slide-in-from-right-2 group-data-[ruby-ui--tooltip-placement-value=right]:slide-in-from-left-2 group-data-[ruby-ui--tooltip-placement-value=top]:slide-in-from-bottom-2 delay-500"
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 RubyUI
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: {ruby_ui__tooltip_target: "trigger"},
13
+ data: {rbui__tooltip_target: "trigger"},
14
14
  variant: :outline,
15
15
  class: "peer"
16
16
  }
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module RubyUI
3
+ module RBUI
4
4
  class TypographyBlockquote < Base
5
5
  def view_template(&)
6
6
  blockquote(**attrs, &)
@@ -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,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RBUI
4
+ class TypographyH4 < Base
5
+ def view_template(&)
6
+ h4(**attrs, &)
7
+ end
8
+
9
+ private
10
+
11
+ def default_attrs
12
+ {
13
+ class: "scroll-m-20 text-lg font-medium tracking-tight"
14
+ }
15
+ end
16
+ end
17
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module RubyUI
4
- class InlineCode < Base
3
+ module RBUI
4
+ class TypographyInlineCode < Base
5
5
  def view_template(&)
6
6
  code(**attrs, &)
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module RubyUI
4
- class InlineLink < Base
3
+ module RBUI
4
+ class TypographyInlineLink < Base
5
5
  def initialize(href:, **attrs)
6
6
  super(**attrs)
7
7
  @href = href
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RBUI
4
+ class TypographyLarge < Base
5
+ def view_template(&)
6
+ div(**attrs, &)
7
+ end
8
+
9
+ private
10
+
11
+ def default_attrs
12
+ {
13
+ class: "text-lg font-semibold"
14
+ }
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RBUI
4
+ class TypographyLead < Base
5
+ def view_template(&)
6
+ p(**attrs, &)
7
+ end
8
+
9
+ private
10
+
11
+ def default_attrs
12
+ {
13
+ class: "text-xl text-muted-foreground"
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
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RBUI
4
+ class TypographyListItem < Base
5
+ def view_template(&)
6
+ li(**attrs, &)
7
+ end
8
+
9
+ private
10
+
11
+ def default_attrs
12
+ {
13
+ class: "leading-7"
14
+ }
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RBUI
4
+ class TypographyMuted < Base
5
+ def view_template(&)
6
+ p(**attrs, &)
7
+ end
8
+
9
+ private
10
+
11
+ def default_attrs
12
+ {
13
+ class: "text-sm text-muted-foreground"
14
+ }
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RBUI
4
+ class TypographyP < Base
5
+ def view_template(&)
6
+ p(**attrs, &)
7
+ end
8
+
9
+ private
10
+
11
+ def default_attrs
12
+ {
13
+ class: "leading-7 [&:not(:first-child)]:mt-6"
14
+ }
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RBUI
4
+ class TypographySmall < Base
5
+ def view_template(&)
6
+ small(**attrs, &)
7
+ end
8
+
9
+ private
10
+
11
+ def default_attrs
12
+ {
13
+ class: "text-sm font-medium leading-none"
14
+ }
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RBUI
4
+ VERSION = "1.0.0-alpha.4"
5
+ end
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
@@ -1,5 +1 @@
1
- # frozen_string_literal: true
2
-
3
- module RubyUI
4
- VERSION = "1.0.0.beta1"
5
- end
1
+ require_relative "rbui"