@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
|
@@ -3,10 +3,45 @@ import { css } from "lit";
|
|
|
3
3
|
export default css`
|
|
4
4
|
:host {
|
|
5
5
|
display: block;
|
|
6
|
-
font-family: var(--typography-fontFamily-mono
|
|
7
|
-
color: var(--color-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
font-family: var(--typography-fontFamily-mono);
|
|
7
|
+
color: var(--color-text-on-media);
|
|
8
|
+
|
|
9
|
+
/* The panel's quieter lines: the subordinate ink on the media frame,
|
|
10
|
+
fixed with it, 7.92:1 in either theme. */
|
|
11
|
+
--bd-terminalmsg-subdued: var(--color-text-on-media-muted);
|
|
12
|
+
|
|
13
|
+
/* The rest of the transcript's line-kind palette, on one mechanism.
|
|
14
|
+
|
|
15
|
+
This panel tells its line kinds apart by COLOUR -- see the marker on
|
|
16
|
+
.bd-terminalmsg-greeting-text -- so these are the component's own
|
|
17
|
+
vocabulary, not applications of a brand ink. That distinction is why
|
|
18
|
+
vocabulary question C closed without a global role: blue on a dark surface
|
|
19
|
+
here means "the assistant is speaking", not "brand". See
|
|
20
|
+
plans/reports/phase-2-vocab-c-inverse-ink.md.
|
|
21
|
+
|
|
22
|
+
The five kinds used four different mechanisms before this -- two semantic
|
|
23
|
+
roles, one component token, one raw primitive and one literal. Naming them
|
|
24
|
+
locally puts the palette in one place to read and to change. */
|
|
25
|
+
--bd-terminalmsg-ask: var(--color-blue-400);
|
|
26
|
+
--bd-terminalmsg-cmd: var(--color-text-on-media);
|
|
27
|
+
/* no token: the transcript's success green is the macOS traffic-light green,
|
|
28
|
+
matched to the dots this panel already draws, and the palette has no step at
|
|
29
|
+
it -- the nearest is --color-green-500 at a perceptual distance of 10.5,
|
|
30
|
+
which is a different colour rather than a rounding. Moving it here makes it
|
|
31
|
+
one declaration instead of one scattered, but it is NOT retired: nothing in
|
|
32
|
+
the scale carries this value. */
|
|
33
|
+
--bd-terminalmsg-ok: #27c93f;
|
|
34
|
+
/* The status badges' two other kinds, on the same mechanism. info is
|
|
35
|
+
blue-300 rather than the ask line's blue-400: a badge is a label, not the
|
|
36
|
+
assistant speaking. 7.61 and 12.17:1 on the media frame. */
|
|
37
|
+
--bd-terminalmsg-info: var(--color-blue-300);
|
|
38
|
+
--bd-terminalmsg-warn: var(--color-yellow-400);
|
|
39
|
+
/* The media frame, --color-surface-media. A terminal is dark in every theme, and this
|
|
40
|
+
panel's line palette (blue-400, the traffic-light green) is legible only
|
|
41
|
+
on a dark ground -- 2.98 and 1.97:1 once an inverse ground turns light.
|
|
42
|
+
It read --color-surface-inverse until dark mode decision 15. */
|
|
43
|
+
background: var(--color-surface-media);
|
|
44
|
+
border-radius: var(--radius-xl);
|
|
10
45
|
padding: var(--spacing-14) var(--spacing-16) var(--spacing-32);
|
|
11
46
|
box-sizing: border-box;
|
|
12
47
|
}
|
|
@@ -14,7 +49,7 @@ export default css`
|
|
|
14
49
|
/* Tighter host padding for the "flush" variant, used where the terminal
|
|
15
50
|
sits over decorative rings/a 3D scene (e.g. the VPN hero). */
|
|
16
51
|
:host([variant="flush"]) {
|
|
17
|
-
padding:
|
|
52
|
+
padding: var(--spacing-18) var(--spacing-20);
|
|
18
53
|
}
|
|
19
54
|
|
|
20
55
|
/* === TITLEBAR (traffic-light dots only, no label) === */
|
|
@@ -48,8 +83,8 @@ export default css`
|
|
|
48
83
|
/* === PANEL === */
|
|
49
84
|
.bd-terminalmsg-panel {
|
|
50
85
|
position: relative;
|
|
51
|
-
border:
|
|
52
|
-
border-radius: var(--radius-lg
|
|
86
|
+
border: var(--border-width-1) solid var(--color-border-container-inverse);
|
|
87
|
+
border-radius: var(--radius-lg);
|
|
53
88
|
padding: var(--spacing-20) var(--spacing-20) calc(var(--spacing-20) + var(--spacing-8));
|
|
54
89
|
}
|
|
55
90
|
|
|
@@ -69,25 +104,64 @@ export default css`
|
|
|
69
104
|
top: 0;
|
|
70
105
|
left: var(--spacing-16);
|
|
71
106
|
transform: translateY(-50%);
|
|
72
|
-
|
|
107
|
+
/* the media ground again; see the note above */
|
|
108
|
+
background: var(--color-surface-media);
|
|
73
109
|
padding: 0 var(--spacing-8);
|
|
74
|
-
color:
|
|
75
|
-
font-family: var(--typography-fontFamily-mono
|
|
110
|
+
color: var(--bd-terminalmsg-subdued);
|
|
111
|
+
font-family: var(--typography-fontFamily-mono);
|
|
112
|
+
/* no role: the panel label sitting on the top border, in mono -- see awards-flex.css.js's
|
|
113
|
+
.bd-awardsflex-quote-source for the argument. */
|
|
76
114
|
font-size: var(--typography-fontSize-xs);
|
|
77
115
|
}
|
|
78
116
|
|
|
79
117
|
.bd-terminalmsg-body {
|
|
80
|
-
|
|
81
|
-
|
|
118
|
+
/* body-small's size and leading only. NOT its family: this panel is a
|
|
119
|
+
transcript and the mono face comes from .bd-terminalmsg-panel above, so
|
|
120
|
+
importing body-small's fontFamily-sans here would break it. */
|
|
121
|
+
font-size: var(--typography-body-small-fontSize);
|
|
122
|
+
line-height: var(--typography-body-small-lineHeight);
|
|
82
123
|
}
|
|
83
124
|
|
|
84
125
|
.bd-terminalmsg-greeting-text {
|
|
85
|
-
color: var(--
|
|
126
|
+
color: var(--bd-terminalmsg-ask);
|
|
127
|
+
/* no role: this panel is a transcript, and its line kinds are told apart by
|
|
128
|
+
TWO channels -- colour always, weight on some -- over type that is
|
|
129
|
+
deliberately constant. Measured: l-cmd and l-strong are 700 white,
|
|
130
|
+
l-ok is 400 green, l-dim is 400 grey, and all four are 14px/21px mono,
|
|
131
|
+
because the metrics belong to the panel and not to the line. That makes
|
|
132
|
+
the weight a highlighting channel, the way a syntax highlighter uses
|
|
133
|
+
one, and a role cannot express it: a role carries a size and a leading
|
|
134
|
+
with it, so adopting one here would import metrics that break the shared
|
|
135
|
+
grid the transcript is read on.
|
|
136
|
+
.
|
|
137
|
+
The type itself is owned elsewhere and correctly -- this span sits inside
|
|
138
|
+
<bd-p variant="regular">, a valid semantic text owner, which is the case
|
|
139
|
+
CLAUDE.md rule 10 sanctions an inline descendant inheriting from. Only
|
|
140
|
+
the emphasis is declared here.
|
|
141
|
+
.
|
|
142
|
+
This is the argument for the other two bold classes in this file.
|
|
143
|
+
(The separator dots keep this one comment block contiguous: the marker
|
|
144
|
+
scan stops at any blank line, even one inside a single comment, so a
|
|
145
|
+
paragraph break would leave the "no role:" above out of reach.) */
|
|
86
146
|
font-weight: var(--typography-fontWeight-bold);
|
|
87
147
|
}
|
|
88
148
|
|
|
149
|
+
/* bd-p paints itself with --color-text-primary, and on this panel that is the
|
|
150
|
+
background colour exactly, so a bd-p in here is invisible unless the panel
|
|
151
|
+
says otherwise. The class existed and the rule did not, which is how
|
|
152
|
+
dim-text rendered at 1:1. The greeting needs it too: its blue span covers
|
|
153
|
+
the greeting text but not the icon sitting beside it, so a non-emoji prefix
|
|
154
|
+
inherited the same invisible colour. */
|
|
155
|
+
.bd-terminalmsg-dim {
|
|
156
|
+
color: var(--bd-terminalmsg-subdued);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.bd-terminalmsg-greeting {
|
|
160
|
+
color: var(--color-text-on-media);
|
|
161
|
+
}
|
|
162
|
+
|
|
89
163
|
.bd-terminalmsg-intro {
|
|
90
|
-
color: var(--color-
|
|
164
|
+
color: var(--color-text-on-media);
|
|
91
165
|
}
|
|
92
166
|
|
|
93
167
|
.bd-terminalmsg-list {
|
|
@@ -97,7 +171,7 @@ export default css`
|
|
|
97
171
|
}
|
|
98
172
|
|
|
99
173
|
.bd-terminalmsg-footer {
|
|
100
|
-
color: var(--color-
|
|
174
|
+
color: var(--color-text-on-media);
|
|
101
175
|
margin: 0;
|
|
102
176
|
}
|
|
103
177
|
|
|
@@ -107,19 +181,30 @@ export default css`
|
|
|
107
181
|
bottom: 0;
|
|
108
182
|
left: var(--spacing-16);
|
|
109
183
|
transform: translateY(50%);
|
|
110
|
-
|
|
184
|
+
/* the media ground again; see the note above */
|
|
185
|
+
background: var(--color-surface-media);
|
|
111
186
|
padding: 0 var(--spacing-8);
|
|
112
|
-
color:
|
|
113
|
-
font-family: var(--typography-fontFamily-mono
|
|
187
|
+
color: var(--bd-terminalmsg-subdued);
|
|
188
|
+
font-family: var(--typography-fontFamily-mono);
|
|
189
|
+
/* no role: the hint legend on the bottom border, in mono -- see awards-flex.css.js's
|
|
190
|
+
.bd-awardsflex-quote-source for the argument. */
|
|
114
191
|
font-size: var(--typography-fontSize-xs);
|
|
115
|
-
|
|
192
|
+
/* The legend is taken out of flow, so nothing stops it growing past the
|
|
193
|
+
panel: any hint longer than the panel is wide ran off the page at every
|
|
194
|
+
viewport, not only on a small phone. Bound it to the panel less its two
|
|
195
|
+
gutters and let it wrap when it has to. It still sits on one line at
|
|
196
|
+
every width where it fits, which is the normal case. */
|
|
197
|
+
max-width: calc(100% - var(--spacing-32));
|
|
116
198
|
}
|
|
117
199
|
|
|
118
200
|
/* Bracketed key labels inside the hint (e.g. "[Enter]", "[esc]") — bold + white,
|
|
119
201
|
standing out from the rest of the dimmer hint text. */
|
|
120
202
|
.bd-terminalmsg-hint-key {
|
|
121
|
-
color:
|
|
122
|
-
|
|
203
|
+
color: var(--color-text-on-media);
|
|
204
|
+
/* no role: the colour-plus-weight highlighting channel described on
|
|
205
|
+
.bd-terminalmsg-greeting-text above -- a bracketed key against dimmer
|
|
206
|
+
hint text. */
|
|
207
|
+
font-weight: var(--typography-fontWeight-bold);
|
|
123
208
|
}
|
|
124
209
|
|
|
125
210
|
/* === CAPTION — small dim note inside the panel, below everything else
|
|
@@ -127,11 +212,13 @@ export default css`
|
|
|
127
212
|
closes when the prompt ends". Sits inside the black box, unlike
|
|
128
213
|
bd-header-code's terminal-caption which renders below the whole card. */
|
|
129
214
|
.bd-terminalmsg-caption {
|
|
130
|
-
|
|
131
|
-
|
|
215
|
+
/* The subdued ink, not white at 35%: that measured 3.22:1 on the frame
|
|
216
|
+
and failed 1.4.3; this is 7.92:1. */
|
|
217
|
+
color: var(--bd-terminalmsg-subdued);
|
|
218
|
+
font-size: var(--typography-body-xsmall-fontSize);
|
|
132
219
|
margin-top: var(--spacing-16);
|
|
133
220
|
padding-top: var(--spacing-12);
|
|
134
|
-
border-top:
|
|
221
|
+
border-top: var(--border-width-1) solid var(--color-border-container-inverse);
|
|
135
222
|
}
|
|
136
223
|
|
|
137
224
|
/* === TYPED-LINE API (bd-terminal-message .lines=...) === */
|
|
@@ -149,28 +236,33 @@ export default css`
|
|
|
149
236
|
}
|
|
150
237
|
|
|
151
238
|
.bd-terminalmsg-l-cmd {
|
|
152
|
-
color: var(--
|
|
153
|
-
|
|
239
|
+
color: var(--bd-terminalmsg-cmd);
|
|
240
|
+
/* no role: the colour-plus-weight highlighting channel described on
|
|
241
|
+
.bd-terminalmsg-greeting-text above -- the command line of the
|
|
242
|
+
transcript, taking its 14px/21px mono from .bd-terminalmsg-body. */
|
|
243
|
+
font-weight: var(--typography-fontWeight-bold);
|
|
154
244
|
}
|
|
155
245
|
|
|
156
246
|
.bd-terminalmsg-l-ok {
|
|
157
|
-
color:
|
|
247
|
+
color: var(--bd-terminalmsg-ok);
|
|
158
248
|
padding-bottom: var(--spacing-12);
|
|
159
249
|
}
|
|
160
250
|
|
|
161
251
|
.bd-terminalmsg-l-ask {
|
|
162
|
-
color: var(--
|
|
252
|
+
color: var(--bd-terminalmsg-ask);
|
|
163
253
|
padding: var(--spacing-12) 0;
|
|
164
254
|
}
|
|
165
255
|
|
|
166
256
|
.bd-terminalmsg-l-strong {
|
|
167
|
-
color: var(--color-
|
|
168
|
-
|
|
257
|
+
color: var(--color-text-on-media);
|
|
258
|
+
/* no role: the strong run inside a terminal line -- a state or modifier weight, not a text-content
|
|
259
|
+
type. See button.css.js's .button--bold for the argument. */
|
|
260
|
+
font-weight: var(--typography-fontWeight-bold);
|
|
169
261
|
padding-top: var(--spacing-12);
|
|
170
262
|
}
|
|
171
263
|
|
|
172
264
|
.bd-terminalmsg-l-dim {
|
|
173
|
-
color:
|
|
265
|
+
color: var(--bd-terminalmsg-subdued);
|
|
174
266
|
}
|
|
175
267
|
|
|
176
268
|
.bd-terminalmsg-l-space {
|
|
@@ -179,7 +271,10 @@ export default css`
|
|
|
179
271
|
|
|
180
272
|
.bd-terminalmsg-l-sep {
|
|
181
273
|
border: none;
|
|
182
|
-
|
|
274
|
+
/* A boundary on the dark media ground, the same value and the same role as
|
|
275
|
+
process-steps' divider: --color-border-container-inverse is white at 12%
|
|
276
|
+
exactly. Nothing moves. */
|
|
277
|
+
border-top: var(--border-width-1) solid var(--color-border-container-inverse);
|
|
183
278
|
margin: var(--spacing-8) 0;
|
|
184
279
|
}
|
|
185
280
|
|
|
@@ -190,27 +285,32 @@ export default css`
|
|
|
190
285
|
align-items: center;
|
|
191
286
|
justify-content: space-between;
|
|
192
287
|
gap: var(--spacing-12);
|
|
193
|
-
color: var(--color-
|
|
194
|
-
|
|
288
|
+
color: var(--color-text-on-media);
|
|
289
|
+
/* no role: the colour-plus-weight highlighting channel described on
|
|
290
|
+
.bd-terminalmsg-greeting-text above -- the transcript's title line. */
|
|
291
|
+
font-weight: var(--typography-fontWeight-bold);
|
|
195
292
|
padding-bottom: var(--spacing-16);
|
|
196
293
|
}
|
|
197
294
|
|
|
198
295
|
.bd-terminalmsg-live {
|
|
199
296
|
display: inline-flex;
|
|
200
297
|
align-items: center;
|
|
201
|
-
gap: var(--spacing-4
|
|
202
|
-
color:
|
|
298
|
+
gap: var(--spacing-4);
|
|
299
|
+
color: var(--bd-terminalmsg-ok);
|
|
300
|
+
/* no role: a status marker in a mono transcript, not a text-content type.
|
|
301
|
+
label-small is the nearest role and would set it in sans at medium. */
|
|
203
302
|
font-size: var(--typography-fontSize-xs);
|
|
204
|
-
|
|
205
|
-
|
|
303
|
+
/* no role: the weight of the same marker. */
|
|
304
|
+
font-weight: var(--typography-fontWeight-bold);
|
|
305
|
+
letter-spacing: var(--typography-letterSpacing-wider);
|
|
206
306
|
flex-shrink: 0;
|
|
207
307
|
}
|
|
208
308
|
|
|
209
309
|
.bd-terminalmsg-live-dot {
|
|
210
|
-
width:
|
|
211
|
-
height:
|
|
212
|
-
border-radius:
|
|
213
|
-
background:
|
|
310
|
+
width: var(--spacing-6);
|
|
311
|
+
height: var(--spacing-6);
|
|
312
|
+
border-radius: var(--radius-full);
|
|
313
|
+
background: var(--bd-terminalmsg-ok);
|
|
214
314
|
}
|
|
215
315
|
|
|
216
316
|
/* === "row" line — label / text / colored badge, 3-column layout.
|
|
@@ -229,51 +329,55 @@ export default css`
|
|
|
229
329
|
the host's own top padding, which reads fine here — no exception
|
|
230
330
|
needed. */
|
|
231
331
|
:host([variant="flush"]) .bd-terminalmsg-l-row {
|
|
232
|
-
border-top:
|
|
332
|
+
border-top: var(--border-width-1) solid var(--color-border-container-inverse);
|
|
233
333
|
}
|
|
234
334
|
|
|
235
335
|
.bd-terminalmsg-l-row-label {
|
|
236
|
-
color:
|
|
336
|
+
color: var(--bd-terminalmsg-subdued);
|
|
237
337
|
text-transform: uppercase;
|
|
238
|
-
font-size: var(--typography-fontSize
|
|
239
|
-
letter-spacing:
|
|
240
|
-
padding-top:
|
|
338
|
+
font-size: var(--typography-body-xsmall-fontSize);
|
|
339
|
+
letter-spacing: var(--typography-letterSpacing-wider);
|
|
340
|
+
padding-top: var(--spacing-2);
|
|
241
341
|
}
|
|
242
342
|
|
|
243
343
|
.bd-terminalmsg-l-row-text {
|
|
244
|
-
color:
|
|
344
|
+
color: var(--color-text-on-media);
|
|
245
345
|
word-break: break-word;
|
|
246
346
|
}
|
|
247
347
|
|
|
248
348
|
.bd-terminalmsg-badge {
|
|
249
349
|
display: inline-flex;
|
|
250
350
|
align-items: center;
|
|
251
|
-
padding:
|
|
252
|
-
border-radius: var(--radius-full
|
|
351
|
+
padding: var(--spacing-2) var(--spacing-12);
|
|
352
|
+
border-radius: var(--radius-full);
|
|
353
|
+
/* no role: the status chip, as .bd-terminalmsg-live above. */
|
|
253
354
|
font-size: var(--typography-fontSize-xs);
|
|
254
|
-
|
|
355
|
+
/* no role: the weight of the same marker. */
|
|
356
|
+
font-weight: var(--typography-fontWeight-bold);
|
|
255
357
|
white-space: nowrap;
|
|
256
358
|
margin-top: 1px;
|
|
257
359
|
}
|
|
258
360
|
|
|
361
|
+
/* Each badge is its ink on a tint of the same ink, so a kind is one
|
|
362
|
+
declaration to change. */
|
|
259
363
|
.bd-terminalmsg-badge--green {
|
|
260
|
-
background:
|
|
261
|
-
color:
|
|
364
|
+
background: color-mix(in srgb, var(--bd-terminalmsg-ok) 15%, transparent);
|
|
365
|
+
color: var(--bd-terminalmsg-ok);
|
|
262
366
|
}
|
|
263
367
|
|
|
264
368
|
.bd-terminalmsg-badge--blue {
|
|
265
|
-
background:
|
|
266
|
-
color:
|
|
369
|
+
background: color-mix(in srgb, var(--bd-terminalmsg-info) 15%, transparent);
|
|
370
|
+
color: var(--bd-terminalmsg-info);
|
|
267
371
|
}
|
|
268
372
|
|
|
269
373
|
.bd-terminalmsg-badge--amber {
|
|
270
|
-
background:
|
|
271
|
-
color:
|
|
374
|
+
background: color-mix(in srgb, var(--bd-terminalmsg-warn) 15%, transparent);
|
|
375
|
+
color: var(--bd-terminalmsg-warn);
|
|
272
376
|
}
|
|
273
377
|
|
|
274
378
|
.bd-terminalmsg-badge--neutral {
|
|
275
|
-
background:
|
|
276
|
-
color:
|
|
379
|
+
background: color-mix(in srgb, var(--bd-terminalmsg-subdued) 15%, transparent);
|
|
380
|
+
color: var(--bd-terminalmsg-subdued);
|
|
277
381
|
}
|
|
278
382
|
|
|
279
383
|
/* Below ~360px of the terminal's OWN width (not the viewport's), stack
|
|
@@ -287,7 +391,7 @@ export default css`
|
|
|
287
391
|
@container bd-terminalmsg-lines (max-width: 360px) {
|
|
288
392
|
.bd-terminalmsg-l-row {
|
|
289
393
|
grid-template-columns: 1fr;
|
|
290
|
-
row-gap: var(--spacing-4
|
|
394
|
+
row-gap: var(--spacing-4);
|
|
291
395
|
}
|
|
292
396
|
|
|
293
397
|
.bd-terminalmsg-l-row-label {
|
|
@@ -141,12 +141,12 @@ class TerminalMessage extends LitElement {
|
|
|
141
141
|
${this._renderLines()}
|
|
142
142
|
|
|
143
143
|
${this.dimText
|
|
144
|
-
? html`<bd-p
|
|
144
|
+
? html`<bd-p variant="small" font-family="mono" paddingBottom="12" class="bd-terminalmsg-dim">${this.dimText}</bd-p>`
|
|
145
145
|
: nothing}
|
|
146
146
|
|
|
147
147
|
${this.greeting
|
|
148
148
|
? html`
|
|
149
|
-
<bd-p
|
|
149
|
+
<bd-p variant="regular" font-family="mono" paddingBottom="12" class="bd-terminalmsg-greeting">
|
|
150
150
|
${this.icon ? html`${this.icon} ` : nothing}
|
|
151
151
|
<span class="bd-terminalmsg-greeting-text">${this.greeting}</span>
|
|
152
152
|
</bd-p>
|
|
@@ -154,20 +154,20 @@ class TerminalMessage extends LitElement {
|
|
|
154
154
|
: nothing}
|
|
155
155
|
|
|
156
156
|
${this.intro
|
|
157
|
-
? html`<bd-p
|
|
157
|
+
? html`<bd-p variant="regular" font-family="mono" paddingBottom="12" class="bd-terminalmsg-intro">${this.intro}</bd-p>`
|
|
158
158
|
: nothing}
|
|
159
159
|
|
|
160
160
|
${this.items && this.items.length
|
|
161
161
|
? html`
|
|
162
162
|
<bd-list class="bd-terminalmsg-list">
|
|
163
|
-
${this.items.map((item) => html`<bd-li
|
|
163
|
+
${this.items.map((item) => html`<bd-li variant="bullet" size="sm" color="var(--color-neutral-0)">${item}</bd-li>`)}
|
|
164
164
|
</bd-list>
|
|
165
165
|
`
|
|
166
166
|
: nothing}
|
|
167
167
|
|
|
168
168
|
${this.footer || this.footerBold
|
|
169
169
|
? html`
|
|
170
|
-
<bd-p
|
|
170
|
+
<bd-p variant="regular" font-family="mono" class="bd-terminalmsg-footer">
|
|
171
171
|
${this.footerBold
|
|
172
172
|
? html`<strong>${this.footerBold}</strong> `
|
|
173
173
|
: nothing}
|
|
@@ -117,7 +117,9 @@ Every field is optional — omitted fields render nothing rather than empty spac
|
|
|
117
117
|
}
|
|
118
118
|
};
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
/* A terminal reads best at a fixed measure, but the demo frame must not be
|
|
121
|
+
wider than the phone it is being viewed on. */
|
|
122
|
+
const containerStyle = "max-width: 480px;";
|
|
121
123
|
|
|
122
124
|
const render = (args) => html`
|
|
123
125
|
<div style="${containerStyle}">
|
|
@@ -291,6 +293,73 @@ export const WithSlottedContent = {
|
|
|
291
293
|
|
|
292
294
|
// ─── Playground ─────────────────────────────────────────────────────────────────
|
|
293
295
|
|
|
296
|
+
/**
|
|
297
|
+
* The typed-line API, which had no story: `lines` takes a literal sequence of
|
|
298
|
+
* terminal lines and each `type` gets its own rule. Seven of those rules --
|
|
299
|
+
* cmd, ok, ask, strong, dim, sep and space -- never matched anything in 556
|
|
300
|
+
* stories, because nothing rendered a line. This story is what makes them
|
|
301
|
+
* observable.
|
|
302
|
+
*/
|
|
303
|
+
export const TypedLines = {
|
|
304
|
+
name: "Typed lines — the literal command sequence",
|
|
305
|
+
args: {
|
|
306
|
+
showTitlebar: true,
|
|
307
|
+
label : "AI Guardian CLI",
|
|
308
|
+
lines : [
|
|
309
|
+
{ type: "cmd", text: "npx skills add bitdefender/agent-skill-scanner" },
|
|
310
|
+
{ type: "ok", text: "agent-skill-scanner installed" },
|
|
311
|
+
{ type: "sep" },
|
|
312
|
+
{ type: "ask", text: "Scan the skills already on this machine?" },
|
|
313
|
+
{ type: "dim", text: "14 skills found in ~/.claude/skills" },
|
|
314
|
+
{ type: "space" },
|
|
315
|
+
{ type: "strong", text: "3 skills flagged for review" }
|
|
316
|
+
]
|
|
317
|
+
},
|
|
318
|
+
render,
|
|
319
|
+
parameters: {
|
|
320
|
+
docs: {
|
|
321
|
+
description: {
|
|
322
|
+
story: "Every line type in one frame. `sep` and `space` ignore their text: one draws a rule, the other leaves a gap."
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
};
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
export const ConnectionLog = {
|
|
330
|
+
name : "Connection log — title, rows and status badges",
|
|
331
|
+
render: () => html`
|
|
332
|
+
<div style="${containerStyle} display: grid; gap: 24px;">
|
|
333
|
+
<bd-terminal-message
|
|
334
|
+
show-titlebar
|
|
335
|
+
caption="// illustrative — every connection closes when the prompt ends"
|
|
336
|
+
.lines=${[
|
|
337
|
+
{ type: "title", text: "VPN for AI Agents · connection log", live: true },
|
|
338
|
+
{ type: "row", label: "MCP", text: "vpn_connect(location: frankfurt)", badge: "Open", badgeColor: "green" },
|
|
339
|
+
{ type: "row", label: "REQUEST", text: "agent reaches insurer-compare.com", badge: "Server IP", badgeColor: "blue" },
|
|
340
|
+
{ type: "row", label: "MCP", text: "vpn_safefetch(location: frankfurt, url: insurer-compare.com)", badge: "Scanned", badgeColor: "amber" },
|
|
341
|
+
{ type: "row", label: "MCP", text: "vpn_disconnect(location: frankfurt) — prompt ends", badge: "Closed — session cleared", badgeColor: "neutral" }
|
|
342
|
+
]}
|
|
343
|
+
></bd-terminal-message>
|
|
344
|
+
<bd-terminal-message
|
|
345
|
+
variant="flush"
|
|
346
|
+
.lines=${[
|
|
347
|
+
{ type: "title", text: "flush variant — rows carry their own hairline" },
|
|
348
|
+
{ type: "row", label: "MCP", text: "vpn_connect(location: frankfurt)", badge: "Open", badgeColor: "green" },
|
|
349
|
+
{ type: "row", label: "NETWORK", text: "hotel Wi-Fi, unencrypted", badge: "Protected", badgeColor: "green" }
|
|
350
|
+
]}
|
|
351
|
+
></bd-terminal-message>
|
|
352
|
+
</div>
|
|
353
|
+
`,
|
|
354
|
+
parameters: {
|
|
355
|
+
docs: {
|
|
356
|
+
description: {
|
|
357
|
+
story: "The `title` and `row` line types with all four badge colours, the LIVE marker and the caption. Each badge is its ink on a 15% tint of the same ink, from the panel's own line-kind palette."
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
};
|
|
362
|
+
|
|
294
363
|
export const Playground = {
|
|
295
364
|
name: "Playground",
|
|
296
365
|
args: {
|
|
@@ -2,43 +2,48 @@ import { css } from "lit";
|
|
|
2
2
|
|
|
3
3
|
export default css`
|
|
4
4
|
:host {
|
|
5
|
-
--background-card-grey: var(--color-neutral-25);
|
|
6
|
-
--border-card-grey: var(--color-neutral-50);
|
|
7
|
-
--border-card-green: var(--color-green-700);
|
|
8
|
-
--badge-background: var(--color-blue-500);
|
|
9
|
-
--text-color-white: var(--color-neutral-0);
|
|
10
5
|
-webkit-font-smoothing: antialiased;
|
|
11
6
|
-moz-osx-font-smoothing: grayscale;
|
|
12
7
|
display: block;
|
|
13
|
-
|
|
8
|
+
/* the band runs full-bleed on the host; the column inside it is bd-ensemble,
|
|
9
|
+
and the prose inside that keeps its own readable measure */
|
|
10
|
+
background: var(--color-surface-subtle);
|
|
14
11
|
}
|
|
15
12
|
|
|
16
13
|
.bd-terms-text-a:focus-visible{
|
|
17
|
-
|
|
18
|
-
outline
|
|
19
|
-
|
|
14
|
+
/* the one focus ring — see Foundations/Focus */
|
|
15
|
+
outline: none;
|
|
16
|
+
box-shadow: var(--focus-outline-primary);
|
|
17
|
+
border-radius: var(--focus-outline-radius);
|
|
20
18
|
}
|
|
21
19
|
.bd-terms-container {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
font-family: Arial, Helvetica, sans-serif;
|
|
20
|
+
padding-block: var(--spacing-44);
|
|
21
|
+
font-family: var(--typography-fontFamily-sans);
|
|
25
22
|
}
|
|
26
23
|
|
|
24
|
+
/* A readable measure, because this is the module with the most prose in the
|
|
25
|
+
package and it had no bound at all. Measured at 1440 in the module rhythm
|
|
26
|
+
pass: the heading ran 1368px wide and the paragraphs with it, roughly 200
|
|
27
|
+
characters a line -- unreadable for text somebody is expected to actually
|
|
28
|
+
read, and the widest measure of any of the 17 units by a long way.
|
|
29
|
+
|
|
30
|
+
--content-width-readable is the role this package already uses for that
|
|
31
|
+
job: comparison-panel bounds its text with it, agent-endpoints bounds its
|
|
32
|
+
description with it, and the tooltip bubble caps itself with it. It is
|
|
33
|
+
70ch, so the bound follows the type rather than a pixel guess. No token
|
|
34
|
+
added and no legal typography redesigned -- size, leading and family are
|
|
35
|
+
untouched; only the line length is. */
|
|
27
36
|
.bd-terms-wrapper {
|
|
37
|
+
max-width: var(--content-width-readable);
|
|
38
|
+
margin-inline: auto;
|
|
28
39
|
padding: var(--spacing-14) var(--spacing-20) var(--spacing-40) var(--spacing-20);
|
|
29
40
|
}
|
|
30
41
|
|
|
31
|
-
#bd-terms-of-use {
|
|
32
|
-
font-size: var(--spacing-16);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
42
|
.bd-terms-text-p {
|
|
36
|
-
font-size: var(--spacing-12);
|
|
37
|
-
line-height: 1.31;
|
|
38
|
-
letter-spacing: 0.006em;
|
|
39
43
|
padding: 0;
|
|
40
44
|
}
|
|
41
45
|
.bd-terms-text-a {
|
|
42
|
-
|
|
46
|
+
/* on the neutral-50 tint this is 4.05:1; blue-600 gives 5.51 */
|
|
47
|
+
color: var(--color-text-brand);
|
|
43
48
|
}
|
|
44
49
|
`;
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { LitElement, html } from "lit";
|
|
2
|
-
|
|
2
|
+
// Installs the design tokens into document scope; see src/tokens/tokens.js
|
|
3
|
+
import "../../tokens/tokens.js";
|
|
4
|
+
import '../heading/heading.js';
|
|
3
5
|
import '../list/list-item/list-item.js';
|
|
4
6
|
import '../list/list.js';
|
|
7
|
+
import '../paragraph/paragraph.js';
|
|
5
8
|
import termsCSS from "../termsOfUse/terms.css.js";
|
|
9
|
+
import { ensembleCSS } from "../shared/ensemble.css.js";
|
|
6
10
|
|
|
7
11
|
class TermsSection extends LitElement {
|
|
8
12
|
static properties = {
|
|
@@ -54,13 +58,13 @@ class TermsSection extends LitElement {
|
|
|
54
58
|
return html`
|
|
55
59
|
<div>
|
|
56
60
|
<div>
|
|
57
|
-
<bd-p
|
|
61
|
+
<bd-p variant="small" class="bd-terms-text-p"><strong>${faq.question}</strong></bd-p>
|
|
58
62
|
${faq.items
|
|
59
63
|
? html`
|
|
60
|
-
<bd-p
|
|
64
|
+
<bd-p variant="small">
|
|
61
65
|
<bd-list type="unordered" spacing="md" variant="default" orientation="vertical">
|
|
62
66
|
${faq.items.map(item => html`
|
|
63
|
-
<bd-li
|
|
67
|
+
<bd-li variant="bullet" size="md">${item}</bd-li>
|
|
64
68
|
`)}
|
|
65
69
|
</bd-list>
|
|
66
70
|
</bd-p>
|
|
@@ -74,7 +78,7 @@ class TermsSection extends LitElement {
|
|
|
74
78
|
render() {
|
|
75
79
|
return html`
|
|
76
80
|
<div
|
|
77
|
-
class="bd-section bd-terms_section bd-terms-container"
|
|
81
|
+
class="bd-ensemble bd-section bd-terms_section bd-terms-container"
|
|
78
82
|
data-section-status="loaded"
|
|
79
83
|
id="bd-tos"
|
|
80
84
|
style=""
|
|
@@ -87,7 +91,7 @@ class TermsSection extends LitElement {
|
|
|
87
91
|
>
|
|
88
92
|
<div>
|
|
89
93
|
<div>
|
|
90
|
-
<
|
|
94
|
+
<bd-h as="h2" visual-level="h3" paddingBottom="16" id="bd-terms-of-use">Terms of use</bd-h>
|
|
91
95
|
</div>
|
|
92
96
|
</div>
|
|
93
97
|
|
|
@@ -97,7 +101,7 @@ class TermsSection extends LitElement {
|
|
|
97
101
|
<!-- Additional content -->
|
|
98
102
|
<div>
|
|
99
103
|
<div class="bd-terms-text-p">
|
|
100
|
-
<bd-p
|
|
104
|
+
<bd-p variant="small">
|
|
101
105
|
Your subscription may include product, service and/or protection
|
|
102
106
|
updates and features that may be added, modified or removed
|
|
103
107
|
subject to
|
|
@@ -118,7 +122,7 @@ class TermsSection extends LitElement {
|
|
|
118
122
|
</div>
|
|
119
123
|
<div>
|
|
120
124
|
<div class="bd-terms-text-p">
|
|
121
|
-
<bd-p
|
|
125
|
+
<bd-p variant="small">
|
|
122
126
|
By using the subscription, You acknowledge and agree that your
|
|
123
127
|
use of the product which integrates with YouTube API Services is
|
|
124
128
|
subject to
|
|
@@ -137,5 +141,5 @@ class TermsSection extends LitElement {
|
|
|
137
141
|
}
|
|
138
142
|
}
|
|
139
143
|
|
|
140
|
-
TermsSection.styles = [
|
|
144
|
+
TermsSection.styles = [ensembleCSS, termsCSS];
|
|
141
145
|
customElements.define("bd-terms-section", TermsSection);
|