@primer/css 0.0.0-1ea75fe → 0.0.0-202110118627

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 +1225 -132
  2. package/CODE_OF_CONDUCT.md +1 -1
  3. package/CONTRIBUTING.md +85 -0
  4. package/DEVELOP.md +11 -69
  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 +444 -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 +5 -4
  28. package/base/index.scss +6 -4
  29. package/base/kbd.scss +20 -0
  30. package/base/normalize.scss +5 -5
  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 +243 -143
  48. package/buttons/index.scss +4 -3
  49. package/buttons/misc.scss +222 -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 +317 -274
  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 +272 -0
  225. package/dropdown/index.scss +2 -0
  226. package/forms/README.md +11 -23
  227. package/forms/form-control.scss +76 -32
  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 +2 -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 +44 -35
  284. package/navigation/sidenav.scss +108 -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 -107
  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 +9 -12
  313. package/support/mixins/typography.scss +1 -1
  314. package/support/variables/layout.scss +106 -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 +124 -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 +29 -65
  334. package/utilities/box-shadow.scss +8 -9
  335. package/utilities/colors.scss +71 -110
  336. package/utilities/details.scss +12 -4
  337. package/utilities/flexbox.scss +14 -14
  338. package/utilities/index.scss +12 -12
  339. package/utilities/layout.scss +28 -22
  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,272 @@
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
+ &:focus,
86
+ &:hover {
87
+ color: var(--color-fg-on-emphasis);
88
+ text-decoration: none;
89
+ background-color: var(--color-accent-emphasis);
90
+ outline: none;
91
+
92
+ > .octicon {
93
+ color: inherit;
94
+ opacity: 1;
95
+ }
96
+
97
+ [class*='color-text-'] {
98
+ color: inherit !important;
99
+ }
100
+
101
+ > .Label {
102
+ color: inherit !important;
103
+ border-color: currentColor;
104
+ }
105
+ }
106
+
107
+ &.btn-link {
108
+ width: 100%;
109
+ text-align: left;
110
+ }
111
+ }
112
+
113
+ .dropdown-signout {
114
+ width: 100%;
115
+ text-align: left;
116
+ background: none;
117
+ border: 0;
118
+ }
119
+
120
+ .dropdown-divider {
121
+ display: block;
122
+ height: 0;
123
+ margin: $spacer-2 0;
124
+ border-top: $border-width $border-style var(--color-border-default);
125
+ }
126
+
127
+ .dropdown-header {
128
+ padding: $spacer-1 $spacer-3;
129
+ font-size: $h6-size;
130
+ color: var(--color-fg-muted);
131
+ }
132
+
133
+ .dropdown-item[aria-checked='false'] .octicon-check {
134
+ display: none;
135
+ }
136
+
137
+ // Directional classes
138
+ //
139
+ // Move the menu and the caret attached to it. Requires at least one of these on
140
+ // the `.dropdown-menu` element.
141
+
142
+ .dropdown-menu-w {
143
+ top: 0;
144
+ right: 100%;
145
+ left: auto;
146
+ width: auto;
147
+ margin-top: 0;
148
+ margin-right: $spacer-2;
149
+
150
+ &::before {
151
+ top: 10px;
152
+ right: -$spacer-3;
153
+ left: auto;
154
+ border-color: transparent;
155
+ border-left-color: var(--color-border-default);
156
+ }
157
+
158
+ &::after {
159
+ top: 11px;
160
+ right: -14px;
161
+ left: auto;
162
+ border-color: transparent;
163
+ border-left-color: var(--color-canvas-overlay);
164
+ }
165
+ }
166
+
167
+ .dropdown-menu-e {
168
+ top: 0;
169
+ left: 100%;
170
+ width: auto;
171
+ margin-top: 0;
172
+ margin-left: $spacer-2;
173
+
174
+ &::before {
175
+ top: 10px;
176
+ left: -$spacer-3;
177
+ border-color: transparent;
178
+ border-right-color: var(--color-border-default);
179
+ }
180
+
181
+ &::after {
182
+ top: 11px;
183
+ left: -14px;
184
+ border-color: transparent;
185
+ border-right-color: var(--color-canvas-overlay);
186
+ }
187
+ }
188
+
189
+ .dropdown-menu-ne {
190
+ top: auto;
191
+ bottom: 100%;
192
+ left: 0;
193
+ // stylelint-disable-next-line primer/spacing
194
+ margin-bottom: 3px;
195
+
196
+ &::before,
197
+ &::after {
198
+ top: auto;
199
+ right: auto;
200
+ }
201
+
202
+ &::before {
203
+ bottom: -$spacer-2;
204
+ left: 9px;
205
+ // stylelint-disable-next-line primer/borders
206
+ border-top: $spacer-2 $border-style var(--color-border-default);
207
+ // stylelint-disable-next-line primer/borders
208
+ border-right: $spacer-2 $border-style transparent;
209
+ border-bottom: 0;
210
+ // stylelint-disable-next-line primer/borders
211
+ border-left: $spacer-2 $border-style transparent;
212
+ }
213
+
214
+ &::after {
215
+ bottom: -7px;
216
+ left: 10px;
217
+ // stylelint-disable-next-line primer/borders
218
+ border-top: 7px $border-style var(--color-canvas-overlay);
219
+ // stylelint-disable-next-line primer/borders
220
+ border-right: 7px $border-style transparent;
221
+ border-bottom: 0;
222
+ // stylelint-disable-next-line primer/borders
223
+ border-left: 7px $border-style transparent;
224
+ }
225
+ }
226
+
227
+ .dropdown-menu-s {
228
+ right: 50%;
229
+ left: auto;
230
+ transform: translateX(50%);
231
+
232
+ &::before {
233
+ top: -$spacer-3;
234
+ right: 50%;
235
+ transform: translateX(50%);
236
+ }
237
+
238
+ &::after {
239
+ top: -14px;
240
+ right: 50%;
241
+ transform: translateX(50%);
242
+ }
243
+ }
244
+
245
+ .dropdown-menu-sw {
246
+ right: 0;
247
+ left: auto;
248
+
249
+ &::before {
250
+ top: -$spacer-3;
251
+ right: 9px;
252
+ left: auto;
253
+ }
254
+
255
+ &::after {
256
+ top: -14px;
257
+ right: 10px;
258
+ left: auto;
259
+ }
260
+ }
261
+
262
+ .dropdown-menu-se {
263
+ &::before {
264
+ top: -$spacer-3;
265
+ left: 9px;
266
+ }
267
+
268
+ &::after {
269
+ top: -14px;
270
+ left: 10px;
271
+ }
272
+ }
@@ -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,85 @@ 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;
30
+ border: $border-width $border-style var(--color-border-default);
31
+ border-radius: $border-radius;
31
32
  outline: none;
32
- box-shadow: $form-control-shadow;
33
+ box-shadow: var(--color-primer-shadow-inset);
33
34
 
34
35
  &.focus,
35
36
  &:focus {
36
- border-color: $blue-400;
37
+ border-color: var(--color-accent-emphasis);
37
38
  outline: none;
38
- box-shadow: $form-control-shadow, $btn-input-focus-shadow;
39
+ box-shadow: var(--color-primer-shadow-focus);
40
+ }
41
+
42
+ &[disabled] {
43
+ color: var(--color-primer-fg-disabled);
44
+ background-color: var(--color-input-disabled-bg);
45
+ border-color: var(--color-border-default);
46
+ -webkit-text-fill-color: var(--color-primer-fg-disabled); // Fix for Safari
47
+ opacity: 1; // Fix for Safari iOS
48
+
49
+ &::placeholder {
50
+ color: var(--color-primer-fg-disabled);
51
+ }
39
52
  }
40
53
 
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;
54
+ // Ensures inputs don't zoom on mobile iPhone but are body-font size on iPad
55
+ @supports (-webkit-touch-callout: none) {
56
+ font-size: $h4-size;
57
+ @include breakpoint(md) {
58
+ font-size: $body-font-size;
59
+ }
44
60
  }
45
61
  }
46
62
 
63
+ // Textarea
64
+ textarea.form-control {
65
+ padding-top: $spacer-2;
66
+ padding-bottom: $spacer-2;
67
+ line-height: $lh-default;
68
+ }
69
+
47
70
  // Inputs with contrast for easy light gray backgrounds against white.
48
71
  .input-contrast {
49
- background-color: $bg-gray-light;
72
+ background-color: var(--color-canvas-inset);
50
73
 
51
- &:focus { background-color: $bg-white; }
74
+ &:focus {
75
+ background-color: var(--color-canvas-default);
76
+ }
52
77
  }
53
78
 
54
79
  // Custom styling for HTML5 validation bubbles (WebKit only)
55
80
  ::placeholder {
56
- color: $text-gray-light;
81
+ color: var(--color-fg-subtle);
82
+ opacity: 1; // override opacity in normalize.css
57
83
  }
58
84
 
59
85
  // Mini inputs, to match .minibutton
60
86
  .input-sm {
61
- min-height: 28px;
87
+ min-height: $size-4;
88
+ // stylelint-disable-next-line primer/spacing
62
89
  padding-top: 3px;
90
+ // stylelint-disable-next-line primer/spacing
63
91
  padding-bottom: 3px;
64
92
  font-size: $font-size-small;
93
+ // stylelint-disable-next-line primer/typography
65
94
  line-height: 20px;
66
95
  }
67
96
 
68
97
  // Large inputs
69
98
  .input-lg {
70
- padding: $spacer-1 10px;
71
99
  font-size: $h4-size;
72
100
  }
73
101
 
@@ -97,7 +125,9 @@ label {
97
125
  //
98
126
  // For checkboxes and radio button selections.
99
127
  .form-checkbox {
128
+ // stylelint-disable-next-line primer/spacing
100
129
  padding-left: 20px;
130
+ // stylelint-disable-next-line primer/spacing
101
131
  margin: 15px 0;
102
132
  vertical-align: middle;
103
133
 
@@ -105,16 +135,18 @@ label {
105
135
  em.highlight {
106
136
  position: relative;
107
137
  left: -$spacer-1;
138
+ // stylelint-disable-next-line primer/spacing
108
139
  padding: 2px $spacer-1;
109
140
  font-style: normal;
110
- background: $yellow-100;
111
- border-radius: 3px;
141
+ background: var(--color-attention-subtle);
142
+ border-radius: $border-radius;
112
143
  }
113
144
  }
114
145
 
115
- input[type=checkbox],
116
- input[type=radio] {
146
+ input[type='checkbox'],
147
+ input[type='radio'] {
117
148
  float: left;
149
+ // stylelint-disable-next-line primer/spacing
118
150
  margin: 5px 0 0 -20px;
119
151
  vertical-align: middle;
120
152
  }
@@ -124,7 +156,7 @@ label {
124
156
  margin: 0;
125
157
  font-size: $font-size-small;
126
158
  font-weight: $font-weight-normal;
127
- color: $gray-600;
159
+ color: var(--color-fg-muted);
128
160
  }
129
161
  }
130
162
 
@@ -136,7 +168,7 @@ label {
136
168
  &:checked {
137
169
  // child of sibling or sibling
138
170
  ~ * .form-checkbox-details,
139
- ~ .form-checkbox-details { // eslint-disable selector-combinator-space-before
171
+ ~ .form-checkbox-details {
140
172
  display: block;
141
173
  }
142
174
  }
@@ -147,18 +179,22 @@ label {
147
179
  // Wrap field groups in `<div.hfields>` to lay them out horizontally - great for
148
180
  // the top of pages with autosave.
149
181
  .hfields {
182
+ // stylelint-disable-next-line primer/spacing
150
183
  margin: 15px 0;
151
184
  @include clearfix;
152
185
 
153
186
  .form-group {
154
187
  float: left;
188
+ // stylelint-disable-next-line primer/spacing
155
189
  margin: 0 30px 0 0;
156
190
 
157
- dt {
191
+ dt, // TODO: Deprecate
192
+ .form-group-header {
158
193
  label {
159
194
  display: inline-block;
195
+ // stylelint-disable-next-line primer/spacing
160
196
  margin: 5px 0 0;
161
- color: $gray-600;
197
+ color: var(--color-fg-muted);
162
198
  }
163
199
 
164
200
  img {
@@ -170,10 +206,14 @@ label {
170
206
 
171
207
  .btn {
172
208
  float: left;
209
+ // stylelint-disable-next-line primer/spacing
173
210
  margin: 28px 25px 0 -20px;
174
211
  }
175
212
 
176
- .form-select { margin-top: 5px; }
213
+ .form-select {
214
+ // stylelint-disable-next-line primer/spacing
215
+ margin-top: 5px;
216
+ }
177
217
  }
178
218
 
179
219
  // Hide the up/down buttons in <input type="number"> in the login form, the
@@ -194,6 +234,7 @@ input::-webkit-inner-spin-button {
194
234
  float: right;
195
235
 
196
236
  + .btn {
237
+ // stylelint-disable-next-line primer/spacing
197
238
  margin-right: 5px;
198
239
  }
199
240
  }
@@ -201,17 +242,20 @@ input::-webkit-inner-spin-button {
201
242
 
202
243
  .form-warning {
203
244
  padding: $spacer-2 10px;
245
+ // stylelint-disable-next-line primer/spacing
204
246
  margin: 10px 0;
205
247
  font-size: $h5-size;
206
- color: $yellow-900;
207
- background: $yellow-100;
208
- border: 1px solid $border-yellow;
209
- border-radius: 3px;
248
+ color: var(--color-attention-fg);
249
+ background: var(--color-attention-subtle);
250
+ border: $border-width $border-style var(--color-attention-emphasis);
251
+ border-radius: $border-radius;
210
252
 
211
253
  p {
212
254
  margin: 0;
213
255
  line-height: $lh-default;
214
256
  }
215
257
 
216
- a { font-weight: $font-weight-bold; }
258
+ a {
259
+ font-weight: $font-weight-bold;
260
+ }
217
261
  }