@repobit/dex-system-design 0.25.12 → 0.26.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 +187 -0
- package/README.md +131 -8
- package/package.json +95 -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
|
@@ -23,12 +23,12 @@ Componentă Lit pentru afișarea de feature-uri în taburi cu coloane de accordi
|
|
|
23
23
|
<bd-tab-panel title="Windows">
|
|
24
24
|
<bd-features>
|
|
25
25
|
<bd-feature-col title="Protection">
|
|
26
|
-
<bd-individual-icon slot="icon" size="40" color="
|
|
27
|
-
<bd-p
|
|
26
|
+
<bd-individual-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-individual-icon>
|
|
27
|
+
<bd-p variant="small" slot="description">Descriere coloana</bd-p>
|
|
28
28
|
<bd-accordion-section no-container>
|
|
29
29
|
<bd-accordion-item title="Feature 1" open>
|
|
30
|
-
<bd-badge slot="badge"
|
|
31
|
-
<bd-p
|
|
30
|
+
<bd-badge slot="badge" tone="primary" variant="fill" size="sm">NEW</bd-badge>
|
|
31
|
+
<bd-p variant="small">Detalii</bd-p>
|
|
32
32
|
</bd-accordion-item>
|
|
33
33
|
</bd-accordion-section>
|
|
34
34
|
</bd-feature-col>
|
|
@@ -76,78 +76,78 @@ const windowsPanel = html`
|
|
|
76
76
|
<bd-features>
|
|
77
77
|
|
|
78
78
|
<bd-feature-col title="Protection">
|
|
79
|
-
<bd-individual-icon slot="icon" size="40" color="
|
|
80
|
-
<bd-p
|
|
79
|
+
<bd-individual-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-individual-icon>
|
|
80
|
+
<bd-p variant="small" slot="description">Bitdefender's unbeatable multi-layered protection keeps your devices safe from all new and existing cyber threats.</bd-p>
|
|
81
81
|
<bd-accordion-section no-container>
|
|
82
82
|
<bd-accordion-item title="Complete Real-Time Data Protection" open>
|
|
83
|
-
<bd-badge slot="badge"
|
|
84
|
-
<bd-p
|
|
83
|
+
<bd-badge slot="badge" tone="primary" variant="fill" size="sm">BLUE TAG</bd-badge>
|
|
84
|
+
<bd-p variant="small">Absolute power in the most efficient security bundle available today. Bitdefender Ultimate Security works against all e-threats.</bd-p>
|
|
85
85
|
</bd-accordion-item>
|
|
86
86
|
<bd-accordion-item title="Network Threat Prevention">
|
|
87
|
-
<bd-badge slot="badge"
|
|
88
|
-
<bd-p
|
|
87
|
+
<bd-badge slot="badge" tone="success" variant="fill" size="sm">INDUSTRY 1ST</bd-badge>
|
|
88
|
+
<bd-p variant="small">Proactive network monitoring and threat detection.</bd-p>
|
|
89
89
|
</bd-accordion-item>
|
|
90
90
|
<bd-accordion-item title="Advanced Threat Defense">
|
|
91
|
-
<bd-p
|
|
91
|
+
<bd-p variant="small">Behavioral detection stops unknown threats before they execute.</bd-p>
|
|
92
92
|
</bd-accordion-item>
|
|
93
93
|
<bd-accordion-item title="Scam Copilot">
|
|
94
|
-
<bd-p
|
|
94
|
+
<bd-p variant="small">AI-powered scam detection and prevention.</bd-p>
|
|
95
95
|
</bd-accordion-item>
|
|
96
96
|
<bd-accordion-item title="E-mail Protection">
|
|
97
|
-
<bd-p
|
|
97
|
+
<bd-p variant="small">Scans incoming and outgoing emails for threats.</bd-p>
|
|
98
98
|
</bd-accordion-item>
|
|
99
99
|
<bd-accordion-item title="Multi-Layer Ransomware Protection">
|
|
100
|
-
<bd-p
|
|
100
|
+
<bd-p variant="small">Protects your files from unauthorized encryption.</bd-p>
|
|
101
101
|
</bd-accordion-item>
|
|
102
102
|
</bd-accordion-section>
|
|
103
103
|
</bd-feature-col>
|
|
104
104
|
|
|
105
105
|
<bd-feature-col title="Privacy">
|
|
106
|
-
<bd-globe-icon slot="icon" size="40" color="
|
|
107
|
-
<bd-p
|
|
106
|
+
<bd-globe-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-globe-icon>
|
|
107
|
+
<bd-p variant="small" slot="description">Bitdefender Ultimate Security takes care of your online privacy and personal information.</bd-p>
|
|
108
108
|
<bd-accordion-section no-container>
|
|
109
109
|
<bd-accordion-item title="Unlimited VPN Traffic" open>
|
|
110
|
-
<bd-p
|
|
110
|
+
<bd-p variant="small">Encrypt your connection and stay private online across all devices.</bd-p>
|
|
111
111
|
</bd-accordion-item>
|
|
112
112
|
<bd-accordion-item title="Password Manager">
|
|
113
|
-
<bd-p
|
|
113
|
+
<bd-p variant="small">Store and autofill passwords securely across all devices.</bd-p>
|
|
114
114
|
</bd-accordion-item>
|
|
115
115
|
<bd-accordion-item title="Anti-tracker">
|
|
116
|
-
<bd-p
|
|
116
|
+
<bd-p variant="small">Block trackers and keep your browsing activity private.</bd-p>
|
|
117
117
|
</bd-accordion-item>
|
|
118
118
|
<bd-accordion-item title="Microphone Monitor">
|
|
119
|
-
<bd-p
|
|
119
|
+
<bd-p variant="small">Alerts you when apps try to access your microphone.</bd-p>
|
|
120
120
|
</bd-accordion-item>
|
|
121
121
|
<bd-accordion-item title="Webcam Protection">
|
|
122
|
-
<bd-p
|
|
122
|
+
<bd-p variant="small">Prevent unauthorized access to your webcam.</bd-p>
|
|
123
123
|
</bd-accordion-item>
|
|
124
124
|
<bd-accordion-item title="Privacy Firewall">
|
|
125
|
-
<bd-p
|
|
125
|
+
<bd-p variant="small">Advanced firewall protection for your network.</bd-p>
|
|
126
126
|
</bd-accordion-item>
|
|
127
127
|
</bd-accordion-section>
|
|
128
128
|
</bd-feature-col>
|
|
129
129
|
|
|
130
130
|
<bd-feature-col title="Identity Protection">
|
|
131
|
-
<bd-family-icon slot="icon" size="40" color="
|
|
132
|
-
<bd-p
|
|
131
|
+
<bd-family-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-family-icon>
|
|
132
|
+
<bd-p variant="small" slot="description">Goes beyond credit monitoring to protect you against identity theft attacks you might not always recognize.</bd-p>
|
|
133
133
|
<bd-accordion-section no-container>
|
|
134
134
|
<bd-accordion-item title="Continuous Dark Web & Surface Monitoring" open>
|
|
135
|
-
<bd-p
|
|
135
|
+
<bd-p variant="small">Get instant alerts if your data appears on the dark web.</bd-p>
|
|
136
136
|
</bd-accordion-item>
|
|
137
137
|
<bd-accordion-item title="Digital Footprint Visualization">
|
|
138
|
-
<bd-p
|
|
138
|
+
<bd-p variant="small">See and reduce your digital exposure online.</bd-p>
|
|
139
139
|
</bd-accordion-item>
|
|
140
140
|
<bd-accordion-item title="Identity Protection Score">
|
|
141
|
-
<bd-p
|
|
141
|
+
<bd-p variant="small">Understand your identity risk at a glance.</bd-p>
|
|
142
142
|
</bd-accordion-item>
|
|
143
143
|
<bd-accordion-item title="Real Time Breach Notifications">
|
|
144
|
-
<bd-p
|
|
144
|
+
<bd-p variant="small">Be first to know when your accounts are compromised.</bd-p>
|
|
145
145
|
</bd-accordion-item>
|
|
146
146
|
<bd-accordion-item title="Credit Report Monitoring">
|
|
147
|
-
<bd-p
|
|
147
|
+
<bd-p variant="small">Track changes to your credit report in real time.</bd-p>
|
|
148
148
|
</bd-accordion-item>
|
|
149
149
|
<bd-accordion-item title="SSN Tracker">
|
|
150
|
-
<bd-p
|
|
150
|
+
<bd-p variant="small">Monitor usage of your Social Security Number.</bd-p>
|
|
151
151
|
</bd-accordion-item>
|
|
152
152
|
</bd-accordion-section>
|
|
153
153
|
</bd-feature-col>
|
|
@@ -161,34 +161,34 @@ const macosPanel = html`
|
|
|
161
161
|
<bd-features>
|
|
162
162
|
|
|
163
163
|
<bd-feature-col title="Protection">
|
|
164
|
-
<bd-individual-icon slot="icon" size="40" color="
|
|
165
|
-
<bd-p
|
|
164
|
+
<bd-individual-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-individual-icon>
|
|
165
|
+
<bd-p variant="small" slot="description">Protection description for macOS.</bd-p>
|
|
166
166
|
<bd-accordion-section no-container>
|
|
167
167
|
<bd-accordion-item title="Real-Time Data Protection" open>
|
|
168
|
-
<bd-p
|
|
168
|
+
<bd-p variant="small">Content for macOS protection.</bd-p>
|
|
169
169
|
</bd-accordion-item>
|
|
170
170
|
<bd-accordion-item title="Network Threat Prevention">
|
|
171
|
-
<bd-p
|
|
171
|
+
<bd-p variant="small">Content here</bd-p>
|
|
172
172
|
</bd-accordion-item>
|
|
173
173
|
</bd-accordion-section>
|
|
174
174
|
</bd-feature-col>
|
|
175
175
|
|
|
176
176
|
<bd-feature-col title="Privacy">
|
|
177
|
-
<bd-globe-icon slot="icon" size="40" color="
|
|
178
|
-
<bd-p
|
|
177
|
+
<bd-globe-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-globe-icon>
|
|
178
|
+
<bd-p variant="small" slot="description">Privacy description for macOS.</bd-p>
|
|
179
179
|
<bd-accordion-section no-container>
|
|
180
180
|
<bd-accordion-item title="VPN Traffic" open>
|
|
181
|
-
<bd-p
|
|
181
|
+
<bd-p variant="small">Content for macOS privacy.</bd-p>
|
|
182
182
|
</bd-accordion-item>
|
|
183
183
|
</bd-accordion-section>
|
|
184
184
|
</bd-feature-col>
|
|
185
185
|
|
|
186
186
|
<bd-feature-col title="Identity Protection">
|
|
187
|
-
<bd-family-icon slot="icon" size="40" color="
|
|
188
|
-
<bd-p
|
|
187
|
+
<bd-family-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-family-icon>
|
|
188
|
+
<bd-p variant="small" slot="description">macOS identity description.</bd-p>
|
|
189
189
|
<bd-accordion-section no-container>
|
|
190
190
|
<bd-accordion-item title="Dark Web Monitoring" open>
|
|
191
|
-
<bd-p
|
|
191
|
+
<bd-p variant="small">Content for macOS identity.</bd-p>
|
|
192
192
|
</bd-accordion-item>
|
|
193
193
|
</bd-accordion-section>
|
|
194
194
|
</bd-feature-col>
|
|
@@ -202,31 +202,31 @@ const iosPanel = html`
|
|
|
202
202
|
<bd-features>
|
|
203
203
|
|
|
204
204
|
<bd-feature-col title="Protection">
|
|
205
|
-
<bd-individual-icon slot="icon" size="40" color="
|
|
206
|
-
<bd-p
|
|
205
|
+
<bd-individual-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-individual-icon>
|
|
206
|
+
<bd-p variant="small" slot="description">iOS protection.</bd-p>
|
|
207
207
|
<bd-accordion-section no-container>
|
|
208
208
|
<bd-accordion-item title="iOS Real-Time Protection" open>
|
|
209
|
-
<bd-p
|
|
209
|
+
<bd-p variant="small">Content here</bd-p>
|
|
210
210
|
</bd-accordion-item>
|
|
211
211
|
</bd-accordion-section>
|
|
212
212
|
</bd-feature-col>
|
|
213
213
|
|
|
214
214
|
<bd-feature-col title="Privacy">
|
|
215
|
-
<bd-globe-icon slot="icon" size="40" color="
|
|
216
|
-
<bd-p
|
|
215
|
+
<bd-globe-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-globe-icon>
|
|
216
|
+
<bd-p variant="small" slot="description">iOS privacy.</bd-p>
|
|
217
217
|
<bd-accordion-section no-container>
|
|
218
218
|
<bd-accordion-item title="iOS VPN" open>
|
|
219
|
-
<bd-p
|
|
219
|
+
<bd-p variant="small">Content here</bd-p>
|
|
220
220
|
</bd-accordion-item>
|
|
221
221
|
</bd-accordion-section>
|
|
222
222
|
</bd-feature-col>
|
|
223
223
|
|
|
224
224
|
<bd-feature-col title="Identity Protection">
|
|
225
|
-
<bd-family-icon slot="icon" size="40" color="
|
|
226
|
-
<bd-p
|
|
225
|
+
<bd-family-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-family-icon>
|
|
226
|
+
<bd-p variant="small" slot="description">iOS identity.</bd-p>
|
|
227
227
|
<bd-accordion-section no-container>
|
|
228
228
|
<bd-accordion-item title="iOS Dark Web" open>
|
|
229
|
-
<bd-p
|
|
229
|
+
<bd-p variant="small">Content here</bd-p>
|
|
230
230
|
</bd-accordion-item>
|
|
231
231
|
</bd-accordion-section>
|
|
232
232
|
</bd-feature-col>
|
|
@@ -240,31 +240,31 @@ const androidPanel = html`
|
|
|
240
240
|
<bd-features>
|
|
241
241
|
|
|
242
242
|
<bd-feature-col title="Protection">
|
|
243
|
-
<bd-individual-icon slot="icon" size="40" color="
|
|
244
|
-
<bd-p
|
|
243
|
+
<bd-individual-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-individual-icon>
|
|
244
|
+
<bd-p variant="small" slot="description">Android protection.</bd-p>
|
|
245
245
|
<bd-accordion-section no-container>
|
|
246
246
|
<bd-accordion-item title="Android Real-Time Protection" open>
|
|
247
|
-
<bd-p
|
|
247
|
+
<bd-p variant="small">Content here</bd-p>
|
|
248
248
|
</bd-accordion-item>
|
|
249
249
|
</bd-accordion-section>
|
|
250
250
|
</bd-feature-col>
|
|
251
251
|
|
|
252
252
|
<bd-feature-col title="Privacy">
|
|
253
|
-
<bd-globe-icon slot="icon" size="40" color="
|
|
254
|
-
<bd-p
|
|
253
|
+
<bd-globe-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-globe-icon>
|
|
254
|
+
<bd-p variant="small" slot="description">Android privacy.</bd-p>
|
|
255
255
|
<bd-accordion-section no-container>
|
|
256
256
|
<bd-accordion-item title="Android VPN" open>
|
|
257
|
-
<bd-p
|
|
257
|
+
<bd-p variant="small">Content here</bd-p>
|
|
258
258
|
</bd-accordion-item>
|
|
259
259
|
</bd-accordion-section>
|
|
260
260
|
</bd-feature-col>
|
|
261
261
|
|
|
262
262
|
<bd-feature-col title="Identity Protection">
|
|
263
|
-
<bd-family-icon slot="icon" size="40" color="
|
|
264
|
-
<bd-p
|
|
263
|
+
<bd-family-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-family-icon>
|
|
264
|
+
<bd-p variant="small" slot="description">Android identity.</bd-p>
|
|
265
265
|
<bd-accordion-section no-container>
|
|
266
266
|
<bd-accordion-item title="Android Dark Web" open>
|
|
267
|
-
<bd-p
|
|
267
|
+
<bd-p variant="small">Content here</bd-p>
|
|
268
268
|
</bd-accordion-item>
|
|
269
269
|
</bd-accordion-section>
|
|
270
270
|
</bd-feature-col>
|
|
@@ -320,32 +320,32 @@ export const WithBadges = {
|
|
|
320
320
|
<bd-tab-panel title="Windows">
|
|
321
321
|
<bd-features>
|
|
322
322
|
<bd-feature-col title="Protection">
|
|
323
|
-
<bd-individual-icon slot="icon" size="40" color="
|
|
324
|
-
<bd-p
|
|
323
|
+
<bd-individual-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-individual-icon>
|
|
324
|
+
<bd-p variant="small" slot="description">Protection description.</bd-p>
|
|
325
325
|
<bd-accordion-section no-container>
|
|
326
326
|
<bd-accordion-item title="Complete Real-Time Data Protection" open>
|
|
327
|
-
<bd-badge slot="badge"
|
|
328
|
-
<bd-p
|
|
327
|
+
<bd-badge slot="badge" tone="primary" variant="fill" size="sm">BLUE TAG</bd-badge>
|
|
328
|
+
<bd-p variant="small">Content here</bd-p>
|
|
329
329
|
</bd-accordion-item>
|
|
330
330
|
<bd-accordion-item title="Network Threat Prevention">
|
|
331
|
-
<bd-badge slot="badge"
|
|
332
|
-
<bd-p
|
|
331
|
+
<bd-badge slot="badge" tone="success" variant="fill" size="sm">INDUSTRY 1ST</bd-badge>
|
|
332
|
+
<bd-p variant="small">Content here</bd-p>
|
|
333
333
|
</bd-accordion-item>
|
|
334
334
|
<bd-accordion-item title="Advanced Threat Defense">
|
|
335
|
-
<bd-p
|
|
335
|
+
<bd-p variant="small">Content here</bd-p>
|
|
336
336
|
</bd-accordion-item>
|
|
337
337
|
</bd-accordion-section>
|
|
338
338
|
</bd-feature-col>
|
|
339
339
|
<bd-feature-col title="Privacy">
|
|
340
|
-
<bd-globe-icon slot="icon" size="40" color="
|
|
341
|
-
<bd-p
|
|
340
|
+
<bd-globe-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-globe-icon>
|
|
341
|
+
<bd-p variant="small" slot="description">Privacy description.</bd-p>
|
|
342
342
|
<bd-accordion-section no-container>
|
|
343
343
|
<bd-accordion-item title="Unlimited VPN Traffic" open>
|
|
344
|
-
<bd-badge slot="badge"
|
|
345
|
-
<bd-p
|
|
344
|
+
<bd-badge slot="badge" tone="primary" variant="fill" size="sm">NEW</bd-badge>
|
|
345
|
+
<bd-p variant="small">Content here</bd-p>
|
|
346
346
|
</bd-accordion-item>
|
|
347
347
|
<bd-accordion-item title="Password Manager">
|
|
348
|
-
<bd-p
|
|
348
|
+
<bd-p variant="small">Content here</bd-p>
|
|
349
349
|
</bd-accordion-item>
|
|
350
350
|
</bd-accordion-section>
|
|
351
351
|
</bd-feature-col>
|
|
@@ -354,11 +354,11 @@ export const WithBadges = {
|
|
|
354
354
|
<bd-tab-panel title="macOS">
|
|
355
355
|
<bd-features>
|
|
356
356
|
<bd-feature-col title="Protection">
|
|
357
|
-
<bd-individual-icon slot="icon" size="40" color="
|
|
358
|
-
<bd-p
|
|
357
|
+
<bd-individual-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-individual-icon>
|
|
358
|
+
<bd-p variant="small" slot="description">macOS protection.</bd-p>
|
|
359
359
|
<bd-accordion-section no-container>
|
|
360
360
|
<bd-accordion-item title="Real-Time Protection" open>
|
|
361
|
-
<bd-p
|
|
361
|
+
<bd-p variant="small">Content here</bd-p>
|
|
362
362
|
</bd-accordion-item>
|
|
363
363
|
</bd-accordion-section>
|
|
364
364
|
</bd-feature-col>
|
|
@@ -380,26 +380,26 @@ export const TwoColumns = {
|
|
|
380
380
|
<bd-tab-panel title="Windows">
|
|
381
381
|
<bd-features>
|
|
382
382
|
<bd-feature-col title="Protection">
|
|
383
|
-
<bd-individual-icon slot="icon" size="40" color="
|
|
384
|
-
<bd-p
|
|
383
|
+
<bd-individual-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-individual-icon>
|
|
384
|
+
<bd-p variant="small" slot="description">Protection description.</bd-p>
|
|
385
385
|
<bd-accordion-section no-container>
|
|
386
386
|
<bd-accordion-item title="Real-Time Protection" open>
|
|
387
|
-
<bd-p
|
|
387
|
+
<bd-p variant="small">Content here</bd-p>
|
|
388
388
|
</bd-accordion-item>
|
|
389
389
|
<bd-accordion-item title="Network Threat Prevention">
|
|
390
|
-
<bd-p
|
|
390
|
+
<bd-p variant="small">Content here</bd-p>
|
|
391
391
|
</bd-accordion-item>
|
|
392
392
|
</bd-accordion-section>
|
|
393
393
|
</bd-feature-col>
|
|
394
394
|
<bd-feature-col title="Privacy">
|
|
395
|
-
<bd-globe-icon slot="icon" size="40" color="
|
|
396
|
-
<bd-p
|
|
395
|
+
<bd-globe-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-globe-icon>
|
|
396
|
+
<bd-p variant="small" slot="description">Privacy description.</bd-p>
|
|
397
397
|
<bd-accordion-section no-container>
|
|
398
398
|
<bd-accordion-item title="VPN Traffic" open>
|
|
399
|
-
<bd-p
|
|
399
|
+
<bd-p variant="small">Content here</bd-p>
|
|
400
400
|
</bd-accordion-item>
|
|
401
401
|
<bd-accordion-item title="Password Manager">
|
|
402
|
-
<bd-p
|
|
402
|
+
<bd-p variant="small">Content here</bd-p>
|
|
403
403
|
</bd-accordion-item>
|
|
404
404
|
</bd-accordion-section>
|
|
405
405
|
</bd-feature-col>
|
|
@@ -408,20 +408,20 @@ export const TwoColumns = {
|
|
|
408
408
|
<bd-tab-panel title="macOS">
|
|
409
409
|
<bd-features>
|
|
410
410
|
<bd-feature-col title="Protection">
|
|
411
|
-
<bd-individual-icon slot="icon" size="40" color="
|
|
412
|
-
<bd-p
|
|
411
|
+
<bd-individual-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-individual-icon>
|
|
412
|
+
<bd-p variant="small" slot="description">macOS protection.</bd-p>
|
|
413
413
|
<bd-accordion-section no-container>
|
|
414
414
|
<bd-accordion-item title="macOS Protection" open>
|
|
415
|
-
<bd-p
|
|
415
|
+
<bd-p variant="small">Content here</bd-p>
|
|
416
416
|
</bd-accordion-item>
|
|
417
417
|
</bd-accordion-section>
|
|
418
418
|
</bd-feature-col>
|
|
419
419
|
<bd-feature-col title="Privacy">
|
|
420
|
-
<bd-globe-icon slot="icon" size="40" color="
|
|
421
|
-
<bd-p
|
|
420
|
+
<bd-globe-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-globe-icon>
|
|
421
|
+
<bd-p variant="small" slot="description">macOS privacy.</bd-p>
|
|
422
422
|
<bd-accordion-section no-container>
|
|
423
423
|
<bd-accordion-item title="macOS Privacy" open>
|
|
424
|
-
<bd-p
|
|
424
|
+
<bd-p variant="small">Content here</bd-p>
|
|
425
425
|
</bd-accordion-item>
|
|
426
426
|
</bd-accordion-section>
|
|
427
427
|
</bd-feature-col>
|
|
@@ -443,17 +443,17 @@ export const OneColumn = {
|
|
|
443
443
|
<bd-tab-panel title="Windows">
|
|
444
444
|
<bd-features>
|
|
445
445
|
<bd-feature-col title="Protection">
|
|
446
|
-
<bd-individual-icon slot="icon" size="40" color="
|
|
447
|
-
<bd-p
|
|
446
|
+
<bd-individual-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-individual-icon>
|
|
447
|
+
<bd-p variant="small" slot="description">Single column protection description.</bd-p>
|
|
448
448
|
<bd-accordion-section no-container>
|
|
449
449
|
<bd-accordion-item title="Real-Time Protection" open>
|
|
450
|
-
<bd-p
|
|
450
|
+
<bd-p variant="small">Content here</bd-p>
|
|
451
451
|
</bd-accordion-item>
|
|
452
452
|
<bd-accordion-item title="Network Threat Prevention">
|
|
453
|
-
<bd-p
|
|
453
|
+
<bd-p variant="small">Content here</bd-p>
|
|
454
454
|
</bd-accordion-item>
|
|
455
455
|
<bd-accordion-item title="Advanced Threat Defense">
|
|
456
|
-
<bd-p
|
|
456
|
+
<bd-p variant="small">Content here</bd-p>
|
|
457
457
|
</bd-accordion-item>
|
|
458
458
|
</bd-accordion-section>
|
|
459
459
|
</bd-feature-col>
|
|
@@ -462,11 +462,11 @@ export const OneColumn = {
|
|
|
462
462
|
<bd-tab-panel title="macOS">
|
|
463
463
|
<bd-features>
|
|
464
464
|
<bd-feature-col title="Protection">
|
|
465
|
-
<bd-individual-icon slot="icon" size="40" color="
|
|
466
|
-
<bd-p
|
|
465
|
+
<bd-individual-icon slot="icon" size="40" color="var(--color-blue-500)"></bd-individual-icon>
|
|
466
|
+
<bd-p variant="small" slot="description">macOS single column description.</bd-p>
|
|
467
467
|
<bd-accordion-section no-container>
|
|
468
468
|
<bd-accordion-item title="macOS Protection" open>
|
|
469
|
-
<bd-p
|
|
469
|
+
<bd-p variant="small">Content here</bd-p>
|
|
470
470
|
</bd-accordion-item>
|
|
471
471
|
</bd-accordion-section>
|
|
472
472
|
</bd-feature-col>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
|
|
3
|
+
/** Styled entirely from design tokens — see npm run lint:tokens. */
|
|
4
|
+
export const tagCSS = css`
|
|
5
|
+
:host { display: inline-flex; }
|
|
6
|
+
|
|
7
|
+
span {
|
|
8
|
+
display: inline-flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
gap: var(--spacing-4);
|
|
11
|
+
font-family: var(--typography-fontFamily-sans);
|
|
12
|
+
font-size: var(--typography-label-small-fontSize);
|
|
13
|
+
font-weight: var(--typography-label-small-fontWeight);
|
|
14
|
+
line-height: var(--typography-label-small-lineHeight);
|
|
15
|
+
letter-spacing: var(--typography-label-small-letterSpacing);
|
|
16
|
+
padding: var(--spacing-2) var(--spacing-8);
|
|
17
|
+
border-radius: var(--radius-full);
|
|
18
|
+
border: var(--border-width-1) solid var(--status-neutral-border);
|
|
19
|
+
color: var(--status-neutral-text);
|
|
20
|
+
background: var(--status-neutral-surface);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
:host([tone='brand']) span {
|
|
24
|
+
color: var(--status-brand-text);
|
|
25
|
+
background: var(--status-brand-surface);
|
|
26
|
+
border-color: var(--status-brand-border);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
:host([tone='success']) span {
|
|
30
|
+
color: var(--status-success-text);
|
|
31
|
+
background: var(--status-success-surface);
|
|
32
|
+
border-color: var(--status-success-border);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
:host([tone='warning']) span {
|
|
36
|
+
color: var(--status-warning-text);
|
|
37
|
+
background: var(--status-warning-surface);
|
|
38
|
+
border-color: var(--status-warning-border);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
:host([tone='error']) span {
|
|
42
|
+
color: var(--status-error-text);
|
|
43
|
+
background: var(--status-error-surface);
|
|
44
|
+
border-color: var(--status-error-border);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
:host([tone='info']) span {
|
|
48
|
+
color: var(--status-info-text);
|
|
49
|
+
background: var(--status-info-surface);
|
|
50
|
+
border-color: var(--status-info-border);
|
|
51
|
+
}
|
|
52
|
+
`;
|
|
53
|
+
|
|
54
|
+
export default tagCSS;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { LitElement, html } from 'lit';
|
|
2
|
+
// Installs the design tokens into document scope; see src/tokens/tokens.js
|
|
3
|
+
import '../../tokens/tokens.js';
|
|
4
|
+
import { tagCSS } from './tag.css.js';
|
|
5
|
+
|
|
6
|
+
/** The six tones bd-badge and bd-alert also use. */
|
|
7
|
+
const TONES = ['neutral', 'brand', 'success', 'warning', 'error', 'info'];
|
|
8
|
+
|
|
9
|
+
export class BdTag extends LitElement {
|
|
10
|
+
static styles = [tagCSS];
|
|
11
|
+
|
|
12
|
+
static properties = {
|
|
13
|
+
tone: { type: String, reflect: true }
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
constructor() {
|
|
17
|
+
super();
|
|
18
|
+
this.tone = 'neutral';
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
willUpdate(changed) {
|
|
22
|
+
if (changed.has('tone') && !TONES.includes(this.tone)) this.tone = 'neutral';
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
render() {
|
|
26
|
+
return html`
|
|
27
|
+
<span><slot></slot></span>
|
|
28
|
+
`;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
customElements.define('bd-tag', BdTag);
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { html } from 'lit';
|
|
2
|
+
import './tag.js';
|
|
3
|
+
import '../badge/badge.js';
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
title : 'Atoms/Tag',
|
|
7
|
+
tags : ['autodocs'],
|
|
8
|
+
parameters: {
|
|
9
|
+
docs: {
|
|
10
|
+
description: {
|
|
11
|
+
component: `
|
|
12
|
+
**BdTag** is a small label for categorising or filtering — a keyword, a
|
|
13
|
+
category, a selected filter.
|
|
14
|
+
|
|
15
|
+
### Usage
|
|
16
|
+
\`\`\`html
|
|
17
|
+
<bd-tag>Windows</bd-tag>
|
|
18
|
+
<bd-tag tone="brand">New</bd-tag>
|
|
19
|
+
<bd-tag tone="success">Protected</bd-tag>
|
|
20
|
+
<bd-tag tone="warning">Review</bd-tag>
|
|
21
|
+
<bd-tag tone="error">At risk</bd-tag>
|
|
22
|
+
\`\`\`
|
|
23
|
+
|
|
24
|
+
### Props
|
|
25
|
+
| Prop | Values | Default |
|
|
26
|
+
|---|---|---|
|
|
27
|
+
| \`tone\` | \`neutral\`, \`brand\`, \`success\`, \`warning\`, \`error\` | \`neutral\` |
|
|
28
|
+
|
|
29
|
+
The text is slotted.
|
|
30
|
+
|
|
31
|
+
### Tag or badge
|
|
32
|
+
They look similar and mean different things. A **tag** classifies — it is a
|
|
33
|
+
keyword attached to a thing. A **badge** reports state or a count on something
|
|
34
|
+
else, like "3 unread" or "NEW" on a menu item. If it could be removed by the
|
|
35
|
+
user or used as a filter, it is a tag.
|
|
36
|
+
|
|
37
|
+
### Tag and badge share their tone colours
|
|
38
|
+
A tag and a \`bd-badge\` of the same tone use the **same text colour**, so the
|
|
39
|
+
two read as one family. They differ in two deliberate ways: a tag carries a
|
|
40
|
+
\`--border-width-1\` border and sits on the lighter \`-50\` tint, where a badge
|
|
41
|
+
has no border and takes the heavier \`-100\`. The lighter fill is what lets the
|
|
42
|
+
tag's border read.
|
|
43
|
+
|
|
44
|
+
**Brand is the one exception.** Its heavier tint would be blue-100, which is
|
|
45
|
+
info's, so a brand badge would be indistinguishable from an info badge. A brand
|
|
46
|
+
badge therefore sits on the lighter tint, like a brand tag, and the two differ
|
|
47
|
+
only by the tag's border. There is no \`--status-brand-surface-strong\`.
|
|
48
|
+
|
|
49
|
+
Both now use the same six names — \`neutral\`, \`brand\`, \`success\`,
|
|
50
|
+
\`warning\`, \`error\`, \`info\` — and read the same \`--status-*\` roles, so the
|
|
51
|
+
shared text colour is shared by construction rather than by coincidence. The
|
|
52
|
+
badge's earlier \`default\` and \`primary\` still resolve, to \`neutral\` and
|
|
53
|
+
\`brand\`.
|
|
54
|
+
|
|
55
|
+
### Notes
|
|
56
|
+
Every tone pairs a text colour and a tint that clear 4.5:1, the lowest being
|
|
57
|
+
5.59. \`tone\` is not the only carrier of meaning — the tag's own words are —
|
|
58
|
+
so it stays readable without colour perception.
|
|
59
|
+
|
|
60
|
+
The border is faint by design at the \`-200\` step, between 1.21 and 1.97
|
|
61
|
+
against the page. That is not a contrast failure, because a tag is static
|
|
62
|
+
content rather than a control and the tint and text already identify it, but
|
|
63
|
+
it does mean the border reads as a subtle edge rather than a strong outline.
|
|
64
|
+
|
|
65
|
+
It is not interactive. There is no removable variant and no click handling, so
|
|
66
|
+
for a dismissible filter chip you would need a button inside the slot, or a
|
|
67
|
+
component built for it.
|
|
68
|
+
`
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
argTypes: {
|
|
73
|
+
tone: {
|
|
74
|
+
control : { type: 'select' },
|
|
75
|
+
options : ['neutral', 'brand', 'success', 'warning', 'error', 'info'],
|
|
76
|
+
description: 'Semantic colour pairing. The wording should carry the meaning too.',
|
|
77
|
+
table : { type: { summary: 'string' }, defaultValue: { summary: "neutral" }, category: 'Appearance' }
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export const Tones = () => html`
|
|
83
|
+
<bd-tag>Neutral</bd-tag>
|
|
84
|
+
<bd-tag tone="brand">Brand</bd-tag>
|
|
85
|
+
<bd-tag tone="success">Success</bd-tag>
|
|
86
|
+
<bd-tag tone="warning">Warning</bd-tag>
|
|
87
|
+
<bd-tag tone="error">Error</bd-tag>
|
|
88
|
+
`;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* A tag is a single inline-flex row with no wrapping rule of its own, so a long
|
|
92
|
+
* keyword stays on one line and pushes the row wider rather than breaking. In a
|
|
93
|
+
* narrow column that is what overflows.
|
|
94
|
+
*/
|
|
95
|
+
export const LongLabel = () => html`
|
|
96
|
+
<div style="display: flex; flex-wrap: wrap; gap: var(--spacing-8); max-width: 22ch">
|
|
97
|
+
<bd-tag>Windows</bd-tag>
|
|
98
|
+
<bd-tag tone="brand">Cross-platform protection</bd-tag>
|
|
99
|
+
<bd-tag tone="success">Up to date</bd-tag>
|
|
100
|
+
</div>
|
|
101
|
+
`;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* The comparison the docs above describe, rendered rather than asserted: same
|
|
105
|
+
* tone, same text colour, different fill step and border. Any change to either
|
|
106
|
+
* component's tone colours shows up here as a difference between the rows.
|
|
107
|
+
*/
|
|
108
|
+
export const AgainstBadge = () => html`
|
|
109
|
+
<div style="display: grid; gap: var(--spacing-12); justify-items: start">
|
|
110
|
+
<div style="display: flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-8)">
|
|
111
|
+
<bd-tag>Neutral</bd-tag>
|
|
112
|
+
<bd-tag tone="brand">Brand</bd-tag>
|
|
113
|
+
<bd-tag tone="success">Success</bd-tag>
|
|
114
|
+
<bd-tag tone="warning">Warning</bd-tag>
|
|
115
|
+
<bd-tag tone="error">Error</bd-tag>
|
|
116
|
+
</div>
|
|
117
|
+
<div style="display: flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-8)">
|
|
118
|
+
<bd-badge>Default</bd-badge>
|
|
119
|
+
<bd-badge tone="primary">Primary</bd-badge>
|
|
120
|
+
<bd-badge tone="success">Success</bd-badge>
|
|
121
|
+
<bd-badge tone="warning">Warning</bd-badge>
|
|
122
|
+
<bd-badge tone="error">Error</bd-badge>
|
|
123
|
+
<bd-badge tone="info">Info</bd-badge>
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
`;
|