protos 0.4.1 → 0.4.2

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 (78) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -1
  3. data/README.md +2 -1
  4. data/TODO.md +18 -0
  5. data/lib/protos/accordion/item.rb +2 -2
  6. data/lib/protos/accordion.rb +3 -9
  7. data/lib/protos/alert/actions.rb +1 -1
  8. data/lib/protos/alert/icon.rb +1 -1
  9. data/lib/protos/alert.rb +15 -13
  10. data/lib/protos/attributes.rb +3 -0
  11. data/lib/protos/avatar.rb +60 -32
  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/title.rb +1 -1
  16. data/lib/protos/card.rb +9 -7
  17. data/lib/protos/carousel/actions.rb +10 -10
  18. data/lib/protos/carousel/item.rb +1 -1
  19. data/lib/protos/carousel.rb +7 -5
  20. data/lib/protos/chat_bubble/content.rb +17 -12
  21. data/lib/protos/chat_bubble/footer.rb +1 -1
  22. data/lib/protos/chat_bubble/header.rb +1 -1
  23. data/lib/protos/chat_bubble/image.rb +1 -1
  24. data/lib/protos/chat_bubble.rb +10 -5
  25. data/lib/protos/collapse/content.rb +1 -1
  26. data/lib/protos/collapse/title.rb +1 -1
  27. data/lib/protos/collapse.rb +5 -1
  28. data/lib/protos/combobox.rb +1 -1
  29. data/lib/protos/command/dialog.rb +8 -8
  30. data/lib/protos/command/empty.rb +1 -1
  31. data/lib/protos/command/input.rb +12 -12
  32. data/lib/protos/command/list.rb +1 -1
  33. data/lib/protos/command/title.rb +1 -1
  34. data/lib/protos/drawer/content.rb +1 -1
  35. data/lib/protos/drawer/side.rb +6 -6
  36. data/lib/protos/drawer/trigger.rb +1 -1
  37. data/lib/protos/drawer.rb +2 -2
  38. data/lib/protos/dropdown/menu.rb +7 -7
  39. data/lib/protos/dropdown.rb +2 -2
  40. data/lib/protos/hero/content.rb +1 -1
  41. data/lib/protos/hero/overlay.rb +1 -1
  42. data/lib/protos/hero.rb +1 -1
  43. data/lib/protos/list/item.rb +4 -4
  44. data/lib/protos/list.rb +1 -4
  45. data/lib/protos/modal/close_button.rb +1 -4
  46. data/lib/protos/modal/dialog.rb +17 -12
  47. data/lib/protos/popover.rb +6 -6
  48. data/lib/protos/stats/actions.rb +1 -1
  49. data/lib/protos/stats/description.rb +1 -1
  50. data/lib/protos/stats/figure.rb +1 -1
  51. data/lib/protos/stats/stat.rb +1 -1
  52. data/lib/protos/stats/title.rb +1 -1
  53. data/lib/protos/stats/value.rb +1 -1
  54. data/lib/protos/stats.rb +1 -1
  55. data/lib/protos/steps/step.rb +49 -0
  56. data/lib/protos/steps.rb +27 -0
  57. data/lib/protos/swap/off.rb +1 -1
  58. data/lib/protos/swap/on.rb +1 -1
  59. data/lib/protos/swap.rb +1 -1
  60. data/lib/protos/table/caption.rb +15 -1
  61. data/lib/protos/table/cell.rb +13 -8
  62. data/lib/protos/table/head.rb +11 -18
  63. data/lib/protos/table.rb +9 -7
  64. data/lib/protos/tabs/tab.rb +1 -1
  65. data/lib/protos/tabs.rb +13 -7
  66. data/lib/protos/timeline/center.rb +1 -1
  67. data/lib/protos/timeline/left.rb +1 -1
  68. data/lib/protos/timeline/right.rb +1 -1
  69. data/lib/protos/toast/close_button.rb +1 -1
  70. data/lib/protos/toast.rb +19 -17
  71. data/lib/protos/token_list.rb +7 -1
  72. data/lib/protos/types.rb +0 -25
  73. data/lib/protos/typography/heading.rb +15 -13
  74. data/lib/protos/typography/inline_link.rb +6 -6
  75. data/lib/protos/typography/paragraph.rb +3 -3
  76. data/lib/protos/version.rb +1 -1
  77. data/lib/protos.rb +3 -0
  78. metadata +5 -2
data/lib/protos/tabs.rb CHANGED
@@ -5,6 +5,13 @@ module Protos
5
5
  # DOCS: A component that contains many Protos::Tab components
6
6
  # https://daisyui.com/components/tab/
7
7
 
8
+ SIZES = {
9
+ xs: "tabs-xs",
10
+ sm: "tabs-sm",
11
+ md: "tabs-md",
12
+ lg: "tabs-lg"
13
+ }.freeze
14
+
8
15
  option :type,
9
16
  default: -> { :default },
10
17
  reader: false,
@@ -33,12 +40,7 @@ module Protos
33
40
  private
34
41
 
35
42
  def size
36
- {
37
- xs: "tabs-xs",
38
- sm: "tabs-sm",
39
- md: "tabs-md",
40
- lg: "tabs-lg"
41
- }.fetch(@size)
43
+ SIZES.fetch(@size)
42
44
  end
43
45
 
44
46
  def type
@@ -58,7 +60,11 @@ module Protos
58
60
 
59
61
  def theme
60
62
  {
61
- container: tokens("tabs", size, type)
63
+ container: %W[
64
+ tabs
65
+ #{size}
66
+ #{type}
67
+ ]
62
68
  }
63
69
  end
64
70
  end
@@ -14,7 +14,7 @@ module Protos
14
14
 
15
15
  def theme
16
16
  {
17
- container: tokens("timeline-middle")
17
+ container: "timeline-middle"
18
18
  }
19
19
  end
20
20
  end
@@ -14,7 +14,7 @@ module Protos
14
14
 
15
15
  def theme
16
16
  {
17
- container: tokens("timeline-start")
17
+ container: "timeline-start"
18
18
  }
19
19
  end
20
20
  end
@@ -14,7 +14,7 @@ module Protos
14
14
 
15
15
  def theme
16
16
  {
17
- container: tokens("timeline-end")
17
+ container: "timeline-end"
18
18
  }
19
19
  end
20
20
  end
@@ -23,7 +23,7 @@ module Protos
23
23
  {
24
24
  # NOTE: Added this because I'm noticing the form having a margin
25
25
  # with a default setup. Not sure if this is really needed.
26
- form: tokens("m-0")
26
+ form: "m-0"
27
27
  }
28
28
  end
29
29
  end
data/lib/protos/toast.rb CHANGED
@@ -18,6 +18,18 @@ module Protos
18
18
  :bottom_end
19
19
  )
20
20
 
21
+ POSITIONS = {
22
+ top_start: "toast-start toast-top",
23
+ top_center: "toast-center toast-top",
24
+ top_end: "toast-end toast-top",
25
+ middle_start: "toast-start toast-middle",
26
+ middle_center: "toast-center toast-middle",
27
+ middle_end: "toast-end toast-middle",
28
+ bottom_start: "toast-start toast-bottom",
29
+ bottom_center: "toast-center toast-bottom",
30
+ bottom_end: "toast-end toast-bottom"
31
+ }.freeze
32
+
21
33
  option :position,
22
34
  type: Positions,
23
35
  default: -> { :bottom_end },
@@ -38,27 +50,17 @@ module Protos
38
50
  end
39
51
 
40
52
  def position
41
- {
42
- top_start: "toast-start toast-top",
43
- top_center: "toast-center toast-top",
44
- top_end: "toast-end toast-top",
45
- middle_start: "toast-start toast-middle",
46
- middle_center: "toast-center toast-middle",
47
- middle_end: "toast-end toast-middle",
48
- bottom_start: "toast-start toast-bottom",
49
- bottom_center: "toast-center toast-bottom",
50
- bottom_end: "toast-end toast-bottom"
51
- }.fetch(@position)
53
+ POSITIONS.fetch(@position)
52
54
  end
53
55
 
54
56
  def theme
55
57
  {
56
- container: tokens(
57
- "toast",
58
- position,
59
- "[&:not([open])]:hidden",
60
- "bg-transparent"
61
- )
58
+ container: %W[
59
+ #{position}
60
+ toast
61
+ [&:not([open])]:hidden
62
+ bg-transparent
63
+ ]
62
64
  }
63
65
  end
64
66
  end
@@ -37,7 +37,13 @@ module Protos
37
37
  private
38
38
 
39
39
  def parse(tokens)
40
- tokens.split
40
+ case tokens
41
+ when Array then tokens
42
+ when String then tokens.split
43
+ else
44
+ raise ArgumentError, "Invalid tokens: #{tokens}, must be either " \
45
+ "String or an Array"
46
+ end
41
47
  end
42
48
  end
43
49
  end
data/lib/protos/types.rb CHANGED
@@ -3,30 +3,5 @@
3
3
  module Protos
4
4
  module Types
5
5
  include Dry.Types()
6
-
7
- MaskShapes = Types::Coercible::Symbol.enum(
8
- :none,
9
- :squircle,
10
- :heart,
11
- :hexagon,
12
- :hexagon2,
13
- :decagon,
14
- :pentagon,
15
- :diamond,
16
- :square,
17
- :circle,
18
- :parallelogram,
19
- :parallelogram2,
20
- :parallelogram3,
21
- :parallelogram4,
22
- :star,
23
- :star2,
24
- :triangle,
25
- :triangle2,
26
- :triangle3,
27
- :triangle4,
28
- :half1,
29
- :half2
30
- )
31
6
  end
32
7
  end
@@ -6,11 +6,19 @@ module Protos
6
6
  # DOCS: A heading component that encapsulates all heading levels by their
7
7
  # size and level.
8
8
 
9
- SizeTypes = Types::Coercible::Symbol.enum(:xs, :sm, :md, :lg, :xl)
10
- LevelTypes = Types::Integer.enum(1, 2, 3, 4, 5, 6)
9
+ Sizes = Types::Coercible::Symbol.enum(:xs, :sm, :md, :lg, :xl)
10
+ Levels = Types::Integer.enum(1, 2, 3, 4, 5, 6)
11
11
 
12
- option :size, type: SizeTypes, default: -> { "md" }, reader: false
13
- option :level, type: LevelTypes, default: -> { 1 }, reader: false
12
+ SIZES = {
13
+ xs: "text-lg font-medium",
14
+ sm: "text-xl font-medium",
15
+ md: "text-2xl font-semibold",
16
+ lg: "text-3xl font-semibold md:text-4xl",
17
+ xl: "text-4xl font-bold md:text-5xl"
18
+ }.freeze
19
+
20
+ option :size, type: Sizes, default: -> { "md" }, reader: false
21
+ option :level, type: Levels, default: -> { 1 }, reader: false
14
22
 
15
23
  def view_template(&)
16
24
  send(element, **attrs, &)
@@ -20,23 +28,17 @@ module Protos
20
28
 
21
29
  def theme
22
30
  {
23
- container: tokens(
31
+ container: [
24
32
  size,
25
33
  "scroll-m-20",
26
34
  "tracking-tight",
27
35
  "transition-colors"
28
- )
36
+ ]
29
37
  }
30
38
  end
31
39
 
32
40
  def size
33
- {
34
- xs: "text-lg font-medium",
35
- sm: "text-xl font-medium",
36
- md: "text-2xl font-semibold",
37
- lg: "text-3xl font-semibold md:text-4xl",
38
- xl: "text-4xl font-bold md:text-5xl"
39
- }.fetch(@size.to_sym)
41
+ SIZES.fetch(@size.to_sym)
40
42
  end
41
43
 
42
44
  def element
@@ -13,12 +13,12 @@ module Protos
13
13
 
14
14
  def theme
15
15
  {
16
- container: tokens(
17
- "font-semibold",
18
- "hover:underline",
19
- "underline-offset-4",
20
- "cursor-pointer"
21
- )
16
+ container: %w[
17
+ font-semibold
18
+ hover:underline
19
+ underline-offset-4
20
+ cursor-pointer
21
+ ]
22
22
  }
23
23
  end
24
24
  end
@@ -13,9 +13,9 @@ module Protos
13
13
 
14
14
  def theme
15
15
  {
16
- container: tokens(
17
- "leading-relaxed",
18
- "[&:not(:first-child)]:mt-sm"
16
+ container: %w(
17
+ leading-relaxed
18
+ [&:not(:first-child)]:mt-sm
19
19
  )
20
20
  }
21
21
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Protos
4
- VERSION = "0.4.1"
4
+ VERSION = "0.4.2"
5
5
  end
data/lib/protos.rb CHANGED
@@ -91,6 +91,9 @@ module Protos
91
91
  require_relative "protos/stats/title"
92
92
  require_relative "protos/stats/value"
93
93
 
94
+ require_relative "protos/steps"
95
+ require_relative "protos/steps/step"
96
+
94
97
  require_relative "protos/swap"
95
98
  require_relative "protos/swap/on"
96
99
  require_relative "protos/swap/off"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: protos
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nolan J Tait
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-04-09 00:00:00.000000000 Z
11
+ date: 2024-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-core
@@ -93,6 +93,7 @@ files:
93
93
  - LICENSE.txt
94
94
  - README.md
95
95
  - Rakefile
96
+ - TODO.md
96
97
  - benchmarks/.keep
97
98
  - benchmarks/table.txt
98
99
  - examples/list.rb
@@ -162,6 +163,8 @@ files:
162
163
  - lib/protos/stats/stat.rb
163
164
  - lib/protos/stats/title.rb
164
165
  - lib/protos/stats/value.rb
166
+ - lib/protos/steps.rb
167
+ - lib/protos/steps/step.rb
165
168
  - lib/protos/swap.rb
166
169
  - lib/protos/swap/off.rb
167
170
  - lib/protos/swap/on.rb