phlex_ui 0.0.5 → 0.1.6

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 (149) hide show
  1. checksums.yaml +4 -4
  2. data/lib/phlex_ui/accordion/builder.rb +22 -0
  3. data/lib/phlex_ui/accordion/content.rb +15 -15
  4. data/lib/phlex_ui/accordion/default_content.rb +11 -11
  5. data/lib/phlex_ui/accordion/default_trigger.rb +14 -14
  6. data/lib/phlex_ui/accordion/icon.rb +31 -31
  7. data/lib/phlex_ui/accordion/item.rb +20 -20
  8. data/lib/phlex_ui/accordion/trigger.rb +11 -11
  9. data/lib/phlex_ui/accordion.rb +10 -21
  10. data/lib/phlex_ui/alert/description.rb +10 -10
  11. data/lib/phlex_ui/alert/title.rb +10 -10
  12. data/lib/phlex_ui/alert.rb +27 -27
  13. data/lib/phlex_ui/alert_dialog/action.rb +11 -11
  14. data/lib/phlex_ui/alert_dialog/cancel.rb +15 -15
  15. data/lib/phlex_ui/alert_dialog/content.rb +36 -36
  16. data/lib/phlex_ui/alert_dialog/description.rb +11 -11
  17. data/lib/phlex_ui/alert_dialog/footer.rb +11 -11
  18. data/lib/phlex_ui/alert_dialog/header.rb +11 -11
  19. data/lib/phlex_ui/alert_dialog/title.rb +11 -11
  20. data/lib/phlex_ui/alert_dialog/trigger.rb +12 -12
  21. data/lib/phlex_ui/alert_dialog.rb +18 -18
  22. data/lib/phlex_ui/aspect_ratio.rb +24 -24
  23. data/lib/phlex_ui/attribute_merger.rb +59 -61
  24. data/lib/phlex_ui/avatar/builder.rb +36 -0
  25. data/lib/phlex_ui/avatar/fallback.rb +11 -11
  26. data/lib/phlex_ui/avatar/image.rb +19 -19
  27. data/lib/phlex_ui/avatar.rb +23 -41
  28. data/lib/phlex_ui/badge.rb +50 -50
  29. data/lib/phlex_ui/base.rb +16 -16
  30. data/lib/phlex_ui/button.rb +80 -80
  31. data/lib/phlex_ui/calendar/body.rb +19 -0
  32. data/lib/phlex_ui/calendar/days.rb +104 -0
  33. data/lib/phlex_ui/calendar/header.rb +17 -0
  34. data/lib/phlex_ui/calendar/next.rb +43 -0
  35. data/lib/phlex_ui/calendar/prev.rb +43 -0
  36. data/lib/phlex_ui/calendar/title.rb +27 -0
  37. data/lib/phlex_ui/calendar/weekdays.rb +33 -0
  38. data/lib/phlex_ui/calendar.rb +39 -0
  39. data/lib/phlex_ui/card/content.rb +11 -11
  40. data/lib/phlex_ui/card/description.rb +11 -11
  41. data/lib/phlex_ui/card/footer.rb +11 -11
  42. data/lib/phlex_ui/card/header.rb +11 -11
  43. data/lib/phlex_ui/card/title.rb +11 -11
  44. data/lib/phlex_ui/card.rb +11 -11
  45. data/lib/phlex_ui/chart.rb +23 -0
  46. data/lib/phlex_ui/checkbox.rb +12 -12
  47. data/lib/phlex_ui/clipboard/popover.rb +28 -28
  48. data/lib/phlex_ui/clipboard/source.rb +13 -13
  49. data/lib/phlex_ui/clipboard/trigger.rb +14 -14
  50. data/lib/phlex_ui/clipboard.rb +30 -30
  51. data/lib/phlex_ui/codeblock.rb +86 -86
  52. data/lib/phlex_ui/collapsible/content.rb +12 -12
  53. data/lib/phlex_ui/collapsible/trigger.rb +13 -13
  54. data/lib/phlex_ui/collapsible.rb +18 -18
  55. data/lib/phlex_ui/command/dialog.rb +17 -0
  56. data/lib/phlex_ui/command/dialog_content.rb +49 -0
  57. data/lib/phlex_ui/command/dialog_trigger.rb +29 -0
  58. data/lib/phlex_ui/command/empty.rb +19 -0
  59. data/lib/phlex_ui/command/group.rb +41 -0
  60. data/lib/phlex_ui/command/input.rb +56 -0
  61. data/lib/phlex_ui/command/item.rb +31 -0
  62. data/lib/phlex_ui/command/list.rb +17 -0
  63. data/lib/phlex_ui/command.rb +17 -0
  64. data/lib/phlex_ui/context_menu/content.rb +19 -19
  65. data/lib/phlex_ui/context_menu/item.rb +55 -55
  66. data/lib/phlex_ui/context_menu/label.rb +16 -16
  67. data/lib/phlex_ui/context_menu/separator.rb +13 -13
  68. data/lib/phlex_ui/context_menu/trigger.rb +14 -14
  69. data/lib/phlex_ui/context_menu.rb +19 -19
  70. data/lib/phlex_ui/dialog/content.rb +67 -67
  71. data/lib/phlex_ui/dialog/description.rb +11 -11
  72. data/lib/phlex_ui/dialog/footer.rb +11 -11
  73. data/lib/phlex_ui/dialog/header.rb +11 -11
  74. data/lib/phlex_ui/dialog/middle.rb +11 -11
  75. data/lib/phlex_ui/dialog/title.rb +11 -11
  76. data/lib/phlex_ui/dialog/trigger.rb +14 -13
  77. data/lib/phlex_ui/dialog.rb +18 -18
  78. data/lib/phlex_ui/dropdown_menu/content.rb +16 -16
  79. data/lib/phlex_ui/dropdown_menu/item.rb +21 -21
  80. data/lib/phlex_ui/dropdown_menu/label.rb +11 -11
  81. data/lib/phlex_ui/dropdown_menu/separator.rb +13 -13
  82. data/lib/phlex_ui/dropdown_menu/trigger.rb +12 -11
  83. data/lib/phlex_ui/dropdown_menu.rb +19 -19
  84. data/lib/phlex_ui/form/builder.rb +38 -0
  85. data/lib/phlex_ui/form/item.rb +11 -11
  86. data/lib/phlex_ui/form/spacer.rb +11 -11
  87. data/lib/phlex_ui/form.rb +9 -28
  88. data/lib/phlex_ui/hint.rb +11 -11
  89. data/lib/phlex_ui/hover_card/content.rb +16 -16
  90. data/lib/phlex_ui/hover_card/trigger.rb +14 -13
  91. data/lib/phlex_ui/hover_card.rb +20 -20
  92. data/lib/phlex_ui/input.rb +22 -22
  93. data/lib/phlex_ui/input_error.rb +11 -11
  94. data/lib/phlex_ui/label.rb +11 -11
  95. data/lib/phlex_ui/link.rb +81 -81
  96. data/lib/phlex_ui/popover/content.rb +16 -16
  97. data/lib/phlex_ui/popover/trigger.rb +14 -13
  98. data/lib/phlex_ui/popover.rb +18 -18
  99. data/lib/phlex_ui/select/builder.rb +67 -0
  100. data/lib/phlex_ui/select/content.rb +30 -0
  101. data/lib/phlex_ui/select/group.rb +15 -0
  102. data/lib/phlex_ui/select/input.rb +20 -0
  103. data/lib/phlex_ui/select/item.rb +48 -0
  104. data/lib/phlex_ui/select/label.rb +17 -0
  105. data/lib/phlex_ui/select/trigger.rb +45 -0
  106. data/lib/phlex_ui/select/value.rb +27 -0
  107. data/lib/phlex_ui/select.rb +30 -0
  108. data/lib/phlex_ui/sheet/content.rb +77 -0
  109. data/lib/phlex_ui/sheet/description.rb +17 -0
  110. data/lib/phlex_ui/sheet/footer.rb +17 -0
  111. data/lib/phlex_ui/sheet/header.rb +17 -0
  112. data/lib/phlex_ui/sheet/middle.rb +17 -0
  113. data/lib/phlex_ui/sheet/title.rb +17 -0
  114. data/lib/phlex_ui/sheet/trigger.rb +17 -0
  115. data/lib/phlex_ui/sheet.rb +17 -0
  116. data/lib/phlex_ui/shortcut_key.rb +11 -11
  117. data/lib/phlex_ui/table/body.rb +11 -11
  118. data/lib/phlex_ui/table/builder.rb +59 -59
  119. data/lib/phlex_ui/table/caption.rb +11 -11
  120. data/lib/phlex_ui/table/cell.rb +11 -11
  121. data/lib/phlex_ui/table/footer.rb +11 -11
  122. data/lib/phlex_ui/table/head.rb +11 -11
  123. data/lib/phlex_ui/table/header.rb +11 -11
  124. data/lib/phlex_ui/table/row.rb +11 -11
  125. data/lib/phlex_ui/table.rb +13 -13
  126. data/lib/phlex_ui/tabs/content.rb +18 -18
  127. data/lib/phlex_ui/tabs/list.rb +11 -11
  128. data/lib/phlex_ui/tabs/trigger.rb +20 -20
  129. data/lib/phlex_ui/tabs.rb +17 -17
  130. data/lib/phlex_ui/theme_toggle.rb +31 -31
  131. data/lib/phlex_ui/tooltip/content.rb +16 -16
  132. data/lib/phlex_ui/tooltip/trigger.rb +12 -11
  133. data/lib/phlex_ui/tooltip.rb +18 -18
  134. data/lib/phlex_ui/typography/blockquote.rb +11 -11
  135. data/lib/phlex_ui/typography/h1.rb +10 -10
  136. data/lib/phlex_ui/typography/h2.rb +10 -10
  137. data/lib/phlex_ui/typography/h3.rb +11 -11
  138. data/lib/phlex_ui/typography/h4.rb +11 -11
  139. data/lib/phlex_ui/typography/inline_code.rb +11 -11
  140. data/lib/phlex_ui/typography/inline_link.rb +22 -0
  141. data/lib/phlex_ui/typography/large.rb +11 -11
  142. data/lib/phlex_ui/typography/lead.rb +11 -11
  143. data/lib/phlex_ui/typography/list.rb +36 -36
  144. data/lib/phlex_ui/typography/list_item.rb +11 -11
  145. data/lib/phlex_ui/typography/muted.rb +11 -11
  146. data/lib/phlex_ui/typography/p.rb +11 -11
  147. data/lib/phlex_ui/typography/small.rb +11 -11
  148. data/lib/phlex_ui.rb +9 -4
  149. metadata +88 -7
@@ -1,25 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Tooltip < Base
5
- def initialize(options: {}, **attrs)
6
- @options = options
7
- super(**attrs)
8
- end
4
+ class Tooltip < Base
5
+ def initialize(options: {}, **attrs)
6
+ @options = options
7
+ super(**attrs)
8
+ end
9
9
 
10
- def template(&)
11
- div(**attrs, &)
12
- end
10
+ def template(&block)
11
+ div(**attrs, &block)
12
+ end
13
13
 
14
- private
14
+ private
15
15
 
16
- def default_attrs
17
- {
18
- data: {
19
- controller: "popover",
20
- popover_options_value: @options.to_json
21
- }
22
- }
23
- end
16
+ def default_attrs
17
+ {
18
+ data: {
19
+ controller: "popover",
20
+ popover_options_value: @options.to_json
21
+ }
22
+ }
24
23
  end
25
- end
24
+ end
25
+ end
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Typography::Blockquote < Base
5
- def template(&)
6
- blockquote(**attrs, &)
7
- end
4
+ class Typography::Blockquote < Base
5
+ def template(&block)
6
+ blockquote(**attrs, &block)
7
+ end
8
8
 
9
- private
9
+ private
10
10
 
11
- def default_attrs
12
- {
13
- class: "mt-6 border-l-2 pl-6 italic"
14
- }
15
- end
11
+ def default_attrs
12
+ {
13
+ class: "mt-6 border-l-2 pl-6 italic"
14
+ }
16
15
  end
17
- end
16
+ end
17
+ end
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Typography::H1 < Base
5
- def template(&)
6
- h1(**attrs, &)
7
- end
4
+ class Typography::H1 < Base
5
+ def template(&block)
6
+ h1(**attrs, &block)
7
+ end
8
8
 
9
- private
9
+ private
10
10
 
11
- def default_attrs
12
- {
13
- class: "scroll-m-20 text-3xl font-semibold leading-normal lg:leading-normal tracking-tight lg:text-4xl"
14
- }
15
- end
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
+ }
16
15
  end
16
+ end
17
17
  end
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Typography::H2 < Base
5
- def template(&)
6
- h2(**attrs, &)
7
- end
4
+ class Typography::H2 < Base
5
+ def template(&block)
6
+ h2(**attrs, &block)
7
+ end
8
8
 
9
- private
9
+ private
10
10
 
11
- def default_attrs
12
- {
13
- class: "scroll-m-20 text-3xl font-semibold tracking-tight transition-colors first:mt-0"
14
- }
15
- end
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
+ }
16
15
  end
16
+ end
17
17
  end
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Typography::H3 < Base
5
- def template(&)
6
- h3(**attrs, &)
7
- end
4
+ class Typography::H3 < Base
5
+ def template(&block)
6
+ h3(**attrs, &block)
7
+ end
8
8
 
9
- private
9
+ private
10
10
 
11
- def default_attrs
12
- {
13
- class: "scroll-m-20 text-2xl font-semibold tracking-tight"
14
- }
15
- end
11
+ def default_attrs
12
+ {
13
+ class: "scroll-m-20 text-xl font-semibold tracking-tight"
14
+ }
16
15
  end
17
- end
16
+ end
17
+ end
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Typography::H4 < Base
5
- def template(&)
6
- h4(**attrs, &)
7
- end
4
+ class Typography::H4 < Base
5
+ def template(&block)
6
+ h4(**attrs, &block)
7
+ end
8
8
 
9
- private
9
+ private
10
10
 
11
- def default_attrs
12
- {
13
- class: "scroll-m-20 text-lg font-medium tracking-tight"
14
- }
15
- end
11
+ def default_attrs
12
+ {
13
+ class: "scroll-m-20 text-lg font-medium tracking-tight"
14
+ }
16
15
  end
17
- end
16
+ end
17
+ end
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Typography::InlineCode < Base
5
- def template(&)
6
- code(**attrs, &)
7
- end
4
+ class Typography::InlineCode < Base
5
+ def template(&block)
6
+ code(**attrs, &block)
7
+ end
8
8
 
9
- private
9
+ private
10
10
 
11
- def default_attrs
12
- {
13
- class: "relative rounded bg-muted-background px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold"
14
- }
15
- end
11
+ def default_attrs
12
+ {
13
+ class: "relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold"
14
+ }
16
15
  end
17
- end
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PhlexUI
4
+ class Typography::InlineLink < Base
5
+ def initialize(href:, **attrs)
6
+ super(**attrs)
7
+ @href = href
8
+ end
9
+
10
+ def template(&block)
11
+ a(href: @href, **attrs, &block)
12
+ end
13
+
14
+ private
15
+
16
+ def default_attrs
17
+ {
18
+ class: "text-primary font-medium hover:underline underline-offset-4 cursor-pointer"
19
+ }
20
+ end
21
+ end
22
+ end
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Typography::Large < Base
5
- def template(&)
6
- div(**attrs, &)
7
- end
4
+ class Typography::Large < Base
5
+ def template(&block)
6
+ div(**attrs, &block)
7
+ end
8
8
 
9
- private
9
+ private
10
10
 
11
- def default_attrs
12
- {
13
- class: "text-lg font-semibold"
14
- }
15
- end
11
+ def default_attrs
12
+ {
13
+ class: "text-lg font-semibold"
14
+ }
16
15
  end
17
- end
16
+ end
17
+ end
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Typography::Lead < Base
5
- def template(&)
6
- p(**attrs, &)
7
- end
4
+ class Typography::Lead < Base
5
+ def template(&block)
6
+ p(**attrs, &block)
7
+ end
8
8
 
9
- private
9
+ private
10
10
 
11
- def default_attrs
12
- {
13
- class: "text-xl text-muted-text"
14
- }
15
- end
11
+ def default_attrs
12
+ {
13
+ class: "text-xl text-muted-foreground"
14
+ }
16
15
  end
17
- end
16
+ end
17
+ end
@@ -1,47 +1,47 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Typography::List < Base
5
- def initialize(items: [], numbered: false, **attrs)
6
- @items = items
7
- @numbered = numbered
8
- super(**attrs)
9
- end
4
+ class Typography::List < Base
5
+ def initialize(items: [], numbered: false, **attrs)
6
+ @items = items
7
+ @numbered = numbered
8
+ super(**attrs)
9
+ end
10
10
 
11
- def template(&)
12
- if @items.empty?
13
- list(**attrs, &)
14
- else
15
- list(**attrs) do
16
- @items.each do |item|
17
- render PhlexUI::Typography::ListItem.new { item }
18
- end
19
- end
20
- end
11
+ def template(&block)
12
+ if @items.empty?
13
+ list(**attrs, &block)
14
+ else
15
+ list(**attrs) do
16
+ @items.each do |item|
17
+ render PhlexUI::Typography::ListItem.new { item }
18
+ end
21
19
  end
20
+ end
21
+ end
22
22
 
23
- private
23
+ private
24
24
 
25
- def list(**attrs, &)
26
- if numbered?
27
- ol(**attrs, &)
28
- else
29
- ul(**attrs, &)
30
- end
31
- end
25
+ def list(**attrs, &block)
26
+ if numbered?
27
+ ol(**attrs, &block)
28
+ else
29
+ ul(**attrs, &block)
30
+ end
31
+ end
32
32
 
33
- def numbered? = @numbered
33
+ def numbered? = @numbered
34
34
 
35
- def not_numbered? = !numbered?
35
+ def not_numbered? = !numbered?
36
36
 
37
- def default_attrs
38
- {
39
- class: tokens(
40
- "my-6 ml-6 [&>li]:mt-2 indent-2",
41
- numbered?: "list-decimal marker:font-medium",
42
- not_numbered?: "list-disc"
43
- )
44
- }
45
- end
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
+ }
46
45
  end
47
- end
46
+ end
47
+ end
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Typography::ListItem < Base
5
- def template(&)
6
- li(**attrs, &)
7
- end
4
+ class Typography::ListItem < Base
5
+ def template(&block)
6
+ li(**attrs, &block)
7
+ end
8
8
 
9
- private
9
+ private
10
10
 
11
- def default_attrs
12
- {
13
- class: "leading-7"
14
- }
15
- end
11
+ def default_attrs
12
+ {
13
+ class: "leading-7"
14
+ }
16
15
  end
17
- end
16
+ end
17
+ end
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Typography::Muted < Base
5
- def template(&)
6
- p(**attrs, &)
7
- end
4
+ class Typography::Muted < Base
5
+ def template(&block)
6
+ p(**attrs, &block)
7
+ end
8
8
 
9
- private
9
+ private
10
10
 
11
- def default_attrs
12
- {
13
- class: "text-sm text-muted-text"
14
- }
15
- end
11
+ def default_attrs
12
+ {
13
+ class: "text-sm text-muted-foreground"
14
+ }
16
15
  end
17
- end
16
+ end
17
+ end
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Typography::P < Base
5
- def template(&)
6
- p(**attrs, &)
7
- end
4
+ class Typography::P < Base
5
+ def template(&block)
6
+ p(**attrs, &block)
7
+ end
8
8
 
9
- private
9
+ private
10
10
 
11
- def default_attrs
12
- {
13
- class: "leading-7 [&:not(:first-child)]:mt-6"
14
- }
15
- end
11
+ def default_attrs
12
+ {
13
+ class: "leading-7 [&:not(:first-child)]:mt-6"
14
+ }
16
15
  end
17
- end
16
+ end
17
+ end
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Typography::Small < Base
5
- def template(&)
6
- small(**attrs, &)
7
- end
4
+ class Typography::Small < Base
5
+ def template(&block)
6
+ small(**attrs, &block)
7
+ end
8
8
 
9
- private
9
+ private
10
10
 
11
- def default_attrs
12
- {
13
- class: "text-sm font-medium leading-none"
14
- }
15
- end
11
+ def default_attrs
12
+ {
13
+ class: "text-sm font-medium leading-none"
14
+ }
16
15
  end
17
- end
16
+ end
17
+ end
data/lib/phlex_ui.rb CHANGED
@@ -1,13 +1,18 @@
1
- require 'phlex'
2
- require 'zeitwerk'
1
+ require "ruby-next"
2
+
3
+ require "ruby-next/language/setup"
4
+ RubyNext::Language.setup_gem_load_path(transpile: true)
5
+
6
+ require "phlex"
7
+ require "zeitwerk"
3
8
 
4
9
  loader = Zeitwerk::Loader.for_gem
5
10
  loader.inflector.inflect(
6
- "phlex_ui" => "PhlexUI",
11
+ "phlex_ui" => "PhlexUI"
7
12
  )
8
13
  loader.setup # ready!
9
14
 
10
15
  module PhlexUI
11
16
  end
12
17
 
13
- loader.eager_load
18
+ loader.eager_load