@repobit/dex-system-design 0.25.12 → 1.0.0
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/CHANGELOG.md +204 -0
- package/README.md +131 -8
- package/package.json +96 -13
- package/schemas/component-manifest.json +3294 -405
- package/schemas/manifest-omissions.json +173 -0
- package/src/blog/src/breakpoints.js +6 -6
- package/src/blog/src/content/blog-atoms-showcase.js +1 -1
- package/src/blog/src/content/blog-page-layout.js +2 -2
- package/src/blog/src/lib/article-toc.js +7 -7
- package/src/blog/src/shell/blog-shell.js +1 -1
- package/src/blog/src/tokens/blog.js +2 -2
- package/src/blog/src/tokens/core.js +34 -35
- package/src/blog/src/tokens/legacy.js +0 -9
- package/src/blog/tokens/blog.js +2 -2
- package/src/blog/tokens/core.js +34 -35
- package/src/blog/tokens/legacy.js +0 -9
- package/src/blog/tokens.css +36 -46
- package/src/components/accordion/accordion-bg.css.js +83 -59
- package/src/components/accordion/accordion-bg.js +29 -10
- package/src/components/accordion/accordion-bg.stories.js +67 -67
- package/src/components/accordion/accordion-keyboard.js +80 -0
- package/src/components/accordion/accordion.css.js +142 -80
- package/src/components/accordion/accordion.js +37 -10
- package/src/components/accordion/accordion.stories.js +7 -7
- package/src/components/agent-endpoints/agent-endpoints.css.js +36 -39
- package/src/components/agent-endpoints/agent-endpoints.js +30 -20
- package/src/components/agent-endpoints/agent-endpoints.stories.js +1 -1
- package/src/components/ai-guardian-demo.stories.js +91 -91
- package/src/components/alert/alert.css.js +198 -0
- package/src/components/alert/alert.js +103 -0
- package/src/components/alert/alert.stories.js +206 -0
- package/src/components/anchor/anchor-nav.css.js +213 -101
- package/src/components/anchor/anchor-nav.js +26 -40
- package/src/components/anchor/anchor.stories.js +22 -12
- package/src/components/annotation/annotation.css.js +58 -0
- package/src/components/annotation/annotation.js +67 -0
- package/src/components/annotation/annotation.stories.js +63 -0
- package/src/components/architecture.stories.js +285 -0
- package/src/components/atoms.stories.js +342 -0
- package/src/components/avatar/avatar.css.js +67 -0
- package/src/components/avatar/avatar.js +42 -0
- package/src/components/avatar/avatar.stories.js +95 -0
- package/src/components/awards/awards-flex.css.js +209 -23
- package/src/components/awards/awards-flex.js +66 -7
- package/src/components/awards/awards-flex.stories.js +1 -1
- package/src/components/awards/{awards-light.stories.js → awards-summary.stories.js} +54 -64
- package/src/components/awards/awards.css.js +116 -58
- package/src/components/awards/awards.js +102 -28
- package/src/components/awards/awards.stories.js +1 -1
- package/src/components/back/back.css.js +51 -22
- package/src/components/back/back.js +28 -7
- package/src/components/back/back.stories.js +9 -3
- package/src/components/badge/badge.css.js +158 -46
- package/src/components/badge/badge.js +62 -74
- package/src/components/badge/badge.stories.js +176 -248
- package/src/components/bento-grid/bento-grid.css.js +21 -16
- package/src/components/bento-grid/bento-grid.js +16 -4
- package/src/components/bento-grid/bento-grid.stories.js +19 -18
- package/src/components/bento-grid/bento-item.css.js +52 -28
- package/src/components/bento-grid/bento-item.js +2 -2
- package/src/components/blockquote/blockquote.css.js +47 -0
- package/src/components/blockquote/blockquote.js +29 -0
- package/src/components/blockquote/blockquote.stories.js +62 -0
- package/src/components/breadcrumb/breadcrumb.css.js +92 -22
- package/src/components/breadcrumb/breadcrumb.js +56 -11
- package/src/components/button/button.css.js +531 -161
- package/src/components/button/button.js +206 -214
- package/src/components/button/button.stories.js +322 -174
- package/src/components/caption/caption.css.js +21 -0
- package/src/components/caption/caption.js +31 -0
- package/src/components/caption/caption.stories.js +62 -0
- package/src/components/card-features/card-features.css.js +14 -22
- package/src/components/card-features/card-features.js +68 -9
- package/src/components/card-features/card-features.stories.js +11 -11
- package/src/components/cards/card.css.js +60 -81
- package/src/components/cards/card.js +56 -25
- package/src/components/cards/card.stories.js +39 -39
- package/src/components/carousel/carousel.css.js +93 -99
- package/src/components/carousel/carousel.js +32 -4
- package/src/components/checkbox/checkbox.css.js +111 -93
- package/src/components/checkbox/checkbox.js +64 -90
- package/src/components/checkbox/checkbox.stories.js +96 -29
- package/src/components/code/code.css.js +70 -0
- package/src/components/code/code.js +40 -0
- package/src/components/code/code.stories.js +73 -0
- package/src/components/compare/compare.css.js +179 -43
- package/src/components/compare/compare.js +52 -25
- package/src/components/compare/compare.stories.js +61 -4
- package/src/components/comparison-panel/comparison-panel.css.js +38 -51
- package/src/components/comparison-panel/comparison-panel.js +5 -4
- package/src/components/comparison-panel/comparison-panel.stories.js +1 -1
- package/src/components/compatibility-table/compatibility-table.css.js +180 -80
- package/src/components/compatibility-table/compatibility-table.js +37 -9
- package/src/components/control-alignment.stories.js +393 -0
- package/src/components/cta-banner/cta-banner.css.js +41 -13
- package/src/components/cta-banner/cta-banner.js +6 -5
- package/src/components/cta-banner/cta-banner.stories.js +43 -98
- package/src/components/display/display.css.js +25 -1
- package/src/components/display/display.js +46 -13
- package/src/components/display/display.stories.js +270 -40
- package/src/components/divider/divider-horizontal.js +21 -5
- package/src/components/divider/divider-vertical.js +15 -7
- package/src/components/divider/divider.css.js +2 -2
- package/src/components/divider/divider.stories.js +38 -34
- package/src/components/dropdown/dropdown.css.js +93 -126
- package/src/components/dropdown/dropdown.js +114 -34
- package/src/components/dropdown/dropdown.stories.js +56 -24
- package/src/components/features/features.css.js +24 -11
- package/src/components/features/features.js +7 -3
- package/src/components/features/features.stories.js +37 -37
- package/src/components/features-tab/features-tab.css.js +19 -8
- package/src/components/features-tab/features-tab.js +6 -5
- package/src/components/features-tab/features-tab.stories.js +23 -23
- package/src/components/fieldset/fieldset.css.js +30 -0
- package/src/components/fieldset/fieldset.js +28 -0
- package/src/components/fieldset/fieldset.stories.js +84 -0
- package/src/components/footer/footer-links-group.css.js +10 -14
- package/src/components/footer/footer-links-group.js +4 -3
- package/src/components/footer/footer-lp.css.js +59 -30
- package/src/components/footer/footer-lp.js +17 -12
- package/src/components/footer/footer-lp.stories.js +63 -75
- package/src/components/footer/footer-nav-menu.css.js +26 -4
- package/src/components/footer/footer-nav-menu.js +3 -2
- package/src/components/footer/footer.css.js +146 -264
- package/src/components/footer/footer.js +176 -106
- package/src/components/footer/footer.stories.js +9 -9
- package/src/components/footer/localeMap.js +1 -1
- package/src/components/grid/grid.css.js +1 -1
- package/src/components/grid/grid.js +49 -7
- package/src/components/grid/grid.stories.js +111 -0
- package/src/components/header/header-code.css.js +61 -51
- package/src/components/header/header-code.js +28 -14
- package/src/components/header/header-code.stories.js +5 -5
- package/src/components/header/header.css.js +655 -176
- package/src/components/header/header.js +269 -36
- package/src/components/header/header.stories.js +841 -18
- package/src/components/heading/heading.css.js +14 -17
- package/src/components/heading/heading.js +48 -33
- package/src/components/heading/heading.stories.js +27 -25
- package/src/components/help-text/help-text.css.js +21 -0
- package/src/components/help-text/help-text.js +25 -0
- package/src/components/help-text/help-text.stories.js +66 -0
- package/src/components/highlight/highlight.css.js +86 -64
- package/src/components/highlight/highlight.js +18 -27
- package/src/components/highlight/highlight.stories.js +14 -3
- package/src/components/icons/analysis-icon.js +6 -16
- package/src/components/icons/arrow-down-icon.js +6 -19
- package/src/components/icons/arrow-icon.js +44 -0
- package/src/components/icons/arrow-right-icon.js +30 -23
- package/src/components/icons/arrow-up-icon.js +19 -18
- package/src/components/icons/bd-ai-icon.js +1 -1
- package/src/components/icons/brand-marks.stories.js +279 -0
- package/src/components/icons/brand-signature-icon.js +42 -0
- package/src/components/icons/check-icon.js +27 -0
- package/src/components/icons/circle-info-icon.js +33 -0
- package/src/components/icons/close-icon.js +6 -18
- package/src/components/icons/family-icon.js +8 -20
- package/src/components/icons/globe-icon.js +6 -18
- package/src/components/icons/guide-icon.js +6 -18
- package/src/components/icons/icon-element.js +99 -0
- package/src/components/icons/icons.js +36 -0
- package/src/components/icons/icons.stories.js +184 -52
- package/src/components/icons/individual-icon.js +6 -18
- package/src/components/icons/laurel-icon.js +9 -19
- package/src/components/icons/machine-learning-icon.js +6 -17
- package/src/components/icons/marks.js +41 -0
- package/src/components/icons/minus-icon.js +7 -21
- package/src/components/icons/missing-icon.js +52 -0
- package/src/components/icons/plus-icon.js +7 -21
- package/src/components/icons/quote-icon.js +19 -19
- package/src/components/image/image.css.js +72 -25
- package/src/components/image/image.js +11 -6
- package/src/components/image/image.stories.js +2 -2
- package/src/components/input/custom-form.stories.js +214 -62
- package/src/components/input/input-clipboard.css.js +51 -144
- package/src/components/input/input-clipboard.js +31 -15
- package/src/components/input/input.css.js +8 -146
- package/src/components/input/input.js +93 -38
- package/src/components/install-options/install-options.css.js +84 -77
- package/src/components/install-options/install-options.js +33 -30
- package/src/components/install-options/install-options.stories.js +3 -3
- package/src/components/label/label.css.js +35 -0
- package/src/components/label/label.js +38 -0
- package/src/components/label/label.stories.js +82 -0
- package/src/components/light-carousel/light-carousel.css.js +111 -63
- package/src/components/light-carousel/light-carousel.js +85 -11
- package/src/components/light-carousel/light-carousel.stories.js +126 -82
- package/src/components/link/link.css.js +150 -99
- package/src/components/link/link.js +86 -11
- package/src/components/link/link.stories.js +124 -30
- package/src/components/list/list-item/list-item.css.js +74 -22
- package/src/components/list/list-item/list-item.js +32 -10
- package/src/components/list/list-item/list-item.stories.js +23 -23
- package/src/components/list/list.css.js +8 -2
- package/src/components/list/list.js +3 -2
- package/src/components/list/list.stories.js +222 -0
- package/src/components/modal/modal.css.js +114 -24
- package/src/components/modal/modal.js +83 -7
- package/src/components/modal/modal.stories.js +9 -9
- package/src/components/overview/overview.css.js +19 -14
- package/src/components/overview/overview.js +6 -5
- package/src/components/overview/overview.stories.js +10 -10
- package/src/components/page-switcher/page-switcher.css.js +97 -40
- package/src/components/page-switcher/page-switcher.js +28 -5
- package/src/components/page-switcher/page-switcher.stories.js +95 -0
- package/src/components/paragraph/paragraph.css.js +15 -10
- package/src/components/paragraph/paragraph.js +41 -44
- package/src/components/paragraph/paragraph.stories.js +56 -21
- package/src/components/picture/picture.css.js +103 -44
- package/src/components/picture/picture.js +100 -30
- package/src/components/picture/picture.stories.js +1 -1
- package/src/components/pricing-cards/new-pricing-card.js +3 -3
- package/src/components/pricing-cards/new-pricing.css.js +24 -15
- package/src/components/pricing-cards/pricing-card-actions.css.js +1 -1
- package/src/components/pricing-cards/pricing-card-actions.js +3 -4
- package/src/components/pricing-cards/pricing-card-container.css.js +3 -3
- package/src/components/pricing-cards/pricing-card-container.js +3 -2
- package/src/components/pricing-cards/pricing-card-header.css.js +10 -8
- package/src/components/pricing-cards/pricing-card-header.js +6 -7
- package/src/components/pricing-cards/pricing-card-pricing.css.js +16 -9
- package/src/components/pricing-cards/pricing-card-pricing.js +8 -6
- package/src/components/pricing-cards/pricing-card-show-more.css.js +11 -3
- package/src/components/pricing-cards/pricing-card-show-more.js +8 -3
- package/src/components/pricing-cards/pricing-card.css.js +244 -190
- package/src/components/pricing-cards/pricing-card.js +54 -70
- package/src/components/pricing-cards/pricing-feature-item.css.js +25 -8
- package/src/components/pricing-cards/pricing-feature-item.js +8 -3
- package/src/components/process-steps/process-steps.css.js +26 -14
- package/src/components/process-steps/process-steps.js +23 -6
- package/src/components/process-steps/process-steps.stories.js +1 -1
- package/src/components/progress/progress.css.js +80 -0
- package/src/components/progress/progress.js +42 -0
- package/src/components/progress/progress.stories.js +79 -0
- package/src/components/quick-answer/quick-answer.css.js +75 -13
- package/src/components/quick-answer/quick-answer.js +8 -3
- package/src/components/radio/radio.css.js +92 -128
- package/src/components/radio/radio.js +106 -127
- package/src/components/radio/radio.stories.js +54 -19
- package/src/components/review/review-grid.css.js +5 -6
- package/src/components/review/review-grid.js +14 -11
- package/src/components/review/review.css.js +11 -6
- package/src/components/review/review.js +3 -8
- package/src/components/shared/ensemble.css.js +93 -0
- package/src/components/shared/form-field.css.js +206 -0
- package/src/components/shared/prop-vocabulary.js +48 -0
- package/src/components/shared/token-scales.js +306 -0
- package/src/components/skeleton/skeleton.css.js +34 -0
- package/src/components/skeleton/skeleton.js +32 -0
- package/src/components/skeleton/skeleton.stories.js +70 -0
- package/src/components/spinner/spinner.css.js +62 -0
- package/src/components/spinner/spinner.js +38 -0
- package/src/components/spinner/spinner.stories.js +92 -0
- package/src/components/spotlight-section/spotlight-section.css.js +14 -13
- package/src/components/spotlight-section/spotlight-section.js +42 -39
- package/src/components/switch/switch.css.js +103 -0
- package/src/components/switch/switch.js +44 -0
- package/src/components/switch/switch.stories.js +86 -0
- package/src/components/tab-list/content-switcher.stories.js +189 -0
- package/src/components/tab-list/tab-list.css.js +250 -0
- package/src/components/tab-list/tab-list.js +184 -0
- package/src/components/tab-list/tab-list.stories.js +221 -0
- package/src/components/tabs/tabs.css.js +14 -123
- package/src/components/tabs/tabs.js +16 -19
- package/src/components/tabs/tabs.stories.js +95 -95
- package/src/components/tag/tag.css.js +54 -0
- package/src/components/tag/tag.js +32 -0
- package/src/components/tag/tag.stories.js +126 -0
- package/src/components/terminal/terminal-message.css.js +164 -60
- package/src/components/terminal/terminal-message.js +5 -5
- package/src/components/terminal/terminal-message.stories.js +70 -1
- package/src/components/termsOfUse/terms.css.js +25 -20
- package/src/components/termsOfUse/terms.js +13 -9
- package/src/components/termsOfUse/terms.stories.js +1 -1
- package/src/components/textarea/textarea.css.js +51 -0
- package/src/components/textarea/textarea.js +136 -0
- package/src/components/textarea/textarea.stories.js +191 -0
- package/src/components/tooltip/tooltip.css.js +75 -0
- package/src/components/tooltip/tooltip.js +156 -0
- package/src/components/tooltip/tooltip.stories.js +161 -0
- package/src/components/trust-panel/trust-panel.css.js +85 -33
- package/src/components/trust-panel/trust-panel.js +18 -10
- package/src/components/trust-panel/trust-panel.stories.js +1 -1
- package/src/components/ultimate-security-demo.stories.js +431 -0
- package/src/components/video/video.css.js +17 -0
- package/src/components/video/video.js +40 -0
- package/src/components/video/video.stories.js +106 -0
- package/src/components/video-player/video-player.css.js +67 -11
- package/src/components/video-player/video-player.js +35 -4
- package/src/components/video-player/video-player.stories.js +1 -1
- package/src/components/visual-alignment.stories.js +411 -0
- package/src/components/visually-hidden/visually-hidden.css.js +24 -0
- package/src/components/visually-hidden/visually-hidden.js +16 -0
- package/src/components/visually-hidden/visually-hidden.stories.js +56 -0
- package/src/stories/Button.stories.js +17 -17
- package/src/stories/Header.stories.js +10 -10
- package/src/stories/Page.js +1 -1
- package/src/stories/Page.stories.js +6 -6
- package/src/tokens/borders.stories.js +339 -0
- package/src/tokens/color-responsibilities.stories.js +227 -0
- package/src/tokens/dark-derivation.js +309 -0
- package/src/tokens/dark-findings.js +197 -0
- package/src/tokens/dark-mode.stories.js +207 -0
- package/src/tokens/dimension.stories.js +251 -0
- package/src/tokens/elevation.stories.js +143 -0
- package/src/tokens/focus.stories.js +276 -0
- package/src/tokens/fonts.css +20 -20
- package/src/tokens/fonts.stories.js +354 -374
- package/src/tokens/layout.css +25 -11
- package/src/tokens/motion.stories.js +231 -0
- package/src/tokens/shape.stories.js +272 -0
- package/src/tokens/spacing-rhythm.stories.js +359 -0
- package/src/tokens/spacing.stories.js +208 -703
- package/src/tokens/story-chrome.js +503 -0
- package/src/tokens/surfaces.stories.js +224 -0
- package/src/tokens/text-on-surface.stories.js +164 -0
- package/src/tokens/token-map.js +220 -0
- package/src/tokens/token-map.stories.js +257 -0
- package/src/tokens/token-purposes.js +266 -0
- package/src/tokens/tokens-grid.stories.js +388 -900
- package/src/tokens/tokens.css +1633 -1045
- package/src/tokens/tokens.js +1130 -492
- package/src/tokens/tokens.stories.js +137 -47
- package/src/tokens/type-ceiling-words.js +299 -0
- package/src/tokens/typography.stories.js +1003 -965
- package/src/tokens/vertical-rhythm.stories.js +224 -0
- package/src/components/awards/awards-icon.js +0 -56
- package/src/components/awards/awards-light.js +0 -240
- package/src/components/banner/banner.js +0 -60
- package/src/components/banner/banner.stories.js +0 -51
- package/src/components/button/icons.js +0 -24
- package/src/components/input/index.js +0 -0
- package/src/components/light-carousel/light-carousel-simple.css.js +0 -183
- package/src/components/light-carousel/light-carousel-simple.js +0 -74
- package/src/tokens/colors.js +0 -121
- package/src/tokens/typography.css.js +0 -207
- package/src/tokens/typography.js +0 -0
|
@@ -1,80 +1,66 @@
|
|
|
1
|
-
import { css } from "lit";
|
|
1
|
+
import { css, unsafeCSS } from "lit";
|
|
2
|
+
import { below } from "../shared/token-scales.js";
|
|
2
3
|
|
|
3
4
|
export default css`
|
|
4
5
|
:host {
|
|
5
6
|
display: block;
|
|
6
7
|
font-family: var(--typography-fontFamily-sans);
|
|
7
|
-
background: var(--
|
|
8
|
+
background: var(--status-brand-surface);
|
|
8
9
|
}
|
|
9
10
|
|
|
10
|
-
/* === DARK VARIANT ===
|
|
11
|
+
/* === DARK VARIANT ===
|
|
12
|
+
The same inverse band bd-process-steps draws, read through the same
|
|
13
|
+
inverse roles, so the two dark sections agree. */
|
|
11
14
|
:host([variant="dark"]) {
|
|
15
|
+
/* no token: the #0b1626 end stop is bd-process-steps' gradient, shared
|
|
16
|
+
until the inverse band has a role of its own. */
|
|
12
17
|
background: linear-gradient(160deg, var(--color-neutral-800) 0%, #0b1626 100%);
|
|
13
18
|
}
|
|
14
19
|
|
|
15
20
|
:host([variant="dark"]) .bd-comparisonpanel-title {
|
|
16
|
-
color: var(--color-
|
|
21
|
+
color: var(--color-text-inverse);
|
|
17
22
|
}
|
|
18
23
|
|
|
19
24
|
:host([variant="dark"]) .bd-comparisonpanel-description {
|
|
20
|
-
color:
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
:host([variant="dark"]) .bd-comparisonpanel-eyebrow {
|
|
24
|
-
color: var(--color-blue-400, #60a5fa);
|
|
25
|
+
color: var(--color-text-muted-inverse);
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
:host([variant="dark"]) .bd-comparisonpanel-column {
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
/* no token: a 3% white lift on the inverse band; no surface role is
|
|
30
|
+
translucent. */
|
|
31
|
+
background: color-mix(in srgb, var(--color-neutral-0) 3%, transparent);
|
|
32
|
+
border-color: var(--color-border-container-inverse);
|
|
30
33
|
}
|
|
31
34
|
|
|
32
35
|
:host([variant="dark"]) .bd-comparisonpanel-column-title {
|
|
33
|
-
color:
|
|
34
|
-
font-family: var(--typography-fontFamily-mono
|
|
36
|
+
color: var(--color-text-muted-inverse);
|
|
37
|
+
font-family: var(--typography-fontFamily-mono);
|
|
35
38
|
text-transform: uppercase;
|
|
36
|
-
letter-spacing:
|
|
37
|
-
|
|
38
|
-
|
|
39
|
+
letter-spacing: var(--typography-letterSpacing-widest);
|
|
40
|
+
/* no role: the mono column label, a marker rather than a text type --
|
|
41
|
+
see header-code.css.js's code badge. */
|
|
42
|
+
font-weight: var(--typography-fontWeight-bold);
|
|
43
|
+
/* no role: the size of the same marker. */
|
|
44
|
+
font-size: var(--typography-fontSize-xs);
|
|
39
45
|
}
|
|
40
46
|
|
|
41
47
|
:host([variant="dark"]) .bd-comparisonpanel-text {
|
|
42
|
-
color:
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
:host([variant="dark"]) .bd-comparisonpanel-icon--positive {
|
|
46
|
-
background: var(--color-green-600, #16a34a);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
:host([variant="dark"]) .bd-comparisonpanel-icon--negative {
|
|
50
|
-
background: var(--color-red-500, #ef4444);
|
|
48
|
+
color: var(--color-text-inverse);
|
|
51
49
|
}
|
|
52
50
|
|
|
53
51
|
.bd-comparisonpanel-wrapper {
|
|
54
|
-
|
|
55
|
-
margin: 0 auto;
|
|
56
|
-
padding: var(--spacing-48) var(--layout-ensemble-inline-padding, var(--spacing-24));
|
|
52
|
+
padding-block: var(--spacing-48);
|
|
57
53
|
box-sizing: border-box;
|
|
58
54
|
}
|
|
59
55
|
|
|
60
|
-
/* Small eyebrow label above the title, e.g. "Clarity" — optional, only
|
|
61
|
-
rendered when the eyebrow prop/slot is used. */
|
|
62
|
-
.bd-comparisonpanel-eyebrow {
|
|
63
|
-
margin: 0 0 var(--spacing-8);
|
|
64
|
-
color: var(--color-blue-500);
|
|
65
|
-
font-weight: var(--typography-fontWeight-bold, 700);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
56
|
.bd-comparisonpanel-title {
|
|
69
57
|
margin: 0 0 var(--spacing-16);
|
|
70
|
-
color: var(--color-neutral-900);
|
|
71
|
-
line-height: var(--typography-lineHeight-tight, 1.1);
|
|
72
58
|
}
|
|
73
59
|
|
|
74
60
|
.bd-comparisonpanel-description {
|
|
75
61
|
margin: 0 0 var(--spacing-48);
|
|
76
|
-
color: var(--color-
|
|
77
|
-
max-width:
|
|
62
|
+
color: var(--color-text-muted);
|
|
63
|
+
max-width: var(--content-width-readable);
|
|
78
64
|
}
|
|
79
65
|
|
|
80
66
|
/* === COLUMNS === */
|
|
@@ -85,16 +71,15 @@ export default css`
|
|
|
85
71
|
}
|
|
86
72
|
|
|
87
73
|
.bd-comparisonpanel-column {
|
|
88
|
-
background: var(--color-
|
|
89
|
-
border:
|
|
90
|
-
border-radius: var(--radius
|
|
91
|
-
padding: var(--
|
|
74
|
+
background: var(--color-surface-default);
|
|
75
|
+
border: var(--border-width-1) solid var(--color-border-container);
|
|
76
|
+
border-radius: var(--card-radius);
|
|
77
|
+
padding: var(--card-padding);
|
|
92
78
|
box-sizing: border-box;
|
|
93
79
|
}
|
|
94
80
|
|
|
95
81
|
.bd-comparisonpanel-column-title {
|
|
96
82
|
margin: 0 0 var(--spacing-16);
|
|
97
|
-
color: var(--color-neutral-900);
|
|
98
83
|
}
|
|
99
84
|
|
|
100
85
|
/* === LIST === */
|
|
@@ -125,21 +110,23 @@ export default css`
|
|
|
125
110
|
}
|
|
126
111
|
|
|
127
112
|
.bd-comparisonpanel-icon--positive {
|
|
128
|
-
background: var(--
|
|
113
|
+
background: var(--status-success-fill);
|
|
129
114
|
}
|
|
130
115
|
|
|
131
116
|
.bd-comparisonpanel-icon--negative {
|
|
132
|
-
background: var(--
|
|
117
|
+
background: var(--status-error-fill);
|
|
133
118
|
}
|
|
134
119
|
|
|
135
120
|
.bd-comparisonpanel-text {
|
|
136
121
|
margin: 0;
|
|
137
|
-
|
|
138
|
-
|
|
122
|
+
/* Body copy. It sat on neutral-800, which is not the primitive
|
|
123
|
+
behind any text role -- primary is neutral-900, secondary
|
|
124
|
+
neutral-700 -- so it belonged to no tier. */
|
|
125
|
+
color: var(--color-text-primary);
|
|
139
126
|
}
|
|
140
127
|
|
|
141
128
|
/* === RESPONSIVE === */
|
|
142
|
-
@media (
|
|
129
|
+
@media ${unsafeCSS(below('md'))} {
|
|
143
130
|
.bd-comparisonpanel-columns {
|
|
144
131
|
grid-template-columns: 1fr;
|
|
145
132
|
}
|
|
@@ -149,7 +136,7 @@ export default css`
|
|
|
149
136
|
}
|
|
150
137
|
|
|
151
138
|
.bd-comparisonpanel-column {
|
|
152
|
-
padding: var(--
|
|
139
|
+
padding: var(--card-padding-compact);
|
|
153
140
|
}
|
|
154
141
|
}
|
|
155
142
|
`;
|
|
@@ -3,6 +3,7 @@ import { tokens } from "../../tokens/tokens.js";
|
|
|
3
3
|
import "../heading/heading.js";
|
|
4
4
|
import "../paragraph/paragraph.js";
|
|
5
5
|
import comparisonPanelCSS from "./comparison-panel.css.js";
|
|
6
|
+
import { ensembleCSS } from "../shared/ensemble.css.js";
|
|
6
7
|
|
|
7
8
|
class ComparisonPanel extends LitElement {
|
|
8
9
|
static properties = {
|
|
@@ -18,7 +19,7 @@ class ComparisonPanel extends LitElement {
|
|
|
18
19
|
variant : { type: String, reflect: true }
|
|
19
20
|
};
|
|
20
21
|
|
|
21
|
-
static styles = [tokens, comparisonPanelCSS];
|
|
22
|
+
static styles = [tokens, ensembleCSS, comparisonPanelCSS];
|
|
22
23
|
|
|
23
24
|
constructor() {
|
|
24
25
|
super();
|
|
@@ -63,7 +64,7 @@ class ComparisonPanel extends LitElement {
|
|
|
63
64
|
</svg>
|
|
64
65
|
`}
|
|
65
66
|
</span>
|
|
66
|
-
<bd-p
|
|
67
|
+
<bd-p variant="regular" class="bd-comparisonpanel-text">${item}</bd-p>
|
|
67
68
|
</li>
|
|
68
69
|
`
|
|
69
70
|
)}
|
|
@@ -76,7 +77,7 @@ class ComparisonPanel extends LitElement {
|
|
|
76
77
|
|
|
77
78
|
render() {
|
|
78
79
|
return html`
|
|
79
|
-
<div class="bd-comparisonpanel-wrapper">
|
|
80
|
+
<div class="bd-ensemble bd-comparisonpanel-wrapper">
|
|
80
81
|
${this.title
|
|
81
82
|
? html`
|
|
82
83
|
<bd-h as="h2" class="bd-comparisonpanel-title">
|
|
@@ -87,7 +88,7 @@ class ComparisonPanel extends LitElement {
|
|
|
87
88
|
|
|
88
89
|
${this.description
|
|
89
90
|
? html`
|
|
90
|
-
<bd-p
|
|
91
|
+
<bd-p variant="large" class="bd-comparisonpanel-description">
|
|
91
92
|
<slot name="description">${this.description}</slot>
|
|
92
93
|
</bd-p>
|
|
93
94
|
`
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { css } from "lit";
|
|
1
|
+
import { css, unsafeCSS } from "lit";
|
|
2
|
+
import { below } from "../shared/token-scales.js";
|
|
2
3
|
|
|
3
4
|
export default css`
|
|
4
5
|
:host {
|
|
@@ -7,56 +8,62 @@ export default css`
|
|
|
7
8
|
}
|
|
8
9
|
|
|
9
10
|
:host([background="blue"]) {
|
|
10
|
-
background: var(--
|
|
11
|
+
background: var(--status-brand-surface);
|
|
11
12
|
}
|
|
12
13
|
/* variant="light" + background="bordered": renders its own card border
|
|
13
14
|
and hover lift, so callers don't need a manual wrapper <div> just to
|
|
14
15
|
get the bordered-card look (e.g. side-by-side requirement cards). */
|
|
15
16
|
:host([variant="light"][background="bordered"]) {
|
|
16
17
|
display: block;
|
|
17
|
-
border:
|
|
18
|
-
border-radius: var(--radius-xl
|
|
19
|
-
padding: var(--spacing-24
|
|
18
|
+
border: var(--border-width-1) solid var(--color-border-container);
|
|
19
|
+
border-radius: var(--radius-xl);
|
|
20
|
+
padding: var(--spacing-24);
|
|
20
21
|
box-sizing: border-box;
|
|
21
|
-
transition:
|
|
22
|
+
transition:
|
|
23
|
+
transform var(--transition-duration-normal) var(--transition-easing-ease),
|
|
24
|
+
box-shadow var(--transition-duration-normal) var(--transition-easing-ease),
|
|
25
|
+
border-color var(--transition-duration-normal) var(--transition-easing-ease);
|
|
22
26
|
}
|
|
23
27
|
|
|
24
28
|
:host([variant="light"][background="bordered"]:hover) {
|
|
25
|
-
transform: translateY(-
|
|
26
|
-
box-shadow:
|
|
27
|
-
border-color: var(--color-
|
|
29
|
+
transform: translateY(calc(-1 * var(--spacing-4)));
|
|
30
|
+
box-shadow: var(--shadow-lg);
|
|
31
|
+
border-color: var(--color-border-subtle);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@media (prefers-reduced-motion: reduce) {
|
|
35
|
+
:host([variant="light"][background="bordered"]) {
|
|
36
|
+
transition: none;
|
|
37
|
+
}
|
|
28
38
|
}
|
|
29
39
|
|
|
30
40
|
:host([variant="light"][background="bordered"]) .bd-compattable-wrapper {
|
|
31
|
-
padding: 0;
|
|
41
|
+
padding: var(--spacing-0);
|
|
32
42
|
}
|
|
43
|
+
|
|
33
44
|
.bd-compattable-wrapper {
|
|
34
|
-
|
|
35
|
-
margin: 0 auto;
|
|
36
|
-
padding: var(--spacing-48) 0px var(--spacing-0);
|
|
45
|
+
padding-block: var(--spacing-48) var(--spacing-0);
|
|
37
46
|
box-sizing: border-box;
|
|
38
47
|
}
|
|
39
48
|
|
|
40
49
|
.bd-compattable-title {
|
|
41
50
|
display: block;
|
|
42
51
|
margin: 0 0 var(--spacing-12);
|
|
43
|
-
color: var(--color-neutral-1000);
|
|
44
|
-
line-height: var(--typography-lineHeight-tight, 1.1);
|
|
45
52
|
}
|
|
46
53
|
|
|
47
54
|
.bd-compattable-description {
|
|
48
55
|
display: block;
|
|
49
56
|
margin: 0 0 var(--spacing-32);
|
|
50
|
-
color: var(--color-
|
|
51
|
-
max-width:
|
|
57
|
+
color: var(--color-text-muted);
|
|
58
|
+
max-width: var(--content-width-readable);
|
|
52
59
|
}
|
|
53
60
|
|
|
54
61
|
.bd-compattable-table-container {
|
|
55
62
|
display: table;
|
|
56
63
|
width: 100%;
|
|
57
|
-
background: var(--color-
|
|
58
|
-
border:
|
|
59
|
-
border-radius: var(--radius-xl
|
|
64
|
+
background: var(--color-surface-default);
|
|
65
|
+
border: var(--border-width-1) solid var(--color-border-container);
|
|
66
|
+
border-radius: var(--radius-xl);
|
|
60
67
|
overflow: hidden;
|
|
61
68
|
box-sizing: border-box;
|
|
62
69
|
}
|
|
@@ -64,8 +71,8 @@ export default css`
|
|
|
64
71
|
.bd-compattable-header {
|
|
65
72
|
display: grid;
|
|
66
73
|
grid-template-columns: 1.4fr 1.2fr 2.4fr;
|
|
67
|
-
background: var(--color-
|
|
68
|
-
border-bottom:
|
|
74
|
+
background: var(--color-surface-subtle);
|
|
75
|
+
border-bottom: var(--border-width-1) solid var(--color-border-subtle);
|
|
69
76
|
}
|
|
70
77
|
|
|
71
78
|
:host([variant="outcome"]) .bd-compattable-header {
|
|
@@ -78,18 +85,48 @@ export default css`
|
|
|
78
85
|
|
|
79
86
|
.bd-compattable-header-cell {
|
|
80
87
|
padding: var(--spacing-16) var(--spacing-24);
|
|
81
|
-
color: var(--color-
|
|
82
|
-
font-family: var(--typography-fontFamily-mono
|
|
88
|
+
color: var(--color-text-secondary);
|
|
89
|
+
font-family: var(--typography-fontFamily-mono);
|
|
90
|
+
/* no role: the size is part of the same decision as the leading below --
|
|
91
|
+
mono, semibold and tracked at 14px is a table header, and no role in the
|
|
92
|
+
vocabulary carries that combination. */
|
|
83
93
|
font-size: var(--typography-fontSize-sm);
|
|
94
|
+
/* The leading these five text sites were all missing. Measured before, every
|
|
95
|
+
one of them computed line-height: normal -- the font's own metric rather
|
|
96
|
+
than a decision, which CLAUDE.md rule 2 says is never a typography
|
|
97
|
+
contract. 34 elements across the built stories rendered that way.
|
|
98
|
+
|
|
99
|
+
--typography-lineHeight-tight, because it is what the metric already
|
|
100
|
+
resolved to: the 16px cells measured a 20px line box (1.25 exactly) and
|
|
101
|
+
the 12px header 15px (1.25 exactly). Naming it makes today's appearance a
|
|
102
|
+
choice that survives a font fallback instead of an accident that does
|
|
103
|
+
not. The 14px mono header is the one that moves -- IBM Plex Mono's normal
|
|
104
|
+
is 1.286 there, so its line box goes 18px to 17.5px inside 16px of
|
|
105
|
+
padding.
|
|
106
|
+
|
|
107
|
+
no role: nothing in the role vocabulary matches this table. The headers
|
|
108
|
+
are mono, semibold and tracked, and the cells are semibold at 16px where
|
|
109
|
+
body-regular is 400 -- adopting a role would restyle the table rather
|
|
110
|
+
than give it the leading it was missing. */
|
|
111
|
+
line-height: var(--typography-lineHeight-tight);
|
|
84
112
|
text-transform: uppercase;
|
|
85
113
|
letter-spacing: .06em;
|
|
86
|
-
|
|
114
|
+
/* no role: the weight completes the combination the leading comment above
|
|
115
|
+
describes. body-regular is 400 and label-default is 500; a header cell at
|
|
116
|
+
600 belongs to no declared role. */
|
|
117
|
+
font-weight: var(--typography-fontWeight-semibold);
|
|
87
118
|
}
|
|
88
119
|
|
|
89
120
|
:host([variant="outcome"]) .bd-compattable-header-cell,
|
|
90
121
|
:host([variant="risk"]) .bd-compattable-header-cell {
|
|
122
|
+
/* no role: same table, same decision as the header cell above. The pair of
|
|
123
|
+
axes this rule sets happens to match control-label-small, but a table cell is
|
|
124
|
+
not a control label -- adopting it would restyle the table rather than
|
|
125
|
+
give it the leading it was missing. */
|
|
91
126
|
font-size: var(--typography-fontSize-xs);
|
|
92
|
-
|
|
127
|
+
/* no role: see the header cell above on the missing leading. */
|
|
128
|
+
line-height: var(--typography-lineHeight-tight);
|
|
129
|
+
color: var(--color-text-muted);
|
|
93
130
|
}
|
|
94
131
|
|
|
95
132
|
.bd-compattable-body {
|
|
@@ -100,7 +137,14 @@ export default css`
|
|
|
100
137
|
.bd-compattable-row {
|
|
101
138
|
display: grid;
|
|
102
139
|
grid-template-columns: 1.4fr 1.2fr 2.4fr;
|
|
103
|
-
|
|
140
|
+
/* no role: a boundary, and no border role sits at neutral-50 -- the family
|
|
141
|
+
starts at container (neutral-100) and gets darker. The decision of
|
|
142
|
+
2026-09-14 was that a boundary like this is DECORATIVE, so it is exempt
|
|
143
|
+
from the 3:1 non-text bar (it measures 1.12:1 against white) and does not
|
|
144
|
+
need to move up the family to earn one. The lighter row is deliberately
|
|
145
|
+
lighter than .bd-compattable-lightrow below, which takes
|
|
146
|
+
--color-border-container. */
|
|
147
|
+
border-bottom: var(--border-width-1) solid var(--color-neutral-50);
|
|
104
148
|
}
|
|
105
149
|
|
|
106
150
|
:host([variant="outcome"]) .bd-compattable-row {
|
|
@@ -119,17 +163,29 @@ export default css`
|
|
|
119
163
|
padding: var(--spacing-20) var(--spacing-24);
|
|
120
164
|
display: flex;
|
|
121
165
|
align-items: center;
|
|
122
|
-
|
|
166
|
+
/* Cell data, one step back from the row label beside it, which
|
|
167
|
+
is text-primary. Secondary keeps that hierarchy; primary
|
|
168
|
+
would have flattened the two together. */
|
|
169
|
+
color: var(--color-text-secondary);
|
|
170
|
+
/* no role: same table, same decision as the header cell above. The pair of
|
|
171
|
+
axes this rule sets happens to match control-label-large, but a table cell is
|
|
172
|
+
not a control label -- adopting it would restyle the table rather than
|
|
173
|
+
give it the leading it was missing. */
|
|
123
174
|
font-size: var(--typography-fontSize-base);
|
|
175
|
+
/* no role: see the header cell above on the missing leading. */
|
|
176
|
+
line-height: var(--typography-lineHeight-tight);
|
|
124
177
|
}
|
|
125
178
|
|
|
126
179
|
.bd-compattable-cell--environment {
|
|
127
|
-
color: var(--color-
|
|
180
|
+
color: var(--color-text-primary);
|
|
181
|
+
/* no role: the weight axis of the same table, and the same decision --
|
|
182
|
+
see the header cell above. */
|
|
128
183
|
font-weight: var(--typography-fontWeight-semibold);
|
|
129
184
|
}
|
|
130
185
|
|
|
131
186
|
.bd-compattable-cell--notes {
|
|
132
|
-
|
|
187
|
+
/* Supporting notes. */
|
|
188
|
+
color: var(--color-text-secondary);
|
|
133
189
|
gap: var(--spacing-8);
|
|
134
190
|
}
|
|
135
191
|
|
|
@@ -138,62 +194,115 @@ export default css`
|
|
|
138
194
|
}
|
|
139
195
|
|
|
140
196
|
.bd-compattable-cell--event {
|
|
141
|
-
color: var(--color-
|
|
197
|
+
color: var(--color-text-primary);
|
|
198
|
+
/* no role: the weight axis of the same table, and the same decision --
|
|
199
|
+
see the header cell above. */
|
|
142
200
|
font-weight: var(--typography-fontWeight-semibold);
|
|
143
201
|
}
|
|
144
202
|
|
|
203
|
+
/* These two cells say whether a product has a feature, which is the success
|
|
204
|
+
and error responsibility rather than "a green" and "a red". The status
|
|
205
|
+
roles were already the right answer and also the legible one: green-600
|
|
206
|
+
measures 3.20:1 on white and --status-success-text 6.77, red-600 5.44 and
|
|
207
|
+
--status-error-text 7.56. The green was a genuine failure; the red was only
|
|
208
|
+
the wrong family. */
|
|
145
209
|
.bd-compattable-cell--without {
|
|
146
|
-
color: var(--
|
|
210
|
+
color: var(--status-error-text);
|
|
147
211
|
}
|
|
148
212
|
|
|
149
213
|
.bd-compattable-cell--with {
|
|
150
|
-
color: var(--
|
|
214
|
+
color: var(--status-success-text);
|
|
151
215
|
}
|
|
152
216
|
|
|
153
217
|
.bd-compattable-cell--category {
|
|
154
|
-
color: var(--color-
|
|
218
|
+
color: var(--color-text-primary);
|
|
219
|
+
/* no role: the weight axis of the same table, and the same decision --
|
|
220
|
+
see the header cell above. */
|
|
155
221
|
font-weight: var(--typography-fontWeight-semibold);
|
|
156
222
|
}
|
|
157
223
|
|
|
158
224
|
.bd-compattable-cell--riskcoverage {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
.
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
.
|
|
168
|
-
|
|
169
|
-
|
|
225
|
+
/* no role: the risk-coverage cell's ink. This is the one genuine non-interactive
|
|
226
|
+
brand-ink site in the package -- everything else at blue-700 is a :hover, an
|
|
227
|
+
active state, a glyph on a tinted disc, or dead. ONE SITE DOES NOT NAME A ROLE:
|
|
228
|
+
phase-1-eyebrow-investigation settled that precedent when "eyebrow" turned out to
|
|
229
|
+
be one question asked four times and took a marker rather than a role, and the
|
|
230
|
+
plan's single-consumer-semantic-token item exists because Phase 3's job is to
|
|
231
|
+
FIND AND DELETE exactly the shape a --color-text-brand-strong invented here would
|
|
232
|
+
create.
|
|
233
|
+
.
|
|
234
|
+
The size-dependent-ink hypothesis was tested package-wide and rejected; see
|
|
235
|
+
plans/reports/phase-2-size-dependent-ink-check.md. Note separately that this cell
|
|
236
|
+
is role="cell" with no href and renders as blue running prose, so it reads as a
|
|
237
|
+
link without being one -- a UX question, not a token one. */
|
|
238
|
+
color: var(--color-blue-700);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/* === LIGHT VARIANT === */
|
|
242
|
+
.bd-compattable-lightgrid {
|
|
243
|
+
display: grid;
|
|
244
|
+
grid-template-columns: repeat(var(--bd-compattable-light-columns, 2), 1fr);
|
|
245
|
+
column-gap: var(--spacing-48);
|
|
246
|
+
row-gap: 0;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.bd-compattable-lightrow:last-of-type {
|
|
250
|
+
border-bottom: none;
|
|
251
|
+
}
|
|
252
|
+
|
|
170
253
|
.bd-compattable-lightrow {
|
|
171
254
|
display: flex;
|
|
172
255
|
align-items: baseline;
|
|
173
256
|
justify-content: space-between;
|
|
174
257
|
gap: var(--spacing-16);
|
|
175
258
|
padding: var(--spacing-16) 0;
|
|
176
|
-
|
|
259
|
+
/* A boundary, not a divider: the line belongs to the row it closes, so it
|
|
260
|
+
is a border and takes a border role. --color-border-container is
|
|
261
|
+
neutral-100 exactly, so nothing moves. Decided 2026-09-14 -- see
|
|
262
|
+
plans/reports/phase-2-vocab-e-has-role-pass.md question E3. */
|
|
263
|
+
border-bottom: var(--border-width-1) solid var(--color-border-container);
|
|
177
264
|
}
|
|
178
265
|
|
|
179
266
|
.bd-compattable-lightlabel {
|
|
180
|
-
color: var(--color-
|
|
267
|
+
color: var(--color-text-subtle);
|
|
268
|
+
/* no role: same table, same decision as the header cell above. The pair of
|
|
269
|
+
axes this rule sets happens to match control-label-large, but a table cell is
|
|
270
|
+
not a control label -- adopting it would restyle the table rather than
|
|
271
|
+
give it the leading it was missing. */
|
|
181
272
|
font-size: var(--typography-fontSize-base);
|
|
273
|
+
/* no role: see the header cell above on the missing leading. */
|
|
274
|
+
line-height: var(--typography-lineHeight-tight);
|
|
182
275
|
flex-shrink: 0;
|
|
183
276
|
}
|
|
184
277
|
|
|
278
|
+
/* On the blue band the label leaves subtle for muted: subtle sits on the
|
|
279
|
+
page or a card, and on --status-brand-surface it measured 4.46:1. Muted
|
|
280
|
+
reads 6.10 there. Dark mode decision 17. */
|
|
281
|
+
:host([background="blue"]) .bd-compattable-lightlabel {
|
|
282
|
+
color: var(--color-text-muted);
|
|
283
|
+
}
|
|
284
|
+
|
|
185
285
|
.bd-compattable-lightvalue {
|
|
186
|
-
color: var(--color-
|
|
286
|
+
color: var(--color-text-primary);
|
|
287
|
+
/* no role: the weight axis of the same table, and the same decision --
|
|
288
|
+
see the header cell above. */
|
|
187
289
|
font-weight: var(--typography-fontWeight-semibold);
|
|
188
290
|
text-align: right;
|
|
189
291
|
}
|
|
190
292
|
|
|
191
|
-
|
|
293
|
+
/* === RESPONSIVE === */
|
|
294
|
+
@media ${unsafeCSS(below('md'))} {
|
|
192
295
|
.bd-compattable-header {
|
|
193
296
|
display: none;
|
|
194
297
|
}
|
|
195
298
|
|
|
196
|
-
|
|
299
|
+
/* The two variant rules above are more specific than a bare class, and a
|
|
300
|
+
media query adds no specificity, so naming only .bd-compattable-row here
|
|
301
|
+
left the outcome and risk variants on their desktop column template at
|
|
302
|
+
phone widths. Outcome stayed three columns and ran 113px off the page. */
|
|
303
|
+
.bd-compattable-row,
|
|
304
|
+
:host([variant="outcome"]) .bd-compattable-row,
|
|
305
|
+
:host([variant="risk"]) .bd-compattable-row {
|
|
197
306
|
grid-template-columns: 1fr;
|
|
198
307
|
padding: var(--spacing-16) var(--spacing-20);
|
|
199
308
|
gap: var(--spacing-4);
|
|
@@ -203,38 +312,29 @@ export default css`
|
|
|
203
312
|
padding: var(--spacing-4) 0;
|
|
204
313
|
}
|
|
205
314
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
.bd-compattable-cell--without::before {
|
|
221
|
-
content: "Without AI Guardian: ";
|
|
222
|
-
color: var(--color-neutral-500);
|
|
223
|
-
font-size: var(--typography-fontSize-xs);
|
|
224
|
-
text-transform: uppercase;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
.bd-compattable-cell--with::before {
|
|
228
|
-
content: "With AI Guardian: ";
|
|
229
|
-
color: var(--color-neutral-500);
|
|
230
|
-
font-size: var(--typography-fontSize-xs);
|
|
231
|
-
text-transform: uppercase;
|
|
232
|
-
}
|
|
233
|
-
|
|
315
|
+
/* One rule, and the name comes from --bd-cell-label, which
|
|
316
|
+
compatibility-table.js sets per cell out of the columns prop. Five rules
|
|
317
|
+
stood here with the column names written into content as English
|
|
318
|
+
strings -- "Without AI Guardian: " and the rest -- so below md, where
|
|
319
|
+
the header is display: none, the only column labelling on screen was
|
|
320
|
+
text the consumer could neither change nor translate. Measured at 375
|
|
321
|
+
with Romanian columns: header "Fara AI Guardian", cell label
|
|
322
|
+
"Without AI Guardian". The empty fallback means a cell with no column
|
|
323
|
+
name shows nothing rather than the literal text of a broken var(). */
|
|
324
|
+
.bd-compattable-cell--coverage::before,
|
|
325
|
+
.bd-compattable-cell--notes::before,
|
|
326
|
+
.bd-compattable-cell--without::before,
|
|
327
|
+
.bd-compattable-cell--with::before,
|
|
234
328
|
.bd-compattable-cell--riskcoverage::before {
|
|
235
|
-
content:
|
|
236
|
-
color: var(--color-
|
|
329
|
+
content: var(--bd-cell-label, "");
|
|
330
|
+
color: var(--color-text-subtle);
|
|
331
|
+
/* no role: same table, same decision as the header cell above. The pair of
|
|
332
|
+
axes this rule sets happens to match control-label-small, but a table cell is
|
|
333
|
+
not a control label -- adopting it would restyle the table rather than
|
|
334
|
+
give it the leading it was missing. */
|
|
237
335
|
font-size: var(--typography-fontSize-xs);
|
|
336
|
+
/* no role: see the header cell above on the missing leading. */
|
|
337
|
+
line-height: var(--typography-lineHeight-tight);
|
|
238
338
|
text-transform: uppercase;
|
|
239
339
|
}
|
|
240
340
|
|