@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,470 @@
1
+ .RiverStoryScroll {
2
+ --ease: cubic-bezier(0.22, 0.56, 0.23, 0.89);
3
+ -webkit-font-smoothing: antialiased;
4
+ --stackDistance: calc(var(--base-size-24) * -1);
5
+
6
+ /* River visual (videos)
7
+ * UL = unit-less, needed for division in certain scenarios
8
+ */
9
+ --visualMaxWidth: 1032px;
10
+ --visualMaxWidthUL: 1032;
11
+ --visualMaxHeight: min(690px, 60vh);
12
+ --visualMaxHeightUL: 690;
13
+ --storyScrollPadding: min(32px, 5vw);
14
+ position: relative;
15
+ }
16
+ @media (max-height: 720px) {
17
+ .RiverStoryScroll {
18
+ --visualMaxHeight: 55vh;
19
+ }
20
+ }
21
+
22
+ @media (max-height: 600px) {
23
+ .RiverStoryScroll {
24
+ --visualMaxHeight: 50vh;
25
+ }
26
+ }
27
+
28
+ @media (max-height: 500px) {
29
+ .RiverStoryScroll {
30
+ --visualMaxHeight: 40vh;
31
+ }
32
+ }
33
+
34
+ .RiverStoryScroll__inner {
35
+ position: relative;
36
+ }
37
+
38
+ .RiverStoryScroll__visual-cover {
39
+ position: absolute;
40
+ left: 0;
41
+ width: 100%;
42
+ }
43
+
44
+ .RiverStoryScroll__image {
45
+ margin-left: auto;
46
+ margin-right: auto;
47
+ width: auto;
48
+ z-index: 10;
49
+ position: relative;
50
+ border-radius: var(--brand-borderRadius-large);
51
+ }
52
+
53
+ .RiverStoryScroll--enabled .RiverStoryScroll__internal-river {
54
+ grid-template-columns: 1fr;
55
+ gap: 0;
56
+ }
57
+
58
+ .RiverStoryScroll--enabled .RiverStoryScroll__internal-river img,
59
+ .RiverStoryScroll--enabled .RiverStoryScroll__internal-river video {
60
+ display: none;
61
+ }
62
+
63
+ @media (max-width: 542px) {
64
+ .RiverStoryScroll {
65
+ --topOffset: calc((100vh - min(664px, 60vh)) / 5);
66
+ }
67
+ }
68
+
69
+ @media (max-width: 768px) and (min-height: 670px) {
70
+ .RiverStoryScroll {
71
+ --extraBottomSpacing: calc(-1 * (100vh - 100vw) / 5);
72
+ }
73
+ }
74
+
75
+ @media (min-width: 542px) and (max-width: 1028px) and (min-height: 670px) {
76
+ .RiverStoryScroll {
77
+ --extraBottomSpacing: calc(-1 * (100vh - 100vw) / 3);
78
+ }
79
+ }
80
+
81
+ @media (min-width: 542px) {
82
+ .RiverStoryScroll {
83
+ --scrollTextHeight: 42vh;
84
+ }
85
+ }
86
+
87
+ @media (max-height: 520px) {
88
+ .RiverStoryScroll {
89
+ --scrollTextHeight: 70vh;
90
+ }
91
+ }
92
+
93
+ @media (min-width: 1028px) {
94
+ .RiverStoryScroll {
95
+ --stackDistance: -30px;
96
+ }
97
+ }
98
+
99
+ @media (max-height: 800px) {
100
+ .RiverStoryScroll {
101
+ --stackDistance: -20px;
102
+ }
103
+ }
104
+
105
+ @media (max-height: 500px) {
106
+ .RiverStoryScroll {
107
+ --stackDistance: -15px;
108
+ }
109
+ }
110
+
111
+ @media screen and (max-width: 768px) {
112
+ .RiverStoryScroll {
113
+ --topOffset: calc((100vh - min(664px, 60vh)) / 3);
114
+
115
+ /* Spacing above the visual */
116
+ --availableWidth: calc(100vw - var(--storyScrollPadding) * 2);
117
+ --relativeVisualHeight: calc(var(--visualMaxHeightUL) / var(--visualMaxWidthUL) * var(--availableWidth));
118
+ --visualHeight: min(var(--visualMaxHeight), var(--relativeVisualHeight));
119
+ --visualWidth: calc(var(--visualHeight) * var(--visualMaxWidthUL) / var(--visualMaxHeightUL));
120
+ --scrollTextHeight: 58vh;
121
+ --textToVisualPadding: max(5vh, 40px);
122
+
123
+ --topScrollOffset: calc(var(--visualHeight));
124
+ --bottomScrollOffset: calc(100vh - var(--topOffset) - var(--visualHeight) - var(--textToVisualPadding));
125
+
126
+ --extraBottomSpacing: 70px;
127
+ }
128
+
129
+ /* Enhanced styling if dvh is supported */
130
+ @supports (height: 100dvh) {
131
+ .RiverStoryScroll__visual-container-inner {
132
+ height: 100dvh;
133
+ }
134
+ }
135
+
136
+ .RiverStoryScroll__visual-container {
137
+ position: absolute;
138
+ width: 100%;
139
+ height: 100%;
140
+ left: 0;
141
+ top: 0;
142
+ }
143
+
144
+ .RiverStoryScroll__tracker {
145
+ min-height: var(--scrollTextHeight);
146
+ position: relative;
147
+ transition: opacity 0.3s var(--ease);
148
+ }
149
+
150
+ .RiverStoryScroll__tracker:has(+ .in-viewport) {
151
+ opacity: 0;
152
+ }
153
+
154
+ .RiverStoryScroll__tracker.in-viewport + .outside-viewport {
155
+ opacity: 0;
156
+ }
157
+
158
+ .RiverStoryScroll {
159
+ max-width: calc(1032px + var(--storyScrollPadding) * 2);
160
+ margin-top: min(30vw, 22vh);
161
+ margin-left: auto;
162
+ margin-right: auto;
163
+ padding-right: var(--storyScrollPadding);
164
+ padding-left: var(--storyScrollPadding);
165
+ }
166
+
167
+ .RiverStoryScroll__content-container--below {
168
+ padding-top: var(--topScrollOffset);
169
+ padding-bottom: var(--bottomScrollOffset);
170
+ }
171
+
172
+ .RiverStoryScroll__image {
173
+ height: auto;
174
+ width: 100%;
175
+ max-width: var(--visualWidth);
176
+ border-radius: var(--brand-borderRadius-large);
177
+ }
178
+
179
+ .RiverStoryScroll__visual-container-inner {
180
+ position: sticky;
181
+ pointer-events: none;
182
+ top: 0;
183
+ padding-top: var(--topOffset);
184
+ margin-top: calc(-1 * var(--topOffset));
185
+ display: flex;
186
+ z-index: 1;
187
+ flex-direction: column;
188
+ height: 100vh;
189
+ }
190
+
191
+ .RiverStoryScroll__visual--below {
192
+ background-image: linear-gradient(
193
+ 180deg,
194
+ var(--brand-RiverStoryScroll-content-inactive-bgColor) calc(var(--topOffset) + var(--visualHeight) + 3px),
195
+ transparent calc(var(--topOffset) + var(--visualHeight) + var(--textToVisualPadding)),
196
+ transparent 93%,
197
+ var(--brand-RiverStoryScroll-content-inactive-bgColor) 99%
198
+ );
199
+ }
200
+
201
+ .RiverStoryScroll__visual--below .story-scroll-text {
202
+ margin-top: var(--base-size-40);
203
+ }
204
+
205
+ .tracker-outside-viewport {
206
+ opacity: 0;
207
+ display: none;
208
+ }
209
+
210
+ /* Show first visual, even when nothing is visible */
211
+ .tracker-outside-viewport:nth-child(2) {
212
+ opacity: 1;
213
+ display: block;
214
+ }
215
+
216
+ .RiverStoryScroll__visual-scroll-responder {
217
+ transition: 0.5s var(--ease) transform, 0.5s var(--ease) filter, 0.5s var(--ease) opacity;
218
+ pointer-events: auto;
219
+ }
220
+
221
+ .tracker-outside-viewport:has(~ .tracker-in-viewport) {
222
+ position: absolute;
223
+ display: block;
224
+ margin-left: auto;
225
+ margin-right: auto;
226
+ left: 0;
227
+ right: 0;
228
+ }
229
+
230
+ .tracker-in-viewport + .tracker-outside-viewport {
231
+ transform: translateY(calc(var(--stackDistance) * -1)) scale(1.015);
232
+ position: absolute;
233
+ display: block;
234
+ margin-left: auto;
235
+ margin-right: auto;
236
+ left: 0;
237
+ right: 0;
238
+ }
239
+
240
+ .tracker-outside-viewport:has(+ .tracker-in-viewport) {
241
+ transform: translateY(var(--stackDistance)) scale(0.95);
242
+ filter: brightness(70%);
243
+ opacity: 1;
244
+ }
245
+
246
+ .tracker-outside-viewport:has(+ .tracker-outside-viewport + .tracker-in-viewport) {
247
+ transform: translateY(calc(var(--stackDistance) * 2)) scale(0.9);
248
+ filter: brightness(50%);
249
+ opacity: 1;
250
+ }
251
+
252
+ .tracker-outside-viewport:has(+ .tracker-outside-viewport + .tracker-outside-viewport + .tracker-in-viewport) {
253
+ transform: translateY(calc(var(--stackDistance) * 3)) scale(0.85);
254
+ filter: brightness(30%);
255
+ opacity: 1;
256
+ }
257
+
258
+ .tracker-outside-viewport:has(
259
+ + .tracker-outside-viewport + .tracker-outside-viewport + .tracker-outside-viewport + .tracker-in-viewport
260
+ ) {
261
+ transform: translateY(calc(var(--stackDistance) * 4)) scale(0.8);
262
+ filter: brightness(10%);
263
+ opacity: 1;
264
+ }
265
+
266
+ .tracker-in-viewport {
267
+ display: block;
268
+ position: relative;
269
+ }
270
+
271
+ /*
272
+ TODO: Re-enable these at a later date
273
+
274
+ .video-controls {
275
+ --distanceFromEdge: 12px;
276
+ position: absolute;
277
+ right: calc((100% - var(--visualWidth)) / 2 + var(--distanceFromEdge));
278
+ bottom: var(--distanceFromEdge);
279
+ z-index: 10;
280
+ pointer-events: auto;
281
+ transition: opacity 0.3s var(--ease);
282
+ opacity: 0;
283
+ }
284
+
285
+ @media (min-width: 542px) {
286
+ .video-controls {
287
+ --distanceFromEdge: 20px;
288
+ }
289
+ }
290
+
291
+ .RiverStoryScroll__visual-scroll-responder:hover .video-controls,
292
+ .video-controls-ended {
293
+ opacity: 1;
294
+ }
295
+
296
+ .video-control {
297
+ background-color: rgba(0, 0, 0, 0.18);
298
+ display: flex;
299
+ align-items: center;
300
+ justify-content: center;
301
+ border-radius: 200px;
302
+ width: 44px;
303
+ height: 44px;
304
+ transition: background-color 0.2s ease;
305
+ }
306
+
307
+ .video-control:hover,
308
+ .video-control:focus {
309
+ background-color: rgba(0, 0, 0, 0.35);
310
+ } */
311
+
312
+ .RiverStoryScroll__content-stack {
313
+ position: sticky;
314
+ padding-top: var(--textToVisualPadding);
315
+ top: calc(var(--topOffset) + var(--visualHeight));
316
+ }
317
+
318
+ /* This is a hack to make the sticky behavior exclude the height of itself as it reaches the bottom */
319
+ /* This makes it possible to calculate the end of the sticky scroll without having to account for text content */
320
+ .RiverStoryScroll__tracker:last-child .RiverStoryScroll__content-stack {
321
+ height: 0;
322
+ }
323
+
324
+ .RiverStoryScroll__pagination {
325
+ display: flex;
326
+ flex-direction: column;
327
+ gap: var(--base-size-4);
328
+ position: absolute;
329
+ left: calc(var(--base-size-20) * -1 - 2px);
330
+ right: 0;
331
+ margin: auto;
332
+ height: var(--visualHeight);
333
+ justify-content: center;
334
+ margin-block-start: calc(var(--base-size-20) * -1);
335
+ }
336
+
337
+ .RiverStoryScroll__pagination-dot {
338
+ width: 6px;
339
+ height: 6px;
340
+ border-radius: var(--brand-borderRadius-large);
341
+ opacity: 0.55;
342
+ background: var(--brand-RiverStoryScroll-pagination-fgColor);
343
+ transition: opacity var(--brand-animation-duration-default) var(--ease),
344
+ height var(--brand-animation-duration-default) var(--ease);
345
+ }
346
+
347
+ .tracker-in-viewport:nth-child(2) ~ .RiverStoryScroll__pagination .RiverStoryScroll__pagination-dot:nth-child(1) {
348
+ opacity: 1;
349
+ height: var(--base-size-24);
350
+ }
351
+
352
+ .tracker-in-viewport:nth-child(3) ~ .RiverStoryScroll__pagination .RiverStoryScroll__pagination-dot:nth-child(2) {
353
+ opacity: 1;
354
+ height: var(--base-size-24);
355
+ }
356
+
357
+ .tracker-in-viewport:nth-child(4) ~ .RiverStoryScroll__pagination .RiverStoryScroll__pagination-dot:nth-child(3) {
358
+ opacity: 1;
359
+ height: var(--base-size-24);
360
+ }
361
+
362
+ .tracker-in-viewport:nth-child(5) ~ .RiverStoryScroll__pagination .RiverStoryScroll__pagination-dot:nth-child(4) {
363
+ opacity: 1;
364
+ height: var(--base-size-24);
365
+ }
366
+
367
+ .tracker-in-viewport:nth-child(6) ~ .RiverStoryScroll__pagination .RiverStoryScroll__pagination-dot:nth-child(5) {
368
+ opacity: 1;
369
+ height: var(--base-size-24);
370
+ }
371
+ }
372
+
373
+ @media screen and (min-width: 768px) {
374
+ .RiverStoryScroll__inner {
375
+ display: grid;
376
+ grid-template-columns: 1fr 1fr;
377
+ gap: var(--base-size-24);
378
+ }
379
+
380
+ .RiverStoryScroll__visual-container {
381
+ position: sticky;
382
+ width: 100%;
383
+ top: 0;
384
+ height: 80vh;
385
+ display: flex;
386
+ align-items: center;
387
+ order: 2;
388
+ }
389
+
390
+ .RiverStoryScroll__visual-container-inner,
391
+ .RiverStoryScroll__image {
392
+ width: 100%;
393
+ }
394
+
395
+ .RiverStoryScroll .RiverStoryScroll__visual-scroll-responder {
396
+ position: sticky;
397
+ top: 0;
398
+ width: 100%;
399
+ right: 0;
400
+ transition: opacity 0.3s var(--ease);
401
+ padding-top: 10vh;
402
+ }
403
+
404
+ .RiverStoryScroll__visual-container-inner.RiverStoryScroll__visual--below {
405
+ position: sticky;
406
+ top: 0;
407
+ }
408
+
409
+ .RiverStoryScroll__visual-scroll-responder.tracker-outside-viewport {
410
+ position: absolute;
411
+ top: 0;
412
+ z-index: -1;
413
+ opacity: 0;
414
+ }
415
+
416
+ .RiverStoryScroll__visual-scroll-responder.tracker-in-viewport {
417
+ z-index: 1;
418
+ opacity: 1;
419
+ }
420
+
421
+ .RiverStoryScroll__content-container.RiverStoryScroll__content-container--below {
422
+ padding-top: 10vh;
423
+ }
424
+
425
+ .RiverStoryScroll__content-container.RiverStoryScroll__content-container--below .RiverStoryScroll__tracker {
426
+ padding: 20vh 0;
427
+ }
428
+
429
+ .RiverStoryScroll__tracker.outside-viewport {
430
+ position: relative;
431
+ }
432
+
433
+ .RiverStoryScroll__tracker {
434
+ filter: 0;
435
+ }
436
+
437
+ .RiverStoryScroll__tracker.outside-viewport {
438
+ filter: blur(1px);
439
+ transition: filter var(--brand-animation-duration-extended) var(--brand-animation-easing-default);
440
+ }
441
+
442
+ .RiverStoryScroll__tracker::after {
443
+ content: '';
444
+ transition: opacity var(--brand-animation-duration-extended) var(--brand-animation-easing-default),
445
+ visibility var(--brand-animation-duration-extended) var(--brand-animation-easing-default);
446
+ opacity: 0;
447
+ visibility: hidden;
448
+ position: absolute;
449
+ top: 0;
450
+ left: 0;
451
+ right: 0;
452
+ bottom: 0;
453
+ background-color: var(--brand-RiverStoryScroll-content-inactive-bgColor);
454
+ }
455
+
456
+ .RiverStoryScroll__tracker.outside-viewport::after {
457
+ opacity: 0.7;
458
+ visibility: visible;
459
+ }
460
+ }
461
+
462
+ @media screen and (min-width: 768px) and (min-height: 900px) and (prefers-reduced-motion: no-preference) {
463
+ .RiverStoryScroll {
464
+ margin-top: -20vh;
465
+ }
466
+
467
+ .RiverStoryScroll__content-container.RiverStoryScroll__content-container--below {
468
+ padding-top: 16vh;
469
+ }
470
+ }
@@ -0,0 +1,205 @@
1
+ .River {
2
+ display: grid;
3
+ gap: var(--brand-River-spacing-inner);
4
+ grid-auto-rows: min-content;
5
+ padding-top: var(--brand-River-spacing-outer);
6
+ padding-bottom: var(--brand-River-spacing-outer);
7
+ }
8
+
9
+ .River--align-center {
10
+ text-align: center;
11
+ }
12
+
13
+ .River__content {
14
+ order: 2;
15
+ }
16
+
17
+ .River__visual--fill-media img,
18
+ .River__visual--fill-media video {
19
+ width: 100%;
20
+ height: 100%;
21
+ -o-object-fit: cover;
22
+ object-fit: cover;
23
+ }
24
+
25
+ .River__visual--rounded {
26
+ overflow: hidden;
27
+ border-radius: var(--brand-borderRadius-large);
28
+ }
29
+
30
+ .River__visual--has-shadow {
31
+ box-shadow: var(--brand-River-visual-shadow);
32
+ }
33
+
34
+ .River__heading {
35
+ margin-bottom: var(--brand-River-heading-margin);
36
+ }
37
+
38
+ .River__call-to-action {
39
+ margin-top: var(--base-size-24);
40
+ }
41
+
42
+ .River__text strong,
43
+ .River__text b {
44
+ font-weight: var(--base-text-weight-semibold);
45
+ color: var(--brand-color-text-default);
46
+ }
47
+
48
+ .River__trailingComponent {
49
+ margin-block-start: var(--brand-River-spacing-inner);
50
+ }
51
+
52
+ .River__trailingComponent--divider {
53
+ padding-block-start: var(--brand-River-spacing-inner);
54
+ border-top: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);
55
+ }
56
+
57
+ .River__label {
58
+ margin-block-end: var(--brand-River-label-margin);
59
+ }
60
+
61
+ /* Medium breakpoint and up */
62
+ @media screen and (min-width: 48rem) {
63
+ .River {
64
+ grid-template-rows: unset;
65
+ }
66
+
67
+ .River__content {
68
+ order: unset;
69
+ }
70
+
71
+ .River--50-50 {
72
+ grid-template-columns: [content] 1fr [visual] 1fr;
73
+ }
74
+
75
+ .River--60-40 {
76
+ grid-template-columns: [content] 4fr [visual] 6fr;
77
+ }
78
+
79
+ .River--align-start {
80
+ grid-template-areas: 'content visual';
81
+ }
82
+
83
+ .River--align-end {
84
+ grid-template-areas: 'visual content';
85
+ }
86
+
87
+ .River--align-end.River--60-40 {
88
+ grid-template-columns: [visual] 6fr [content] 4fr;
89
+ }
90
+
91
+ .River__content {
92
+ display: grid;
93
+ align-content: center;
94
+ grid-area: content;
95
+ }
96
+
97
+ .River__visual {
98
+ grid-area: visual;
99
+ }
100
+
101
+ .River--align-center {
102
+ grid-auto-rows: min-content;
103
+ grid-template-columns: unset;
104
+ }
105
+
106
+ .River--align-center .River__content,
107
+ .River--align-center .River__visual {
108
+ grid-area: unset;
109
+ justify-self: center;
110
+ }
111
+
112
+ .River--align-center .River__body-text {
113
+ max-width: 600px;
114
+ justify-self: center;
115
+ }
116
+
117
+ .River--align-center .River__visual {
118
+ margin-bottom: var(--brand-River-spacing-inner);
119
+ }
120
+
121
+ .River--align-center .River__content {
122
+ margin-top: var(--brand-River-spacing-inner);
123
+ }
124
+ }
125
+
126
+ /* Large breakpoint and up */
127
+ @media screen and (min-width: 63.25rem) {
128
+ .River--align-start .River__content {
129
+ padding-inline-end: var(--base-size-128);
130
+ }
131
+
132
+ .River--align-end .River__content {
133
+ padding-inline: var(--base-size-64);
134
+ }
135
+ }
136
+
137
+ .RiverBreakout {
138
+ display: flex;
139
+ flex-direction: column;
140
+ gap: var(--brand-RiverBreakout-spacing-inner);
141
+ padding-block-end: var(--brand-River-spacing-outer);
142
+ padding-block-start: var(--brand-River-spacing-outer);
143
+ }
144
+
145
+ .RiverBreakout .River__text {
146
+ max-width: 37.5rem; /* 600px */
147
+ color: var(--brand-color-text-default);
148
+ font-size: var(--brand-text-size-500);
149
+ font-weight: var(--brand-heading-weight-500);
150
+ letter-spacing: var(--brand-heading-letterSpacing-500);
151
+ line-height: var(--brand-text-lineHeight-500);
152
+ }
153
+
154
+ .RiverBreakout--muted .River__text {
155
+ color: var(--brand-color-text-subtle);
156
+ }
157
+
158
+ .RiverBreakout .River__text em,
159
+ .RiverBreakout .River__text b {
160
+ color: var(--brand-color-text-default);
161
+ font-style: normal;
162
+ font-weight: inherit;
163
+ }
164
+
165
+ .RiverBreakout__hiddenHeading {
166
+ border: 0;
167
+ clip: rect(1px, 1px, 1px, 1px);
168
+ height: 1px;
169
+ overflow: hidden;
170
+ padding: 0;
171
+ position: absolute;
172
+ width: 1px;
173
+ }
174
+
175
+ .RiverBreakout .River__call-to-action {
176
+ margin-block-end: var(--base-size-40);
177
+ }
178
+
179
+ @media screen and (min-width: 48rem) {
180
+ .RiverBreakout .River__content {
181
+ display: grid;
182
+ gap: var(--brand-River-spacing-inner);
183
+ row-gap: var(--brand-River-spacing-innerY);
184
+ grid-template-areas:
185
+ 'text trailingComponent'
186
+ 'cta trailingComponent';
187
+ grid-template-columns: 5fr 3fr;
188
+ grid-auto-rows: auto 1fr;
189
+ }
190
+
191
+ .RiverBreakout .River__text {
192
+ grid-area: text;
193
+ }
194
+
195
+ .RiverBreakout .River__call-to-action {
196
+ grid-area: cta;
197
+ margin-block: 0;
198
+ }
199
+
200
+ .RiverBreakout .River__trailingComponent {
201
+ grid-area: trailingComponent;
202
+ justify-self: end;
203
+ margin-block-start: 0;
204
+ }
205
+ }
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@primer/brand-css",
3
+ "version": "0.0.0-20250212132611",
4
+ "description": "CSS stylesheets for Primer Brand components",
5
+ "keywords": [
6
+ "primer",
7
+ "css",
8
+ "components",
9
+ "library",
10
+ "design-system"
11
+ ],
12
+ "type": "module",
13
+ "homepage": "https://primer.style/brand",
14
+ "bugs": {
15
+ "url": "https://github.com/primer/brand/issues"
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/primer/brand.git"
20
+ },
21
+ "license": "MIT",
22
+ "author": "GitHub, Inc.",
23
+ "files": [
24
+ "components"
25
+ ],
26
+ "scripts": {
27
+ "clean": "rm -rf components",
28
+ "check": "tsc --noEmit",
29
+ "build": "npm run clean && tsx scripts/build.ts",
30
+ "prepublishOnly": "npm run build"
31
+ },
32
+ "devDependencies": {
33
+ "autoprefixer": "10.4.20",
34
+ "postcss": "8.5.1",
35
+ "tsx": "^4.19.2",
36
+ "typescript": "5.7.3"
37
+ },
38
+ "engines": {
39
+ "node": ">=16.0.0",
40
+ "npm": ">=8.0.0"
41
+ }
42
+ }