protos 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -1
  3. data/README.md +34 -22
  4. data/examples/list.rb +2 -2
  5. data/examples/navbar.rb +3 -8
  6. data/lib/protos/accordion/item.rb +4 -2
  7. data/lib/protos/accordion.rb +10 -11
  8. data/lib/protos/alert.rb +3 -0
  9. data/lib/protos/avatar.rb +10 -10
  10. data/lib/protos/badge.rb +62 -0
  11. data/lib/protos/breadcrumbs.rb +2 -0
  12. data/lib/protos/card.rb +12 -7
  13. data/lib/protos/carousel.rb +13 -10
  14. data/lib/protos/chat_bubble/content.rb +12 -12
  15. data/lib/protos/chat_bubble.rb +11 -6
  16. data/lib/protos/collapse/title.rb +3 -3
  17. data/lib/protos/collapse.rb +10 -7
  18. data/lib/protos/combobox.rb +3 -3
  19. data/lib/protos/command/input.rb +4 -4
  20. data/lib/protos/command.rb +16 -2
  21. data/lib/protos/component.rb +1 -1
  22. data/lib/protos/drawer.rb +7 -3
  23. data/lib/protos/dropdown.rb +10 -6
  24. data/lib/protos/hero.rb +3 -0
  25. data/lib/protos/list.rb +2 -0
  26. data/lib/protos/modal/close_button.rb +8 -0
  27. data/lib/protos/modal/dialog.rb +4 -6
  28. data/lib/protos/modal.rb +6 -1
  29. data/lib/protos/popover.rb +24 -21
  30. data/lib/protos/stats.rb +7 -0
  31. data/lib/protos/steps.rb +5 -3
  32. data/lib/protos/swap.rb +3 -0
  33. data/lib/protos/table/caption.rb +3 -3
  34. data/lib/protos/table/cell.rb +3 -3
  35. data/lib/protos/table/head.rb +3 -3
  36. data/lib/protos/table.rb +21 -13
  37. data/lib/protos/tabs/tab.rb +4 -4
  38. data/lib/protos/tabs.rb +18 -16
  39. data/lib/protos/theme.rb +8 -7
  40. data/lib/protos/timeline.rb +8 -3
  41. data/lib/protos/toast.rb +5 -3
  42. data/lib/protos/typography/paragraph.rb +3 -3
  43. data/lib/protos/typography.rb +4 -0
  44. data/lib/protos/version.rb +1 -1
  45. data/lib/protos.rb +37 -121
  46. metadata +4 -7
  47. data/lib/protos/command/dialog.rb +0 -40
@@ -10,14 +10,18 @@ module Protos
10
10
  # rather than pure CSS for accessibility. The layout of pure CSS was too
11
11
  # tricky to get right and we felt the dependency tradeoff was worthwhile.
12
12
 
13
+ autoload :Item, "protos/dropdown/item"
14
+ autoload :Menu, "protos/dropdown/menu"
15
+ autoload :Trigger, "protos/dropdown/trigger"
16
+
13
17
  option :position,
14
- type: Popover::Positions,
15
- default: -> { :bottom },
16
- reader: false
18
+ type: Popover::Positions,
19
+ default: -> { :bottom },
20
+ reader: false
17
21
  option :trigger,
18
- default: -> { :click },
19
- reader: false,
20
- type: Popover::Triggers | Types::Array.of(Popover::Triggers)
22
+ default: -> { :click },
23
+ reader: false,
24
+ type: Popover::Triggers | Types::Array.of(Popover::Triggers)
21
25
 
22
26
  def item(...) = render Item.new(...)
23
27
 
data/lib/protos/hero.rb CHANGED
@@ -6,6 +6,9 @@ module Protos
6
6
  # optionally layout an image for a responsive layout.
7
7
  # https://daisyui.com/components/hero/
8
8
 
9
+ autoload :Content, "protos/hero/content"
10
+ autoload :Overlay, "protos/hero/overlay"
11
+
9
12
  def view_template(&)
10
13
  div(**attrs, &)
11
14
  end
data/lib/protos/list.rb CHANGED
@@ -5,6 +5,8 @@ module Protos
5
5
  # DOCS: A list of items that are joined together for easier styling with
6
6
  # borders, border radius, etc.
7
7
 
8
+ autoload :Item, "protos/list/item"
9
+
8
10
  option :ordered, Types::Bool, default: -> { false }, reader: false
9
11
 
10
12
  def view_template(&)
@@ -10,6 +10,14 @@ module Protos
10
10
  button(**attrs, &block)
11
11
  end
12
12
  end
13
+
14
+ private
15
+
16
+ def default_attrs
17
+ {
18
+ data: { action: "protos--modal#close" }
19
+ }
20
+ end
13
21
  end
14
22
  end
15
23
  end
@@ -14,12 +14,10 @@ module Protos
14
14
 
15
15
  private
16
16
 
17
- def attrs
18
- @attrs ||= build_attrs(
19
- {
20
- data: { "protos--modal-target": "modal" }
21
- }
22
- )
17
+ def default_attrs
18
+ {
19
+ data: { "protos--modal-target": "dialog" }
20
+ }
23
21
  end
24
22
 
25
23
  def theme
data/lib/protos/modal.rb CHANGED
@@ -5,6 +5,10 @@ module Protos
5
5
  # DOCS: A modal component that can be triggered by a button or a link and
6
6
  # will open a fullscreen modal, usually with a close button.
7
7
 
8
+ autoload :CloseButton, "protos/modal/close_button"
9
+ autoload :Dialog, "protos/modal/dialog"
10
+ autoload :Trigger, "protos/modal/trigger"
11
+
8
12
  def view_template(&)
9
13
  div(**attrs, class: css[:container], &)
10
14
  end
@@ -20,7 +24,8 @@ module Protos
20
24
  def default_attrs
21
25
  {
22
26
  data: {
23
- controller: "protos--modal"
27
+ controller: "protos--modal",
28
+ action: "click->protos--modal#backdropClose"
24
29
  }
25
30
  }
26
31
  end
@@ -12,6 +12,9 @@ module Protos
12
12
  # Tippy.js options can be passed in via the `options` attribute or, more
13
13
  # conveniently by the typed options listed below.
14
14
 
15
+ autoload :Trigger, "protos/popover/trigger"
16
+ autoload :Content, "protos/popover/content"
17
+
15
18
  Positions = Types::Coercible::Symbol.enum(
16
19
  :top,
17
20
  :top_start,
@@ -52,33 +55,33 @@ module Protos
52
55
  )
53
56
 
54
57
  option :position,
55
- type: Positions,
56
- default: -> { :top },
57
- reader: false
58
+ type: Positions,
59
+ default: -> { :top },
60
+ reader: false
58
61
  option :animation,
59
- type: Animations,
60
- default: -> { :fade },
61
- reader: false
62
+ type: Animations,
63
+ default: -> { :fade },
64
+ reader: false
62
65
  option :duration,
63
- type: Types::Integer | Types::Array.of(Types::Integer),
64
- default: -> { [300, 250] },
65
- reader: false
66
+ type: Types::Integer | Types::Array.of(Types::Integer),
67
+ default: -> { [300, 250] },
68
+ reader: false
66
69
  option :hide_on_click,
67
- type: Types::Bool | Types.Value(:toggle),
68
- default: -> { true },
69
- reader: false
70
+ type: Types::Bool | Types.Value(:toggle),
71
+ default: -> { true },
72
+ reader: false
70
73
  option :z_index,
71
- type: Types::Integer,
72
- default: -> { 9999 },
73
- reader: false
74
+ type: Types::Integer,
75
+ default: -> { 9999 },
76
+ reader: false
74
77
  option :options,
75
- default: -> { {} },
76
- reader: false,
77
- type: Types::Hash
78
+ default: -> { {} },
79
+ reader: false,
80
+ type: Types::Hash
78
81
  option :trigger,
79
- default: -> { %i[mouseenter focus] },
80
- reader: false,
81
- type: Triggers | Types::Array.of(Triggers)
82
+ default: -> { %i[mouseenter focus] },
83
+ reader: false,
84
+ type: Triggers | Types::Array.of(Triggers)
82
85
 
83
86
  def view_template(&)
84
87
  div(**attrs, &)
data/lib/protos/stats.rb CHANGED
@@ -5,6 +5,13 @@ module Protos
5
5
  # DOCS: Stats component that contains a collection of stats
6
6
  # https://daisyui.com/components/stat/
7
7
 
8
+ autoload :Actions, "protos/stats/actions"
9
+ autoload :Description, "protos/stats/description"
10
+ autoload :Figure, "protos/stats/figure"
11
+ autoload :Stat, "protos/stats/stat"
12
+ autoload :Title, "protos/stats/title"
13
+ autoload :Value, "protos/stats/value"
14
+
8
15
  def view_template(&)
9
16
  div(**attrs, &)
10
17
  end
data/lib/protos/steps.rb CHANGED
@@ -5,6 +5,8 @@ module Protos
5
5
  # DOCS: Steps can be used to show a list of steps in a process.
6
6
  # https://daisyui.com/components/steps/
7
7
 
8
+ autoload :Step, "protos/steps/step"
9
+
8
10
  option :vertical, type: Types::Bool, default: -> { false }
9
11
 
10
12
  def view_template(&)
@@ -17,10 +19,10 @@ module Protos
17
19
 
18
20
  def theme
19
21
  {
20
- container: tokens(
22
+ container: [
21
23
  "steps",
22
- vertical: "steps-vertical"
23
- )
24
+ ("steps-vertical" if vertical)
25
+ ]
24
26
  }
25
27
  end
26
28
  end
data/lib/protos/swap.rb CHANGED
@@ -6,6 +6,9 @@ module Protos
6
6
  # display different content.
7
7
  # https://daisyui.com/components/swap/
8
8
 
9
+ autoload :On, "protos/swap/on"
10
+ autoload :Off, "protos/swap/off"
11
+
9
12
  def view_template
10
13
  label(**attrs) do
11
14
  input(
@@ -11,9 +11,9 @@ module Protos
11
11
  }.freeze
12
12
 
13
13
  option :side,
14
- reader: false,
15
- type: Types::Coercible::Symbol.enum(:bottom, :top),
16
- default: -> { :bottom }
14
+ reader: false,
15
+ type: Types::Coercible::Symbol.enum(:bottom, :top),
16
+ default: -> { :bottom }
17
17
 
18
18
  def view_template(&)
19
19
  caption(**attrs, &)
@@ -12,9 +12,9 @@ module Protos
12
12
  }.freeze
13
13
 
14
14
  option :align,
15
- type: Types::Coercible::Symbol.enum(:left, :center, :right),
16
- reader: false,
17
- default: -> { :left }
15
+ type: Types::Coercible::Symbol.enum(:left, :center, :right),
16
+ reader: false,
17
+ default: -> { :left }
18
18
 
19
19
  def view_template(&)
20
20
  td(**attrs, &)
@@ -12,9 +12,9 @@ module Protos
12
12
  }.freeze
13
13
 
14
14
  option :align,
15
- type: Types::Coercible::Symbol.enum(:left, :center, :right),
16
- reader: false,
17
- default: -> { :left }
15
+ type: Types::Coercible::Symbol.enum(:left, :center, :right),
16
+ reader: false,
17
+ default: -> { :left }
18
18
 
19
19
  def view_template(&)
20
20
  th(**attrs, &)
data/lib/protos/table.rb CHANGED
@@ -5,6 +5,14 @@ module Protos
5
5
  # DOCS: A table component
6
6
  # https://daisyui.com/components/table/
7
7
 
8
+ autoload :Caption, "protos/table/caption"
9
+ autoload :Header, "protos/table/header"
10
+ autoload :Head, "protos/table/head"
11
+ autoload :Body, "protos/table/body"
12
+ autoload :Footer, "protos/table/footer"
13
+ autoload :Row, "protos/table/row"
14
+ autoload :Cell, "protos/table/cell"
15
+
8
16
  SIZES = {
9
17
  xs: "table-xs",
10
18
  sm: "table-sm",
@@ -16,14 +24,14 @@ module Protos
16
24
  option :pin_columns, default: -> { false }, type: Types::Bool
17
25
  option :striped, default: -> { false }, type: Types::Bool
18
26
  option :size,
19
- default: -> { :md },
20
- reader: false,
21
- type: Types::Coercible::Symbol.enum(
22
- :xs,
23
- :sm,
24
- :md,
25
- :lg
26
- )
27
+ default: -> { :md },
28
+ reader: false,
29
+ type: Types::Coercible::Symbol.enum(
30
+ :xs,
31
+ :sm,
32
+ :md,
33
+ :lg
34
+ )
27
35
 
28
36
  def view_template(&block)
29
37
  div(**attrs) do
@@ -54,13 +62,13 @@ module Protos
54
62
  def theme
55
63
  {
56
64
  container: "w-full overflow-x-auto",
57
- table: tokens(
65
+ table: [
58
66
  "table",
59
67
  size,
60
- pin_rows: "table-pin-rows",
61
- pin_columns: "table-pin-columns",
62
- striped: "table-striped"
63
- )
68
+ ("table-pin-rows" if pin_rows),
69
+ ("table-pin-columns" if pin_columns),
70
+ ("table-striped" if striped)
71
+ ]
64
72
  }
65
73
  end
66
74
  end
@@ -22,11 +22,11 @@ module Protos
22
22
 
23
23
  def theme
24
24
  {
25
- container: tokens(
25
+ container: [
26
26
  "tab",
27
- disabled: "tab-disabled",
28
- active: "tab-active"
29
- )
27
+ ("tab-disabled" if disabled),
28
+ ("tab-active" if active)
29
+ ]
30
30
  }
31
31
  end
32
32
  end
data/lib/protos/tabs.rb CHANGED
@@ -5,6 +5,8 @@ module Protos
5
5
  # DOCS: A component that contains many Protos::Tab components
6
6
  # https://daisyui.com/components/tab/
7
7
 
8
+ autoload :Tab, "protos/tabs/tab"
9
+
8
10
  SIZES = {
9
11
  xs: "tabs-xs",
10
12
  sm: "tabs-sm",
@@ -13,23 +15,23 @@ module Protos
13
15
  }.freeze
14
16
 
15
17
  option :type,
16
- default: -> { :default },
17
- reader: false,
18
- type: Types::Coercible::Symbol.enum(
19
- :default,
20
- :boxed,
21
- :bordered,
22
- :lifted
23
- )
18
+ default: -> { :default },
19
+ reader: false,
20
+ type: Types::Coercible::Symbol.enum(
21
+ :default,
22
+ :boxed,
23
+ :bordered,
24
+ :lifted
25
+ )
24
26
  option :size,
25
- default: -> { :md },
26
- reader: false,
27
- type: Types::Coercible::Symbol.enum(
28
- :xs,
29
- :sm,
30
- :md,
31
- :lg
32
- )
27
+ default: -> { :md },
28
+ reader: false,
29
+ type: Types::Coercible::Symbol.enum(
30
+ :xs,
31
+ :sm,
32
+ :md,
33
+ :lg
34
+ )
33
35
 
34
36
  def view_template(&)
35
37
  div(**attrs, &)
data/lib/protos/theme.rb CHANGED
@@ -9,7 +9,7 @@ module Protos
9
9
 
10
10
  class << self
11
11
  def merger
12
- @merger ||= TailwindMerge::Merger.new
12
+ @merger ||= TailwindMerge::Merger.new.freeze
13
13
  end
14
14
  end
15
15
 
@@ -25,14 +25,15 @@ module Protos
25
25
  end
26
26
  end
27
27
 
28
- def [](key)
29
- return nil unless key?(key)
28
+ def [](*keys)
29
+ symbols, strings = keys.partition { |key| key.is_a?(Symbol) }
30
+ values = @theme.values_at(*symbols).join(" ")
31
+ values += " #{strings.join(" ")}" unless strings.empty?
30
32
 
31
- value = @theme[key].to_s
32
- return nil if value.empty?
33
- return value unless @tailwind_merge
33
+ return nil if values.empty?
34
+ return values unless @tailwind_merge
34
35
 
35
- self.class.merger.merge(value)
36
+ self.class.merger.merge(values)
36
37
  end
37
38
 
38
39
  def key?(key)
@@ -5,6 +5,11 @@ module Protos
5
5
  # DOCS: A timeline component
6
6
  # https://daisyui.com/components/timeline/
7
7
 
8
+ autoload :Item, "protos/timeline/item"
9
+ autoload :Left, "protos/timeline/left"
10
+ autoload :Center, "protos/timeline/center"
11
+ autoload :Right, "protos/timeline/right"
12
+
8
13
  option :vertical, type: Types::Bool, default: -> { false }
9
14
 
10
15
  def view_template(&)
@@ -23,10 +28,10 @@ module Protos
23
28
 
24
29
  def theme
25
30
  {
26
- container: tokens(
31
+ container: [
27
32
  "timeline",
28
- vertical: "timeline-vertical"
29
- )
33
+ ("timeline-vertical" if vertical)
34
+ ]
30
35
  }
31
36
  end
32
37
  end
data/lib/protos/toast.rb CHANGED
@@ -6,6 +6,8 @@ module Protos
6
6
  # that popup at a fixed position on the screen.
7
7
  # https://daisyui.com/components/toast/
8
8
 
9
+ autoload :CloseButton, "protos/toast/close_button"
10
+
9
11
  Positions = Types::Symbol.enum(
10
12
  :top_start,
11
13
  :top_center,
@@ -31,9 +33,9 @@ module Protos
31
33
  }.freeze
32
34
 
33
35
  option :position,
34
- type: Positions,
35
- default: -> { :bottom_end },
36
- reader: false
36
+ type: Positions,
37
+ default: -> { :bottom_end },
38
+ reader: false
37
39
 
38
40
  def view_template(&)
39
41
  dialog(**attrs, &)
@@ -15,10 +15,10 @@ module Protos
15
15
 
16
16
  def theme
17
17
  {
18
- container: tokens(
18
+ container: [
19
19
  "leading-relaxed",
20
- margin: "[&:not(:first-child)]:mt-sm"
21
- )
20
+ ("[&:not(:first-child)]:mt-sm" if margin)
21
+ ]
22
22
  }
23
23
  end
24
24
  end
@@ -5,6 +5,10 @@ module Protos
5
5
  # DOCS: The core typography module that can be mixedin to override the
6
6
  # default elements with custom elements.
7
7
 
8
+ autoload :Heading, "protos/typography/heading"
9
+ autoload :Paragraph, "protos/typography/paragraph"
10
+ autoload :InlineLink, "protos/typography/inline_link"
11
+
8
12
  def h1(**, &)
9
13
  render Heading.new(level: 1, size: :xl, **, &)
10
14
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Protos
4
- VERSION = "0.6.0"
4
+ VERSION = "0.7.0"
5
5
  end
data/lib/protos.rb CHANGED
@@ -8,127 +8,43 @@ require "tailwind_merge"
8
8
 
9
9
  module Protos
10
10
  class Error < StandardError; end
11
- end
12
-
13
- require_relative "protos/version"
14
- require_relative "protos/types"
15
- require_relative "protos/token_list"
16
- require_relative "protos/component"
17
- require_relative "protos/theme"
18
- require_relative "protos/mix"
19
- require_relative "protos/attributes"
20
-
21
- # Components
22
- require_relative "protos/accordion"
23
- require_relative "protos/accordion/item"
24
-
25
- require_relative "protos/alert"
26
- require_relative "protos/alert/actions"
27
- require_relative "protos/alert/icon"
28
-
29
- require_relative "protos/avatar"
30
-
31
- require_relative "protos/breadcrumbs"
32
- require_relative "protos/breadcrumbs/crumb"
33
-
34
- require_relative "protos/card"
35
- require_relative "protos/card/body"
36
- require_relative "protos/card/title"
37
- require_relative "protos/card/actions"
38
- require_relative "protos/card/image"
39
-
40
- require_relative "protos/carousel"
41
- require_relative "protos/carousel/item"
42
- require_relative "protos/carousel/actions"
43
-
44
- require_relative "protos/chat_bubble"
45
- require_relative "protos/chat_bubble/content"
46
- require_relative "protos/chat_bubble/image"
47
- require_relative "protos/chat_bubble/header"
48
- require_relative "protos/chat_bubble/footer"
49
-
50
- require_relative "protos/collapse"
51
- require_relative "protos/collapse/title"
52
- require_relative "protos/collapse/content"
53
-
54
- require_relative "protos/command"
55
- require_relative "protos/command/input"
56
- require_relative "protos/command/dialog"
57
- require_relative "protos/command/group"
58
- require_relative "protos/command/list"
59
- require_relative "protos/command/trigger"
60
- require_relative "protos/command/title"
61
- require_relative "protos/command/item"
62
- require_relative "protos/command/empty"
63
-
64
- require_relative "protos/drawer"
65
- require_relative "protos/drawer/side"
66
- require_relative "protos/drawer/trigger"
67
- require_relative "protos/drawer/content"
68
-
69
- require_relative "protos/hero"
70
- require_relative "protos/hero/content"
71
- require_relative "protos/hero/overlay"
72
11
 
73
- require_relative "protos/list"
74
- require_relative "protos/list/item"
75
-
76
- require_relative "protos/modal"
77
- require_relative "protos/modal/close_button"
78
- require_relative "protos/modal/dialog"
79
- require_relative "protos/modal/trigger"
80
-
81
- require_relative "protos/popover"
82
- require_relative "protos/popover/trigger"
83
- require_relative "protos/popover/content"
84
-
85
- require_relative "protos/stats"
86
- require_relative "protos/stats/actions"
87
- require_relative "protos/stats/description"
88
- require_relative "protos/stats/figure"
89
- require_relative "protos/stats/stat"
90
- require_relative "protos/stats/title"
91
- require_relative "protos/stats/value"
92
-
93
- require_relative "protos/steps"
94
- require_relative "protos/steps/step"
95
-
96
- require_relative "protos/swap"
97
- require_relative "protos/swap/on"
98
- require_relative "protos/swap/off"
99
-
100
- require_relative "protos/tabs"
101
- require_relative "protos/tabs/tab"
102
-
103
- require_relative "protos/table"
104
- require_relative "protos/table/caption"
105
- require_relative "protos/table/header"
106
- require_relative "protos/table/head"
107
- require_relative "protos/table/body"
108
- require_relative "protos/table/footer"
109
- require_relative "protos/table/row"
110
- require_relative "protos/table/cell"
111
-
112
- require_relative "protos/toast"
113
- require_relative "protos/toast/close_button"
114
-
115
- require_relative "protos/timeline"
116
- require_relative "protos/timeline/item"
117
- require_relative "protos/timeline/left"
118
- require_relative "protos/timeline/center"
119
- require_relative "protos/timeline/right"
120
-
121
- require_relative "protos/typography"
122
- require_relative "protos/typography/heading"
123
- require_relative "protos/typography/paragraph"
124
- require_relative "protos/typography/inline_link"
125
-
126
- # Dependent
127
- require_relative "protos/dropdown"
128
- require_relative "protos/dropdown/item"
129
- require_relative "protos/dropdown/menu"
130
- require_relative "protos/dropdown/trigger"
131
-
132
- require_relative "protos/combobox"
12
+ autoload :Version, "protos/version"
13
+ autoload :Types, "protos/types"
14
+ autoload :TokenList, "protos/token_list"
15
+ autoload :Component, "protos/component"
16
+ autoload :Theme, "protos/theme"
17
+ autoload :Mix, "protos/mix"
18
+ autoload :Attributes, "protos/attributes"
19
+
20
+ # Components
21
+ autoload :Accordion, "protos/accordion"
22
+ autoload :Alert, "protos/alert"
23
+ autoload :Avatar, "protos/avatar"
24
+ autoload :Badge, "protos/badge"
25
+ autoload :Breadcrumbs, "protos/breadcrumbs"
26
+ autoload :Card, "protos/card"
27
+ autoload :Carousel, "protos/carousel"
28
+ autoload :ChatBubble, "protos/chat_bubble"
29
+ autoload :Collapse, "protos/collapse"
30
+ autoload :Command, "protos/command"
31
+ autoload :Drawer, "protos/drawer"
32
+ autoload :Hero, "protos/hero"
33
+ autoload :List, "protos/list"
34
+ autoload :Modal, "protos/modal"
35
+ autoload :Popover, "protos/popover"
36
+ autoload :Stats, "protos/stats"
37
+ autoload :Steps, "protos/steps"
38
+ autoload :Swap, "protos/swap"
39
+ autoload :Tabs, "protos/tabs"
40
+ autoload :Table, "protos/table"
41
+ autoload :Toast, "protos/toast"
42
+ autoload :Timeline, "protos/timeline"
43
+ autoload :Typography, "protos/typography"
44
+
45
+ # Dependent
46
+ autoload :Dropdown, "protos/dropdown"
47
+ autoload :Combobox, "protos/combobox"
48
+ end
133
49
 
134
50
  require_relative "protos/engine" if defined?(Rails)