primer_view_components 0.0.111 → 0.0.113

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 (175) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +68 -0
  3. data/app/assets/javascripts/primer_view_components.js +1 -1
  4. data/app/assets/javascripts/primer_view_components.js.map +1 -1
  5. data/app/assets/styles/primer_view_components.css +3 -1
  6. data/app/assets/styles/primer_view_components.css.map +1 -1
  7. data/app/components/primer/alpha/action_list.css +1 -1
  8. data/app/components/primer/alpha/action_list.css.json +1 -1
  9. data/app/components/primer/alpha/action_list.css.map +1 -1
  10. data/app/components/primer/alpha/action_list.pcss +0 -15
  11. data/app/components/primer/alpha/auto_complete.css +1 -0
  12. data/app/components/primer/alpha/auto_complete.css.json +1 -0
  13. data/app/components/primer/alpha/auto_complete.css.map +1 -0
  14. data/app/components/primer/alpha/auto_complete.pcss +118 -0
  15. data/app/components/primer/alpha/banner.css +1 -1
  16. data/app/components/primer/alpha/banner.css.map +1 -1
  17. data/app/components/primer/alpha/banner.pcss +0 -1
  18. data/app/components/primer/alpha/button_marketing.css +1 -0
  19. data/app/components/primer/alpha/button_marketing.css.json +1 -0
  20. data/app/components/primer/alpha/button_marketing.css.map +1 -0
  21. data/app/components/primer/alpha/button_marketing.pcss +175 -0
  22. data/app/components/primer/alpha/dialog/body.rb +3 -0
  23. data/app/components/primer/alpha/dialog/footer.rb +3 -0
  24. data/app/components/primer/alpha/dialog/header.rb +3 -0
  25. data/app/components/primer/alpha/dialog.css +1 -0
  26. data/app/components/primer/alpha/dialog.css.json +1 -0
  27. data/app/components/primer/alpha/dialog.css.map +1 -0
  28. data/app/components/primer/alpha/dialog.pcss +484 -0
  29. data/app/components/primer/alpha/dialog.rb +3 -0
  30. data/app/components/primer/{dropdown → alpha/dropdown}/menu.d.ts +0 -0
  31. data/app/components/primer/{dropdown → alpha/dropdown}/menu.html.erb +0 -0
  32. data/app/components/primer/{dropdown → alpha/dropdown}/menu.js +0 -0
  33. data/app/components/primer/alpha/dropdown/menu.rb +105 -0
  34. data/app/components/primer/{dropdown → alpha/dropdown}/menu.ts +0 -0
  35. data/app/components/primer/alpha/dropdown.css +1 -0
  36. data/app/components/primer/alpha/dropdown.css.json +1 -0
  37. data/app/components/primer/{dropdown.css.map → alpha/dropdown.css.map} +1 -1
  38. data/app/components/primer/{dropdown.d.ts → alpha/dropdown.d.ts} +0 -0
  39. data/app/components/primer/{dropdown.html.erb → alpha/dropdown.html.erb} +0 -0
  40. data/app/components/primer/{dropdown.js → alpha/dropdown.js} +0 -0
  41. data/app/components/primer/{dropdown.pcss → alpha/dropdown.pcss} +1 -1
  42. data/app/components/primer/alpha/dropdown.rb +154 -0
  43. data/app/components/primer/{dropdown.ts → alpha/dropdown.ts} +0 -0
  44. data/app/components/primer/alpha/segmented_control.css +1 -1
  45. data/app/components/primer/alpha/segmented_control.css.map +1 -1
  46. data/app/components/primer/alpha/tab_nav.css +1 -0
  47. data/app/components/primer/alpha/tab_nav.css.json +1 -0
  48. data/app/components/primer/alpha/tab_nav.css.map +1 -0
  49. data/app/components/primer/alpha/tab_nav.pcss +100 -0
  50. data/app/components/primer/alpha/text_field.css +3 -0
  51. data/app/components/primer/alpha/text_field.css.json +1 -0
  52. data/app/components/primer/alpha/text_field.css.map +1 -0
  53. data/app/components/primer/alpha/text_field.pcss +683 -0
  54. data/app/components/primer/alpha/toggle_switch.d.ts +1 -1
  55. data/app/components/primer/alpha/toggle_switch.js +7 -4
  56. data/app/components/primer/alpha/toggle_switch.ts +7 -3
  57. data/app/components/primer/alpha/underline_nav.css +1 -0
  58. data/app/components/primer/alpha/underline_nav.css.json +1 -0
  59. data/app/components/primer/alpha/underline_nav.css.map +1 -0
  60. data/app/components/primer/alpha/underline_nav.pcss +133 -0
  61. data/app/components/primer/beta/border_box.css +1 -0
  62. data/app/components/primer/beta/border_box.css.json +1 -0
  63. data/app/components/primer/beta/border_box.css.map +1 -0
  64. data/app/components/primer/beta/border_box.pcss +284 -0
  65. data/app/components/primer/beta/button_group.css +1 -0
  66. data/app/components/primer/beta/button_group.css.json +1 -0
  67. data/app/components/primer/beta/button_group.css.map +1 -0
  68. data/app/components/primer/beta/button_group.pcss +92 -0
  69. data/app/components/primer/{clipboard_copy.d.ts → beta/clipboard_copy.d.ts} +0 -0
  70. data/app/components/primer/{clipboard_copy.html.erb → beta/clipboard_copy.html.erb} +0 -0
  71. data/app/components/primer/{clipboard_copy.js → beta/clipboard_copy.js} +0 -0
  72. data/app/components/primer/beta/clipboard_copy.rb +50 -0
  73. data/app/components/primer/{clipboard_copy.ts → beta/clipboard_copy.ts} +0 -0
  74. data/app/components/primer/beta/link.css +1 -0
  75. data/app/components/primer/beta/link.css.json +1 -0
  76. data/app/components/primer/beta/link.css.map +1 -0
  77. data/app/components/primer/beta/link.pcss +60 -0
  78. data/app/components/primer/{popover_component.css → beta/popover.css} +0 -0
  79. data/app/components/primer/beta/popover.css.json +1 -0
  80. data/app/components/primer/beta/popover.css.map +1 -0
  81. data/app/components/primer/{popover_component.html.erb → beta/popover.html.erb} +0 -0
  82. data/app/components/primer/{popover_component.pcss → beta/popover.pcss} +5 -5
  83. data/app/components/primer/beta/popover.rb +127 -0
  84. data/app/components/primer/beta/relative_time.rb +160 -0
  85. data/app/components/primer/button_component.css +1 -0
  86. data/app/components/primer/button_component.css.json +1 -0
  87. data/app/components/primer/button_component.css.map +1 -0
  88. data/app/components/primer/button_component.pcss +557 -0
  89. data/app/components/primer/button_component.rb +1 -1
  90. data/app/components/primer/clipboard_copy.rb +2 -43
  91. data/app/components/primer/component.rb +6 -2
  92. data/app/components/primer/dropdown/menu.rb +5 -90
  93. data/app/components/primer/dropdown.rb +2 -145
  94. data/app/components/primer/local_time.d.ts +1 -1
  95. data/app/components/primer/local_time.js +1 -1
  96. data/app/components/primer/local_time.rb +3 -1
  97. data/app/components/primer/local_time.ts +1 -1
  98. data/app/components/primer/menu_component.css +1 -0
  99. data/app/components/primer/menu_component.css.json +1 -0
  100. data/app/components/primer/menu_component.css.map +1 -0
  101. data/app/components/primer/menu_component.pcss +119 -0
  102. data/app/components/primer/popover_component.rb +3 -120
  103. data/app/components/primer/primer.d.ts +2 -2
  104. data/app/components/primer/primer.js +2 -2
  105. data/app/components/primer/primer.pcss +20 -3
  106. data/app/components/primer/primer.ts +2 -2
  107. data/app/components/primer/time_ago_component.d.ts +1 -1
  108. data/app/components/primer/time_ago_component.js +1 -1
  109. data/app/components/primer/time_ago_component.rb +2 -1
  110. data/app/components/primer/time_ago_component.ts +1 -1
  111. data/app/forms/submit_button_form.rb +8 -2
  112. data/app/helpers/primer/form_helper.rb +12 -0
  113. data/lib/postcss_mixins/clearfix.pcss +12 -0
  114. data/lib/primer/deprecations.rb +96 -24
  115. data/lib/primer/deprecations.yml +68 -0
  116. data/lib/primer/forms/base.rb +7 -20
  117. data/lib/primer/forms/base_component.rb +15 -1
  118. data/lib/primer/forms/button.html.erb +4 -0
  119. data/lib/primer/forms/button.rb +68 -0
  120. data/lib/primer/forms/check_box.html.erb +2 -2
  121. data/lib/primer/forms/check_box.rb +1 -1
  122. data/lib/primer/forms/check_box_group.html.erb +2 -2
  123. data/lib/primer/forms/dsl/button_input.rb +29 -0
  124. data/lib/primer/forms/dsl/input_methods.rb +7 -2
  125. data/lib/primer/forms/dsl/submit_button_input.rb +1 -0
  126. data/lib/primer/forms/dsl/text_field_input.rb +0 -7
  127. data/lib/primer/forms/radio_button.html.erb +2 -2
  128. data/lib/primer/forms/radio_button.rb +1 -1
  129. data/lib/primer/forms/radio_button_group.html.erb +2 -2
  130. data/lib/primer/forms/select_list.html.erb +1 -1
  131. data/lib/primer/forms/select_list.rb +4 -1
  132. data/lib/primer/forms/submit_button.html.erb +1 -4
  133. data/lib/primer/forms/submit_button.rb +1 -37
  134. data/lib/primer/forms/text_area.html.erb +1 -1
  135. data/lib/primer/forms/text_area.rb +5 -1
  136. data/lib/primer/forms/text_field.html.erb +1 -1
  137. data/lib/primer/forms/text_field.rb +11 -0
  138. data/lib/primer/forms/utils.rb +28 -0
  139. data/lib/primer/view_components/audited.rb +14 -0
  140. data/lib/primer/view_components/engine.rb +1 -0
  141. data/lib/primer/view_components/linters/clipboard_copy_component_migration_counter.rb +2 -2
  142. data/lib/primer/view_components/linters/deprecated_components_counter.rb +15 -4
  143. data/lib/primer/view_components/linters/helpers/deprecated_components_helpers.rb +3 -18
  144. data/lib/primer/view_components/linters/severity_schema.rb +14 -0
  145. data/lib/primer/view_components/version.rb +1 -1
  146. data/lib/rubocop/cop/primer/component_name_migration.rb +2 -2
  147. data/lib/tasks/docs.rake +6 -5
  148. data/previews/primer/alpha/auto_complete_preview.rb +12 -0
  149. data/previews/primer/alpha/button_marketing_preview.rb +36 -0
  150. data/previews/primer/alpha/dropdown_preview.rb +210 -0
  151. data/previews/primer/alpha/segmented_control_preview.rb +9 -6
  152. data/previews/primer/alpha/tab_nav_preview.rb +55 -0
  153. data/previews/primer/alpha/text_field_preview.rb +77 -52
  154. data/previews/primer/beta/border_box_preview.rb +65 -13
  155. data/previews/primer/beta/clipboard_copy_preview/element.html.erb +2 -0
  156. data/previews/primer/beta/clipboard_copy_preview.rb +39 -0
  157. data/previews/primer/beta/link_preview.rb +28 -0
  158. data/previews/primer/beta/popover_preview.rb +79 -0
  159. data/previews/primer/beta/relative_time_preview.rb +271 -0
  160. data/previews/primer/forms/forms_preview.rb +1 -0
  161. data/static/arguments.json +183 -73
  162. data/static/audited_at.json +10 -6
  163. data/static/constants.json +180 -50
  164. data/static/statuses.json +12 -8
  165. metadata +86 -29
  166. data/app/components/primer/dropdown.css +0 -1
  167. data/app/components/primer/dropdown.css.json +0 -1
  168. data/app/components/primer/image.rb +0 -7
  169. data/app/components/primer/popover_component.css.json +0 -1
  170. data/app/components/primer/popover_component.css.map +0 -1
  171. data/app/components/primer/progress_bar_component.rb +0 -7
  172. data/previews/primer/clipboard_copy_preview/element.html.erb +0 -2
  173. data/previews/primer/clipboard_copy_preview.rb +0 -37
  174. data/previews/primer/dropdown_preview.rb +0 -208
  175. data/previews/primer/popover_component_preview.rb +0 -34
@@ -63,62 +63,87 @@ module Primer
63
63
  end
64
64
 
65
65
  # @label Default
66
+ def default
67
+ render(Primer::Alpha::TextField.new(name: "my-text-field", label: "My text field"))
68
+ end
69
+
70
+ # @!group Sizes
66
71
  #
67
- # @param name text
68
- # @param id text
69
- # @param label text
70
- # @param visually_hide_label toggle
71
- # @param size [Symbol] select [small, medium, large]
72
- # @param show_clear_button toggle
73
- # @param clear_button_id text
74
- # @param full_width toggle
75
- # @param disabled toggle
76
- # @param invalid toggle
77
- # @param placeholder text
78
- # @param inset toggle
79
- # @param monospace toggle
80
- # @param leading_visual_icon text
81
- def default(
82
- name: "my-text-field",
83
- id: "my-text-field",
84
- label: "My text field",
85
- visually_hide_label: false,
86
- size: Primer::Forms::Dsl::Input::DEFAULT_SIZE.to_s,
87
- show_clear_button: false,
88
- clear_button_id: "my-text-field-clear-button",
89
- full_width: false,
90
- disabled: false,
91
- invalid: false,
92
- placeholder: nil,
93
- inset: false,
94
- monospace: false,
95
- leading_visual_icon: nil
96
- )
97
- system_arguments = {
98
- name: name,
99
- id: id,
100
- label: label,
101
- visually_hide_label: visually_hide_label,
102
- size: size,
103
- show_clear_button: show_clear_button,
104
- clear_button_id: clear_button_id,
105
- full_width: full_width,
106
- disabled: disabled,
107
- invalid: invalid,
108
- placeholder: placeholder,
109
- inset: inset,
110
- monospace: monospace
111
- }
72
+ # @label Small
73
+ def size_small
74
+ render(Primer::Alpha::TextField.new(size: :small, visually_hide_label: true, name: "my-text-field", label: "My text field"))
75
+ end
112
76
 
113
- if leading_visual_icon
114
- system_arguments[:leading_visual] = {
115
- icon: leading_visual_icon,
116
- size: :small
117
- }
118
- end
77
+ # @label Medium
78
+ def size_medium
79
+ render(Primer::Alpha::TextField.new(size: :medium, visually_hide_label: true, name: "my-text-field", label: "My text field"))
80
+ end
119
81
 
120
- render(Primer::Alpha::TextField.new(**system_arguments))
82
+ # @label Large
83
+ def size_large
84
+ render(Primer::Alpha::TextField.new(size: :large, visually_hide_label: true, name: "my-text-field", label: "My text field"))
85
+ end
86
+ #
87
+ # @!endgroup
88
+
89
+ # @!group Options
90
+ #
91
+ # @label With caption
92
+ def with_caption
93
+ render(Primer::Alpha::TextField.new(caption: "With a caption", name: "my-text-field", label: "My text field"))
94
+ end
95
+
96
+ # @label Visually hidden label
97
+ def visually_hide_label
98
+ render(Primer::Alpha::TextField.new(visually_hide_label: true, name: "my-text-field", label: "My text field"))
99
+ end
100
+
101
+ # @label Show clear button
102
+ def show_clear_button
103
+ render(Primer::Alpha::TextField.new(show_clear_button: true, name: "my-text-field", label: "My text field"))
104
+ end
105
+
106
+ # @label Full width
107
+ def full_width
108
+ render(Primer::Alpha::TextField.new(full_width: true, name: "my-text-field", label: "My text field"))
109
+ end
110
+
111
+ # @label Disabled
112
+ def disabled
113
+ render(Primer::Alpha::TextField.new(disabled: true, name: "my-text-field", label: "My text field"))
114
+ end
115
+
116
+ # @label Invalid
117
+ def invalid
118
+ render(Primer::Alpha::TextField.new(invalid: true, name: "my-text-field", label: "My text field"))
119
+ end
120
+
121
+ # @label With placeholder
122
+ def with_placeholder
123
+ render(Primer::Alpha::TextField.new(placeholder: "with a placeholder", name: "my-text-field", label: "My text field"))
124
+ end
125
+
126
+ # @label Inset
127
+ def inset
128
+ render(Primer::Alpha::TextField.new(inset: true, name: "my-text-field", label: "My text field"))
129
+ end
130
+
131
+ # @label Monospace
132
+ def monospace
133
+ render(Primer::Alpha::TextField.new(monospace: true, name: "my-text-field", label: "My text field"))
121
134
  end
135
+
136
+ # @label With leading visual
137
+ def with_leading_visual
138
+ render(Primer::Alpha::TextField.new(leading_visual: { icon: :search }, name: "my-text-field", label: "My text field"))
139
+ end
140
+
141
+ # @label With validation message
142
+ def with_validation_message
143
+ render(Primer::Alpha::TextField.new(validation_message: "An error occurred!", name: "my-text-field", label: "My text field"))
144
+ end
145
+ #
146
+ # @!endgroup
122
147
  end
123
148
  end
124
149
  end
@@ -6,9 +6,22 @@ module Primer
6
6
  class BorderBoxPreview < ViewComponent::Preview
7
7
  # @label Playground
8
8
  #
9
- # @param padding [Symbol] select [default, condensed]
10
- def playground(padding: :default)
9
+ # @param padding [Symbol] select [default, condensed, spacious]
10
+ # @param scheme [Symbol] select [default, neutral, info, warning]
11
+ def playground(padding: :default, scheme: :default)
11
12
  render(Primer::Beta::BorderBox.new(padding: padding)) do |component|
13
+ component.header { "Header" }
14
+ component.body { "Body" }
15
+ component.row(scheme: scheme) { "#{scheme.to_s.capitalize} row one" }
16
+ component.row(scheme: scheme) { "#{scheme.to_s.capitalize} row two" }
17
+ component.row(scheme: scheme) { "#{scheme.to_s.capitalize} row three" }
18
+ component.footer { "Footer" }
19
+ end
20
+ end
21
+
22
+ # @label Default
23
+ def default
24
+ render(Primer::Beta::BorderBox.new) do |component|
12
25
  component.header { "Header" }
13
26
  component.body { "Body" }
14
27
  component.row { "Row one" }
@@ -18,11 +31,34 @@ module Primer
18
31
  end
19
32
  end
20
33
 
21
- # @label Default options
34
+ # @label Header with title
35
+ def header_with_title
36
+ render(Primer::Beta::BorderBox.new) do |component|
37
+ component.with_header do |h|
38
+ h.title(tag: :h2) do
39
+ "Header with title"
40
+ end
41
+ end
42
+ component.body { "Body" }
43
+ component.footer { "Footer" }
44
+ end
45
+ end
46
+
47
+ # @label Row colors
48
+ def row_colors
49
+ render(Primer::Beta::BorderBox.new) do |component|
50
+ component.row(scheme: :default) { "Default" }
51
+ component.row(scheme: :neutral) { "Neutral" }
52
+ component.row(scheme: :info) { "Info" }
53
+ component.row(scheme: :warning) { "Warning" }
54
+ end
55
+ end
56
+
57
+ # @!group Padding
22
58
  #
23
- # @param padding [Symbol] select [default, condensed]
24
- def default(padding: :default)
25
- render(Primer::Beta::BorderBox.new(padding: padding)) do |component|
59
+ # @label Default
60
+ def padding_default
61
+ render(Primer::Beta::BorderBox.new) do |component|
26
62
  component.header { "Header" }
27
63
  component.body { "Body" }
28
64
  component.row { "Row one" }
@@ -32,15 +68,31 @@ module Primer
32
68
  end
33
69
  end
34
70
 
35
- # @label Row schemes
36
- #
37
- # @param padding [Symbol] select [default, condensed]
38
- # @param scheme [Symbol] select [default, neutral, info, warning]
39
- def row_schemes(padding: :default, scheme: :default)
40
- render(Primer::Beta::BorderBox.new(padding: padding)) do |component|
41
- component.row(scheme: scheme) { "#{scheme.to_s.capitalize} scheme" }
71
+ # @label Condensed
72
+ def padding_condensed
73
+ render(Primer::Beta::BorderBox.new(padding: :condensed)) do |component|
74
+ component.header { "Header" }
75
+ component.body { "Body" }
76
+ component.row { "Row one" }
77
+ component.row { "Row two" }
78
+ component.row { "Row three" }
79
+ component.footer { "Footer" }
42
80
  end
43
81
  end
82
+
83
+ # @label Spacious
84
+ def padding_spacious
85
+ render(Primer::Beta::BorderBox.new(padding: :spacious)) do |component|
86
+ component.header { "Header" }
87
+ component.body { "Body" }
88
+ component.row { "Row one" }
89
+ component.row { "Row two" }
90
+ component.row { "Row three" }
91
+ component.footer { "Footer" }
92
+ end
93
+ end
94
+ #
95
+ # @!endgroup
44
96
  end
45
97
  end
46
98
  end
@@ -0,0 +1,2 @@
1
+ <%= render(Primer::Beta::ClipboardCopy.new(for: "blob-path", "aria-label": aria_label)) %>
2
+ <div id="blob-path">src/index.js</div>
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Primer
4
+ module Beta
5
+ # @label ClipboardCopy
6
+ class ClipboardCopyPreview < ViewComponent::Preview
7
+ # @label Playground
8
+ #
9
+ # @param aria_label [String]
10
+ # @param value [String]
11
+ def playground(value: "Text to copy", aria_label: "Copy text to the system clipboard")
12
+ render(Primer::Beta::ClipboardCopy.new(value: value, "aria-label": aria_label))
13
+ end
14
+
15
+ # @label Default Options
16
+ #
17
+ # @param aria_label [String]
18
+ # @param value [String]
19
+ def default(value: "Text to copy", aria_label: "Copy text to the system clipboard")
20
+ render(Primer::Beta::ClipboardCopy.new(value: value, "aria-label": aria_label))
21
+ end
22
+
23
+ # @label With text instead of icons
24
+ #
25
+ # @param aria_label [String]
26
+ # @param value [String]
27
+ def text(value: "Text to copy", aria_label: "Copy text to the system clipboard")
28
+ render(Primer::Beta::ClipboardCopy.new(value: value, "aria-label": aria_label)) { "Click to copy!" }
29
+ end
30
+
31
+ # @label Copying from an element
32
+ #
33
+ # @param aria_label [String]
34
+ def element(aria_label: "Copy text to the system clipboard")
35
+ render_with_template(locals: { aria_label: aria_label })
36
+ end
37
+ end
38
+ end
39
+ end
@@ -36,6 +36,34 @@ module Primer
36
36
  "Link with tooltip"
37
37
  end
38
38
  end
39
+
40
+ # @!group Color Scheme
41
+ #
42
+ # @label Default
43
+ def color_scheme_default
44
+ render(Primer::Beta::Link.new(href: "#")) { "This is a default link color." }
45
+ end
46
+
47
+ # @label Primary
48
+ def color_scheme_primary
49
+ render(Primer::Beta::Link.new(href: "#", scheme: :primary)) { "This is a primary link color." }
50
+ end
51
+
52
+ # @label Primary, Muted
53
+ def color_scheme_primary_muted
54
+ render(Primer::Beta::Link.new(href: "#", scheme: :primary, muted: true)) { "This is a muted primary link color." }
55
+ end
56
+
57
+ # @label Secondary
58
+ def color_scheme_secondary
59
+ render(Primer::Beta::Link.new(href: "#", scheme: :secondary)) { "This is a secondary link color." }
60
+ end
61
+
62
+ # @label Secondary, Muted
63
+ def color_scheme_secondary_muted
64
+ render(Primer::Beta::Link.new(href: "#", scheme: :secondary, muted: true)) { "This is a muted secondary link color." }
65
+ end
66
+ # @!endgroup
39
67
  end
40
68
  end
41
69
  end
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Primer
4
+ module Beta
5
+ # @label Popover
6
+ class PopoverPreview < ViewComponent::Preview
7
+ # @label Playground
8
+ #
9
+ # @param caret [Symbol] select [top, right, bottom, left, top_right, top_left, bottom_right, bottom_left, left_bottom, left_top, right_bottom, right_top]
10
+ def playground(caret: :top)
11
+ render Primer::Beta::Popover.new do |component|
12
+ component.with_heading do
13
+ "Activity feed"
14
+ end
15
+ component.with_body(caret: caret) do
16
+ "This is the Popover body."
17
+ end
18
+ end
19
+ end
20
+
21
+ # @label Default
22
+ #
23
+ # @param caret [Symbol] select [top, right, bottom, left, top_right, top_left, bottom_right, bottom_left, left_bottom, left_top, right_bottom, right_top]
24
+ def default(caret: :top)
25
+ render Primer::Beta::Popover.new do |component|
26
+ component.with_heading do
27
+ "Activity feed"
28
+ end
29
+ component.with_body(caret: caret) do
30
+ "This is the Popover body."
31
+ end
32
+ end
33
+ end
34
+
35
+ # @label Large
36
+ def large
37
+ render Primer::Beta::Popover.new do |component|
38
+ component.with_body(large: true) do
39
+ "This is a large Popover body."
40
+ end
41
+ end
42
+ end
43
+
44
+ # @!group Directions
45
+ def bottom_right
46
+ render Primer::Beta::Popover.new do |component|
47
+ component.with_body(caret: :bottom_right) do
48
+ "This is the Popover body."
49
+ end
50
+ end
51
+ end
52
+
53
+ def top_right
54
+ render Primer::Beta::Popover.new do |component|
55
+ component.with_body(caret: :top_right) do
56
+ "This is the Popover body."
57
+ end
58
+ end
59
+ end
60
+
61
+ def bottom_left
62
+ render Primer::Beta::Popover.new do |component|
63
+ component.with_body(caret: :bottom_left) do
64
+ "This is the Popover body."
65
+ end
66
+ end
67
+ end
68
+
69
+ def top_left
70
+ render Primer::Beta::Popover.new do |component|
71
+ component.with_body(caret: :top_left) do
72
+ "This is the Popover body."
73
+ end
74
+ end
75
+ end
76
+ # @!endgroup
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,271 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Setup Playground to use all available component props
4
+ # Setup Features to use individual component props and combinations
5
+
6
+ module Primer
7
+ module Beta
8
+ # @label RelativeTime
9
+ class RelativeTimePreview < ViewComponent::Preview
10
+ # @label Playground
11
+ # @param datetime datetime-local
12
+ # @param tense [Symbol] select [~, auto, past, future]
13
+ # @param prefix [String] text
14
+ # @param second [Symbol] select [~, numeric, two_digit]
15
+ # @param minute [Symbol] select [~, numeric, two_digit]
16
+ # @param hour [Symbol] select [~, numeric, two_digit]
17
+ # @param weekday [Symbol] select [~, long, short, narrow]
18
+ # @param day [Symbol] select [~, numeric, two_digit]
19
+ # @param month [Symbol] select [~, numeric, two_digit, short, long, narrow]
20
+ # @param year [Symbol] select [~, numeric, two_digit]
21
+ # @param time_zone_name [Symbol] select [~, long, short, short_offset, long_offset, short_generic, long_generic]
22
+ # @param precision [Symbol] select [~, second, minute, hour, day, month, year]
23
+ # @param format [Symbol] select [~, auto, micro, elapsed]
24
+ # @param lang [String] text
25
+ # @param title [String] text
26
+ def playground(
27
+ tense: nil,
28
+ prefix: nil,
29
+ second: nil,
30
+ minute: nil,
31
+ hour: nil,
32
+ weekday: nil,
33
+ day: nil,
34
+ month: nil,
35
+ year: nil,
36
+ time_zone_name: nil,
37
+ threshold: nil,
38
+ precision: nil,
39
+ format: nil,
40
+ datetime: Time.utc(2020, 1, 1, 0, 0, 0),
41
+ lang: nil,
42
+ title: nil
43
+ )
44
+ render(Primer::Beta::RelativeTime.new(
45
+ tense: tense,
46
+ prefix: prefix,
47
+ second: second,
48
+ minute: minute,
49
+ hour: hour,
50
+ weekday: weekday,
51
+ day: day,
52
+ month: month,
53
+ year: year,
54
+ time_zone_name: time_zone_name,
55
+ threshold: threshold,
56
+ precision: precision,
57
+ format: format,
58
+ datetime: datetime,
59
+ lang: lang,
60
+ title: title
61
+ ))
62
+ end
63
+
64
+ # @label Default
65
+ # @param datetime datetime-local
66
+ # @param tense [Symbol] select [~, auto, past, future]
67
+ # @param prefix [String] text
68
+ # @param second [Symbol] select [~, numeric, two_digit]
69
+ # @param minute [Symbol] select [~, numeric, two_digit]
70
+ # @param hour [Symbol] select [~, numeric, two_digit]
71
+ # @param weekday [Symbol] select [~, long, short, narrow]
72
+ # @param day [Symbol] select [~, numeric, two_digit]
73
+ # @param month [Symbol] select [~, numeric, two_digit, short, long, narrow]
74
+ # @param year [Symbol] select [~, numeric, two_digit]
75
+ # @param time_zone_name [Symbol] select [~, long, short, short_offset, long_offset, short_generic, long_generic]
76
+ # @param precision [Symbol] select [~, second, minute, hour, day, month, year]
77
+ # @param format [Symbol] select [~, auto, micro, elapsed]
78
+ # @param lang [String] text
79
+ # @param title [String] text
80
+ def default(
81
+ tense: nil,
82
+ prefix: nil,
83
+ second: nil,
84
+ minute: nil,
85
+ hour: nil,
86
+ weekday: nil,
87
+ day: nil,
88
+ month: nil,
89
+ year: nil,
90
+ time_zone_name: nil,
91
+ threshold: nil,
92
+ precision: nil,
93
+ format: nil,
94
+ datetime: Time.now.utc,
95
+ lang: nil,
96
+ title: nil
97
+ )
98
+ render(Primer::Beta::RelativeTime.new(
99
+ tense: tense,
100
+ prefix: prefix,
101
+ second: second,
102
+ minute: minute,
103
+ hour: hour,
104
+ weekday: weekday,
105
+ day: day,
106
+ month: month,
107
+ year: year,
108
+ time_zone_name: time_zone_name,
109
+ threshold: threshold,
110
+ precision: precision,
111
+ format: format,
112
+ datetime: datetime,
113
+ lang: lang,
114
+ title: title
115
+ ))
116
+ end
117
+
118
+ # @label Micro Format
119
+ # @param datetime datetime-local
120
+ # @param tense [Symbol] select [~, auto, past, future]
121
+ # @param prefix [String] text
122
+ # @param second [Symbol] select [~, numeric, two_digit]
123
+ # @param minute [Symbol] select [~, numeric, two_digit]
124
+ # @param hour [Symbol] select [~, numeric, two_digit]
125
+ # @param weekday [Symbol] select [~, long, short, narrow]
126
+ # @param day [Symbol] select [~, numeric, two_digit]
127
+ # @param month [Symbol] select [~, numeric, two_digit, short, long, narrow]
128
+ # @param year [Symbol] select [~, numeric, two_digit]
129
+ # @param time_zone_name [Symbol] select [~, long, short, short_offset, long_offset, short_generic, long_generic]
130
+ # @param precision [Symbol] select [~, second, minute, hour, day, month, year]
131
+ # @param lang [String] text
132
+ # @param title [String] text
133
+ def micro_format(
134
+ tense: nil,
135
+ prefix: nil,
136
+ second: nil,
137
+ minute: nil,
138
+ hour: nil,
139
+ weekday: nil,
140
+ day: nil,
141
+ month: nil,
142
+ year: nil,
143
+ time_zone_name: nil,
144
+ threshold: nil,
145
+ precision: nil,
146
+ datetime: Time.now.iso8601,
147
+ lang: nil,
148
+ title: nil
149
+ )
150
+ render(Primer::Beta::RelativeTime.new(
151
+ tense: tense,
152
+ prefix: prefix,
153
+ second: second,
154
+ minute: minute,
155
+ hour: hour,
156
+ weekday: weekday,
157
+ day: day,
158
+ month: month,
159
+ year: year,
160
+ time_zone_name: time_zone_name,
161
+ threshold: threshold,
162
+ precision: precision,
163
+ format: :micro,
164
+ datetime: datetime,
165
+ lang: lang,
166
+ title: title
167
+ ))
168
+ end
169
+
170
+ # @label Recent Time
171
+ # @param datetime datetime-local
172
+ # @param tense [Symbol] select [~, auto, past, future]
173
+ # @param prefix [String] text
174
+ # @param second [Symbol] select [~, numeric, two_digit]
175
+ # @param minute [Symbol] select [~, numeric, two_digit]
176
+ # @param hour [Symbol] select [~, numeric, two_digit]
177
+ # @param weekday [Symbol] select [~, long, short, narrow]
178
+ # @param day [Symbol] select [~, numeric, two_digit]
179
+ # @param month [Symbol] select [~, numeric, two_digit, short, long, narrow]
180
+ # @param year [Symbol] select [~, numeric, two_digit]
181
+ # @param time_zone_name [Symbol] select [~, long, short, short_offset, long_offset, short_generic, long_generic]
182
+ # @param precision [Symbol] select [~, second, minute, hour, day, month, year]
183
+ # @param format [Symbol] select [~, auto, micro, elapsed]
184
+ # @param lang [String] text
185
+ # @param title [String] text
186
+ def recent_time(
187
+ tense: nil,
188
+ prefix: nil,
189
+ second: nil,
190
+ minute: nil,
191
+ hour: nil,
192
+ weekday: nil,
193
+ day: nil,
194
+ month: nil,
195
+ year: nil,
196
+ time_zone_name: nil,
197
+ threshold: nil,
198
+ precision: nil,
199
+ format: nil,
200
+ datetime: Time.now.iso8601,
201
+ lang: nil,
202
+ title: nil
203
+ )
204
+ render(Primer::Beta::RelativeTime.new(
205
+ tense: tense,
206
+ prefix: prefix,
207
+ second: second,
208
+ minute: minute,
209
+ hour: hour,
210
+ weekday: weekday,
211
+ day: day,
212
+ month: month,
213
+ year: year,
214
+ time_zone_name: time_zone_name,
215
+ threshold: threshold,
216
+ precision: precision,
217
+ format: format,
218
+ datetime: datetime,
219
+ lang: lang,
220
+ title: title
221
+ ))
222
+ end
223
+
224
+ # @label Count Down Timer
225
+ # @param datetime datetime-local
226
+ # @param tense [Symbol] select [~, auto, past, future]
227
+ # @param prefix [String] text
228
+ # @param second [Symbol] select [~, numeric, two_digit]
229
+ # @param minute [Symbol] select [~, numeric, two_digit]
230
+ # @param hour [Symbol] select [~, numeric, two_digit]
231
+ # @param weekday [Symbol] select [~, long, short, narrow]
232
+ # @param year [Symbol] select [~, numeric, two_digit]
233
+ # @param time_zone_name [Symbol] select [~, long, short, short_offset, long_offset, short_generic, long_generic]
234
+ # @param precision [Symbol] select [~, second, minute, hour, day, month, year]
235
+ # @param lang [String] text
236
+ # @param title [String] text
237
+ def count_down_timer(
238
+ tense: nil,
239
+ prefix: nil,
240
+ second: nil,
241
+ minute: nil,
242
+ hour: nil,
243
+ weekday: nil,
244
+ year: nil,
245
+ time_zone_name: nil,
246
+ threshold: nil,
247
+ precision: nil,
248
+ datetime: Time.utc(2038, 1, 19, 0o3, 14, 8),
249
+ lang: nil,
250
+ title: nil
251
+ )
252
+ render(Primer::Beta::RelativeTime.new(
253
+ tense: tense,
254
+ prefix: prefix,
255
+ second: second,
256
+ minute: minute,
257
+ hour: hour,
258
+ weekday: weekday,
259
+ year: year,
260
+ time_zone_name: time_zone_name,
261
+ threshold: threshold,
262
+ precision: precision,
263
+ format: :elapsed,
264
+ datetime: datetime,
265
+ lang: lang,
266
+ title: title
267
+ ))
268
+ end
269
+ end
270
+ end
271
+ end
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Primer
4
4
  module Forms
5
+ # :nodoc:
5
6
  class FormsPreview < ViewComponent::Preview
6
7
  def single_text_field_form; end
7
8