@beehexa/design-rules 2611.3.3 → 2611.4.1
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/README.md +1 -1
- package/dist/AGENTS.md +1 -7
- package/dist/catalog.json +153 -125
- package/dist/docs/scripts/color-pairs.mjs +5 -1
- package/dist/docs/scripts/token-utils.mjs +16 -1
- package/dist/docs/src/components/ColorDemo.astro +5 -5
- package/dist/docs/src/components/ElevationDemo.astro +196 -0
- package/dist/docs/src/components/LayoutDemo.astro +1 -1
- package/dist/docs/src/components/OpacityDemo.astro +95 -0
- package/dist/docs/src/components/ShapeDemo.astro +11 -10
- package/dist/docs/src/components/ShapePin.astro +5 -3
- package/dist/docs/src/components/ZIndexDemo.astro +102 -0
- package/dist/docs/src/content/foundations/styles/border.mdx +3 -3
- package/dist/docs/src/content/foundations/styles/color/usage.mdx +11 -4
- package/dist/docs/src/content/foundations/styles/data-visualization.mdx +74 -6
- package/dist/docs/src/content/foundations/styles/elevation.mdx +66 -3
- package/dist/docs/src/content/foundations/styles/icons/usage.mdx +9 -6
- package/dist/docs/src/content/foundations/styles/layout/app-frame.mdx +10 -0
- package/dist/docs/src/content/foundations/styles/opacity.mdx +43 -5
- package/dist/docs/src/content/foundations/styles/size-and-density.mdx +7 -0
- package/dist/docs/src/content/foundations/styles/typography/code.mdx +1 -1
- package/dist/docs/src/content/foundations/styles/z-index.mdx +63 -5
- package/dist/docs/src/content/tools/ant-design-vue-theme.mdx +125 -18
- package/dist/docs/src/content/tools/application-content.mdx +42 -0
- package/dist/docs/src/content/tools/editors.mdx +27 -0
- package/dist/docs/src/content/tools/mermaid.mdx +95 -0
- package/dist/docs/src/content/tools/vueflow.mdx +121 -0
- package/dist/docs/src/content-vi/foundations/styles/border.mdx +3 -3
- package/dist/docs/src/content-vi/foundations/styles/color/usage.mdx +11 -4
- package/dist/docs/src/content-vi/foundations/styles/data-visualization.mdx +75 -6
- package/dist/docs/src/content-vi/foundations/styles/elevation.mdx +75 -0
- package/dist/docs/src/content-vi/foundations/styles/icons/usage.mdx +9 -6
- package/dist/docs/src/content-vi/foundations/styles/layout/app-frame.mdx +10 -0
- package/dist/docs/src/content-vi/foundations/styles/opacity.mdx +43 -5
- package/dist/docs/src/content-vi/foundations/styles/size-and-density.mdx +7 -0
- package/dist/docs/src/content-vi/foundations/styles/typography/code.mdx +1 -1
- package/dist/docs/src/content-vi/foundations/styles/z-index.mdx +63 -5
- package/dist/docs/src/lib/token-descriptions-vi.ts +21 -5
- package/dist/docs/src/styles/chrome.css +14 -14
- package/dist/docs/src/styles/color.css +19 -32
- package/dist/docs/src/styles/docs.css +18 -34
- package/dist/docs/src/styles/elevation.css +83 -0
- package/dist/docs/src/styles/global.css +1 -10
- package/dist/docs/src/styles/icons.css +11 -15
- package/dist/docs/src/styles/kit.css +112 -0
- package/dist/docs/src/styles/layout.css +1 -6
- package/dist/docs/src/styles/opacity.css +43 -0
- package/dist/docs/src/styles/shapes.css +15 -19
- package/dist/docs/src/styles/tokens.css +1282 -3
- package/dist/docs/src/styles/tokens.js +358 -3
- package/dist/docs/src/styles/typography.css +4 -7
- package/dist/docs/src/styles/zindex.css +56 -0
- package/dist/docs/tokens/border.json +1 -1
- package/dist/docs/tokens/color.json +57 -3
- package/dist/docs/tokens/content.json +19 -0
- package/dist/docs/tokens/diagram.json +48 -0
- package/dist/docs/tokens/editor.json +129 -0
- package/dist/docs/tokens/elevation.json +15 -5
- package/dist/docs/tokens/flow.json +497 -0
- package/dist/docs/tokens/opacity.json +9 -0
- package/dist/docs/tokens/resize.json +67 -0
- package/dist/docs/tokens/size.json +6 -0
- package/dist/docs/tokens/spacing.json +4 -4
- package/dist/docs/tokens/typography.json +5 -0
- package/dist/docs/tokens/visualization.json +123 -0
- package/dist/docs/tokens/z-index.json +49 -0
- package/dist/index.js +153 -125
- package/package.json +1 -1
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
.sidebar-item { padding: 0 var(--bh-space-150); }
|
|
33
33
|
.sidebar-item > span:first-child, .sidebar-child > span:first-child { flex: 1; }
|
|
34
34
|
.sidebar-item:hover, .sidebar-child:hover { background: var(--c-hover); }
|
|
35
|
-
.sidebar-item[aria-current='page'] { background: var(--c-selected); box-shadow: inset
|
|
35
|
+
.sidebar-item[aria-current='page'] { background: var(--c-selected); box-shadow: inset var(--bh-border-width-selected) 0 0 var(--c-gold); }
|
|
36
36
|
.sidebar-item[aria-current='page']:hover, .sidebar-child[aria-current='page']:hover { background: var(--c-selected-hover); }
|
|
37
37
|
.sidebar-chevron { flex: none; color: var(--c-muted); transition: transform 200ms cubic-bezier(0.2, 0, 0, 1); }
|
|
38
38
|
.sidebar-item[aria-expanded='true'] .sidebar-chevron { transform: rotate(90deg); }
|
|
@@ -98,8 +98,8 @@
|
|
|
98
98
|
/* Release phase label, learned from GitHub Primer's Label: a pill with a 1 px border in the role
|
|
99
99
|
colour, text in the role's fg colour and no fill, 20 px tall. The words carry the meaning;
|
|
100
100
|
the colour only helps scanning. */
|
|
101
|
-
.status-badge { display: inline-flex; align-items: center; height:
|
|
102
|
-
.status-badge.is-large { height: var(--bh-size-control-small); padding: 0
|
|
101
|
+
.status-badge { display: inline-flex; align-items: center; height: var(--bh-space-250); padding: 0 var(--bh-space-075); border: var(--bh-border-width-default) solid var(--bh-color-border); border-radius: var(--bh-radius-full); color: var(--bh-color-text); background: transparent; text-decoration: none; white-space: nowrap; font: var(--bh-font-label-small); }
|
|
102
|
+
.status-badge.is-large { height: var(--bh-size-control-small); padding: 0 var(--bh-space-100); }
|
|
103
103
|
.status-early-access { border-color: var(--bh-color-border-brand); }
|
|
104
104
|
.status-beta { border-color: var(--bh-color-border-info); color: var(--bh-color-text-info); }
|
|
105
105
|
.status-ga { border-color: var(--bh-color-border-success); color: var(--bh-color-text-success); }
|
|
@@ -110,7 +110,7 @@ a.status-badge:hover { text-decoration: underline; }
|
|
|
110
110
|
.component-tabs { display: flex; gap: var(--bh-space-300); margin: var(--bh-space-300) 0 0; padding: 0; border-top: 0; color: inherit; overflow-x: auto; }
|
|
111
111
|
.component-tabs a { display: flex; align-items: center; height: var(--bh-size-control-default); padding: 0; border-bottom: var(--bh-border-width-selected) solid transparent; color: var(--c-muted); text-decoration: none; white-space: nowrap; font: var(--bh-font-label-default); }
|
|
112
112
|
.component-tabs a:hover { color: var(--c-ink); }
|
|
113
|
-
.component-tabs a[aria-current='page'] { border-bottom-color: var(--c-
|
|
113
|
+
.component-tabs a[aria-current='page'] { border-bottom-color: var(--c-gold); color: var(--c-ink); }
|
|
114
114
|
|
|
115
115
|
/* Body text. */
|
|
116
116
|
.prose { container: prose / inline-size; padding-top: var(--bh-space-300); font: var(--bh-font-body-large); }
|
|
@@ -132,7 +132,7 @@ a.status-badge:hover { text-decoration: underline; }
|
|
|
132
132
|
.prose th, .prose td { padding: var(--bh-space-100) var(--bh-space-150); border-bottom: 1px solid var(--c-line); text-align: left; vertical-align: baseline; } /* first lines share a baseline, even when code sits next to text */
|
|
133
133
|
.prose th { color: var(--c-muted); font: var(--bh-font-label-small); }
|
|
134
134
|
.prose td code { overflow-wrap: anywhere; } /* long token names wrap instead of widening the page */
|
|
135
|
-
.prose blockquote, .callout { margin: 0 0 var(--bh-space-300); padding: calc(var(--bh-space-200) -
|
|
135
|
+
.prose blockquote, .callout { margin: 0 0 var(--bh-space-300); padding: calc(var(--bh-space-200) - var(--bh-border-width-default)); border: 1px solid var(--c-note-line); border-radius: var(--bh-radius-100); background: var(--c-note-bg); }
|
|
136
136
|
.prose blockquote p, .callout p { margin: 0; }
|
|
137
137
|
.callout-title { margin-bottom: var(--bh-space-050) !important; font: var(--bh-font-heading-xsmall); }
|
|
138
138
|
|
|
@@ -149,14 +149,14 @@ a.status-badge:hover { text-decoration: underline; }
|
|
|
149
149
|
/* Cards. */
|
|
150
150
|
.card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--bh-space-200); margin: 0 0 var(--bh-space-200); padding: 0 !important; list-style: none; }
|
|
151
151
|
.card-grid > li { margin: 0 !important; }
|
|
152
|
-
.card { display: block; height: 100%; padding: calc(var(--bh-space-300) -
|
|
153
|
-
.card:hover { border-color: var(--
|
|
152
|
+
.card { display: block; height: 100%; padding: calc(var(--bh-space-300) - var(--bh-border-width-default)); border: 1px solid var(--c-line); border-radius: var(--bh-radius-150); color: var(--c-ink) !important; background: var(--bh-color-surface); box-shadow: var(--bh-elevation-shadow-raised); text-decoration: none; transition: border-color 150ms ease; font: var(--bh-font-heading-small); }
|
|
153
|
+
.card:hover { border-color: var(--bh-color-border-bold); }
|
|
154
154
|
.card p { margin: var(--bh-space-050) 0 var(--bh-space-150); color: var(--c-muted) !important; font: var(--bh-font-body-default); }
|
|
155
155
|
.child-pages h2 { margin-top: var(--bh-space-500); }
|
|
156
156
|
|
|
157
157
|
/* Previous / next and page meta. */
|
|
158
158
|
.pager { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--bh-space-200); margin-top: var(--bh-space-600); }
|
|
159
|
-
.pager-link { display: grid; gap: var(--bh-space-050); padding: calc(var(--bh-space-200) -
|
|
159
|
+
.pager-link { display: grid; gap: var(--bh-space-050); padding: calc(var(--bh-space-200) - var(--bh-border-width-default)); border: 1px solid var(--c-line); border-radius: var(--bh-radius-150); color: var(--c-ink); text-decoration: none; }
|
|
160
160
|
.pager-link:hover { border-color: var(--c-muted); }
|
|
161
161
|
.pager-link span { color: var(--c-muted); font: var(--bh-font-body-small); }
|
|
162
162
|
.pager-link b { font: var(--bh-font-heading-small); }
|
|
@@ -166,7 +166,7 @@ a.status-badge:hover { text-decoration: underline; }
|
|
|
166
166
|
.page-meta a:hover { color: var(--c-ink); }
|
|
167
167
|
|
|
168
168
|
/* Pages listed before their content is written. */
|
|
169
|
-
.in-development { display: flex; gap: var(--bh-space-200); padding: calc(var(--bh-space-300) -
|
|
169
|
+
.in-development { display: flex; gap: var(--bh-space-200); padding: calc(var(--bh-space-300) - var(--bh-border-width-default)); border: 1px dashed var(--c-muted); border-radius: var(--bh-radius-150); background: var(--c-surf); }
|
|
170
170
|
.in-development-icon { flex: none; display: grid; place-items: center; width: var(--bh-space-500); height: var(--bh-space-500); border-radius: var(--bh-radius-100); color: var(--bh-color-text-on-brand); background: var(--bh-color-background-brand-subtle); box-shadow: inset 0 0 0 1px var(--bh-color-border-brand-subtle); }
|
|
171
171
|
.in-development p { margin: 0 0 var(--bh-space-100); }
|
|
172
172
|
.in-development p:last-child { margin-bottom: 0; }
|
|
@@ -181,27 +181,11 @@ a.status-badge:hover { text-decoration: underline; }
|
|
|
181
181
|
.prose .code-example pre { margin: 0; border-radius: var(--bh-radius-0); }
|
|
182
182
|
|
|
183
183
|
/* Demo styles for component examples, until the component library ships. */
|
|
184
|
-
.bh-button { display: inline-flex; align-items: center; gap: var(--bh-space-050); height: var(--bh-size-control-default); padding: 0 calc(var(--bh-space-150) - var(--bh-border-width-default)); border: var(--bh-border-width-default) solid var(--bh-color-border); border-radius: var(--bh-radius-100); background: var(--bh-color-surface-page); color: var(--bh-color-text); cursor: pointer; transition: background var(--bh-motion-duration-fast) var(--bh-motion-easing-standard); font: var(--bh-font-label-default); }
|
|
185
|
-
.bh-button:hover { background: var(--bh-color-background-neutral-subtle-hover); }
|
|
186
|
-
.bh-button:focus-visible { outline: var(--bh-border-width-focused) solid var(--bh-color-border-focus); outline-offset: var(--bh-state-focus-offset); }
|
|
187
|
-
.bh-button-primary { border-color: var(--bh-color-background-neutral-bold); background: var(--bh-color-background-neutral-bold); color: var(--bh-color-text-inverse); }
|
|
188
|
-
.bh-button-primary:hover { border-color: var(--bh-color-background-neutral-bold-hover); background: var(--bh-color-background-neutral-bold-hover); }
|
|
189
|
-
.bh-button-danger { border-color: var(--bh-color-background-danger-bold); background: var(--bh-color-background-danger-bold); color: var(--bh-color-text-on-bold); }
|
|
190
|
-
.bh-button-danger:hover { border-color: var(--bh-color-background-danger-bold-hover); background: var(--bh-color-background-danger-bold-hover); }
|
|
191
|
-
.bh-button:disabled, .bh-button:disabled:hover { border-color: var(--bh-color-border-disabled); color: var(--bh-color-text-disabled); background: var(--bh-color-background-disabled); cursor: not-allowed; }
|
|
192
184
|
|
|
193
185
|
/* Label and state label, learned from GitHub Primer (@primer/react Label and StateLabel).
|
|
194
186
|
Label: outlined pill, 1 px border in the role's emphasis colour, text in its fg colour, no
|
|
195
187
|
fill; 20 px tall with 6 px padding (large: 24 px, 8 px). State label: solid emphasis fill,
|
|
196
188
|
white text and an icon. */
|
|
197
|
-
.bh-label { display: inline-flex; align-items: center; height: 20px; padding: 0 calc(var(--bh-space-100) - 1px); border: var(--bh-border-width-default) solid var(--bh-color-border); border-radius: var(--bh-radius-full); color: var(--bh-color-text); background: transparent; white-space: nowrap; font: var(--bh-font-label-small); }
|
|
198
|
-
.bh-label.is-large { height: var(--bh-size-control-small); padding: 0 calc(var(--bh-space-100) - 1px); }
|
|
199
|
-
.bh-label.is-brand { border-color: var(--bh-color-border-brand); }
|
|
200
|
-
.bh-label.is-info { border-color: var(--bh-color-border-info); color: var(--bh-color-text-info); }
|
|
201
|
-
.bh-label.is-success { border-color: var(--bh-color-border-success); color: var(--bh-color-text-success); }
|
|
202
|
-
.bh-label.is-warning { border-color: var(--bh-color-border-warning); color: var(--bh-color-text-warning); }
|
|
203
|
-
.bh-label.is-danger { border-color: var(--bh-color-border-danger); color: var(--bh-color-text-danger); }
|
|
204
|
-
.bh-label.is-neutral { border-color: var(--bh-color-border-bold); color: var(--bh-color-text-subtle); }
|
|
205
189
|
.bh-state { display: inline-flex; align-items: center; gap: var(--bh-space-050); height: var(--bh-size-control-default); padding: 0 var(--bh-space-150); border-radius: var(--bh-radius-full); color: var(--bh-color-text-on-bold); white-space: nowrap; font: var(--bh-font-heading-xsmall); }
|
|
206
190
|
.bh-state svg { flex: none; }
|
|
207
191
|
.bh-state.is-info { background: var(--bh-color-background-info-bold); }
|
|
@@ -217,7 +201,7 @@ a.status-badge:hover { text-decoration: underline; }
|
|
|
217
201
|
|
|
218
202
|
/* Below lg (1024 px) the side navigation is a drawer and a bar under the header opens it and
|
|
219
203
|
the folded table of contents. */
|
|
220
|
-
.docs-mobilebar { position: sticky; z-index:
|
|
204
|
+
.docs-mobilebar { position: sticky; z-index: var(--bh-z-index-sticky); top: var(--header-bottom); box-sizing: content-box; display: flex; align-items: center; justify-content: space-between; gap: var(--bh-space-150); height: var(--header-h); padding: 0 var(--page-margin); border-bottom: 1px solid var(--c-line); background: var(--c-bg); font: var(--bh-font-label-default); }
|
|
221
205
|
.drawer-open { display: flex; align-items: center; gap: var(--bh-space-050); min-width: 0; height: var(--bh-size-control-default); padding: 0; border: 0; color: var(--c-ink); background: none; font: inherit; cursor: pointer; }
|
|
222
206
|
.drawer-open-label { overflow: hidden; color: var(--c-muted); text-overflow: ellipsis; white-space: nowrap; }
|
|
223
207
|
.drawer-open-label b { color: var(--c-ink); }
|
|
@@ -225,22 +209,22 @@ a.status-badge:hover { text-decoration: underline; }
|
|
|
225
209
|
.toc-menu summary { display: flex; align-items: center; height: var(--bh-size-control-default); color: var(--c-muted); cursor: pointer; list-style: none; }
|
|
226
210
|
.toc-menu summary::-webkit-details-marker { display: none; }
|
|
227
211
|
.toc-menu summary::after { content: ' ▾'; }
|
|
228
|
-
.toc-menu nav { position: absolute; top: calc(100% + var(--bh-space-050)); right: 0; width: min(300px, calc(100vw - 2 * var(--page-margin))); max-height: 60vh; padding: var(--bh-space-
|
|
212
|
+
.toc-menu nav { position: absolute; top: calc(100% + var(--bh-space-050)); right: 0; width: min(300px, calc(100vw - 2 * var(--page-margin))); max-height: 60vh; padding: var(--bh-space-050); overflow-y: auto; border-radius: var(--bh-radius-100); background: var(--bh-color-surface-overlay); box-shadow: var(--c-shadow); }
|
|
229
213
|
.toc-menu a { display: flex; align-items: center; min-height: var(--bh-size-control-default); padding: 0 var(--bh-space-150); border-radius: var(--bh-radius-050); color: var(--c-ink); text-decoration: none; font: var(--bh-font-label-default); }
|
|
230
214
|
.toc-menu .toc-depth-3 a { padding-left: var(--bh-space-300); color: var(--c-muted); }
|
|
231
|
-
.toc-menu a:hover { background: var(--
|
|
215
|
+
.toc-menu a:hover { background: var(--bh-color-surface-overlay-hover); }
|
|
232
216
|
|
|
233
|
-
.sidebar { position: fixed; z-index:
|
|
217
|
+
.sidebar { --c-hover: var(--bh-color-surface-overlay-hover); --c-selected: var(--bh-color-surface-overlay-selected); --c-selected-hover: var(--bh-color-surface-overlay-selected-hover); position: fixed; z-index: var(--bh-z-index-modal); top: 0; bottom: 0; left: 0; width: min(var(--sidebar-w), 86vw); height: auto; border-right: 0; background: var(--bh-color-surface-overlay); box-shadow: var(--bh-elevation-shadow-modal); transform: translateX(-105%); transition: transform 200ms ease; visibility: hidden; }
|
|
234
218
|
body[data-drawer] .sidebar { transform: none; visibility: visible; }
|
|
235
219
|
.drawer-backdrop { display: none; }
|
|
236
|
-
.drawer-backdrop:not([hidden]) { position: fixed; z-index:
|
|
220
|
+
.drawer-backdrop:not([hidden]) { position: fixed; z-index: var(--bh-z-index-modal); inset: 0; display: block; background: var(--bh-color-surface-scrim); }
|
|
237
221
|
|
|
238
222
|
/* Tables marked stackable are one card per row in a narrow column, and a table once the column is 720 px wide. */
|
|
239
223
|
.prose table.stackable, .prose table.stackable tbody, .prose table.stackable tr, .prose table.stackable td { display: block; width: 100%; }
|
|
240
224
|
.prose table.stackable thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
|
|
241
225
|
.prose table.stackable tr { margin-bottom: var(--bh-space-150); padding: var(--bh-space-050) 0; border: 1px solid var(--c-line); border-radius: var(--bh-radius-100); }
|
|
242
226
|
/* The cell stays one block, so text, code and links inside it flow as one line of text; the label sits in the left column. */
|
|
243
|
-
.prose table.stackable td { position: relative; display: block; min-height: var(--bh-space-500); padding: var(--bh-space-100) var(--bh-space-150) var(--bh-space-100) calc(
|
|
227
|
+
.prose table.stackable td { position: relative; display: block; min-height: var(--bh-space-500); --label-w: 7rem; padding: var(--bh-space-100) var(--bh-space-150) var(--bh-space-100) calc(var(--label-w) + 2 * var(--bh-space-150)); border: 0; }
|
|
244
228
|
.prose table.stackable td::before { content: attr(data-label); position: absolute; top: var(--bh-space-100); left: var(--bh-space-150); width: 7rem; color: var(--c-muted); font: var(--bh-font-label-small); }
|
|
245
229
|
@container prose (min-width: 720px) {
|
|
246
230
|
.prose table.stackable { display: table; }
|
|
@@ -262,7 +246,7 @@ body[data-drawer] .sidebar { transform: none; visibility: visible; }
|
|
|
262
246
|
.docs-grid { grid-template-columns: var(--sidebar-w) minmax(0, 1fr); }
|
|
263
247
|
.docs-grid.no-sidebar { grid-template-columns: minmax(0, 1fr); }
|
|
264
248
|
.docs-mobilebar { display: none; }
|
|
265
|
-
.sidebar { position: sticky; z-index: auto; top: var(--header-bottom); bottom: auto; width: auto; height: calc(100vh - var(--header-bottom)); box-shadow: none; transform: none; transition: none; visibility: visible; }
|
|
249
|
+
.sidebar { --c-hover: var(--bh-color-background-neutral-subtle-hover); --c-selected: var(--bh-color-background-selected); --c-selected-hover: var(--bh-color-background-selected-hover); background: var(--c-bg); border-right: var(--bh-border-width-default) solid var(--c-line); position: sticky; z-index: auto; top: var(--header-bottom); bottom: auto; width: auto; height: calc(100vh - var(--header-bottom)); box-shadow: none; transform: none; transition: none; visibility: visible; }
|
|
266
250
|
.sidebar-head { display: none; }
|
|
267
251
|
.drawer-backdrop:not([hidden]) { display: none; }
|
|
268
252
|
}
|
|
@@ -280,7 +264,7 @@ body[data-drawer] .sidebar { transform: none; visibility: visible; }
|
|
|
280
264
|
|
|
281
265
|
/* Get started. */
|
|
282
266
|
.role-cards { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--bh-space-200); margin-bottom: var(--bh-space-200); }
|
|
283
|
-
.role-card { padding: calc(var(--bh-space-300) -
|
|
267
|
+
.role-card { padding: calc(var(--bh-space-300) - var(--bh-border-width-default)); border: 1px solid var(--c-line); border-radius: var(--bh-radius-150); background: var(--bh-color-surface); box-shadow: var(--bh-elevation-shadow-raised); }
|
|
284
268
|
.prose .role-card h3 { margin: 0 0 var(--bh-space-050); font: var(--bh-font-heading-small); }
|
|
285
269
|
.prose .role-card h3 a { color: var(--c-ink); text-decoration: none; }
|
|
286
270
|
.prose .role-card h3 a:hover { text-decoration: underline; }
|
|
@@ -309,7 +293,7 @@ body[data-drawer] .sidebar { transform: none; visibility: visible; }
|
|
|
309
293
|
/* A 40 px button on small screens, the default 32 px from md. */
|
|
310
294
|
@media (min-width: 768px) { .prose .button-dark { justify-content: flex-start; height: var(--bh-size-control-default); padding: 0 var(--bh-space-150); } }
|
|
311
295
|
/* Under /vi/, a page shown in English says so above its title. */
|
|
312
|
-
.lang-notice { margin: 0 0 var(--bh-space-150); padding: calc(var(--bh-space-100) -
|
|
296
|
+
.lang-notice { margin: 0 0 var(--bh-space-150); padding: calc(var(--bh-space-100) - var(--bh-border-width-default)) calc(var(--bh-space-150) - var(--bh-border-width-default)); border: 1px solid var(--c-note-line); border-radius: var(--bh-radius-100); color: var(--c-ink); background: var(--c-note-bg); font: var(--bh-font-body-default); }
|
|
313
297
|
|
|
314
298
|
/* Moving between pages: the page fades across instead of flashing white, while the header and
|
|
315
299
|
the sidebar stay put (cross-document view transitions; browsers without them load as before). */
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/* Illustrations for the Elevation page. Surfaces, shadows, edges and sizes are tokens only. */
|
|
2
|
+
.bh-scope-light, .bh-scope-dark { color: var(--bh-color-text); background: var(--bh-color-surface-page); }
|
|
3
|
+
|
|
4
|
+
/* Hero: the three levels from the front and from the side (as on Material's elevation page). */
|
|
5
|
+
.el-hero { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--bh-space-200); margin: var(--bh-space-300) 0; }
|
|
6
|
+
@container prose (min-width: 640px) { .el-hero { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
|
|
7
|
+
.el-view { display: grid; grid-template-rows: 1fr auto; margin: 0; overflow: hidden; border: var(--bh-border-width-default) solid var(--bh-color-border); border-radius: var(--bh-radius-150); }
|
|
8
|
+
.el-view figcaption { padding: var(--bh-space-100) var(--bh-space-200); border-top: var(--bh-border-width-default) solid var(--bh-color-border); color: var(--bh-color-text-subtle); font: var(--bh-font-body-small); }
|
|
9
|
+
.el-front { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); align-items: center; gap: var(--bh-space-200); min-height: calc(3 * var(--bh-space-800)); padding: var(--bh-space-400) var(--bh-space-300); background: var(--bh-color-surface-page); }
|
|
10
|
+
.el-plate { display: grid; place-items: end start; aspect-ratio: 1; padding: var(--bh-space-100); border-radius: var(--bh-radius-150); background: var(--bh-color-surface); }
|
|
11
|
+
.el-plate b { color: var(--bh-color-text-subtle); font: var(--bh-font-label-small); }
|
|
12
|
+
.el-plate.is-page { background: transparent; border: var(--bh-border-width-default) dashed var(--bh-color-border-bold); }
|
|
13
|
+
.el-plate.is-raised { border: var(--bh-border-width-default) solid var(--bh-color-border); box-shadow: var(--bh-elevation-shadow-raised); }
|
|
14
|
+
.el-plate.is-overlay { background: var(--bh-color-surface-overlay); box-shadow: var(--bh-elevation-shadow-overlay); }
|
|
15
|
+
.el-plate.is-modal { background: var(--bh-color-surface-overlay); box-shadow: var(--bh-elevation-shadow-modal); }
|
|
16
|
+
.el-side { display: grid; align-content: end; gap: var(--bh-space-300); min-height: calc(3 * var(--bh-space-800)); padding: var(--bh-space-300) var(--bh-space-300) 0; background: var(--bh-color-surface-page); }
|
|
17
|
+
.el-bar { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: var(--bh-space-025) var(--bh-space-150); }
|
|
18
|
+
.el-bar i { grid-row: span 2; width: calc(2 * var(--bh-space-800)); height: var(--bh-space-400); border-radius: var(--bh-radius-100); background: var(--bh-color-surface); }
|
|
19
|
+
.el-bar.is-raised i { border: var(--bh-border-width-default) solid var(--bh-color-border); box-shadow: var(--bh-elevation-shadow-raised); }
|
|
20
|
+
.el-bar.is-overlay i { background: var(--bh-color-surface-overlay); box-shadow: var(--bh-elevation-shadow-overlay); }
|
|
21
|
+
.el-bar.is-modal i { background: var(--bh-color-surface-overlay); box-shadow: var(--bh-elevation-shadow-modal); }
|
|
22
|
+
.el-bar code { font: var(--bh-font-code-default); font-size: var(--bh-font-size-100); color: var(--bh-color-text); }
|
|
23
|
+
.el-bar em { color: var(--bh-color-text-subtle); font: var(--bh-font-body-small); font-style: normal; }
|
|
24
|
+
.el-ground { display: block; margin: var(--bh-space-100) calc(-1 * var(--bh-space-300)) 0; padding: var(--bh-space-050) var(--bh-space-300); border-top: var(--bh-border-width-default) solid var(--bh-color-border-bold); background: var(--bh-color-surface-page); }
|
|
25
|
+
.el-ground code { font: var(--bh-font-code-default); font-size: var(--bh-font-size-100); color: var(--bh-color-text-subtle); }
|
|
26
|
+
|
|
27
|
+
/* Examples: the level's real component on the page colour, so the shadow reads as it will in the product. */
|
|
28
|
+
.el-ex { background: var(--bh-color-surface-page); }
|
|
29
|
+
.el-ex.is-top { align-items: flex-start; padding-bottom: calc(var(--bh-space-1000) + var(--bh-space-200)); }
|
|
30
|
+
.el-card { display: grid; gap: var(--bh-space-050); width: min(100%, 16rem); }
|
|
31
|
+
.el-card.is-wide { width: 16rem; }
|
|
32
|
+
.el-anchor { display: grid; justify-items: start; gap: var(--bh-space-050); }
|
|
33
|
+
.el-menu { min-width: 11rem; }
|
|
34
|
+
/* Menu rows follow the site menus: a default-height control, 12 px side padding, 4 px items in an 8 px menu with 4 px padding. */
|
|
35
|
+
.el-menu > .sh-pin { display: flex; }
|
|
36
|
+
.el-menu > .sh-pin > span:first-child { flex: 1; }
|
|
37
|
+
.el-btn-icon { gap: var(--bh-space-050); }
|
|
38
|
+
.el-btn-icon svg { flex: none; color: var(--bh-color-icon); }
|
|
39
|
+
.el-menu.is-list { width: 11rem; min-width: 0; }
|
|
40
|
+
|
|
41
|
+
.el-modal-ex { position: relative; overflow: hidden; min-height: calc(4 * var(--bh-space-800)); }
|
|
42
|
+
.el-page { position: absolute; inset: 0; }
|
|
43
|
+
.el-lines { display: grid; gap: var(--bh-space-150); padding: var(--bh-space-300); }
|
|
44
|
+
.el-lines i { height: var(--bh-space-150); border-radius: var(--bh-radius-full); background: var(--bh-color-skeleton); }
|
|
45
|
+
.el-lines i:nth-child(1) { width: 60%; }
|
|
46
|
+
.el-lines i:nth-child(3) { width: 75%; }
|
|
47
|
+
.el-scrim { position: absolute; inset: 0; background: var(--bh-color-surface-scrim); }
|
|
48
|
+
.el-modal-ex > .sh-pin { position: relative; }
|
|
49
|
+
.el-dialog { width: min(100%, 20rem); }
|
|
50
|
+
.el-actions { display: flex; justify-content: flex-end; gap: var(--bh-space-100); }
|
|
51
|
+
.el-scrim-pin { position: absolute; top: var(--bh-space-300); right: calc(var(--bh-space-1000) + var(--bh-space-200)); }
|
|
52
|
+
.el-dot { display: block; width: var(--bh-space-100); height: var(--bh-space-100); }
|
|
53
|
+
|
|
54
|
+
/* Light and dark side by side. */
|
|
55
|
+
.el-themes { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--bh-space-200); margin: var(--bh-space-300) 0; }
|
|
56
|
+
@container prose (min-width: 640px) { .el-themes:not(.is-stack) { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
|
|
57
|
+
.el-theme { margin: 0; overflow: hidden; border: var(--bh-border-width-default) solid var(--bh-color-border); border-radius: var(--bh-radius-150); }
|
|
58
|
+
.el-theme figcaption { padding: var(--bh-space-100) var(--bh-space-200); border-bottom: var(--bh-border-width-default) solid var(--bh-color-border); color: var(--bh-color-text-subtle); font: var(--bh-font-label-small); }
|
|
59
|
+
.el-theme-stage { position: relative; display: flex; flex-direction: column; align-items: center; gap: var(--bh-space-400); padding: var(--bh-space-800) var(--bh-space-300); }
|
|
60
|
+
.el-theme-stage > .sh-pin:first-child { position: absolute; top: var(--bh-space-200); left: var(--bh-space-500); }
|
|
61
|
+
.el-theme-stage.is-col { align-items: flex-end; padding: var(--bh-space-400) var(--bh-space-1000) var(--bh-space-400) var(--bh-space-300); }
|
|
62
|
+
@container prose (max-width: 560px) { .el-theme-stage { gap: calc(var(--bh-space-1000) + var(--bh-space-400)); padding-bottom: var(--bh-space-1000); } .el-theme-stage.is-col { align-items: center; padding-right: var(--bh-space-300); } .el-menu.is-list > .sh-pin + .sh-pin { margin-top: var(--bh-space-1000); } }
|
|
63
|
+
|
|
64
|
+
/* Do and don't. */
|
|
65
|
+
.el-panel { display: grid; gap: var(--bh-space-050); width: min(100%, 16rem); padding: var(--bh-space-300); border: var(--bh-border-width-default) solid var(--bh-color-border); border-radius: var(--bh-radius-150); background: var(--bh-color-surface); }
|
|
66
|
+
.el-panel b { color: var(--bh-color-text); font: var(--bh-font-heading-small); }
|
|
67
|
+
.el-panel span { color: var(--bh-color-text-subtle); font: var(--bh-font-body-default); }
|
|
68
|
+
.el-panel.is-shadowed { box-shadow: var(--bh-elevation-shadow-modal); }
|
|
69
|
+
.el-menu.is-wrong-surface .is-on { background: var(--bh-color-background-neutral-subtle-hover); }
|
|
70
|
+
.el-menu.is-own { box-shadow: var(--bh-elevation-shadow-raised), var(--bh-elevation-shadow-modal); }
|
|
71
|
+
.el-menu.is-bordered { border: var(--bh-border-width-default) solid var(--bh-color-border-bold); }
|
|
72
|
+
.sp-dd-stage.bh-scope-dark { background: var(--bh-color-surface-page); }
|
|
73
|
+
@container prose (max-width: 560px) { .el-ex { padding-bottom: calc(var(--bh-space-1000) + var(--bh-space-800)); } }
|
|
74
|
+
@container prose (max-width: 560px) { .sh-ex.el-ex, .sh-ex.el-ex.is-top { padding-bottom: calc(2 * var(--bh-space-1000) + var(--bh-space-200)); } .el-theme-stage, .el-theme-stage.is-col { padding-bottom: calc(2 * var(--bh-space-1000)); } }
|
|
75
|
+
/* Examples with a pin to the left: the element moves right so the label has room. */
|
|
76
|
+
.sh-ex.el-ex.is-pin-left { justify-content: flex-end; padding-right: calc(2 * var(--bh-space-1000)); }
|
|
77
|
+
.el-modal-ex .el-scrim-pin { right: auto; left: calc(var(--bh-space-1000) + var(--bh-space-600)); top: auto; bottom: calc(var(--bh-space-1000) + var(--bh-space-400)); }
|
|
78
|
+
.el-theme-stage:not(.is-col) { align-items: flex-end; padding-right: calc(2 * var(--bh-space-1000)); }
|
|
79
|
+
@container prose (max-width: 560px) {
|
|
80
|
+
.sh-ex.el-ex.is-pin-left { justify-content: center; padding-right: var(--bh-space-300); }
|
|
81
|
+
.el-theme-stage:not(.is-col), .el-theme-stage.is-col { align-items: flex-start; padding-right: var(--bh-space-300); }
|
|
82
|
+
.el-modal-ex .el-scrim-pin { left: auto; right: calc(var(--bh-space-1000) + var(--bh-space-600)); top: var(--bh-space-100); }
|
|
83
|
+
}
|
|
@@ -34,15 +34,6 @@ html { scroll-behavior: smooth; scroll-padding-top: var(--bh-space-1000); scroll
|
|
|
34
34
|
(16 px by default), because every size token is in rem. */
|
|
35
35
|
body { margin: 0; min-width: 320px; overflow-x: hidden; font: var(--bh-font-body-default); }
|
|
36
36
|
/* Bold inside text is semibold: 700 belongs to the display styles only. */
|
|
37
|
-
/* Inter character variants, on everywhere (decided 27/10/2026): cv05 gives lowercase l a tail and
|
|
38
|
-
cv08 gives uppercase I serifs, so l, I and 1 never look alike in names, IDs and keys.
|
|
39
|
-
Every text style is applied with the `font` shorthand, and the shorthand resets
|
|
40
|
-
font-feature-settings to normal, so inheritance alone can't carry the features. This rule sets
|
|
41
|
-
them on every element from one variable; change the variable, not the property:
|
|
42
|
-
`--bh-font-features: "cv05", "cv08", "zero"` adds the slashed zero to a code value.
|
|
43
|
-
JetBrains Mono has no cv05 or cv08, so code is not affected. */
|
|
44
|
-
:root { --bh-font-features: "cv05", "cv08"; }
|
|
45
|
-
*, ::before, ::after { font-feature-settings: var(--bh-font-features) !important; }
|
|
46
37
|
b, strong { font-weight: var(--bh-font-weight-semibold); }
|
|
47
38
|
h1, h2, h3, h4, h5, h6 { font-weight: var(--bh-font-weight-semibold); }
|
|
48
39
|
code, kbd, pre, samp { font-family: var(--bh-font-family-mono); }
|
|
@@ -51,7 +42,7 @@ button, a { -webkit-tap-highlight-color: transparent; }
|
|
|
51
42
|
a { color: inherit; }
|
|
52
43
|
svg { display: block; }
|
|
53
44
|
|
|
54
|
-
.skip-link { position: fixed; z-index:
|
|
45
|
+
.skip-link { position: fixed; z-index: var(--bh-z-index-toast); top: -5rem; left: 1rem; display: inline-flex; align-items: center; height: var(--bh-size-control-default); padding: 0 var(--bh-space-150); border-radius: var(--bh-radius-100); color: var(--bh-color-text-inverse); background: var(--bh-color-background-neutral-bold); font: var(--bh-font-label-default); }
|
|
55
46
|
.skip-link:focus { top: 1rem; }
|
|
56
47
|
h1, h2, h3, p { margin-top: 0; }
|
|
57
48
|
h1, h2, h3 { text-wrap: balance; }
|
|
@@ -5,21 +5,20 @@
|
|
|
5
5
|
|
|
6
6
|
/* ---------- Library ---------- */
|
|
7
7
|
.ib { margin: 0 0 var(--bh-space-400); }
|
|
8
|
-
.ib-controls { position: sticky; z-index:
|
|
8
|
+
.ib-controls { position: sticky; z-index: var(--bh-z-index-sticky); top: var(--header-bottom, 49px); display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--bh-space-150) var(--bh-space-200); padding: var(--bh-space-150) 0; border-bottom: 1px solid var(--c-line); background: var(--c-bg); }
|
|
9
9
|
.ib-search { position: relative; display: flex; align-items: center; flex: 1 1 280px; min-width: 0; }
|
|
10
10
|
.ib-search-icon { position: absolute; left: var(--bh-space-150); color: var(--bh-color-icon-subtle); pointer-events: none; }
|
|
11
|
-
.ib-search input { width: 100%;
|
|
11
|
+
.ib-search input { width: 100%; padding: 0 var(--bh-space-150) 0 var(--bh-space-400); }
|
|
12
12
|
.ib-search input::placeholder { color: var(--bh-color-text-subtlest); }
|
|
13
|
-
.ib-field { display: grid; gap: var(--bh-space-050); color: var(--c-muted); font: var(--bh-font-label-small); }
|
|
14
13
|
/* Category select: the browser's own arrow sits at a fixed spot of its own, so it is replaced by the
|
|
15
14
|
Lucide chevron at the spacing tokens: 12 px from the edge, 16 px icon, 4 px to the text (as the search field). */
|
|
16
15
|
.ib-select { position: relative; display: flex; align-items: center; max-width: 100%; }
|
|
17
16
|
.ib-select-icon { position: absolute; right: var(--bh-space-150); color: var(--bh-color-icon-subtle); pointer-events: none; }
|
|
18
|
-
.ib-field select { appearance: none; -webkit-appearance: none;
|
|
17
|
+
.ib-field select { appearance: none; -webkit-appearance: none; max-width: 100%; padding: 0 var(--bh-space-400) 0 var(--bh-space-150); }
|
|
19
18
|
.ib-sizes { display: flex; }
|
|
20
19
|
.ib-size { position: relative; }
|
|
21
20
|
.ib-size input { position: absolute; inset: 0; margin: 0; opacity: 0; cursor: pointer; }
|
|
22
|
-
.ib-size span { display: grid; place-items: center; min-width: 44px; height:
|
|
21
|
+
.ib-size span { display: grid; place-items: center; min-width: 44px; height: var(--bh-size-control-default); padding: 0 var(--bh-space-100); border: var(--bh-border-width-default) solid var(--bh-color-border-bold); color: var(--c-muted); background: var(--bh-color-surface); font: var(--bh-font-label-default); font-variant-numeric: tabular-nums; }
|
|
23
22
|
.ib-size + .ib-size span { margin-left: -1px; }
|
|
24
23
|
.ib-size:first-of-type span { border-radius: var(--bh-radius-100) 0 0 var(--bh-radius-100); }
|
|
25
24
|
.ib-size:last-of-type span { border-radius: 0 var(--bh-radius-100) var(--bh-radius-100) 0; }
|
|
@@ -38,7 +37,7 @@
|
|
|
38
37
|
.ib-icon[data-copied] { border-color: var(--bh-color-border-success); background: var(--bh-color-background-success-subtle); }
|
|
39
38
|
.ib-icon[data-copied] .ib-name { color: var(--bh-color-text-success); }
|
|
40
39
|
.prose .ib-empty { margin: var(--bh-space-300) 0; padding: var(--bh-space-300); border: 1px dashed var(--c-line); border-radius: var(--bh-radius-150); color: var(--c-muted); text-align: center; }
|
|
41
|
-
.ib-toast { position: fixed; z-index:
|
|
40
|
+
.ib-toast { position: fixed; z-index: var(--bh-z-index-toast); left: 50%; bottom: 24px; max-width: calc(100vw - 32px); padding: var(--bh-space-100) var(--bh-space-200); border-radius: var(--bh-radius-100); color: var(--bh-color-text-inverse); background: var(--bh-color-surface-inverse); box-shadow: var(--c-shadow); font: var(--bh-font-label-default); opacity: 0; transform: translate(-50%, 8px); transition: opacity 150ms ease, transform 150ms ease; pointer-events: none; }
|
|
42
41
|
.ib-toast:empty { padding: 0; }
|
|
43
42
|
.ib-toast[data-show] { opacity: 1; transform: translate(-50%, 0); }
|
|
44
43
|
.prose .ib-credit { margin: var(--bh-space-300) 0 0; color: var(--c-muted); font: var(--bh-font-body-small); }
|
|
@@ -84,15 +83,15 @@
|
|
|
84
83
|
.ic-spaced svg { color: var(--bh-color-icon); }
|
|
85
84
|
.ic-spaced.is-16 { font: var(--bh-font-label-default); }
|
|
86
85
|
.ic-spaced.is-20 { font: var(--bh-font-body-large); }
|
|
87
|
-
.ic-gap { position: relative; align-self: stretch; min-height:
|
|
86
|
+
.ic-gap { position: relative; align-self: stretch; min-height: var(--bh-space-300); background: var(--bh-color-background-danger-subtle); box-shadow: inset 1px 0 0 var(--bh-color-border-danger), inset -1px 0 0 var(--bh-color-border-danger); }
|
|
88
87
|
.is-16 .ic-gap { width: 4px; }
|
|
89
88
|
.is-20 .ic-gap { width: 8px; }
|
|
90
89
|
.ic-gap small { position: absolute; top: 100%; left: 50%; margin-top: var(--bh-space-050); color: var(--bh-color-text-danger); font: var(--bh-font-label-small); font-style: normal; transform: translateX(-50%); }
|
|
91
90
|
|
|
92
91
|
/* Target size */
|
|
93
92
|
.ic-target { position: relative; display: grid; place-items: center; border: 1px dashed var(--bh-color-border-info); border-radius: var(--bh-radius-100); color: var(--bh-color-icon); background: var(--bh-color-background-info-subtle); }
|
|
94
|
-
.ic-target.is-24 { width:
|
|
95
|
-
.ic-target.is-32 { width:
|
|
93
|
+
.ic-target.is-24 { width: var(--bh-size-target-minimum); height: var(--bh-size-target-minimum); }
|
|
94
|
+
.ic-target.is-32 { width: var(--bh-size-control-default); height: var(--bh-size-control-default); }
|
|
96
95
|
.ic-target small { position: absolute; left: 100%; margin-left: var(--bh-space-100); color: var(--bh-color-text-info); font: var(--bh-font-label-small); }
|
|
97
96
|
|
|
98
97
|
/* Common actions */
|
|
@@ -114,8 +113,7 @@
|
|
|
114
113
|
|
|
115
114
|
.ic-row { display: inline-flex; flex-wrap: wrap; align-items: center; gap: var(--bh-space-100); }
|
|
116
115
|
.ic-row.is-icons { gap: var(--bh-space-200); color: var(--bh-color-icon); }
|
|
117
|
-
.ic-ibtn {
|
|
118
|
-
.ic-ibtn.is-outlined { border: 1px solid var(--bh-color-border); background: var(--bh-color-surface); }
|
|
116
|
+
.ic-ibtn.is-outlined { border-color: var(--bh-color-border); background: var(--bh-color-surface); }
|
|
119
117
|
.ic-bare { display: inline-grid; place-items: center; width: 16px; height: 16px; color: var(--bh-color-icon); outline: 1px dashed var(--bh-color-border-danger); outline-offset: 0; }
|
|
120
118
|
.ic-text14 { display: inline-flex; align-items: center; gap: var(--bh-space-050); color: var(--c-ink); font: var(--bh-font-body-default); }
|
|
121
119
|
.ic-text14 svg { color: var(--bh-color-icon); }
|
|
@@ -126,10 +124,8 @@
|
|
|
126
124
|
.ic-text14.is-baseline svg { display: inline; margin-right: var(--bh-space-050); vertical-align: baseline; }
|
|
127
125
|
.ic-text14 .is-decor { color: var(--bh-color-border-brand); }
|
|
128
126
|
.ic-nav { display: grid; gap: var(--bh-space-025); width: 180px; }
|
|
129
|
-
.ic-nav-item { position: relative; display: flex; align-items: center; gap: var(--bh-space-100); height:
|
|
127
|
+
.ic-nav-item { position: relative; display: flex; align-items: center; gap: var(--bh-space-100); height: var(--bh-size-control-default); padding: 0 var(--bh-space-150); border-radius: var(--bh-radius-050); color: var(--bh-color-text); font: var(--bh-font-label-default); }
|
|
130
128
|
.ic-nav-item svg { color: var(--bh-color-icon); }
|
|
131
|
-
.ic-nav-item.is-selected { background: var(--bh-color-background-selected); }
|
|
132
|
-
.ic-nav-item.is-selected::before { content: ''; position: absolute; left: 0; top: 6px; bottom: 6px; width: var(--bh-border-width-selected); border-radius: var(--bh-radius-025); background: var(--bh-color-border-selected); }
|
|
133
129
|
.ic-tip-wrap { display: grid; justify-items: center; gap: var(--bh-space-075); }
|
|
134
|
-
.ic-tip { position: relative;
|
|
130
|
+
.ic-tip { position: relative; }
|
|
135
131
|
.ic-tip::after { content: ''; position: absolute; left: 50%; top: 100%; border: 4px solid transparent; border-top-color: var(--bh-color-surface-inverse); transform: translateX(-50%); }
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/* Example kit: the one look of each part used in the examples on this site.
|
|
2
|
+
Every value is a token, and each part follows the rules on the foundation pages
|
|
3
|
+
(Color usage, Typography usage, Size and density, Spacing, Radius, Border, Elevation).
|
|
4
|
+
This is not a component library. Real components will replace it.
|
|
5
|
+
The older class names after each kit-* name are aliases kept while the demos move to kit-*. */
|
|
6
|
+
|
|
7
|
+
/* Button: 32 px, side padding space.150, radius.100, label.default. */
|
|
8
|
+
.kit-btn, .sp-btn, .c-button, .ui-btn, .bh-button, .ic-ibtn, .icon-button { display: inline-flex; flex: none; align-items: center; justify-content: center; gap: var(--bh-space-050); box-sizing: border-box; height: var(--bh-size-control-default); padding: 0 var(--bh-space-150); border: var(--bh-border-width-default) solid var(--bh-color-border); border-radius: var(--bh-radius-100); color: var(--bh-color-text); background: var(--bh-color-surface); white-space: nowrap; font: var(--bh-font-label-default); }
|
|
9
|
+
:is(button, a):is(.kit-btn, .bh-button) { cursor: pointer; text-decoration: none; }
|
|
10
|
+
:is(button, a):is(.kit-btn, .bh-button):hover { background: var(--bh-color-background-neutral-subtle-hover); }
|
|
11
|
+
:is(.kit-btn, .bh-button):focus-visible { outline: var(--bh-border-width-focused) solid var(--bh-color-border-focus); outline-offset: var(--bh-state-focus-offset); }
|
|
12
|
+
:is(.kit-btn, .sp-btn, .c-button).is-primary, .ui-btn, .bh-button-primary { border-color: var(--bh-color-background-neutral-bold); color: var(--bh-color-text-inverse); background: var(--bh-color-background-neutral-bold); }
|
|
13
|
+
:is(button, a):is(.kit-btn.is-primary, .bh-button-primary):hover { border-color: var(--bh-color-background-neutral-bold-hover); background: var(--bh-color-background-neutral-bold-hover); }
|
|
14
|
+
:is(.kit-btn, .sp-btn, .c-button).is-danger, .bh-button-danger { border-color: var(--bh-color-background-danger-bold); color: var(--bh-color-text-on-bold); background: var(--bh-color-background-danger-bold); }
|
|
15
|
+
:is(button, a):is(.kit-btn.is-danger, .bh-button-danger):hover { border-color: var(--bh-color-background-danger-bold-hover); background: var(--bh-color-background-danger-bold-hover); }
|
|
16
|
+
:is(.kit-btn, .sp-btn).is-small { height: var(--bh-size-control-small); padding: 0 var(--bh-space-100); font: var(--bh-font-label-small); }
|
|
17
|
+
:is(.kit-btn, .sp-btn).is-large { height: var(--bh-size-control-large); padding: 0 var(--bh-space-200); }
|
|
18
|
+
/* Icon button: square, same height as a button. */
|
|
19
|
+
.kit-btn.is-icon, .ic-ibtn, .icon-button { width: var(--bh-size-control-default); padding: 0; color: var(--bh-color-icon); }
|
|
20
|
+
.kit-btn.is-subtle, .ic-ibtn:not(.is-outlined) { border-color: transparent; background: transparent; }
|
|
21
|
+
:is(.kit-btn, .bh-button):disabled, :is(.kit-btn, .bh-button):disabled:hover { border-color: var(--bh-color-border-disabled); color: var(--bh-color-text-disabled); background: var(--bh-color-background-disabled); cursor: not-allowed; }
|
|
22
|
+
|
|
23
|
+
/* Text field and select: 32 px, edge border.bold, placeholder text.subtlest. */
|
|
24
|
+
.kit-input, .sp-input, .ib-search input, .ib-field select { box-sizing: border-box; height: var(--bh-size-control-default); border: var(--bh-border-width-default) solid var(--bh-color-border-bold); border-radius: var(--bh-radius-100); color: var(--bh-color-text); background: var(--bh-color-surface); font: var(--bh-font-body-default); }
|
|
25
|
+
.kit-input { padding: 0 var(--bh-space-150); }
|
|
26
|
+
.kit-input::placeholder, .ib-search input::placeholder { color: var(--bh-color-text-subtlest); }
|
|
27
|
+
.kit-field, .zi-field, .ib-field { display: grid; gap: var(--bh-space-050); color: var(--bh-color-text); font: var(--bh-font-label-default); }
|
|
28
|
+
|
|
29
|
+
/* Card: surface, border, radius.150, padding space.300, raised at rest. */
|
|
30
|
+
.kit-card, .el-card, .op-tile, .ui-card, .c-surf-card { box-sizing: border-box; padding: var(--bh-space-300); border: var(--bh-border-width-default) solid var(--bh-color-border); border-radius: var(--bh-radius-150); background: var(--bh-color-surface); box-shadow: var(--bh-elevation-shadow-raised); }
|
|
31
|
+
.kit-card-title, .el-card > b, .op-tile b { color: var(--bh-color-text); font: var(--bh-font-heading-small); }
|
|
32
|
+
.kit-card-text, .el-card > span, .op-tile span.op-status { color: var(--bh-color-text-subtle); font: var(--bh-font-body-default); }
|
|
33
|
+
|
|
34
|
+
/* Menu: surface.overlay, radius.100, padding space.050, shadow overlay. Items 32 px, radius.050, label.default. */
|
|
35
|
+
.kit-menu, .sh-menu, .el-menu { display: grid; box-sizing: border-box; padding: var(--bh-space-050); border-radius: var(--bh-radius-100); background: var(--bh-color-surface-overlay); box-shadow: var(--bh-elevation-shadow-overlay); }
|
|
36
|
+
.kit-menu-item, .sh-menu > span:not(.sh-pin), .sh-menu > .sh-pin > span:first-child, .el-menu > span:not(.sh-pin):not(.zi-n), .el-menu > .sh-pin > span:first-child { display: flex; align-items: center; justify-content: space-between; gap: var(--bh-space-100); min-height: var(--bh-size-control-default); padding: 0 var(--bh-space-150); border-radius: var(--bh-radius-050); color: var(--bh-color-text); font: var(--bh-font-label-default); }
|
|
37
|
+
:is(.kit-menu, .sh-menu, .el-menu) .is-on { background: var(--bh-color-surface-overlay-hover); }
|
|
38
|
+
:is(.kit-menu, .sh-menu, .el-menu) .is-sel { background: var(--bh-color-surface-overlay-selected); }
|
|
39
|
+
:is(.kit-menu, .sh-menu, .el-menu) .is-sel svg { flex: none; color: var(--bh-color-icon); }
|
|
40
|
+
:is(.kit-menu, .sh-menu, .el-menu) .is-focus { outline: var(--bh-border-width-focused) solid var(--bh-color-border-focus); outline-offset: calc(-1 * var(--bh-state-focus-offset)); }
|
|
41
|
+
|
|
42
|
+
/* Label: shows a status. 20 px pill, outline, padding space.075, label.small. */
|
|
43
|
+
.kit-label, .bh-label, .ui-badge, .sh-tag.is-pill { display: inline-flex; align-items: center; box-sizing: border-box; height: var(--bh-space-250); padding: 0 var(--bh-space-075); border: var(--bh-border-width-default) solid var(--bh-color-border); border-radius: var(--bh-radius-full); color: var(--bh-color-text); background: transparent; white-space: nowrap; font: var(--bh-font-label-small); }
|
|
44
|
+
:is(.kit-label, .bh-label).is-large { height: var(--bh-size-control-small); padding: 0 var(--bh-space-100); }
|
|
45
|
+
:is(.kit-label, .bh-label).is-brand { border-color: var(--bh-color-border-brand); }
|
|
46
|
+
:is(.kit-label, .bh-label).is-info { border-color: var(--bh-color-border-info); color: var(--bh-color-text-info); }
|
|
47
|
+
:is(.kit-label, .bh-label).is-success, .ui-badge, .sh-tag.is-pill { border-color: var(--bh-color-border-success); color: var(--bh-color-text-success); }
|
|
48
|
+
:is(.kit-label, .bh-label).is-warning { border-color: var(--bh-color-border-warning); color: var(--bh-color-text-warning); }
|
|
49
|
+
:is(.kit-label, .bh-label).is-danger, .ui-badge.is-error { border-color: var(--bh-color-border-danger); color: var(--bh-color-text-danger); }
|
|
50
|
+
:is(.kit-label, .bh-label).is-neutral { border-color: var(--bh-color-border-bold); color: var(--bh-color-text-subtle); }
|
|
51
|
+
|
|
52
|
+
/* Tag: something people add or remove. 24 px, radius.050, border, text. */
|
|
53
|
+
.kit-tag, .sh-tag:not(.is-pill) { display: inline-flex; align-items: center; gap: var(--bh-space-050); box-sizing: border-box; height: var(--bh-size-control-small); padding: 0 var(--bh-space-100); border: var(--bh-border-width-default) solid var(--bh-color-border); border-radius: var(--bh-radius-050); color: var(--bh-color-text); background: var(--bh-color-surface); font: var(--bh-font-label-small); }
|
|
54
|
+
|
|
55
|
+
/* Table: header surface.subtle, label.small, text.subtle. Cells space.100 space.150, body.default. */
|
|
56
|
+
.kit-table th, .kit-th { padding: var(--bh-space-100) var(--bh-space-150); border-bottom: var(--bh-border-width-default) solid var(--bh-color-border); color: var(--bh-color-text-subtle); background: var(--bh-color-surface-subtle); text-align: left; font: var(--bh-font-label-small); }
|
|
57
|
+
.kit-table td, .kit-td { padding: var(--bh-space-100) var(--bh-space-150); border-bottom: var(--bh-border-width-default) solid var(--bh-color-border); color: var(--bh-color-text); font: var(--bh-font-body-default); }
|
|
58
|
+
|
|
59
|
+
/* Dialog: surface.overlay, radius.200, padding space.300, shadow modal, title heading.medium. */
|
|
60
|
+
.kit-dialog, .el-dialog, .zi-mini-dialog, .c-surf-dialog { display: grid; gap: var(--bh-space-200); box-sizing: border-box; padding: var(--bh-space-300); border-radius: var(--bh-radius-200); color: var(--bh-color-text-subtle); background: var(--bh-color-surface-overlay); box-shadow: var(--bh-elevation-shadow-modal); font: var(--bh-font-body-default); }
|
|
61
|
+
.kit-dialog-title, .el-dialog b, .zi-mini-dialog b, .c-surf-dialog b { color: var(--bh-color-text); font: var(--bh-font-heading-medium); }
|
|
62
|
+
|
|
63
|
+
/* Tooltip: surface.inverse, radius.100, padding space.050 space.075, body.small. */
|
|
64
|
+
.kit-tooltip, .sh-tip, .ic-tip, .zi-tip { box-sizing: border-box; padding: var(--bh-space-050) var(--bh-space-075); border-radius: var(--bh-radius-100); color: var(--bh-color-text-inverse); background: var(--bh-color-surface-inverse); font: var(--bh-font-body-small); }
|
|
65
|
+
|
|
66
|
+
/* Toast: surface.overlay and overlay shadow, no border (like menus); icon in the status colour.
|
|
67
|
+
Title heading.xsmall, message body.default. */
|
|
68
|
+
.kit-toast, .el-toast, .ib-toast { display: inline-flex; align-items: center; gap: var(--bh-space-100); box-sizing: border-box; padding: var(--bh-space-150) var(--bh-space-200); border-radius: var(--bh-radius-100); color: var(--bh-color-text); background: var(--bh-color-surface-overlay); box-shadow: var(--bh-elevation-shadow-overlay); font: var(--bh-font-body-default); }
|
|
69
|
+
:is(.kit-toast, .el-toast) > svg { flex: none; }
|
|
70
|
+
:is(.kit-toast, .el-toast).is-info > svg { color: var(--bh-color-icon-info); }
|
|
71
|
+
:is(.kit-toast, .el-toast).is-success > svg { color: var(--bh-color-icon-success); }
|
|
72
|
+
:is(.kit-toast, .el-toast).is-warning > svg { color: var(--bh-color-icon-warning); }
|
|
73
|
+
:is(.kit-toast, .el-toast).is-danger > svg { color: var(--bh-color-icon-danger); }
|
|
74
|
+
.kit-toast b { color: var(--bh-color-text); font: var(--bh-font-heading-xsmall); }
|
|
75
|
+
|
|
76
|
+
/* Banner: background.{role}.subtle, border.{role}.subtle, text, icon.{role}. */
|
|
77
|
+
.kit-banner, .c-banner { display: flex; align-items: center; gap: var(--bh-space-100); box-sizing: border-box; padding: var(--bh-space-100) var(--bh-space-150); border: var(--bh-border-width-default) solid var(--bh-color-border); border-radius: var(--bh-radius-100); color: var(--bh-color-text); font: var(--bh-font-body-default); }
|
|
78
|
+
:is(.kit-banner, .c-banner) svg { flex: none; }
|
|
79
|
+
:is(.kit-banner, .c-banner).is-info { border-color: var(--bh-color-border-info-subtle); background: var(--bh-color-background-info-subtle); }
|
|
80
|
+
:is(.kit-banner, .c-banner).is-info svg { color: var(--bh-color-icon-info); }
|
|
81
|
+
:is(.kit-banner, .c-banner).is-success { border-color: var(--bh-color-border-success-subtle); background: var(--bh-color-background-success-subtle); }
|
|
82
|
+
:is(.kit-banner, .c-banner).is-success svg { color: var(--bh-color-icon-success); }
|
|
83
|
+
:is(.kit-banner, .c-banner).is-warning { border-color: var(--bh-color-border-warning-subtle); background: var(--bh-color-background-warning-subtle); }
|
|
84
|
+
:is(.kit-banner, .c-banner).is-warning svg { color: var(--bh-color-icon-warning); }
|
|
85
|
+
:is(.kit-banner, .c-banner).is-danger { border-color: var(--bh-color-border-danger-subtle); background: var(--bh-color-background-danger-subtle); }
|
|
86
|
+
:is(.kit-banner, .c-banner).is-danger svg { color: var(--bh-color-icon-danger); }
|
|
87
|
+
|
|
88
|
+
/* Callout: content note with a 4 px bar on the left edge. Not for statuses; those are banners. */
|
|
89
|
+
.kit-callout, .sh-alert { --kit-bar: var(--bh-color-border-info); position: relative; display: grid; gap: var(--bh-space-025); box-sizing: border-box; padding: var(--bh-space-150) var(--bh-space-200) var(--bh-space-150) calc(var(--bh-space-200) + var(--bh-border-width-accent)); overflow: hidden; border: var(--bh-border-width-default) solid var(--bh-color-border); border-radius: var(--bh-radius-100); background: var(--bh-color-surface); }
|
|
90
|
+
:is(.kit-callout, .sh-alert)::before { content: ""; position: absolute; inset: 0 auto 0 0; width: var(--bh-border-width-accent); background: var(--kit-bar); }
|
|
91
|
+
:is(.kit-callout, .sh-alert).is-brand { --kit-bar: var(--bh-color-border-brand); }
|
|
92
|
+
:is(.kit-callout, .sh-alert) b { color: var(--bh-color-text); font: var(--bh-font-heading-xsmall); }
|
|
93
|
+
:is(.kit-callout, .sh-alert) span { color: var(--bh-color-text-subtle); font: var(--bh-font-body-default); }
|
|
94
|
+
|
|
95
|
+
/* Switch: 20 x 36, knob 16 px. On background.neutral.bold; off background.neutral with a border.bold edge. */
|
|
96
|
+
.kit-switch, .sh-switch, .op-switch { position: relative; flex: none; display: inline-block; box-sizing: border-box; width: calc(2 * var(--bh-space-200) + 2 * var(--bh-space-025)); height: var(--bh-space-250); border-radius: var(--bh-radius-full); background: var(--bh-color-background-neutral-bold); }
|
|
97
|
+
:is(.kit-switch, .sh-switch, .op-switch)::after { content: ""; position: absolute; top: var(--bh-space-025); right: var(--bh-space-025); width: var(--bh-space-200); height: var(--bh-space-200); border-radius: var(--bh-radius-full); background: var(--bh-color-surface); }
|
|
98
|
+
.kit-switch.is-off { background: var(--bh-color-background-neutral); box-shadow: inset 0 0 0 var(--bh-border-width-default) var(--bh-color-border-bold); }
|
|
99
|
+
.kit-switch.is-off::after { right: auto; left: var(--bh-space-025); }
|
|
100
|
+
|
|
101
|
+
/* Avatar: 32 px circle, background.neutral, text, label.small. Small 24 px. */
|
|
102
|
+
.kit-avatar, .sh-avatar, .op-avatar { display: inline-grid; flex: none; place-items: center; width: var(--bh-size-control-default); height: var(--bh-size-control-default); border-radius: var(--bh-radius-full); color: var(--bh-color-text); background: var(--bh-color-background-neutral); font: var(--bh-font-label-small); }
|
|
103
|
+
.kit-avatar.is-small { width: var(--bh-size-control-small); height: var(--bh-size-control-small); }
|
|
104
|
+
|
|
105
|
+
/* Step number or count: background.neutral.bold, text.inverse. */
|
|
106
|
+
.kit-count, .zi-n { display: inline-grid; flex: none; place-items: center; box-sizing: border-box; min-width: var(--bh-space-250); height: var(--bh-space-250); padding: 0 var(--bh-space-050); border-radius: var(--bh-radius-full); color: var(--bh-color-text-inverse); background: var(--bh-color-background-neutral-bold); font: var(--bh-font-label-small); font-variant-numeric: tabular-nums; }
|
|
107
|
+
|
|
108
|
+
/* Selected item in a navigation list: background.selected and a border.selected bar inside the left edge. */
|
|
109
|
+
.kit-nav-item { display: flex; align-items: center; gap: var(--bh-space-100); height: var(--bh-size-control-default); padding: 0 var(--bh-space-150); border-radius: var(--bh-radius-050); color: var(--bh-color-text); font: var(--bh-font-label-default); }
|
|
110
|
+
.kit-nav-item.is-selected, .ic-nav-item.is-selected { background: var(--bh-color-background-selected); box-shadow: inset var(--bh-border-width-selected) 0 0 var(--bh-color-border-selected); }
|
|
111
|
+
/* A count on an inverse surface flips to the surface colours. */
|
|
112
|
+
.kit-tooltip .kit-count, .zi-tip .zi-n { color: var(--bh-color-text); background: var(--bh-color-surface); }
|
|
@@ -51,13 +51,9 @@
|
|
|
51
51
|
.sp-title { color: var(--bh-color-text); font: var(--bh-font-heading-small); }
|
|
52
52
|
.sp-desc { color: var(--bh-color-text-subtle); font: var(--bh-font-body-default); }
|
|
53
53
|
.sp-label { color: var(--bh-color-text); font: var(--bh-font-label-default); }
|
|
54
|
-
.sp-input { display: flex; align-items: stretch; min-width: 0;
|
|
54
|
+
.sp-input { display: flex; align-items: stretch; min-width: 0; }
|
|
55
55
|
.sp-input > span:not(.sp-gap) { align-self: center; overflow: hidden; color: var(--bh-color-text-subtle); white-space: nowrap; text-overflow: ellipsis; font: var(--bh-font-body-default); }
|
|
56
56
|
.sp-input .sp-gap.is-h { margin: calc(-1 * var(--bh-border-width-default)) 0; }
|
|
57
|
-
.sp-btn { display: inline-flex; flex: none; align-items: center; height: var(--bh-size-control-default); padding: 0 var(--bh-space-200); border: var(--bh-border-width-default) solid var(--bh-color-border); border-radius: var(--bh-radius-100); color: var(--bh-color-text); background: var(--bh-color-surface); font: var(--bh-font-label-default); }
|
|
58
|
-
.sp-btn.is-primary { border-color: var(--bh-color-background-neutral-bold); color: var(--bh-color-text-inverse); background: var(--bh-color-background-neutral-bold); }
|
|
59
|
-
.sp-btn.is-small { height: var(--bh-size-control-small); padding: 0 var(--bh-space-100); font: var(--bh-font-label-small); }
|
|
60
|
-
.sp-btn.is-large { height: var(--bh-size-control-large); padding: 0 var(--bh-space-200); }
|
|
61
57
|
.sp-legend { display: flex; flex-wrap: wrap; align-items: center; gap: var(--bh-space-100); }
|
|
62
58
|
.sp-swatch { display: inline-block; width: var(--bh-space-200); height: var(--bh-space-200); border-radius: var(--bh-radius-050); background: var(--sp-mark); box-shadow: inset 0 0 0 var(--bh-border-width-default) var(--sp-mark-edge); vertical-align: middle; }
|
|
63
59
|
@container prose (min-width: 560px) { .sp-stage { padding: var(--bh-space-400) var(--bh-space-200); } .sp-gap.is-v > .sp-tag { right: 0; transform: translate(calc(100% + var(--bh-space-300) + var(--bh-space-050)), -50%); } }
|
|
@@ -81,7 +77,6 @@
|
|
|
81
77
|
.sp-dd-stage { display: grid; place-items: center; min-height: 9rem; padding: var(--bh-space-200); background: var(--c-surf); }
|
|
82
78
|
.sp-dd-panel p { margin: 0; padding: var(--bh-space-150) var(--bh-space-200); color: var(--c-muted); font: var(--bh-font-body-default); }
|
|
83
79
|
.sp-mini { display: flex; flex-direction: column; width: 100%; max-width: 15rem; }
|
|
84
|
-
.sp-mini .sp-input { height: var(--bh-space-400); }
|
|
85
80
|
.sp-mini-group { color: var(--bh-color-text); font: var(--bh-font-heading-xsmall); }
|
|
86
81
|
.sp-badge-host { position: relative; display: inline-grid; place-items: center; width: var(--bh-space-400); height: var(--bh-space-400); border: var(--bh-border-width-default) solid var(--bh-color-border); border-radius: var(--bh-radius-100); background: var(--bh-color-surface); color: var(--bh-color-icon); }
|
|
87
82
|
.sp-badge { position: absolute; top: var(--bh-space-025); right: var(--bh-space-025); width: var(--bh-space-100); height: var(--bh-space-100); border-radius: var(--bh-radius-full); background: var(--bh-color-background-danger-bold); }
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/* Illustrations for the Opacity page. Every value is a token. */
|
|
2
|
+
.op-wrap { display: grid; gap: var(--bh-space-200); margin: var(--bh-space-300) 0; padding: var(--bh-space-300); border-radius: var(--bh-radius-150); background: var(--bh-color-surface-subtle); }
|
|
3
|
+
.op-label { color: var(--bh-color-text-subtle); font: var(--bh-font-label-small); }
|
|
4
|
+
.op-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: var(--bh-space-200); }
|
|
5
|
+
.op-tile { display: grid; gap: var(--bh-space-100); }
|
|
6
|
+
.op-tile-top { display: flex; align-items: center; justify-content: space-between; }
|
|
7
|
+
.op-tile.is-off b, .op-tile.is-off span.op-status, .op-row.is-off .op-name, .op-row.is-off .op-role { color: var(--bh-color-text-disabled); }
|
|
8
|
+
.op-logo { display: inline-grid; place-items: center; width: var(--bh-size-control-large); height: var(--bh-size-control-large); border-radius: var(--bh-radius-100); color: var(--bh-color-text-on-bold); font: var(--bh-font-label-default); }
|
|
9
|
+
.op-logo.is-a { background: var(--bh-color-background-success-bold); }
|
|
10
|
+
.op-logo.is-b { background: var(--bh-color-background-info-bold); }
|
|
11
|
+
.op-logo.is-c { background: var(--bh-color-background-warning-bold); }
|
|
12
|
+
.op-logo.is-d { background: var(--bh-color-background-danger-bold); }
|
|
13
|
+
.op-logo.is-e { background: var(--bh-color-background-neutral-bold); }
|
|
14
|
+
.op-logo.is-f { background: var(--bh-color-background-brand-bold); color: var(--bh-color-text-on-brand); }
|
|
15
|
+
.is-off .op-logo, .is-off .op-avatar { opacity: var(--bh-opacity-disabled); }
|
|
16
|
+
.is-off .op-switch { background: var(--bh-color-background-disabled); }
|
|
17
|
+
.op-list { overflow: hidden; border: var(--bh-border-width-default) solid var(--bh-color-border); border-radius: var(--bh-radius-150); background: var(--bh-color-surface); }
|
|
18
|
+
.op-row { display: flex; align-items: center; gap: var(--bh-space-150); padding: var(--bh-space-100) var(--bh-space-200); }
|
|
19
|
+
.op-row + .op-row { border-top: var(--bh-border-width-default) solid var(--bh-color-border); }
|
|
20
|
+
.op-name { flex: 1; color: var(--bh-color-text); font: var(--bh-font-body-default); }
|
|
21
|
+
.op-role { color: var(--bh-color-text-subtle); font: var(--bh-font-body-default); }
|
|
22
|
+
.op-tile.is-wrong { opacity: var(--bh-opacity-disabled); }
|
|
23
|
+
.op-scrim-box { position: relative; height: 10rem; overflow: hidden; border-radius: var(--bh-radius-150); background: var(--bh-color-surface-page); }
|
|
24
|
+
.op-lines { display: grid; gap: var(--bh-space-100); padding: var(--bh-space-200); }
|
|
25
|
+
.op-lines span { height: var(--bh-space-100); border-radius: var(--bh-radius-full); background: var(--bh-color-skeleton); }
|
|
26
|
+
.op-scrim { position: absolute; inset: 0; background: var(--bh-color-surface-scrim); }
|
|
27
|
+
.op-dialog { position: absolute; top: 50%; left: 50%; padding: var(--bh-space-200) var(--bh-space-300); border-radius: var(--bh-radius-200); background: var(--bh-color-surface-overlay); box-shadow: var(--bh-elevation-shadow-modal); color: var(--bh-color-text); font: var(--bh-font-heading-small); transform: translate(-50%, -50%); }
|
|
28
|
+
.op-ex { background: var(--bh-color-surface-page); }
|
|
29
|
+
.op-tile-lg { width: min(100%, 16rem); }
|
|
30
|
+
.op-tile .sh-pin { display: inline-flex; }
|
|
31
|
+
.el-theme .op-scrim-box { border-radius: 0; }
|
|
32
|
+
.op-scrim-pin { position: absolute; top: var(--bh-space-200); left: calc(var(--bh-space-1000) + var(--bh-space-600)); }
|
|
33
|
+
.op-band { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--bh-space-150); width: min(100%, 22rem); padding: var(--bh-space-150) var(--bh-space-200); border-radius: var(--bh-radius-100); background: var(--bh-color-background-warning-subtle); }
|
|
34
|
+
.op-band-text { color: var(--bh-color-text); font: var(--bh-font-body-default); }
|
|
35
|
+
.op-btn-off { border-color: var(--bh-color-border-disabled); color: var(--bh-color-text-disabled); background: var(--bh-color-background-disabled); }
|
|
36
|
+
.op-btn-faded { opacity: var(--bh-opacity-disabled); }
|
|
37
|
+
.sp-dd-stage .op-tile { width: min(100%, 14rem); }
|
|
38
|
+
.op-tile-top { gap: var(--bh-space-150); }
|
|
39
|
+
.op-tile.is-wrong .op-switch { background: var(--bh-color-background-disabled); }
|
|
40
|
+
.el-theme .op-scrim-box { height: calc(2 * var(--bh-space-1000) + var(--bh-space-600)); }
|
|
41
|
+
.el-theme .op-dialog { top: auto; bottom: var(--bh-space-300); transform: translateX(-50%); }
|
|
42
|
+
/* Switch: a thumb on the track, right when on, left when off. */
|
|
43
|
+
.is-off .op-switch::after, .op-tile.is-wrong .op-switch::after { right: auto; left: var(--bh-space-025); background: var(--bh-color-surface); }
|