@repobit/dex-system-design 0.25.12 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +204 -0
- package/README.md +131 -8
- package/package.json +96 -13
- package/schemas/component-manifest.json +3294 -405
- package/schemas/manifest-omissions.json +173 -0
- package/src/blog/src/breakpoints.js +6 -6
- package/src/blog/src/content/blog-atoms-showcase.js +1 -1
- package/src/blog/src/content/blog-page-layout.js +2 -2
- package/src/blog/src/lib/article-toc.js +7 -7
- package/src/blog/src/shell/blog-shell.js +1 -1
- package/src/blog/src/tokens/blog.js +2 -2
- package/src/blog/src/tokens/core.js +34 -35
- package/src/blog/src/tokens/legacy.js +0 -9
- package/src/blog/tokens/blog.js +2 -2
- package/src/blog/tokens/core.js +34 -35
- package/src/blog/tokens/legacy.js +0 -9
- package/src/blog/tokens.css +36 -46
- package/src/components/accordion/accordion-bg.css.js +83 -59
- package/src/components/accordion/accordion-bg.js +29 -10
- package/src/components/accordion/accordion-bg.stories.js +67 -67
- package/src/components/accordion/accordion-keyboard.js +80 -0
- package/src/components/accordion/accordion.css.js +142 -80
- package/src/components/accordion/accordion.js +37 -10
- package/src/components/accordion/accordion.stories.js +7 -7
- package/src/components/agent-endpoints/agent-endpoints.css.js +36 -39
- package/src/components/agent-endpoints/agent-endpoints.js +30 -20
- package/src/components/agent-endpoints/agent-endpoints.stories.js +1 -1
- package/src/components/ai-guardian-demo.stories.js +91 -91
- package/src/components/alert/alert.css.js +198 -0
- package/src/components/alert/alert.js +103 -0
- package/src/components/alert/alert.stories.js +206 -0
- package/src/components/anchor/anchor-nav.css.js +213 -101
- package/src/components/anchor/anchor-nav.js +26 -40
- package/src/components/anchor/anchor.stories.js +22 -12
- package/src/components/annotation/annotation.css.js +58 -0
- package/src/components/annotation/annotation.js +67 -0
- package/src/components/annotation/annotation.stories.js +63 -0
- package/src/components/architecture.stories.js +285 -0
- package/src/components/atoms.stories.js +342 -0
- package/src/components/avatar/avatar.css.js +67 -0
- package/src/components/avatar/avatar.js +42 -0
- package/src/components/avatar/avatar.stories.js +95 -0
- package/src/components/awards/awards-flex.css.js +209 -23
- package/src/components/awards/awards-flex.js +66 -7
- package/src/components/awards/awards-flex.stories.js +1 -1
- package/src/components/awards/{awards-light.stories.js → awards-summary.stories.js} +54 -64
- package/src/components/awards/awards.css.js +116 -58
- package/src/components/awards/awards.js +102 -28
- package/src/components/awards/awards.stories.js +1 -1
- package/src/components/back/back.css.js +51 -22
- package/src/components/back/back.js +28 -7
- package/src/components/back/back.stories.js +9 -3
- package/src/components/badge/badge.css.js +158 -46
- package/src/components/badge/badge.js +62 -74
- package/src/components/badge/badge.stories.js +176 -248
- package/src/components/bento-grid/bento-grid.css.js +21 -16
- package/src/components/bento-grid/bento-grid.js +16 -4
- package/src/components/bento-grid/bento-grid.stories.js +19 -18
- package/src/components/bento-grid/bento-item.css.js +52 -28
- package/src/components/bento-grid/bento-item.js +2 -2
- package/src/components/blockquote/blockquote.css.js +47 -0
- package/src/components/blockquote/blockquote.js +29 -0
- package/src/components/blockquote/blockquote.stories.js +62 -0
- package/src/components/breadcrumb/breadcrumb.css.js +92 -22
- package/src/components/breadcrumb/breadcrumb.js +56 -11
- package/src/components/button/button.css.js +531 -161
- package/src/components/button/button.js +206 -214
- package/src/components/button/button.stories.js +322 -174
- package/src/components/caption/caption.css.js +21 -0
- package/src/components/caption/caption.js +31 -0
- package/src/components/caption/caption.stories.js +62 -0
- package/src/components/card-features/card-features.css.js +14 -22
- package/src/components/card-features/card-features.js +68 -9
- package/src/components/card-features/card-features.stories.js +11 -11
- package/src/components/cards/card.css.js +60 -81
- package/src/components/cards/card.js +56 -25
- package/src/components/cards/card.stories.js +39 -39
- package/src/components/carousel/carousel.css.js +93 -99
- package/src/components/carousel/carousel.js +32 -4
- package/src/components/checkbox/checkbox.css.js +111 -93
- package/src/components/checkbox/checkbox.js +64 -90
- package/src/components/checkbox/checkbox.stories.js +96 -29
- package/src/components/code/code.css.js +70 -0
- package/src/components/code/code.js +40 -0
- package/src/components/code/code.stories.js +73 -0
- package/src/components/compare/compare.css.js +179 -43
- package/src/components/compare/compare.js +52 -25
- package/src/components/compare/compare.stories.js +61 -4
- package/src/components/comparison-panel/comparison-panel.css.js +38 -51
- package/src/components/comparison-panel/comparison-panel.js +5 -4
- package/src/components/comparison-panel/comparison-panel.stories.js +1 -1
- package/src/components/compatibility-table/compatibility-table.css.js +180 -80
- package/src/components/compatibility-table/compatibility-table.js +37 -9
- package/src/components/control-alignment.stories.js +393 -0
- package/src/components/cta-banner/cta-banner.css.js +41 -13
- package/src/components/cta-banner/cta-banner.js +6 -5
- package/src/components/cta-banner/cta-banner.stories.js +43 -98
- package/src/components/display/display.css.js +25 -1
- package/src/components/display/display.js +46 -13
- package/src/components/display/display.stories.js +270 -40
- package/src/components/divider/divider-horizontal.js +21 -5
- package/src/components/divider/divider-vertical.js +15 -7
- package/src/components/divider/divider.css.js +2 -2
- package/src/components/divider/divider.stories.js +38 -34
- package/src/components/dropdown/dropdown.css.js +93 -126
- package/src/components/dropdown/dropdown.js +114 -34
- package/src/components/dropdown/dropdown.stories.js +56 -24
- package/src/components/features/features.css.js +24 -11
- package/src/components/features/features.js +7 -3
- package/src/components/features/features.stories.js +37 -37
- package/src/components/features-tab/features-tab.css.js +19 -8
- package/src/components/features-tab/features-tab.js +6 -5
- package/src/components/features-tab/features-tab.stories.js +23 -23
- package/src/components/fieldset/fieldset.css.js +30 -0
- package/src/components/fieldset/fieldset.js +28 -0
- package/src/components/fieldset/fieldset.stories.js +84 -0
- package/src/components/footer/footer-links-group.css.js +10 -14
- package/src/components/footer/footer-links-group.js +4 -3
- package/src/components/footer/footer-lp.css.js +59 -30
- package/src/components/footer/footer-lp.js +17 -12
- package/src/components/footer/footer-lp.stories.js +63 -75
- package/src/components/footer/footer-nav-menu.css.js +26 -4
- package/src/components/footer/footer-nav-menu.js +3 -2
- package/src/components/footer/footer.css.js +146 -264
- package/src/components/footer/footer.js +176 -106
- package/src/components/footer/footer.stories.js +9 -9
- package/src/components/footer/localeMap.js +1 -1
- package/src/components/grid/grid.css.js +1 -1
- package/src/components/grid/grid.js +49 -7
- package/src/components/grid/grid.stories.js +111 -0
- package/src/components/header/header-code.css.js +61 -51
- package/src/components/header/header-code.js +28 -14
- package/src/components/header/header-code.stories.js +5 -5
- package/src/components/header/header.css.js +655 -176
- package/src/components/header/header.js +269 -36
- package/src/components/header/header.stories.js +841 -18
- package/src/components/heading/heading.css.js +14 -17
- package/src/components/heading/heading.js +48 -33
- package/src/components/heading/heading.stories.js +27 -25
- package/src/components/help-text/help-text.css.js +21 -0
- package/src/components/help-text/help-text.js +25 -0
- package/src/components/help-text/help-text.stories.js +66 -0
- package/src/components/highlight/highlight.css.js +86 -64
- package/src/components/highlight/highlight.js +18 -27
- package/src/components/highlight/highlight.stories.js +14 -3
- package/src/components/icons/analysis-icon.js +6 -16
- package/src/components/icons/arrow-down-icon.js +6 -19
- package/src/components/icons/arrow-icon.js +44 -0
- package/src/components/icons/arrow-right-icon.js +30 -23
- package/src/components/icons/arrow-up-icon.js +19 -18
- package/src/components/icons/bd-ai-icon.js +1 -1
- package/src/components/icons/brand-marks.stories.js +279 -0
- package/src/components/icons/brand-signature-icon.js +42 -0
- package/src/components/icons/check-icon.js +27 -0
- package/src/components/icons/circle-info-icon.js +33 -0
- package/src/components/icons/close-icon.js +6 -18
- package/src/components/icons/family-icon.js +8 -20
- package/src/components/icons/globe-icon.js +6 -18
- package/src/components/icons/guide-icon.js +6 -18
- package/src/components/icons/icon-element.js +99 -0
- package/src/components/icons/icons.js +36 -0
- package/src/components/icons/icons.stories.js +184 -52
- package/src/components/icons/individual-icon.js +6 -18
- package/src/components/icons/laurel-icon.js +9 -19
- package/src/components/icons/machine-learning-icon.js +6 -17
- package/src/components/icons/marks.js +41 -0
- package/src/components/icons/minus-icon.js +7 -21
- package/src/components/icons/missing-icon.js +52 -0
- package/src/components/icons/plus-icon.js +7 -21
- package/src/components/icons/quote-icon.js +19 -19
- package/src/components/image/image.css.js +72 -25
- package/src/components/image/image.js +11 -6
- package/src/components/image/image.stories.js +2 -2
- package/src/components/input/custom-form.stories.js +214 -62
- package/src/components/input/input-clipboard.css.js +51 -144
- package/src/components/input/input-clipboard.js +31 -15
- package/src/components/input/input.css.js +8 -146
- package/src/components/input/input.js +93 -38
- package/src/components/install-options/install-options.css.js +84 -77
- package/src/components/install-options/install-options.js +33 -30
- package/src/components/install-options/install-options.stories.js +3 -3
- package/src/components/label/label.css.js +35 -0
- package/src/components/label/label.js +38 -0
- package/src/components/label/label.stories.js +82 -0
- package/src/components/light-carousel/light-carousel.css.js +111 -63
- package/src/components/light-carousel/light-carousel.js +85 -11
- package/src/components/light-carousel/light-carousel.stories.js +126 -82
- package/src/components/link/link.css.js +150 -99
- package/src/components/link/link.js +86 -11
- package/src/components/link/link.stories.js +124 -30
- package/src/components/list/list-item/list-item.css.js +74 -22
- package/src/components/list/list-item/list-item.js +32 -10
- package/src/components/list/list-item/list-item.stories.js +23 -23
- package/src/components/list/list.css.js +8 -2
- package/src/components/list/list.js +3 -2
- package/src/components/list/list.stories.js +222 -0
- package/src/components/modal/modal.css.js +114 -24
- package/src/components/modal/modal.js +83 -7
- package/src/components/modal/modal.stories.js +9 -9
- package/src/components/overview/overview.css.js +19 -14
- package/src/components/overview/overview.js +6 -5
- package/src/components/overview/overview.stories.js +10 -10
- package/src/components/page-switcher/page-switcher.css.js +97 -40
- package/src/components/page-switcher/page-switcher.js +28 -5
- package/src/components/page-switcher/page-switcher.stories.js +95 -0
- package/src/components/paragraph/paragraph.css.js +15 -10
- package/src/components/paragraph/paragraph.js +41 -44
- package/src/components/paragraph/paragraph.stories.js +56 -21
- package/src/components/picture/picture.css.js +103 -44
- package/src/components/picture/picture.js +100 -30
- package/src/components/picture/picture.stories.js +1 -1
- package/src/components/pricing-cards/new-pricing-card.js +3 -3
- package/src/components/pricing-cards/new-pricing.css.js +24 -15
- package/src/components/pricing-cards/pricing-card-actions.css.js +1 -1
- package/src/components/pricing-cards/pricing-card-actions.js +3 -4
- package/src/components/pricing-cards/pricing-card-container.css.js +3 -3
- package/src/components/pricing-cards/pricing-card-container.js +3 -2
- package/src/components/pricing-cards/pricing-card-header.css.js +10 -8
- package/src/components/pricing-cards/pricing-card-header.js +6 -7
- package/src/components/pricing-cards/pricing-card-pricing.css.js +16 -9
- package/src/components/pricing-cards/pricing-card-pricing.js +8 -6
- package/src/components/pricing-cards/pricing-card-show-more.css.js +11 -3
- package/src/components/pricing-cards/pricing-card-show-more.js +8 -3
- package/src/components/pricing-cards/pricing-card.css.js +244 -190
- package/src/components/pricing-cards/pricing-card.js +54 -70
- package/src/components/pricing-cards/pricing-feature-item.css.js +25 -8
- package/src/components/pricing-cards/pricing-feature-item.js +8 -3
- package/src/components/process-steps/process-steps.css.js +26 -14
- package/src/components/process-steps/process-steps.js +23 -6
- package/src/components/process-steps/process-steps.stories.js +1 -1
- package/src/components/progress/progress.css.js +80 -0
- package/src/components/progress/progress.js +42 -0
- package/src/components/progress/progress.stories.js +79 -0
- package/src/components/quick-answer/quick-answer.css.js +75 -13
- package/src/components/quick-answer/quick-answer.js +8 -3
- package/src/components/radio/radio.css.js +92 -128
- package/src/components/radio/radio.js +106 -127
- package/src/components/radio/radio.stories.js +54 -19
- package/src/components/review/review-grid.css.js +5 -6
- package/src/components/review/review-grid.js +14 -11
- package/src/components/review/review.css.js +11 -6
- package/src/components/review/review.js +3 -8
- package/src/components/shared/ensemble.css.js +93 -0
- package/src/components/shared/form-field.css.js +206 -0
- package/src/components/shared/prop-vocabulary.js +48 -0
- package/src/components/shared/token-scales.js +306 -0
- package/src/components/skeleton/skeleton.css.js +34 -0
- package/src/components/skeleton/skeleton.js +32 -0
- package/src/components/skeleton/skeleton.stories.js +70 -0
- package/src/components/spinner/spinner.css.js +62 -0
- package/src/components/spinner/spinner.js +38 -0
- package/src/components/spinner/spinner.stories.js +92 -0
- package/src/components/spotlight-section/spotlight-section.css.js +14 -13
- package/src/components/spotlight-section/spotlight-section.js +42 -39
- package/src/components/switch/switch.css.js +103 -0
- package/src/components/switch/switch.js +44 -0
- package/src/components/switch/switch.stories.js +86 -0
- package/src/components/tab-list/content-switcher.stories.js +189 -0
- package/src/components/tab-list/tab-list.css.js +250 -0
- package/src/components/tab-list/tab-list.js +184 -0
- package/src/components/tab-list/tab-list.stories.js +221 -0
- package/src/components/tabs/tabs.css.js +14 -123
- package/src/components/tabs/tabs.js +16 -19
- package/src/components/tabs/tabs.stories.js +95 -95
- package/src/components/tag/tag.css.js +54 -0
- package/src/components/tag/tag.js +32 -0
- package/src/components/tag/tag.stories.js +126 -0
- package/src/components/terminal/terminal-message.css.js +164 -60
- package/src/components/terminal/terminal-message.js +5 -5
- package/src/components/terminal/terminal-message.stories.js +70 -1
- package/src/components/termsOfUse/terms.css.js +25 -20
- package/src/components/termsOfUse/terms.js +13 -9
- package/src/components/termsOfUse/terms.stories.js +1 -1
- package/src/components/textarea/textarea.css.js +51 -0
- package/src/components/textarea/textarea.js +136 -0
- package/src/components/textarea/textarea.stories.js +191 -0
- package/src/components/tooltip/tooltip.css.js +75 -0
- package/src/components/tooltip/tooltip.js +156 -0
- package/src/components/tooltip/tooltip.stories.js +161 -0
- package/src/components/trust-panel/trust-panel.css.js +85 -33
- package/src/components/trust-panel/trust-panel.js +18 -10
- package/src/components/trust-panel/trust-panel.stories.js +1 -1
- package/src/components/ultimate-security-demo.stories.js +431 -0
- package/src/components/video/video.css.js +17 -0
- package/src/components/video/video.js +40 -0
- package/src/components/video/video.stories.js +106 -0
- package/src/components/video-player/video-player.css.js +67 -11
- package/src/components/video-player/video-player.js +35 -4
- package/src/components/video-player/video-player.stories.js +1 -1
- package/src/components/visual-alignment.stories.js +411 -0
- package/src/components/visually-hidden/visually-hidden.css.js +24 -0
- package/src/components/visually-hidden/visually-hidden.js +16 -0
- package/src/components/visually-hidden/visually-hidden.stories.js +56 -0
- package/src/stories/Button.stories.js +17 -17
- package/src/stories/Header.stories.js +10 -10
- package/src/stories/Page.js +1 -1
- package/src/stories/Page.stories.js +6 -6
- package/src/tokens/borders.stories.js +339 -0
- package/src/tokens/color-responsibilities.stories.js +227 -0
- package/src/tokens/dark-derivation.js +309 -0
- package/src/tokens/dark-findings.js +197 -0
- package/src/tokens/dark-mode.stories.js +207 -0
- package/src/tokens/dimension.stories.js +251 -0
- package/src/tokens/elevation.stories.js +143 -0
- package/src/tokens/focus.stories.js +276 -0
- package/src/tokens/fonts.css +20 -20
- package/src/tokens/fonts.stories.js +354 -374
- package/src/tokens/layout.css +25 -11
- package/src/tokens/motion.stories.js +231 -0
- package/src/tokens/shape.stories.js +272 -0
- package/src/tokens/spacing-rhythm.stories.js +359 -0
- package/src/tokens/spacing.stories.js +208 -703
- package/src/tokens/story-chrome.js +503 -0
- package/src/tokens/surfaces.stories.js +224 -0
- package/src/tokens/text-on-surface.stories.js +164 -0
- package/src/tokens/token-map.js +220 -0
- package/src/tokens/token-map.stories.js +257 -0
- package/src/tokens/token-purposes.js +266 -0
- package/src/tokens/tokens-grid.stories.js +388 -900
- package/src/tokens/tokens.css +1633 -1045
- package/src/tokens/tokens.js +1130 -492
- package/src/tokens/tokens.stories.js +137 -47
- package/src/tokens/type-ceiling-words.js +299 -0
- package/src/tokens/typography.stories.js +1003 -965
- package/src/tokens/vertical-rhythm.stories.js +224 -0
- package/src/components/awards/awards-icon.js +0 -56
- package/src/components/awards/awards-light.js +0 -240
- package/src/components/banner/banner.js +0 -60
- package/src/components/banner/banner.stories.js +0 -51
- package/src/components/button/icons.js +0 -24
- package/src/components/input/index.js +0 -0
- package/src/components/light-carousel/light-carousel-simple.css.js +0 -183
- package/src/components/light-carousel/light-carousel-simple.js +0 -74
- package/src/tokens/colors.js +0 -121
- package/src/tokens/typography.css.js +0 -207
- package/src/tokens/typography.js +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { css } from "lit";
|
|
1
|
+
import { css, unsafeCSS } from "lit";
|
|
2
|
+
import { below } from "../shared/token-scales.js";
|
|
2
3
|
|
|
3
4
|
export default css`
|
|
4
5
|
:host {
|
|
@@ -7,31 +8,25 @@ export default css`
|
|
|
7
8
|
}
|
|
8
9
|
|
|
9
10
|
.bd-installoptions-container {
|
|
10
|
-
background: var(--
|
|
11
|
-
|
|
11
|
+
background: var(--status-brand-surface);
|
|
12
|
+
/* the band is full-bleed; the column inside it is bd-ensemble */
|
|
13
|
+
padding-block: var(--spacing-64);
|
|
12
14
|
box-sizing: border-box;
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
.bd-installoptions-eyebrow {
|
|
16
|
-
color: var(--color-
|
|
17
|
-
font-weight: var(--typography-fontWeight-medium);
|
|
18
|
+
color: var(--color-text-brand);
|
|
18
19
|
margin: 0 0 var(--spacing-24);
|
|
19
|
-
max-width: var(--layout-ensemble-max-width, 1200px);
|
|
20
|
-
margin-inline: auto;
|
|
21
20
|
}
|
|
22
21
|
|
|
23
22
|
.bd-installoptions-title {
|
|
24
23
|
margin: 0 0 var(--spacing-16);
|
|
25
|
-
color: var(--color-
|
|
26
|
-
line-height: var(--typography-lineHeight-tight);
|
|
27
|
-
max-width: var(--layout-ensemble-max-width, 1200px);
|
|
28
|
-
margin-inline: auto;
|
|
24
|
+
color: var(--color-text-primary);
|
|
29
25
|
}
|
|
30
26
|
|
|
31
27
|
.bd-installoptions-description {
|
|
32
|
-
color: var(--color-
|
|
33
|
-
max-width:
|
|
34
|
-
// padding: var(--spacing-48) var(--layout-ensemble-inline-padding, var(--spacing-24))
|
|
28
|
+
color: var(--color-text-secondary);
|
|
29
|
+
max-width: var(--content-width-readable);
|
|
35
30
|
}
|
|
36
31
|
|
|
37
32
|
.bd-installoptions-worksin {
|
|
@@ -39,20 +34,13 @@ export default css`
|
|
|
39
34
|
align-items: center;
|
|
40
35
|
flex-wrap: wrap;
|
|
41
36
|
gap: var(--spacing-16);
|
|
42
|
-
|
|
43
|
-
margin: 0 auto var(--spacing-40);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/* Slot generic pentru orice continut in afara grid-ului fix de carduri */
|
|
47
|
-
.bd-installoptions-body {
|
|
48
|
-
max-width: var(--layout-ensemble-max-width, 1200px);
|
|
49
|
-
margin: 0 auto;
|
|
37
|
+
margin: 0 0 var(--spacing-40);
|
|
50
38
|
}
|
|
51
39
|
|
|
52
40
|
.bd-installoptions-worksin-label {
|
|
53
|
-
color: var(--color-
|
|
54
|
-
font-family: var(--typography-fontFamily-mono
|
|
55
|
-
font-size: var(--typography-fontSize
|
|
41
|
+
color: var(--color-text-subtle);
|
|
42
|
+
font-family: var(--typography-fontFamily-mono);
|
|
43
|
+
font-size: var(--typography-body-xsmall-fontSize);
|
|
56
44
|
text-transform: uppercase;
|
|
57
45
|
letter-spacing: 0.06em;
|
|
58
46
|
flex-shrink: 0;
|
|
@@ -69,12 +57,15 @@ export default css`
|
|
|
69
57
|
align-items: center;
|
|
70
58
|
gap: var(--spacing-8);
|
|
71
59
|
padding: var(--spacing-8) var(--spacing-16);
|
|
72
|
-
background: var(--color-
|
|
73
|
-
border: var(--border-width-1) solid var(--color-
|
|
60
|
+
background: var(--color-surface-default);
|
|
61
|
+
border: var(--border-width-1) solid var(--color-border-subtle);
|
|
74
62
|
border-radius: var(--radius-full);
|
|
75
|
-
font-
|
|
76
|
-
font-
|
|
77
|
-
|
|
63
|
+
font-family: var(--typography-label-default-fontFamily);
|
|
64
|
+
font-size: var(--typography-label-default-fontSize);
|
|
65
|
+
font-weight: var(--typography-label-default-fontWeight);
|
|
66
|
+
line-height: var(--typography-label-default-lineHeight);
|
|
67
|
+
letter-spacing: var(--typography-label-default-letterSpacing);
|
|
68
|
+
color: var(--color-text-primary);
|
|
78
69
|
}
|
|
79
70
|
|
|
80
71
|
/*
|
|
@@ -87,11 +78,14 @@ export default css`
|
|
|
87
78
|
display: inline-flex;
|
|
88
79
|
align-items: center;
|
|
89
80
|
justify-content: center;
|
|
90
|
-
width:
|
|
91
|
-
height:
|
|
81
|
+
width: var(--dimension-20);
|
|
82
|
+
height: var(--dimension-20);
|
|
92
83
|
border-radius: var(--radius-md);
|
|
93
|
-
color: var(--color-
|
|
84
|
+
color: var(--color-text-inverse);
|
|
85
|
+
/* no role: a glyph, not text -- an initial standing in for a brand mark
|
|
86
|
+
until the real logos exist (see above). */
|
|
94
87
|
font-size: var(--typography-fontSize-xxs);
|
|
88
|
+
/* no role: the weight of the same glyph. */
|
|
95
89
|
font-weight: var(--typography-fontWeight-bold);
|
|
96
90
|
flex-shrink: 0;
|
|
97
91
|
}
|
|
@@ -100,13 +94,11 @@ export default css`
|
|
|
100
94
|
display: grid;
|
|
101
95
|
grid-template-columns: repeat(3, 1fr);
|
|
102
96
|
gap: var(--spacing-24);
|
|
103
|
-
max-width: var(--layout-ensemble-max-width, 1200px);
|
|
104
|
-
margin-inline: auto;
|
|
105
97
|
}
|
|
106
98
|
|
|
107
99
|
.bd-installoptions-card {
|
|
108
|
-
background: var(--color-
|
|
109
|
-
border: var(--border-width-1) solid var(--color-
|
|
100
|
+
background: var(--color-surface-default);
|
|
101
|
+
border: var(--border-width-1) solid var(--color-border-container);
|
|
110
102
|
border-radius: var(--radius-xl);
|
|
111
103
|
padding: var(--spacing-24);
|
|
112
104
|
box-sizing: border-box;
|
|
@@ -124,31 +116,33 @@ export default css`
|
|
|
124
116
|
|
|
125
117
|
.bd-installoptions-card-title {
|
|
126
118
|
margin: 0;
|
|
127
|
-
color: var(--color-
|
|
119
|
+
color: var(--color-text-primary);
|
|
128
120
|
}
|
|
129
121
|
|
|
130
122
|
.bd-installoptions-badge {
|
|
131
123
|
flex-shrink: 0;
|
|
132
124
|
padding: var(--spacing-4) var(--spacing-8);
|
|
133
|
-
background: var(--
|
|
134
|
-
color: var(--
|
|
125
|
+
background: var(--status-brand-surface);
|
|
126
|
+
color: var(--status-brand-text);
|
|
135
127
|
border-radius: var(--radius-md);
|
|
136
|
-
font-
|
|
137
|
-
font-
|
|
128
|
+
font-family: var(--typography-label-extra-small-fontFamily);
|
|
129
|
+
font-size: var(--typography-label-extra-small-fontSize);
|
|
130
|
+
font-weight: var(--typography-label-extra-small-fontWeight);
|
|
131
|
+
line-height: var(--typography-label-extra-small-lineHeight);
|
|
132
|
+
letter-spacing: var(--typography-label-extra-small-letterSpacing);
|
|
138
133
|
text-transform: uppercase;
|
|
139
|
-
letter-spacing: 0.04em;
|
|
140
134
|
white-space: nowrap;
|
|
141
135
|
}
|
|
142
136
|
|
|
143
137
|
.bd-installoptions-card-description {
|
|
144
|
-
color: var(--color-
|
|
138
|
+
color: var(--color-text-muted);
|
|
145
139
|
margin: 0;
|
|
146
140
|
flex-grow: 1;
|
|
147
141
|
}
|
|
148
142
|
|
|
149
143
|
.bd-installoptions-code {
|
|
150
144
|
position: relative;
|
|
151
|
-
background: var(--color-
|
|
145
|
+
background: var(--color-surface-inverse);
|
|
152
146
|
border-radius: var(--radius-md);
|
|
153
147
|
padding: var(--spacing-16);
|
|
154
148
|
box-sizing: border-box;
|
|
@@ -156,9 +150,12 @@ export default css`
|
|
|
156
150
|
|
|
157
151
|
.bd-installoptions-code-text {
|
|
158
152
|
margin: 0;
|
|
159
|
-
color: var(--color-
|
|
160
|
-
font-family: var(--typography-fontFamily
|
|
161
|
-
font-size: var(--typography-fontSize
|
|
153
|
+
color: var(--color-text-inverse);
|
|
154
|
+
font-family: var(--typography-code-block-fontFamily);
|
|
155
|
+
font-size: var(--typography-code-block-fontSize);
|
|
156
|
+
font-weight: var(--typography-code-block-fontWeight);
|
|
157
|
+
line-height: var(--typography-code-block-lineHeight);
|
|
158
|
+
letter-spacing: var(--typography-code-block-letterSpacing);
|
|
162
159
|
white-space: pre-wrap;
|
|
163
160
|
word-break: break-word;
|
|
164
161
|
padding-right: var(--spacing-56);
|
|
@@ -169,19 +166,25 @@ export default css`
|
|
|
169
166
|
top: var(--spacing-12);
|
|
170
167
|
right: var(--spacing-12);
|
|
171
168
|
padding: var(--spacing-4) var(--spacing-10);
|
|
172
|
-
|
|
173
|
-
|
|
169
|
+
/* no role: a control fill on an inverse ground -- the vocabulary gap
|
|
170
|
+
button.css.js's SURFACE block records. Mixed from the inverse ink so
|
|
171
|
+
it follows the code block if the ground ever flips. */
|
|
172
|
+
background: color-mix(in srgb, var(--color-text-inverse) 12%, transparent);
|
|
173
|
+
color: var(--color-text-inverse);
|
|
174
174
|
border: none;
|
|
175
175
|
border-radius: var(--radius-sm);
|
|
176
|
-
font-family: var(--typography-fontFamily
|
|
177
|
-
font-size: var(--typography-fontSize
|
|
178
|
-
font-weight: var(--typography-fontWeight
|
|
176
|
+
font-family: var(--typography-control-label-small-fontFamily);
|
|
177
|
+
font-size: var(--typography-control-label-small-fontSize);
|
|
178
|
+
font-weight: var(--typography-control-label-small-fontWeight);
|
|
179
|
+
line-height: var(--typography-control-label-small-lineHeight);
|
|
180
|
+
letter-spacing: var(--typography-control-label-small-letterSpacing);
|
|
179
181
|
cursor: pointer;
|
|
180
182
|
transition: background var(--transition-duration-fast) var(--transition-easing-smooth);
|
|
181
183
|
}
|
|
182
184
|
|
|
183
185
|
.bd-installoptions-copy:hover {
|
|
184
|
-
|
|
186
|
+
/* no role: as the resting fill above, one step stronger. */
|
|
187
|
+
background: color-mix(in srgb, var(--color-text-inverse) 20%, transparent);
|
|
185
188
|
}
|
|
186
189
|
|
|
187
190
|
.bd-installoptions-copy:focus-visible {
|
|
@@ -190,34 +193,31 @@ export default css`
|
|
|
190
193
|
}
|
|
191
194
|
|
|
192
195
|
.bd-installoptions-card-link {
|
|
193
|
-
font-weight: var(--typography-fontWeight-semibold);
|
|
194
196
|
margin-top: auto;
|
|
195
197
|
}
|
|
196
198
|
|
|
197
199
|
/* === "Then just ask" prompt panel (prompt-panel attribute) === */
|
|
198
200
|
|
|
199
201
|
.bd-installoptions-promptpanel {
|
|
200
|
-
|
|
201
|
-
margin: var(--spacing-64) auto 0;
|
|
202
|
+
margin: var(--spacing-64) 0 0;
|
|
202
203
|
}
|
|
203
204
|
|
|
204
205
|
.bd-installoptions-prompt-title {
|
|
205
206
|
margin: 0 0 var(--spacing-16);
|
|
206
|
-
color: var(--color-
|
|
207
|
-
line-height: var(--typography-lineHeight-tight);
|
|
207
|
+
color: var(--color-text-primary);
|
|
208
208
|
}
|
|
209
209
|
|
|
210
210
|
.bd-installoptions-prompt-description {
|
|
211
|
-
color: var(--color-
|
|
212
|
-
max-width:
|
|
211
|
+
color: var(--color-text-secondary);
|
|
212
|
+
max-width: var(--content-width-readable);
|
|
213
213
|
margin: 0 0 var(--spacing-24);
|
|
214
214
|
}
|
|
215
215
|
|
|
216
216
|
.bd-installoptions-prompt-label {
|
|
217
217
|
display: block;
|
|
218
|
-
color: var(--color-
|
|
219
|
-
font-family: var(--typography-fontFamily-mono
|
|
220
|
-
font-size: var(--typography-fontSize
|
|
218
|
+
color: var(--color-text-subtle);
|
|
219
|
+
font-family: var(--typography-fontFamily-mono);
|
|
220
|
+
font-size: var(--typography-body-xsmall-fontSize);
|
|
221
221
|
text-transform: uppercase;
|
|
222
222
|
letter-spacing: 0.06em;
|
|
223
223
|
margin-bottom: var(--spacing-8);
|
|
@@ -225,8 +225,8 @@ export default css`
|
|
|
225
225
|
|
|
226
226
|
.bd-installoptions-prompt-code {
|
|
227
227
|
position: relative;
|
|
228
|
-
background: var(--color-
|
|
229
|
-
border: var(--border-width-2) solid var(--color-
|
|
228
|
+
background: var(--color-surface-inverse);
|
|
229
|
+
border: var(--border-width-2) solid var(--color-border-brand);
|
|
230
230
|
border-radius: var(--radius-md);
|
|
231
231
|
padding: var(--spacing-16);
|
|
232
232
|
padding-right: var(--spacing-64);
|
|
@@ -235,10 +235,12 @@ export default css`
|
|
|
235
235
|
}
|
|
236
236
|
|
|
237
237
|
.bd-installoptions-prompt-code-text {
|
|
238
|
-
color: var(--color-
|
|
239
|
-
font-family: var(--typography-fontFamily
|
|
240
|
-
font-size: var(--typography-fontSize
|
|
241
|
-
|
|
238
|
+
color: var(--color-text-inverse);
|
|
239
|
+
font-family: var(--typography-code-block-fontFamily);
|
|
240
|
+
font-size: var(--typography-code-block-fontSize);
|
|
241
|
+
font-weight: var(--typography-code-block-fontWeight);
|
|
242
|
+
line-height: var(--typography-code-block-lineHeight);
|
|
243
|
+
letter-spacing: var(--typography-code-block-letterSpacing);
|
|
242
244
|
}
|
|
243
245
|
|
|
244
246
|
.bd-installoptions-prompt-code-text ::slotted(*) {
|
|
@@ -253,13 +255,16 @@ export default css`
|
|
|
253
255
|
}
|
|
254
256
|
|
|
255
257
|
.bd-installoptions-prompt-note {
|
|
256
|
-
background: var(--
|
|
257
|
-
border: var(--border-width-1) solid var(--
|
|
258
|
+
background: var(--status-warning-surface);
|
|
259
|
+
border: var(--border-width-1) solid var(--status-warning-border);
|
|
258
260
|
border-radius: var(--radius-md);
|
|
259
261
|
padding: var(--spacing-16) var(--spacing-20);
|
|
260
|
-
color: var(--
|
|
261
|
-
font-
|
|
262
|
-
|
|
262
|
+
color: var(--status-warning-text);
|
|
263
|
+
font-family: var(--typography-body-small-fontFamily);
|
|
264
|
+
font-size: var(--typography-body-small-fontSize);
|
|
265
|
+
font-weight: var(--typography-body-small-fontWeight);
|
|
266
|
+
line-height: var(--typography-body-small-lineHeight);
|
|
267
|
+
letter-spacing: var(--typography-body-small-letterSpacing);
|
|
263
268
|
margin-bottom: var(--spacing-24);
|
|
264
269
|
}
|
|
265
270
|
|
|
@@ -270,11 +275,13 @@ export default css`
|
|
|
270
275
|
}
|
|
271
276
|
|
|
272
277
|
.bd-installoptions-prompt-footer {
|
|
273
|
-
color: var(--color-
|
|
278
|
+
color: var(--color-text-muted);
|
|
274
279
|
margin: 0;
|
|
275
280
|
}
|
|
276
281
|
|
|
277
|
-
|
|
282
|
+
/* below lg, not the 899px main shipped: three cards with code blocks need
|
|
283
|
+
the room, so they stack across 900-991 as well. */
|
|
284
|
+
@media ${unsafeCSS(below('lg'))} {
|
|
278
285
|
.bd-installoptions-grid {
|
|
279
286
|
grid-template-columns: 1fr;
|
|
280
287
|
}
|
|
@@ -4,6 +4,7 @@ import "../heading/heading.js";
|
|
|
4
4
|
import "../link/link.js";
|
|
5
5
|
import "../paragraph/paragraph.js";
|
|
6
6
|
import installOptionsCSS from "./install-options.css.js";
|
|
7
|
+
import { ensembleCSS } from "../shared/ensemble.css.js";
|
|
7
8
|
|
|
8
9
|
class BdInstallOptions extends LitElement {
|
|
9
10
|
static properties = {
|
|
@@ -19,7 +20,7 @@ class BdInstallOptions extends LitElement {
|
|
|
19
20
|
promptLabel: { type: String, attribute: "prompt-label" } // small mono label above the prompt block
|
|
20
21
|
};
|
|
21
22
|
|
|
22
|
-
static styles = [tokens, installOptionsCSS];
|
|
23
|
+
static styles = [tokens, ensembleCSS, installOptionsCSS];
|
|
23
24
|
|
|
24
25
|
constructor() {
|
|
25
26
|
super();
|
|
@@ -126,7 +127,7 @@ class BdInstallOptions extends LitElement {
|
|
|
126
127
|
<slot name="prompt-title"></slot>
|
|
127
128
|
</bd-h>
|
|
128
129
|
|
|
129
|
-
<bd-p
|
|
130
|
+
<bd-p variant="regular" class="bd-installoptions-prompt-description">
|
|
130
131
|
<slot name="prompt-description"></slot>
|
|
131
132
|
</bd-p>
|
|
132
133
|
|
|
@@ -149,7 +150,7 @@ class BdInstallOptions extends LitElement {
|
|
|
149
150
|
<slot name="prompt-note"></slot>
|
|
150
151
|
</div>
|
|
151
152
|
|
|
152
|
-
<bd-p
|
|
153
|
+
<bd-p variant="regular" class="bd-installoptions-prompt-footer">
|
|
153
154
|
<slot name="prompt-footer"></slot>
|
|
154
155
|
</bd-p>
|
|
155
156
|
</div>
|
|
@@ -159,38 +160,40 @@ class BdInstallOptions extends LitElement {
|
|
|
159
160
|
render() {
|
|
160
161
|
return html`
|
|
161
162
|
<div class="bd-installoptions-container">
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
163
|
+
<div class="bd-ensemble">
|
|
164
|
+
${this.eyebrow
|
|
165
|
+
? html`<bd-p variant="regular" class="bd-installoptions-eyebrow">${this.eyebrow}</bd-p>`
|
|
166
|
+
: nothing}
|
|
165
167
|
|
|
166
|
-
|
|
168
|
+
<bd-h as="h2" class="bd-installoptions-title">${this.title}</bd-h>
|
|
167
169
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
170
|
+
${this.description
|
|
171
|
+
? html`<bd-p variant="regular" class="bd-installoptions-description">${this.description}</bd-p>`
|
|
172
|
+
: nothing}
|
|
171
173
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
174
|
+
${this._renderWorksIn()}
|
|
175
|
+
|
|
176
|
+
<!--
|
|
177
|
+
Slot generic (fara nume) -- pentru orice continut care nu se
|
|
178
|
+
potriveste cu grid-ul fix de carduri (ex: un tabel, o casuta
|
|
179
|
+
checklist, o nota de avertizare). Cardurile ramase implicite
|
|
180
|
+
(this.cards) tot se randeaza mai jos daca sunt pasate; cele doua
|
|
181
|
+
pot coexista sau poti folosi doar unul din ele.
|
|
182
|
+
-->
|
|
183
|
+
<div class="bd-installoptions-body">
|
|
184
|
+
<slot></slot>
|
|
185
|
+
</div>
|
|
184
186
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
187
|
+
${this.cards.length
|
|
188
|
+
? html`
|
|
189
|
+
<div class="bd-installoptions-grid">
|
|
190
|
+
${this.cards.map((card) => this._renderCard(card))}
|
|
191
|
+
</div>
|
|
192
|
+
`
|
|
193
|
+
: nothing}
|
|
192
194
|
|
|
193
|
-
|
|
195
|
+
${this._renderPromptPanel()}
|
|
196
|
+
</div>
|
|
194
197
|
</div>
|
|
195
198
|
`;
|
|
196
199
|
}
|
|
@@ -188,17 +188,17 @@ export const GenericSlotContent = {
|
|
|
188
188
|
<bd-h as="h3" style="margin: 0 0 16px;">The contract the agent is held to</bd-h>
|
|
189
189
|
<ul style="list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 16px;">
|
|
190
190
|
<li style="display: flex; align-items: flex-start; gap: 12px;">
|
|
191
|
-
<span aria-hidden="true" style="flex-shrink: 0; width: 20px; height: 20px; border-radius: 999px; background: var(--color-green-600
|
|
191
|
+
<span aria-hidden="true" style="flex-shrink: 0; width: 20px; height: 20px; border-radius: 999px; background: var(--color-green-600); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; margin-top: 2px;">✓</span>
|
|
192
192
|
<bd-p kind="regular" style="margin:0;">Scan mode is the default: a casual request never uploads your files.</bd-p>
|
|
193
193
|
</li>
|
|
194
194
|
<li style="display: flex; align-items: flex-start; gap: 12px;">
|
|
195
|
-
<span aria-hidden="true" style="flex-shrink: 0; width: 20px; height: 20px; border-radius: 999px; background: var(--color-green-600
|
|
195
|
+
<span aria-hidden="true" style="flex-shrink: 0; width: 20px; height: 20px; border-radius: 999px; background: var(--color-green-600); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; margin-top: 2px;">✓</span>
|
|
196
196
|
<bd-p kind="regular" style="margin:0;">Submit is opt-in only: the agent won't upload the full archive unless you explicitly ask.</bd-p>
|
|
197
197
|
</li>
|
|
198
198
|
</ul>
|
|
199
199
|
</div>
|
|
200
200
|
|
|
201
|
-
<div style="background: var(--color-yellow-50
|
|
201
|
+
<div style="background: var(--color-yellow-50); border: 1px solid var(--color-yellow-300); border-radius: var(--radius-md); padding: 16px 20px; color: var(--color-yellow-800); margin-top: 24px;">
|
|
202
202
|
<bd-p kind="small" style="margin:0;">A scan that returns no findings means no known threat patterns were detected — not that the skill is safe.</bd-p>
|
|
203
203
|
</div>
|
|
204
204
|
</bd-install-options>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
|
|
3
|
+
/** Styled entirely from design tokens — see npm run lint:tokens. */
|
|
4
|
+
export const labelCSS = css`
|
|
5
|
+
:host { display: block; }
|
|
6
|
+
|
|
7
|
+
label {
|
|
8
|
+
display: block;
|
|
9
|
+
font-family: var(--form-label-default-fontFamily);
|
|
10
|
+
font-size: var(--form-label-default-fontSize);
|
|
11
|
+
font-weight: var(--form-label-default-fontWeight);
|
|
12
|
+
line-height: var(--form-label-default-lineHeight);
|
|
13
|
+
letter-spacing: var(--form-label-default-letterSpacing);
|
|
14
|
+
color: var(--form-label-default-color);
|
|
15
|
+
margin-bottom: var(--form-label-default-marginBottom);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
:host([size='sm']) label {
|
|
19
|
+
font-size: var(--form-label-small-fontSize);
|
|
20
|
+
letter-spacing: var(--form-label-small-letterSpacing);
|
|
21
|
+
margin-bottom: var(--form-label-small-marginBottom);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
:host([size='lg']) label {
|
|
25
|
+
font-size: var(--form-label-large-fontSize);
|
|
26
|
+
margin-bottom: var(--form-label-large-marginBottom);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.required {
|
|
30
|
+
color: var(--form-label-required-color);
|
|
31
|
+
margin-left: var(--form-label-required-marginLeft);
|
|
32
|
+
}
|
|
33
|
+
`;
|
|
34
|
+
|
|
35
|
+
export default labelCSS;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { LitElement, html, nothing } from 'lit';
|
|
2
|
+
// Installs the design tokens into document scope; see src/tokens/tokens.js
|
|
3
|
+
import '../../tokens/tokens.js';
|
|
4
|
+
import { labelCSS } from './label.css.js';
|
|
5
|
+
import { resolveSize } from '../shared/prop-vocabulary.js';
|
|
6
|
+
|
|
7
|
+
export class BdLabel extends LitElement {
|
|
8
|
+
static styles = [labelCSS];
|
|
9
|
+
|
|
10
|
+
static properties = {
|
|
11
|
+
size : { type: String, reflect: true },
|
|
12
|
+
for : { type: String },
|
|
13
|
+
required: { type: Boolean, reflect: true }
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
constructor() {
|
|
17
|
+
super();
|
|
18
|
+
this.size = 'md';
|
|
19
|
+
this.required = false;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
willUpdate(changed) {
|
|
23
|
+
// small / default / large still resolve; see shared/prop-vocabulary.js
|
|
24
|
+
if (changed.has('size')) this.size = resolveSize(this.size, 'md');
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
render() {
|
|
28
|
+
return html`
|
|
29
|
+
<label for=${this.for || nothing}>
|
|
30
|
+
<slot></slot>${this.required
|
|
31
|
+
? html`<span class="required" aria-hidden="true">*</span>`
|
|
32
|
+
: nothing}
|
|
33
|
+
</label>
|
|
34
|
+
`;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
customElements.define('bd-label', BdLabel);
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { html } from 'lit';
|
|
2
|
+
import './label.js';
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
title : 'Atoms/Label',
|
|
6
|
+
tags : ['autodocs'],
|
|
7
|
+
parameters: {
|
|
8
|
+
docs: {
|
|
9
|
+
description: {
|
|
10
|
+
component: `
|
|
11
|
+
**BdLabel** is the caption for a form control, with an optional required
|
|
12
|
+
marker.
|
|
13
|
+
|
|
14
|
+
### Usage
|
|
15
|
+
\`\`\`html
|
|
16
|
+
<bd-label>Email address</bd-label>
|
|
17
|
+
<bd-label required>Email address</bd-label>
|
|
18
|
+
<bd-label size="sm">Postcode</bd-label>
|
|
19
|
+
\`\`\`
|
|
20
|
+
|
|
21
|
+
### Props
|
|
22
|
+
| Prop | Values | Default |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| \`size\` | \`small\`, \`default\`, \`large\` | \`default\` |
|
|
25
|
+
| \`required\` | boolean — appends a \`*\` marker | \`false\` |
|
|
26
|
+
| \`for\` | id of the control being labelled | \`''\` |
|
|
27
|
+
|
|
28
|
+
### \`for\` does not cross the shadow boundary
|
|
29
|
+
The \`for\` attribute is applied to a \`<label>\` inside this element's shadow
|
|
30
|
+
root, and a \`for\` reference can only resolve within the same tree. **It will
|
|
31
|
+
not associate with an \`<input id="…">\` in your page.**
|
|
32
|
+
|
|
33
|
+
Until that is addressed, associate the control by nesting or by
|
|
34
|
+
\`aria-labelledby\`:
|
|
35
|
+
|
|
36
|
+
\`\`\`html
|
|
37
|
+
<bd-label id="email-label">Email address</bd-label>
|
|
38
|
+
<input aria-labelledby="email-label">
|
|
39
|
+
\`\`\`
|
|
40
|
+
|
|
41
|
+
### The required marker is decorative
|
|
42
|
+
The \`*\` carries \`aria-hidden="true"\`, so it is not announced. That is correct
|
|
43
|
+
only if the control itself is marked \`required\` or \`aria-required\` — a screen
|
|
44
|
+
reader user learns the field is required from the input, never from this label.
|
|
45
|
+
Set both.
|
|
46
|
+
`
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
argTypes: {
|
|
51
|
+
size: {
|
|
52
|
+
control : { type: 'select' },
|
|
53
|
+
options : ['small', 'default', 'large'],
|
|
54
|
+
description: 'Type size of the label.',
|
|
55
|
+
table : { type: { summary: 'string' }, defaultValue: { summary: "default" }, category: 'Appearance' }
|
|
56
|
+
},
|
|
57
|
+
required: {
|
|
58
|
+
control : 'boolean',
|
|
59
|
+
description: 'Appends a decorative asterisk. Mark the control itself required too — the asterisk is aria-hidden.',
|
|
60
|
+
table : { type: { summary: 'boolean' }, defaultValue: { summary: "false" }, category: 'State' }
|
|
61
|
+
},
|
|
62
|
+
for: {
|
|
63
|
+
control : 'text',
|
|
64
|
+
description: 'Id of the labelled control. Note it cannot cross the shadow boundary — see the notes.',
|
|
65
|
+
table : { type: { summary: 'string' }, defaultValue: { summary: "" }, category: 'Accessibility' }
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export const Default = () => html`
|
|
71
|
+
<bd-label>Email address</bd-label>
|
|
72
|
+
`;
|
|
73
|
+
|
|
74
|
+
export const Required = () => html`
|
|
75
|
+
<bd-label required>Email address</bd-label>
|
|
76
|
+
`;
|
|
77
|
+
|
|
78
|
+
export const Sizes = () => html`
|
|
79
|
+
<bd-label size="sm">Small</bd-label>
|
|
80
|
+
<bd-label>Default</bd-label>
|
|
81
|
+
<bd-label size="lg">Large</bd-label>
|
|
82
|
+
`;
|