@primer/css 0.0.0-1f49d76 → 0.0.0-2021101073358

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 (349) hide show
  1. package/CHANGELOG.md +862 -133
  2. package/CONTRIBUTING.md +85 -0
  3. package/DEVELOP.md +4 -39
  4. package/LICENSE +1 -1
  5. package/README.md +13 -15
  6. package/RELEASING.md +5 -76
  7. package/actionlist/action-list-item-divider.scss +42 -0
  8. package/actionlist/action-list-item.scss +444 -0
  9. package/actionlist/action-list-variables.scss +8 -0
  10. package/actionlist/action-list.scss +33 -0
  11. package/actionlist/index.scss +5 -0
  12. package/alerts/README.md +1 -1
  13. package/alerts/flash.scss +32 -26
  14. package/alerts/index.scss +2 -2
  15. package/autocomplete/README.md +1 -1
  16. package/autocomplete/autocomplete.scss +18 -8
  17. package/autocomplete/index.scss +3 -3
  18. package/autocomplete/suggester.scss +27 -10
  19. package/avatars/README.md +1 -1
  20. package/avatars/avatar-parent-child.scss +2 -3
  21. package/avatars/avatar-stack.scss +12 -14
  22. package/avatars/avatar.scss +4 -0
  23. package/avatars/circle-badge.scss +4 -4
  24. package/avatars/index.scss +5 -5
  25. package/base/README.md +1 -1
  26. package/base/base.scss +4 -5
  27. package/base/index.scss +6 -5
  28. package/base/kbd.scss +5 -6
  29. package/base/normalize.scss +1 -1
  30. package/base/octicons.scss +6 -0
  31. package/blankslate/README.md +1 -1
  32. package/blankslate/blankslate.scss +7 -4
  33. package/blankslate/index.scss +2 -2
  34. package/box/README.md +1 -1
  35. package/box/box.scss +38 -38
  36. package/box/index.scss +2 -2
  37. package/branch-name/README.md +1 -1
  38. package/branch-name/branch-name.scss +15 -10
  39. package/branch-name/index.scss +2 -2
  40. package/breadcrumb/README.md +1 -1
  41. package/breadcrumb/breadcrumb.scss +12 -7
  42. package/breadcrumb/index.scss +2 -2
  43. package/buttons/README.md +1 -1
  44. package/buttons/button.scss +123 -104
  45. package/buttons/index.scss +4 -4
  46. package/buttons/misc.scss +50 -29
  47. package/color-modes/index.scss +9 -0
  48. package/color-modes/native.scss +10 -0
  49. package/color-modes/themes/dark.scss +7 -0
  50. package/color-modes/themes/dark_colorblind.scss +7 -0
  51. package/color-modes/themes/dark_dimmed.scss +7 -0
  52. package/color-modes/themes/dark_high_contrast.scss +7 -0
  53. package/color-modes/themes/light.scss +7 -0
  54. package/color-modes/themes/light_colorblind.scss +7 -0
  55. package/core/README.md +1 -1
  56. package/core/index.scss +17 -16
  57. package/deprecations.js +18 -200
  58. package/deprecations.json +543 -0
  59. package/dist/actionlist.css +2 -0
  60. package/dist/actionlist.css.map +1 -0
  61. package/dist/actionlist.js +1 -0
  62. package/dist/alerts.css +1 -2
  63. package/dist/alerts.css.map +1 -1
  64. package/dist/alerts.js +1 -1
  65. package/dist/autocomplete.css +1 -2
  66. package/dist/autocomplete.css.map +1 -1
  67. package/dist/autocomplete.js +1 -1
  68. package/dist/avatars.css +1 -2
  69. package/dist/avatars.css.map +1 -1
  70. package/dist/avatars.js +1 -1
  71. package/dist/base.css +1 -2
  72. package/dist/base.css.map +1 -1
  73. package/dist/base.js +1 -1
  74. package/dist/blankslate.css +1 -2
  75. package/dist/blankslate.css.map +1 -1
  76. package/dist/blankslate.js +1 -1
  77. package/dist/box.css +1 -2
  78. package/dist/box.css.map +1 -1
  79. package/dist/box.js +1 -1
  80. package/dist/branch-name.css +1 -2
  81. package/dist/branch-name.css.map +1 -1
  82. package/dist/branch-name.js +1 -1
  83. package/dist/breadcrumb.css +1 -2
  84. package/dist/breadcrumb.css.map +1 -1
  85. package/dist/breadcrumb.js +1 -1
  86. package/dist/buttons.css +1 -2
  87. package/dist/buttons.css.map +1 -1
  88. package/dist/buttons.js +1 -1
  89. package/dist/color-modes.css +2 -0
  90. package/dist/color-modes.css.map +1 -0
  91. package/dist/color-modes.js +1 -0
  92. package/dist/core.css +1 -2
  93. package/dist/core.css.map +1 -1
  94. package/dist/core.js +1 -1
  95. package/dist/deprecations.json +538 -571
  96. package/dist/dropdown.css +1 -2
  97. package/dist/dropdown.css.map +1 -1
  98. package/dist/dropdown.js +1 -1
  99. package/dist/forms.css +1 -2
  100. package/dist/forms.css.map +1 -1
  101. package/dist/forms.js +1 -1
  102. package/dist/header.css +1 -2
  103. package/dist/header.css.map +1 -1
  104. package/dist/header.js +1 -1
  105. package/dist/labels.css +1 -2
  106. package/dist/labels.css.map +1 -1
  107. package/dist/labels.js +1 -1
  108. package/dist/layout.css +1 -2
  109. package/dist/layout.css.map +1 -1
  110. package/dist/layout.js +1 -1
  111. package/dist/links.css +2 -0
  112. package/dist/links.css.map +1 -0
  113. package/dist/links.js +1 -0
  114. package/dist/loaders.css +0 -1
  115. package/dist/loaders.css.map +1 -1
  116. package/dist/loaders.js +1 -1
  117. package/dist/markdown.css +1 -2
  118. package/dist/markdown.css.map +1 -1
  119. package/dist/markdown.js +1 -1
  120. package/dist/marketing-buttons.css +1 -2
  121. package/dist/marketing-buttons.css.map +1 -1
  122. package/dist/marketing-buttons.js +1 -1
  123. package/dist/marketing-support.css +1 -2
  124. package/dist/marketing-support.js +1 -1
  125. package/dist/marketing-type.css +1 -2
  126. package/dist/marketing-type.css.map +1 -1
  127. package/dist/marketing-type.js +1 -1
  128. package/dist/marketing-utilities.css +1 -2
  129. package/dist/marketing-utilities.css.map +1 -1
  130. package/dist/marketing-utilities.js +1 -1
  131. package/dist/marketing.css +1 -2
  132. package/dist/marketing.css.map +1 -1
  133. package/dist/marketing.js +1 -1
  134. package/dist/meta.json +324 -379
  135. package/dist/navigation.css +1 -2
  136. package/dist/navigation.css.map +1 -1
  137. package/dist/navigation.js +1 -1
  138. package/dist/pagination.css +1 -2
  139. package/dist/pagination.css.map +1 -1
  140. package/dist/pagination.js +1 -1
  141. package/dist/popover.css +1 -2
  142. package/dist/popover.css.map +1 -1
  143. package/dist/popover.js +1 -1
  144. package/dist/primer.css +4 -5
  145. package/dist/primer.css.map +1 -1
  146. package/dist/primer.js +1 -1
  147. package/dist/product.css +1 -2
  148. package/dist/product.css.map +1 -1
  149. package/dist/product.js +1 -1
  150. package/dist/progress.css +1 -2
  151. package/dist/progress.css.map +1 -1
  152. package/dist/progress.js +1 -1
  153. package/dist/select-menu.css +1 -2
  154. package/dist/select-menu.css.map +1 -1
  155. package/dist/select-menu.js +1 -1
  156. package/dist/stats/actionlist.json +1 -0
  157. package/dist/stats/alerts.json +1 -1
  158. package/dist/stats/autocomplete.json +1 -1
  159. package/dist/stats/avatars.json +1 -1
  160. package/dist/stats/base.json +1 -1
  161. package/dist/stats/blankslate.json +1 -1
  162. package/dist/stats/box.json +1 -1
  163. package/dist/stats/branch-name.json +1 -1
  164. package/dist/stats/breadcrumb.json +1 -1
  165. package/dist/stats/buttons.json +1 -1
  166. package/dist/stats/color-modes.json +1 -0
  167. package/dist/stats/core.json +1 -1
  168. package/dist/stats/dropdown.json +1 -1
  169. package/dist/stats/forms.json +1 -1
  170. package/dist/stats/header.json +1 -1
  171. package/dist/stats/labels.json +1 -1
  172. package/dist/stats/layout.json +1 -1
  173. package/dist/stats/links.json +1 -0
  174. package/dist/stats/loaders.json +1 -1
  175. package/dist/stats/markdown.json +1 -1
  176. package/dist/stats/marketing-buttons.json +1 -1
  177. package/dist/stats/marketing-support.json +1 -1
  178. package/dist/stats/marketing-type.json +1 -1
  179. package/dist/stats/marketing-utilities.json +1 -1
  180. package/dist/stats/marketing.json +1 -1
  181. package/dist/stats/navigation.json +1 -1
  182. package/dist/stats/pagination.json +1 -1
  183. package/dist/stats/popover.json +1 -1
  184. package/dist/stats/primer.json +1 -1
  185. package/dist/stats/product.json +1 -1
  186. package/dist/stats/progress.json +1 -1
  187. package/dist/stats/select-menu.json +1 -1
  188. package/dist/stats/subhead.json +1 -1
  189. package/dist/stats/support.json +1 -1
  190. package/dist/stats/table-object.json +1 -1
  191. package/dist/stats/timeline.json +1 -1
  192. package/dist/stats/toasts.json +1 -1
  193. package/dist/stats/tooltips.json +1 -1
  194. package/dist/stats/truncate.json +1 -1
  195. package/dist/stats/utilities.json +1 -1
  196. package/dist/subhead.css +1 -2
  197. package/dist/subhead.css.map +1 -1
  198. package/dist/subhead.js +1 -1
  199. package/dist/support.css +1 -1
  200. package/dist/support.js +1 -1
  201. package/dist/table-object.css +0 -1
  202. package/dist/table-object.css.map +1 -1
  203. package/dist/table-object.js +1 -1
  204. package/dist/timeline.css +1 -2
  205. package/dist/timeline.css.map +1 -1
  206. package/dist/timeline.js +1 -1
  207. package/dist/toasts.css +1 -2
  208. package/dist/toasts.css.map +1 -1
  209. package/dist/toasts.js +1 -1
  210. package/dist/tooltips.css +1 -2
  211. package/dist/tooltips.css.map +1 -1
  212. package/dist/tooltips.js +1 -1
  213. package/dist/truncate.css +1 -2
  214. package/dist/truncate.css.map +1 -1
  215. package/dist/truncate.js +1 -1
  216. package/dist/utilities.css +1 -2
  217. package/dist/utilities.css.map +1 -1
  218. package/dist/utilities.js +1 -1
  219. package/dist/variables.json +630 -2274
  220. package/dropdown/README.md +1 -1
  221. package/dropdown/dropdown.scss +32 -86
  222. package/dropdown/index.scss +2 -2
  223. package/forms/README.md +1 -1
  224. package/forms/form-control.scss +41 -51
  225. package/forms/form-group.scss +31 -48
  226. package/forms/form-select.scss +12 -4
  227. package/forms/form-validation.scss +27 -32
  228. package/forms/index.scss +7 -7
  229. package/forms/radio-group.scss +22 -3
  230. package/header/README.md +1 -1
  231. package/header/header.scss +16 -6
  232. package/header/index.scss +2 -2
  233. package/index.scss +4 -1
  234. package/labels/README.md +1 -1
  235. package/labels/counters.scss +10 -11
  236. package/labels/diffstat.scss +8 -8
  237. package/labels/index.scss +7 -7
  238. package/labels/labels.scss +30 -42
  239. package/labels/states.scss +17 -16
  240. package/layout/README.md +1 -1
  241. package/layout/grid-offset.scss +11 -11
  242. package/layout/grid.scss +23 -23
  243. package/layout/index.scss +7 -4
  244. package/layout/layout.scss +185 -0
  245. package/layout/mixins.scss +79 -0
  246. package/{README.template.md → links/README.md} +5 -5
  247. package/links/index.scss +3 -0
  248. package/links/link.scss +55 -0
  249. package/loaders/README.md +1 -1
  250. package/loaders/index.scss +2 -2
  251. package/loaders/loaders.scss +1 -1
  252. package/markdown/README.md +1 -1
  253. package/markdown/blob-csv.scss +2 -2
  254. package/markdown/code.scss +7 -5
  255. package/markdown/footnotes.scss +37 -0
  256. package/markdown/headings.scss +6 -4
  257. package/markdown/images.scss +3 -4
  258. package/markdown/index.scss +9 -8
  259. package/markdown/lists.scss +18 -5
  260. package/markdown/markdown-body.scss +14 -9
  261. package/markdown/tables.scss +7 -7
  262. package/marketing/README.md +1 -1
  263. package/marketing/buttons/button.scss +109 -67
  264. package/marketing/index.scss +4 -4
  265. package/marketing/support/variables.scss +109 -58
  266. package/marketing/type/typography.scss +100 -62
  267. package/marketing/utilities/animations.scss +9 -0
  268. package/marketing/utilities/index.scss +2 -3
  269. package/marketing/utilities/layout.scss +31 -10
  270. package/navigation/README.md +1 -1
  271. package/navigation/filter-list.scss +8 -9
  272. package/navigation/index.scss +7 -7
  273. package/navigation/menu.scss +20 -19
  274. package/navigation/sidenav.scss +21 -18
  275. package/navigation/subnav.scss +9 -13
  276. package/navigation/tabnav.scss +20 -10
  277. package/navigation/underline-nav.scss +19 -14
  278. package/package.json +75 -63
  279. package/pagination/README.md +1 -1
  280. package/pagination/index.scss +2 -2
  281. package/pagination/pagination.scss +8 -8
  282. package/popover/README.md +1 -1
  283. package/popover/index.scss +2 -2
  284. package/popover/popover.scss +14 -13
  285. package/postcss.config.cjs +22 -0
  286. package/prettier.config.cjs +1 -0
  287. package/product/README.md +1 -1
  288. package/product/index.scss +17 -17
  289. package/progress/README.md +1 -1
  290. package/progress/index.scss +2 -2
  291. package/progress/progress.scss +3 -4
  292. package/select-menu/README.md +1 -1
  293. package/select-menu/index.scss +2 -2
  294. package/select-menu/select-menu.scss +44 -46
  295. package/{stylelint.config.js → stylelint.config.cjs} +5 -6
  296. package/subhead/README.md +1 -1
  297. package/subhead/index.scss +2 -2
  298. package/subhead/subhead.scss +9 -3
  299. package/support/README.md +1 -1
  300. package/support/index.scss +7 -8
  301. package/support/mixins/color-modes.scss +106 -0
  302. package/support/mixins/misc.scss +9 -12
  303. package/support/variables/layout.scss +68 -9
  304. package/support/variables/misc.scss +2 -27
  305. package/support/variables/typography.scss +2 -1
  306. package/table-object/README.md +1 -1
  307. package/table-object/index.scss +1 -1
  308. package/timeline/README.md +1 -1
  309. package/timeline/index.scss +2 -2
  310. package/timeline/timeline-item.scss +18 -18
  311. package/toasts/README.md +1 -1
  312. package/toasts/index.scss +2 -2
  313. package/toasts/toasts.scss +38 -20
  314. package/tooltips/README.md +1 -1
  315. package/tooltips/index.scss +2 -2
  316. package/tooltips/tooltips.scss +8 -12
  317. package/truncate/README.md +1 -1
  318. package/truncate/index.scss +2 -1
  319. package/truncate/truncate.scss +30 -0
  320. package/utilities/README.md +1 -1
  321. package/utilities/animations.scss +14 -1
  322. package/utilities/borders.scss +5 -50
  323. package/utilities/box-shadow.scss +8 -8
  324. package/utilities/colors.scss +71 -107
  325. package/utilities/details.scss +3 -3
  326. package/utilities/flexbox.scss +4 -3
  327. package/utilities/index.scss +12 -12
  328. package/utilities/layout.scss +23 -14
  329. package/utilities/margin.scss +34 -16
  330. package/utilities/padding.scss +13 -8
  331. package/utilities/typography.scss +5 -15
  332. package/.browserslistrc +0 -6
  333. package/.eslintrc.json +0 -13
  334. package/.nowignore +0 -5
  335. package/MIGRATING.md +0 -74
  336. package/bin/primer-migrate +0 -86
  337. package/dist/marketing-support.css.map +0 -1
  338. package/dist/support.css.map +0 -1
  339. package/fonts/Inter-Bold.woff +0 -0
  340. package/fonts/Inter-Medium.woff +0 -0
  341. package/fonts/Inter-Regular.woff +0 -0
  342. package/marketing/utilities/margin.scss +0 -17
  343. package/marketing/utilities/padding.scss +0 -24
  344. package/postcss.config.js +0 -14
  345. package/prettier.config.js +0 -1
  346. package/release.config.js +0 -4
  347. package/support/mixins/buttons.scss +0 -172
  348. package/support/variables/color-system.scss +0 -243
  349. package/support/variables/colors.scss +0 -55
@@ -0,0 +1,444 @@
1
+ @mixin focusOutline {
2
+ position: relative;
3
+ z-index: 1;
4
+ outline: none;
5
+ box-shadow: 0 0 0 2px var(--color-accent-fg); // this color breaks convention
6
+ }
7
+
8
+ // <li>
9
+ .ActionList-item {
10
+ position: relative;
11
+ list-style: none;
12
+ background-color: transparent;
13
+ border-radius: $border-radius;
14
+
15
+ &:hover,
16
+ &:active {
17
+ cursor: pointer;
18
+
19
+ // a href
20
+ .ActionList-content {
21
+ text-decoration: none;
22
+ }
23
+ }
24
+
25
+ // only hover li without list as children
26
+ &:not(.ActionList-item--hasSubItem) {
27
+ &:hover {
28
+ cursor: pointer;
29
+ background-color: var(--color-action-list-item-default-hover-bg);
30
+ }
31
+
32
+ &:active {
33
+ background: var(--color-action-list-item-default-active-bg);
34
+
35
+ @media screen and (prefers-reduced-motion: no-preference) {
36
+ animation: ActionList-item-active-bg 4s forwards cubic-bezier(0.33, 1, 0.68, 1);
37
+ }
38
+
39
+ // stylelint-disable primer/box-shadow
40
+ @keyframes ActionList-item-active-bg {
41
+ // stylelint-disable-next-line max-nesting-depth
42
+ 50% {
43
+ box-shadow: inset 0 0 0 rgba(#000, 0.04);
44
+ transform: scale(1);
45
+ }
46
+
47
+ // stylelint-disable-next-line max-nesting-depth
48
+ 100% {
49
+ box-shadow: inset 0 3px 9px rgba(#000, 0.04);
50
+ transform: scale(0.97);
51
+ }
52
+ }
53
+ // stylelint-enable primer/box-shadow
54
+ }
55
+
56
+ &:hover,
57
+ &:active {
58
+ // hide dividers
59
+ // stylelint-disable-next-line selector-max-specificity
60
+ .ActionList-item-label::before,
61
+ + .ActionList-item .ActionList-item-label::before {
62
+ visibility: hidden;
63
+ }
64
+ }
65
+ }
66
+
67
+ // target contents of li if sub-item (li wraps item label + nested ul)
68
+ // collapse styles here
69
+ &.ActionList-item--hasSubItem {
70
+ // first child
71
+ > .ActionList-content {
72
+ &:hover {
73
+ background-color: var(--color-action-list-item-default-hover-bg);
74
+ }
75
+ }
76
+ }
77
+
78
+ // active state [aria-current]
79
+
80
+ &.ActionList-item--navActive:not(.ActionList-item--danger) {
81
+ background: var(--color-action-list-item-default-selected-bg);
82
+
83
+ // stylelint-disable-next-line selector-max-specificity
84
+ &::before,
85
+ + .ActionList-item::before {
86
+ visibility: hidden;
87
+ }
88
+
89
+ // blue accent line
90
+ &::after {
91
+ position: absolute;
92
+ top: calc(50% - 12px);
93
+ left: -$actionList-item-padding-horizontal;
94
+ width: $spacer-1;
95
+ height: $spacer-4;
96
+ content: '';
97
+ background: var(--color-accent-fg);
98
+ border-radius: $border-radius;
99
+ }
100
+ }
101
+
102
+ // collapsible item [aria-expanded]
103
+
104
+ &[aria-expanded='true'] {
105
+ .ActionList-item-collapseIcon {
106
+ transition: transform 120ms linear;
107
+ transform: scaleY(-1);
108
+ }
109
+
110
+ .ActionList--subGroup {
111
+ display: block;
112
+ }
113
+
114
+ &.ActionList-item--hasSubItem {
115
+ // stylelint-disable-next-line selector-max-specificity
116
+ > .ActionList-content > .ActionList-item-label {
117
+ font-weight: $font-weight-bold;
118
+ }
119
+ }
120
+ }
121
+
122
+ &[aria-expanded='false'] {
123
+ .ActionList-item-collapseIcon {
124
+ transition: transform 120ms linear;
125
+ transform: scaleY(1);
126
+ }
127
+
128
+ .ActionList--subGroup {
129
+ display: none;
130
+ }
131
+ }
132
+
133
+ // checkbox item [aria-checked]
134
+ // listbox [aria-selected]
135
+
136
+ &[aria-checked='true'],
137
+ &[aria-selected='true'] {
138
+ // multiselect checkmark
139
+ .ActionList-item-multiSelectCheckmark {
140
+ visibility: visible;
141
+ opacity: 1;
142
+ transition: visibility 0 linear 0, opacity $actionList-item-checkmark-transition-timing;
143
+ }
144
+
145
+ // singleselect checkmark
146
+ .ActionList-item-singleSelectCheckmark {
147
+ visibility: visible;
148
+
149
+ @media screen and (prefers-reduced-motion: no-preference) {
150
+ animation: checkmarkIn 200ms cubic-bezier(0.11, 0, 0.5, 0) forwards;
151
+ }
152
+ }
153
+
154
+ // checkbox
155
+ .ActionList-item-multiSelectIcon {
156
+ .ActionList-item-multiSelectIconRect {
157
+ fill: var(--color-accent-fg);
158
+ stroke: var(--color-accent-fg);
159
+ stroke-width: $border-width;
160
+ }
161
+
162
+ .ActionList-item-multiSelectCheckmark {
163
+ fill: var(--color-fg-on-emphasis);
164
+ }
165
+ }
166
+ }
167
+
168
+ &[aria-checked='false'],
169
+ &[aria-selected='false'] {
170
+ // multiselect checkmark
171
+ .ActionList-item-multiSelectCheckmark {
172
+ visibility: hidden;
173
+ opacity: 0;
174
+ transition:
175
+ visibility 0 linear $actionList-item-checkmark-transition-timing,
176
+ opacity $actionList-item-checkmark-transition-timing;
177
+ }
178
+
179
+ // singleselect checkmark
180
+ .ActionList-item-singleSelectCheckmark {
181
+ visibility: hidden;
182
+ transition: visibility 0s linear 200ms;
183
+ clip-path: inset(16px 0 0 0);
184
+
185
+ @media screen and (prefers-reduced-motion: no-preference) {
186
+ animation: checkmarkOut 200ms cubic-bezier(0.11, 0, 0.5, 0) forwards;
187
+ }
188
+ }
189
+
190
+ // checkbox
191
+ .ActionList-item-multiSelectIcon {
192
+ .ActionList-item-multiSelectIconRect {
193
+ fill: var(--color-canvas-default);
194
+ stroke: var(--color-border-default);
195
+ stroke-width: $border-width;
196
+ }
197
+ }
198
+
199
+ .ActionList-item-multiSelectIconRect {
200
+ fill: var(--color-canvas-default);
201
+ border: $border-width $border-style var(--color-border-default);
202
+ }
203
+ }
204
+
205
+ @keyframes checkmarkIn {
206
+ from {
207
+ clip-path: inset(16px 0 0 0);
208
+ }
209
+
210
+ to {
211
+ clip-path: inset(0 0 0 0);
212
+ }
213
+ }
214
+
215
+ @keyframes checkmarkOut {
216
+ from {
217
+ clip-path: inset(0 0 0 0);
218
+ }
219
+
220
+ to {
221
+ clip-path: inset(16px 0 0 0);
222
+ }
223
+ }
224
+
225
+ // variants
226
+
227
+ // danger
228
+ &.ActionList-item--danger {
229
+ .ActionList-item-label {
230
+ color: var(--color-danger-fg);
231
+ }
232
+
233
+ .ActionList-item-visual {
234
+ color: var(--color-danger-fg);
235
+ }
236
+
237
+ @media (hover: hover) and (pointer: fine) {
238
+ &:hover {
239
+ background: var(--color-action-list-item-danger-hover-bg);
240
+
241
+ // stylelint-disable-next-line max-nesting-depth
242
+ .ActionList-item-label {
243
+ color: var(--color-action-list-item-danger-hover-text);
244
+ }
245
+ }
246
+ }
247
+
248
+ &:active {
249
+ background: var(--color-action-list-item-danger-active-bg);
250
+ }
251
+ }
252
+
253
+ // disabled
254
+ &[aria-disabled='true'] {
255
+ .ActionList-item-label,
256
+ .ActionList-item-description {
257
+ color: var(--color-primer-fg-disabled);
258
+ }
259
+
260
+ .ActionList-item-visual {
261
+ fill: var(--color-primer-fg-disabled);
262
+ }
263
+
264
+ @media (hover: hover) and (pointer: fine) {
265
+ &:hover {
266
+ cursor: not-allowed;
267
+ background-color: transparent;
268
+ }
269
+ }
270
+ }
271
+
272
+ // if nested list exists, remove default padding
273
+ .ActionList {
274
+ // stylelint-disable-next-line primer/spacing
275
+ padding: unset;
276
+ }
277
+ }
278
+
279
+ // span or a href
280
+ .ActionList-content {
281
+ position: relative;
282
+ display: grid;
283
+ // stylelint-disable-next-line primer/spacing
284
+ padding: $actionList-item-padding-vertical $actionList-item-padding-horizontal;
285
+ font-weight: $font-weight-normal;
286
+ color: var(--color-fg-default);
287
+ user-select: none;
288
+ border-radius: $border-radius;
289
+ transition: $actionList-item-bg-transition;
290
+ grid-template-rows: min-content;
291
+ grid-template-areas: 'leadingAction leadingVisual label trailingVisual trailingAction';
292
+ grid-template-columns: min-content min-content minmax(min-content, auto) min-content min-content;
293
+ align-items: center;
294
+
295
+ // column-gap persists with empty grid-areas, margin applies only when children exist
296
+ > :not(:last-child) {
297
+ margin-right: $spacer-2;
298
+ }
299
+
300
+ &:focus-visible {
301
+ @include focusOutline;
302
+ }
303
+
304
+ // sizes
305
+
306
+ &.ActionList-content--sizeMedium {
307
+ // 44px total height
308
+ // stylelint-disable-next-line primer/spacing
309
+ padding: $actionList-item-padding-vertical-md $actionList-item-padding-horizontal;
310
+ }
311
+
312
+ &.ActionList-content--sizeLarge {
313
+ // 48px total height
314
+ // stylelint-disable-next-line primer/spacing
315
+ padding: $actionList-item-padding-vertical-lg $actionList-item-padding-horizontal;
316
+ }
317
+
318
+ // On pointer:coarse (mobile), all list items are large
319
+ @media (pointer: coarse) {
320
+ // stylelint-disable-next-line primer/spacing
321
+ padding: $actionList-item-padding-vertical-lg $actionList-item-padding-horizontal;
322
+ }
323
+
324
+ &.ActionList-content--blockDescription {
325
+ // if leading/trailing visual, align with first line of content
326
+ .ActionList-item-visual {
327
+ place-self: start;
328
+ }
329
+ }
330
+ }
331
+
332
+ // place children on grid
333
+
334
+ .ActionList-item-action--leading {
335
+ grid-area: leadingAction;
336
+ }
337
+
338
+ .ActionList-item-visual--leading {
339
+ grid-area: leadingVisual;
340
+ }
341
+
342
+ .ActionList-item-label {
343
+ grid-area: label;
344
+ }
345
+
346
+ .ActionList-item-visual--trailing {
347
+ grid-area: trailingVisual;
348
+ }
349
+
350
+ .ActionList-item-action--trailing {
351
+ grid-area: trailingAction;
352
+ }
353
+
354
+ // wrapper span
355
+ // default block
356
+ .ActionList-item-descriptionWrap {
357
+ grid-area: label;
358
+ display: flex;
359
+ flex-direction: column;
360
+
361
+ .ActionList-item-description {
362
+ margin-top: $spacer-1;
363
+ }
364
+
365
+ .ActionList-item-label {
366
+ font-weight: $font-weight-bold;
367
+ }
368
+ }
369
+
370
+ // inline
371
+ .ActionList-item-descriptionWrap--inline {
372
+ flex-direction: row;
373
+ align-items: baseline;
374
+
375
+ .ActionList-item-description {
376
+ // stylelint-disable-next-line primer/spacing
377
+ margin-left: $actionList-item-padding-horizontal;
378
+ }
379
+ }
380
+
381
+ // description
382
+ .ActionList-item-description {
383
+ font-size: $font-size-small;
384
+ font-weight: $font-weight-normal;
385
+ line-height: $lh-default;
386
+ color: var(--color-fg-muted);
387
+ }
388
+
389
+ // helper for grid alignment with multi-line content
390
+ // span wrapping svg or text
391
+ .ActionList-item-visual,
392
+ .ActionList-item-action {
393
+ display: flex;
394
+ min-height: $actionList-item-height-sm;
395
+ color: var(--color-fg-muted); // if visual is text
396
+ fill: var(--color-fg-muted);
397
+ align-items: center;
398
+ }
399
+
400
+ // text
401
+ // stylelint-disable-next-line no-duplicate-selectors
402
+ .ActionList-item-label {
403
+ position: relative; // for pseudo dividers
404
+ font-weight: $font-weight-normal;
405
+ // we need a strict value here for grid alignment
406
+ // stylelint-disable-next-line primer/typography
407
+ line-height: $actionList-item-label-line-height;
408
+ color: var(--color-fg-default);
409
+ }
410
+
411
+ // nested lists (only supports 1 level currently)
412
+ // target ActionList-item--subItem for padding-left to maintain :active :after state
413
+
414
+ .ActionList-item--subItem > .ActionList-content {
415
+ font-size: $font-size-small;
416
+ }
417
+
418
+ // no leading visual
419
+ .ActionList--subGroup {
420
+ .ActionList-item--subItem {
421
+ padding-left: $spacer-3;
422
+ }
423
+ }
424
+
425
+ // has 16px leading visual
426
+ .ActionList-content--visual16 + .ActionList--subGroup {
427
+ .ActionList-item--subItem {
428
+ padding-left: $spacer-4;
429
+ }
430
+ }
431
+
432
+ // has 20px leading visual
433
+ .ActionList-content--visual20 + .ActionList--subGroup {
434
+ .ActionList-item--subItem {
435
+ padding-left: $spacer-3 * 1.75;
436
+ }
437
+ }
438
+
439
+ // has 24px leading visual
440
+ .ActionList-content--visual24 + .ActionList--subGroup {
441
+ .ActionList-item--subItem {
442
+ padding-left: $spacer-5;
443
+ }
444
+ }
@@ -0,0 +1,8 @@
1
+ $actionList-item-height-sm: $spacer-2 * 2.5 !default;
2
+ $actionList-item-label-line-height: $spacer-2 * 2.5 !default;
3
+ $actionList-item-padding-vertical-md: $spacer-2 * 1.25 !default;
4
+ $actionList-item-padding-vertical-lg: $spacer-2 * 1.75 !default;
5
+ $actionList-item-padding-vertical: $spacer-1 * 1.5 !default;
6
+ $actionList-item-padding-horizontal: $spacer-2 !default;
7
+ $actionList-item-bg-transition: background 33.333ms linear !default; // 2 frames on a 60hz monitor
8
+ $actionList-item-checkmark-transition-timing: 50ms !default;
@@ -0,0 +1,33 @@
1
+ // <ul>
2
+ .ActionList {
3
+ padding: $spacer-2;
4
+ }
5
+
6
+ // dividers
7
+
8
+ .ActionList--divided {
9
+ .ActionList-item-label::before {
10
+ position: absolute;
11
+ top: -$actionList-item-padding-vertical;
12
+ display: block;
13
+ width: 100%;
14
+ height: 1px;
15
+ content: '';
16
+ background: var(--color-action-list-item-inline-divider);
17
+ }
18
+
19
+ // hide divider if item is active
20
+ .ActionList-item--navActive {
21
+ // stylelint-disable-next-line selector-max-specificity, selector-max-compound-selectors
22
+ .ActionList-item-label::before,
23
+ + .ActionList-item .ActionList-item-label::before {
24
+ visibility: hidden;
25
+ }
26
+ }
27
+ }
28
+
29
+ // hide if item is first of type with label::before, or is the first item after a sectionDivider
30
+ .ActionList-item:first-of-type .ActionList-item-label::before,
31
+ .ActionList-sectionDivider + .ActionList-item .ActionList-item-label::before {
32
+ visibility: hidden;
33
+ }
@@ -0,0 +1,5 @@
1
+ @import '../support/index.scss';
2
+ @import './action-list-variables.scss';
3
+ @import './action-list.scss';
4
+ @import './action-list-item.scss';
5
+ @import './action-list-item-divider.scss';
package/alerts/README.md CHANGED
@@ -19,7 +19,7 @@ The `@primer/css` npm package includes a standalone CSS build of this module in
19
19
 
20
20
  ## License
21
21
 
22
- [MIT](https://github.com/primer/css/blob/master/LICENSE) &copy; [GitHub](https://github.com/)
22
+ [MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)
23
23
 
24
24
 
25
25
  [scss]: https://sass-lang.com/documentation/syntax#scss
package/alerts/flash.scss CHANGED
@@ -5,7 +5,6 @@
5
5
  position: relative;
6
6
  // stylelint-disable-next-line primer/spacing
7
7
  padding: 20px $spacer-3;
8
- color: $text-gray-dark;
9
8
  border-style: $border-style;
10
9
  border-width: $border-width;
11
10
  border-radius: $border-radius;
@@ -58,6 +57,15 @@
58
57
  margin-top: -3px;
59
58
  margin-left: $spacer-4;
60
59
  background-clip: padding-box;
60
+
61
+ &.btn .octicon {
62
+ margin-right: $spacer-1;
63
+ color: var(--color-fg-muted);
64
+ }
65
+
66
+ &.btn-primary .octicon {
67
+ color: inherit;
68
+ }
61
69
  }
62
70
 
63
71
  //
@@ -65,49 +73,42 @@
65
73
  //
66
74
 
67
75
  .flash {
68
- // stylelint-disable-next-line primer/colors
69
- background-color: $blue-100;
70
- // stylelint-disable-next-line primer/borders
71
- border-color: rgba($blue-700, 0.2);
76
+ color: var(--color-fg-default);
77
+ background-image: linear-gradient(var(--color-accent-subtle), var(--color-accent-subtle));
78
+ border-color: var(--color-accent-muted);
72
79
 
73
80
  .octicon {
74
- // stylelint-disable-next-line primer/colors
75
- color: rgba($blue-700, 0.6);
81
+ color: var(--color-accent-fg);
76
82
  }
77
83
  }
78
84
 
79
85
  .flash-warn {
80
- // stylelint-disable-next-line primer/colors
81
- background-color: $yellow-100;
82
- // stylelint-disable-next-line primer/borders
83
- border-color: rgba($yellow-800, 0.2);
86
+ color: var(--color-fg-default);
87
+ background-image: linear-gradient(var(--color-attention-subtle), var(--color-attention-subtle));
88
+ border-color: var(--color-attention-muted);
84
89
 
85
90
  .octicon {
86
- // stylelint-disable-next-line primer/colors
87
- color: rgba($yellow-800, 1);
91
+ color: var(--color-attention-fg);
88
92
  }
89
93
  }
90
94
 
91
95
  .flash-error {
92
- // stylelint-disable-next-line primer/colors
93
- background-color: #ffe3e6; // custom red
94
- // stylelint-disable-next-line primer/borders
95
- border-color: rgba($red-800, 0.2);
96
+ color: var(--color-fg-default);
97
+ background-image: linear-gradient(var(--color-danger-subtle), var(--color-danger-subtle));
98
+ border-color: var(--color-danger-muted);
96
99
 
97
100
  .octicon {
98
- // stylelint-disable-next-line primer/colors
99
- color: rgba($red-800, 0.6);
101
+ color: var(--color-danger-fg);
100
102
  }
101
103
  }
102
104
 
103
105
  .flash-success {
104
- background-color: $bg-green-light;
105
- // stylelint-disable-next-line primer/borders
106
- border-color: rgba($green-700, 0.2);
106
+ color: var(--color-fg-default);
107
+ background-image: linear-gradient(var(--color-success-subtle), var(--color-success-subtle));
108
+ border-color: var(--color-success-muted);
107
109
 
108
110
  .octicon {
109
- // stylelint-disable-next-line primer/colors
110
- color: rgba($green-700, 0.8);
111
+ color: var(--color-success-fg);
111
112
  }
112
113
  }
113
114
 
@@ -134,12 +135,17 @@
134
135
  border-radius: 0;
135
136
  }
136
137
 
138
+ // Makes sure the background is opaque to cover any content underneath
139
+ .flash-full,
140
+ .flash-banner {
141
+ background-color: var(--color-canvas-default);
142
+ }
143
+
137
144
  // FIXME deprecate this
138
145
  .warning {
139
146
  padding: $em-spacer-5;
140
147
  // stylelint-disable-next-line primer/spacing
141
148
  margin-bottom: 0.8em;
142
149
  font-weight: $font-weight-bold;
143
- // stylelint-disable-next-line primer/colors
144
- background-color: $yellow-100;
150
+ background-color: var(--color-attention-subtle);
145
151
  }
package/alerts/index.scss CHANGED
@@ -1,3 +1,3 @@
1
1
  // support files
2
- @import "../support/index.scss";
3
- @import "./flash.scss";
2
+ @import '../support/index.scss';
3
+ @import './flash.scss';
@@ -19,7 +19,7 @@ The `@primer/css` npm package includes a standalone CSS build of this module in
19
19
 
20
20
  ## License
21
21
 
22
- [MIT](https://github.com/primer/css/blob/master/LICENSE) &copy; [GitHub](https://github.com/)
22
+ [MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)
23
23
 
24
24
 
25
25
  [scss]: https://sass-lang.com/documentation/syntax#scss
@@ -8,10 +8,10 @@
8
8
  // stylelint-disable-next-line primer/typography
9
9
  font-size: 13px;
10
10
  list-style: none;
11
- background: $bg-white;
11
+ background: var(--color-canvas-overlay);
12
+ border: $border-width $border-style var(--color-border-default);
12
13
  border-radius: $border-radius;
13
- // stylelint-disable-next-line primer/box-shadow
14
- box-shadow: inset 0 0 0 1px $border-color, $box-shadow-medium;
14
+ box-shadow: var(--color-shadow-medium);
15
15
  }
16
16
 
17
17
  // One of the items that appears within an autocomplete group
@@ -23,22 +23,32 @@
23
23
  padding: $spacer-1 $spacer-2;
24
24
  overflow: hidden;
25
25
  font-weight: $font-weight-bold;
26
- color: $text-gray-dark;
26
+ color: var(--color-fg-default);
27
27
  text-align: left;
28
28
  text-decoration: none;
29
29
  text-overflow: ellipsis;
30
30
  white-space: nowrap;
31
31
  cursor: pointer;
32
- background-color: $bg-white;
32
+ background-color: var(--color-canvas-overlay);
33
33
  border: 0;
34
34
 
35
- &:hover,
35
+ &:hover {
36
+ color: var(--color-fg-on-emphasis);
37
+ text-decoration: none;
38
+ background-color: var(--color-accent-emphasis);
39
+
40
+ // Inherit color on all child elements to ensure enough contrast
41
+ * {
42
+ color: inherit !important;
43
+ }
44
+ }
45
+
36
46
  &.selected,
37
47
  &[aria-selected=true],
38
48
  &.navigation-focus {
39
- color: $text-white;
49
+ color: var(--color-fg-on-emphasis);
40
50
  text-decoration: none;
41
- background-color: $bg-blue;
51
+ background-color: var(--color-accent-emphasis);
42
52
 
43
53
  // Inherit color on all child elements to ensure enough contrast
44
54
  * {
@@ -1,4 +1,4 @@
1
1
  // support files
2
- @import "../support/index.scss";
3
- @import "./autocomplete.scss";
4
- @import "./suggester.scss";
2
+ @import '../support/index.scss';
3
+ @import './autocomplete.scss';
4
+ @import './suggester.scss';