@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
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
// icons/quote-icon.js
|
|
2
|
-
import {
|
|
2
|
+
import { html } from "lit";
|
|
3
|
+
import { BdIconElement } from "./icon-element.js";
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
/**
|
|
6
|
+
* An opening quotation mark, drawn as a path.
|
|
7
|
+
*
|
|
8
|
+
* It used to be a "“" character in an SVG <text> element at Helvetica
|
|
9
|
+
* 128px: type being asked to draw a picture, so its shape depended on which
|
|
10
|
+
* Helvetica the platform had, and its colour was a hex of its own
|
|
11
|
+
* (#2E6BF6) rather than the ink it sits in. Now it extends BdIconElement like
|
|
12
|
+
* every sibling -- sized from the icon scale, drawn in currentColor.
|
|
13
|
+
*/
|
|
14
|
+
class QuoteIcon extends BdIconElement {
|
|
15
|
+
static defaultSize = "xl";
|
|
5
16
|
|
|
6
|
-
static properties = {
|
|
7
|
-
width : { type: Number },
|
|
8
|
-
height: { type: Number },
|
|
9
|
-
color : { type: String }
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
constructor() {
|
|
13
|
-
super();
|
|
14
|
-
this.width = 51;
|
|
15
|
-
this.height = 52;
|
|
16
|
-
this.color = "#2E6BF6";
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
static styles = css`:host { display: inline-flex; }`;
|
|
20
17
|
render() {
|
|
21
18
|
return html`
|
|
22
|
-
<svg xmlns="http://www.w3.org/2000/svg"
|
|
23
|
-
<
|
|
19
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" aria-hidden="true">
|
|
20
|
+
<path d="M3 19.5V13c0-4.4 2.2-7.6 6.5-9.2l.9 1.9C7.9 6.9 6.8 8.7 6.6 11H10v8.5H3Zm11 0V13c0-4.4 2.2-7.6 6.5-9.2l.9 1.9c-2.5 1.2-3.6 3-3.8 5.3H21v8.5h-7Z" fill="currentColor"/>
|
|
24
21
|
</svg>
|
|
25
22
|
`;
|
|
26
23
|
}
|
|
27
24
|
}
|
|
28
|
-
|
|
25
|
+
|
|
26
|
+
customElements.define("bd-quote-icon", QuoteIcon);
|
|
27
|
+
|
|
28
|
+
export { QuoteIcon };
|
|
@@ -31,23 +31,35 @@ export default css`
|
|
|
31
31
|
|
|
32
32
|
/* Radius Variants - Updated to match radius prop */
|
|
33
33
|
.bd-img.radius-none {
|
|
34
|
-
border-radius:
|
|
34
|
+
border-radius: var(--radius-none);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
.bd-img.radius-sm {
|
|
38
|
-
border-radius: var(--radius-sm
|
|
38
|
+
border-radius: var(--radius-sm);
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
.bd-img.radius-md {
|
|
42
|
-
border-radius: var(--radius-md
|
|
42
|
+
border-radius: var(--radius-md);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
.bd-img.radius-lg {
|
|
46
|
-
border-radius: var(--radius-lg
|
|
46
|
+
border-radius: var(--radius-lg);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.bd-img.radius-xl {
|
|
50
|
+
border-radius: var(--radius-xl);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.bd-img.radius-2xl {
|
|
54
|
+
border-radius: var(--radius-2xl);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.bd-img.radius-3xl {
|
|
58
|
+
border-radius: var(--radius-3xl);
|
|
47
59
|
}
|
|
48
60
|
|
|
49
61
|
.bd-img.radius-full {
|
|
50
|
-
border-radius:
|
|
62
|
+
border-radius: var(--radius-full);
|
|
51
63
|
}
|
|
52
64
|
|
|
53
65
|
/* Shadow Variants - Updated to match shadow prop */
|
|
@@ -56,33 +68,33 @@ export default css`
|
|
|
56
68
|
}
|
|
57
69
|
|
|
58
70
|
.bd-img.shadow-sm {
|
|
59
|
-
box-shadow: var(--shadow-sm
|
|
71
|
+
box-shadow: var(--shadow-sm);
|
|
60
72
|
}
|
|
61
73
|
|
|
62
74
|
.bd-img.shadow-md {
|
|
63
|
-
box-shadow: var(--shadow-md
|
|
75
|
+
box-shadow: var(--shadow-md);
|
|
64
76
|
}
|
|
65
77
|
|
|
66
78
|
.bd-img.shadow-lg {
|
|
67
|
-
box-shadow: var(--shadow-lg
|
|
79
|
+
box-shadow: var(--shadow-lg);
|
|
68
80
|
}
|
|
69
81
|
|
|
70
82
|
/* Shadow XL - Additional variant */
|
|
71
83
|
.bd-img.shadow-xl {
|
|
72
|
-
box-shadow: var(--shadow-xl
|
|
84
|
+
box-shadow: var(--shadow-xl);
|
|
73
85
|
}
|
|
74
86
|
|
|
75
87
|
/* Border Variants - Keep for additional styling options */
|
|
76
88
|
.bd-img.bordered {
|
|
77
|
-
border:
|
|
89
|
+
border: var(--border-width-2) solid var(--color-border-subtle);
|
|
78
90
|
}
|
|
79
91
|
|
|
80
92
|
.bd-img.bordered-primary {
|
|
81
|
-
border:
|
|
93
|
+
border: var(--border-width-2) solid var(--color-border-brand);
|
|
82
94
|
}
|
|
83
95
|
|
|
84
96
|
.bd-img.bordered-thick {
|
|
85
|
-
border:
|
|
97
|
+
border: var(--border-width-4) solid var(--color-border-disabled);
|
|
86
98
|
}
|
|
87
99
|
|
|
88
100
|
/* Responsive Behavior */
|
|
@@ -107,43 +119,78 @@ export default css`
|
|
|
107
119
|
/* Hover Effects */
|
|
108
120
|
.bd-img.hover-zoom:hover {
|
|
109
121
|
transform: scale(1.05);
|
|
110
|
-
transition: transform
|
|
122
|
+
transition: transform var(--transition-duration-slow) var(--transition-easing-smooth);
|
|
111
123
|
}
|
|
112
124
|
|
|
113
125
|
.bd-img.hover-shadow:hover {
|
|
114
126
|
box-shadow: var(--shadow-lg);
|
|
115
|
-
transition: box-shadow
|
|
127
|
+
transition: box-shadow var(--transition-duration-slow) var(--transition-easing-smooth);
|
|
116
128
|
}
|
|
117
129
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
outline:
|
|
121
|
-
|
|
130
|
+
.bd-img:focus-visible {
|
|
131
|
+
/* the one focus ring — see Foundations/Focus */
|
|
132
|
+
outline: none;
|
|
133
|
+
box-shadow: var(--focus-outline-primary);
|
|
122
134
|
}
|
|
123
135
|
|
|
124
136
|
/* Loading state */
|
|
125
137
|
.bd-img:not([src]) {
|
|
126
|
-
background-color: var(--color-
|
|
138
|
+
background-color: var(--color-surface-muted);
|
|
139
|
+
/* no token: the dimension scale stops at 64px */
|
|
127
140
|
min-height: 100px;
|
|
128
141
|
display: flex;
|
|
129
142
|
align-items: center;
|
|
130
143
|
justify-content: center;
|
|
131
|
-
color
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
144
|
+
/* --color-text-muted, not --color-text-disabled. Loading is not disabled,
|
|
145
|
+
and the difference is not academic: the disabled text role carries a
|
|
146
|
+
contrast exemption -- WCAG 1.4.3 excuses disabled controls from the
|
|
147
|
+
4.5:1 minimum -- and this label claims that exemption without being
|
|
148
|
+
entitled to it. It is a sentence a reader is meant to read while they
|
|
149
|
+
wait.
|
|
150
|
+
|
|
151
|
+
Measured on this ground: neutral-400 on neutral-100 is 2.51:1, which
|
|
152
|
+
misses even the 3:1 floor for non-text. --color-text-muted is
|
|
153
|
+
neutral-600 at 5.12:1 and is the role this package already uses for
|
|
154
|
+
low-emphasis readable text -- caption and form help text both resolve
|
|
155
|
+
to it.
|
|
156
|
+
|
|
157
|
+
The ground stays --color-surface-muted. Loading is a state, muted is
|
|
158
|
+
the state surface, and bd-skeleton -- the package's other loading
|
|
159
|
+
affordance -- already sits on it. Only the ink was choosing by value.
|
|
160
|
+
See "Choosing a semantic role" in the package README. */
|
|
161
|
+
color: var(--color-text-muted);
|
|
162
|
+
/* no role: alt text shown when the image has no src -- a glyph/marker/placeholder box, not running
|
|
163
|
+
prose. See list-item.css.js's .bd-list-item-marker::before for the
|
|
164
|
+
argument. */
|
|
165
|
+
font-size: var(--typography-fontSize-sm);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/* The placeholder copy is a local property rather than a string in the
|
|
169
|
+
stylesheet: content: "Image loading..." cannot be translated, and this
|
|
170
|
+
atom and bd-picture used two different sentences for the same state. */
|
|
135
171
|
.bd-img:not([src])::before {
|
|
136
|
-
content: "
|
|
172
|
+
content: var(--bd-img-loading-label, "Loading image");
|
|
137
173
|
}
|
|
138
174
|
|
|
139
175
|
/* Smooth transitions for radius and shadow changes */
|
|
140
176
|
.bd-img {
|
|
141
|
-
transition: border-radius
|
|
177
|
+
transition: border-radius var(--transition-duration-normal) var(--transition-easing-smooth), box-shadow var(--transition-duration-normal) var(--transition-easing-smooth);
|
|
142
178
|
}
|
|
143
179
|
|
|
144
180
|
/* Performance optimization for transforms */
|
|
145
181
|
.bd-img.hover-zoom {
|
|
146
182
|
will-change: transform;
|
|
147
183
|
}
|
|
184
|
+
|
|
185
|
+
/* A hover that scales the image is the category of motion the setting
|
|
186
|
+
exists for, and this atom had no guard at all. */
|
|
187
|
+
@media (prefers-reduced-motion: reduce) {
|
|
188
|
+
.bd-img,
|
|
189
|
+
.bd-img.hover-zoom:hover,
|
|
190
|
+
.bd-img.hover-shadow:hover {
|
|
191
|
+
transition: none;
|
|
192
|
+
transform: none;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
148
195
|
}
|
|
149
196
|
`;
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import { LitElement, html } from "lit";
|
|
2
|
-
|
|
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";
|
|
3
4
|
import imgCSS from "./image.css.js";
|
|
4
5
|
|
|
6
|
+
// the radius steps image.css.js implements — the full --radius-* scale
|
|
7
|
+
const RADIUS_STEPS = ['none', 'sm', 'md', 'lg', 'xl', '2xl', '3xl', 'full'];
|
|
8
|
+
|
|
5
9
|
export class BdImg extends LitElement {
|
|
6
10
|
static properties = {
|
|
7
11
|
src : { type: String },
|
|
@@ -29,7 +33,8 @@ export class BdImg extends LitElement {
|
|
|
29
33
|
render() {
|
|
30
34
|
const baseClass = 'bd-img';
|
|
31
35
|
const fitClass = this.fit || 'cover';
|
|
32
|
-
const
|
|
36
|
+
const radius = RADIUS_STEPS.includes(this.radius) ? this.radius : 'none';
|
|
37
|
+
const radiusClass = `radius-${radius}`;
|
|
33
38
|
const shadowClass = `shadow-${this.shadow || 'none'}`;
|
|
34
39
|
|
|
35
40
|
const finalClass = `${baseClass} ${fitClass} ${radiusClass} ${shadowClass}`;
|
|
@@ -38,8 +43,8 @@ export class BdImg extends LitElement {
|
|
|
38
43
|
<img
|
|
39
44
|
src="${this.src}"
|
|
40
45
|
alt="${this.alt}"
|
|
41
|
-
width="${this.width}"
|
|
42
|
-
height="${this.height}"
|
|
46
|
+
width="${this.width ?? nothing}"
|
|
47
|
+
height="${this.height ?? nothing}"
|
|
43
48
|
loading="${this.loading}"
|
|
44
49
|
class="${finalClass}"
|
|
45
50
|
@load="${this._handleLoad}"
|
|
@@ -62,7 +67,7 @@ export class BdImg extends LitElement {
|
|
|
62
67
|
}));
|
|
63
68
|
}
|
|
64
69
|
|
|
65
|
-
static styles = [
|
|
70
|
+
static styles = [imgCSS];
|
|
66
71
|
}
|
|
67
72
|
|
|
68
73
|
customElements.define("bd-img", BdImg);
|
|
@@ -2,7 +2,7 @@ import { html } from 'lit';
|
|
|
2
2
|
import './image.js';
|
|
3
3
|
|
|
4
4
|
export default {
|
|
5
|
-
title : '
|
|
5
|
+
title : 'Atoms/Image',
|
|
6
6
|
tags : ['autodocs'],
|
|
7
7
|
parameters: {
|
|
8
8
|
docs: {
|
|
@@ -129,7 +129,7 @@ export const RadiusVariants = {
|
|
|
129
129
|
name : 'Radius Variants',
|
|
130
130
|
render: () => html`
|
|
131
131
|
<div style="display:flex; gap:16px; flex-wrap:wrap;">
|
|
132
|
-
${['none', 'sm', 'md', 'lg', 'xl', 'full'].map(r => html`
|
|
132
|
+
${['none', 'sm', 'md', 'lg', 'xl', '2xl', '3xl', 'full'].map(r => html`
|
|
133
133
|
<div>
|
|
134
134
|
<p style="font-size:12px; margin-bottom:4px; font-weight:600;">radius-${r}</p>
|
|
135
135
|
<bd-img src="${sampleSrc}" alt="radius ${r}" width="150" height="150" radius="${r}" fit="cover"></bd-img>
|