@mixtint/primer-view-components 0.72.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/LICENSE.txt +21 -0
  2. package/README.md +30 -0
  3. package/app/assets/images/loading_indicator.svg +1 -0
  4. package/app/assets/javascripts/components/primer/alpha/action_bar_element.d.ts +17 -0
  5. package/app/assets/javascripts/components/primer/alpha/action_list.d.ts +16 -0
  6. package/app/assets/javascripts/components/primer/alpha/action_menu/action_menu_element.d.ts +49 -0
  7. package/app/assets/javascripts/components/primer/alpha/action_menu/action_menu_focus_zone_stack.d.ts +17 -0
  8. package/app/assets/javascripts/components/primer/alpha/dropdown/menu.d.ts +1 -0
  9. package/app/assets/javascripts/components/primer/alpha/dropdown.d.ts +1 -0
  10. package/app/assets/javascripts/components/primer/alpha/modal_dialog.d.ts +18 -0
  11. package/app/assets/javascripts/components/primer/alpha/segmented_control.d.ts +12 -0
  12. package/app/assets/javascripts/components/primer/alpha/select_panel_element.d.ts +65 -0
  13. package/app/assets/javascripts/components/primer/alpha/tab_container.d.ts +1 -0
  14. package/app/assets/javascripts/components/primer/alpha/toggle_switch.d.ts +34 -0
  15. package/app/assets/javascripts/components/primer/alpha/tool_tip.d.ts +27 -0
  16. package/app/assets/javascripts/components/primer/alpha/tree_view/tree_view.d.ts +42 -0
  17. package/app/assets/javascripts/components/primer/alpha/tree_view/tree_view_icon_pair_element.d.ts +15 -0
  18. package/app/assets/javascripts/components/primer/alpha/tree_view/tree_view_include_fragment_element.d.ts +9 -0
  19. package/app/assets/javascripts/components/primer/alpha/tree_view/tree_view_roving_tab_index.d.ts +3 -0
  20. package/app/assets/javascripts/components/primer/alpha/tree_view/tree_view_sub_tree_node_element.d.ts +45 -0
  21. package/app/assets/javascripts/components/primer/alpha/x_banner.d.ts +18 -0
  22. package/app/assets/javascripts/components/primer/anchored_position.d.ts +27 -0
  23. package/app/assets/javascripts/components/primer/beta/auto_complete/auto_complete.d.ts +1 -0
  24. package/app/assets/javascripts/components/primer/beta/clipboard_copy.d.ts +1 -0
  25. package/app/assets/javascripts/components/primer/beta/details_toggle_element.d.ts +40 -0
  26. package/app/assets/javascripts/components/primer/beta/nav_list.d.ts +20 -0
  27. package/app/assets/javascripts/components/primer/beta/nav_list_group_element.d.ts +19 -0
  28. package/app/assets/javascripts/components/primer/beta/relative_time.d.ts +1 -0
  29. package/app/assets/javascripts/components/primer/dialog_helper.d.ts +15 -0
  30. package/app/assets/javascripts/components/primer/focus_group.d.ts +19 -0
  31. package/app/assets/javascripts/components/primer/open_project/border_box/collapsible_header.d.ts +11 -0
  32. package/app/assets/javascripts/components/primer/open_project/collapsible.d.ts +13 -0
  33. package/app/assets/javascripts/components/primer/open_project/collapsible_section.d.ts +10 -0
  34. package/app/assets/javascripts/components/primer/open_project/danger_dialog_form_helper.d.ts +14 -0
  35. package/app/assets/javascripts/components/primer/open_project/filterable_tree_view.d.ts +29 -0
  36. package/app/assets/javascripts/components/primer/open_project/page_header_element.d.ts +9 -0
  37. package/app/assets/javascripts/components/primer/open_project/sub_header_element.d.ts +17 -0
  38. package/app/assets/javascripts/components/primer/open_project/zen_mode_button.d.ts +18 -0
  39. package/app/assets/javascripts/components/primer/primer.d.ts +40 -0
  40. package/app/assets/javascripts/components/primer/scrollable_region.d.ts +13 -0
  41. package/app/assets/javascripts/components/primer/shared_events.d.ts +26 -0
  42. package/app/assets/javascripts/components/primer/utils.d.ts +1 -0
  43. package/app/assets/javascripts/lib/primer/forms/primer_multi_input.d.ts +10 -0
  44. package/app/assets/javascripts/lib/primer/forms/primer_text_field.d.ts +28 -0
  45. package/app/assets/javascripts/lib/primer/forms/toggle_switch_input.d.ts +5 -0
  46. package/app/assets/javascripts/primer_view_components.js +2 -0
  47. package/app/assets/javascripts/primer_view_components.js.map +1 -0
  48. package/app/assets/styles/primer_view_components.css +7336 -0
  49. package/app/assets/styles/primer_view_components.css.map +1 -0
  50. package/app/components/primer/alpha/action_bar.css +49 -0
  51. package/app/components/primer/alpha/action_bar.css.json +14 -0
  52. package/app/components/primer/alpha/action_bar_element.d.ts +17 -0
  53. package/app/components/primer/alpha/action_bar_element.js +170 -0
  54. package/app/components/primer/alpha/action_list.css +526 -0
  55. package/app/components/primer/alpha/action_list.css.json +117 -0
  56. package/app/components/primer/alpha/action_list.d.ts +16 -0
  57. package/app/components/primer/alpha/action_list.js +70 -0
  58. package/app/components/primer/alpha/action_menu/action_menu_element.d.ts +49 -0
  59. package/app/components/primer/alpha/action_menu/action_menu_element.js +591 -0
  60. package/app/components/primer/alpha/action_menu/action_menu_focus_zone_stack.d.ts +17 -0
  61. package/app/components/primer/alpha/action_menu/action_menu_focus_zone_stack.js +62 -0
  62. package/app/components/primer/alpha/auto_complete.css +131 -0
  63. package/app/components/primer/alpha/auto_complete.css.json +21 -0
  64. package/app/components/primer/alpha/banner.css +146 -0
  65. package/app/components/primer/alpha/banner.css.json +26 -0
  66. package/app/components/primer/alpha/button_marketing.css +183 -0
  67. package/app/components/primer/alpha/button_marketing.css.json +30 -0
  68. package/app/components/primer/alpha/dialog.css +377 -0
  69. package/app/components/primer/alpha/dialog.css.json +66 -0
  70. package/app/components/primer/alpha/dropdown/menu.d.ts +1 -0
  71. package/app/components/primer/alpha/dropdown/menu.js +1 -0
  72. package/app/components/primer/alpha/dropdown.css +296 -0
  73. package/app/components/primer/alpha/dropdown.css.json +40 -0
  74. package/app/components/primer/alpha/dropdown.d.ts +1 -0
  75. package/app/components/primer/alpha/dropdown.js +1 -0
  76. package/app/components/primer/alpha/layout.css +374 -0
  77. package/app/components/primer/alpha/layout.css.json +74 -0
  78. package/app/components/primer/alpha/menu.css +124 -0
  79. package/app/components/primer/alpha/menu.css.json +26 -0
  80. package/app/components/primer/alpha/modal_dialog.d.ts +18 -0
  81. package/app/components/primer/alpha/modal_dialog.js +187 -0
  82. package/app/components/primer/alpha/overlay.css +25 -0
  83. package/app/components/primer/alpha/overlay.css.json +12 -0
  84. package/app/components/primer/alpha/segmented_control.css +161 -0
  85. package/app/components/primer/alpha/segmented_control.css.json +31 -0
  86. package/app/components/primer/alpha/segmented_control.d.ts +12 -0
  87. package/app/components/primer/alpha/segmented_control.js +59 -0
  88. package/app/components/primer/alpha/select_panel.css +10 -0
  89. package/app/components/primer/alpha/select_panel.css.json +7 -0
  90. package/app/components/primer/alpha/select_panel_element.d.ts +65 -0
  91. package/app/components/primer/alpha/select_panel_element.js +988 -0
  92. package/app/components/primer/alpha/skeleton_box.css +36 -0
  93. package/app/components/primer/alpha/skeleton_box.css.json +6 -0
  94. package/app/components/primer/alpha/stack.css +266 -0
  95. package/app/components/primer/alpha/stack.css.json +94 -0
  96. package/app/components/primer/alpha/stack_item.css +27 -0
  97. package/app/components/primer/alpha/stack_item.css.json +12 -0
  98. package/app/components/primer/alpha/tab_container.d.ts +1 -0
  99. package/app/components/primer/alpha/tab_container.js +1 -0
  100. package/app/components/primer/alpha/tab_nav.css +112 -0
  101. package/app/components/primer/alpha/tab_nav.css.json +22 -0
  102. package/app/components/primer/alpha/text_field.css +838 -0
  103. package/app/components/primer/alpha/text_field.css.json +134 -0
  104. package/app/components/primer/alpha/toggle_switch.css +230 -0
  105. package/app/components/primer/alpha/toggle_switch.css.json +40 -0
  106. package/app/components/primer/alpha/toggle_switch.d.ts +34 -0
  107. package/app/components/primer/alpha/toggle_switch.js +179 -0
  108. package/app/components/primer/alpha/tool_tip.d.ts +27 -0
  109. package/app/components/primer/alpha/tool_tip.js +443 -0
  110. package/app/components/primer/alpha/tree_view/tree_view.d.ts +42 -0
  111. package/app/components/primer/alpha/tree_view/tree_view.js +391 -0
  112. package/app/components/primer/alpha/tree_view/tree_view_icon_pair_element.d.ts +15 -0
  113. package/app/components/primer/alpha/tree_view/tree_view_icon_pair_element.js +62 -0
  114. package/app/components/primer/alpha/tree_view/tree_view_include_fragment_element.d.ts +9 -0
  115. package/app/components/primer/alpha/tree_view/tree_view_include_fragment_element.js +28 -0
  116. package/app/components/primer/alpha/tree_view/tree_view_roving_tab_index.d.ts +3 -0
  117. package/app/components/primer/alpha/tree_view/tree_view_roving_tab_index.js +130 -0
  118. package/app/components/primer/alpha/tree_view/tree_view_sub_tree_node_element.d.ts +45 -0
  119. package/app/components/primer/alpha/tree_view/tree_view_sub_tree_node_element.js +429 -0
  120. package/app/components/primer/alpha/tree_view.css +396 -0
  121. package/app/components/primer/alpha/tree_view.css.json +52 -0
  122. package/app/components/primer/alpha/underline_nav.css +150 -0
  123. package/app/components/primer/alpha/underline_nav.css.json +26 -0
  124. package/app/components/primer/alpha/x_banner.d.ts +18 -0
  125. package/app/components/primer/alpha/x_banner.js +51 -0
  126. package/app/components/primer/anchored_position.d.ts +27 -0
  127. package/app/components/primer/anchored_position.js +159 -0
  128. package/app/components/primer/beta/auto_complete/auto_complete.d.ts +1 -0
  129. package/app/components/primer/beta/auto_complete/auto_complete.js +1 -0
  130. package/app/components/primer/beta/avatar.css +77 -0
  131. package/app/components/primer/beta/avatar.css.json +17 -0
  132. package/app/components/primer/beta/avatar_stack.css +145 -0
  133. package/app/components/primer/beta/avatar_stack.css.json +28 -0
  134. package/app/components/primer/beta/blankslate.css +168 -0
  135. package/app/components/primer/beta/blankslate.css.json +23 -0
  136. package/app/components/primer/beta/border_box.css +218 -0
  137. package/app/components/primer/beta/border_box.css.json +54 -0
  138. package/app/components/primer/beta/breadcrumbs.css +29 -0
  139. package/app/components/primer/beta/breadcrumbs.css.json +9 -0
  140. package/app/components/primer/beta/button.css +359 -0
  141. package/app/components/primer/beta/button.css.json +86 -0
  142. package/app/components/primer/beta/button_group.css +20 -0
  143. package/app/components/primer/beta/button_group.css.json +12 -0
  144. package/app/components/primer/beta/clipboard_copy.d.ts +1 -0
  145. package/app/components/primer/beta/clipboard_copy.js +58 -0
  146. package/app/components/primer/beta/counter.css +38 -0
  147. package/app/components/primer/beta/counter.css.json +10 -0
  148. package/app/components/primer/beta/details_toggle_element.d.ts +40 -0
  149. package/app/components/primer/beta/details_toggle_element.js +65 -0
  150. package/app/components/primer/beta/flash.css +152 -0
  151. package/app/components/primer/beta/flash.css.json +27 -0
  152. package/app/components/primer/beta/label.css +109 -0
  153. package/app/components/primer/beta/label.css.json +24 -0
  154. package/app/components/primer/beta/link.css +79 -0
  155. package/app/components/primer/beta/link.css.json +19 -0
  156. package/app/components/primer/beta/nav_list.d.ts +20 -0
  157. package/app/components/primer/beta/nav_list.js +192 -0
  158. package/app/components/primer/beta/nav_list_group_element.d.ts +19 -0
  159. package/app/components/primer/beta/nav_list_group_element.js +111 -0
  160. package/app/components/primer/beta/popover.css +215 -0
  161. package/app/components/primer/beta/popover.css.json +33 -0
  162. package/app/components/primer/beta/progress_bar.css +27 -0
  163. package/app/components/primer/beta/progress_bar.css.json +10 -0
  164. package/app/components/primer/beta/relative_time.d.ts +1 -0
  165. package/app/components/primer/beta/relative_time.js +1 -0
  166. package/app/components/primer/beta/state.css +59 -0
  167. package/app/components/primer/beta/state.css.json +13 -0
  168. package/app/components/primer/beta/subhead.css +64 -0
  169. package/app/components/primer/beta/subhead.css.json +14 -0
  170. package/app/components/primer/beta/timeline_item.css +106 -0
  171. package/app/components/primer/beta/timeline_item.css.json +16 -0
  172. package/app/components/primer/beta/truncate.css +30 -0
  173. package/app/components/primer/beta/truncate.css.json +12 -0
  174. package/app/components/primer/dialog_helper.d.ts +15 -0
  175. package/app/components/primer/dialog_helper.js +132 -0
  176. package/app/components/primer/focus_group.d.ts +19 -0
  177. package/app/components/primer/focus_group.js +163 -0
  178. package/app/components/primer/open_project/border_box/collapsible_header.css +21 -0
  179. package/app/components/primer/open_project/border_box/collapsible_header.css.json +11 -0
  180. package/app/components/primer/open_project/border_box/collapsible_header.d.ts +11 -0
  181. package/app/components/primer/open_project/border_box/collapsible_header.js +21 -0
  182. package/app/components/primer/open_project/border_grid.css +35 -0
  183. package/app/components/primer/open_project/border_grid.css.json +11 -0
  184. package/app/components/primer/open_project/collapsible.d.ts +13 -0
  185. package/app/components/primer/open_project/collapsible.js +67 -0
  186. package/app/components/primer/open_project/collapsible_section.css +5 -0
  187. package/app/components/primer/open_project/collapsible_section.css.json +6 -0
  188. package/app/components/primer/open_project/collapsible_section.d.ts +10 -0
  189. package/app/components/primer/open_project/collapsible_section.js +16 -0
  190. package/app/components/primer/open_project/danger_dialog_form_helper.d.ts +14 -0
  191. package/app/components/primer/open_project/danger_dialog_form_helper.js +54 -0
  192. package/app/components/primer/open_project/drag_handle.css +6 -0
  193. package/app/components/primer/open_project/drag_handle.css.json +6 -0
  194. package/app/components/primer/open_project/filterable_tree_view.d.ts +29 -0
  195. package/app/components/primer/open_project/filterable_tree_view.js +409 -0
  196. package/app/components/primer/open_project/input_group.css +22 -0
  197. package/app/components/primer/open_project/input_group.css.json +12 -0
  198. package/app/components/primer/open_project/page_header.css +87 -0
  199. package/app/components/primer/open_project/page_header.css.json +20 -0
  200. package/app/components/primer/open_project/page_header_element.d.ts +9 -0
  201. package/app/components/primer/open_project/page_header_element.js +23 -0
  202. package/app/components/primer/open_project/side_panel/section.css +27 -0
  203. package/app/components/primer/open_project/side_panel/section.css.json +11 -0
  204. package/app/components/primer/open_project/sub_header.css +80 -0
  205. package/app/components/primer/open_project/sub_header.css.json +17 -0
  206. package/app/components/primer/open_project/sub_header_element.d.ts +17 -0
  207. package/app/components/primer/open_project/sub_header_element.js +76 -0
  208. package/app/components/primer/open_project/zen_mode_button.d.ts +18 -0
  209. package/app/components/primer/open_project/zen_mode_button.js +64 -0
  210. package/app/components/primer/primer.d.ts +40 -0
  211. package/app/components/primer/primer.js +40 -0
  212. package/app/components/primer/scrollable_region.d.ts +13 -0
  213. package/app/components/primer/scrollable_region.js +52 -0
  214. package/app/components/primer/shared_events.d.ts +26 -0
  215. package/app/components/primer/shared_events.js +1 -0
  216. package/app/components/primer/truncate.css +23 -0
  217. package/app/components/primer/truncate.css.json +13 -0
  218. package/app/components/primer/utils.d.ts +1 -0
  219. package/app/components/primer/utils.js +16 -0
  220. package/app/lib/primer/forms/primer_multi_input.d.ts +10 -0
  221. package/app/lib/primer/forms/primer_multi_input.js +44 -0
  222. package/app/lib/primer/forms/primer_text_field.d.ts +28 -0
  223. package/app/lib/primer/forms/primer_text_field.js +119 -0
  224. package/app/lib/primer/forms/toggle_switch_input.d.ts +5 -0
  225. package/app/lib/primer/forms/toggle_switch_input.js +34 -0
  226. package/package.json +103 -0
  227. package/static/arguments.json +6472 -0
  228. package/static/audited_at.json +173 -0
  229. package/static/classes.json +781 -0
  230. package/static/constants.json +1972 -0
  231. package/static/form_previews.json +118 -0
  232. package/static/info_arch.json +21331 -0
  233. package/static/previews.json +9436 -0
  234. package/static/statuses.json +173 -0
@@ -0,0 +1,86 @@
1
+ {
2
+ "name": "beta/button",
3
+ "selectors": [
4
+ ":root",
5
+ ".Button",
6
+ ":is(.Button::before)",
7
+ ".Button:hover",
8
+ ".Button:active",
9
+ ".Button:disabled",
10
+ ".Button[aria-disabled='true']",
11
+ ".Button.Button--iconOnly",
12
+ ":is(a.Button,summary.Button):hover",
13
+ ".Button-content",
14
+ ".Button-content > :not(:last-child)",
15
+ ".Button-content--alignStart",
16
+ ".Button-visual",
17
+ ".Button-visual .Counter",
18
+ ".Button-label",
19
+ ".Button-leadingVisual",
20
+ ".Button-leadingVisual svg",
21
+ ".Button-trailingVisual",
22
+ ".Button-trailingAction",
23
+ ".Button--small",
24
+ ".Button--small .Button-label",
25
+ ":is(.Button--small .Button-content) > :not(:last-child)",
26
+ ".Button--large",
27
+ ".Button--large .Button-label",
28
+ ":is(.Button--large .Button-content) > :not(:last-child)",
29
+ ".Button--fullWidth",
30
+ ".Button--labelWrap",
31
+ ".Button--labelWrap .Button-content",
32
+ ".Button--labelWrap .Button-label",
33
+ ".Button--labelWrap.Button--small",
34
+ ".Button--labelWrap.Button--small .Button-content",
35
+ ".Button--labelWrap.Button--large",
36
+ ".Button--labelWrap.Button--large .Button-content",
37
+ ".Button--primary",
38
+ ".Button--primary.Button--iconOnly",
39
+ ".Button--primary:hover:not(:disabled,.Button--inactive)",
40
+ ".Button--primary:focus",
41
+ ".Button--primary:focus:not(:focus-visible)",
42
+ ".Button--primary:focus-visible",
43
+ ".Button--primary:active:not(:disabled)",
44
+ ".Button--primary[aria-pressed='true']",
45
+ ".Button--primary:disabled",
46
+ ".Button--primary[aria-disabled='true']",
47
+ ".Button--primary .Counter",
48
+ ".Button--secondary",
49
+ ".Button--secondary:hover:not(:disabled,.Button--inactive)",
50
+ ".Button--secondary:active:not(:disabled)",
51
+ ".Button--secondary[aria-pressed='true']",
52
+ ".Button--secondary:disabled",
53
+ ".Button--secondary[aria-disabled='true']",
54
+ ".Button--invisible",
55
+ ".Button--invisible.Button--iconOnly",
56
+ ".Button--invisible:hover:not(:disabled,.Button--inactive)",
57
+ ".Button--invisible[aria-pressed='true']",
58
+ ".Button--invisible:active:not(:disabled)",
59
+ ".Button--invisible:disabled",
60
+ ".Button--invisible[aria-disabled='true']",
61
+ ".Button--invisible.Button--invisible-noVisuals .Button-label",
62
+ ".Button--invisible .Button-visual",
63
+ ":is(.Button--invisible .Button-visual) .Counter",
64
+ ".Button--link",
65
+ ".Button--link:hover:not(:disabled,.Button--inactive)",
66
+ ".Button--link:focus-visible",
67
+ ".Button--link:focus",
68
+ ".Button--link:disabled",
69
+ ".Button--link[aria-disabled='true']",
70
+ ".Button--link .Button-label",
71
+ ".Button--danger",
72
+ ".Button--danger.Button--iconOnly",
73
+ ".Button--danger:hover:not(:disabled,.Button--inactive)",
74
+ ".Button--danger:hover:not(:disabled,.Button--inactive) .Counter",
75
+ ".Button--danger:active:not(:disabled)",
76
+ ".Button--danger[aria-pressed='true']",
77
+ ".Button--danger:disabled",
78
+ ".Button--danger[aria-disabled='true']",
79
+ ":is(.Button--danger:disabled,.Button--danger[aria-disabled='true']) .Counter",
80
+ ".Button--danger .Counter",
81
+ ".Button--iconOnly",
82
+ ".Button--iconOnly.Button--small",
83
+ ".Button--iconOnly.Button--large",
84
+ ".Button--inactive:not([aria-disabled='true'], :disabled)"
85
+ ]
86
+ }
@@ -0,0 +1,20 @@
1
+ .ButtonGroup {
2
+ display: inline-flex;
3
+ }
4
+ .ButtonGroup .Button {
5
+ /* stylelint-disable-next-line primer/spacing */
6
+ margin-inline-end: -1px;
7
+ position: relative;
8
+ border-radius: 0;
9
+ }
10
+ :is(.ButtonGroup .Button):focus,:is(.ButtonGroup .Button):active,:is(.ButtonGroup .Button):hover {
11
+ z-index: 1;
12
+ }
13
+ .ButtonGroup > :first-child .Button {
14
+ border-top-left-radius: var(--borderRadius-medium);
15
+ border-bottom-left-radius: var(--borderRadius-medium);
16
+ }
17
+ .ButtonGroup > :last-child .Button {
18
+ border-top-right-radius: var(--borderRadius-medium);
19
+ border-bottom-right-radius: var(--borderRadius-medium);
20
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "beta/button_group",
3
+ "selectors": [
4
+ ".ButtonGroup",
5
+ ".ButtonGroup .Button",
6
+ ":is(.ButtonGroup .Button):focus",
7
+ ":is(.ButtonGroup .Button):active",
8
+ ":is(.ButtonGroup .Button):hover",
9
+ ".ButtonGroup > :first-child .Button",
10
+ ".ButtonGroup > :last-child .Button"
11
+ ]
12
+ }
@@ -0,0 +1 @@
1
+ import '@github/clipboard-copy-element';
@@ -0,0 +1,58 @@
1
+ import '@github/clipboard-copy-element';
2
+ const CLIPBOARD_COPY_TIMER_DURATION = 2000;
3
+ function showSVG(svg) {
4
+ svg.style.display = 'inline-block';
5
+ }
6
+ function hideSVG(svg) {
7
+ svg.style.display = 'none';
8
+ }
9
+ // Toggle a copy button.
10
+ function showCopy(button) {
11
+ const [copyIcon, checkIcon] = button.querySelectorAll('.octicon');
12
+ if (!copyIcon || !checkIcon)
13
+ return;
14
+ showSVG(copyIcon);
15
+ hideSVG(checkIcon);
16
+ }
17
+ // Toggle a copy button.
18
+ function showCheck(button) {
19
+ const [copyIcon, checkIcon] = button.querySelectorAll('.octicon');
20
+ if (!copyIcon || !checkIcon)
21
+ return;
22
+ hideSVG(copyIcon);
23
+ showSVG(checkIcon);
24
+ }
25
+ const clipboardCopyElementTimers = new WeakMap();
26
+ document.addEventListener('clipboard-copy', ({ target }) => {
27
+ if (!(target instanceof HTMLElement))
28
+ return;
29
+ if (!target.hasAttribute('data-view-component'))
30
+ return;
31
+ const currentTimeout = clipboardCopyElementTimers.get(target);
32
+ const clipboardCopyLiveRegion = target.parentNode?.querySelector('[data-clipboard-copy-feedback]');
33
+ const copiedAnnouncement = 'Copied!';
34
+ if (currentTimeout) {
35
+ clearTimeout(currentTimeout);
36
+ clipboardCopyElementTimers.delete(target);
37
+ }
38
+ else {
39
+ showCheck(target);
40
+ if (clipboardCopyLiveRegion) {
41
+ if (clipboardCopyLiveRegion.textContent === copiedAnnouncement) {
42
+ /* This is a hack due to the way the aria live API works.
43
+ A screen reader will not read a live region again
44
+ if the text is the same. Adding a space character tells
45
+ the browser that the live region has updated,
46
+ which will cause it to read again, but with no audible difference. */
47
+ clipboardCopyLiveRegion.textContent = `${copiedAnnouncement}\u00A0`;
48
+ }
49
+ else {
50
+ clipboardCopyLiveRegion.textContent = copiedAnnouncement;
51
+ }
52
+ }
53
+ }
54
+ clipboardCopyElementTimers.set(target, setTimeout(() => {
55
+ showCopy(target);
56
+ clipboardCopyElementTimers.delete(target);
57
+ }, CLIPBOARD_COPY_TIMER_DURATION));
58
+ });
@@ -0,0 +1,38 @@
1
+ /* Counter */
2
+
3
+ .Counter {
4
+ display: inline-block;
5
+ min-width: var(--base-size-20); /* makes sure it's a circle with just one digit */
6
+ padding: 0 var(--base-size-6);
7
+ font-size: var(--text-body-size-small);
8
+ font-weight: var(--base-text-weight-medium);
9
+ /* stylelint-disable-next-line primer/typography */
10
+ line-height: calc(var(--base-size-20) - var(--borderWidth-thin) * 2); /* 20px - 2px for the borders */
11
+ color: var(--fgColor-default);
12
+ text-align: center;
13
+ background-color: var(--bgColor-neutral-muted, var(--color-neutral-muted));
14
+ border: var(--borderWidth-thin) solid var(--counter-borderColor);
15
+ /* stylelint-disable-next-line primer/borders */
16
+ border-radius: 2em;
17
+ }
18
+
19
+ .Counter:empty {
20
+ display: none;
21
+ }
22
+
23
+ /* Is this selector used? could not find any use of it */
24
+
25
+ .Counter .octicon {
26
+ vertical-align: text-top;
27
+ opacity: 0.8;
28
+ }
29
+
30
+ .Counter--primary {
31
+ color: var(--fgColor-onEmphasis);
32
+ background-color: var(--bgColor-neutral-emphasis);
33
+ }
34
+
35
+ .Counter--secondary {
36
+ color: var(--fgColor-muted);
37
+ background-color: var(--bgColor-neutral-muted);
38
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "beta/counter",
3
+ "selectors": [
4
+ ".Counter",
5
+ ".Counter:empty",
6
+ ".Counter .octicon",
7
+ ".Counter--primary",
8
+ ".Counter--secondary"
9
+ ]
10
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * A companion Catalyst element for the Details view component. This element
3
+ * ensures the <details> and <summary> elements markup is properly accessible by
4
+ * updating the aria-label and aria-expanded attributes on click.
5
+ *
6
+ * aria-label values are only set if provided via the `data-aria-label-open` and
7
+ * `data-aria-label-closed` attributes on the summary target. If these attributes
8
+ * are not present, no aria-label will be set, allowing screen readers to use
9
+ * the visible text content.
10
+ *
11
+ * @example
12
+ * ```html
13
+ * <details-toggle>
14
+ * <details open=true data-target="details-toggle.detailsTarget">
15
+ * <summary
16
+ * aria-expanded="true"
17
+ * aria-label="Collapse me"
18
+ * data-target="details-toggle.summaryTarget"
19
+ * data-action="click:details-toggle#toggle"
20
+ * data-aria-label-closed="Expand me"
21
+ * data-aria-label-open="Collapse me"
22
+ * >
23
+ * Click me
24
+ * </summary>
25
+ * <div>Contents</div>
26
+ * </details>
27
+ * </details-toggle>
28
+ * ```
29
+ */
30
+ declare class DetailsToggleElement extends HTMLElement {
31
+ detailsTarget: HTMLDetailsElement;
32
+ summaryTarget: HTMLElement;
33
+ toggle(): void;
34
+ }
35
+ declare global {
36
+ interface Window {
37
+ DetailsToggleElement: typeof DetailsToggleElement;
38
+ }
39
+ }
40
+ export {};
@@ -0,0 +1,65 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { controller, target } from '@github/catalyst';
8
+ /**
9
+ * A companion Catalyst element for the Details view component. This element
10
+ * ensures the <details> and <summary> elements markup is properly accessible by
11
+ * updating the aria-label and aria-expanded attributes on click.
12
+ *
13
+ * aria-label values are only set if provided via the `data-aria-label-open` and
14
+ * `data-aria-label-closed` attributes on the summary target. If these attributes
15
+ * are not present, no aria-label will be set, allowing screen readers to use
16
+ * the visible text content.
17
+ *
18
+ * @example
19
+ * ```html
20
+ * <details-toggle>
21
+ * <details open=true data-target="details-toggle.detailsTarget">
22
+ * <summary
23
+ * aria-expanded="true"
24
+ * aria-label="Collapse me"
25
+ * data-target="details-toggle.summaryTarget"
26
+ * data-action="click:details-toggle#toggle"
27
+ * data-aria-label-closed="Expand me"
28
+ * data-aria-label-open="Collapse me"
29
+ * >
30
+ * Click me
31
+ * </summary>
32
+ * <div>Contents</div>
33
+ * </details>
34
+ * </details-toggle>
35
+ * ```
36
+ */
37
+ let DetailsToggleElement = class DetailsToggleElement extends HTMLElement {
38
+ toggle() {
39
+ const detailsIsOpen = this.detailsTarget.hasAttribute('open');
40
+ if (detailsIsOpen) {
41
+ const ariaLabelClosed = this.summaryTarget.getAttribute('data-aria-label-closed');
42
+ if (ariaLabelClosed) {
43
+ this.summaryTarget.setAttribute('aria-label', ariaLabelClosed);
44
+ }
45
+ this.summaryTarget.setAttribute('aria-expanded', 'false');
46
+ }
47
+ else {
48
+ const ariaLabelOpen = this.summaryTarget.getAttribute('data-aria-label-open');
49
+ if (ariaLabelOpen) {
50
+ this.summaryTarget.setAttribute('aria-label', ariaLabelOpen);
51
+ }
52
+ this.summaryTarget.setAttribute('aria-expanded', 'true');
53
+ }
54
+ }
55
+ };
56
+ __decorate([
57
+ target
58
+ ], DetailsToggleElement.prototype, "detailsTarget", void 0);
59
+ __decorate([
60
+ target
61
+ ], DetailsToggleElement.prototype, "summaryTarget", void 0);
62
+ DetailsToggleElement = __decorate([
63
+ controller
64
+ ], DetailsToggleElement);
65
+ window.DetailsToggleElement = DetailsToggleElement;
@@ -0,0 +1,152 @@
1
+ /* stylelint-disable primer/spacing */
2
+
3
+ /* flash */
4
+
5
+ /* Default flash */
6
+
7
+ .flash:not(.Banner) {
8
+ position: relative;
9
+ padding: var(--base-size-20) var(--control-medium-paddingInline-spacious);
10
+
11
+ /* Default color */
12
+ color: var(--fgColor-default);
13
+ background-image: linear-gradient(var(--bgColor-accent-muted), var(--bgColor-accent-muted));
14
+ border-color: var(--borderColor-accent-muted);
15
+ border-style: solid;
16
+ border-width: var(--borderWidth-thin);
17
+ border-radius: var(--borderRadius-medium);
18
+ }
19
+
20
+ .flash:not(.Banner) .octicon {
21
+ margin-right: var(--base-size-12);
22
+ color: var(--fgColor-accent);
23
+ }
24
+
25
+ /* stylelint-disable-next-line selector-max-type */
26
+
27
+ .flash:not(.Banner) p:last-child {
28
+ margin-bottom: 0;
29
+ }
30
+
31
+ /* Contain the flash messages */
32
+
33
+ .flash-messages {
34
+ margin-bottom: var(--stack-gap-spacious);
35
+ }
36
+
37
+ /* Close button */
38
+
39
+ .flash-close:not(.Banner-close) {
40
+ float: right;
41
+ margin-top: calc(var(--base-size-4) * -1);
42
+ text-align: center;
43
+ cursor: pointer;
44
+
45
+ /* Undo `<button>` styles */
46
+ background: none;
47
+ border: 0;
48
+ appearance: none;
49
+ }
50
+
51
+ .flash-close:not(.Banner-close):hover {
52
+ opacity: 0.7;
53
+ }
54
+
55
+ .flash-close:not(.Banner-close):active {
56
+ opacity: 0.5;
57
+ }
58
+
59
+ .flash-close:not(.Banner-close) .octicon {
60
+ margin-right: 0;
61
+ }
62
+
63
+ /* Action button */
64
+
65
+ .flash-action:not(.Banner-actions) {
66
+ float: right;
67
+ margin-top: -3px;
68
+ margin-left: var(--stack-gap-spacious);
69
+ background-clip: padding-box;
70
+ }
71
+
72
+ .flash-action.btn:not(.Banner-actions) .octicon {
73
+ margin-right: var(--control-small-gap);
74
+ color: var(--fgColor-muted);
75
+ }
76
+
77
+ .flash-action.btn-primary:not(.Banner-actions) {
78
+ background-clip: border-box;
79
+ }
80
+
81
+ .flash-action.btn-primary:not(.Banner-actions) .octicon {
82
+ color: inherit;
83
+ }
84
+
85
+ /* Color variations */
86
+
87
+ .flash-warn:not(.Banner) {
88
+ color: var(--fgColor-default);
89
+ background-image: linear-gradient(var(--bgColor-attention-muted), var(--bgColor-attention-muted));
90
+ border-color: var(--borderColor-attention-muted);
91
+ }
92
+
93
+ .flash-warn:not(.Banner) .octicon {
94
+ color: var(--fgColor-attention);
95
+ }
96
+
97
+ .flash-error:not(.Banner) {
98
+ color: var(--fgColor-default);
99
+ background-image: linear-gradient(var(--bgColor-danger-muted), var(--bgColor-danger-muted));
100
+ border-color: var(--borderColor-danger-muted);
101
+ }
102
+
103
+ .flash-error:not(.Banner) .octicon {
104
+ color: var(--fgColor-danger);
105
+ }
106
+
107
+ .flash-success:not(.Banner) {
108
+ color: var(--fgColor-default);
109
+ background-image: linear-gradient(var(--bgColor-success-muted), var(--bgColor-success-muted));
110
+ border-color: var(--borderColor-success-muted);
111
+ }
112
+
113
+ .flash-success:not(.Banner) .octicon {
114
+ color: var(--fgColor-success);
115
+ }
116
+
117
+ /* Layout variations */
118
+
119
+ .flash-full:not(.Banner) {
120
+ margin-top: calc(var(--borderWidth-thin) * -1);
121
+ border-width: var(--borderWidth-thin) 0;
122
+ border-radius: 0;
123
+ }
124
+
125
+ /* A banner rendered at the top of the page. */
126
+
127
+ .flash-banner {
128
+ position: fixed;
129
+ top: 0;
130
+ z-index: 90;
131
+ width: 100%;
132
+ border-top: 0;
133
+ border-right: 0;
134
+ border-left: 0;
135
+ border-radius: 0;
136
+ }
137
+
138
+ /* Makes sure the background is opaque to cover any content underneath */
139
+
140
+ .flash-full,
141
+ .flash-banner {
142
+ background-color: var(--bgColor-default);
143
+ }
144
+
145
+ /* FIXME deprecate this */
146
+
147
+ .warning {
148
+ padding: 0.5em;
149
+ margin-bottom: 0.8em;
150
+ font-weight: var(--base-text-weight-semibold);
151
+ background-color: var(--bgColor-attention-muted);
152
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "beta/flash",
3
+ "selectors": [
4
+ ".flash:not(.Banner)",
5
+ ".flash:not(.Banner) .octicon",
6
+ ".flash:not(.Banner) p:last-child",
7
+ ".flash-messages",
8
+ ".flash-close:not(.Banner-close)",
9
+ ".flash-close:not(.Banner-close):hover",
10
+ ".flash-close:not(.Banner-close):active",
11
+ ".flash-close:not(.Banner-close) .octicon",
12
+ ".flash-action:not(.Banner-actions)",
13
+ ".flash-action.btn:not(.Banner-actions) .octicon",
14
+ ".flash-action.btn-primary:not(.Banner-actions)",
15
+ ".flash-action.btn-primary:not(.Banner-actions) .octicon",
16
+ ".flash-warn:not(.Banner)",
17
+ ".flash-warn:not(.Banner) .octicon",
18
+ ".flash-error:not(.Banner)",
19
+ ".flash-error:not(.Banner) .octicon",
20
+ ".flash-success:not(.Banner)",
21
+ ".flash-success:not(.Banner) .octicon",
22
+ ".flash-full:not(.Banner)",
23
+ ".flash-banner",
24
+ ".flash-full",
25
+ ".warning"
26
+ ]
27
+ }
@@ -0,0 +1,109 @@
1
+ /* Labels */
2
+
3
+ /* Provide a wrapper to ensure labels stick together */
4
+
5
+ .labels {
6
+ position: relative;
7
+ }
8
+
9
+ /* Default 20px */
10
+
11
+ .label, /* TODO: Deprecate */
12
+ .Label {
13
+ display: inline-block;
14
+ padding: 0 var(--base-size-6);
15
+ font-size: var(--text-body-size-small);
16
+ font-weight: var(--base-text-weight-medium);
17
+ /* stylelint-disable-next-line primer/typography */
18
+ line-height: 18px;
19
+ white-space: nowrap;
20
+ border: var(--borderWidth-thin) solid var(--borderColor-default);
21
+ border-radius: var(--borderRadius-full);
22
+ }
23
+
24
+ :is(.label,.Label):hover {
25
+ -webkit-text-decoration: none;
26
+ text-decoration: none;
27
+ }
28
+
29
+ /* Large 24px */
30
+
31
+ .Label--large {
32
+ padding: 0 var(--base-size-8);
33
+ /* stylelint-disable-next-line primer/typography */
34
+ line-height: 22px;
35
+ }
36
+
37
+ /* Inline */
38
+
39
+ /* Doesn't increase height of parent element
40
+ ** Can be used with different font-sizes */
41
+
42
+ .Label--inline {
43
+ display: inline;
44
+ /* stylelint-disable-next-line primer/spacing */
45
+ padding: 0.12em 0.5em;
46
+ /* stylelint-disable-next-line primer/typography */
47
+ font-size: 85%;
48
+ }
49
+
50
+ /* Contrast */
51
+
52
+ .Label--primary {
53
+ color: var(--fgColor-default);
54
+ border-color: var(--borderColor-neutral-emphasis);
55
+ }
56
+
57
+ .Label--secondary {
58
+ color: var(--fgColor-muted);
59
+ border-color: var(--borderColor-default);
60
+ }
61
+
62
+ /* Colors */
63
+
64
+ .Label--info, /* TODO: deprecate */
65
+ .Label--accent {
66
+ color: var(--fgColor-accent);
67
+ border-color: var(--borderColor-accent-emphasis);
68
+ }
69
+
70
+ .Label--success {
71
+ color: var(--fgColor-success);
72
+ border-color: var(--borderColor-success-emphasis);
73
+ }
74
+
75
+ .Label--warning, /* TODO: deprecate */
76
+ .Label--attention {
77
+ color: var(--fgColor-attention);
78
+ border-color: var(--borderColor-attention-emphasis);
79
+ }
80
+
81
+ .Label--severe {
82
+ color: var(--fgColor-severe);
83
+ border-color: var(--borderColor-severe-emphasis);
84
+ }
85
+
86
+ .Label--danger {
87
+ color: var(--fgColor-danger);
88
+ border-color: var(--borderColor-danger-emphasis);
89
+ }
90
+
91
+ .Label--open {
92
+ color: var(--fgColor-open);
93
+ border-color: var(--borderColor-open-emphasis);
94
+ }
95
+
96
+ .Label--closed {
97
+ color: var(--fgColor-closed);
98
+ border-color: var(--borderColor-closed-emphasis);
99
+ }
100
+
101
+ .Label--done {
102
+ color: var(--fgColor-done);
103
+ border-color: var(--borderColor-done-emphasis);
104
+ }
105
+
106
+ .Label--sponsors {
107
+ color: var(--fgColor-sponsors);
108
+ border-color: var(--borderColor-sponsors-emphasis);
109
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "beta/label",
3
+ "selectors": [
4
+ ".labels",
5
+ ".label",
6
+ ".Label",
7
+ ":is(.label,.Label):hover",
8
+ ".Label--large",
9
+ ".Label--inline",
10
+ ".Label--primary",
11
+ ".Label--secondary",
12
+ ".Label--info",
13
+ ".Label--accent",
14
+ ".Label--success",
15
+ ".Label--warning",
16
+ ".Label--attention",
17
+ ".Label--severe",
18
+ ".Label--danger",
19
+ ".Label--open",
20
+ ".Label--closed",
21
+ ".Label--done",
22
+ ".Label--sponsors"
23
+ ]
24
+ }