@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
|
@@ -2,7 +2,7 @@ import { html } from 'lit';
|
|
|
2
2
|
import './dropdown.js';
|
|
3
3
|
|
|
4
4
|
export default {
|
|
5
|
-
title : '
|
|
5
|
+
title : 'Atoms/Dropdown',
|
|
6
6
|
tags : ['autodocs'],
|
|
7
7
|
parameters: {
|
|
8
8
|
docs: {
|
|
@@ -15,7 +15,7 @@ export default {
|
|
|
15
15
|
<bd-custom-dropdown
|
|
16
16
|
label="Select country"
|
|
17
17
|
.options="${['Romania', 'Germany', 'France']}"
|
|
18
|
-
|
|
18
|
+
size="md"
|
|
19
19
|
required
|
|
20
20
|
></bd-custom-dropdown>
|
|
21
21
|
\`\`\`
|
|
@@ -29,16 +29,48 @@ export default {
|
|
|
29
29
|
| Disabled | \`disabled\` | \`form-input--disabled\` |
|
|
30
30
|
|
|
31
31
|
### Size Variants
|
|
32
|
-
| Kind | Input Class | Label Class |
|
|
33
|
-
|
|
34
|
-
| \`sm\` | \`input-sm\` | \`label-sm\` |
|
|
35
|
-
| \`md\` | \`input-md\` | \`label-md\` |
|
|
36
|
-
| \`lg\` | \`input-lg\` | \`label-lg\` |
|
|
32
|
+
| Kind | Height | Input Class | Label Class |
|
|
33
|
+
|---|---|---|---|
|
|
34
|
+
| \`sm\` | 33.5px | \`input-sm\` | \`label-sm\` |
|
|
35
|
+
| \`md\` | 44px | \`input-md\` | \`label-md\` |
|
|
36
|
+
| \`lg\` | 54.5px | \`input-lg\` | \`label-lg\` |
|
|
37
|
+
|
|
38
|
+
**A select, a \`bd-custom-input\`, a \`bd-custom-input-clipboard\` and a
|
|
39
|
+
\`bd-button\` of the same size are exactly the same height.** All four derive it
|
|
40
|
+
from the same three tokens — the vertical \`--spacing-*\`, the
|
|
41
|
+
\`--typography-fontSize-*\` step and \`--typography-lineHeight-tight\` — rather
|
|
42
|
+
than from four numbers kept in step by hand, because these controls almost
|
|
43
|
+
always share a row.
|
|
44
|
+
|
|
45
|
+
That derivation is also what stopped the select clipping its own option text.
|
|
46
|
+
It previously set \`lineHeight-normal\` (1.5) against a fixed height, which left
|
|
47
|
+
the line box 3 to 6px taller than the content box and cut the bottom off any
|
|
48
|
+
descender.
|
|
37
49
|
|
|
38
50
|
### Notes
|
|
39
51
|
- Options can be passed as an Array or a JSON string
|
|
40
52
|
- First option is auto-selected by default
|
|
41
53
|
- Tooltip/help text is only rendered when \`tooltip\` prop is non-empty
|
|
54
|
+
- This component is documented in **two** places: here, and as the Dropdown
|
|
55
|
+
stories under **Atoms/Input**. They are one component; the Atoms/Input page
|
|
56
|
+
carries the fuller write-up.
|
|
57
|
+
|
|
58
|
+
### Known gaps
|
|
59
|
+
Three things the sibling \`bd-custom-input\` has and this does not. They are
|
|
60
|
+
listed here because the states above imply a parity that is not there yet:
|
|
61
|
+
|
|
62
|
+
- **No \`value\` and no event.** Nothing is emitted when a selection changes, so
|
|
63
|
+
the chosen option cannot be read without reaching into the shadow root. The
|
|
64
|
+
input's \`value\` property plus \`bd-input\` / \`bd-change\` is the pattern to
|
|
65
|
+
copy.
|
|
66
|
+
- **\`invalid\` is colour only.** It sets a red border but no
|
|
67
|
+
\`aria-invalid="true"\`, so a screen reader is told nothing. The input sets it.
|
|
68
|
+
- **\`tooltip\` is not announced.** It renders as help text but the select does
|
|
69
|
+
not point at it with \`aria-describedby\`, so when it carries the reason a
|
|
70
|
+
field is invalid, that reason is visual only.
|
|
71
|
+
|
|
72
|
+
Being in a shadow root, the select also does not participate in an enclosing
|
|
73
|
+
\`<form>\` — a \`<form>\` containing it yields no \`FormData\` entry.
|
|
42
74
|
`
|
|
43
75
|
}
|
|
44
76
|
}
|
|
@@ -54,7 +86,7 @@ export default {
|
|
|
54
86
|
description: 'Array of option strings. Can also be passed as a JSON string.',
|
|
55
87
|
table : { type: { summary: 'string[]' }, defaultValue: { summary: '[]' }, category: 'Content' }
|
|
56
88
|
},
|
|
57
|
-
|
|
89
|
+
size: {
|
|
58
90
|
control : { type: 'select' },
|
|
59
91
|
options : ['sm', 'md', 'lg'],
|
|
60
92
|
description: 'Size variant controlling input and label CSS classes',
|
|
@@ -94,7 +126,7 @@ const render = (args) => html`
|
|
|
94
126
|
<bd-custom-dropdown
|
|
95
127
|
label="${args.label}"
|
|
96
128
|
.options="${args.options}"
|
|
97
|
-
|
|
129
|
+
size="${args.kind}"
|
|
98
130
|
tooltip="${args.tooltip}"
|
|
99
131
|
?required="${args.required}"
|
|
100
132
|
?invalid="${args.invalid}"
|
|
@@ -105,7 +137,7 @@ const render = (args) => html`
|
|
|
105
137
|
|
|
106
138
|
const defaultArgs = {
|
|
107
139
|
label : 'Select a plan', options : defaultOptions,
|
|
108
|
-
|
|
140
|
+
size : 'md', tooltip : '', required : false,
|
|
109
141
|
invalid : false, validated: false, disabled : false
|
|
110
142
|
};
|
|
111
143
|
|
|
@@ -114,7 +146,7 @@ const defaultArgs = {
|
|
|
114
146
|
export const Default = {
|
|
115
147
|
name : 'Default',
|
|
116
148
|
render: () => html`
|
|
117
|
-
<bd-custom-dropdown label="Select a plan" .options="${defaultOptions}"
|
|
149
|
+
<bd-custom-dropdown label="Select a plan" .options="${defaultOptions}" size="md"></bd-custom-dropdown>
|
|
118
150
|
`,
|
|
119
151
|
parameters: { docs: { description: { story: 'Default dropdown with no validation state and no tooltip.' } } }
|
|
120
152
|
};
|
|
@@ -123,9 +155,9 @@ export const AllSizes = {
|
|
|
123
155
|
name : 'All Sizes',
|
|
124
156
|
render: () => html`
|
|
125
157
|
<div style="display:flex; flex-direction:column; gap:20px; max-width:400px;">
|
|
126
|
-
<bd-custom-dropdown label="Small" .options="${defaultOptions}"
|
|
127
|
-
<bd-custom-dropdown label="Medium" .options="${defaultOptions}"
|
|
128
|
-
<bd-custom-dropdown label="Large" .options="${defaultOptions}"
|
|
158
|
+
<bd-custom-dropdown label="Small" .options="${defaultOptions}" size="sm"></bd-custom-dropdown>
|
|
159
|
+
<bd-custom-dropdown label="Medium" .options="${defaultOptions}" size="md"></bd-custom-dropdown>
|
|
160
|
+
<bd-custom-dropdown label="Large" .options="${defaultOptions}" size="lg"></bd-custom-dropdown>
|
|
129
161
|
</div>
|
|
130
162
|
`,
|
|
131
163
|
parameters: { docs: { description: { story: 'All three size variants stacked for comparison.' } } }
|
|
@@ -134,7 +166,7 @@ export const AllSizes = {
|
|
|
134
166
|
export const Required = {
|
|
135
167
|
name : 'Required',
|
|
136
168
|
render: () => html`
|
|
137
|
-
<bd-custom-dropdown label="Select a plan" .options="${defaultOptions}"
|
|
169
|
+
<bd-custom-dropdown label="Select a plan" .options="${defaultOptions}" size="md" required></bd-custom-dropdown>
|
|
138
170
|
`,
|
|
139
171
|
parameters: { docs: { description: { story: 'Required field — shows a `*` after the label.' } } }
|
|
140
172
|
};
|
|
@@ -145,7 +177,7 @@ export const WithTooltip = {
|
|
|
145
177
|
<bd-custom-dropdown
|
|
146
178
|
label="Select a plan"
|
|
147
179
|
.options="${defaultOptions}"
|
|
148
|
-
|
|
180
|
+
size="md"
|
|
149
181
|
tooltip="Choose the plan that best fits your needs."
|
|
150
182
|
></bd-custom-dropdown>
|
|
151
183
|
`,
|
|
@@ -158,7 +190,7 @@ export const Invalid = {
|
|
|
158
190
|
<bd-custom-dropdown
|
|
159
191
|
label="Select a plan"
|
|
160
192
|
.options="${defaultOptions}"
|
|
161
|
-
|
|
193
|
+
size="md"
|
|
162
194
|
invalid
|
|
163
195
|
tooltip="Please select a valid option."
|
|
164
196
|
></bd-custom-dropdown>
|
|
@@ -172,7 +204,7 @@ export const Validated = {
|
|
|
172
204
|
<bd-custom-dropdown
|
|
173
205
|
label="Select a plan"
|
|
174
206
|
.options="${defaultOptions}"
|
|
175
|
-
|
|
207
|
+
size="md"
|
|
176
208
|
validated
|
|
177
209
|
tooltip="Great choice!"
|
|
178
210
|
></bd-custom-dropdown>
|
|
@@ -183,7 +215,7 @@ export const Validated = {
|
|
|
183
215
|
export const Disabled = {
|
|
184
216
|
name : 'Disabled',
|
|
185
217
|
render: () => html`
|
|
186
|
-
<bd-custom-dropdown label="Select a plan" .options="${defaultOptions}"
|
|
218
|
+
<bd-custom-dropdown label="Select a plan" .options="${defaultOptions}" size="md" disabled></bd-custom-dropdown>
|
|
187
219
|
`,
|
|
188
220
|
parameters: { docs: { description: { story: 'Disabled select — applies `form-input--disabled` class.' } } }
|
|
189
221
|
};
|
|
@@ -192,10 +224,10 @@ export const AllStates = {
|
|
|
192
224
|
name : 'All Validation States',
|
|
193
225
|
render: () => html`
|
|
194
226
|
<div style="display:flex; flex-direction:column; gap:20px; max-width:400px;">
|
|
195
|
-
<bd-custom-dropdown label="Default" .options="${defaultOptions}"
|
|
196
|
-
<bd-custom-dropdown label="Invalid" .options="${defaultOptions}"
|
|
197
|
-
<bd-custom-dropdown label="Validated" .options="${defaultOptions}"
|
|
198
|
-
<bd-custom-dropdown label="Disabled" .options="${defaultOptions}"
|
|
227
|
+
<bd-custom-dropdown label="Default" .options="${defaultOptions}" size="md" tooltip="Default help text."></bd-custom-dropdown>
|
|
228
|
+
<bd-custom-dropdown label="Invalid" .options="${defaultOptions}" size="md" invalid tooltip="This field has an error."></bd-custom-dropdown>
|
|
229
|
+
<bd-custom-dropdown label="Validated" .options="${defaultOptions}" size="md" validated tooltip="Looks good!"></bd-custom-dropdown>
|
|
230
|
+
<bd-custom-dropdown label="Disabled" .options="${defaultOptions}" size="md" disabled></bd-custom-dropdown>
|
|
199
231
|
</div>
|
|
200
232
|
`,
|
|
201
233
|
parameters: { docs: { description: { story: 'All four states stacked: default, invalid, validated, disabled.' } } }
|
|
@@ -207,7 +239,7 @@ export const ManyOptions = {
|
|
|
207
239
|
<bd-custom-dropdown
|
|
208
240
|
label="Select your country"
|
|
209
241
|
.options="${['Select country', 'Romania', 'Germany', 'France', 'Spain', 'Italy', 'Netherlands', 'Belgium', 'Poland', 'Sweden']}"
|
|
210
|
-
|
|
242
|
+
size="md"
|
|
211
243
|
></bd-custom-dropdown>
|
|
212
244
|
`,
|
|
213
245
|
parameters: { docs: { description: { story: 'Dropdown with 10 options. Tests scroll behavior of the native select.' } } }
|
|
@@ -1,19 +1,30 @@
|
|
|
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`
|
|
5
|
+
/* padding-block, not padding-top alone. This section opened with 64px above
|
|
6
|
+
it and closed with nothing, so whatever followed it sat flush against the
|
|
7
|
+
last feature column -- measured 64px/0px while every other module in the
|
|
8
|
+
family pads both ends (48/48 for five of them, 64/64 for three). The
|
|
9
|
+
bottom now matches the top, which is what the module was already doing at
|
|
10
|
+
one end.
|
|
11
|
+
|
|
12
|
+
The duplicate display went with it: block was declared and then
|
|
13
|
+
immediately overridden by flex on the next line but one, so it had never
|
|
14
|
+
applied. */
|
|
4
15
|
:host {
|
|
5
|
-
padding-top: var(--spacing-64);
|
|
6
|
-
padding-bottom: var(--bd-features-padding-bottom, 0);
|
|
7
16
|
--bd-acc-header-margin-bottom: var(--spacing-8);
|
|
8
17
|
display: flex;
|
|
9
18
|
justify-content: center;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
padding-
|
|
19
|
+
padding-top: var(--spacing-64);
|
|
20
|
+
/* A host that nests the section (bd-tabs) can shorten the closing pad. */
|
|
21
|
+
padding-bottom: var(--bd-features-padding-bottom, var(--spacing-64));
|
|
22
|
+
padding-inline: var(--layout-ensemble-inline-padding);
|
|
13
23
|
}
|
|
14
24
|
|
|
15
|
-
/* Columns grid */
|
|
25
|
+
/* Columns grid: its own measure -- N columns of 400 -- centred inside the column */
|
|
16
26
|
.bd-features-container {
|
|
27
|
+
margin-inline: auto;
|
|
17
28
|
display: grid;
|
|
18
29
|
gap: var(--spacing-32);
|
|
19
30
|
width: 100%;
|
|
@@ -47,14 +58,16 @@ export default css`
|
|
|
47
58
|
.col-description {
|
|
48
59
|
margin-bottom: var(--spacing-24);
|
|
49
60
|
font-family: var(--typography-fontFamily-sans);
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
61
|
+
/* body-regular: base / normal / 1.5, which is what this already rendered.
|
|
62
|
+
Size and leading only -- the role's family and tracking are not adopted. */
|
|
63
|
+
font-size: var(--typography-body-regular-fontSize);
|
|
64
|
+
color: var(--color-text-secondary);
|
|
65
|
+
line-height: var(--typography-body-regular-lineHeight);
|
|
53
66
|
overflow: hidden;
|
|
54
67
|
}
|
|
55
68
|
|
|
56
69
|
/* Responsive */
|
|
57
|
-
@media (
|
|
70
|
+
@media ${unsafeCSS(below('lg'))} {
|
|
58
71
|
.bd-col {
|
|
59
72
|
max-width: 100%;
|
|
60
73
|
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { LitElement, html } from "lit";
|
|
2
|
-
|
|
2
|
+
// Installs the design tokens into document scope; see src/tokens/tokens.js
|
|
3
|
+
import "../../tokens/tokens.js";
|
|
3
4
|
import "../accordion/accordion.js";
|
|
4
5
|
import "../heading/heading.js";
|
|
5
6
|
import "../image/image.js";
|
|
6
7
|
import "../paragraph/paragraph.js";
|
|
7
8
|
import featuresCSS from "./features.css.js";
|
|
9
|
+
import { ensembleCSS } from "../shared/ensemble.css.js";
|
|
8
10
|
|
|
9
11
|
class BdFeatureCol extends HTMLElement {}
|
|
10
12
|
customElements.define("bd-feature-col", BdFeatureCol);
|
|
@@ -14,7 +16,7 @@ class BdFeatures extends LitElement {
|
|
|
14
16
|
_minHeight: { state: true }
|
|
15
17
|
};
|
|
16
18
|
|
|
17
|
-
static styles = [
|
|
19
|
+
static styles = [ensembleCSS, featuresCSS];
|
|
18
20
|
|
|
19
21
|
constructor() {
|
|
20
22
|
super();
|
|
@@ -152,7 +154,7 @@ class BdFeatures extends LitElement {
|
|
|
152
154
|
<bd-h as="h4">${title}</bd-h>
|
|
153
155
|
</div>
|
|
154
156
|
${descEl
|
|
155
|
-
? html`<div class="col-description"><bd-p
|
|
157
|
+
? html`<div class="col-description"><bd-p variant="regular">${descEl.textContent}</bd-p></div>`
|
|
156
158
|
: ""}
|
|
157
159
|
${accordionEl
|
|
158
160
|
? (() => {
|
|
@@ -175,12 +177,14 @@ class BdFeatures extends LitElement {
|
|
|
175
177
|
const maxWidth = colCount * colWidth + (colCount - 1) * gap;
|
|
176
178
|
|
|
177
179
|
return html`
|
|
180
|
+
<div class="bd-ensemble">
|
|
178
181
|
<div
|
|
179
182
|
class="bd-features-container"
|
|
180
183
|
style="grid-template-columns: repeat(${colCount}, 1fr); max-width: ${maxWidth}px; ${this._minHeight ? `min-height: ${this._minHeight}px;` : ""}"
|
|
181
184
|
>
|
|
182
185
|
${cols.map(col => this._renderCol(col))}
|
|
183
186
|
</div>
|
|
187
|
+
</div>
|
|
184
188
|
`;
|
|
185
189
|
}
|
|
186
190
|
}
|
|
@@ -5,7 +5,7 @@ import "../paragraph/paragraph.js";
|
|
|
5
5
|
import "./features.js";
|
|
6
6
|
|
|
7
7
|
export default {
|
|
8
|
-
title : "
|
|
8
|
+
title : "Modules/Features",
|
|
9
9
|
tags : ["autodocs"],
|
|
10
10
|
parameters: {
|
|
11
11
|
layout: "padded",
|
|
@@ -21,10 +21,10 @@ Componentă Lit pentru afișarea de feature-uri în coloane cu icon, titlu, desc
|
|
|
21
21
|
icon-src="/assets/pic1.png"
|
|
22
22
|
icon-alt="Protection icon"
|
|
23
23
|
>
|
|
24
|
-
<bd-p slot="description"
|
|
24
|
+
<bd-p slot="description" variant="small">Descriere coloana</bd-p>
|
|
25
25
|
<bd-accordion-section no-container>
|
|
26
26
|
<bd-accordion-item title="Feature 1" open>
|
|
27
|
-
<bd-p
|
|
27
|
+
<bd-p variant="small">Detalii</bd-p>
|
|
28
28
|
</bd-accordion-item>
|
|
29
29
|
</bd-accordion-section>
|
|
30
30
|
</bd-feature-col>
|
|
@@ -61,22 +61,22 @@ export const ThreeColumns = {
|
|
|
61
61
|
icon-src="/assets/pic1.png"
|
|
62
62
|
icon-alt="Protection icon"
|
|
63
63
|
>
|
|
64
|
-
<bd-p slot="description"
|
|
64
|
+
<bd-p slot="description" variant="small">Bitdefender's unbeatable multi-layered protection keeps your devices safe from all new and existing cyber threats.</bd-p>
|
|
65
65
|
<bd-accordion-section no-container>
|
|
66
66
|
<bd-accordion-item title="Complete Real-Time Data Protection" open>
|
|
67
|
-
<bd-p
|
|
67
|
+
<bd-p variant="small">Absolute power in the most efficient security bundle available today.</bd-p>
|
|
68
68
|
</bd-accordion-item>
|
|
69
69
|
<bd-accordion-item title="Network Threat Prevention">
|
|
70
|
-
<bd-p
|
|
70
|
+
<bd-p variant="small">Proactive network monitoring and threat detection.</bd-p>
|
|
71
71
|
</bd-accordion-item>
|
|
72
72
|
<bd-accordion-item title="Advanced Threat Defense">
|
|
73
|
-
<bd-p
|
|
73
|
+
<bd-p variant="small">Behavioral detection stops unknown threats before they execute.</bd-p>
|
|
74
74
|
</bd-accordion-item>
|
|
75
75
|
<bd-accordion-item title="Scam Copilot">
|
|
76
|
-
<bd-p
|
|
76
|
+
<bd-p variant="small">AI-powered scam detection and prevention.</bd-p>
|
|
77
77
|
</bd-accordion-item>
|
|
78
78
|
<bd-accordion-item title="Multi-Layer Ransomware Protection">
|
|
79
|
-
<bd-p
|
|
79
|
+
<bd-p variant="small">Protects your files from unauthorized encryption.</bd-p>
|
|
80
80
|
</bd-accordion-item>
|
|
81
81
|
</bd-accordion-section>
|
|
82
82
|
</bd-feature-col>
|
|
@@ -86,22 +86,22 @@ export const ThreeColumns = {
|
|
|
86
86
|
icon-src="/assets/pic2.png"
|
|
87
87
|
icon-alt="Privacy icon"
|
|
88
88
|
>
|
|
89
|
-
<bd-p slot="description"
|
|
89
|
+
<bd-p slot="description" variant="small">Bitdefender Ultimate Security takes care of your online privacy and personal information.</bd-p>
|
|
90
90
|
<bd-accordion-section no-container>
|
|
91
91
|
<bd-accordion-item title="Unlimited VPN Traffic" open>
|
|
92
|
-
<bd-p
|
|
92
|
+
<bd-p variant="small">Encrypt your connection and stay private online.</bd-p>
|
|
93
93
|
</bd-accordion-item>
|
|
94
94
|
<bd-accordion-item title="Password Manager">
|
|
95
|
-
<bd-p
|
|
95
|
+
<bd-p variant="small">Store and autofill passwords securely.</bd-p>
|
|
96
96
|
</bd-accordion-item>
|
|
97
97
|
<bd-accordion-item title="Anti-tracker">
|
|
98
|
-
<bd-p
|
|
98
|
+
<bd-p variant="small">Block trackers and keep your browsing private.</bd-p>
|
|
99
99
|
</bd-accordion-item>
|
|
100
100
|
<bd-accordion-item title="Webcam Protection">
|
|
101
|
-
<bd-p
|
|
101
|
+
<bd-p variant="small">Prevent unauthorized webcam access.</bd-p>
|
|
102
102
|
</bd-accordion-item>
|
|
103
103
|
<bd-accordion-item title="Privacy Firewall">
|
|
104
|
-
<bd-p
|
|
104
|
+
<bd-p variant="small">Advanced firewall protection for your network.</bd-p>
|
|
105
105
|
</bd-accordion-item>
|
|
106
106
|
</bd-accordion-section>
|
|
107
107
|
</bd-feature-col>
|
|
@@ -111,22 +111,22 @@ export const ThreeColumns = {
|
|
|
111
111
|
icon-src="/assets/pic3.png"
|
|
112
112
|
icon-alt="Identity Protection icon"
|
|
113
113
|
>
|
|
114
|
-
<bd-p slot="description"
|
|
114
|
+
<bd-p slot="description" variant="small">Goes beyond credit monitoring to protect you against identity theft attacks you might not always recognize.</bd-p>
|
|
115
115
|
<bd-accordion-section no-container>
|
|
116
116
|
<bd-accordion-item title="Continuous Dark Web Monitoring" open>
|
|
117
|
-
<bd-p
|
|
117
|
+
<bd-p variant="small">Get instant alerts if your data appears on the dark web.</bd-p>
|
|
118
118
|
</bd-accordion-item>
|
|
119
119
|
<bd-accordion-item title="Digital Footprint Visualization">
|
|
120
|
-
<bd-p
|
|
120
|
+
<bd-p variant="small">See and reduce your digital exposure online.</bd-p>
|
|
121
121
|
</bd-accordion-item>
|
|
122
122
|
<bd-accordion-item title="Identity Protection Score">
|
|
123
|
-
<bd-p
|
|
123
|
+
<bd-p variant="small">Understand your identity risk at a glance.</bd-p>
|
|
124
124
|
</bd-accordion-item>
|
|
125
125
|
<bd-accordion-item title="Real Time Breach Notifications">
|
|
126
|
-
<bd-p
|
|
126
|
+
<bd-p variant="small">Be first to know when your accounts are compromised.</bd-p>
|
|
127
127
|
</bd-accordion-item>
|
|
128
128
|
<bd-accordion-item title="Credit Report Monitoring">
|
|
129
|
-
<bd-p
|
|
129
|
+
<bd-p variant="small">Track changes to your credit report in real time.</bd-p>
|
|
130
130
|
</bd-accordion-item>
|
|
131
131
|
</bd-accordion-section>
|
|
132
132
|
</bd-feature-col>
|
|
@@ -144,13 +144,13 @@ export const TwoColumns = {
|
|
|
144
144
|
icon-src="/assets/pic1.png"
|
|
145
145
|
icon-alt="Protection icon"
|
|
146
146
|
>
|
|
147
|
-
<bd-p slot="description"
|
|
147
|
+
<bd-p slot="description" variant="small">Protection description.</bd-p>
|
|
148
148
|
<bd-accordion-section no-container>
|
|
149
149
|
<bd-accordion-item title="Real-Time Protection" open>
|
|
150
|
-
<bd-p
|
|
150
|
+
<bd-p variant="small">Content here</bd-p>
|
|
151
151
|
</bd-accordion-item>
|
|
152
152
|
<bd-accordion-item title="Network Threat Prevention">
|
|
153
|
-
<bd-p
|
|
153
|
+
<bd-p variant="small">Content here</bd-p>
|
|
154
154
|
</bd-accordion-item>
|
|
155
155
|
</bd-accordion-section>
|
|
156
156
|
</bd-feature-col>
|
|
@@ -160,13 +160,13 @@ export const TwoColumns = {
|
|
|
160
160
|
icon-src="/assets/pic2.png"
|
|
161
161
|
icon-alt="Privacy icon"
|
|
162
162
|
>
|
|
163
|
-
<bd-p slot="description"
|
|
163
|
+
<bd-p slot="description" variant="small">Privacy description.</bd-p>
|
|
164
164
|
<bd-accordion-section no-container>
|
|
165
165
|
<bd-accordion-item title="VPN Traffic" open>
|
|
166
|
-
<bd-p
|
|
166
|
+
<bd-p variant="small">Content here</bd-p>
|
|
167
167
|
</bd-accordion-item>
|
|
168
168
|
<bd-accordion-item title="Password Manager">
|
|
169
|
-
<bd-p
|
|
169
|
+
<bd-p variant="small">Content here</bd-p>
|
|
170
170
|
</bd-accordion-item>
|
|
171
171
|
</bd-accordion-section>
|
|
172
172
|
</bd-feature-col>
|
|
@@ -184,16 +184,16 @@ export const OneColumn = {
|
|
|
184
184
|
icon-src="/assets/pic1.png"
|
|
185
185
|
icon-alt="Protection icon"
|
|
186
186
|
>
|
|
187
|
-
<bd-p slot="description"
|
|
187
|
+
<bd-p slot="description" variant="small">Single column protection description.</bd-p>
|
|
188
188
|
<bd-accordion-section no-container>
|
|
189
189
|
<bd-accordion-item title="Real-Time Protection" open>
|
|
190
|
-
<bd-p
|
|
190
|
+
<bd-p variant="small">Content here</bd-p>
|
|
191
191
|
</bd-accordion-item>
|
|
192
192
|
<bd-accordion-item title="Network Threat Prevention">
|
|
193
|
-
<bd-p
|
|
193
|
+
<bd-p variant="small">Content here</bd-p>
|
|
194
194
|
</bd-accordion-item>
|
|
195
195
|
<bd-accordion-item title="Advanced Threat Defense">
|
|
196
|
-
<bd-p
|
|
196
|
+
<bd-p variant="small">Content here</bd-p>
|
|
197
197
|
</bd-accordion-item>
|
|
198
198
|
</bd-accordion-section>
|
|
199
199
|
</bd-feature-col>
|
|
@@ -214,10 +214,10 @@ export const MobileView = {
|
|
|
214
214
|
icon-src="/assets/pic1.png"
|
|
215
215
|
icon-alt="Protection icon"
|
|
216
216
|
>
|
|
217
|
-
<bd-p slot="description"
|
|
217
|
+
<bd-p slot="description" variant="small">Protection description.</bd-p>
|
|
218
218
|
<bd-accordion-section no-container>
|
|
219
219
|
<bd-accordion-item title="Real-Time Protection" open>
|
|
220
|
-
<bd-p
|
|
220
|
+
<bd-p variant="small">Content here</bd-p>
|
|
221
221
|
</bd-accordion-item>
|
|
222
222
|
</bd-accordion-section>
|
|
223
223
|
</bd-feature-col>
|
|
@@ -227,10 +227,10 @@ export const MobileView = {
|
|
|
227
227
|
icon-src="/assets/pic2.png"
|
|
228
228
|
icon-alt="Privacy icon"
|
|
229
229
|
>
|
|
230
|
-
<bd-p slot="description"
|
|
230
|
+
<bd-p slot="description" variant="small">Privacy description.</bd-p>
|
|
231
231
|
<bd-accordion-section no-container>
|
|
232
232
|
<bd-accordion-item title="VPN Traffic" open>
|
|
233
|
-
<bd-p
|
|
233
|
+
<bd-p variant="small">Content here</bd-p>
|
|
234
234
|
</bd-accordion-item>
|
|
235
235
|
</bd-accordion-section>
|
|
236
236
|
</bd-feature-col>
|
|
@@ -240,10 +240,10 @@ export const MobileView = {
|
|
|
240
240
|
icon-src="/assets/pic3.png"
|
|
241
241
|
icon-alt="Identity Protection icon"
|
|
242
242
|
>
|
|
243
|
-
<bd-p slot="description"
|
|
243
|
+
<bd-p slot="description" variant="small">Identity description.</bd-p>
|
|
244
244
|
<bd-accordion-section no-container>
|
|
245
245
|
<bd-accordion-item title="Dark Web Monitoring" open>
|
|
246
|
-
<bd-p
|
|
246
|
+
<bd-p variant="small">Content here</bd-p>
|
|
247
247
|
</bd-accordion-item>
|
|
248
248
|
</bd-accordion-section>
|
|
249
249
|
</bd-feature-col>
|
|
@@ -1,12 +1,10 @@
|
|
|
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
|
width: 100%;
|
|
7
|
-
max-width: 1290px;
|
|
8
|
-
margin: 0 auto;
|
|
9
|
-
padding-inline: var(--layout-ensemble-inline-padding, var(--spacing-24));
|
|
10
8
|
box-sizing: border-box;
|
|
11
9
|
}
|
|
12
10
|
|
|
@@ -15,7 +13,9 @@ export default css`
|
|
|
15
13
|
align-items: center;
|
|
16
14
|
gap: var(--spacing-64);
|
|
17
15
|
width: 100%;
|
|
18
|
-
|
|
16
|
+
/* slow, not 350ms: a 50ms difference nobody chose, on a one-shot
|
|
17
|
+
entrance that is not repeated. */
|
|
18
|
+
animation: bd-fade-slide-right var(--transition-duration-slow) var(--transition-easing-ease) forwards;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
.bd-features-tab-left {
|
|
@@ -47,10 +47,21 @@ export default css`
|
|
|
47
47
|
width: 100%;
|
|
48
48
|
max-width: 520px;
|
|
49
49
|
height: auto;
|
|
50
|
-
border-radius: var(--radius-lg
|
|
50
|
+
border-radius: var(--radius-lg);
|
|
51
51
|
display: block;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
/* The entrance is skipped rather than shortened. Its first frame is
|
|
55
|
+
opacity 0 and a 24px offset, so under reduced motion the container simply
|
|
56
|
+
renders where it belongs, fully opaque: it declares no opacity of its own,
|
|
57
|
+
and none is what the keyframes stop supplying. Content is present
|
|
58
|
+
immediately rather than waiting to be revealed. */
|
|
59
|
+
@media (prefers-reduced-motion: reduce) {
|
|
60
|
+
.bd-features-tab-container {
|
|
61
|
+
animation: none;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
54
65
|
@keyframes bd-fade-slide-right {
|
|
55
66
|
from {
|
|
56
67
|
opacity: 0;
|
|
@@ -62,7 +73,7 @@ export default css`
|
|
|
62
73
|
}
|
|
63
74
|
}
|
|
64
75
|
|
|
65
|
-
@media (
|
|
76
|
+
@media ${unsafeCSS(below('lg'))} {
|
|
66
77
|
.bd-features-tab-container {
|
|
67
78
|
flex-direction: column-reverse;
|
|
68
79
|
gap: var(--spacing-32);
|
|
@@ -82,7 +93,7 @@ export default css`
|
|
|
82
93
|
}
|
|
83
94
|
}
|
|
84
95
|
|
|
85
|
-
@media (
|
|
96
|
+
@media ${unsafeCSS(below('sm'))} {
|
|
86
97
|
.bd-features-tab-container {
|
|
87
98
|
gap: var(--spacing-24);
|
|
88
99
|
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { LitElement, html } from "lit";
|
|
2
|
-
|
|
2
|
+
// Installs the design tokens into document scope; see src/tokens/tokens.js
|
|
3
|
+
import "../../tokens/tokens.js";
|
|
3
4
|
import "../button/button.js";
|
|
4
5
|
import "../heading/heading.js";
|
|
5
6
|
import "../paragraph/paragraph.js";
|
|
6
7
|
import "../video-player/video-player.js";
|
|
7
8
|
import featuresTabCSS from "./features-tab.css.js";
|
|
9
|
+
import { ensembleCSS } from "../shared/ensemble.css.js";
|
|
8
10
|
|
|
9
11
|
class BdFeaturesTab extends LitElement {
|
|
10
12
|
static properties = {
|
|
@@ -15,7 +17,7 @@ class BdFeaturesTab extends LitElement {
|
|
|
15
17
|
reverse : { type: Boolean, reflect: true }
|
|
16
18
|
};
|
|
17
19
|
|
|
18
|
-
static styles = [
|
|
20
|
+
static styles = [ensembleCSS, featuresTabCSS];
|
|
19
21
|
|
|
20
22
|
constructor() {
|
|
21
23
|
super();
|
|
@@ -42,10 +44,9 @@ class BdFeaturesTab extends LitElement {
|
|
|
42
44
|
? html`
|
|
43
45
|
<bd-button-link
|
|
44
46
|
href="${this.ctaHref}"
|
|
45
|
-
|
|
47
|
+
variant="${this.ctaKind}"
|
|
46
48
|
size="${this.ctaSize}"
|
|
47
49
|
label="${this.ctaLabel}"
|
|
48
|
-
strong="true"
|
|
49
50
|
>
|
|
50
51
|
${this.ctaLabel}
|
|
51
52
|
</bd-button-link>`
|
|
@@ -62,7 +63,7 @@ class BdFeaturesTab extends LitElement {
|
|
|
62
63
|
`;
|
|
63
64
|
|
|
64
65
|
return html`
|
|
65
|
-
<div class="bd-features-tab-container ${this.reverse ? "bd-features-tab-reverse" : ""}">
|
|
66
|
+
<div class="bd-ensemble bd-features-tab-container ${this.reverse ? "bd-features-tab-reverse" : ""}">
|
|
66
67
|
${this.reverse
|
|
67
68
|
? html`${rightContent}${leftContent}`
|
|
68
69
|
: html`${leftContent}${rightContent}`}
|