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,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Card::Title < Base
5
- def template(&)
6
- h3(**attrs, &)
7
- end
4
+ class Card::Title < 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: "font-semibold leading-none tracking-tight"
14
- }
15
- end
11
+ def default_attrs
12
+ {
13
+ class: "font-semibold leading-none tracking-tight"
14
+ }
16
15
  end
17
- end
16
+ end
17
+ end
data/lib/phlex_ui/card.rb CHANGED
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Card < Base
5
- def template(&)
6
- div(**attrs, &)
7
- end
4
+ class Card < 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: "rounded-xl border bg-background shadow"
14
- }
15
- end
11
+ def default_attrs
12
+ {
13
+ class: "rounded-xl border bg-background shadow"
14
+ }
16
15
  end
17
- end
16
+ end
17
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PhlexUI
4
+ class Chart < PhlexUI::Base
5
+ def initialize(options: {}, **attrs)
6
+ @options = options.to_json
7
+ super(**attrs)
8
+ end
9
+
10
+ def template(&block)
11
+ canvas(**attrs, &block)
12
+ end
13
+
14
+ private
15
+
16
+ def default_attrs
17
+ {
18
+ data_controller: "chart",
19
+ data_chart_options_value: @options
20
+ }
21
+ end
22
+ end
23
+ end
@@ -1,18 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Checkbox < Base
5
- def template
6
- input(**attrs)
7
- end
4
+ class Checkbox < Base
5
+ def template
6
+ input(**attrs)
7
+ end
8
8
 
9
- private
9
+ private
10
10
 
11
- def default_attrs
12
- {
13
- type: "checkbox",
14
- 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"
15
- }
16
- end
11
+ def default_attrs
12
+ {
13
+ type: "checkbox",
14
+ 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"
15
+ }
17
16
  end
18
- end
17
+ end
18
+ end
@@ -1,36 +1,36 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Clipboard::Popover < Base
5
- def initialize(type:, **attrs)
6
- @type = type
7
- super(**attrs)
8
- end
4
+ class Clipboard::Popover < Base
5
+ def initialize(type:, **attrs)
6
+ @type = type
7
+ super(**attrs)
8
+ end
9
9
 
10
- def template(&)
11
- template_tag(data: { clipboard_target: clipboard_target }) do
12
- div(**attrs, &)
13
- end
14
- end
10
+ def template(&block)
11
+ template_tag(data: {clipboard_target: clipboard_target}) do
12
+ div(**attrs, &block)
13
+ end
14
+ end
15
15
 
16
- private
16
+ private
17
17
 
18
- def clipboard_target
19
- case @type
20
- when :success
21
- "successPopover"
22
- when :error
23
- "errorPopover"
24
- end
25
- end
18
+ def clipboard_target
19
+ case @type
20
+ when :success
21
+ "successPopover"
22
+ when :error
23
+ "errorPopover"
24
+ end
25
+ end
26
26
 
27
- def default_attrs
28
- {
29
- data: {
30
- state: :open
31
- },
32
- class: "z-50 rounded-md text-sm border bg-background px-2 py-0.5 text-text shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
33
- }
34
- end
27
+ def default_attrs
28
+ {
29
+ data: {
30
+ state: :open
31
+ },
32
+ class: "z-50 rounded-md text-sm border bg-background px-2 py-0.5 text-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2"
33
+ }
35
34
  end
36
- end
35
+ end
36
+ end
@@ -1,19 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Clipboard::Source < Base
5
- def template(&)
6
- div(**attrs, &)
7
- end
4
+ class Clipboard::Source < 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
- data: {
14
- clipboard_target: "source",
15
- }
16
- }
17
- end
11
+ def default_attrs
12
+ {
13
+ data: {
14
+ clipboard_target: "source"
15
+ }
16
+ }
18
17
  end
19
- end
18
+ end
19
+ end
@@ -1,20 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Clipboard::Trigger < Base
5
- def template(&)
6
- div(**attrs, &)
7
- end
4
+ class Clipboard::Trigger < 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
- data: {
14
- clipboard_target: "trigger",
15
- action: "click->clipboard#copy",
16
- }
17
- }
18
- end
11
+ def default_attrs
12
+ {
13
+ data: {
14
+ clipboard_target: "trigger",
15
+ action: "click->clipboard#copy"
16
+ }
17
+ }
19
18
  end
20
- end
19
+ end
20
+ end
@@ -1,39 +1,39 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Clipboard < Base
5
- def initialize(success: "Copied!", error: "Copy Failed!", **attrs)
6
- @success = success
7
- @error = error
8
- super(**attrs)
9
- end
4
+ class Clipboard < Base
5
+ def initialize(success: "Copied!", error: "Copy Failed!", **attrs)
6
+ @success = success
7
+ @error = error
8
+ super(**attrs)
9
+ end
10
10
 
11
- def template(&)
12
- div(**attrs) do
13
- div(&)
14
- success_popover
15
- error_popover
16
- end
17
- end
11
+ def template(&block)
12
+ div(**attrs) do
13
+ div(&block)
14
+ success_popover
15
+ error_popover
16
+ end
17
+ end
18
18
 
19
- private
19
+ private
20
20
 
21
- def success_popover
22
- render Clipboard::Popover.new(type: :success) { @success }
23
- end
21
+ def success_popover
22
+ render Clipboard::Popover.new(type: :success) { @success }
23
+ end
24
24
 
25
- def error_popover
26
- render Clipboard::Popover.new(type: :error) { @error }
27
- end
25
+ def error_popover
26
+ render Clipboard::Popover.new(type: :error) { @error }
27
+ end
28
28
 
29
- def default_attrs
30
- {
31
- data: {
32
- controller: "clipboard",
33
- clipboard_success_value: @success,
34
- clipboard_error_value: @error,
35
- }
36
- }
37
- end
29
+ def default_attrs
30
+ {
31
+ data: {
32
+ controller: "clipboard",
33
+ clipboard_success_value: @success,
34
+ clipboard_error_value: @error
35
+ }
36
+ }
38
37
  end
39
- end
38
+ end
39
+ end
@@ -3,103 +3,103 @@
3
3
  require "rouge"
4
4
 
5
5
  module PhlexUI
6
- class Codeblock < Base
7
- FORMATTER = ::Rouge::Formatters::HTML.new
8
- ROUGE_CSS = Rouge::Themes::Github.mode(:dark).render(scope: '.highlight') # See themes here: https://rouge-ruby.github.io/docs/Rouge/CSSTheme.html
6
+ class Codeblock < Base
7
+ FORMATTER = ::Rouge::Formatters::HTML.new
8
+ ROUGE_CSS = Rouge::Themes::Github.mode(:dark).render(scope: ".highlight") # See themes here: https://rouge-ruby.github.io/docs/Rouge/CSSTheme.html
9
9
 
10
- def initialize(code, syntax:, clipboard: true, clipboard_success: "Copied!", clipboard_error: "Copy failed!", **attrs)
11
- @code = code
12
- @syntax = syntax.to_sym
13
- @clipboard = clipboard
14
- @clipboard_success = clipboard_success
15
- @clipboard_error = clipboard_error
10
+ def initialize(code, syntax:, clipboard: true, clipboard_success: "Copied!", clipboard_error: "Copy failed!", **attrs)
11
+ @code = code
12
+ @syntax = syntax.to_sym
13
+ @clipboard = clipboard
14
+ @clipboard_success = clipboard_success
15
+ @clipboard_error = clipboard_error
16
16
 
17
- if @syntax == :ruby || @syntax == :html
18
- @code = @code.gsub(/(?:^|\G) {2}/m, " ")
19
- end
17
+ if @syntax == :ruby || @syntax == :html
18
+ @code = @code.gsub(/(?:^|\G) {2}/m, " ")
19
+ end
20
20
 
21
- super(**attrs)
22
- end
21
+ super(**attrs)
22
+ end
23
23
 
24
- def template
25
- style { ROUGE_CSS.html_safe } # For faster load times, move this to the head of your document. (Also move ROUGE_CSS value to head of document)
26
- if @clipboard
27
- with_clipboard
28
- else
29
- codeblock
30
- end
31
- end
24
+ def template
25
+ style { ROUGE_CSS.html_safe } # For faster load times, move this to the head of your document. (Also move ROUGE_CSS value to head of document)
26
+ if @clipboard
27
+ with_clipboard
28
+ else
29
+ codeblock
30
+ end
31
+ end
32
32
 
33
- private
33
+ private
34
34
 
35
- def default_attrs
36
- {
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"
38
- }
39
- end
35
+ def default_attrs
36
+ {
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"
38
+ }
39
+ end
40
40
 
41
- def with_clipboard
42
- render PhlexUI::Clipboard.new(success: @clipboard_success, error: @clipboard_error, class: 'relative') do
43
- render PhlexUI::Clipboard::Source.new do
44
- codeblock
45
- end
46
- div(class: "absolute top-2 right-2") do
47
- render PhlexUI::Clipboard::Trigger.new do
48
- render PhlexUI::Button.new(variant: :ghost, size: :sm, icon: true, class: 'text-white hover:text-white hover:bg-white/20') { clipboard_icon }
49
- end
50
- end
51
- end
41
+ def with_clipboard
42
+ render PhlexUI::Clipboard.new(success: @clipboard_success, error: @clipboard_error, class: "relative") do
43
+ render PhlexUI::Clipboard::Source.new do
44
+ codeblock
45
+ end
46
+ div(class: "absolute top-2 right-2") do
47
+ render PhlexUI::Clipboard::Trigger.new do
48
+ render PhlexUI::Button.new(variant: :ghost, size: :sm, icon: true, class: "text-white hover:text-white hover:bg-white/20") { clipboard_icon }
49
+ end
52
50
  end
51
+ end
52
+ end
53
53
 
54
- def codeblock
55
- div(**attrs) do
56
- div(class: "after:content-none") do
57
- pre do
58
- unsafe_raw FORMATTER.format(
59
- lexer.lex(@code)
60
- )
61
- end
62
- end
63
- end
54
+ def codeblock
55
+ div(**attrs) do
56
+ div(class: "after:content-none") do
57
+ pre do
58
+ unsafe_raw FORMATTER.format(
59
+ lexer.lex(@code)
60
+ )
61
+ end
64
62
  end
63
+ end
64
+ end
65
65
 
66
- def lexer
67
- Rouge::Lexer.find(@syntax)
68
- end
66
+ def lexer
67
+ Rouge::Lexer.find(@syntax)
68
+ end
69
69
 
70
- def clipboard_icon
71
- svg(
72
- xmlns: "http://www.w3.org/2000/svg",
73
- fill: "none",
74
- viewbox: "0 0 24 24",
75
- stroke_width: "1.5",
76
- stroke: "currentColor",
77
- class: "w-4 h-4"
78
- ) do |s|
79
- s.path(
80
- stroke_linecap: "round",
81
- stroke_linejoin: "round",
82
- d:
83
- "M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"
84
- )
85
- end
86
- end
70
+ def clipboard_icon
71
+ svg(
72
+ xmlns: "http://www.w3.org/2000/svg",
73
+ fill: "none",
74
+ viewbox: "0 0 24 24",
75
+ stroke_width: "1.5",
76
+ stroke: "currentColor",
77
+ class: "w-4 h-4"
78
+ ) do |s|
79
+ s.path(
80
+ stroke_linecap: "round",
81
+ stroke_linejoin: "round",
82
+ d:
83
+ "M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"
84
+ )
85
+ end
86
+ end
87
87
 
88
- def check_icon
89
- svg(
90
- xmlns: "http://www.w3.org/2000/svg",
91
- fill: "none",
92
- viewbox: "0 0 24 24",
93
- stroke_width: "1.5",
94
- stroke: "currentColor",
95
- class: "w-4 h-4"
96
- ) do |s|
97
- s.path(
98
- stroke_linecap: "round",
99
- stroke_linejoin: "round",
100
- d: "M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
101
- )
102
- end
103
- end
88
+ def check_icon
89
+ svg(
90
+ xmlns: "http://www.w3.org/2000/svg",
91
+ fill: "none",
92
+ viewbox: "0 0 24 24",
93
+ stroke_width: "1.5",
94
+ stroke: "currentColor",
95
+ class: "w-4 h-4"
96
+ ) do |s|
97
+ s.path(
98
+ stroke_linecap: "round",
99
+ stroke_linejoin: "round",
100
+ d: "M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
101
+ )
102
+ end
104
103
  end
105
- end
104
+ end
105
+ end
@@ -1,18 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Collapsible::Content < Base
5
- def template(&)
6
- div(**attrs, &)
7
- end
4
+ class Collapsible::Content < 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
- data: { collapsible_target: "content" },
14
- class: 'overflow-y-hidden'
15
- }
16
- end
11
+ def default_attrs
12
+ {
13
+ data: {collapsible_target: "content"},
14
+ class: "overflow-y-hidden"
15
+ }
17
16
  end
18
- end
17
+ end
18
+ end
@@ -1,19 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Collapsible::Trigger < Base
5
- def template(&)
6
- div(**attrs, &)
7
- end
4
+ class Collapsible::Trigger < 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
- data: {
14
- action: "click->collapsible#toggle"
15
- }
16
- }
17
- end
11
+ def default_attrs
12
+ {
13
+ data: {
14
+ action: "click->collapsible#toggle"
15
+ }
16
+ }
18
17
  end
19
- end
18
+ end
19
+ end
@@ -1,25 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PhlexUI
4
- class Collapsible < Base
5
- def initialize(open: false, **attrs)
6
- @open = open
7
- super(**attrs)
8
- end
4
+ class Collapsible < Base
5
+ def initialize(open: false, **attrs)
6
+ @open = open
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: 'collapsible',
20
- collapsible_open_value: @open
21
- }
22
- }
23
- end
16
+ def default_attrs
17
+ {
18
+ data: {
19
+ controller: "collapsible",
20
+ collapsible_open_value: @open
21
+ }
22
+ }
24
23
  end
25
- end
24
+ end
25
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PhlexUI
4
+ class Command::Dialog < Base
5
+ def template(&block)
6
+ div(**attrs, &block)
7
+ end
8
+
9
+ private
10
+
11
+ def default_attrs
12
+ {
13
+ data: { controller: "dialog" }
14
+ }
15
+ end
16
+ end
17
+ end