baseline-foundry 0.1.3
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.
- package/LICENSE +21 -0
- package/README.md +588 -0
- package/config/experiments/ibm-plex-engine-smoke.json +115 -0
- package/config/experiments/ubuntu-engine-smoke.json +115 -0
- package/config/foundation-theme.json +117 -0
- package/config/tiers/app.json +120 -0
- package/config/tiers/documentation.json +120 -0
- package/config/tiers/editorial.json +120 -0
- package/config/tiers/os.json +120 -0
- package/dist/accordion.d.ts +5 -0
- package/dist/accordion.js +32 -0
- package/dist/application-layout.d.ts +4 -0
- package/dist/application-layout.js +181 -0
- package/dist/baseline-grid-overlay.d.ts +5 -0
- package/dist/baseline-grid-overlay.js +50 -0
- package/dist/baseline-grid-theme.d.ts +3 -0
- package/dist/baseline-grid-theme.js +3 -0
- package/dist/baseline-grid.d.ts +7 -0
- package/dist/baseline-grid.js +35 -0
- package/dist/build.d.ts +21 -0
- package/dist/build.js +440 -0
- package/dist/code-snippet.d.ts +6 -0
- package/dist/code-snippet.js +95 -0
- package/dist/contextual-menu.d.ts +4 -0
- package/dist/contextual-menu.js +156 -0
- package/dist/css-app-tier.d.ts +1 -0
- package/dist/css-app-tier.js +77 -0
- package/dist/css-components/article-pagination.d.ts +13 -0
- package/dist/css-components/article-pagination.js +151 -0
- package/dist/css-components/button-actions.d.ts +7 -0
- package/dist/css-components/button-actions.js +165 -0
- package/dist/css-components/cards-options.d.ts +6 -0
- package/dist/css-components/cards-options.js +180 -0
- package/dist/css-components/chip-badge-status.d.ts +10 -0
- package/dist/css-components/chip-badge-status.js +162 -0
- package/dist/css-components/content-card.d.ts +25 -0
- package/dist/css-components/content-card.js +517 -0
- package/dist/css-components/control-row.d.ts +2 -0
- package/dist/css-components/control-row.js +18 -0
- package/dist/css-components/cta-figure-aspect.d.ts +1 -0
- package/dist/css-components/cta-figure-aspect.js +123 -0
- package/dist/css-components/document-navigation.d.ts +13 -0
- package/dist/css-components/document-navigation.js +400 -0
- package/dist/css-components/editorial-content.d.ts +6 -0
- package/dist/css-components/editorial-content.js +52 -0
- package/dist/css-components/icon.d.ts +1 -0
- package/dist/css-components/icon.js +75 -0
- package/dist/css-components/interactive-feedback.d.ts +2 -0
- package/dist/css-components/interactive-feedback.js +230 -0
- package/dist/css-components/interactive-tables.d.ts +7 -0
- package/dist/css-components/interactive-tables.js +164 -0
- package/dist/css-components/linked-logo-site-layout.d.ts +21 -0
- package/dist/css-components/linked-logo-site-layout.js +214 -0
- package/dist/css-components/list-tree.d.ts +5 -0
- package/dist/css-components/list-tree.js +98 -0
- package/dist/css-components/list.d.ts +3 -0
- package/dist/css-components/list.js +119 -0
- package/dist/css-components/logo-media.d.ts +16 -0
- package/dist/css-components/logo-media.js +219 -0
- package/dist/css-components/navigation-layout.d.ts +5 -0
- package/dist/css-components/navigation-layout.js +151 -0
- package/dist/css-components/panel.d.ts +6 -0
- package/dist/css-components/panel.js +148 -0
- package/dist/css-components/search-box-and-filter.d.ts +9 -0
- package/dist/css-components/search-box-and-filter.js +267 -0
- package/dist/css-components/sites-editorial-ports.d.ts +19 -0
- package/dist/css-components/sites-editorial-ports.js +264 -0
- package/dist/css-components/sites-foundation.d.ts +17 -0
- package/dist/css-components/sites-foundation.js +173 -0
- package/dist/css-components/sites-rich-lists.d.ts +18 -0
- package/dist/css-components/sites-rich-lists.js +364 -0
- package/dist/css-components/static-content-ports.d.ts +14 -0
- package/dist/css-components/static-content-ports.js +206 -0
- package/dist/css-components/tab-section.d.ts +19 -0
- package/dist/css-components/tab-section.js +103 -0
- package/dist/css-components/table.d.ts +7 -0
- package/dist/css-components/table.js +79 -0
- package/dist/css-components/tabs-choice-breadcrumbs.d.ts +9 -0
- package/dist/css-components/tabs-choice-breadcrumbs.js +307 -0
- package/dist/css-components/tiered-list-equal-height-row.d.ts +1 -0
- package/dist/css-components/tiered-list-equal-height-row.js +286 -0
- package/dist/css-components.d.ts +2 -0
- package/dist/css-components.js +2701 -0
- package/dist/css-grid.d.ts +1 -0
- package/dist/css-grid.js +179 -0
- package/dist/css.d.ts +6 -0
- package/dist/css.js +431 -0
- package/dist/experiments/ibm-plex-engine-smoke/styles.css +8969 -0
- package/dist/experiments/ibm-plex-engine-smoke/surfaces.json +604 -0
- package/dist/experiments/ibm-plex-engine-smoke/tokens.json +217 -0
- package/dist/in-page-navigation.d.ts +7 -0
- package/dist/in-page-navigation.js +136 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.js +18 -0
- package/dist/interactive-feedback.d.ts +14 -0
- package/dist/interactive-feedback.js +96 -0
- package/dist/interactive-tables.d.ts +28 -0
- package/dist/interactive-tables.js +184 -0
- package/dist/list-tree.d.ts +4 -0
- package/dist/list-tree.js +44 -0
- package/dist/panel-drawer.d.ts +4 -0
- package/dist/panel-drawer.js +171 -0
- package/dist/presets/app-tier/styles.css +9459 -0
- package/dist/presets/app-tier/surfaces.json +1225 -0
- package/dist/presets/app-tier/tokens.json +221 -0
- package/dist/presets/prose/styles.css +9442 -0
- package/dist/presets/prose/surfaces.json +1225 -0
- package/dist/presets/prose/tokens.json +221 -0
- package/dist/presets.d.ts +6 -0
- package/dist/presets.js +27 -0
- package/dist/range-controls.d.ts +9 -0
- package/dist/range-controls.js +73 -0
- package/dist/resizable-aside.d.ts +4 -0
- package/dist/resizable-aside.js +328 -0
- package/dist/side-navigation.d.ts +4 -0
- package/dist/side-navigation.js +219 -0
- package/dist/styles.css +9442 -0
- package/dist/surfaces.json +1225 -0
- package/dist/tabs.d.ts +4 -0
- package/dist/tabs.js +88 -0
- package/dist/tier-registry.d.ts +10 -0
- package/dist/tier-registry.js +25 -0
- package/dist/tiers/app/styles.css +9459 -0
- package/dist/tiers/app/surfaces.json +1225 -0
- package/dist/tiers/app/tokens.json +221 -0
- package/dist/tiers/documentation/styles.css +9442 -0
- package/dist/tiers/documentation/surfaces.json +1225 -0
- package/dist/tiers/documentation/tokens.json +221 -0
- package/dist/tiers/editorial/styles.css +9442 -0
- package/dist/tiers/editorial/surfaces.json +1225 -0
- package/dist/tiers/editorial/tokens.json +221 -0
- package/dist/tiers/os/styles.css +9442 -0
- package/dist/tiers/os/surfaces.json +1225 -0
- package/dist/tiers/os/tokens.json +221 -0
- package/dist/tokens.json +221 -0
- package/dist/tooltip.d.ts +4 -0
- package/dist/tooltip.js +70 -0
- package/dist/top-navigation.d.ts +4 -0
- package/dist/top-navigation.js +354 -0
- package/dist/types.d.ts +155 -0
- package/dist/types.js +1 -0
- package/dist/vanilla-theme-colors.d.ts +5 -0
- package/dist/vanilla-theme-colors.js +208 -0
- package/docs/publishing.md +66 -0
- package/package.json +108 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
export function panelCss(options) {
|
|
2
|
+
const { bodyTypeStyles, h4TypeStyles } = options;
|
|
3
|
+
return `:where(.bf-theme) :where(.bf-panel) {
|
|
4
|
+
background: var(--bf-color-background-default);
|
|
5
|
+
color: var(--bf-color-text-default);
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
inline-size: 100%;
|
|
9
|
+
max-inline-size: 100%;
|
|
10
|
+
min-block-size: 0;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
:where(.bf-theme) :where(.bf-panel.is-fill) {
|
|
14
|
+
block-size: 100%;
|
|
15
|
+
max-inline-size: none;
|
|
16
|
+
min-block-size: 0;
|
|
17
|
+
resize: none;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
:where(.bf-theme) :where(.bf-panel.is-fill) > :where(.bf-panel-content) {
|
|
21
|
+
min-block-size: 0;
|
|
22
|
+
overflow: auto;
|
|
23
|
+
overscroll-behavior: contain;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
:where(.bf-theme) :where(.bf-panel-header) {
|
|
27
|
+
align-items: start;
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-wrap: wrap;
|
|
30
|
+
gap: var(--bf-field-gap);
|
|
31
|
+
justify-content: space-between;
|
|
32
|
+
padding-block-end: var(--bf-panel-padding-block);
|
|
33
|
+
padding-block-start: var(--bf-panel-padding-block);
|
|
34
|
+
padding-inline: var(--bf-panel-padding-inline);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* A navigation brand keeps the Canonical tag attached to the panel's top edge
|
|
38
|
+
* while sharing the panel-content inline inset used by the opposing main
|
|
39
|
+
* region. Ordinary content-panel headers retain their complete padding. */
|
|
40
|
+
:where(.bf-theme) :where(.bf-panel-header.is-navigation-brand) {
|
|
41
|
+
gap: 0;
|
|
42
|
+
padding-block: 0;
|
|
43
|
+
padding-inline-end: 0;
|
|
44
|
+
padding-inline-start: var(--bf-panel-padding-inline);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
:where(.bf-theme) :where(.bf-panel-header.is-navigation-brand) > :where(.bf-top-navigation-logo.is-canonical-tagged) {
|
|
48
|
+
inline-size: 100%;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
:where(.bf-theme) :where(.bf-panel-header.is-navigation-brand) :where(.bf-top-navigation-logo-title) {
|
|
52
|
+
transform: translateY(var(--bf-navigation-brand-title-optical-offset-block));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
:where(.bf-theme) :where(.bf-panel-header) > :where(.bf-panel-title) {
|
|
56
|
+
min-inline-size: 0;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:where(.bf-theme) :where(.bf-panel-header.is-sticky) {
|
|
60
|
+
background: var(--bf-color-background-default);
|
|
61
|
+
position: sticky;
|
|
62
|
+
top: 0;
|
|
63
|
+
z-index: 5;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* Panel chrome that remains outside the panel's scrolling content. */
|
|
67
|
+
:where(.bf-theme) :where(.bf-panel-footer) {
|
|
68
|
+
align-items: center;
|
|
69
|
+
border-block-start: var(--bf-border-width) solid var(--bf-color-border-low-contrast);
|
|
70
|
+
display: flex;
|
|
71
|
+
flex: 0 0 auto;
|
|
72
|
+
flex-wrap: wrap;
|
|
73
|
+
gap: var(--bf-field-gap);
|
|
74
|
+
justify-content: space-between;
|
|
75
|
+
min-block-size: calc(var(--bf-control-box-size-compact) + (var(--bf-panel-padding-block) * 2));
|
|
76
|
+
padding-block-end: var(--bf-panel-padding-block);
|
|
77
|
+
padding-block-start: calc(var(--bf-panel-padding-block) - var(--bf-border-width));
|
|
78
|
+
padding-inline: var(--bf-panel-padding-inline);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
:where(.bf-theme) :where(.bf-panel-footer.is-sticky) {
|
|
82
|
+
background: var(--bf-color-background-default);
|
|
83
|
+
bottom: 0;
|
|
84
|
+
position: sticky;
|
|
85
|
+
z-index: 5;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
:where(.bf-theme) :where(.bf-panel-title) {
|
|
89
|
+
${h4TypeStyles} margin: 0 0 var(--bf-h4-margin-bottom);
|
|
90
|
+
min-inline-size: 0;
|
|
91
|
+
padding-block-end: 0;
|
|
92
|
+
padding-block-start: var(--bf-h4-nudge-start);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
:where(.bf-theme) :where(.bf-panel-controls) {
|
|
96
|
+
align-items: start;
|
|
97
|
+
display: flex;
|
|
98
|
+
flex-wrap: wrap;
|
|
99
|
+
gap: var(--bf-field-gap);
|
|
100
|
+
margin-inline-start: auto;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
:where(.bf-theme) :where(.bf-panel-toggle) {
|
|
104
|
+
${bodyTypeStyles} align-items: center;
|
|
105
|
+
appearance: none;
|
|
106
|
+
background: transparent;
|
|
107
|
+
border: 0;
|
|
108
|
+
color: var(--bf-color-text-default);
|
|
109
|
+
cursor: pointer;
|
|
110
|
+
display: inline-flex;
|
|
111
|
+
gap: calc(var(--bf-baseline) * 0.5);
|
|
112
|
+
justify-content: flex-start;
|
|
113
|
+
margin: 0;
|
|
114
|
+
min-block-size: var(--bf-control-box-size-compact);
|
|
115
|
+
min-inline-size: 0;
|
|
116
|
+
padding-block: var(--bf-control-block-padding-compact);
|
|
117
|
+
padding-inline: 0;
|
|
118
|
+
text-align: left;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
:where(.bf-theme) :where(.bf-panel-toggle:hover) {
|
|
122
|
+
color: var(--bf-color-link-default);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
:where(.bf-theme) :where(.bf-panel-toggle:focus:not(:focus-visible)) {
|
|
126
|
+
outline: none;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
:where(.bf-theme) :where(.bf-panel-toggle:focus-visible) {
|
|
130
|
+
outline: 2px solid var(--bf-color-focus);
|
|
131
|
+
outline-offset: 2px;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
:where(.bf-theme) :where(.bf-panel-content) {
|
|
135
|
+
flex: 1 1 auto;
|
|
136
|
+
min-block-size: 0;
|
|
137
|
+
padding-block-end: var(--bf-panel-padding-block);
|
|
138
|
+
padding-block-start: var(--bf-panel-padding-block);
|
|
139
|
+
padding-inline: var(--bf-panel-padding-inline);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
:where(.bf-theme) :where(.bf-panel-content.is-flush) {
|
|
143
|
+
padding-block: 0;
|
|
144
|
+
padding-inline: 0;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
`;
|
|
148
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type SearchBoxAndFilterCssOptions = {
|
|
2
|
+
bodySelectedStartNudge: string;
|
|
3
|
+
bodyTypeStyles: string;
|
|
4
|
+
buttonBlockPaddingVar: string;
|
|
5
|
+
h6TypeStyles: string;
|
|
6
|
+
inputMarginBottom: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function searchBoxAndFilterCss(options: SearchBoxAndFilterCssOptions): string;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
export function searchBoxAndFilterCss(options) {
|
|
2
|
+
const { bodySelectedStartNudge, bodyTypeStyles, buttonBlockPaddingVar, h6TypeStyles, inputMarginBottom, } = options;
|
|
3
|
+
return `:where(.bf-theme) :where(.bf-search-box) {
|
|
4
|
+
--bf-search-box-action-inline-size: calc(1rem + (var(--bf-control-inline-padding-field) * 2));
|
|
5
|
+
--bf-search-box-trailing-inline-size: calc((var(--bf-search-box-action-inline-size) * 2) + var(--bf-border-width));
|
|
6
|
+
display: flex;
|
|
7
|
+
inline-size: 100%;
|
|
8
|
+
margin: 0 0 ${inputMarginBottom};
|
|
9
|
+
max-inline-size: 100%;
|
|
10
|
+
min-inline-size: 0;
|
|
11
|
+
position: relative;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
:where(.bf-theme) :where(.bf-search-box-input) {
|
|
15
|
+
margin-bottom: 0;
|
|
16
|
+
padding-inline-end: var(--bf-search-box-trailing-inline-size);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
:where(.bf-theme) :where(.bf-search-box-reset, .bf-search-box-button) {
|
|
20
|
+
align-items: center;
|
|
21
|
+
block-size: var(--bf-control-box-size);
|
|
22
|
+
display: inline-flex;
|
|
23
|
+
inline-size: var(--bf-search-box-action-inline-size);
|
|
24
|
+
justify-content: center;
|
|
25
|
+
position: absolute;
|
|
26
|
+
top: 0;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
:where(.bf-theme) :where(.bf-search-box-reset) {
|
|
30
|
+
inset-inline-end: calc(var(--bf-search-box-action-inline-size) + var(--bf-border-width));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
:where(.bf-theme) :where(.bf-search-box-button) {
|
|
34
|
+
appearance: none;
|
|
35
|
+
background: transparent;
|
|
36
|
+
border: 0;
|
|
37
|
+
border-inline-start: var(--bf-border-width) solid var(--bf-color-border-default);
|
|
38
|
+
color: var(--bf-color-text-default);
|
|
39
|
+
cursor: pointer;
|
|
40
|
+
inset-inline-end: var(--bf-border-width);
|
|
41
|
+
margin: 0;
|
|
42
|
+
padding: 0;
|
|
43
|
+
text-indent: -9999px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
:where(.bf-theme) :where(.bf-search-box-button)::before {
|
|
47
|
+
background-image: var(--bf-ui-icon-search);
|
|
48
|
+
background-position: center;
|
|
49
|
+
background-repeat: no-repeat;
|
|
50
|
+
background-size: 1rem 1rem;
|
|
51
|
+
block-size: 1rem;
|
|
52
|
+
content: "";
|
|
53
|
+
inline-size: 1rem;
|
|
54
|
+
left: 50%;
|
|
55
|
+
position: absolute;
|
|
56
|
+
text-indent: 0;
|
|
57
|
+
top: 50%;
|
|
58
|
+
transform: translate(-50%, -50%);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
:where(.bf-theme) :where(.bf-search-box-button)::after {
|
|
62
|
+
content: none;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
:where(.bf-theme) :where(.bf-search-box-reset:focus:not(:focus-visible), .bf-search-box-button:focus:not(:focus-visible)) {
|
|
66
|
+
outline: none;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
:where(.bf-theme) :where(.bf-search-box-reset:focus-visible, .bf-search-box-button:focus-visible) {
|
|
70
|
+
outline: 2px solid var(--bf-color-focus);
|
|
71
|
+
outline-offset: -2px;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
:where(.bf-theme) :where(.bf-search-and-filter) {
|
|
75
|
+
display: grid;
|
|
76
|
+
inline-size: 100%;
|
|
77
|
+
margin: 0;
|
|
78
|
+
max-inline-size: 100%;
|
|
79
|
+
min-inline-size: 0;
|
|
80
|
+
position: relative;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
:where(.bf-theme) :where(.bf-search-and-filter-search-container) {
|
|
84
|
+
align-items: stretch;
|
|
85
|
+
background: transparent;
|
|
86
|
+
box-shadow: inset 0 -1px 0 var(--bf-color-border-high-contrast);
|
|
87
|
+
display: flex;
|
|
88
|
+
flex-wrap: wrap;
|
|
89
|
+
gap: var(--bf-field-gap);
|
|
90
|
+
margin: 0 0 ${inputMarginBottom};
|
|
91
|
+
min-block-size: 0;
|
|
92
|
+
overflow: visible;
|
|
93
|
+
padding: 0;
|
|
94
|
+
position: relative;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
:where(.bf-theme) :where(.bf-search-and-filter-search-container[aria-expanded='false']) {
|
|
98
|
+
min-block-size: var(--bf-control-box-size);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
:where(.bf-theme) :where(.bf-search-and-filter-box) {
|
|
102
|
+
--bf-search-and-filter-action-inline-size: calc(1rem + (var(--bf-control-inline-padding-field) * 2));
|
|
103
|
+
--bf-search-and-filter-trailing-inline-size: calc(var(--bf-search-and-filter-action-inline-size) * 2);
|
|
104
|
+
display: inline-flex;
|
|
105
|
+
flex: 1 1 12rem;
|
|
106
|
+
max-inline-size: 100%;
|
|
107
|
+
min-inline-size: 0;
|
|
108
|
+
position: relative;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
:where(.bf-theme) :where(.bf-search-and-filter-input) {
|
|
112
|
+
margin-bottom: 0;
|
|
113
|
+
padding-inline-end: var(--bf-search-and-filter-trailing-inline-size);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
:where(.bf-theme) :where(.bf-search-and-filter-search-button) {
|
|
117
|
+
appearance: none;
|
|
118
|
+
background: transparent;
|
|
119
|
+
block-size: var(--bf-control-box-size);
|
|
120
|
+
border: 0;
|
|
121
|
+
color: var(--bf-color-text-default);
|
|
122
|
+
cursor: pointer;
|
|
123
|
+
inline-size: var(--bf-search-and-filter-action-inline-size);
|
|
124
|
+
inset-inline-end: 0;
|
|
125
|
+
margin: 0;
|
|
126
|
+
padding: 0;
|
|
127
|
+
position: absolute;
|
|
128
|
+
text-indent: -9999px;
|
|
129
|
+
top: 0;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
:where(.bf-theme) :where(.bf-search-and-filter-search-button)::before {
|
|
133
|
+
background-image: var(--bf-ui-icon-search);
|
|
134
|
+
background-position: center;
|
|
135
|
+
background-repeat: no-repeat;
|
|
136
|
+
background-size: 1rem 1rem;
|
|
137
|
+
block-size: 1rem;
|
|
138
|
+
content: "";
|
|
139
|
+
inline-size: 1rem;
|
|
140
|
+
left: 50%;
|
|
141
|
+
position: absolute;
|
|
142
|
+
text-indent: 0;
|
|
143
|
+
top: 50%;
|
|
144
|
+
transform: translate(-50%, -50%);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
:where(.bf-theme) :where(.bf-search-and-filter-search-button)::after {
|
|
148
|
+
content: none;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
:where(.bf-theme) :where(.bf-search-and-filter-search-button:focus:not(:focus-visible), .bf-search-and-filter-selected-count:focus:not(:focus-visible)) {
|
|
152
|
+
outline: none;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
:where(.bf-theme) :where(.bf-search-and-filter-search-button:focus-visible, .bf-search-and-filter-selected-count:focus-visible) {
|
|
156
|
+
outline: 2px solid var(--bf-color-focus);
|
|
157
|
+
outline-offset: -2px;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
:where(.bf-theme) :where(.bf-search-and-filter-clear) {
|
|
161
|
+
block-size: var(--bf-control-box-size);
|
|
162
|
+
inline-size: var(--bf-search-and-filter-action-inline-size);
|
|
163
|
+
inset-inline-end: var(--bf-search-and-filter-action-inline-size);
|
|
164
|
+
position: absolute;
|
|
165
|
+
top: 0;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
:where(.bf-theme) :where(.bf-search-and-filter-selected-count) {
|
|
169
|
+
${bodyTypeStyles} appearance: none;
|
|
170
|
+
align-items: flex-start;
|
|
171
|
+
background: transparent;
|
|
172
|
+
border: 0;
|
|
173
|
+
color: var(--bf-color-link-default);
|
|
174
|
+
cursor: pointer;
|
|
175
|
+
display: inline-flex;
|
|
176
|
+
margin: 0;
|
|
177
|
+
padding-block: ${buttonBlockPaddingVar};
|
|
178
|
+
padding-inline: 0;
|
|
179
|
+
position: static;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
:where(.bf-theme) :where(.bf-search-and-filter-search-container[aria-expanded='true']) :where(.bf-search-and-filter-selected-count) {
|
|
183
|
+
display: none;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
:where(.bf-theme) :where(.bf-search-and-filter-panel) {
|
|
187
|
+
background-color: var(--bf-color-background-inputs);
|
|
188
|
+
border: var(--bf-border-width) solid var(--bf-color-border-default);
|
|
189
|
+
border-top: 0;
|
|
190
|
+
box-shadow: 0 24px 72px rgba(0, 0, 0, 0.38);
|
|
191
|
+
display: grid;
|
|
192
|
+
gap: var(--bf-field-gap);
|
|
193
|
+
opacity: 1;
|
|
194
|
+
padding-bottom: calc(var(--bf-panel-padding-block) - var(--bf-border-width));
|
|
195
|
+
padding-inline: var(--bf-panel-padding-inline);
|
|
196
|
+
padding-top: var(--bf-panel-padding-block);
|
|
197
|
+
position: absolute;
|
|
198
|
+
top: 100%;
|
|
199
|
+
width: 100%;
|
|
200
|
+
z-index: 20;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
:where(.bf-theme) :where(.bf-search-and-filter-panel[aria-hidden='true']) {
|
|
204
|
+
opacity: 0;
|
|
205
|
+
pointer-events: none;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
:where(.bf-theme) :where(.bf-search-and-filter-search-prompt) {
|
|
209
|
+
background: var(--bf-color-background-inputs);
|
|
210
|
+
color: var(--bf-color-text-muted);
|
|
211
|
+
cursor: pointer;
|
|
212
|
+
margin: 0;
|
|
213
|
+
overflow: hidden;
|
|
214
|
+
padding-block-end: 0;
|
|
215
|
+
padding-block-start: ${bodySelectedStartNudge};
|
|
216
|
+
padding-inline: 0;
|
|
217
|
+
text-overflow: ellipsis;
|
|
218
|
+
white-space: nowrap;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
:where(.bf-theme) :where(.bf-search-and-filter-search-query) {
|
|
222
|
+
color: var(--bf-color-text-default);
|
|
223
|
+
font-weight: 600;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
:where(.bf-theme) :where(.bf-filter-panel-section) {
|
|
227
|
+
border-bottom: var(--bf-border-width) solid var(--bf-color-border-low-contrast);
|
|
228
|
+
display: grid;
|
|
229
|
+
gap: var(--bf-field-gap);
|
|
230
|
+
margin: 0;
|
|
231
|
+
padding-bottom: calc(var(--bf-baseline) * 0.75);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
:where(.bf-theme) :where(.bf-filter-panel-section:last-child) {
|
|
235
|
+
border-bottom: 0;
|
|
236
|
+
padding-bottom: 0;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
:where(.bf-theme) :where(.bf-filter-panel-section-heading) {
|
|
240
|
+
${h6TypeStyles} color: var(--bf-color-text-muted);
|
|
241
|
+
margin: 0;
|
|
242
|
+
padding-block: 0;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
:where(.bf-theme) :where(.bf-filter-panel-section-chips) {
|
|
246
|
+
overflow: hidden;
|
|
247
|
+
position: relative;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
:where(.bf-theme) :where(.bf-filter-panel-section-chips[aria-expanded='false']) {
|
|
251
|
+
max-block-size: calc(var(--bf-baseline) * 5);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
:where(.bf-theme) :where(.bf-filter-panel-section-counter) {
|
|
255
|
+
appearance: none;
|
|
256
|
+
background: transparent;
|
|
257
|
+
border: 0;
|
|
258
|
+
bottom: 0;
|
|
259
|
+
color: var(--bf-color-link-default);
|
|
260
|
+
cursor: pointer;
|
|
261
|
+
margin: 0;
|
|
262
|
+
padding: 0;
|
|
263
|
+
position: absolute;
|
|
264
|
+
right: 0;
|
|
265
|
+
}
|
|
266
|
+
`;
|
|
267
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vanilla Sites parity ports: hero and quote wrapper.
|
|
3
|
+
*
|
|
4
|
+
* These are structural compositions, rather than a compatibility rendition of
|
|
5
|
+
* the Jinja macros. The named slots let a page assemble BF headings, prose,
|
|
6
|
+
* CTA blocks, figures and chips without importing a parallel item schema.
|
|
7
|
+
*
|
|
8
|
+
* Vanilla → BF spacing mapping:
|
|
9
|
+
* - Hero's `$spv--large` / `$spv--x-large` top boundary → `space-2` /
|
|
10
|
+
* `space-3`; `$spv--strip-regular / 2` / full strip bottom boundary →
|
|
11
|
+
* half `section-space` / full `section-space`.
|
|
12
|
+
* - The 50/50, 25/75 and 75/25 grid relationships use BF's intrinsic grid
|
|
13
|
+
* and gutter token at Vanilla's 620px / 1036px composition thresholds.
|
|
14
|
+
* - Quote-wrapper's signpost/content and quote/citation relationships use
|
|
15
|
+
* the same 25/75 and 2/1 proportions. A quotation itself remains the
|
|
16
|
+
* existing semantic BF prose `blockquote`; it is not recreated as a
|
|
17
|
+
* heading-styled paragraph.
|
|
18
|
+
*/
|
|
19
|
+
export declare function sitesEditorialPortsCss(): string;
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vanilla Sites parity ports: hero and quote wrapper.
|
|
3
|
+
*
|
|
4
|
+
* These are structural compositions, rather than a compatibility rendition of
|
|
5
|
+
* the Jinja macros. The named slots let a page assemble BF headings, prose,
|
|
6
|
+
* CTA blocks, figures and chips without importing a parallel item schema.
|
|
7
|
+
*
|
|
8
|
+
* Vanilla → BF spacing mapping:
|
|
9
|
+
* - Hero's `$spv--large` / `$spv--x-large` top boundary → `space-2` /
|
|
10
|
+
* `space-3`; `$spv--strip-regular / 2` / full strip bottom boundary →
|
|
11
|
+
* half `section-space` / full `section-space`.
|
|
12
|
+
* - The 50/50, 25/75 and 75/25 grid relationships use BF's intrinsic grid
|
|
13
|
+
* and gutter token at Vanilla's 620px / 1036px composition thresholds.
|
|
14
|
+
* - Quote-wrapper's signpost/content and quote/citation relationships use
|
|
15
|
+
* the same 25/75 and 2/1 proportions. A quotation itself remains the
|
|
16
|
+
* existing semantic BF prose `blockquote`; it is not recreated as a
|
|
17
|
+
* heading-styled paragraph.
|
|
18
|
+
*/
|
|
19
|
+
export function sitesEditorialPortsCss() {
|
|
20
|
+
return `/* ------------------------------------------------------------------ */
|
|
21
|
+
/* Sites editorial compositions — hero and quote wrapper. */
|
|
22
|
+
/* Section boundaries and grid tracks are structural; nested stacks own */
|
|
23
|
+
/* semantic gaps and every text child keeps metric compensation. */
|
|
24
|
+
/* ------------------------------------------------------------------ */
|
|
25
|
+
|
|
26
|
+
/* Hero: its deliberately asymmetric boundary mirrors the current Vanilla
|
|
27
|
+
section--hero: a compact arrival space, then the normal section exit. The
|
|
28
|
+
entry rule replaces one pixel of padding so it never changes the rhythm. */
|
|
29
|
+
:where(.bf-theme) :where(.bf-hero) {
|
|
30
|
+
border-block-start: var(--bf-border-width) solid var(--bf-color-border-low-contrast);
|
|
31
|
+
container-name: bf-hero;
|
|
32
|
+
container-type: inline-size;
|
|
33
|
+
min-inline-size: 0;
|
|
34
|
+
padding-block-end: calc(var(--bf-section-space) / 2);
|
|
35
|
+
padding-block-start: calc(var(--bf-space-2) - var(--bf-border-width));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* The hero owns its entry rule so consumers do not need a loose sibling.
|
|
39
|
+
The established borderless modifier removes only that visual boundary. */
|
|
40
|
+
:where(.bf-theme) :where(.bf-hero.is-borderless) {
|
|
41
|
+
border-block-start: 0;
|
|
42
|
+
padding-block-start: var(--bf-space-2);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
:where(.bf-theme) :where(.bf-hero-layout) {
|
|
46
|
+
display: grid;
|
|
47
|
+
grid-template-columns: minmax(0, 1fr);
|
|
48
|
+
min-inline-size: 0;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
:where(.bf-theme) :where(.bf-hero-copy, .bf-hero-title, .bf-hero-content, .bf-hero-media, .bf-hero-signpost, .bf-hero-intro, .bf-hero-lead) {
|
|
52
|
+
min-inline-size: 0;
|
|
53
|
+
overflow-wrap: anywhere;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/* The normal hero keeps title, supporting heading, chip, prose and CTA in a
|
|
57
|
+
semantic copy stack. Hero titles are h1 slots and supporting titles are h2
|
|
58
|
+
slots. */
|
|
59
|
+
:where(.bf-theme) :where(.bf-hero-copy) {
|
|
60
|
+
align-content: start;
|
|
61
|
+
display: grid;
|
|
62
|
+
grid-template-columns: minmax(0, 1fr);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
:where(.bf-theme) :where(.bf-hero-chip) {
|
|
66
|
+
margin-block: 0 var(--bf-body-margin-bottom);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/* Current Vanilla scopes a one-spacing-unit icon/value gap to the hero. */
|
|
70
|
+
:where(.bf-theme) :where(.bf-hero-chip.bf-chip) {
|
|
71
|
+
column-gap: var(--bf-space-1);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
:where(.bf-theme) :where(.bf-hero-media > :where(img, picture, video, canvas, svg), .bf-hero-signpost > :where(img, picture, video, canvas, svg)) {
|
|
75
|
+
block-size: auto;
|
|
76
|
+
display: block;
|
|
77
|
+
inline-size: 100%;
|
|
78
|
+
max-inline-size: 100%;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* Intrinsic media ratios commonly resolve to fractional pixels once a hero is
|
|
82
|
+
allocated a fluid grid track. Snap only the media block to the active tier
|
|
83
|
+
baseline so the following semantic text remains on-grid; its inline track
|
|
84
|
+
and the surrounding Vanilla proportions remain unchanged. */
|
|
85
|
+
@supports (block-size: calc-size(auto, round(up, size, 1px))) {
|
|
86
|
+
:where(.bf-theme) :where(.bf-hero-media > .bf-aspect, .bf-hero-signpost > :where(img, picture, video, canvas, svg)) {
|
|
87
|
+
block-size: calc-size(auto, round(up, size, var(--bf-baseline)));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* A signpost is a compact associated mark, not a decorative background. */
|
|
92
|
+
:where(.bf-theme) :where(.bf-hero-signpost) {
|
|
93
|
+
align-self: start;
|
|
94
|
+
max-inline-size: var(--bf-measure);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/* Full-width media follows the paired title/content tracks. */
|
|
98
|
+
:where(.bf-theme) :where(.bf-hero-media.is-full) {
|
|
99
|
+
grid-column: 1 / -1;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/* A closing visual remains inside the hero after its lead. The hero's stack
|
|
103
|
+
owns their shallow internal separation. */
|
|
104
|
+
:where(.bf-theme) :where(.bf-hero) > :where(.bf-hero-media.is-full:last-child) {
|
|
105
|
+
inline-size: 100%;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/* Vanilla's desktop hero boundary is 1036px. The layout descendant responds
|
|
109
|
+
to the root container so embedding it in a narrower rail still collapses
|
|
110
|
+
correctly. */
|
|
111
|
+
/* The section boundary itself follows Vanilla's page-level desktop switch;
|
|
112
|
+
the composition below continues to react to the allocated container. */
|
|
113
|
+
@media (width >= 64.75rem) {
|
|
114
|
+
:where(.bf-theme) :where(.bf-hero) {
|
|
115
|
+
padding-block-end: var(--bf-section-space);
|
|
116
|
+
padding-block-start: calc(var(--bf-space-3) - var(--bf-border-width));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
:where(.bf-theme) :where(.bf-hero.is-borderless) {
|
|
120
|
+
padding-block-start: var(--bf-space-3);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
@container bf-hero (width >= 64.75rem) {
|
|
125
|
+
:where(.bf-theme) :where(.bf-hero-layout) {
|
|
126
|
+
column-gap: var(--bf-grid-gap-inline);
|
|
127
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
:where(.bf-theme) :where(.bf-hero.is-25-75) :where(.bf-hero-layout) {
|
|
131
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, 3fr);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
:where(.bf-theme) :where(.bf-hero.is-75-25) :where(.bf-hero-layout) {
|
|
135
|
+
grid-template-columns: minmax(0, 3fr) minmax(0, 1fr);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* A fallback puts its introduction above the text/media pair. */
|
|
139
|
+
:where(.bf-theme) :where(.bf-hero.is-fallback) :where(.bf-hero-intro) {
|
|
140
|
+
max-inline-size: calc((100cqi - var(--bf-grid-gap-inline)) / 2);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/* Vanilla can intentionally split the three proportioned layouts at its
|
|
145
|
+
medium threshold. The modifier changes only structural tracks. */
|
|
146
|
+
@container bf-hero (width >= 38.75rem) {
|
|
147
|
+
:where(.bf-theme) :where(.bf-hero.is-split-medium) :where(.bf-hero-layout) {
|
|
148
|
+
column-gap: var(--bf-grid-gap-inline);
|
|
149
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
:where(.bf-theme) :where(.bf-hero.is-split-medium.is-25-75) :where(.bf-hero-layout) {
|
|
153
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, 3fr);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
:where(.bf-theme) :where(.bf-hero.is-split-medium.is-75-25) :where(.bf-hero-layout) {
|
|
157
|
+
grid-template-columns: minmax(0, 3fr) minmax(0, 1fr);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/* Quote wrapper: a heading may introduce a series of quotes. When it does,
|
|
162
|
+
its top rule belongs to the wrapper boundary, not to the quote itself. */
|
|
163
|
+
:where(.bf-theme) :where(.bf-quote-wrapper) {
|
|
164
|
+
container-name: bf-quote-wrapper;
|
|
165
|
+
container-type: inline-size;
|
|
166
|
+
margin-block-end: var(--bf-section-space);
|
|
167
|
+
min-inline-size: 0;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
:where(.bf-theme) :where(.bf-quote-wrapper.is-shallow) {
|
|
171
|
+
margin-block-end: var(--bf-section-space-shallow);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-header, .bf-quote-wrapper-layout, .bf-quote-wrapper-signpost, .bf-quote-wrapper-content, .bf-quote-wrapper-citation, .bf-quote-wrapper-media) {
|
|
175
|
+
min-inline-size: 0;
|
|
176
|
+
overflow-wrap: anywhere;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-header) {
|
|
180
|
+
display: grid;
|
|
181
|
+
grid-template-columns: minmax(0, 1fr);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-layout) {
|
|
185
|
+
display: grid;
|
|
186
|
+
grid-template-columns: minmax(0, 1fr);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/* This class is a composition rail around the built-in prose blockquote, not
|
|
190
|
+
a second quotation type scale. The source may still contain rich semantic
|
|
191
|
+
inline markup and retains BF's metric compensation. */
|
|
192
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-prose) {
|
|
193
|
+
inline-size: min(100%, var(--bf-measure));
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-citation) {
|
|
197
|
+
color: var(--bf-color-text-muted);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-citation-name) {
|
|
201
|
+
color: var(--bf-color-text-default);
|
|
202
|
+
font-weight: var(--bf-h6-font-weight);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-signpost) {
|
|
206
|
+
align-self: start;
|
|
207
|
+
max-inline-size: 100%;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-signpost > :where(img, picture, svg)) {
|
|
211
|
+
block-size: auto;
|
|
212
|
+
display: block;
|
|
213
|
+
inline-size: auto;
|
|
214
|
+
max-inline-size: 100%;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/* The quote rail can also be a fractional grid track. Keep its media from
|
|
218
|
+
introducing a sub-baseline row while leaving quotation and citation rhythm
|
|
219
|
+
entirely baseline-compensated while its stack owns semantic gaps. */
|
|
220
|
+
@supports (block-size: calc-size(auto, round(up, size, 1px))) {
|
|
221
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-signpost > :where(img, picture, svg), .bf-quote-wrapper-media > .bf-aspect) {
|
|
222
|
+
block-size: calc-size(auto, round(up, size, var(--bf-baseline)));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-quote-row) {
|
|
227
|
+
display: grid;
|
|
228
|
+
grid-template-columns: minmax(0, 1fr);
|
|
229
|
+
min-inline-size: 0;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
@container bf-quote-wrapper (width >= 38.75rem) {
|
|
233
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-header) {
|
|
234
|
+
column-gap: var(--bf-grid-gap-inline);
|
|
235
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-header-link) {
|
|
239
|
+
grid-column: 4;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-layout) {
|
|
243
|
+
column-gap: var(--bf-grid-gap-inline);
|
|
244
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, 3fr);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/* Vanilla offsets a quote block without a signpost into the content rail. */
|
|
248
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-content:only-child) {
|
|
249
|
+
grid-column: 2;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-quote-row) {
|
|
253
|
+
column-gap: var(--bf-grid-gap-inline);
|
|
254
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
@container bf-quote-wrapper (width >= 64.75rem) {
|
|
259
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-quote-row) {
|
|
260
|
+
grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
`;
|
|
264
|
+
}
|