primer_view_components 0.0.111 → 0.0.113

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,484 @@
1
+ /* Overlay */
2
+
3
+ .Overlay--hidden {
4
+ display: none !important;
5
+ }
6
+
7
+ .Overlay--visibilityHidden {
8
+ height: 0;
9
+ overflow: hidden;
10
+ visibility: hidden;
11
+ opacity: 0;
12
+ }
13
+
14
+ .Overlay {
15
+ display: flex;
16
+ width: min(var(--overlay-width), 100vw - 2rem);
17
+ min-width: 192px;
18
+ max-height: min(calc(100vh - 2rem), var(--overlay-height));
19
+ white-space: normal;
20
+ flex-direction: column;
21
+ background-color: var(--color-canvas-overlay);
22
+ border-radius: var(--primer-borderRadius-large, 12px);
23
+ box-shadow: var(--color-overlay-shadow);
24
+ opacity: 1;
25
+
26
+ &.Overlay--size-auto {
27
+ min-width: 192px;
28
+ max-width: calc(100vw - 2rem);
29
+ max-height: calc(100vh - 2rem);
30
+ }
31
+
32
+ &.Overlay--size-full {
33
+ width: 100vw;
34
+ height: 100vh;
35
+ }
36
+
37
+ &.Overlay--size-xsmall {
38
+ --overlay-width: 192px;
39
+
40
+ max-height: calc(100vh - 2rem);
41
+ }
42
+
43
+ &.Overlay--size-small {
44
+ --overlay-height: 256px;
45
+ --overlay-width: 320px;
46
+ }
47
+
48
+ &.Overlay--size-small-portrait {
49
+ --overlay-height: 432px;
50
+ --overlay-width: 320px;
51
+ }
52
+
53
+ &.Overlay--size-medium {
54
+ --overlay-height: 320px;
55
+ --overlay-width: 480px;
56
+ }
57
+
58
+ &.Overlay--size-medium-portrait {
59
+ --overlay-height: 600px;
60
+ --overlay-width: 480px;
61
+ }
62
+
63
+ &.Overlay--size-large {
64
+ --overlay-height: 432px;
65
+ --overlay-width: 640px;
66
+ }
67
+
68
+ &.Overlay--size-xlarge {
69
+ --overlay-height: 600px;
70
+ --overlay-width: 960px;
71
+ }
72
+
73
+ &.Overlay--height-auto {
74
+ height: auto;
75
+ }
76
+
77
+ /* start deprecate in favor of Alpha::Dialog */
78
+ &.Overlay--height-xsmall {
79
+ height: min(192px, 100vh - 2rem);
80
+ }
81
+
82
+ &.Overlay--height-small {
83
+ height: min(256px, 100vh - 2rem);
84
+ }
85
+
86
+ &.Overlay--height-medium {
87
+ height: min(320px, 100vh - 2rem);
88
+ }
89
+
90
+ &.Overlay--height-large {
91
+ height: min(432px, 100vh - 2rem);
92
+ }
93
+
94
+ &.Overlay--height-xlarge {
95
+ height: min(600px, 100vh - 2rem);
96
+ }
97
+
98
+ &.Overlay--width-auto {
99
+ width: auto;
100
+ }
101
+
102
+ &.Overlay--width-small {
103
+ width: min(256px, 100vw - 2rem);
104
+ }
105
+
106
+ &.Overlay--width-medium {
107
+ width: min(320px, 100vw - 2rem);
108
+ }
109
+
110
+ &.Overlay--width-large {
111
+ width: min(480px, 100vw - 2rem);
112
+ }
113
+
114
+ &.Overlay--width-xlarge {
115
+ width: min(640px, 100vw - 2rem);
116
+ }
117
+
118
+ &.Overlay--width-xxlarge {
119
+ width: min(960px, 100vw - 2rem);
120
+ }
121
+
122
+ /* end deprecate */
123
+
124
+ &.Overlay--motion-scaleFade {
125
+ @media screen and (prefers-reduced-motion: no-preference) {
126
+ animation: 200ms cubic-bezier(0.33, 1, 0.68, 1) 0s 1 normal none running Overlay--motion-scaleFade;
127
+ }
128
+ }
129
+ }
130
+
131
+ @keyframes Overlay--motion-scaleFade {
132
+ 0% {
133
+ opacity: 0;
134
+ transform: scale(0.5);
135
+ }
136
+
137
+ 100% {
138
+ opacity: 1;
139
+ transform: scale(1);
140
+ }
141
+ }
142
+
143
+ /* for <form> element that wraps entire contents of overlay */
144
+ .Overlay-form {
145
+ display: flex;
146
+ overflow: auto;
147
+ flex-direction: column;
148
+ flex-grow: 1;
149
+ }
150
+
151
+ .Overlay-header {
152
+ z-index: 1;
153
+ display: flex;
154
+ flex-direction: column;
155
+
156
+ &.Overlay-header--divided {
157
+ padding-bottom: var(--primer-stack-padding-condensed, 8px);
158
+ box-shadow: inset 0 calc(var(--primer-borderWidth-thin, 1px) * -1) var(--color-border-default);
159
+
160
+ & + .Overlay-body {
161
+ padding-top: var(--primer-stack-padding-normal, 16px);
162
+ }
163
+ }
164
+
165
+ &.Overlay-header--large {
166
+ & .Overlay-headerContentWrap {
167
+ & .Overlay-titleWrap {
168
+ gap: var(--primer-stack-gap-condensed, 8px);
169
+
170
+ & .Overlay-title {
171
+ font-size: var(--primer-text-title-size-medium, 20px);
172
+ }
173
+
174
+ & .Overlay-description {
175
+ font-size: var(--primer-text-body-size-medium, 14px);
176
+ }
177
+ }
178
+ }
179
+ }
180
+
181
+ & .Overlay-headerContentWrap {
182
+ display: flex;
183
+ align-items: flex-start;
184
+ gap: var(--primer-stack-gap-condensed, 8px);
185
+ padding: var(--primer-stack-gap-condensed, 8px) var(--primer-stack-gap-condensed, 8px) 0 var(--primer-stack-gap-condensed, 8px);
186
+
187
+ & .Overlay-actionWrap {
188
+ display: flex;
189
+ flex-direction: row;
190
+ gap: var(--primer-stack-gap-condensed, 8px);
191
+ }
192
+
193
+ & .Overlay-titleWrap {
194
+ display: flex;
195
+ padding: calc(var(--primer-stack-gap-condensed, 8px) * 0.75) 0 calc(var(--primer-stack-gap-condensed, 8px) * 0.75) var(--primer-stack-gap-condensed, 8px);
196
+ flex-direction: column;
197
+ flex-grow: 1;
198
+ gap: var(--primer-control-small-gap, 4px);
199
+
200
+ & .Overlay-title {
201
+ margin: 0;
202
+ font-size: var(--primer-text-body-size-medium, 14px);
203
+ font-weight: var(--base-text-weight-semibold, 600);
204
+ }
205
+
206
+ & .Overlay-description {
207
+ margin: 0;
208
+ font-size: var(--primer-text-body-size-small, 12px);
209
+ font-weight: var(--base-text-weight-normal, 400);
210
+ color: var(--color-fg-muted);
211
+ }
212
+ }
213
+ }
214
+ }
215
+
216
+ /* generic body content slot */
217
+ .Overlay-body {
218
+ padding: var(--primer-stack-padding-normal, 16px);
219
+ padding-top: 0;
220
+ overflow-y: auto;
221
+ scrollbar-width: thin;
222
+ font-size: var(--primer-text-body-size-medium, 14px);
223
+ flex-grow: 1;
224
+
225
+ &.Overlay-body--paddingCondensed {
226
+ padding: var(--primer-stack-padding-condensed, 8px);
227
+ padding-top: 0;
228
+ }
229
+
230
+ &.Overlay-body--paddingNone {
231
+ padding: 0;
232
+ }
233
+ }
234
+
235
+ /* generic footer slot */
236
+ .Overlay-footer {
237
+ z-index: 1;
238
+ display: flex;
239
+ padding: 0 var(--primer-stack-padding-normal, 16px) var(--primer-stack-padding-normal, 16px) var(--primer-stack-padding-normal, 16px);
240
+ flex-direction: row;
241
+ flex-shrink: 0;
242
+ flex-wrap: wrap;
243
+
244
+ &.Overlay-footer--divided {
245
+ padding-top: var(--primer-stack-padding-normal, 16px);
246
+ box-shadow: inset 0 var(--primer-borderWidth-thin, 1px) var(--color-border-default);
247
+ }
248
+
249
+ &.Overlay-footer--alignStart {
250
+ justify-content: flex-start;
251
+ gap: var(--primer-stack-gap-condensed, 8px);
252
+ }
253
+
254
+ &.Overlay-footer--alignCenter {
255
+ justify-content: center;
256
+ gap: var(--primer-stack-gap-condensed, 8px);
257
+ }
258
+
259
+ &.Overlay-footer--alignEnd {
260
+ justify-content: flex-end;
261
+ gap: var(--primer-stack-gap-condensed, 8px);
262
+ }
263
+ }
264
+
265
+ /* TODO: replace with refactored IconButton */
266
+ .Overlay-closeButton {
267
+ position: relative;
268
+ display: grid;
269
+ width: var(--base-size-32, 32px);
270
+ height: var(--base-size-32, 32px);
271
+ padding: 0;
272
+ color: var(--color-fg-muted);
273
+ cursor: pointer;
274
+ user-select: none;
275
+ background-color: transparent;
276
+ border: var(--primer-borderWidth-thin, 1px) solid transparent;
277
+ border-radius: var(--primer-borderRadius-medium, 6px);
278
+ transition: 0.2s cubic-bezier(0.3, 0, 0.5, 1);
279
+ transition-property: color, background-color, border-color;
280
+ place-content: center;
281
+ align-self: flex-start;
282
+ flex-shrink: 0;
283
+
284
+ &:hover,
285
+ &:focus {
286
+ background-color: var(--color-btn-hover-bg);
287
+ border: var(--primer-borderWidth-thin, 1px) solid var(--color-btn-hover-bg);
288
+ }
289
+
290
+ /* Override .close-button's `border: 0` that triggers a border-color transition on hover */
291
+ &.close-button {
292
+ border: var(--primer-borderWidth-thin, 1px) solid transparent;
293
+ }
294
+ }
295
+
296
+ @define-mixin Overlay-backdrop {
297
+ position: fixed;
298
+ top: 0;
299
+ right: 0;
300
+ bottom: 0;
301
+ left: 0;
302
+ z-index: 999;
303
+ display: flex;
304
+ background-color: var(--color-neutral-muted);
305
+ }
306
+
307
+ @define-mixin Overlay-backdrop--transparent {
308
+ position: absolute;
309
+ z-index: 999;
310
+ background-color: transparent;
311
+ }
312
+
313
+ /* variants must be mixins so we can extend within a media query (@extend is not supported inside media queries) */
314
+
315
+ /* border-radius repeats within placement options to ensure the original radius is reset when two classes co-exist */
316
+
317
+ /* center */
318
+ @define-mixin Overlay-backdrop--center {
319
+ @mixin Overlay-backdrop;
320
+
321
+ align-items: center;
322
+ justify-content: center;
323
+ }
324
+
325
+ /* anchor */
326
+ @define-mixin Overlay-backdrop--anchor {
327
+ @mixin Overlay-backdrop--transparent;
328
+
329
+ & .Overlay {
330
+ width: auto;
331
+ }
332
+ }
333
+
334
+ /* anchor side(s) */
335
+ @define-mixin Overlay-backdrop--side $responsiveVariant {
336
+ @mixin Overlay-backdrop;
337
+
338
+ /* default left */
339
+ align-items: center;
340
+ justify-content: left;
341
+
342
+ &.Overlay-backdrop--placement-left$(responsiveVariant) {
343
+ align-items: center;
344
+ justify-content: left;
345
+
346
+ & > .Overlay$(responsiveVariant) {
347
+ height: 100vh;
348
+ max-height: unset;
349
+ border-radius: var(--primer-borderRadius-large, 12px);
350
+ border-top-left-radius: 0;
351
+ border-bottom-left-radius: 0;
352
+
353
+ @media screen and (prefers-reduced-motion: no-preference) {
354
+ animation: 250ms cubic-bezier(0.33, 1, 0.68, 1) 0s 1 normal none running Overlay--motion-slideInRight;
355
+ }
356
+ }
357
+ }
358
+
359
+ &.Overlay-backdrop--placement-right$(responsiveVariant) {
360
+ align-items: center;
361
+ justify-content: right;
362
+
363
+ & > .Overlay$(responsiveVariant) {
364
+ height: 100vh;
365
+ max-height: unset;
366
+ border-radius: var(--primer-borderRadius-large, 12px);
367
+ border-top-right-radius: 0;
368
+ border-bottom-right-radius: 0;
369
+
370
+ @media screen and (prefers-reduced-motion: no-preference) {
371
+ animation: 250ms cubic-bezier(0.33, 1, 0.68, 1) 0s 1 normal none running Overlay--motion-slideInLeft;
372
+ }
373
+ }
374
+ }
375
+
376
+ &.Overlay-backdrop--placement-bottom$(responsiveVariant) {
377
+ align-items: end;
378
+ justify-content: center;
379
+
380
+ & > .Overlay$(responsiveVariant) {
381
+ width: 100vw;
382
+ height: auto;
383
+ max-height: calc(100vh - 2rem);
384
+ border-radius: var(--primer-borderRadius-large, 12px);
385
+ border-bottom-right-radius: 0;
386
+ border-bottom-left-radius: 0;
387
+
388
+ @media screen and (prefers-reduced-motion: no-preference) {
389
+ animation: 250ms cubic-bezier(0.33, 1, 0.68, 1) 0s 1 normal none running Overlay--motion-slideUp;
390
+ }
391
+ }
392
+ }
393
+
394
+ &.Overlay-backdrop--placement-top$(responsiveVariant) {
395
+ align-items: start;
396
+ justify-content: center;
397
+
398
+ & > .Overlay$(responsiveVariant) {
399
+ border-radius: var(--primer-borderRadius-large, 12px);
400
+ border-top-left-radius: 0;
401
+ border-top-right-radius: 0;
402
+
403
+ @media screen and (prefers-reduced-motion: no-preference) {
404
+ animation: 250ms cubic-bezier(0.33, 1, 0.68, 1) 0s 1 normal none running Overlay--motion-slideDown;
405
+ }
406
+ }
407
+ }
408
+ }
409
+
410
+ /* full width */
411
+ @define-mixin Overlay-backdrop--full {
412
+ @mixin Overlay-backdrop;
413
+
414
+ & .Overlay {
415
+ width: 100%;
416
+ max-width: 100vw;
417
+ height: 100%;
418
+ max-height: 100vh;
419
+ border-radius: unset !important;
420
+ flex-grow: 1;
421
+ }
422
+ }
423
+
424
+ /* Overlay variant classnames */
425
+ .Overlay-backdrop--center {
426
+ @mixin Overlay-backdrop--center;
427
+ }
428
+
429
+ .Overlay-backdrop--anchor {
430
+ @mixin Overlay-backdrop--anchor;
431
+ }
432
+
433
+ .Overlay-backdrop--side {
434
+ @mixin Overlay-backdrop--side;
435
+ }
436
+
437
+ .Overlay-backdrop--full {
438
+ @mixin Overlay-backdrop--full;
439
+ }
440
+
441
+ /* responsive variants */
442
+
443
+ /* --primer-viewportRange-narrowLandscape */
444
+ @media (max-width: 767px) {
445
+ .Overlay-backdrop--center-whenNarrow {
446
+ @mixin Overlay-backdrop--center;
447
+ }
448
+
449
+ .Overlay-backdrop--anchor-whenNarrow {
450
+ @mixin Overlay-backdrop--anchor;
451
+ }
452
+
453
+ .Overlay-backdrop--side-whenNarrow {
454
+ @mixin Overlay-backdrop--side -whenNarrow;
455
+ }
456
+
457
+ .Overlay-backdrop--full-whenNarrow {
458
+ @mixin Overlay-backdrop--full;
459
+ }
460
+ }
461
+
462
+ @keyframes Overlay--motion-slideDown {
463
+ from {
464
+ transform: translateY(-100%);
465
+ }
466
+ }
467
+
468
+ @keyframes Overlay--motion-slideUp {
469
+ from {
470
+ transform: translateY(100%);
471
+ }
472
+ }
473
+
474
+ @keyframes Overlay--motion-slideInRight {
475
+ from {
476
+ transform: translateX(-100%);
477
+ }
478
+ }
479
+
480
+ @keyframes Overlay--motion-slideInLeft {
481
+ from {
482
+ transform: translateX(100%);
483
+ }
484
+ }
@@ -18,6 +18,9 @@ module Primer
18
18
  # `aria-labelledby` relationship between the title and the unique id of
19
19
  # the dialog.
20
20
  class Dialog < Primer::Component
21
+ status :alpha
22
+ audited_at "2022-10-10"
23
+
21
24
  DEFAULT_SIZE = :medium
22
25
  SIZE_MAPPINGS = {
23
26
  :small => "Overlay--size-small-portrait",
@@ -0,0 +1,105 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Primer
4
+ module Alpha
5
+ class Dropdown
6
+ # This component is part of `Dropdown` and should not be
7
+ # used as a standalone component.
8
+ class Menu < Primer::Component
9
+ status :alpha
10
+
11
+ AS_DEFAULT = :default
12
+ AS_OPTIONS = [AS_DEFAULT, :list].freeze
13
+
14
+ SCHEME_DEFAULT = :default
15
+ SCHEME_MAPPINGS = {
16
+ SCHEME_DEFAULT => "",
17
+ :dark => "dropdown-menu-dark"
18
+ }.freeze
19
+
20
+ DIRECTION_DEFAULT = :se
21
+ DIRECTION_OPTIONS = [DIRECTION_DEFAULT, :sw, :w, :e, :ne, :s].freeze
22
+
23
+ # @param tag [Symbol] <%= one_of(Primer::Alpha::Dropdown::Menu::Item::TAG_OPTIONS) %>.
24
+ # @param divider [Boolean] Whether the item is a divider without any function.
25
+ # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
26
+ renders_many :items, lambda { |divider: false, **system_arguments|
27
+ Primer::Alpha::Dropdown::Menu::Item.new(as: @as, divider: divider, **system_arguments)
28
+ }
29
+
30
+ # @param as [Symbol] When `as` is `:list`, wraps the menu in a `<ul>` with a `<li>` for each item.
31
+ # @param direction [Symbol] <%= one_of(Primer::Alpha::Dropdown::Menu::DIRECTION_OPTIONS) %>.
32
+ # @param header [String] Header to be displayed above the menu.
33
+ # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
34
+ def initialize(as: AS_DEFAULT, direction: DIRECTION_DEFAULT, scheme: SCHEME_DEFAULT, header: nil, **system_arguments)
35
+ @header = header
36
+ @direction = direction
37
+ @as = fetch_or_fallback(AS_OPTIONS, as, AS_DEFAULT)
38
+
39
+ @system_arguments = deny_tag_argument(**system_arguments)
40
+ @system_arguments[:tag] = "details-menu"
41
+ @system_arguments[:role] = "menu"
42
+
43
+ @system_arguments[:classes] = class_names(
44
+ @system_arguments[:classes],
45
+ "dropdown-menu",
46
+ "dropdown-menu-#{fetch_or_fallback(DIRECTION_OPTIONS, direction, DIRECTION_DEFAULT)}",
47
+ SCHEME_MAPPINGS[fetch_or_fallback(SCHEME_MAPPINGS.keys, scheme, SCHEME_DEFAULT)]
48
+ )
49
+ end
50
+
51
+ private
52
+
53
+ def list?
54
+ @as == :list
55
+ end
56
+
57
+ # Items to be rendered in the `Dropdown` menu.
58
+ class Item < Primer::Component
59
+ status :alpha
60
+
61
+ TAG_DEFAULT = :a
62
+ BUTTON_TAGS = [:button, :summary].freeze
63
+ TAG_OPTIONS = [TAG_DEFAULT, *BUTTON_TAGS].freeze
64
+
65
+ def initialize(as:, tag: TAG_DEFAULT, divider: false, **system_arguments)
66
+ @divider = divider
67
+ @as = as
68
+
69
+ @system_arguments = system_arguments
70
+ @system_arguments[:tag] = fetch_or_fallback(TAG_OPTIONS, tag, TAG_DEFAULT)
71
+ @system_arguments[:tag] = :li if list? && divider?
72
+ @system_arguments[:role] ||= :menuitem
73
+ @system_arguments[:role] = :separator if divider
74
+ @system_arguments[:classes] = class_names(
75
+ @system_arguments[:classes],
76
+ "dropdown-item" => !divider,
77
+ "dropdown-divider" => divider
78
+ )
79
+ end
80
+
81
+ def call
82
+ component = if BUTTON_TAGS.include?(@system_arguments[:tag])
83
+ Primer::ButtonComponent.new(scheme: :link, **@system_arguments)
84
+ else
85
+ Primer::BaseComponent.new(**@system_arguments)
86
+ end
87
+
88
+ # divider has no content
89
+ render(component) if divider?
90
+
91
+ render(component) { content }
92
+ end
93
+
94
+ def divider?
95
+ @divider
96
+ end
97
+
98
+ def list?
99
+ @as == :list
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
@@ -0,0 +1 @@
1
+ .dropdown{position:relative}.dropdown-caret{border-bottom-color:#0000;border-left-color:#0000;border-right-color:#0000;border-style:solid;border-width:var(--primer-borderWidth-thicker,4px) var(--primer-borderWidth-thicker,4px) 0;content:"";display:inline-block;height:0;vertical-align:middle;width:0}.dropdown-menu{background-clip:padding-box;background-color:var(--color-canvas-overlay);border:var(--primer-borderWidth-thin,1px) solid var(--color-border-default);border-radius:var(--primer-borderRadius-medium,6px);box-shadow:var(--color-shadow-large);left:0;list-style:none;margin-top:2px;padding-bottom:var(--primer-control-small-paddingBlock,4px);padding-top:var(--primer-control-small-paddingBlock,4px);position:absolute;top:100%;width:160px;z-index:100}.dropdown-menu:after,.dropdown-menu:before{content:"";display:inline-block;position:absolute}.dropdown-menu:before{border:8px solid #0000;border-bottom:8px solid var(--color-border-default)}.dropdown-menu:after{border:7px solid #0000;border-bottom:7px solid var(--color-canvas-overlay)}.dropdown-menu>ul{list-style:none}.dropdown-menu-no-overflow{width:auto}.dropdown-menu-no-overflow .dropdown-item{overflow:visible;padding:var(--primer-control-small-paddingBlock,4px) var(--primer-control-medium-paddingInline-spacious,16px);text-overflow:inherit}.dropdown-item{color:var(--color-fg-default);display:block;overflow:hidden;padding:var(--primer-control-small-paddingBlock,4px) var(--primer-control-medium-paddingInline-condensed,8px) var(--primer-control-small-paddingBlock,4px) var(--primer-control-medium-paddingInline-spacious,16px);text-overflow:ellipsis;white-space:nowrap}.dropdown-item:hover{background-color:var(--color-accent-emphasis);color:var(--color-fg-on-emphasis);text-decoration:none}.dropdown-item:hover>.octicon{color:inherit;opacity:1}.dropdown-item:hover [class*=color-fg-],.dropdown-item:hover>.Label{color:inherit!important}.dropdown-item:hover>.Label{border-color:currentcolor}.dropdown-item.btn-link,.dropdown-signout{text-align:left;width:100%}.dropdown-signout{background:none;border:0}.dropdown-divider{border-top:var(--primer-borderWidth-thin,1px) solid var(--color-border-default);display:block;height:0;margin:var(--primer-stack-gap-condensed,8px) 0}.dropdown-header{color:var(--color-fg-muted);font-size:var(--primer-text-body-size-small,12px);padding:var(--primer-control-small-paddingBlock,4px) var(--primer-control-medium-paddingInline-spacious,16px)}.dropdown-item[aria-checked=false] .octicon-check{display:none}.dropdown-menu-w{left:auto;margin-right:8px;margin-top:0;right:100%;top:0;width:auto}.dropdown-menu-w:before{border-color:#0000;border-left-color:var(--color-border-default);left:auto;right:-16px;top:10px}.dropdown-menu-w:after{border-color:#0000;border-left-color:var(--color-canvas-overlay);left:auto;right:-14px;top:11px}.dropdown-menu-e{left:100%;margin-left:8px;margin-top:0;top:0;width:auto}.dropdown-menu-e:before{border-color:#0000;border-right-color:var(--color-border-default);left:-16px;top:10px}.dropdown-menu-e:after{border-color:#0000;border-right-color:var(--color-canvas-overlay);left:-14px;top:11px}.dropdown-menu-ne{bottom:100%;left:0;margin-bottom:3px;top:auto}.dropdown-menu-ne:after,.dropdown-menu-ne:before{right:auto;top:auto}.dropdown-menu-ne:before{border-bottom:0;border-left:8px solid #0000;border-right:8px solid #0000;border-top:8px solid var(--color-border-default);bottom:-8px;left:9px}.dropdown-menu-ne:after{border-bottom:0;border-left:7px solid #0000;border-right:7px solid #0000;border-top:7px solid var(--color-canvas-overlay);bottom:-7px;left:10px}.dropdown-menu-s{left:auto;right:50%;transform:translateX(50%)}.dropdown-menu-s:before{right:50%;top:-16px;transform:translateX(50%)}.dropdown-menu-s:after{right:50%;top:-14px;transform:translateX(50%)}.dropdown-menu-sw{left:auto;right:0}.dropdown-menu-sw:before{left:auto;right:9px;top:-16px}.dropdown-menu-sw:after{left:auto;right:10px;top:-14px}.dropdown-menu-se:before{left:9px;top:-16px}.dropdown-menu-se:after{left:10px;top:-14px}
@@ -0,0 +1 @@
1
+ {"name":"alpha/dropdown","selectors":[".dropdown",".dropdown-caret",".dropdown-menu",".dropdown-menu:after",".dropdown-menu:before",".dropdown-menu>ul",".dropdown-menu-no-overflow",".dropdown-menu-no-overflow .dropdown-item",".dropdown-item",".dropdown-item:hover",".dropdown-item:hover>.octicon",".dropdown-item:hover [class*=color-fg-]",".dropdown-item:hover>.Label",".dropdown-item.btn-link",".dropdown-signout",".dropdown-divider",".dropdown-header",".dropdown-item[aria-checked=false] .octicon-check",".dropdown-menu-w",".dropdown-menu-w:before",".dropdown-menu-w:after",".dropdown-menu-e",".dropdown-menu-e:before",".dropdown-menu-e:after",".dropdown-menu-ne",".dropdown-menu-ne:after",".dropdown-menu-ne:before",".dropdown-menu-s",".dropdown-menu-s:before",".dropdown-menu-s:after",".dropdown-menu-sw",".dropdown-menu-sw:before",".dropdown-menu-sw:after",".dropdown-menu-se:before",".dropdown-menu-se:after"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["dropdown.pcss"],"names":[],"mappings":"AAEA,UACE,iBACF,CAEA,gBASE,yBAAgC,CAChC,uBAA8B,CAF9B,wBAA+B,CAF/B,kBAAmB,CACnB,0FAA6F,CAF7F,UAAW,CAJX,oBAAqB,CAErB,QAAS,CACT,qBAAsB,CAFtB,OASF,CAKA,eAWE,2BAA4B,CAD5B,4CAA6C,CAE7C,2EAA6E,CAC7E,mDAAqD,CACrD,oCAAqC,CAXrC,MAAO,CAMP,eAAgB,CADhB,cAAe,CADf,2DAA6D,CAD7D,wDAA0D,CAL1D,iBAAkB,CAClB,QAAS,CAGT,WAAY,CADZ,WAkCF,CAtBE,2CAIE,UAAW,CADX,oBAAqB,CADrB,iBAGF,CAGA,sBAEE,sBAAgD,CAAhD,mDACF,CAGA,qBAEE,sBAAgD,CAAhD,mDACF,CAEA,kBACE,eACF,CAGF,2BACE,UAOF,CALE,0CAEE,gBAAiB,CADjB,6GAAgH,CAEhH,qBACF,CAIF,eAIE,6BAA8B,CAH9B,aAAc,CAEd,eAAgB,CADhB,mNAAwN,CAGxN,sBAAuB,CACvB,kBA0BF,CAxBE,qBAGE,6CAA8C,CAF9C,iCAAkC,CAClC,oBAgBF,CAbE,8BACE,aAAc,CACd,SACF,CAMA,sEACE,uBAEF,CAHA,4BAEE,yBACF,CASJ,0CAJI,eAAgB,CADhB,UAUJ,CALA,kBAGE,eAAgB,CAChB,QACF,CAEA,kBAIE,+EAAiF,CAHjF,aAAc,CACd,QAAS,CACT,8CAEF,CAEA,iBAGE,2BAA4B,CAD5B,iDAAmD,CADnD,6GAGF,CAEA,kDACE,YACF,CAOA,iBAGE,SAAU,CAGV,gBAAiB,CADjB,YAAa,CAHb,UAAW,CADX,KAAM,CAGN,UAmBF,CAfE,wBAIE,kBAAyB,CACzB,6CAA8C,CAF9C,SAAU,CADV,WAAY,CADZ,QAKF,CAEA,uBAIE,kBAAyB,CACzB,6CAA8C,CAF9C,SAAU,CADV,WAAY,CADZ,QAKF,CAGF,iBAEE,SAAU,CAGV,eAAgB,CADhB,YAAa,CAHb,KAAM,CAEN,UAiBF,CAbE,wBAGE,kBAAyB,CACzB,8CAA+C,CAF/C,UAAW,CADX,QAIF,CAEA,uBAGE,kBAAyB,CACzB,8CAA+C,CAF/C,UAAW,CADX,QAIF,CAGF,kBAEE,WAAY,CACZ,MAAO,CACP,iBAAkB,CAHlB,QA4BF,CAvBE,iDAGE,UAAW,CADX,QAEF,CAEA,yBAKE,eAAgB,CAChB,2BAAkC,CAFlC,4BAAmC,CADnC,gDAAiD,CAFjD,WAAY,CACZ,QAKF,CAEA,wBAKE,eAAgB,CAChB,2BAAkC,CAFlC,4BAAmC,CADnC,gDAAiD,CAFjD,WAAY,CACZ,SAKF,CAGF,iBAEE,SAAU,CADV,SAAU,CAEV,yBAaF,CAXE,wBAEE,SAAU,CADV,SAAU,CAEV,yBACF,CAEA,uBAEE,SAAU,CADV,SAAU,CAEV,yBACF,CAGF,kBAEE,SAAU,CADV,OAcF,CAXE,yBAGE,SAAU,CADV,SAAU,CADV,SAGF,CAEA,wBAGE,SAAU,CADV,UAAW,CADX,SAGF,CAIA,yBAEE,QAAS,CADT,SAEF,CAEA,wBAEE,SAAU,CADV,SAEF","file":"dropdown.css","sourcesContent":["/* dropdown */\n\n.dropdown {\n position: relative;\n}\n\n.dropdown-caret {\n display: inline-block;\n width: 0;\n height: 0;\n vertical-align: middle;\n content: '';\n border-style: solid;\n border-width: var(--primer-borderWidth-thicker, 4px) var(--primer-borderWidth-thicker, 4px) 0;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n}\n\n/* Requires a positioning class (e.g., `.dropdown-menu-w`) to determine which\n** way the menu should render from the element triggering it. */\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 100;\n width: 160px;\n padding-top: var(--primer-control-small-paddingBlock, 4px);\n padding-bottom: var(--primer-control-small-paddingBlock, 4px);\n margin-top: 2px;\n list-style: none;\n background-color: var(--color-canvas-overlay);\n background-clip: padding-box;\n border: var(--primer-borderWidth-thin, 1px) solid var(--color-border-default);\n border-radius: var(--primer-borderRadius-medium, 6px);\n box-shadow: var(--color-shadow-large);\n\n &::before,\n &::after {\n position: absolute;\n display: inline-block;\n content: '';\n }\n\n /* caret border */\n &::before {\n border: 8px solid transparent;\n border-bottom-color: var(--color-border-default);\n }\n\n /* caret background (should match dropdown background) */\n &::after {\n border: 7px solid transparent;\n border-bottom-color: var(--color-canvas-overlay);\n }\n\n & > ul {\n list-style: none;\n }\n}\n\n.dropdown-menu-no-overflow {\n width: auto;\n\n & .dropdown-item {\n padding: var(--primer-control-small-paddingBlock, 4px) var(--primer-control-medium-paddingInline-spacious, 16px);\n overflow: visible;\n text-overflow: inherit;\n }\n}\n\n/* Dropdown items (can be links or buttons) */\n.dropdown-item {\n display: block;\n padding: var(--primer-control-small-paddingBlock, 4px) var(--primer-control-medium-paddingInline-condensed, 8px) var(--primer-control-small-paddingBlock, 4px) var(--primer-control-medium-paddingInline-spacious, 16px);\n overflow: hidden;\n color: var(--color-fg-default);\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &:hover {\n color: var(--color-fg-on-emphasis);\n text-decoration: none;\n background-color: var(--color-accent-emphasis);\n\n & > .octicon {\n color: inherit;\n opacity: 1;\n }\n\n & [class*='color-text-'] {\n color: inherit !important;\n }\n\n & > .Label {\n color: inherit !important;\n border-color: currentcolor;\n }\n }\n\n &.btn-link {\n width: 100%;\n text-align: left;\n }\n}\n\n.dropdown-signout {\n width: 100%;\n text-align: left;\n background: none;\n border: 0;\n}\n\n.dropdown-divider {\n display: block;\n height: 0;\n margin: var(--primer-stack-gap-condensed, 8px) 0;\n border-top: var(--primer-borderWidth-thin, 1px) solid var(--color-border-default);\n}\n\n.dropdown-header {\n padding: var(--primer-control-small-paddingBlock, 4px) var(--primer-control-medium-paddingInline-spacious, 16px);\n font-size: var(--primer-text-body-size-small, 12px);\n color: var(--color-fg-muted);\n}\n\n.dropdown-item[aria-checked='false'] .octicon-check {\n display: none;\n}\n\n/* Directional classes\n**\n** Move the menu and the caret attached to it. Requires at least one of these on\n** the `.dropdown-menu` element. */\n\n.dropdown-menu-w {\n top: 0;\n right: 100%;\n left: auto;\n width: auto;\n margin-top: 0;\n margin-right: 8px;\n\n &::before {\n top: 10px;\n right: -16px;\n left: auto;\n border-color: transparent;\n border-left-color: var(--color-border-default);\n }\n\n &::after {\n top: 11px;\n right: -14px;\n left: auto;\n border-color: transparent;\n border-left-color: var(--color-canvas-overlay);\n }\n}\n\n.dropdown-menu-e {\n top: 0;\n left: 100%;\n width: auto;\n margin-top: 0;\n margin-left: 8px;\n\n &::before {\n top: 10px;\n left: -16px;\n border-color: transparent;\n border-right-color: var(--color-border-default);\n }\n\n &::after {\n top: 11px;\n left: -14px;\n border-color: transparent;\n border-right-color: var(--color-canvas-overlay);\n }\n}\n\n.dropdown-menu-ne {\n top: auto;\n bottom: 100%;\n left: 0;\n margin-bottom: 3px;\n\n &::before,\n &::after {\n top: auto;\n right: auto;\n }\n\n &::before {\n bottom: -8px;\n left: 9px;\n border-top: 8px solid var(--color-border-default);\n border-right: 8px solid transparent;\n border-bottom: 0;\n border-left: 8px solid transparent;\n }\n\n &::after {\n bottom: -7px;\n left: 10px;\n border-top: 7px solid var(--color-canvas-overlay);\n border-right: 7px solid transparent;\n border-bottom: 0;\n border-left: 7px solid transparent;\n }\n}\n\n.dropdown-menu-s {\n right: 50%;\n left: auto;\n transform: translateX(50%);\n\n &::before {\n top: -16px;\n right: 50%;\n transform: translateX(50%);\n }\n\n &::after {\n top: -14px;\n right: 50%;\n transform: translateX(50%);\n }\n}\n\n.dropdown-menu-sw {\n right: 0;\n left: auto;\n\n &::before {\n top: -16px;\n right: 9px;\n left: auto;\n }\n\n &::after {\n top: -14px;\n right: 10px;\n left: auto;\n }\n}\n\n.dropdown-menu-se {\n &::before {\n top: -16px;\n left: 9px;\n }\n\n &::after {\n top: -14px;\n left: 10px;\n }\n}\n"]}
1
+ {"version":3,"sources":["dropdown.pcss"],"names":[],"mappings":"AAEA,UACE,iBACF,CAEA,gBASE,yBAAgC,CAChC,uBAA8B,CAF9B,wBAA+B,CAF/B,kBAAmB,CACnB,0FAA6F,CAF7F,UAAW,CAJX,oBAAqB,CAErB,QAAS,CACT,qBAAsB,CAFtB,OASF,CAKA,eAWE,2BAA4B,CAD5B,4CAA6C,CAE7C,2EAA6E,CAC7E,mDAAqD,CACrD,oCAAqC,CAXrC,MAAO,CAMP,eAAgB,CADhB,cAAe,CADf,2DAA6D,CAD7D,wDAA0D,CAL1D,iBAAkB,CAClB,QAAS,CAGT,WAAY,CADZ,WAkCF,CAtBE,2CAIE,UAAW,CADX,oBAAqB,CADrB,iBAGF,CAGA,sBAEE,sBAAgD,CAAhD,mDACF,CAGA,qBAEE,sBAAgD,CAAhD,mDACF,CAEA,kBACE,eACF,CAGF,2BACE,UAOF,CALE,0CAEE,gBAAiB,CADjB,6GAAgH,CAEhH,qBACF,CAIF,eAIE,6BAA8B,CAH9B,aAAc,CAEd,eAAgB,CADhB,mNAAwN,CAGxN,sBAAuB,CACvB,kBA0BF,CAxBE,qBAGE,6CAA8C,CAF9C,iCAAkC,CAClC,oBAgBF,CAbE,8BACE,aAAc,CACd,SACF,CAMA,oEACE,uBAEF,CAHA,4BAEE,yBACF,CASJ,0CAJI,eAAgB,CADhB,UAUJ,CALA,kBAGE,eAAgB,CAChB,QACF,CAEA,kBAIE,+EAAiF,CAHjF,aAAc,CACd,QAAS,CACT,8CAEF,CAEA,iBAGE,2BAA4B,CAD5B,iDAAmD,CADnD,6GAGF,CAEA,kDACE,YACF,CAOA,iBAGE,SAAU,CAGV,gBAAiB,CADjB,YAAa,CAHb,UAAW,CADX,KAAM,CAGN,UAmBF,CAfE,wBAIE,kBAAyB,CACzB,6CAA8C,CAF9C,SAAU,CADV,WAAY,CADZ,QAKF,CAEA,uBAIE,kBAAyB,CACzB,6CAA8C,CAF9C,SAAU,CADV,WAAY,CADZ,QAKF,CAGF,iBAEE,SAAU,CAGV,eAAgB,CADhB,YAAa,CAHb,KAAM,CAEN,UAiBF,CAbE,wBAGE,kBAAyB,CACzB,8CAA+C,CAF/C,UAAW,CADX,QAIF,CAEA,uBAGE,kBAAyB,CACzB,8CAA+C,CAF/C,UAAW,CADX,QAIF,CAGF,kBAEE,WAAY,CACZ,MAAO,CACP,iBAAkB,CAHlB,QA4BF,CAvBE,iDAGE,UAAW,CADX,QAEF,CAEA,yBAKE,eAAgB,CAChB,2BAAkC,CAFlC,4BAAmC,CADnC,gDAAiD,CAFjD,WAAY,CACZ,QAKF,CAEA,wBAKE,eAAgB,CAChB,2BAAkC,CAFlC,4BAAmC,CADnC,gDAAiD,CAFjD,WAAY,CACZ,SAKF,CAGF,iBAEE,SAAU,CADV,SAAU,CAEV,yBAaF,CAXE,wBAEE,SAAU,CADV,SAAU,CAEV,yBACF,CAEA,uBAEE,SAAU,CADV,SAAU,CAEV,yBACF,CAGF,kBAEE,SAAU,CADV,OAcF,CAXE,yBAGE,SAAU,CADV,SAAU,CADV,SAGF,CAEA,wBAGE,SAAU,CADV,UAAW,CADX,SAGF,CAIA,yBAEE,QAAS,CADT,SAEF,CAEA,wBAEE,SAAU,CADV,SAEF","file":"dropdown.css","sourcesContent":["/* dropdown */\n\n.dropdown {\n position: relative;\n}\n\n.dropdown-caret {\n display: inline-block;\n width: 0;\n height: 0;\n vertical-align: middle;\n content: '';\n border-style: solid;\n border-width: var(--primer-borderWidth-thicker, 4px) var(--primer-borderWidth-thicker, 4px) 0;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n}\n\n/* Requires a positioning class (e.g., `.dropdown-menu-w`) to determine which\n** way the menu should render from the element triggering it. */\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 100;\n width: 160px;\n padding-top: var(--primer-control-small-paddingBlock, 4px);\n padding-bottom: var(--primer-control-small-paddingBlock, 4px);\n margin-top: 2px;\n list-style: none;\n background-color: var(--color-canvas-overlay);\n background-clip: padding-box;\n border: var(--primer-borderWidth-thin, 1px) solid var(--color-border-default);\n border-radius: var(--primer-borderRadius-medium, 6px);\n box-shadow: var(--color-shadow-large);\n\n &::before,\n &::after {\n position: absolute;\n display: inline-block;\n content: '';\n }\n\n /* caret border */\n &::before {\n border: 8px solid transparent;\n border-bottom-color: var(--color-border-default);\n }\n\n /* caret background (should match dropdown background) */\n &::after {\n border: 7px solid transparent;\n border-bottom-color: var(--color-canvas-overlay);\n }\n\n & > ul {\n list-style: none;\n }\n}\n\n.dropdown-menu-no-overflow {\n width: auto;\n\n & .dropdown-item {\n padding: var(--primer-control-small-paddingBlock, 4px) var(--primer-control-medium-paddingInline-spacious, 16px);\n overflow: visible;\n text-overflow: inherit;\n }\n}\n\n/* Dropdown items (can be links or buttons) */\n.dropdown-item {\n display: block;\n padding: var(--primer-control-small-paddingBlock, 4px) var(--primer-control-medium-paddingInline-condensed, 8px) var(--primer-control-small-paddingBlock, 4px) var(--primer-control-medium-paddingInline-spacious, 16px);\n overflow: hidden;\n color: var(--color-fg-default);\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &:hover {\n color: var(--color-fg-on-emphasis);\n text-decoration: none;\n background-color: var(--color-accent-emphasis);\n\n & > .octicon {\n color: inherit;\n opacity: 1;\n }\n\n & [class*='color-fg-'] {\n color: inherit !important;\n }\n\n & > .Label {\n color: inherit !important;\n border-color: currentcolor;\n }\n }\n\n &.btn-link {\n width: 100%;\n text-align: left;\n }\n}\n\n.dropdown-signout {\n width: 100%;\n text-align: left;\n background: none;\n border: 0;\n}\n\n.dropdown-divider {\n display: block;\n height: 0;\n margin: var(--primer-stack-gap-condensed, 8px) 0;\n border-top: var(--primer-borderWidth-thin, 1px) solid var(--color-border-default);\n}\n\n.dropdown-header {\n padding: var(--primer-control-small-paddingBlock, 4px) var(--primer-control-medium-paddingInline-spacious, 16px);\n font-size: var(--primer-text-body-size-small, 12px);\n color: var(--color-fg-muted);\n}\n\n.dropdown-item[aria-checked='false'] .octicon-check {\n display: none;\n}\n\n/* Directional classes\n**\n** Move the menu and the caret attached to it. Requires at least one of these on\n** the `.dropdown-menu` element. */\n\n.dropdown-menu-w {\n top: 0;\n right: 100%;\n left: auto;\n width: auto;\n margin-top: 0;\n margin-right: 8px;\n\n &::before {\n top: 10px;\n right: -16px;\n left: auto;\n border-color: transparent;\n border-left-color: var(--color-border-default);\n }\n\n &::after {\n top: 11px;\n right: -14px;\n left: auto;\n border-color: transparent;\n border-left-color: var(--color-canvas-overlay);\n }\n}\n\n.dropdown-menu-e {\n top: 0;\n left: 100%;\n width: auto;\n margin-top: 0;\n margin-left: 8px;\n\n &::before {\n top: 10px;\n left: -16px;\n border-color: transparent;\n border-right-color: var(--color-border-default);\n }\n\n &::after {\n top: 11px;\n left: -14px;\n border-color: transparent;\n border-right-color: var(--color-canvas-overlay);\n }\n}\n\n.dropdown-menu-ne {\n top: auto;\n bottom: 100%;\n left: 0;\n margin-bottom: 3px;\n\n &::before,\n &::after {\n top: auto;\n right: auto;\n }\n\n &::before {\n bottom: -8px;\n left: 9px;\n border-top: 8px solid var(--color-border-default);\n border-right: 8px solid transparent;\n border-bottom: 0;\n border-left: 8px solid transparent;\n }\n\n &::after {\n bottom: -7px;\n left: 10px;\n border-top: 7px solid var(--color-canvas-overlay);\n border-right: 7px solid transparent;\n border-bottom: 0;\n border-left: 7px solid transparent;\n }\n}\n\n.dropdown-menu-s {\n right: 50%;\n left: auto;\n transform: translateX(50%);\n\n &::before {\n top: -16px;\n right: 50%;\n transform: translateX(50%);\n }\n\n &::after {\n top: -14px;\n right: 50%;\n transform: translateX(50%);\n }\n}\n\n.dropdown-menu-sw {\n right: 0;\n left: auto;\n\n &::before {\n top: -16px;\n right: 9px;\n left: auto;\n }\n\n &::after {\n top: -14px;\n right: 10px;\n left: auto;\n }\n}\n\n.dropdown-menu-se {\n &::before {\n top: -16px;\n left: 9px;\n }\n\n &::after {\n top: -14px;\n left: 10px;\n }\n}\n"]}
@@ -89,7 +89,7 @@
89
89
  opacity: 1;
90
90
  }
91
91
 
92
- & [class*='color-text-'] {
92
+ & [class*='color-fg-'] {
93
93
  color: inherit !important;
94
94
  }
95
95