@primer/brand-css 0.0.0-20250212132611

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 (75) hide show
  1. package/components/Accordion/Accordion.css +305 -0
  2. package/components/ActionMenu/ActionMenu.css +187 -0
  3. package/components/AnchorNav/AnchorNav.css +427 -0
  4. package/components/Avatar/Avatar.css +115 -0
  5. package/components/Bento/Bento.css +2157 -0
  6. package/components/Box/Box.css +2795 -0
  7. package/components/Box/Box.features.css +48 -0
  8. package/components/Breadcrumbs/Breadcrumbs.css +81 -0
  9. package/components/BreakoutBanner/BreakoutBanner.css +109 -0
  10. package/components/Button/Button.css +207 -0
  11. package/components/ButtonGroup/ButtonGroup.css +10 -0
  12. package/components/CTABanner/CTABanner.css +104 -0
  13. package/components/CTAForm/CTAForm.css +48 -0
  14. package/components/Card/Card.css +183 -0
  15. package/components/ComparisonTable/ComparisonTable.css +290 -0
  16. package/components/ExpandableArrow/ExpandableArrow.css +26 -0
  17. package/components/EyebrowBanner/EyebrowBanner.css +320 -0
  18. package/components/FAQ/FAQ.css +51 -0
  19. package/components/FAQ/FAQGroup.css +51 -0
  20. package/components/Footnotes/Footnotes.css +35 -0
  21. package/components/FrostedGlassVFX/FrostedGlassVFX.css +50 -0
  22. package/components/Grid/Grid.css +741 -0
  23. package/components/Heading/Heading.css +284 -0
  24. package/components/Hero/Hero.css +87 -0
  25. package/components/IDE/IDE.css +392 -0
  26. package/components/Icon/Icon.css +121 -0
  27. package/components/Image/Image.css +54 -0
  28. package/components/InlineLink/InlineLink.css +30 -0
  29. package/components/Label/Label.css +167 -0
  30. package/components/Link/Link.css +84 -0
  31. package/components/LogoSuite/LogoSuite.css +165 -0
  32. package/components/MinimalFooter/MinimalFooter.css +116 -0
  33. package/components/MonaSans/MonaSans.css +4 -0
  34. package/components/Pagination/Pagination.css +117 -0
  35. package/components/Pillar/Pillar.css +106 -0
  36. package/components/PricingOptions/PricingOptions.css +357 -0
  37. package/components/Prose/Prose.css +332 -0
  38. package/components/Section/Section.css +156 -0
  39. package/components/Section/Section.features.css +33 -0
  40. package/components/SectionIntro/SectionIntro.css +48 -0
  41. package/components/Stack/Stack.css +793 -0
  42. package/components/Statistic/Statistic.css +91 -0
  43. package/components/SubNav/SubNav.css +678 -0
  44. package/components/SubdomainNavBar/SubdomainNavBar.css +728 -0
  45. package/components/Testimonial/Testimonial.css +228 -0
  46. package/components/Text/Text.css +195 -0
  47. package/components/Timeline/Timeline.css +79 -0
  48. package/components/Tooltip/Tooltip.css +170 -0
  49. package/components/VideoPlayer/VideoPlayer.css +348 -0
  50. package/components/VideoPlayer/components/Captions/Captions.css +17 -0
  51. package/components/VideoPlayer/components/VolumeControl/VolumeControl.css +3 -0
  52. package/components/animation/Animation.css +192 -0
  53. package/components/animation/TextRevealAnimation/TextRevealAnimation.css +38 -0
  54. package/components/forms/Checkbox/Checkbox.css +88 -0
  55. package/components/forms/ControlGroup/ControlGroup.css +59 -0
  56. package/components/forms/FormControl/FormControl.css +113 -0
  57. package/components/forms/Radio/Radio.css +111 -0
  58. package/components/forms/Select/Select.css +143 -0
  59. package/components/forms/TextInput/TextInput.css +266 -0
  60. package/components/forms/Textarea/Textarea.css +129 -0
  61. package/components/list/ListItem/ListItem.css +29 -0
  62. package/components/list/OrderedList/OrderedList.css +3 -0
  63. package/components/list/list-shared.css +10 -0
  64. package/components/recipes/FeaturePreviewLPs/FeaturePreviewLevelOne/FeaturePreviewLevelOne.css +204 -0
  65. package/components/recipes/FeaturePreviewLPs/FeaturePreviewLevelTwo/FeaturePreviewLevelTwo.css +57 -0
  66. package/components/recipes/FeaturePreviewLPs/FeaturePreviewLevelZero/FeaturePreviewLevelZero.css +3 -0
  67. package/components/recipes/SolutionTemplates/CategoryPage/CategoryPage.css +83 -0
  68. package/components/recipes/SolutionTemplates/SolutionPage/SolutionPage.css +119 -0
  69. package/components/recipes/SolutionTemplates/SolutionsOverview/SolutionsOverview.css +35 -0
  70. package/components/recipes/SolutionTemplates/parallax.css +165 -0
  71. package/components/recipes/seo/Article/Article.css +289 -0
  72. package/components/recipes/seo/Category/CategoryPage.css +43 -0
  73. package/components/river/RiverStoryScroll/RiverStoryScroll.css +470 -0
  74. package/components/river/river-shared.css +205 -0
  75. package/package.json +42 -0
@@ -0,0 +1,427 @@
1
+ /*
2
+ * AnchorNav
3
+ *
4
+ * 1. Globals
5
+ * 2. AnchorNav root and inner bounding containers
6
+ * 3. AnchorNav links
7
+ * 4. AnchorNav link labels
8
+ * 5. AnchorNav menu toggle button (narrow)
9
+ * 6. AnchorNav action
10
+ * 7. Custom animations
11
+ */
12
+
13
+ /*
14
+ * 1. Globals
15
+ * TODO: Move into global reset
16
+ */
17
+ :global(html) {
18
+ scroll-behavior: smooth;
19
+ }
20
+
21
+ @media screen and (prefers-reduced-motion: reduce) {
22
+ :global(html) {
23
+ scroll-behavior: auto;
24
+ }
25
+ }
26
+
27
+ :global(.AnchorNav--no-bg-scroll) {
28
+ overflow: hidden;
29
+ height: 100vh;
30
+ }
31
+
32
+ /*
33
+ * 2. AnchorNav root and inner bounding containers
34
+ */
35
+ .AnchorNav {
36
+ display: flex;
37
+ position: sticky;
38
+ top: 0;
39
+ left: 0;
40
+ right: 0;
41
+ padding: var(--base-size-12) var(--base-size-16);
42
+ z-index: 91; /* must be higher than subdomain nav bar */
43
+ }
44
+
45
+ .AnchorNav--hide-until-sticky:not(.AnchorNav--stuck) {
46
+ opacity: 0;
47
+ visibility: hidden;
48
+ transition: visibility var(--brand-animation-duration-default) var(--brand-animation-easing-default),
49
+ opacity var(--brand-animation-duration-default) var(--brand-animation-easing-default);
50
+ }
51
+
52
+ .AnchorNav--hide-until-sticky.AnchorNav--stuck {
53
+ opacity: 1;
54
+ visibility: visible;
55
+ }
56
+
57
+ .AnchorNav--with-default-background-color {
58
+ background-color: var(--brand-color-canvas-default);
59
+ }
60
+
61
+ .AnchorNav--stuck {
62
+ box-shadow: 0 3px 6px rgba(140, 149, 159, 0.15), 0 1px 1px rgba(0, 0, 0, 0.1); /* TODO: replace with a global token */
63
+ position: fixed;
64
+ }
65
+
66
+ .AnchorNav--expanded {
67
+ transform-style: preserve-3d;
68
+ z-index: 91;
69
+ }
70
+
71
+ .AnchorNav-link-container {
72
+ display: flex;
73
+ width: 100%;
74
+ position: relative;
75
+ }
76
+
77
+ .AnchorNav-inner-container {
78
+ max-width: 1280px;
79
+ width: 100%;
80
+ position: relative;
81
+ z-index: 91; /* must be higher than subdomain nav bar */
82
+ max-height: calc(100vh - var(--base-size-12) * 2);
83
+ }
84
+
85
+ .AnchorNav--with-default-background-color .AnchorNav-inner-container {
86
+ background-color: var(--brand-color-canvas-default);
87
+ }
88
+
89
+ /* Up to large breakpoint */
90
+ @media screen and (max-width: 63.25rem) {
91
+ .AnchorNav:not(.AnchorNav--expanded) .AnchorNav-inner-container {
92
+ display: flex;
93
+ align-items: center;
94
+ justify-content: space-between;
95
+ }
96
+
97
+ .AnchorNav {
98
+ background-color: var(--brand-color-canvas-default);
99
+ }
100
+
101
+ .AnchorNav-inner-container--expanded {
102
+ height: auto;
103
+ }
104
+
105
+ .AnchorNav-link-container {
106
+ display: none;
107
+ padding-left: var(--base-size-16);
108
+ }
109
+
110
+ .AnchorNav--expanded .AnchorNav-link-container {
111
+ display: flex;
112
+ flex-direction: column;
113
+ }
114
+ }
115
+
116
+ @media screen and (min-width: 40rem) and (max-width: 63.25rem) {
117
+ .AnchorNav__actionsContainer:not(.AnchorNav__actionsContainer--no-offset) {
118
+ position: absolute;
119
+ top: var(--base-size-8);
120
+ right: 0;
121
+ }
122
+ }
123
+
124
+ /* Large breakpoint and up */
125
+ @media screen and (min-width: 63.25rem) {
126
+ .AnchorNav {
127
+ padding: var(--base-size-12) var(--base-size-40);
128
+ height: 75px; /* same as subdomain nav bar */
129
+ }
130
+
131
+ .AnchorNav--with-default-background-color {
132
+ background-color: var(--brand-color-canvas-default);
133
+ }
134
+
135
+ .AnchorNav--stuck {
136
+ background-color: var(--brand-color-canvas-default);
137
+ }
138
+ .AnchorNav-inner-container {
139
+ margin: 0 auto;
140
+ display: flex;
141
+ align-items: center;
142
+ }
143
+ }
144
+
145
+ /*
146
+ * 3. AnchorNav links
147
+ */
148
+ .AnchorNav-link {
149
+ display: flex;
150
+ width: 100%;
151
+ text-decoration: none;
152
+ height: 48px;
153
+ align-items: center;
154
+ justify-items: flex-start;
155
+ }
156
+
157
+ .AnchorNav-link:hover {
158
+ text-decoration: none;
159
+ }
160
+
161
+ .AnchorNav--expanded .AnchorNav-link {
162
+ margin: 0 0 2px; /* allow space for focus border */
163
+ animation: fade-in 1s;
164
+ animation-timing-function: var(--brand-animation-easing-glide);
165
+ }
166
+
167
+ /* Up to large breakpoint */
168
+ @media screen and (max-width: 63.25rem) {
169
+ .AnchorNav-link {
170
+ position: absolute;
171
+ left: 0;
172
+ padding: 0 0 0 var(--base-size-16);
173
+ }
174
+
175
+ .AnchorNav-link::before {
176
+ content: '';
177
+ position: absolute;
178
+ left: 0;
179
+ width: 2px;
180
+ height: 50%;
181
+ background-color: var(--brand-AnchorNav-link-underline-default);
182
+ transition: opacity var(--brand-animation-duration-fast), transform var(--brand-animation-duration-fast);
183
+ opacity: 1;
184
+ transform: scale(0);
185
+ transform-origin: left;
186
+ }
187
+
188
+ .AnchorNav--expanded .AnchorNav-link--is-active::before {
189
+ transform: scale(1);
190
+ }
191
+ }
192
+
193
+ /* Large breakpoint and up */
194
+ @media screen and (min-width: 63.25rem) {
195
+ .AnchorNav-link {
196
+ position: relative;
197
+ margin: 0 1px; /* to provide space for focus border */
198
+ }
199
+
200
+ .AnchorNav-link--center {
201
+ justify-content: center;
202
+ }
203
+
204
+ .AnchorNav-link--start {
205
+ justify-content: flex-start;
206
+ width: auto;
207
+ margin-right: var(--base-size-48);
208
+ }
209
+ }
210
+
211
+ /*
212
+ * 4. AnchorNav link labels
213
+ */
214
+ .AnchorNav-link-label {
215
+ font-weight: var(--brand-text-weight-400);
216
+ font-size: var(--brand-text-size-200);
217
+ line-height: var(--brand-text-lineHeight-200);
218
+ font-family: var(--brand-heading-fontFamily);
219
+ letter-spacing: var(--brand-heading-letterSpacing-200);
220
+ color: var(--brand-color-text-default);
221
+ transition: color var(--brand-animation-easing-glide) var(--brand-animation-duration-faster);
222
+ position: relative;
223
+ }
224
+
225
+ .AnchorNav--with-default-background-color .AnchorNav-link-label {
226
+ background-color: var(--brand-color-canvas-default);
227
+ }
228
+
229
+ /* Up to large breakpoint */
230
+ @media screen and (max-width: 63.25rem) {
231
+ .AnchorNav-link-label {
232
+ background-color: var(--brand-color-canvas-default);
233
+ }
234
+
235
+ .AnchorNav--expanded .AnchorNav-link-label--is-active {
236
+ color: var(--brand-color-focus);
237
+ }
238
+
239
+ .AnchorNav-link:not(.AnchorNav-link[data-active='true']) {
240
+ visibility: hidden;
241
+ }
242
+
243
+ .AnchorNav--stuck .AnchorNav-link[data-active='false'][data-first='true'] {
244
+ visibility: visible;
245
+ }
246
+
247
+ .AnchorNav .AnchorNav-link[data-active='false'][data-first='true'] {
248
+ visibility: visible;
249
+ }
250
+
251
+ .AnchorNav-inner-container--expanded .AnchorNav-link {
252
+ visibility: visible !important;
253
+ display: flex;
254
+ position: relative;
255
+ left: auto;
256
+ right: auto;
257
+ top: auto;
258
+ flex-direction: column;
259
+ text-align: left;
260
+ justify-content: center;
261
+ align-items: flex-start;
262
+ }
263
+ }
264
+
265
+ /* Large breakpoint and up */
266
+ @media screen and (min-width: 63.25rem) {
267
+ .AnchorNav-link-label {
268
+ white-space: nowrap;
269
+ }
270
+
271
+ .AnchorNav-link-label::after {
272
+ content: '';
273
+ position: absolute;
274
+ bottom: -6px;
275
+ left: 0;
276
+ width: 100%;
277
+ height: 2px;
278
+ background-color: var(--brand-AnchorNav-link-underline-default);
279
+ transition: opacity var(--brand-animation-duration-fast), transform var(--brand-animation-duration-fast),
280
+ background-color var(--brand-animation-duration-fast);
281
+ opacity: 1;
282
+ transform: scale(0);
283
+ transform-origin: center;
284
+ }
285
+
286
+ .AnchorNav-link:hover .AnchorNav-link-label::after,
287
+ .AnchorNav-link:focus .AnchorNav-link-label::after,
288
+ .AnchorNav-link[data-active='true'] .AnchorNav-link-label::after {
289
+ opacity: 1;
290
+ transform: translate3d(0, 0.2em, 0);
291
+ transform: scale(0.8, 1);
292
+ }
293
+
294
+ .AnchorNav-link:active .AnchorNav-link-label::after {
295
+ background-color: var(--brand-AnchorNav-link-underline-pressed);
296
+ transform: scale(0.9, 1);
297
+ }
298
+
299
+ .AnchorNav-link[data-active='true'] .AnchorNav-link-label::after {
300
+ background-color: var(--brand-AnchorNav-link-underline-pressed);
301
+ opacity: 1;
302
+ }
303
+
304
+ .AnchorNav-link:focus-visible .AnchorNav-link-label::after {
305
+ opacity: 0;
306
+ }
307
+ }
308
+
309
+ /*
310
+ * 5. AnchorNav menu toggle button (narrow)
311
+ */
312
+ .AnchorNav-menu-button {
313
+ display: none;
314
+ }
315
+
316
+ /* Up to large breakpoint */
317
+ @media screen and (max-width: 63.25rem) {
318
+ .AnchorNav-menu-button {
319
+ all: unset;
320
+ display: inline-flex;
321
+ cursor: pointer;
322
+ padding: var(--base-size-8) var(--base-size-16);
323
+ padding-left: 0; /* space for focus */
324
+ align-items: center;
325
+ height: var(--base-size-32);
326
+ z-index: 2;
327
+ border-radius: var(--brand-borderRadius-small);
328
+ }
329
+
330
+ .AnchorNav-menu-button-arrow {
331
+ padding: 0 calc(var(--base-size-12) / 2);
332
+ width: 32px;
333
+ height: 32px;
334
+ color: var(--brand-color-text-default);
335
+ }
336
+
337
+ .AnchorNav-menu-button:focus-visible {
338
+ border-color: var(--brand-color-focus);
339
+ outline: none;
340
+ box-shadow: 0 0 0 2px var(--brand-color-focus);
341
+ }
342
+
343
+ .AnchorNav-overlay--expanded {
344
+ position: absolute;
345
+ top: 0;
346
+ left: 0;
347
+ right: 0;
348
+ z-index: -3;
349
+ width: 100%;
350
+ height: 100vh; /* Keep as fallback */
351
+ height: 100dvh;
352
+ /* replace with overlay-backdrop-bgColor */
353
+ background: #00000080;
354
+ transform: translateZ(-1px);
355
+ animation: fade-in 0.5s;
356
+ animation-timing-function: var(--brand-animation-easing-glide);
357
+ cursor: pointer;
358
+ }
359
+ }
360
+
361
+ /*
362
+ * 6. AnchorNav action
363
+ */
364
+
365
+ .AnchorNav__actionsContainer {
366
+ display: flex;
367
+ gap: var(--base-size-8);
368
+ }
369
+
370
+ .AnchorNav-action {
371
+ z-index: 1;
372
+ display: flex;
373
+ margin-left: auto;
374
+ white-space: nowrap;
375
+ padding-inline: var(--base-size-24);
376
+ }
377
+
378
+ .AnchorNav--expanded .AnchorNav-action {
379
+ align-self: flex-start;
380
+ }
381
+
382
+ @media screen and (max-width: 40rem) {
383
+ .AnchorNav {
384
+ padding: 0;
385
+ }
386
+
387
+ .AnchorNav-action {
388
+ display: none;
389
+ }
390
+
391
+ .AnchorNav__actionsContainer {
392
+ flex-direction: column;
393
+ }
394
+
395
+ .AnchorNav--expanded .AnchorNav-action {
396
+ display: flex;
397
+ width: 100%;
398
+ margin-top: var(--base-size-8);
399
+ }
400
+
401
+ .AnchorNav-inner-container {
402
+ overflow-y: auto;
403
+ padding: var(--base-size-12) var(--base-size-16);
404
+ }
405
+ }
406
+
407
+ @media screen and (min-width: 40rem) {
408
+ .AnchorNav__actionsContainer {
409
+ gap: var(--base-size-16);
410
+ }
411
+
412
+ .AnchorNav__actionsContainer--multiple {
413
+ margin-inline-start: var(--base-size-16);
414
+ }
415
+ }
416
+
417
+ /*
418
+ * 7. Custom animations
419
+ */
420
+ @keyframes fade-in {
421
+ 0% {
422
+ opacity: 0;
423
+ }
424
+ 100% {
425
+ opacity: 1;
426
+ }
427
+ }
@@ -0,0 +1,115 @@
1
+ .Avatar {
2
+ display: inline-block;
3
+ overflow: hidden;
4
+ width: var(--base-size-40);
5
+ height: var(--base-size-40);
6
+ }
7
+
8
+ .Avatar--shape-circle {
9
+ border-radius: var(--brand-borderRadius-full);
10
+ }
11
+
12
+ .Avatar--shape-square {
13
+ border-radius: var(--brand-borderRadius-medium);
14
+ }
15
+
16
+ .Avatar__image {
17
+ width: 100%;
18
+ height: 100%;
19
+ -o-object-fit: cover;
20
+ object-fit: cover;
21
+ }
22
+
23
+ .Avatar--size-32 {
24
+ width: var(--base-size-32);
25
+ height: var(--base-size-32);
26
+ }
27
+
28
+ .Avatar--size-40 {
29
+ width: var(--base-size-40);
30
+ height: var(--base-size-40);
31
+ }
32
+
33
+ .Avatar--size-48 {
34
+ width: var(--base-size-48);
35
+ height: var(--base-size-48);
36
+ }
37
+
38
+ .Avatar--size-64 {
39
+ width: var(--base-size-64);
40
+ height: var(--base-size-64);
41
+ }
42
+
43
+ .Avatar--size-80 {
44
+ width: var(--base-size-80);
45
+ height: var(--base-size-80);
46
+ }
47
+
48
+ .Avatar-narrow--size-32 {
49
+ width: var(--base-size-32);
50
+ height: var(--base-size-32);
51
+ }
52
+
53
+ .Avatar-narrow--size-40 {
54
+ width: var(--base-size-40);
55
+ height: var(--base-size-40);
56
+ }
57
+
58
+ .Avatar-narrow--size-48 {
59
+ width: var(--base-size-48);
60
+ height: var(--base-size-48);
61
+ }
62
+
63
+ @media screen and (min-width: 48rem) {
64
+ .Avatar-regular--size-32 {
65
+ width: var(--base-size-32);
66
+ height: var(--base-size-32);
67
+ }
68
+
69
+ .Avatar-regular--size-40 {
70
+ width: var(--base-size-40);
71
+ height: var(--base-size-40);
72
+ }
73
+
74
+ .Avatar-regular--size-48 {
75
+ width: var(--base-size-48);
76
+ height: var(--base-size-48);
77
+ }
78
+
79
+ .Avatar-regular--size-64 {
80
+ width: var(--base-size-64);
81
+ height: var(--base-size-64);
82
+ }
83
+
84
+ .Avatar-regular--size-80 {
85
+ width: var(--base-size-80);
86
+ height: var(--base-size-80);
87
+ }
88
+ }
89
+
90
+ @media screen and (min-width: 80rem) {
91
+ .Avatar-wide--size-32 {
92
+ width: var(--base-size-32);
93
+ height: var(--base-size-32);
94
+ }
95
+
96
+ .Avatar-wide--size-40 {
97
+ width: var(--base-size-40);
98
+ height: var(--base-size-40);
99
+ }
100
+
101
+ .Avatar-wide--size-48 {
102
+ width: var(--base-size-48);
103
+ height: var(--base-size-48);
104
+ }
105
+
106
+ .Avatar-wide--size-64 {
107
+ width: var(--base-size-64);
108
+ height: var(--base-size-64);
109
+ }
110
+
111
+ .Avatar-wide--size-80 {
112
+ width: var(--base-size-80);
113
+ height: var(--base-size-80);
114
+ }
115
+ }