protos 0.2.2 → 0.3.0

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 (90) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +56 -60
  3. data/examples/list.rb +1 -1
  4. data/examples/navbar.rb +1 -1
  5. data/lib/protos/accordion/item.rb +4 -2
  6. data/lib/protos/accordion.rb +5 -4
  7. data/lib/protos/alert/actions.rb +1 -1
  8. data/lib/protos/alert/icon.rb +1 -1
  9. data/lib/protos/alert.rb +1 -1
  10. data/lib/protos/avatar.rb +1 -1
  11. data/lib/protos/breadcrumbs/crumb.rb +1 -1
  12. data/lib/protos/breadcrumbs.rb +1 -1
  13. data/lib/protos/card/actions.rb +1 -1
  14. data/lib/protos/card/body.rb +1 -1
  15. data/lib/protos/card/image.rb +1 -1
  16. data/lib/protos/card/title.rb +1 -1
  17. data/lib/protos/card.rb +1 -1
  18. data/lib/protos/carousel/actions.rb +1 -1
  19. data/lib/protos/carousel/item.rb +1 -1
  20. data/lib/protos/carousel.rb +1 -1
  21. data/lib/protos/chat_bubble/content.rb +1 -1
  22. data/lib/protos/chat_bubble/footer.rb +1 -1
  23. data/lib/protos/chat_bubble/header.rb +1 -1
  24. data/lib/protos/chat_bubble/image.rb +1 -1
  25. data/lib/protos/chat_bubble.rb +1 -1
  26. data/lib/protos/collapse/content.rb +1 -1
  27. data/lib/protos/collapse/title.rb +10 -2
  28. data/lib/protos/collapse.rb +12 -4
  29. data/lib/protos/command/dialog.rb +1 -1
  30. data/lib/protos/command/empty.rb +1 -1
  31. data/lib/protos/command/group.rb +1 -1
  32. data/lib/protos/command/input.rb +3 -2
  33. data/lib/protos/command/item.rb +1 -1
  34. data/lib/protos/command/list.rb +1 -1
  35. data/lib/protos/command/title.rb +1 -1
  36. data/lib/protos/command/trigger.rb +1 -1
  37. data/lib/protos/command.rb +1 -1
  38. data/lib/protos/drawer/content.rb +1 -1
  39. data/lib/protos/drawer/side.rb +1 -1
  40. data/lib/protos/drawer/trigger.rb +1 -1
  41. data/lib/protos/drawer.rb +2 -2
  42. data/lib/protos/dropdown/item.rb +1 -1
  43. data/lib/protos/dropdown/menu.rb +1 -1
  44. data/lib/protos/hero/content.rb +1 -1
  45. data/lib/protos/hero/overlay.rb +1 -1
  46. data/lib/protos/hero.rb +1 -1
  47. data/lib/protos/list/item.rb +1 -1
  48. data/lib/protos/list.rb +1 -1
  49. data/lib/protos/modal/close_button.rb +1 -1
  50. data/lib/protos/modal/dialog.rb +1 -1
  51. data/lib/protos/modal/trigger.rb +1 -1
  52. data/lib/protos/modal.rb +1 -1
  53. data/lib/protos/popover/content.rb +1 -1
  54. data/lib/protos/popover/trigger.rb +1 -1
  55. data/lib/protos/popover.rb +1 -1
  56. data/lib/protos/stats/actions.rb +1 -1
  57. data/lib/protos/stats/description.rb +1 -1
  58. data/lib/protos/stats/figure.rb +1 -1
  59. data/lib/protos/stats/stat.rb +1 -1
  60. data/lib/protos/stats/title.rb +1 -1
  61. data/lib/protos/stats/value.rb +1 -1
  62. data/lib/protos/stats.rb +1 -1
  63. data/lib/protos/swap/off.rb +1 -1
  64. data/lib/protos/swap/on.rb +1 -1
  65. data/lib/protos/swap.rb +3 -4
  66. data/lib/protos/table/body.rb +1 -1
  67. data/lib/protos/table/caption.rb +1 -1
  68. data/lib/protos/table/cell.rb +1 -1
  69. data/lib/protos/table/footer.rb +1 -1
  70. data/lib/protos/table/head.rb +1 -1
  71. data/lib/protos/table/header.rb +1 -1
  72. data/lib/protos/table/row.rb +1 -1
  73. data/lib/protos/table.rb +1 -1
  74. data/lib/protos/tabs/tab.rb +3 -2
  75. data/lib/protos/tabs.rb +1 -1
  76. data/lib/protos/theme.rb +10 -1
  77. data/lib/protos/timeline/center.rb +1 -1
  78. data/lib/protos/timeline/item.rb +1 -1
  79. data/lib/protos/timeline/left.rb +1 -1
  80. data/lib/protos/timeline/right.rb +1 -1
  81. data/lib/protos/timeline.rb +1 -1
  82. data/lib/protos/toast/close_button.rb +1 -1
  83. data/lib/protos/toast.rb +1 -1
  84. data/lib/protos/token_list.rb +1 -17
  85. data/lib/protos/typography/heading.rb +1 -1
  86. data/lib/protos/typography/inline_link.rb +1 -1
  87. data/lib/protos/typography/paragraph.rb +1 -1
  88. data/lib/protos/version.rb +1 -1
  89. data/protos.gemspec +1 -1
  90. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6771e623cc76042636663c199b9dd48e3b9d8ed5011d180f7e9e1fa50728fc65
4
- data.tar.gz: 3dcd91f89719b72fbd9f23725add23ef09d0588196f8647ed7597baeed48b5de
3
+ metadata.gz: 5fe048d407665dc19039444171da359495565d7b94d1787c444c4e8e8c5fe191
4
+ data.tar.gz: fda1eea822602572a8a28be104b8e60b533d429745d4ef616be8c7f14bf9e53e
5
5
  SHA512:
6
- metadata.gz: 843780d369c551ee4e407037a6fa842343d36f9582d73823573af5bb06ee243424d85416737d9c6e80f433ab0147be41caf7af93b1c5db64765f479886157340
7
- data.tar.gz: 37fb34135c07d53fc0d9e7af1c814f91130ed0a6891fb00db2059090fe7ec8787cebc004b41186a9cf09c936a151c9c2ef503333a25169cee91b1a3ca67f5864
6
+ metadata.gz: e4859a4076a79386043b18ad71735b9b372c9120a0f3a8a816d1020174152b19ed2a030172ef01e7240ec26d28dce73070ce478ed440e15526eabde03f500067
7
+ data.tar.gz: 2ac30388a8534552f10cb32bc68b9f7786bd14caf1eab69d8f15c6a310a08d92b27eeb1a97896a60df18cd6e489c30f179706fd72ac0eca7072f435d05ebad9e
data/README.md CHANGED
@@ -25,11 +25,11 @@ Other Phlex based UI libraries worth checking out:
25
25
  A protos component follows some conventions that make them easy to work with as
26
26
  components in your app.
27
27
 
28
- Every UI component library will have a tension between being too general or
29
- narrow to be useful. Making components that look good out of the box can make
30
- them hard to customize.
28
+ Every UI component library will have a tension between being too general to fit
29
+ in your app or too narrow to be useful. Making components that look good out of
30
+ the box can make them hard to customize.
31
31
 
32
- We try and resolve this tensions by making the components have a minimal style
32
+ We try and resolve this tension by making these components have a minimal style
33
33
  that can be easily overridden using some ergonomic conventions.
34
34
 
35
35
  There are 3 core conventions:
@@ -40,7 +40,12 @@ There are 3 core conventions:
40
40
  ### Slots and themes
41
41
 
42
42
  Components are styled with `css` slots that are filled with values from
43
- a `theme`:
43
+ a `theme`.
44
+
45
+ You define a theme for your component by defining a `#theme` method that returns
46
+ a hash. This hash will be merged with any theme provided when rendering your
47
+ component. This allows you to easily override styles for your components
48
+ depending on their context.
44
49
 
45
50
  ```ruby
46
51
  class List < Protos::Component
@@ -53,31 +58,8 @@ class List < Protos::Component
53
58
 
54
59
  def theme
55
60
  {
56
- list: tokens("space-y-4"),
57
- item: tokens("font-bold", "text-2xl")
58
- }
59
- end
60
- end
61
- ```
62
-
63
- Here we are using conditional `tokens` from Phlex but you can also use
64
- simple strings.
65
-
66
- If you want to change the method we define our default theme you can override the
67
- `theme_method` on the class:
68
-
69
- ```ruby
70
- class List < Protos::Component
71
- theme_method :custom_theme
72
-
73
- # ...
74
-
75
- private
76
-
77
- def custom_theme
78
- {
79
- list: tokens("space-y-4"),
80
- item: tokens("font-bold", "text-2xl")
61
+ list: tokens("space-y-4"), # We can use `#tokens` from phlex (recommended)
62
+ item: "font-bold text-2xl" # Or just plain old strings
81
63
  }
82
64
  end
83
65
  end
@@ -137,14 +119,36 @@ The new `css[:item]` slot would be:
137
119
  <li class="font-bold">Item 1</li>
138
120
  ```
139
121
 
122
+ If you want to change the method we define our default theme you can override the
123
+ `theme_method` on the class:
124
+
125
+ ```ruby
126
+ class List < Protos::Component
127
+ theme_method :custom_theme
128
+
129
+ # ...
130
+
131
+ private
132
+
133
+ def custom_theme
134
+ {
135
+ list: tokens("space-y-4"),
136
+ item: tokens("font-bold", "text-2xl")
137
+ }
138
+ end
139
+ end
140
+ ```
141
+
140
142
  ### Attrs and default attrs
141
143
 
142
144
  By convention, all components spread in an `attrs` hash on their outermost
143
145
  element of the component.
144
146
 
145
147
  By doing this we enable 2 main conveniences:
146
- 1. We can pass `class` when initializing the component
147
- 2. We can add default attributes that can be merged with defaults
148
+ 1. We can pass a `class` keyword when initializing the component which will be
149
+ merged safely into the `css[:container]` slot
150
+ 2. We can add default attributes that are safely merged with any provided to the
151
+ component when its being initialized
148
152
 
149
153
  ```ruby
150
154
  class List < Protos::Component
@@ -158,9 +162,7 @@ class List < Protos::Component
158
162
 
159
163
  def default_attrs
160
164
  {
161
- data: {
162
- controller: "list"
163
- }
165
+ data: { controller: "list" }
164
166
  }
165
167
  end
166
168
 
@@ -173,9 +175,24 @@ class List < Protos::Component
173
175
  end
174
176
  ```
175
177
 
176
- Attrs will by default merge `class` into the `css[:container]` slot so we
177
- changed that in our theme. We also added `default_attrs` and gave a controller.
178
- These could be any html options.
178
+ `#attrs` will by default merge the `class` keyword into the `css[:container]`
179
+ slot which we define in our theme.
180
+
181
+ Special html options will be safely merged. For examples, the component above
182
+ defines a list controller. If we passed our own controller into data when we
183
+ initialize, the component's data-controller attribute would be appended to:
184
+
185
+ ```ruby
186
+ render List.new(
187
+ data: { controller: "tooltip" }
188
+ )
189
+ ```
190
+
191
+ That would output both controllers to the DOM element:
192
+
193
+ ```html
194
+ <ul data-controller="list tooltip">
195
+ ```
179
196
 
180
197
  If we wanted to, just like for our theme we can change the method from
181
198
  `default_attrs` by defining the `default_attrs_method` on the class:
@@ -184,37 +201,16 @@ If we wanted to, just like for our theme we can change the method from
184
201
  class List < Protos::Component
185
202
  default_attrs_method :custom_attrs
186
203
 
187
- # ...
188
-
189
204
  private
190
205
 
191
206
  def custom_attrs
192
207
  {
193
- data: {
194
- controller: "list"
195
- }
208
+ data: { controller: "list" }
196
209
  }
197
210
  end
198
-
199
- # ...
200
211
  end
201
212
  ```
202
213
 
203
- Now we get some additional convenience:
204
-
205
- ```ruby
206
- render List.new(
207
- class: "my-lg",
208
- data: { controller: "confetti" }
209
- )
210
- ```
211
-
212
- This would merge our `data` and `class` safely into the attributes:
213
-
214
- ```html
215
- <ul data-controller="list confetti" class="space-y-4 my-lg">
216
- ```
217
-
218
214
  ### Params and options
219
215
 
220
216
  Components extend
data/examples/list.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require "protos"
2
2
 
3
3
  class List < Protos::Component
4
- def template
4
+ def view_template
5
5
  ul(**attrs) do
6
6
  li(class: css[:item]) { "Item 1" }
7
7
  li(class: css[:item]) { "Item 2" }
data/examples/navbar.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  require_relative "../lib/protos"
4
4
 
5
5
  class Navbar < Protos::Component
6
- def template
6
+ def view_template
7
7
  header(**attrs) do
8
8
  h1(class: css[:heading]) { "Hello world" }
9
9
  h2(class: css[:subtitle]) { "With a subtitle" }
@@ -7,10 +7,12 @@ module Protos
7
7
 
8
8
  option :id, type: Types::Coercible::String
9
9
 
10
- def template(&block)
10
+ def view_template(&block)
11
11
  li(**attrs) do
12
12
  render collapse_component do
13
- input(type: :radio, name: id, id:)
13
+ # form: "" prevents the radio button from being submitted if its
14
+ # within a form
15
+ input(type: :radio, name: id, form: "", autocomplete: :off)
14
16
  yield if block
15
17
  end
16
18
  end
@@ -7,9 +7,10 @@ module Protos
7
7
  # to be open at the same time, use the collapse component.
8
8
  # https://daisyui.com/components/accordion/
9
9
 
10
- option :id, default: -> { SecureRandom.uuid }
10
+ option :id,
11
+ default: -> { "collapse-#{SecureRandom.hex(4)}" }
11
12
 
12
- def template(&block)
13
+ def view_template(&block)
13
14
  ul(**attrs, &block)
14
15
  end
15
16
 
@@ -17,8 +18,8 @@ module Protos
17
18
  Item.new(id:, **kwargs)
18
19
  end
19
20
 
20
- def title(...)
21
- Collapse::Title.new(...)
21
+ def title(*args, **kwargs, &block)
22
+ Collapse::Title.new(*args, id:, **kwargs, &block)
22
23
  end
23
24
 
24
25
  def content(...)
@@ -5,7 +5,7 @@ module Protos
5
5
  class Actions < Component
6
6
  # DOCS: Area for actions (e.g buttons) within an alert
7
7
 
8
- def template(&block)
8
+ def view_template(&block)
9
9
  nav(**attrs, &block)
10
10
  end
11
11
 
@@ -6,7 +6,7 @@ module Protos
6
6
  # DOCS: Icon for the alert, usually showing at the top left corner aligned
7
7
  # to the text
8
8
 
9
- def template(&block)
9
+ def view_template(&block)
10
10
  div(**attrs, &block)
11
11
  end
12
12
 
data/lib/protos/alert.rb CHANGED
@@ -15,7 +15,7 @@ module Protos
15
15
 
16
16
  option :type, type: AlertTypes, default: -> { :info }, reader: :private
17
17
 
18
- def template(&block)
18
+ def view_template(&block)
19
19
  div(**attrs, &block)
20
20
  end
21
21
 
data/lib/protos/avatar.rb CHANGED
@@ -17,7 +17,7 @@ module Protos
17
17
  default: -> { :none },
18
18
  reader: false
19
19
 
20
- def template(&block)
20
+ def view_template(&block)
21
21
  div(**attrs) do
22
22
  div(class: css[:figure], &block)
23
23
  end
@@ -5,7 +5,7 @@ module Protos
5
5
  class Crumb < Component
6
6
  # DOCS: A crumb is a single item within a breadcrumb
7
7
 
8
- def template(&block)
8
+ def view_template(&block)
9
9
  li(**attrs, &block)
10
10
  end
11
11
  end
@@ -5,7 +5,7 @@ module Protos
5
5
  # DOCS: A list of breadcrumbs (e.g links) for navigation
6
6
  # https://daisyui.com/components/breadcrumbs/
7
7
 
8
- def template(&block)
8
+ def view_template(&block)
9
9
  nav(**attrs) do
10
10
  ul(class: css[:list], &block)
11
11
  end
@@ -5,7 +5,7 @@ module Protos
5
5
  class Actions < Component
6
6
  # DOCS: Area for actions (e.g buttons) within a card
7
7
 
8
- def template(&block)
8
+ def view_template(&block)
9
9
  nav(**attrs, &block)
10
10
  end
11
11
 
@@ -5,7 +5,7 @@ module Protos
5
5
  class Body < Component
6
6
  # DOCS: The main content area of a card
7
7
 
8
- def template(&block)
8
+ def view_template(&block)
9
9
  div(**attrs, &block)
10
10
  end
11
11
 
@@ -7,7 +7,7 @@ module Protos
7
7
  # on daisyui which will style the <figure> tag depending on whether
8
8
  # image-overlay is present on the card.
9
9
 
10
- def template(&block)
10
+ def view_template(&block)
11
11
  figure(**attrs, &block)
12
12
  end
13
13
  end
@@ -5,7 +5,7 @@ module Protos
5
5
  class Title < Component
6
6
  # DOCS: The title of a card
7
7
 
8
- def template(&block)
8
+ def view_template(&block)
9
9
  div(**attrs, &block)
10
10
  end
11
11
 
data/lib/protos/card.rb CHANGED
@@ -14,7 +14,7 @@ module Protos
14
14
  default: -> { :default },
15
15
  reader: false
16
16
 
17
- def template(&block)
17
+ def view_template(&block)
18
18
  article(**attrs, &block)
19
19
  end
20
20
 
@@ -5,7 +5,7 @@ module Protos
5
5
  class Actions < Component
6
6
  # DOCS: Area for actions (e.g buttons) within a carousel
7
7
 
8
- def template(&block)
8
+ def view_template(&block)
9
9
  div(**attrs, &block)
10
10
  end
11
11
 
@@ -5,7 +5,7 @@ module Protos
5
5
  class Item < Component
6
6
  # DOCS: A single item within a carousel
7
7
 
8
- def template(&block)
8
+ def view_template(&block)
9
9
  div(**attrs, &block)
10
10
  end
11
11
 
@@ -16,7 +16,7 @@ module Protos
16
16
  :end
17
17
  )
18
18
 
19
- def template(&block)
19
+ def view_template(&block)
20
20
  div(**attrs, &block)
21
21
  end
22
22
 
@@ -20,7 +20,7 @@ module Protos
20
20
  :error
21
21
  )
22
22
 
23
- def template(&block)
23
+ def view_template(&block)
24
24
  div(**attrs, &block)
25
25
  end
26
26
 
@@ -5,7 +5,7 @@ module Protos
5
5
  class Footer < Component
6
6
  # DOCS: The footer of a chat bubble
7
7
 
8
- def template(&block)
8
+ def view_template(&block)
9
9
  div(**attrs, &block)
10
10
  end
11
11
 
@@ -6,7 +6,7 @@ module Protos
6
6
  # DOCS: The header of a chat bubble. This is typically used to display the
7
7
  # name of the user who sent the message.
8
8
 
9
- def template(&block)
9
+ def view_template(&block)
10
10
  div(**attrs, &block)
11
11
  end
12
12
 
@@ -6,7 +6,7 @@ module Protos
6
6
  # DOCS: An image within a chat bubble. This would typically be an avatar
7
7
  # component.
8
8
 
9
- def template(&block)
9
+ def view_template(&block)
10
10
  div(**attrs, &block)
11
11
  end
12
12
 
@@ -15,7 +15,7 @@ module Protos
15
15
  :end
16
16
  )
17
17
 
18
- def template(&block)
18
+ def view_template(&block)
19
19
  div(**attrs, &block)
20
20
  end
21
21
 
@@ -6,7 +6,7 @@ module Protos
6
6
  # DOCS: The content of a collapse. This would be hidden until the collapse
7
7
  # is opened.
8
8
 
9
- def template(&block)
9
+ def view_template(&block)
10
10
  div(**attrs, &block)
11
11
  end
12
12
 
@@ -5,9 +5,17 @@ module Protos
5
5
  class Title < Component
6
6
  # DOCS: The title of a collapse. This is the content that is always
7
7
  # visible and is used to toggle the collapse.
8
+ option :id,
9
+ type: Types::Coercible::String,
10
+ reader: false,
11
+ default: -> { "" }
8
12
 
9
- def template(&block)
10
- div(**attrs, &block)
13
+ def view_template(&block)
14
+ if @id.size.positive?
15
+ label(for: @id, **attrs, &block)
16
+ else
17
+ div(**attrs, &block)
18
+ end
11
19
  end
12
20
 
13
21
  private
@@ -6,12 +6,20 @@ module Protos
6
6
  # is visible at all times, and the content is only visible when expanded.
7
7
  # https://daisyui.com/components/collapse/
8
8
 
9
- def template(&block)
10
- div(**attrs, &block)
9
+ option :checkbox, default: -> { false }, type: Types::Bool, reader: false
10
+ option :id,
11
+ default: -> { "collapse-#{SecureRandom.hex(4)}" },
12
+ type: Types::String
13
+
14
+ def view_template
15
+ div(**attrs) do
16
+ input(type: "checkbox", id:, autocomplete: :off) if @checkbox
17
+ yield if block_given?
18
+ end
11
19
  end
12
20
 
13
- def title(...)
14
- Title.new(...)
21
+ def title(*args, **kwargs, &block)
22
+ Title.new(*args, id:, **kwargs, &block)
15
23
  end
16
24
 
17
25
  def content(...)
@@ -6,7 +6,7 @@ module Protos
6
6
  # DOCS: The dialog for a command wraps the command content and provides a
7
7
  # modal backdrop for the command when it is opened.
8
8
 
9
- def template(&block)
9
+ def view_template(&block)
10
10
  dialog(**attrs) do
11
11
  div(class: css[:modal], &block)
12
12
  form(method: :dialog, class: css[:form]) do
@@ -6,7 +6,7 @@ module Protos
6
6
  # DOCS: The empty component is displayed in the list when there are no
7
7
  # matches in an input.
8
8
 
9
- def template(&block)
9
+ def view_template(&block)
10
10
  li(**attrs, &block)
11
11
  end
12
12
 
@@ -7,7 +7,7 @@ module Protos
7
7
  # Items in the group will have a divider line on the left side and can
8
8
  # optionally have a title.
9
9
 
10
- def template(&block)
10
+ def view_template(&block)
11
11
  li(**attrs) do
12
12
  ul(class: css[:list], &block)
13
13
  end
@@ -11,7 +11,7 @@ module Protos
11
11
  },
12
12
  reader: :private
13
13
 
14
- def template(&block)
14
+ def view_template(&block)
15
15
  div(**attrs) do
16
16
  label(class: css[:label]) do
17
17
  div(class: css[:icon], &block) if block
@@ -19,7 +19,8 @@ module Protos
19
19
  type: :text,
20
20
  data: { action: "protos--command#filter" },
21
21
  class: css[:input],
22
- placeholder:
22
+ placeholder:,
23
+ autocomplete: :off
23
24
  )
24
25
  end
25
26
  end
@@ -5,7 +5,7 @@ module Protos
5
5
  class Item < Component
6
6
  # DOCS: A single option within a command
7
7
 
8
- def template(&block)
8
+ def view_template(&block)
9
9
  li(**attrs, &block)
10
10
  end
11
11
 
@@ -5,7 +5,7 @@ module Protos
5
5
  class List < Component
6
6
  # DOCS: A list of commands. This can contain either items or groups.
7
7
 
8
- def template(&block)
8
+ def view_template(&block)
9
9
  ul(**attrs, &block)
10
10
  end
11
11
 
@@ -6,7 +6,7 @@ module Protos
6
6
  # DOCS: The title for a group of commands. This is expected to be used
7
7
  # inside a Protos::Command::Group component.
8
8
 
9
- def template(&block)
9
+ def view_template(&block)
10
10
  h2(**attrs, &block)
11
11
  end
12
12
 
@@ -5,7 +5,7 @@ module Protos
5
5
  class Trigger < Component
6
6
  # DOCS: A trigger is a button that opens a command palette modal
7
7
 
8
- def template(&block)
8
+ def view_template(&block)
9
9
  button(**attrs, &block)
10
10
  end
11
11
 
@@ -6,7 +6,7 @@ module Protos
6
6
  # filterable list of commands. Command modals are by default closable by
7
7
  # clicking the overlay rather than a specific close button.
8
8
 
9
- def template(&block)
9
+ def view_template(&block)
10
10
  div(**attrs, &block)
11
11
  end
12
12
 
@@ -6,7 +6,7 @@ module Protos
6
6
  # DOCS: The content of a drawer. This would be visible at all times and
7
7
  # represents the main content of your page.
8
8
 
9
- def template(&block)
9
+ def view_template(&block)
10
10
  div(**attrs, &block)
11
11
  end
12
12
 
@@ -8,7 +8,7 @@ module Protos
8
8
 
9
9
  option :id, type: Types::Coercible::String
10
10
 
11
- def template
11
+ def view_template
12
12
  aside(**attrs) do
13
13
  label(for: id, aria_label: "close sidebar", class: css[:toggle])
14
14
  yield if block_given?
@@ -8,7 +8,7 @@ module Protos
8
8
 
9
9
  option :id, type: Types::Coercible::String
10
10
 
11
- def template(&block)
11
+ def view_template(&block)
12
12
  label(for: id, **attrs, &block)
13
13
  end
14
14
 
data/lib/protos/drawer.rb CHANGED
@@ -9,9 +9,9 @@ module Protos
9
9
 
10
10
  option :id, type: Types::Coercible::String
11
11
 
12
- def template
12
+ def view_template
13
13
  div(**attrs) do
14
- input(id:, type: :checkbox, class: css[:toggle])
14
+ input(id:, type: :checkbox, class: css[:toggle], autocomplete: :off)
15
15
  yield if block_given?
16
16
  end
17
17
  end
@@ -5,7 +5,7 @@ module Protos
5
5
  class Item < Component
6
6
  # DOCS: A single item within a dropdown
7
7
 
8
- def template(&block)
8
+ def view_template(&block)
9
9
  li(**attrs, &block)
10
10
  end
11
11
  end