@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,4 +1,5 @@
|
|
|
1
1
|
import { html } from "lit";
|
|
2
|
+
import "../button/button.js";
|
|
2
3
|
import "../icons/analysis-icon.js";
|
|
3
4
|
import "../icons/arrow-up-icon.js";
|
|
4
5
|
import "../icons/family-icon.js";
|
|
@@ -8,7 +9,7 @@ import "../icons/machine-learning-icon.js";
|
|
|
8
9
|
import "./bento-grid.js";
|
|
9
10
|
import "./bento-item.js";
|
|
10
11
|
export default {
|
|
11
|
-
title : "
|
|
12
|
+
title : "Modules/Bento Grid",
|
|
12
13
|
component : "bd-bento-grid",
|
|
13
14
|
tags : ["autodocs"],
|
|
14
15
|
parameters: {
|
|
@@ -280,12 +281,12 @@ export const WithCTA = {
|
|
|
280
281
|
<bd-bento-item title="AI Protection">
|
|
281
282
|
<bd-individual-icon slot="icon" width="32" height="32" color="#006DFF"></bd-individual-icon>
|
|
282
283
|
<bd-p>Powered by machine learning and behavioral analysis.</bd-p>
|
|
283
|
-
<bd-button-link href="#"
|
|
284
|
+
<bd-button-link href="#" variant="primary" size="sm">Learn more</bd-button-link>
|
|
284
285
|
</bd-bento-item>
|
|
285
286
|
<bd-bento-item title="Multi-layer Security">
|
|
286
287
|
<bd-globe-icon slot="icon" width="32" height="32" color="#006DFF"></bd-globe-icon>
|
|
287
288
|
<bd-p>Multiple independent protection layers stop any attack.</bd-p>
|
|
288
|
-
<bd-button-link href="#"
|
|
289
|
+
<bd-button-link href="#" variant="primary" size="sm">Learn more</bd-button-link>
|
|
289
290
|
</bd-bento-item>
|
|
290
291
|
</bd-bento-grid>
|
|
291
292
|
`,
|
|
@@ -449,29 +450,29 @@ export const EqualColumns = {
|
|
|
449
450
|
description="Each protection is structural: every request the agent routes through Bitdefender's MCP tools gets it automatically, with no setting to remember."
|
|
450
451
|
>
|
|
451
452
|
<bd-bento-item>
|
|
452
|
-
<span slot="icon" style="color: var(--color-blue-500
|
|
453
|
-
<bd-h as="h5"
|
|
454
|
-
<bd-p color="
|
|
453
|
+
<span slot="icon" style="color: var(--color-blue-500); font-weight: 700; font-family: var(--typography-fontFamily-mono); font-size: 14px; letter-spacing: 0.05em;">01</span>
|
|
454
|
+
<bd-h as="h5" fontWeight="bold" style="margin: 0 0 8px;">IP masking</bd-h>
|
|
455
|
+
<bd-p color="muted">When your agent reaches a site, it sees the VPN server's exit IP. Not your home address or IP-based location.</bd-p>
|
|
455
456
|
</bd-bento-item>
|
|
456
457
|
<bd-bento-item>
|
|
457
|
-
<span slot="icon" style="color: var(--color-blue-500
|
|
458
|
-
<bd-h as="h5"
|
|
459
|
-
<bd-p color="
|
|
458
|
+
<span slot="icon" style="color: var(--color-blue-500); font-weight: 700; font-family: var(--typography-fontFamily-mono); font-size: 14px; letter-spacing: 0.05em;">02</span>
|
|
459
|
+
<bd-h as="h5" fontWeight="bold" style="margin: 0 0 8px;">Per-prompt encryption</bd-h>
|
|
460
|
+
<bd-p color="muted">Every request opens its own encrypted tunnel from your device to Bitdefender, so whoever runs the Wi-Fi you're on can't read what the agent sends.</bd-p>
|
|
460
461
|
</bd-bento-item>
|
|
461
462
|
<bd-bento-item>
|
|
462
|
-
<span slot="icon" style="color: var(--color-blue-500
|
|
463
|
-
<bd-h as="h5"
|
|
464
|
-
<bd-p color="
|
|
463
|
+
<span slot="icon" style="color: var(--color-blue-500); font-weight: 700; font-family: var(--typography-fontFamily-mono); font-size: 14px; letter-spacing: 0.05em;">03</span>
|
|
464
|
+
<bd-h as="h5" fontWeight="bold" style="margin: 0 0 8px;">Session isolation</bd-h>
|
|
465
|
+
<bd-p color="muted">Each tunnel closes the moment the prompt ends. If a site sees two of your agent's requests, it has no network-level way to tell they came from the same prompt.</bd-p>
|
|
465
466
|
</bd-bento-item>
|
|
466
467
|
<bd-bento-item>
|
|
467
|
-
<span slot="icon" style="color: var(--color-blue-500
|
|
468
|
-
<bd-h as="h5"
|
|
469
|
-
<bd-p color="
|
|
468
|
+
<span slot="icon" style="color: var(--color-blue-500); font-weight: 700; font-family: var(--typography-fontFamily-mono); font-size: 14px; letter-spacing: 0.05em;">04</span>
|
|
469
|
+
<bd-h as="h5" fontWeight="bold" style="margin: 0 0 8px;">Clean-IP browsing</bd-h>
|
|
470
|
+
<bd-p color="muted">Every request exits on the VPN server's IP rather than the same home address every time, useful for QA and monitoring work that needs a neutral, non-residential vantage point.</bd-p>
|
|
470
471
|
</bd-bento-item>
|
|
471
472
|
<bd-bento-item>
|
|
472
|
-
<span slot="icon" style="color: var(--color-blue-500
|
|
473
|
-
<bd-h as="h5"
|
|
474
|
-
<bd-p color="
|
|
473
|
+
<span slot="icon" style="color: var(--color-blue-500); font-weight: 700; font-family: var(--typography-fontFamily-mono); font-size: 14px; letter-spacing: 0.05em;">05</span>
|
|
474
|
+
<bd-h as="h5" fontWeight="bold" style="margin: 0 0 8px;">Regional routing</bd-h>
|
|
475
|
+
<bd-p color="muted">Need to see a page the way a visitor from a specific country would? Route that one request through a Bitdefender server there, just for that prompt.</bd-p>
|
|
475
476
|
</bd-bento-item>
|
|
476
477
|
</bd-bento-grid>
|
|
477
478
|
`,
|
|
@@ -1,17 +1,17 @@
|
|
|
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
|
height: 100%;
|
|
7
|
-
--background-card-grey: var(--color-neutral-25);
|
|
8
8
|
box-sizing: border-box;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
.bd-bentoitem-box {
|
|
12
|
-
background: var(--
|
|
13
|
-
border-radius: var(--
|
|
14
|
-
padding: var(--
|
|
12
|
+
background: var(--color-surface-container);
|
|
13
|
+
border-radius: var(--card-radius);
|
|
14
|
+
padding: var(--card-padding);
|
|
15
15
|
display: flex;
|
|
16
16
|
flex-direction: column;
|
|
17
17
|
align-items: stretch;
|
|
@@ -21,8 +21,21 @@ export default css`
|
|
|
21
21
|
box-sizing: border-box;
|
|
22
22
|
font-family: var(--typography-fontFamily-sans);
|
|
23
23
|
min-width: 0;
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
/* The same hover lift as trust-panel, now at the same scale step. */
|
|
25
|
+
transition: transform var(--transition-duration-normal) var(--transition-easing-ease),
|
|
26
|
+
box-shadow var(--transition-duration-normal) var(--transition-easing-ease);
|
|
27
|
+
/* No edge. --color-surface-container is documented as "the ground of a
|
|
28
|
+
self-contained object -- a card, a tile, a panel -- one step off the page
|
|
29
|
+
so it reads as its own object WITHOUT needing a border or a shadow to say
|
|
30
|
+
so", and this card sits on the page ground, so the tonal step is the
|
|
31
|
+
separation and an edge is redundant with the role's own purpose.
|
|
32
|
+
|
|
33
|
+
The rule, from the cards-and-surfaces review: a card on the page ground
|
|
34
|
+
takes surface/container and no edge; a card on a tinted section takes
|
|
35
|
+
surface/default plus a 1px border/container, because there is no tonal
|
|
36
|
+
step available there and the edge earns its keep. Six components on the
|
|
37
|
+
page ground drew no edge; this one drew one, and five identical siblings
|
|
38
|
+
did not. See CLAUDE.md, "A card's ground and its edge". */
|
|
26
39
|
}
|
|
27
40
|
|
|
28
41
|
|
|
@@ -31,6 +44,18 @@ transform: translateY(-3px);
|
|
|
31
44
|
box-shadow: 0px 14px 40px #00000012;
|
|
32
45
|
}
|
|
33
46
|
|
|
47
|
+
/* Same reasoning as trust-panel, checked separately: the shadow is the part
|
|
48
|
+
that communicates hover, the 3px is the part that moves. */
|
|
49
|
+
@media (prefers-reduced-motion: reduce) {
|
|
50
|
+
.bd-bentoitem-box {
|
|
51
|
+
transition: none;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.bd-bentoitem-box:hover {
|
|
55
|
+
transform: none;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
34
59
|
.bd-bentoitem-icon-wrap {
|
|
35
60
|
display: flex;
|
|
36
61
|
flex-direction: column;
|
|
@@ -54,16 +79,15 @@ box-shadow: 0px 14px 40px #00000012;
|
|
|
54
79
|
.bd-bentoitem-title-wrap {
|
|
55
80
|
display: flex;
|
|
56
81
|
align-items: flex-start;
|
|
57
|
-
gap: var(--spacing-4
|
|
82
|
+
gap: var(--spacing-4);
|
|
58
83
|
overflow: hidden;
|
|
59
84
|
margin-bottom: var(--spacing-8);
|
|
60
85
|
width: 100%;
|
|
61
86
|
}
|
|
62
87
|
|
|
63
88
|
.bd-bentoitem-body {
|
|
64
|
-
font-size: var(--spacing-16);
|
|
65
89
|
margin: 0 0 1em 0;
|
|
66
|
-
color: var(--color-
|
|
90
|
+
color: var(--color-text-secondary);
|
|
67
91
|
width: 100%;
|
|
68
92
|
}
|
|
69
93
|
|
|
@@ -71,37 +95,37 @@ box-shadow: 0px 14px 40px #00000012;
|
|
|
71
95
|
width: 100%;
|
|
72
96
|
}
|
|
73
97
|
|
|
74
|
-
/* === TONE VARIANTS ===
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
--background-card-grey: var(--color-blue-50);
|
|
78
|
-
}
|
|
79
|
-
|
|
98
|
+
/* === TONE VARIANTS ===
|
|
99
|
+
The card has no edge (see .bd-bentoitem-box), so a tone is the fill
|
|
100
|
+
alone. */
|
|
80
101
|
:host([tone="tint"]) .bd-bentoitem-box {
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
:host([tone="dark"]) {
|
|
85
|
-
--background-card-grey: linear-gradient(160deg, var(--color-neutral-800) 0%, var(--color-blue-950) 130%);
|
|
86
|
-
;
|
|
102
|
+
background: var(--status-brand-surface);
|
|
87
103
|
}
|
|
88
104
|
|
|
89
105
|
:host([tone="dark"]) .bd-bentoitem-box {
|
|
90
|
-
|
|
91
|
-
|
|
106
|
+
/* The inverse ground the card's inverse ink is written for, running into
|
|
107
|
+
the brand's darkest blue.
|
|
108
|
+
no role: blue-950 is a gradient's far stop, decoration rather than a
|
|
109
|
+
ground any text is measured against -- the same stop bd-cta-banner ends on. */
|
|
110
|
+
background: linear-gradient(160deg, var(--color-surface-inverse) 0%, var(--color-blue-950) 130%);
|
|
92
111
|
}
|
|
93
112
|
|
|
94
113
|
:host([tone="dark"]) .bd-bentoitem-title-wrap bd-h {
|
|
95
|
-
color: var(--color-
|
|
114
|
+
color: var(--color-text-inverse);
|
|
96
115
|
}
|
|
97
116
|
|
|
98
117
|
:host([tone="dark"]) .bd-bentoitem-body {
|
|
99
|
-
|
|
118
|
+
color: var(--color-text-inverse);
|
|
100
119
|
}
|
|
101
120
|
|
|
102
|
-
|
|
121
|
+
/* below('md'), not below('sm'). The Comparison Panel and the Trust Panel both
|
|
122
|
+
take the compact inset at md and this took it at sm, so the same card was
|
|
123
|
+
affording 32px at 600px wide in one component and not in another. Two of
|
|
124
|
+
the three picked md; this one moved. Visible: the inset steps down 192px
|
|
125
|
+
of viewport earlier than it used to. */
|
|
126
|
+
@media ${unsafeCSS(below('md'))} {
|
|
103
127
|
.bd-bentoitem-box {
|
|
104
|
-
padding: var(--
|
|
128
|
+
padding: var(--card-padding-compact);
|
|
105
129
|
}
|
|
106
130
|
}
|
|
107
131
|
`;
|
|
@@ -39,13 +39,13 @@ class BentoItem extends LitElement {
|
|
|
39
39
|
${this.title
|
|
40
40
|
? html`
|
|
41
41
|
<div class="bd-bentoitem-title-wrap">
|
|
42
|
-
<bd-h as="h5" fontWeight="
|
|
42
|
+
<bd-h as="h5" fontWeight="bold">${this.title}</bd-h>
|
|
43
43
|
</div>
|
|
44
44
|
`
|
|
45
45
|
: ""}
|
|
46
46
|
|
|
47
47
|
${this.body
|
|
48
|
-
? html`<bd-p
|
|
48
|
+
? html`<bd-p variant="regular" class="bd-bentoitem-body">${this.body}</bd-p>`
|
|
49
49
|
: ""}
|
|
50
50
|
|
|
51
51
|
<slot></slot>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
|
|
3
|
+
/** Styled entirely from design tokens — see npm run lint:tokens. */
|
|
4
|
+
export const blockquoteCSS = css`
|
|
5
|
+
:host { display: block; }
|
|
6
|
+
|
|
7
|
+
blockquote {
|
|
8
|
+
margin: 0;
|
|
9
|
+
padding-left: var(--spacing-16);
|
|
10
|
+
border-left: var(--border-width-4) solid var(--color-border-brand);
|
|
11
|
+
font-family: var(--typography-body-large-fontFamily);
|
|
12
|
+
font-size: var(--typography-body-large-fontSize);
|
|
13
|
+
font-weight: var(--typography-body-large-fontWeight);
|
|
14
|
+
line-height: var(--typography-body-large-lineHeight);
|
|
15
|
+
color: var(--color-text-primary);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
footer {
|
|
19
|
+
margin-top: var(--spacing-8);
|
|
20
|
+
font-size: var(--typography-caption-default-fontSize);
|
|
21
|
+
/* no role: two roles are each a near-miss, from opposite directions, and
|
|
22
|
+
no declared role sits at the intersection of this size, this weight,
|
|
23
|
+
this leading and this colour.
|
|
24
|
+
.
|
|
25
|
+
label-small matches this text's size and weight exactly -- but adopting
|
|
26
|
+
it would add letterSpacing-wide, which has no job on mixed-case sentence
|
|
27
|
+
text because nothing here crowds, and would replace the 1.625 leading
|
|
28
|
+
this inherits from the quote it attributes with 1.5. That inherited
|
|
29
|
+
rhythm is the one thing in this rule that means something: the credit
|
|
30
|
+
line sits on the same measure as the quotation it belongs to, where 1.5
|
|
31
|
+
merely comes attached to the role.
|
|
32
|
+
.
|
|
33
|
+
caption-default matches this text's size and colour exactly -- the same
|
|
34
|
+
--color-text-muted token, not just the same value, so this rule already
|
|
35
|
+
half-resolves through it. But its weight is normal, and normal is what
|
|
36
|
+
the quote itself renders. Adopting it would remove the attribution's
|
|
37
|
+
only distinguishing signal and demote a credit line to what reads as a
|
|
38
|
+
continuation of the quotation rather than a citation of it.
|
|
39
|
+
.
|
|
40
|
+
Neither disagreement is drift; both are the reason this rule exists as
|
|
41
|
+
written. So the weight stays a primitive and says why. */
|
|
42
|
+
font-weight: var(--typography-fontWeight-medium);
|
|
43
|
+
color: var(--color-text-muted);
|
|
44
|
+
}
|
|
45
|
+
`;
|
|
46
|
+
|
|
47
|
+
export default blockquoteCSS;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { LitElement, html, nothing } from 'lit';
|
|
2
|
+
// Installs the design tokens into document scope; see src/tokens/tokens.js
|
|
3
|
+
import '../../tokens/tokens.js';
|
|
4
|
+
import { blockquoteCSS } from './blockquote.css.js';
|
|
5
|
+
|
|
6
|
+
export class BdBlockquote extends LitElement {
|
|
7
|
+
static styles = [blockquoteCSS];
|
|
8
|
+
|
|
9
|
+
static properties = {
|
|
10
|
+
cite : { type: String },
|
|
11
|
+
attribution: { type: String }
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
constructor() {
|
|
15
|
+
super();
|
|
16
|
+
this.cite = '';
|
|
17
|
+
this.attribution = '';
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
render() {
|
|
21
|
+
return html`
|
|
22
|
+
<blockquote cite=${this.cite || nothing}>
|
|
23
|
+
<slot></slot>${this.attribution ? html`<footer>\u2014 ${this.attribution}</footer>` : nothing}
|
|
24
|
+
</blockquote>
|
|
25
|
+
`;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
customElements.define('bd-blockquote', BdBlockquote);
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { html } from 'lit';
|
|
2
|
+
import './blockquote.js';
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
title : 'Atoms/Blockquote',
|
|
6
|
+
tags : ['autodocs'],
|
|
7
|
+
parameters: {
|
|
8
|
+
docs: {
|
|
9
|
+
description: {
|
|
10
|
+
component: `
|
|
11
|
+
**BdBlockquote** is a quotation set apart from the surrounding prose, with an
|
|
12
|
+
optional attribution.
|
|
13
|
+
|
|
14
|
+
### Usage
|
|
15
|
+
\`\`\`html
|
|
16
|
+
<bd-blockquote>The best way to predict the future is to invent it.</bd-blockquote>
|
|
17
|
+
|
|
18
|
+
<bd-blockquote
|
|
19
|
+
attribution="Alan Kay"
|
|
20
|
+
cite="https://example.com/source"
|
|
21
|
+
>The best way to predict the future is to invent it.</bd-blockquote>
|
|
22
|
+
\`\`\`
|
|
23
|
+
|
|
24
|
+
### Props
|
|
25
|
+
| Prop | Values | Default |
|
|
26
|
+
|---|---|---|
|
|
27
|
+
| \`attribution\` | who said it — omit for an unattributed quote | \`''\` |
|
|
28
|
+
| \`cite\` | URL of the source | \`''\` |
|
|
29
|
+
|
|
30
|
+
### Notes
|
|
31
|
+
\`attribution\` renders as a \`<footer>\` inside the \`<blockquote>\`, prefixed with
|
|
32
|
+
an em dash. That is the pairing the HTML spec recommends for a credit that
|
|
33
|
+
belongs to the quote itself.
|
|
34
|
+
|
|
35
|
+
\`cite\` maps to the native \`cite\` attribute. It is **metadata only** — browsers
|
|
36
|
+
do not render it and it is not a link, so if the source should be visible or
|
|
37
|
+
clickable, put it in \`attribution\` or in the slotted content.
|
|
38
|
+
`
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
argTypes: {
|
|
43
|
+
attribution: {
|
|
44
|
+
control : 'text',
|
|
45
|
+
description: 'Who said it. Renders as a footer inside the blockquote, prefixed with an em dash.',
|
|
46
|
+
table : { type: { summary: 'string' }, defaultValue: { summary: "" }, category: 'Content' }
|
|
47
|
+
},
|
|
48
|
+
cite: {
|
|
49
|
+
control : 'text',
|
|
50
|
+
description: 'Source URL for the native cite attribute. Metadata only — not rendered, not a link.',
|
|
51
|
+
table : { type: { summary: 'string' }, defaultValue: { summary: "" }, category: 'Content' }
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export const Default = () => html`
|
|
57
|
+
<bd-blockquote>Protection has to keep pace, quietly.</bd-blockquote>
|
|
58
|
+
`;
|
|
59
|
+
|
|
60
|
+
export const Withattribution = () => html`
|
|
61
|
+
<bd-blockquote attribution="Bitdefender Labs">Threats move faster than annual reviews.</bd-blockquote>
|
|
62
|
+
`;
|
|
@@ -26,7 +26,12 @@ export default css`
|
|
|
26
26
|
flex-direction: row;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
/* Parent-owned layout, so it is spelled against the slotted hosts. The
|
|
30
|
+
rule this replaces targeted .bd-breadcrumb-item, which lives inside the
|
|
31
|
+
item's own shadow root: the descendant combinator could not reach it,
|
|
32
|
+
and :not(:last-child) could not have helped anyway, since that div is
|
|
33
|
+
the only child of its root and so is always the last one. */
|
|
34
|
+
.bd-breadcrumb--horizontal ::slotted(bd-breadcrumb-item:not(:last-child)) {
|
|
30
35
|
margin-right: var(--spacing-8);
|
|
31
36
|
}
|
|
32
37
|
|
|
@@ -34,11 +39,26 @@ export default css`
|
|
|
34
39
|
.bd-breadcrumb__divider {
|
|
35
40
|
margin-left: var(--spacing-8);
|
|
36
41
|
margin-right: var(--spacing-8);
|
|
37
|
-
|
|
42
|
+
/* the "/" is rendered text and is not aria-hidden, so it needs 4.5:1;
|
|
43
|
+
neutral-400 gave 3.23 */
|
|
44
|
+
color: var(--color-text-subtle);
|
|
45
|
+
/* no role: the "/" is real rendered text -- see the contrast note above on
|
|
46
|
+
why it is not aria-hidden -- but it is a single glyph in a fixed-height
|
|
47
|
+
divider, the same category as the icon-only line box rule 7 already
|
|
48
|
+
covers for its leading. Sizing a separator is not a text role. */
|
|
38
49
|
font-size: var(--typography-fontSize-sm);
|
|
39
|
-
line-height:
|
|
50
|
+
line-height: var(--typography-lineHeight-none);
|
|
40
51
|
}
|
|
41
52
|
|
|
53
|
+
/* Vertical layout.
|
|
54
|
+
|
|
55
|
+
The four rules below are spelled :host([orientation]) rather than as
|
|
56
|
+
descendants of .bd-breadcrumb--vertical. That class sits on the nav in
|
|
57
|
+
bd-breadcrumb's shadow root, while every element they style lives in
|
|
58
|
+
bd-breadcrumb-item's, so as descendant selectors they matched nothing:
|
|
59
|
+
measured at 375px, dividers stayed display block and items had no
|
|
60
|
+
padding and no background. bd-breadcrumb now reflects its orientation
|
|
61
|
+
onto each item, which is what these selectors read. */
|
|
42
62
|
/* Vertical layout */
|
|
43
63
|
.bd-breadcrumb--vertical .bd-breadcrumb__items {
|
|
44
64
|
flex-direction: column;
|
|
@@ -46,7 +66,7 @@ export default css`
|
|
|
46
66
|
gap: var(--spacing-4);
|
|
47
67
|
}
|
|
48
68
|
|
|
49
|
-
|
|
69
|
+
:host([orientation="vertical"]) .bd-breadcrumb__divider {
|
|
50
70
|
display: none;
|
|
51
71
|
}
|
|
52
72
|
|
|
@@ -58,41 +78,91 @@ export default css`
|
|
|
58
78
|
color: inherit;
|
|
59
79
|
}
|
|
60
80
|
|
|
61
|
-
/* Link styles
|
|
81
|
+
/* Link styles.
|
|
82
|
+
|
|
83
|
+
The ink is bd-link's, and the two colours declared here were not the ones
|
|
84
|
+
that rendered. Measured at 1440: resting text rgb(0, 89, 214) and hovered
|
|
85
|
+
text rgb(0, 69, 173), both from the atom's own .bd-link--primary rules --
|
|
86
|
+
--color-text-brand and --color-action-primary-hover's next step,
|
|
87
|
+
--color-action-primary-active. The --color-blue-400 that stood here never
|
|
88
|
+
reached any text, which is the only reason it never showed as a failure:
|
|
89
|
+
it is 3.02:1 on white. The --color-blue-700 hover was the same value the
|
|
90
|
+
role already resolves to, spelled a second time by hand.
|
|
91
|
+
|
|
92
|
+
That answers the question P5H.1 left open about this hover. It is neither
|
|
93
|
+
a navigation-specific state nor a responsibility the token system is
|
|
94
|
+
missing: the action ramp already renders it, and 8.56:1 is what
|
|
95
|
+
--color-action-primary-active measures, not what a local choice bought.
|
|
96
|
+
|
|
97
|
+
The underline is the state cue that was missing. It was declared on the
|
|
98
|
+
host, and a host's text-decoration does not propagate into an
|
|
99
|
+
inline-flex anchor, so hover was colour alone -- 7.0:1 to 8.6:1, a change
|
|
100
|
+
a reader is not required to be able to see. It is now on the part that
|
|
101
|
+
holds the text. */
|
|
62
102
|
bd-link.bd-breadcrumb__item {
|
|
63
|
-
color: var(--color-blue-400);
|
|
64
103
|
text-decoration: none;
|
|
65
|
-
transition: all
|
|
104
|
+
transition: all var(--transition-duration-fast) var(--transition-easing-smooth);
|
|
66
105
|
}
|
|
67
106
|
|
|
68
|
-
bd-link.bd-breadcrumb__item:hover {
|
|
69
|
-
color: var(--color-blue-700);
|
|
107
|
+
bd-link.bd-breadcrumb__item:hover::part(link) {
|
|
70
108
|
text-decoration: underline;
|
|
71
|
-
text-underline-offset: 2px;
|
|
72
109
|
}
|
|
73
110
|
|
|
74
|
-
/* Vertical item styles
|
|
75
|
-
|
|
111
|
+
/* Vertical item styles.
|
|
112
|
+
|
|
113
|
+
The pill is the target here, so the padding goes on the part rather than
|
|
114
|
+
on the host. Measured before: a 343x40 row whose focusable anchor was
|
|
115
|
+
43x24, because the padding was on the bd-link host and the anchor inside
|
|
116
|
+
stayed the width of its own text -- 7.5% of the area a finger aims at,
|
|
117
|
+
and a focus ring that hugged the text inside a large grey box. The
|
|
118
|
+
background and the corner stay on the host, which is the box that draws
|
|
119
|
+
them; only the padding moves to where the target is. */
|
|
120
|
+
:host([orientation="vertical"]) .bd-breadcrumb__item {
|
|
121
|
+
background: var(--color-surface-subtle);
|
|
122
|
+
border-radius: var(--radius-sm);
|
|
123
|
+
width: 100%;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
:host([orientation="vertical"]) span.bd-breadcrumb__item {
|
|
127
|
+
padding: var(--spacing-8) var(--spacing-12);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
:host([orientation="vertical"]) bd-link.bd-breadcrumb__item::part(link) {
|
|
76
131
|
padding: var(--spacing-8) var(--spacing-12);
|
|
77
|
-
background: var(--color-neutral-50);
|
|
78
|
-
border-radius: var(--spacing-4);
|
|
79
132
|
width: 100%;
|
|
133
|
+
box-sizing: border-box;
|
|
80
134
|
}
|
|
81
135
|
|
|
82
|
-
|
|
83
|
-
background: var(--color-
|
|
136
|
+
:host([orientation="vertical"]) bd-link.bd-breadcrumb__item:hover {
|
|
137
|
+
background: var(--color-surface-muted);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
:host([orientation="vertical"]) bd-link.bd-breadcrumb__item:hover::part(link) {
|
|
84
141
|
text-decoration: none;
|
|
85
142
|
}
|
|
86
143
|
|
|
87
|
-
/* Current item styles
|
|
144
|
+
/* Current item styles.
|
|
145
|
+
|
|
146
|
+
No colour and no weight here. Both were declared on this span and both
|
|
147
|
+
lost to bd-p's own paragraph rule one level down -- the colour by
|
|
148
|
+
coincidence, since --color-text-primary is what bd-p sets anyway, and the
|
|
149
|
+
weight not at all. The weight is asked for through bd-p's font-weight
|
|
150
|
+
prop in breadcrumb.js, which is the only place it renders. */
|
|
88
151
|
.bd-breadcrumb__item--current {
|
|
89
|
-
color: var(--color-neutral-900);
|
|
90
|
-
font-weight: var(--typography-fontWeight-medium);
|
|
91
152
|
cursor: default;
|
|
92
153
|
}
|
|
93
154
|
|
|
94
|
-
|
|
95
|
-
background: var(--color-
|
|
155
|
+
:host([orientation="vertical"]) .bd-breadcrumb__item--current {
|
|
156
|
+
background: var(--color-surface-muted);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/* A reader who asked for less motion was still getting the item hover. Twenty-three
|
|
161
|
+
of the thirty animated directories in this package honour the query; this
|
|
162
|
+
one did not. */
|
|
163
|
+
@media (prefers-reduced-motion: reduce) {
|
|
164
|
+
bd-link.bd-breadcrumb__item {
|
|
165
|
+
transition: none;
|
|
96
166
|
}
|
|
97
167
|
}
|
|
98
|
-
`;
|
|
168
|
+
`;
|