@primer/css 0.0.0-1f8274f → 0.0.0-2021101020130

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 (367) hide show
  1. package/CHANGELOG.md +1197 -133
  2. package/CODE_OF_CONDUCT.md +1 -1
  3. package/CONTRIBUTING.md +85 -0
  4. package/DEVELOP.md +11 -50
  5. package/LICENSE +1 -1
  6. package/README.md +13 -15
  7. package/RELEASING.md +5 -72
  8. package/actionlist/action-list-item-divider.scss +42 -0
  9. package/actionlist/action-list-item.scss +439 -0
  10. package/actionlist/action-list-variables.scss +8 -0
  11. package/actionlist/action-list.scss +33 -0
  12. package/actionlist/index.scss +5 -0
  13. package/alerts/README.md +11 -22
  14. package/alerts/flash.scss +91 -21
  15. package/alerts/index.scss +2 -2
  16. package/autocomplete/README.md +25 -0
  17. package/autocomplete/autocomplete.scss +58 -0
  18. package/autocomplete/index.scss +4 -0
  19. package/autocomplete/suggester.scss +92 -0
  20. package/avatars/README.md +11 -23
  21. package/avatars/avatar-parent-child.scss +4 -3
  22. package/avatars/avatar-stack.scss +21 -13
  23. package/avatars/avatar.scss +31 -3
  24. package/avatars/circle-badge.scss +5 -4
  25. package/avatars/index.scss +5 -5
  26. package/base/README.md +11 -22
  27. package/base/base.scss +40 -6
  28. package/base/index.scss +6 -4
  29. package/base/kbd.scss +20 -0
  30. package/base/normalize.scss +17 -57
  31. package/base/octicons.scss +6 -0
  32. package/base/typography-base.scss +2 -0
  33. package/blankslate/README.md +11 -23
  34. package/blankslate/blankslate.scss +25 -12
  35. package/blankslate/index.scss +2 -2
  36. package/box/README.md +11 -23
  37. package/box/box.scss +52 -44
  38. package/box/index.scss +2 -2
  39. package/branch-name/README.md +11 -23
  40. package/branch-name/branch-name.scss +18 -8
  41. package/branch-name/index.scss +2 -2
  42. package/breadcrumb/README.md +17 -13
  43. package/breadcrumb/breadcrumb.scss +15 -5
  44. package/breadcrumb/index.scss +2 -2
  45. package/buttons/README.md +11 -23
  46. package/buttons/button-group.scss +2 -0
  47. package/buttons/button.scss +218 -144
  48. package/buttons/index.scss +4 -3
  49. package/buttons/misc.scss +212 -0
  50. package/color-modes/index.scss +9 -0
  51. package/color-modes/native.scss +10 -0
  52. package/color-modes/themes/dark.scss +7 -0
  53. package/color-modes/themes/dark_colorblind.scss +7 -0
  54. package/color-modes/themes/dark_dimmed.scss +7 -0
  55. package/color-modes/themes/dark_high_contrast.scss +7 -0
  56. package/color-modes/themes/light.scss +7 -0
  57. package/color-modes/themes/light_colorblind.scss +7 -0
  58. package/core/README.md +11 -23
  59. package/core/index.scss +19 -20
  60. package/deprecations.js +24 -0
  61. package/deprecations.json +539 -0
  62. package/dist/actionlist.css +2 -0
  63. package/dist/actionlist.css.map +1 -0
  64. package/dist/actionlist.js +1 -0
  65. package/dist/alerts.css +1 -2
  66. package/dist/alerts.css.map +1 -1
  67. package/dist/alerts.js +1 -1
  68. package/dist/autocomplete.css +2 -0
  69. package/dist/autocomplete.css.map +1 -0
  70. package/dist/autocomplete.js +1 -0
  71. package/dist/avatars.css +1 -2
  72. package/dist/avatars.css.map +1 -1
  73. package/dist/avatars.js +1 -1
  74. package/dist/base.css +1 -2
  75. package/dist/base.css.map +1 -1
  76. package/dist/base.js +1 -1
  77. package/dist/blankslate.css +1 -2
  78. package/dist/blankslate.css.map +1 -1
  79. package/dist/blankslate.js +1 -1
  80. package/dist/box.css +1 -2
  81. package/dist/box.css.map +1 -1
  82. package/dist/box.js +1 -1
  83. package/dist/branch-name.css +1 -2
  84. package/dist/branch-name.css.map +1 -1
  85. package/dist/branch-name.js +1 -1
  86. package/dist/breadcrumb.css +1 -2
  87. package/dist/breadcrumb.css.map +1 -1
  88. package/dist/breadcrumb.js +1 -1
  89. package/dist/buttons.css +1 -2
  90. package/dist/buttons.css.map +1 -1
  91. package/dist/buttons.js +1 -1
  92. package/dist/color-modes.css +2 -0
  93. package/dist/color-modes.css.map +1 -0
  94. package/dist/color-modes.js +1 -0
  95. package/dist/core.css +3 -4
  96. package/dist/core.css.map +1 -1
  97. package/dist/core.js +1 -1
  98. package/dist/deprecations.json +539 -0
  99. package/dist/dropdown.css +2 -0
  100. package/dist/dropdown.css.map +1 -0
  101. package/dist/dropdown.js +1 -0
  102. package/dist/forms.css +1 -2
  103. package/dist/forms.css.map +1 -1
  104. package/dist/forms.js +1 -1
  105. package/dist/header.css +2 -0
  106. package/dist/header.css.map +1 -0
  107. package/dist/header.js +1 -0
  108. package/dist/labels.css +1 -2
  109. package/dist/labels.css.map +1 -1
  110. package/dist/labels.js +1 -1
  111. package/dist/layout.css +1 -2
  112. package/dist/layout.css.map +1 -1
  113. package/dist/layout.js +1 -1
  114. package/dist/links.css +2 -0
  115. package/dist/links.css.map +1 -0
  116. package/dist/links.js +1 -0
  117. package/dist/loaders.css +2 -0
  118. package/dist/loaders.css.map +1 -0
  119. package/dist/loaders.js +1 -0
  120. package/dist/markdown.css +1 -2
  121. package/dist/markdown.css.map +1 -1
  122. package/dist/markdown.js +1 -1
  123. package/dist/marketing-buttons.css +1 -2
  124. package/dist/marketing-buttons.css.map +1 -1
  125. package/dist/marketing-buttons.js +1 -1
  126. package/dist/marketing-support.css +1 -2
  127. package/dist/marketing-support.js +1 -1
  128. package/dist/marketing-type.css +1 -2
  129. package/dist/marketing-type.css.map +1 -1
  130. package/dist/marketing-type.js +1 -1
  131. package/dist/marketing-utilities.css +1 -2
  132. package/dist/marketing-utilities.css.map +1 -1
  133. package/dist/marketing-utilities.js +1 -1
  134. package/dist/marketing.css +3 -4
  135. package/dist/marketing.css.map +1 -1
  136. package/dist/marketing.js +1 -1
  137. package/dist/meta.json +325 -282
  138. package/dist/navigation.css +1 -2
  139. package/dist/navigation.css.map +1 -1
  140. package/dist/navigation.js +1 -1
  141. package/dist/pagination.css +1 -2
  142. package/dist/pagination.css.map +1 -1
  143. package/dist/pagination.js +1 -1
  144. package/dist/popover.css +1 -2
  145. package/dist/popover.css.map +1 -1
  146. package/dist/popover.js +1 -1
  147. package/dist/primer.css +13 -14
  148. package/dist/primer.css.map +1 -1
  149. package/dist/primer.js +1 -1
  150. package/dist/product.css +3 -4
  151. package/dist/product.css.map +1 -1
  152. package/dist/product.js +1 -1
  153. package/dist/progress.css +1 -2
  154. package/dist/progress.css.map +1 -1
  155. package/dist/progress.js +1 -1
  156. package/dist/select-menu.css +2 -0
  157. package/dist/select-menu.css.map +1 -0
  158. package/dist/select-menu.js +1 -0
  159. package/dist/stats/actionlist.json +1 -0
  160. package/dist/stats/alerts.json +1 -1
  161. package/dist/stats/autocomplete.json +1 -0
  162. package/dist/stats/avatars.json +1 -1
  163. package/dist/stats/base.json +1 -1
  164. package/dist/stats/blankslate.json +1 -1
  165. package/dist/stats/box.json +1 -1
  166. package/dist/stats/branch-name.json +1 -1
  167. package/dist/stats/breadcrumb.json +1 -1
  168. package/dist/stats/buttons.json +1 -1
  169. package/dist/stats/color-modes.json +1 -0
  170. package/dist/stats/core.json +1 -1
  171. package/dist/stats/dropdown.json +1 -0
  172. package/dist/stats/forms.json +1 -1
  173. package/dist/stats/header.json +1 -0
  174. package/dist/stats/labels.json +1 -1
  175. package/dist/stats/layout.json +1 -1
  176. package/dist/stats/links.json +1 -0
  177. package/dist/stats/loaders.json +1 -0
  178. package/dist/stats/markdown.json +1 -1
  179. package/dist/stats/marketing-buttons.json +1 -1
  180. package/dist/stats/marketing-support.json +1 -1
  181. package/dist/stats/marketing-type.json +1 -1
  182. package/dist/stats/marketing-utilities.json +1 -1
  183. package/dist/stats/marketing.json +1 -1
  184. package/dist/stats/navigation.json +1 -1
  185. package/dist/stats/pagination.json +1 -1
  186. package/dist/stats/popover.json +1 -1
  187. package/dist/stats/primer.json +1 -1
  188. package/dist/stats/product.json +1 -1
  189. package/dist/stats/progress.json +1 -1
  190. package/dist/stats/select-menu.json +1 -0
  191. package/dist/stats/subhead.json +1 -1
  192. package/dist/stats/support.json +1 -1
  193. package/dist/stats/table-object.json +1 -1
  194. package/dist/stats/timeline.json +1 -0
  195. package/dist/stats/toasts.json +1 -0
  196. package/dist/stats/tooltips.json +1 -1
  197. package/dist/stats/truncate.json +1 -1
  198. package/dist/stats/utilities.json +1 -1
  199. package/dist/subhead.css +1 -2
  200. package/dist/subhead.css.map +1 -1
  201. package/dist/subhead.js +1 -1
  202. package/dist/support.css +1 -1
  203. package/dist/support.js +1 -1
  204. package/dist/table-object.css +0 -1
  205. package/dist/table-object.css.map +1 -1
  206. package/dist/table-object.js +1 -1
  207. package/dist/timeline.css +2 -0
  208. package/dist/timeline.css.map +1 -0
  209. package/dist/timeline.js +1 -0
  210. package/dist/toasts.css +2 -0
  211. package/dist/toasts.css.map +1 -0
  212. package/dist/toasts.js +1 -0
  213. package/dist/tooltips.css +1 -2
  214. package/dist/tooltips.css.map +1 -1
  215. package/dist/tooltips.js +1 -1
  216. package/dist/truncate.css +1 -2
  217. package/dist/truncate.css.map +1 -1
  218. package/dist/truncate.js +1 -1
  219. package/dist/utilities.css +1 -2
  220. package/dist/utilities.css.map +1 -1
  221. package/dist/utilities.js +1 -1
  222. package/dist/variables.json +1352 -0
  223. package/dropdown/README.md +25 -0
  224. package/dropdown/dropdown.scss +270 -0
  225. package/dropdown/index.scss +2 -0
  226. package/forms/README.md +11 -23
  227. package/forms/form-control.scss +73 -37
  228. package/forms/form-group.scss +83 -46
  229. package/forms/form-select.scss +17 -5
  230. package/forms/form-validation.scss +51 -32
  231. package/forms/index.scss +7 -6
  232. package/forms/input-group.scss +10 -0
  233. package/forms/radio-group.scss +62 -0
  234. package/header/README.md +25 -0
  235. package/header/header.scss +47 -0
  236. package/header/index.scss +2 -0
  237. package/index.scss +7 -4
  238. package/labels/README.md +11 -23
  239. package/labels/counters.scss +24 -13
  240. package/labels/diffstat.scss +37 -0
  241. package/labels/index.scss +8 -4
  242. package/labels/issue-labels.scss +23 -0
  243. package/labels/labels.scss +59 -40
  244. package/labels/mixins.scss +32 -0
  245. package/labels/states.scss +40 -19
  246. package/layout/README.md +11 -23
  247. package/layout/container.scss +0 -8
  248. package/layout/grid-offset.scss +11 -11
  249. package/layout/grid.scss +23 -23
  250. package/layout/index.scss +7 -5
  251. package/layout/layout.scss +185 -0
  252. package/layout/mixins.scss +79 -0
  253. package/links/README.md +25 -0
  254. package/links/index.scss +3 -0
  255. package/links/link.scss +55 -0
  256. package/loaders/README.md +25 -0
  257. package/loaders/index.scss +2 -0
  258. package/loaders/loaders.scss +19 -0
  259. package/markdown/README.md +11 -23
  260. package/markdown/blob-csv.scss +4 -2
  261. package/markdown/code.scss +11 -3
  262. package/markdown/footnotes.scss +37 -0
  263. package/markdown/headings.scss +13 -4
  264. package/markdown/images.scss +15 -4
  265. package/markdown/index.scss +9 -8
  266. package/markdown/lists.scss +19 -5
  267. package/markdown/markdown-body.scss +15 -18
  268. package/markdown/tables.scss +8 -5
  269. package/marketing/README.md +11 -23
  270. package/marketing/buttons/button.scss +82 -61
  271. package/marketing/index.scss +6 -11
  272. package/marketing/support/index.scss +1 -0
  273. package/marketing/support/mixins.scss +66 -0
  274. package/marketing/support/variables.scss +110 -51
  275. package/marketing/type/typography.scss +100 -62
  276. package/marketing/utilities/animations.scss +9 -0
  277. package/marketing/utilities/filters.scss +0 -1
  278. package/marketing/utilities/index.scss +2 -3
  279. package/marketing/utilities/layout.scss +32 -11
  280. package/navigation/README.md +11 -23
  281. package/navigation/filter-list.scss +16 -14
  282. package/navigation/index.scss +7 -6
  283. package/navigation/menu.scss +42 -35
  284. package/navigation/sidenav.scss +99 -0
  285. package/navigation/subnav.scss +28 -21
  286. package/navigation/tabnav.scss +45 -21
  287. package/navigation/underline-nav.scss +36 -22
  288. package/package.json +78 -101
  289. package/pagination/README.md +12 -14
  290. package/pagination/index.scss +2 -2
  291. package/pagination/pagination.scss +61 -37
  292. package/popover/README.md +11 -24
  293. package/popover/index.scss +2 -2
  294. package/popover/popover.scss +18 -9
  295. package/postcss.config.cjs +22 -0
  296. package/prettier.config.cjs +1 -0
  297. package/product/README.md +11 -23
  298. package/product/index.scss +19 -17
  299. package/progress/README.md +11 -23
  300. package/progress/index.scss +2 -2
  301. package/progress/progress.scss +11 -1
  302. package/select-menu/README.md +25 -0
  303. package/select-menu/index.scss +3 -0
  304. package/select-menu/select-menu.scss +464 -0
  305. package/stylelint.config.cjs +16 -0
  306. package/subhead/README.md +11 -25
  307. package/subhead/index.scss +2 -2
  308. package/subhead/subhead.scss +10 -4
  309. package/support/README.md +12 -18
  310. package/support/index.scss +7 -8
  311. package/support/mixins/color-modes.scss +106 -0
  312. package/support/mixins/misc.scss +19 -13
  313. package/support/mixins/typography.scss +1 -1
  314. package/support/variables/layout.scss +104 -11
  315. package/support/variables/misc.scss +7 -30
  316. package/support/variables/typography.scss +4 -4
  317. package/table-object/README.md +11 -24
  318. package/table-object/index.scss +1 -1
  319. package/timeline/README.md +25 -0
  320. package/timeline/index.scss +2 -0
  321. package/timeline/timeline-item.scss +95 -0
  322. package/toasts/README.md +25 -0
  323. package/toasts/index.scss +2 -0
  324. package/toasts/toasts.scss +127 -0
  325. package/tooltips/README.md +11 -24
  326. package/tooltips/index.scss +2 -2
  327. package/tooltips/tooltips.scss +17 -8
  328. package/truncate/README.md +11 -24
  329. package/truncate/index.scss +2 -1
  330. package/truncate/truncate.scss +41 -7
  331. package/utilities/README.md +11 -23
  332. package/utilities/animations.scss +14 -2
  333. package/utilities/borders.scss +14 -58
  334. package/utilities/box-shadow.scss +8 -9
  335. package/utilities/colors.scss +71 -116
  336. package/utilities/details.scss +24 -4
  337. package/utilities/flexbox.scss +11 -16
  338. package/utilities/index.scss +12 -12
  339. package/utilities/layout.scss +23 -15
  340. package/utilities/margin.scss +34 -17
  341. package/utilities/padding.scss +13 -9
  342. package/utilities/typography.scss +54 -25
  343. package/utilities/visibility-display.scss +0 -13
  344. package/.browserslistrc +0 -6
  345. package/.eslintrc.json +0 -13
  346. package/.stylelintrc.json +0 -9
  347. package/MIGRATING.md +0 -70
  348. package/bin/primer-migrate +0 -86
  349. package/build/build.css +0 -23
  350. package/build/build.json +0 -1
  351. package/build/index.js +0 -1
  352. package/dist/marketing-support.css.map +0 -1
  353. package/dist/support.css.map +0 -1
  354. package/fonts/Inter-Medium.woff +0 -0
  355. package/fonts/Inter-Regular.woff +0 -0
  356. package/layout/columns.scss +0 -56
  357. package/marketing/buttons/README.md +0 -39
  358. package/marketing/support/README.md +0 -31
  359. package/marketing/type/README.md +0 -39
  360. package/marketing/utilities/README.md +0 -36
  361. package/marketing/utilities/margin.scss +0 -18
  362. package/marketing/utilities/padding.scss +0 -28
  363. package/postcss.config.js +0 -14
  364. package/prettier.config.js +0 -1
  365. package/support/mixins/buttons.scss +0 -160
  366. package/support/variables/color-system.scss +0 -243
  367. package/support/variables/colors.scss +0 -70
@@ -0,0 +1,25 @@
1
+ ---
2
+ bundle: "dropdown"
3
+ generated: true
4
+ ---
5
+
6
+ # Primer CSS: `dropdown` bundle
7
+
8
+ ## Usage
9
+
10
+ Primer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:
11
+
12
+ ```scss
13
+ @import "@primer/css/dropdown/index.scss";
14
+ ```
15
+
16
+ ## Build
17
+
18
+ The `@primer/css` npm package includes a standalone CSS build of this module in `dist/dropdown.css`.
19
+
20
+ ## License
21
+
22
+ [MIT](https://github.com/primer/css/blob/main/LICENSE) © [GitHub](https://github.com/)
23
+
24
+
25
+ [scss]: https://sass-lang.com/documentation/syntax#scss
@@ -0,0 +1,270 @@
1
+ .dropdown {
2
+ position: relative;
3
+ }
4
+
5
+ .dropdown-caret {
6
+ display: inline-block;
7
+ width: 0;
8
+ height: 0;
9
+ vertical-align: middle;
10
+ content: '';
11
+ border-style: $border-style;
12
+ // stylelint-disable-next-line primer/borders
13
+ border-width: $spacer-1 $spacer-1 0;
14
+ border-right-color: transparent;
15
+ border-bottom-color: transparent;
16
+ border-left-color: transparent;
17
+ }
18
+
19
+ // Requires a positioning class (e.g., `.dropdown-menu-w`) to determine which
20
+ // way the menu should render from the element triggering it.
21
+
22
+ .dropdown-menu {
23
+ position: absolute;
24
+ top: 100%;
25
+ left: 0;
26
+ z-index: 100;
27
+ width: 160px;
28
+ padding-top: $spacer-1;
29
+ padding-bottom: $spacer-1;
30
+ // stylelint-disable-next-line primer/spacing
31
+ margin-top: 2px;
32
+ list-style: none;
33
+ background-color: var(--color-canvas-overlay);
34
+ background-clip: padding-box;
35
+ border: $border-width $border-style var(--color-border-default);
36
+ border-radius: $border-radius;
37
+ box-shadow: var(--color-shadow-large);
38
+
39
+ &::before,
40
+ &::after {
41
+ position: absolute;
42
+ display: inline-block;
43
+ content: '';
44
+ }
45
+
46
+ // caret border
47
+ &::before {
48
+ // stylelint-disable-next-line primer/borders
49
+ border: $spacer-2 $border-style transparent;
50
+ border-bottom-color: var(--color-border-default);
51
+ }
52
+
53
+ // caret background (should match dropdown background)
54
+ &::after {
55
+ // stylelint-disable-next-line primer/borders
56
+ border: 7px $border-style transparent;
57
+ border-bottom-color: var(--color-canvas-overlay);
58
+ }
59
+
60
+ // stylelint-disable-next-line selector-max-type
61
+ > ul {
62
+ list-style: none;
63
+ }
64
+ }
65
+
66
+ .dropdown-menu-no-overflow {
67
+ width: auto;
68
+
69
+ .dropdown-item {
70
+ padding: $spacer-1 $spacer-3;
71
+ overflow: visible;
72
+ text-overflow: inherit;
73
+ }
74
+ }
75
+
76
+ // Dropdown items (can be links or buttons)
77
+ .dropdown-item {
78
+ display: block;
79
+ padding: $spacer-1 $spacer-2 $spacer-1 $spacer-3;
80
+ overflow: hidden;
81
+ color: var(--color-fg-default);
82
+ text-overflow: ellipsis;
83
+ white-space: nowrap;
84
+
85
+ &:hover {
86
+ color: var(--color-fg-on-emphasis);
87
+ text-decoration: none;
88
+ background-color: var(--color-accent-emphasis);
89
+
90
+ > .octicon {
91
+ color: inherit;
92
+ opacity: 1;
93
+ }
94
+
95
+ [class*='color-text-'] {
96
+ color: inherit !important;
97
+ }
98
+
99
+ > .Label {
100
+ color: inherit !important;
101
+ border-color: currentColor;
102
+ }
103
+ }
104
+
105
+ &.btn-link {
106
+ width: 100%;
107
+ text-align: left;
108
+ }
109
+ }
110
+
111
+ .dropdown-signout {
112
+ width: 100%;
113
+ text-align: left;
114
+ background: none;
115
+ border: 0;
116
+ }
117
+
118
+ .dropdown-divider {
119
+ display: block;
120
+ height: 0;
121
+ margin: $spacer-2 0;
122
+ border-top: $border-width $border-style var(--color-border-default);
123
+ }
124
+
125
+ .dropdown-header {
126
+ padding: $spacer-1 $spacer-3;
127
+ font-size: $h6-size;
128
+ color: var(--color-fg-muted);
129
+ }
130
+
131
+ .dropdown-item[aria-checked='false'] .octicon-check {
132
+ display: none;
133
+ }
134
+
135
+ // Directional classes
136
+ //
137
+ // Move the menu and the caret attached to it. Requires at least one of these on
138
+ // the `.dropdown-menu` element.
139
+
140
+ .dropdown-menu-w {
141
+ top: 0;
142
+ right: 100%;
143
+ left: auto;
144
+ width: auto;
145
+ margin-top: 0;
146
+ margin-right: $spacer-2;
147
+
148
+ &::before {
149
+ top: 10px;
150
+ right: -$spacer-3;
151
+ left: auto;
152
+ border-color: transparent;
153
+ border-left-color: var(--color-border-default);
154
+ }
155
+
156
+ &::after {
157
+ top: 11px;
158
+ right: -14px;
159
+ left: auto;
160
+ border-color: transparent;
161
+ border-left-color: var(--color-canvas-overlay);
162
+ }
163
+ }
164
+
165
+ .dropdown-menu-e {
166
+ top: 0;
167
+ left: 100%;
168
+ width: auto;
169
+ margin-top: 0;
170
+ margin-left: $spacer-2;
171
+
172
+ &::before {
173
+ top: 10px;
174
+ left: -$spacer-3;
175
+ border-color: transparent;
176
+ border-right-color: var(--color-border-default);
177
+ }
178
+
179
+ &::after {
180
+ top: 11px;
181
+ left: -14px;
182
+ border-color: transparent;
183
+ border-right-color: var(--color-canvas-overlay);
184
+ }
185
+ }
186
+
187
+ .dropdown-menu-ne {
188
+ top: auto;
189
+ bottom: 100%;
190
+ left: 0;
191
+ // stylelint-disable-next-line primer/spacing
192
+ margin-bottom: 3px;
193
+
194
+ &::before,
195
+ &::after {
196
+ top: auto;
197
+ right: auto;
198
+ }
199
+
200
+ &::before {
201
+ bottom: -$spacer-2;
202
+ left: 9px;
203
+ // stylelint-disable-next-line primer/borders
204
+ border-top: $spacer-2 $border-style var(--color-border-default);
205
+ // stylelint-disable-next-line primer/borders
206
+ border-right: $spacer-2 $border-style transparent;
207
+ border-bottom: 0;
208
+ // stylelint-disable-next-line primer/borders
209
+ border-left: $spacer-2 $border-style transparent;
210
+ }
211
+
212
+ &::after {
213
+ bottom: -7px;
214
+ left: 10px;
215
+ // stylelint-disable-next-line primer/borders
216
+ border-top: 7px $border-style var(--color-canvas-overlay);
217
+ // stylelint-disable-next-line primer/borders
218
+ border-right: 7px $border-style transparent;
219
+ border-bottom: 0;
220
+ // stylelint-disable-next-line primer/borders
221
+ border-left: 7px $border-style transparent;
222
+ }
223
+ }
224
+
225
+ .dropdown-menu-s {
226
+ right: 50%;
227
+ left: auto;
228
+ transform: translateX(50%);
229
+
230
+ &::before {
231
+ top: -$spacer-3;
232
+ right: 50%;
233
+ transform: translateX(50%);
234
+ }
235
+
236
+ &::after {
237
+ top: -14px;
238
+ right: 50%;
239
+ transform: translateX(50%);
240
+ }
241
+ }
242
+
243
+ .dropdown-menu-sw {
244
+ right: 0;
245
+ left: auto;
246
+
247
+ &::before {
248
+ top: -$spacer-3;
249
+ right: 9px;
250
+ left: auto;
251
+ }
252
+
253
+ &::after {
254
+ top: -14px;
255
+ right: 10px;
256
+ left: auto;
257
+ }
258
+ }
259
+
260
+ .dropdown-menu-se {
261
+ &::before {
262
+ top: -$spacer-3;
263
+ left: 9px;
264
+ }
265
+
266
+ &::after {
267
+ top: -14px;
268
+ left: 10px;
269
+ }
270
+ }
@@ -0,0 +1,2 @@
1
+ @import '../support/index.scss';
2
+ @import './dropdown.scss';
package/forms/README.md CHANGED
@@ -1,37 +1,25 @@
1
- # Primer Forms
1
+ ---
2
+ bundle: "forms"
3
+ generated: true
4
+ ---
2
5
 
3
- > Style individual form controls and utilize common layouts.
4
-
5
- This repository is a module of the full [primer][primer] repository.
6
+ # Primer CSS: `forms` bundle
6
7
 
7
8
  ## Usage
8
9
 
9
- The source files included are written in [Sass][sass] (`scss`) You can simply point your sass `include-path` at your `node_modules` directory and import it like this.
10
+ Primer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:
10
11
 
11
12
  ```scss
12
- @import "primer-forms/index.scss";
13
+ @import "@primer/css/forms/index.scss";
13
14
  ```
14
15
 
15
- You can also import specific portions of the module by importing those partials from the `/lib/` folder. _Make sure you import any requirements along with the modules._
16
-
17
16
  ## Build
18
17
 
19
- For a compiled **css** version of this module, a npm script is included that will output a css version to `build/build.css` The built css file is also included in the npm package.
20
-
21
- ```
22
- $ npm run build
23
- ```
24
-
25
- ## Documentation
26
-
27
- Find further documentation at [primer.style/css/components/forms](https://primer.style/css/components/forms).
18
+ The `@primer/css` npm package includes a standalone CSS build of this module in `dist/forms.css`.
28
19
 
29
20
  ## License
30
21
 
31
- [MIT](./LICENSE) © [GitHub](https://github.com/)
22
+ [MIT](https://github.com/primer/css/blob/main/LICENSE) © [GitHub](https://github.com/)
23
+
32
24
 
33
- [primer]: https://github.com/primer/css
34
- [docs]: https://primer.style/css
35
- [npm]: https://www.npmjs.com/
36
- [install-npm]: https://docs.npmjs.com/getting-started/installing-node
37
- [sass]: http://sass-lang.com/
25
+ [scss]: https://sass-lang.com/documentation/syntax#scss
@@ -17,57 +17,77 @@ label {
17
17
 
18
18
  .form-control,
19
19
  .form-select {
20
- min-height: 34px;
21
- padding: 6px $spacer-2;
22
- font-size: $h4-size;
20
+ // stylelint-disable-next-line primer/spacing
21
+ padding: 5px 12px;
22
+ font-size: $body-font-size;
23
+ // stylelint-disable-next-line primer/typography
23
24
  line-height: 20px;
24
- color: $text-gray-dark;
25
+ color: var(--color-fg-default);
25
26
  vertical-align: middle;
26
- background-color: $bg-white;
27
+ background-color: var(--color-canvas-default);
27
28
  background-repeat: no-repeat; // Repeat and position set for form states (success, error, etc)
28
29
  background-position: right 8px center; // For form validation. This keeps images 8px from right and centered vertically.
29
- border: 1px solid $border-gray-dark;
30
- border-radius: 3px;
31
- outline: none;
32
- box-shadow: $form-control-shadow;
33
-
34
- &.focus,
35
- &:focus {
36
- border-color: $blue-400;
37
- outline: none;
38
- box-shadow: $form-control-shadow, $btn-input-focus-shadow;
30
+ border: $border-width $border-style var(--color-border-default);
31
+ border-radius: $border-radius;
32
+ box-shadow: var(--color-primer-shadow-inset);
33
+
34
+ &[disabled] {
35
+ color: var(--color-primer-fg-disabled);
36
+ background-color: var(--color-input-disabled-bg);
37
+ border-color: var(--color-border-default);
38
+ -webkit-text-fill-color: var(--color-primer-fg-disabled); // Fix for Safari
39
+ opacity: 1; // Fix for Safari iOS
40
+
41
+ &::placeholder {
42
+ color: var(--color-primer-fg-disabled);
43
+ }
39
44
  }
40
45
 
41
- // Ensures inputs don't zoom on mobile but are body-font size on desktop
42
- @include breakpoint(md) {
43
- font-size: $body-font-size;
46
+ // Ensures inputs don't zoom on mobile iPhone but are body-font size on iPad
47
+ @supports (-webkit-touch-callout: none) {
48
+ font-size: $h4-size;
49
+ @include breakpoint(md) {
50
+ font-size: $body-font-size;
51
+ }
44
52
  }
45
53
  }
46
54
 
55
+ // Textarea
56
+ textarea.form-control {
57
+ padding-top: $spacer-2;
58
+ padding-bottom: $spacer-2;
59
+ line-height: $lh-default;
60
+ }
61
+
47
62
  // Inputs with contrast for easy light gray backgrounds against white.
48
63
  .input-contrast {
49
- background-color: $bg-gray-light;
64
+ background-color: var(--color-canvas-inset);
50
65
 
51
- &:focus { background-color: $bg-white; }
66
+ &:focus {
67
+ background-color: var(--color-canvas-default);
68
+ }
52
69
  }
53
70
 
54
71
  // Custom styling for HTML5 validation bubbles (WebKit only)
55
72
  ::placeholder {
56
- color: $text-gray-light;
73
+ color: var(--color-fg-subtle);
74
+ opacity: 1; // override opacity in normalize.css
57
75
  }
58
76
 
59
77
  // Mini inputs, to match .minibutton
60
78
  .input-sm {
61
- min-height: 28px;
79
+ min-height: $size-4;
80
+ // stylelint-disable-next-line primer/spacing
62
81
  padding-top: 3px;
82
+ // stylelint-disable-next-line primer/spacing
63
83
  padding-bottom: 3px;
64
84
  font-size: $font-size-small;
85
+ // stylelint-disable-next-line primer/typography
65
86
  line-height: 20px;
66
87
  }
67
88
 
68
89
  // Large inputs
69
90
  .input-lg {
70
- padding: $spacer-1 10px;
71
91
  font-size: $h4-size;
72
92
  }
73
93
 
@@ -97,7 +117,9 @@ label {
97
117
  //
98
118
  // For checkboxes and radio button selections.
99
119
  .form-checkbox {
120
+ // stylelint-disable-next-line primer/spacing
100
121
  padding-left: 20px;
122
+ // stylelint-disable-next-line primer/spacing
101
123
  margin: 15px 0;
102
124
  vertical-align: middle;
103
125
 
@@ -105,16 +127,18 @@ label {
105
127
  em.highlight {
106
128
  position: relative;
107
129
  left: -$spacer-1;
130
+ // stylelint-disable-next-line primer/spacing
108
131
  padding: 2px $spacer-1;
109
132
  font-style: normal;
110
- background: $yellow-100;
111
- border-radius: 3px;
133
+ background: var(--color-attention-subtle);
134
+ border-radius: $border-radius;
112
135
  }
113
136
  }
114
137
 
115
- input[type=checkbox],
116
- input[type=radio] {
138
+ input[type='checkbox'],
139
+ input[type='radio'] {
117
140
  float: left;
141
+ // stylelint-disable-next-line primer/spacing
118
142
  margin: 5px 0 0 -20px;
119
143
  vertical-align: middle;
120
144
  }
@@ -124,7 +148,7 @@ label {
124
148
  margin: 0;
125
149
  font-size: $font-size-small;
126
150
  font-weight: $font-weight-normal;
127
- color: $gray-600;
151
+ color: var(--color-fg-muted);
128
152
  }
129
153
  }
130
154
 
@@ -136,7 +160,7 @@ label {
136
160
  &:checked {
137
161
  // child of sibling or sibling
138
162
  ~ * .form-checkbox-details,
139
- ~ .form-checkbox-details { // eslint-disable selector-combinator-space-before
163
+ ~ .form-checkbox-details {
140
164
  display: block;
141
165
  }
142
166
  }
@@ -147,18 +171,22 @@ label {
147
171
  // Wrap field groups in `<div.hfields>` to lay them out horizontally - great for
148
172
  // the top of pages with autosave.
149
173
  .hfields {
174
+ // stylelint-disable-next-line primer/spacing
150
175
  margin: 15px 0;
151
176
  @include clearfix;
152
177
 
153
178
  .form-group {
154
179
  float: left;
180
+ // stylelint-disable-next-line primer/spacing
155
181
  margin: 0 30px 0 0;
156
182
 
157
- dt {
183
+ dt, // TODO: Deprecate
184
+ .form-group-header {
158
185
  label {
159
186
  display: inline-block;
187
+ // stylelint-disable-next-line primer/spacing
160
188
  margin: 5px 0 0;
161
- color: $gray-600;
189
+ color: var(--color-fg-muted);
162
190
  }
163
191
 
164
192
  img {
@@ -170,10 +198,14 @@ label {
170
198
 
171
199
  .btn {
172
200
  float: left;
201
+ // stylelint-disable-next-line primer/spacing
173
202
  margin: 28px 25px 0 -20px;
174
203
  }
175
204
 
176
- .form-select { margin-top: 5px; }
205
+ .form-select {
206
+ // stylelint-disable-next-line primer/spacing
207
+ margin-top: 5px;
208
+ }
177
209
  }
178
210
 
179
211
  // Hide the up/down buttons in <input type="number"> in the login form, the
@@ -194,6 +226,7 @@ input::-webkit-inner-spin-button {
194
226
  float: right;
195
227
 
196
228
  + .btn {
229
+ // stylelint-disable-next-line primer/spacing
197
230
  margin-right: 5px;
198
231
  }
199
232
  }
@@ -201,17 +234,20 @@ input::-webkit-inner-spin-button {
201
234
 
202
235
  .form-warning {
203
236
  padding: $spacer-2 10px;
237
+ // stylelint-disable-next-line primer/spacing
204
238
  margin: 10px 0;
205
239
  font-size: $h5-size;
206
- color: $yellow-900;
207
- background: $yellow-100;
208
- border: 1px solid $border-yellow;
209
- border-radius: 3px;
240
+ color: var(--color-attention-fg);
241
+ background: var(--color-attention-subtle);
242
+ border: $border-width $border-style var(--color-attention-emphasis);
243
+ border-radius: $border-radius;
210
244
 
211
245
  p {
212
246
  margin: 0;
213
247
  line-height: $lh-default;
214
248
  }
215
249
 
216
- a { font-weight: $font-weight-bold; }
250
+ a {
251
+ font-weight: $font-weight-bold;
252
+ }
217
253
  }