@repobit/dex-system-design 1.0.1 → 2.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 +81 -0
- package/README.md +43 -12
- package/package.json +4 -2
- package/schemas/component-manifest.json +207 -49
- package/schemas/manifest-omissions.json +2 -0
- package/src/components/accordion/accordion.css.js +12 -1
- package/src/components/agent-endpoints/agent-endpoints.js +1 -1
- package/src/components/alert/alert.css.js +22 -1
- package/src/components/anchor/anchor-nav.css.js +6 -1
- package/src/components/annotation/annotation.css.js +6 -1
- package/src/components/architecture.stories.js +6 -4
- package/src/components/avatar/avatar.js +37 -11
- package/src/components/avatar/avatar.stories.js +10 -6
- package/src/components/awards/awards-flex.css.js +31 -129
- package/src/components/awards/awards-flex.js +66 -116
- package/src/components/awards/awards-flex.stories.js +8 -6
- package/src/components/back/back.css.js +6 -1
- package/src/components/back/back.js +24 -12
- package/src/components/back/back.stories.js +3 -3
- package/src/components/badge/badge.js +6 -3
- package/src/components/badge/badge.stories.js +13 -9
- package/src/components/bento-grid/bento-grid.js +1 -1
- package/src/components/blockquote/blockquote.css.js +12 -3
- package/src/components/blockquote/blockquote.js +12 -5
- package/src/components/blockquote/blockquote.stories.js +6 -4
- package/src/components/button/button.css.js +46 -25
- package/src/components/button/button.js +44 -43
- package/src/components/button/button.stories.js +2 -2
- package/src/components/caption/caption.css.js +10 -0
- package/src/components/caption/caption.stories.js +4 -4
- package/src/components/carousel/carousel.css.js +19 -116
- package/src/components/carousel/carousel.js +70 -74
- package/src/components/carousel/carousel.stories.js +9 -8
- package/src/components/checkbox/checkbox.css.js +6 -1
- package/src/components/code/code.css.js +6 -1
- package/src/components/code/code.js +48 -7
- package/src/components/code/code.stories.js +7 -4
- package/src/components/divider/divider-horizontal.js +11 -3
- package/src/components/divider/divider-vertical.js +12 -5
- package/src/components/divider/divider.css.js +4 -1
- package/src/components/divider/divider.stories.js +6 -6
- package/src/components/dropdown/dropdown.js +67 -13
- package/src/components/dropdown/dropdown.stories.js +15 -14
- package/src/components/fieldset/fieldset.stories.js +41 -16
- package/src/components/footer/footer-nav-menu.css.js +6 -1
- package/src/components/footer/footer.css.js +6 -1
- package/src/components/header/header-code.js +1 -1
- package/src/components/header/header.css.js +9 -4
- package/src/components/heading/heading.stories.js +64 -31
- package/src/components/highlight/highlight.js +74 -34
- package/src/components/highlight/highlight.stories.js +5 -4
- package/src/components/icons/icon-element.js +49 -6
- package/src/components/icons/icons.stories.js +7 -0
- package/src/components/image/image.css.js +9 -98
- package/src/components/image/image.js +7 -2
- package/src/components/input/custom-form.stories.js +14 -19
- package/src/components/input/input-clipboard.css.js +6 -1
- package/src/components/input/input-clipboard.js +56 -8
- package/src/components/input/input.js +19 -2
- package/src/components/label/label.js +87 -1
- package/src/components/label/label.stories.js +21 -12
- package/src/components/link/link.css.js +52 -3
- package/src/components/link/link.js +52 -17
- package/src/components/link/link.stories.js +114 -3
- package/src/components/list/list-item/list-item.css.js +4 -6
- package/src/components/list/list-item/list-item.js +53 -5
- package/src/components/list/list-item/list-item.stories.js +22 -0
- package/src/components/list/list.js +27 -0
- package/src/components/modal/modal.css.js +6 -1
- package/src/components/pagination-dots/pagination-dots.css.js +161 -0
- package/src/components/pagination-dots/pagination-dots.js +202 -0
- package/src/components/pagination-dots/pagination-dots.stories.js +171 -0
- package/src/components/paragraph/paragraph.css.js +37 -1
- package/src/components/paragraph/paragraph.js +19 -2
- package/src/components/paragraph/paragraph.stories.js +40 -6
- package/src/components/picture/picture.css.js +8 -67
- package/src/components/picture/picture.js +15 -8
- package/src/components/pricing-cards/pricing-card.css.js +12 -2
- package/src/components/pricing-cards/pricing-card.js +4 -4
- package/src/components/progress/progress.js +24 -4
- package/src/components/progress/progress.stories.js +8 -6
- package/src/components/radio/radio.css.js +6 -1
- package/src/components/radio/radio.js +48 -3
- package/src/components/radio/radio.stories.js +1 -1
- package/src/components/shared/form-field.css.js +30 -4
- package/src/components/shared/token-scales.js +16 -0
- package/src/components/spinner/spinner.css.js +31 -4
- package/src/components/spinner/spinner.js +26 -4
- package/src/components/spinner/spinner.stories.js +10 -7
- package/src/components/switch/switch.css.js +21 -3
- package/src/components/switch/switch.js +8 -1
- package/src/components/switch/switch.stories.js +2 -1
- package/src/components/tab-list/tab-list.css.js +6 -1
- package/src/components/terminal/terminal-cursor.js +11 -0
- package/src/components/terminal/terminal-message.js +1 -1
- package/src/components/termsOfUse/terms.css.js +6 -1
- package/src/components/textarea/textarea.stories.js +23 -0
- package/src/components/tooltip/tooltip.css.js +24 -1
- package/src/components/tooltip/tooltip.js +135 -5
- package/src/components/tooltip/tooltip.stories.js +20 -14
- package/src/components/trust-panel/trust-panel.js +2 -2
- package/src/components/video/video.js +38 -3
- package/src/components/video/video.stories.js +10 -5
- package/src/components/video-player/video-player.css.js +6 -1
- package/src/tokens/elevation.stories.js +2 -3
- package/src/tokens/focus.stories.js +81 -15
- package/src/tokens/motion.stories.js +0 -6
- package/src/tokens/tokens.css +174 -97
- package/src/tokens/tokens.js +174 -97
- package/src/tokens/vertical-rhythm.stories.js +1 -1
- package/src/stories/Button.js +0 -20
- package/src/stories/Button.stories.js +0 -46
- package/src/stories/Configure.mdx +0 -364
- package/src/stories/Header.js +0 -45
- package/src/stories/Header.stories.js +0 -24
- package/src/stories/Page.js +0 -62
- package/src/stories/Page.stories.js +0 -20
- package/src/stories/assets/accessibility.png +0 -0
- package/src/stories/assets/accessibility.svg +0 -1
- package/src/stories/assets/addon-library.png +0 -0
- package/src/stories/assets/assets.png +0 -0
- package/src/stories/assets/avif-test-image.avif +0 -0
- package/src/stories/assets/context.png +0 -0
- package/src/stories/assets/discord.svg +0 -1
- package/src/stories/assets/docs.png +0 -0
- package/src/stories/assets/figma-plugin.png +0 -0
- package/src/stories/assets/github.svg +0 -1
- package/src/stories/assets/share.png +0 -0
- package/src/stories/assets/styling.png +0 -0
- package/src/stories/assets/testing.png +0 -0
- package/src/stories/assets/theming.png +0 -0
- package/src/stories/assets/tutorials.svg +0 -1
- package/src/stories/assets/youtube.svg +0 -1
- package/src/stories/button.css +0 -30
- package/src/stories/header.css +0 -32
- package/src/stories/page.css +0 -68
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,87 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [2.0.0](https://github.com/bitdefender/dex-core/compare/@repobit/dex-system-design@1.0.1...@repobit/dex-system-design@2.0.0) (2026-10-15)
|
|
7
|
+
|
|
8
|
+
### ⚠ BREAKING CHANGES
|
|
9
|
+
|
|
10
|
+
* **DEX-1014:** bd-custom-input-clipboard no longer dispatches a custom
|
|
11
|
+
"input" event with the string as detail. Listen for bd-input or
|
|
12
|
+
bd-change and read detail.value. Nothing in this repository listened for
|
|
13
|
+
the old event.
|
|
14
|
+
|
|
15
|
+
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* **DEX-1014:** a dark-surface focus ring, because the white band merged into light controls
|
|
20
|
+
* **DEX-1014:** bd-button and bd-button-link take a description for their inner control
|
|
21
|
+
* **DEX-1014:** bd-custom-dropdown has a value and fires bd-input / bd-change
|
|
22
|
+
* **DEX-1014:** bd-link takes a description too, so a bd-link tooltip trigger is described
|
|
23
|
+
* **DEX-1014:** bd-link takes an arrow, because three components hand-drew a chevron instead
|
|
24
|
+
* **DEX-1014:** bd-p takes color and an eyebrow variant, so all five eyebrows read 500
|
|
25
|
+
* **DEX-1014:** bd-pagination-dots runs autoplay, with the progress in the current pill
|
|
26
|
+
* **DEX-1014:** bd-pagination-dots, an atom for the slide indicator only awards-flex could draw
|
|
27
|
+
* **DEX-1014:** bd-tooltip dismisses on Escape, the rest of WCAG 1.4.13
|
|
28
|
+
* **DEX-1014:** check:docs reads docs/README.md and checks Markdown links
|
|
29
|
+
* **DEX-1014:** the awards carousel shows one award per slide on a phone
|
|
30
|
+
* **DEX-1014:** the eyebrow steps down to 14px below lg, as the tablet and mobile frames draw it
|
|
31
|
+
|
|
32
|
+
### Bug Fixes
|
|
33
|
+
|
|
34
|
+
* **DEX-1014:** a bd-code block is a group, not a landmark, and a tab stop only when it scrolls
|
|
35
|
+
* **DEX-1014:** a bd-link with no href is not a link to the top of the page
|
|
36
|
+
* **DEX-1014:** a bd-picture source with no type is used, not skipped as type="undefined"
|
|
37
|
+
* **DEX-1014:** a select's descenders no longer clip; fields give text their full line box
|
|
38
|
+
* **DEX-1014:** a standalone link takes its own role's weight, 500 rather than the inline 400
|
|
39
|
+
* **DEX-1014:** an input's focused prop means focused, not a ring on a field that is not
|
|
40
|
+
* **DEX-1014:** atom focus rings survive forced-colors mode, because box-shadow is not painted there
|
|
41
|
+
* **DEX-1014:** bd-alert's dismiss button has a 24px target, not a 16px one
|
|
42
|
+
* **DEX-1014:** bd-avatar falls back to initials on a broken image, and stays quiet without a name
|
|
43
|
+
* **DEX-1014:** bd-back with an href is a real link, not a button that sets location
|
|
44
|
+
* **DEX-1014:** bd-badge icons render at 16px, not the 32px they fell back to
|
|
45
|
+
* **DEX-1014:** bd-blockquote credits the quote from outside it, in a figcaption
|
|
46
|
+
* **DEX-1014:** bd-button focus is an offset outline, because code can leave the gap unpainted
|
|
47
|
+
* **DEX-1014:** bd-caption size="sm" takes the caption-small role whole, and the docs say what it is
|
|
48
|
+
* **DEX-1014:** bd-custom-dropdown announces invalid and its hint, not only draws them
|
|
49
|
+
* **DEX-1014:** bd-custom-dropdown renders an empty field, not nothing, on non-JSON options
|
|
50
|
+
* **DEX-1014:** bd-custom-input-clipboard announces invalid and its hint, not only draws them
|
|
51
|
+
* **DEX-1014:** bd-custom-input-clipboard fires bd-input / bd-change, like its siblings
|
|
52
|
+
* **DEX-1014:** bd-custom-input-clipboard gets its own export, ./input-clipboard
|
|
53
|
+
* **DEX-1014:** bd-divider-vertical's thickness is a border-width step, not a length written as given
|
|
54
|
+
* **DEX-1014:** bd-highlight keeps text after a repeated phrase, and adds no spaces round the mark
|
|
55
|
+
* **DEX-1014:** bd-highlight keeps the headline's markup when it marks the phrase
|
|
56
|
+
* **DEX-1014:** bd-label's for names and activates its control, as a native label's does
|
|
57
|
+
* **DEX-1014:** bd-li's color is a text role, not a string written into its style, closes [#f00](https://github.com/bitdefender/dex-core/issues/f00)
|
|
58
|
+
* **DEX-1014:** bd-list falls back to a styled value instead of carrying one nothing styles
|
|
59
|
+
* **DEX-1014:** bd-progress clamps the value it reports, not only the fill it draws
|
|
60
|
+
* **DEX-1014:** bd-progress clears a tone it does not style
|
|
61
|
+
* **DEX-1014:** bd-radio keeps one tab stop per group when another radio changes
|
|
62
|
+
* **DEX-1014:** bd-radio reflects name, so a radio named by property joins its group
|
|
63
|
+
* **DEX-1014:** bd-spinner announces its label, which an empty status region never did
|
|
64
|
+
* **DEX-1014:** bd-spinner keeps its arc under reduced motion and pulses the disc instead
|
|
65
|
+
* **DEX-1014:** bd-switch thumb stays on its track when the reader enlarges text
|
|
66
|
+
* **DEX-1014:** bd-switch's bd-change bubbles and is composed, like its siblings
|
|
67
|
+
* **DEX-1014:** bd-terminal-cursor holds still under prefers-reduced-motion
|
|
68
|
+
* **DEX-1014:** bd-toggle-radio's change event carries the name it declares
|
|
69
|
+
* **DEX-1014:** bd-tooltip describes its trigger, so a screen reader hears the tooltip
|
|
70
|
+
* **DEX-1014:** bd-tooltip re-places itself after it is moved in the DOM
|
|
71
|
+
* **DEX-1014:** bd-tooltip stays open while the pointer moves onto the bubble
|
|
72
|
+
* **DEX-1014:** bd-video reaches its player: captions, muted and controls="false" all work
|
|
73
|
+
* **DEX-1014:** component focus rings survive forced-colors mode too
|
|
74
|
+
* **DEX-1014:** custom-click bubbles and is composed, so a wrapper can hear it
|
|
75
|
+
* **DEX-1014:** dividers draw a role at full strength, and opacity is only what a caller asks for
|
|
76
|
+
* **DEX-1014:** eight Code Connect templates emit markup their element honours
|
|
77
|
+
* **DEX-1014:** icons leave their host's style attribute alone, so a page's colour survives
|
|
78
|
+
* **DEX-1014:** numbered bd-li items count 1, 2, 3 instead of all reading "1."
|
|
79
|
+
* **DEX-1014:** stacked static quote cards take their own height on a phone
|
|
80
|
+
* **DEX-1014:** surface="dark" buttons take the inverse ring, because blue vanished on a brand hero
|
|
81
|
+
* **DEX-1014:** the awards pause toggle keeps 3:1 on the tint, and two band rules are written down
|
|
82
|
+
* **DEX-1014:** the bd-contact-button manifest entry lists what the element has
|
|
83
|
+
* **DEX-1014:** the current pagination pill takes a 2px edge, drawn inside so the fill keeps 8px
|
|
84
|
+
* **DEX-1014:** the touch-target tokens read the dimension scale instead of px literals
|
|
85
|
+
|
|
86
|
+
|
|
6
87
|
## [1.0.1](https://github.com/bitdefender/dex-core/compare/@repobit/dex-system-design@1.0.0...@repobit/dex-system-design@1.0.1) (2026-10-15)
|
|
7
88
|
|
|
8
89
|
**Note:** Version bump only for package @repobit/dex-system-design
|
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ import '@repobit/dex-system-design/button';
|
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
```html
|
|
21
|
-
<bd-button
|
|
21
|
+
<bd-button variant="primary" size="md">Buy now</bd-button>
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
Each component is a separate entry point — see the `exports` map in
|
|
@@ -33,29 +33,43 @@ cascade layer. Importing any component installs them; nothing else is required.
|
|
|
33
33
|
.thing {
|
|
34
34
|
padding: var(--spacing-16);
|
|
35
35
|
border-radius: var(--radius-md);
|
|
36
|
-
color: var(--color-
|
|
36
|
+
color: var(--color-text-primary);
|
|
37
|
+
background: var(--color-surface-container);
|
|
37
38
|
}
|
|
38
39
|
```
|
|
39
40
|
|
|
41
|
+
For colour, use the **semantic roles** — `--color-text-*`, `--color-surface-*`,
|
|
42
|
+
`--color-border-*`, `--status-*` — rather than the palette steps
|
|
43
|
+
(`--color-neutral-900`, `--color-blue-500`) behind them. A role names the job,
|
|
44
|
+
so it keeps its contrast when a theme or a single value changes; a palette
|
|
45
|
+
step is only today's value. `Foundations/Color/Responsibilities` and
|
|
46
|
+
`Foundations/Surfaces` list which role answers which question.
|
|
47
|
+
|
|
40
48
|
### Overriding a token
|
|
41
49
|
|
|
42
50
|
Because the tokens sit in a cascade layer, and unlayered CSS beats any layer,
|
|
43
|
-
your own stylesheet wins with no special syntax
|
|
51
|
+
your own stylesheet wins with no special syntax. Override a role, not a
|
|
52
|
+
palette step:
|
|
44
53
|
|
|
45
54
|
```css
|
|
46
55
|
:root {
|
|
47
|
-
--color-
|
|
56
|
+
--color-text-brand: var(--color-blue-700);
|
|
48
57
|
}
|
|
49
58
|
```
|
|
50
59
|
|
|
51
|
-
|
|
60
|
+
Recolouring a palette step (`--color-blue-500: …`) changes every role built on
|
|
61
|
+
it at once, including ones whose contrast was measured against that exact
|
|
62
|
+
value, such as white text on a blue button.
|
|
63
|
+
|
|
64
|
+
**If your own CSS uses `@layer`**, declare the order first. The tokens' layer is
|
|
65
|
+
installed after your stylesheets, so it is declared last and an override
|
|
66
|
+
inside one of your layers silently loses to it:
|
|
52
67
|
|
|
53
68
|
```css
|
|
54
|
-
@
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
69
|
+
@layer bd-tokens, app; /* bd-tokens first, so app wins */
|
|
70
|
+
|
|
71
|
+
@layer app {
|
|
72
|
+
:root { --color-text-brand: var(--color-blue-700); }
|
|
59
73
|
}
|
|
60
74
|
```
|
|
61
75
|
|
|
@@ -63,6 +77,16 @@ This works because a token is declared once, on the document, rather than on
|
|
|
63
77
|
each component's `:host`. A `:host` declaration would beat an inherited value
|
|
64
78
|
and make the token unoverridable.
|
|
65
79
|
|
|
80
|
+
### Dark mode
|
|
81
|
+
|
|
82
|
+
No dark theme ships yet. **Do not build one by swapping palette steps** — for
|
|
83
|
+
example exchanging `--color-neutral-0` and `--color-neutral-900`. The roles
|
|
84
|
+
that sit on coloured fills do not flip with them. Measured with exactly that
|
|
85
|
+
swap: a primary button's label falls to 4.07:1, and 2.99:1 on hover; text on an
|
|
86
|
+
error fill to 3.39:1; brand text on the page to 2.99:1 — all under the 4.5:1
|
|
87
|
+
text minimum. A dark theme has to remap the semantic roles, and
|
|
88
|
+
`Foundations/Theming/Dark mode` is the study of how.
|
|
89
|
+
|
|
66
90
|
You can also import the tokens directly if you need them without a component:
|
|
67
91
|
|
|
68
92
|
```js
|
|
@@ -83,8 +107,13 @@ npm run storybook
|
|
|
83
107
|
```
|
|
84
108
|
|
|
85
109
|
`Foundations/` documents every primitive — colour, spacing, typography,
|
|
86
|
-
fonts, grid, shape, elevation, focus, motion and dimension.
|
|
87
|
-
the loaded token CSS at render time, so
|
|
110
|
+
fonts, grid, shape, elevation, focus, motion and dimension. Their swatches and
|
|
111
|
+
values are read from the loaded token CSS at render time, so those cannot drift
|
|
112
|
+
from the tokens; the explanatory prose beside them can, and is checked only for
|
|
113
|
+
the files and references it cites.
|
|
114
|
+
|
|
115
|
+
The full set of rules for working in this package — and the reasoning behind
|
|
116
|
+
each — is in [`CLAUDE.md`](./CLAUDE.md).
|
|
88
117
|
|
|
89
118
|
## Page generation
|
|
90
119
|
|
|
@@ -129,6 +158,8 @@ foundation**. Everything is built and styled from them and from nothing else.
|
|
|
129
158
|
| `npm run build:tokens` | regenerate the CSS token files from their JS sources |
|
|
130
159
|
| `npm run build:tokens:check` | fail if a generated file is stale (CI) |
|
|
131
160
|
| `npm run check:manifest` | verify the component manifest against the components |
|
|
161
|
+
| `npm run check:ds` | every design-system gate — run before finishing any change |
|
|
162
|
+
| `npm test` | `check:ds` plus the browser checks (needs Playwright's Chromium) |
|
|
132
163
|
|
|
133
164
|
`src/tokens/tokens.js` is the source of truth for tokens; `tokens.css` is
|
|
134
165
|
generated from it. Edit the JS and run `npm run build:tokens`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@repobit/dex-system-design",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Design system based on Web Components.",
|
|
5
5
|
"author": "Iordache Matei Cezar <miordache@bitdefender.com>",
|
|
6
6
|
"homepage": "https://github.com/bitdefender/dex-core#readme",
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
"./marks": "./src/components/icons/marks.js",
|
|
56
56
|
"./image": "./src/components/image/image.js",
|
|
57
57
|
"./input": "./src/components/input/input.js",
|
|
58
|
+
"./input-clipboard": "./src/components/input/input-clipboard.js",
|
|
58
59
|
"./label": "./src/components/label/label.js",
|
|
59
60
|
"./light-carousel": "./src/components/light-carousel/light-carousel.js",
|
|
60
61
|
"./link": "./src/components/link/link.js",
|
|
@@ -62,6 +63,7 @@
|
|
|
62
63
|
"./list-item": "./src/components/list/list-item/list-item.js",
|
|
63
64
|
"./modal": "./src/components/modal/modal.js",
|
|
64
65
|
"./page-schema": "./schemas/page-schema.json",
|
|
66
|
+
"./pagination-dots": "./src/components/pagination-dots/pagination-dots.js",
|
|
65
67
|
"./paragraph": "./src/components/paragraph/paragraph.js",
|
|
66
68
|
"./picture": "./src/components/picture/picture.js",
|
|
67
69
|
"./pricing-cards": "./src/components/pricing-cards/pricing-card.js",
|
|
@@ -177,5 +179,5 @@
|
|
|
177
179
|
"volta": {
|
|
178
180
|
"node": "24.14.0"
|
|
179
181
|
},
|
|
180
|
-
"gitHead": "
|
|
182
|
+
"gitHead": "2d3b6d84d6e805628c3b6448429fb190beff3e78"
|
|
181
183
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifestVersion": 1,
|
|
3
3
|
"package": "@repobit/dex-system-design",
|
|
4
|
-
"packageVersion": "
|
|
4
|
+
"packageVersion": "2.0.0",
|
|
5
5
|
"generatedFrom": [
|
|
6
6
|
"package.json exports",
|
|
7
7
|
"Lit static properties",
|
|
@@ -188,7 +188,7 @@
|
|
|
188
188
|
},
|
|
189
189
|
{
|
|
190
190
|
"tag": "bd-custom-input-clipboard",
|
|
191
|
-
"packageExport": "./input",
|
|
191
|
+
"packageExport": "./input-clipboard",
|
|
192
192
|
"module": "./src/components/input/input-clipboard.js",
|
|
193
193
|
"role": "form",
|
|
194
194
|
"contentModel": "none",
|
|
@@ -231,7 +231,8 @@
|
|
|
231
231
|
},
|
|
232
232
|
{
|
|
233
233
|
"name": "focused",
|
|
234
|
-
"type": "boolean"
|
|
234
|
+
"type": "boolean",
|
|
235
|
+
"description": "Has keyboard focus. Setting it moves focus into the field and clearing it blurs the field; it reflects whether the field is focused. Set it on at most one field, since only one can hold focus."
|
|
235
236
|
},
|
|
236
237
|
{
|
|
237
238
|
"name": "tooltip",
|
|
@@ -253,7 +254,16 @@
|
|
|
253
254
|
"name": "value",
|
|
254
255
|
"type": "string",
|
|
255
256
|
"description": "The field contents. A paste button sits over the right-hand end and fills it from the clipboard."
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"name": "name",
|
|
260
|
+
"type": "string",
|
|
261
|
+
"description": "Carried on the bd-input and bd-change event detail. NOT submitted with a form — the input lives in a shadow root."
|
|
256
262
|
}
|
|
263
|
+
],
|
|
264
|
+
"events": [
|
|
265
|
+
"bd-input",
|
|
266
|
+
"bd-change"
|
|
257
267
|
]
|
|
258
268
|
},
|
|
259
269
|
{
|
|
@@ -479,10 +489,11 @@
|
|
|
479
489
|
"name": "size",
|
|
480
490
|
"type": "string",
|
|
481
491
|
"enum": [
|
|
482
|
-
"
|
|
483
|
-
"
|
|
484
|
-
"
|
|
485
|
-
]
|
|
492
|
+
"sm",
|
|
493
|
+
"md",
|
|
494
|
+
"lg"
|
|
495
|
+
],
|
|
496
|
+
"description": "A size step. small, default and large still resolve, and are rewritten to these."
|
|
486
497
|
}
|
|
487
498
|
]
|
|
488
499
|
},
|
|
@@ -622,6 +633,11 @@
|
|
|
622
633
|
"custom-click"
|
|
623
634
|
],
|
|
624
635
|
"props": [
|
|
636
|
+
{
|
|
637
|
+
"name": "description",
|
|
638
|
+
"type": "string",
|
|
639
|
+
"description": "Extra text a screen reader reads after the name, wired with aria-describedby inside the shadow root, where the control is. bd-tooltip sets it on a trigger."
|
|
640
|
+
},
|
|
625
641
|
{
|
|
626
642
|
"name": "variant",
|
|
627
643
|
"type": "string",
|
|
@@ -767,6 +783,11 @@
|
|
|
767
783
|
"custom-click"
|
|
768
784
|
],
|
|
769
785
|
"props": [
|
|
786
|
+
{
|
|
787
|
+
"name": "description",
|
|
788
|
+
"type": "string",
|
|
789
|
+
"description": "Extra text a screen reader reads after the name, wired with aria-describedby inside the shadow root, where the control is. bd-tooltip sets it on a trigger."
|
|
790
|
+
},
|
|
770
791
|
{
|
|
771
792
|
"name": "variant",
|
|
772
793
|
"type": "string",
|
|
@@ -933,9 +954,10 @@
|
|
|
933
954
|
"name": "size",
|
|
934
955
|
"type": "string",
|
|
935
956
|
"enum": [
|
|
936
|
-
"
|
|
937
|
-
"
|
|
938
|
-
]
|
|
957
|
+
"sm",
|
|
958
|
+
"md"
|
|
959
|
+
],
|
|
960
|
+
"description": "A size step; only sm has a rule of its own. default and small still resolve, and are rewritten to these."
|
|
939
961
|
}
|
|
940
962
|
]
|
|
941
963
|
},
|
|
@@ -1154,28 +1176,15 @@
|
|
|
1154
1176
|
"role": "action",
|
|
1155
1177
|
"contentModel": "none",
|
|
1156
1178
|
"props": [
|
|
1157
|
-
{
|
|
1158
|
-
"name": "variant",
|
|
1159
|
-
"type": "string",
|
|
1160
|
-
"enum": [
|
|
1161
|
-
"primary",
|
|
1162
|
-
"secondary",
|
|
1163
|
-
"tertiary",
|
|
1164
|
-
"ghost",
|
|
1165
|
-
"accent",
|
|
1166
|
-
"white",
|
|
1167
|
-
"outline-white"
|
|
1168
|
-
],
|
|
1169
|
-
"description": "Visual variant. Replaces kind, which meant appearance here and size or marker elsewhere; kind still resolves. tertiary is a blue outline, ghost a dark outline, accent the red conversion fill — red is not a danger signal in this system. white and outline-white are fixed presets for a solid-colour banner and ignore surface on purpose."
|
|
1170
|
-
},
|
|
1171
1179
|
{
|
|
1172
1180
|
"name": "label",
|
|
1173
1181
|
"type": "string",
|
|
1174
|
-
"description": "Both the visible text and the accessible name
|
|
1182
|
+
"description": "Both the visible text and the accessible name. Defaults to \"Contact us\"."
|
|
1175
1183
|
},
|
|
1176
1184
|
{
|
|
1177
1185
|
"name": "href",
|
|
1178
|
-
"type": "string"
|
|
1186
|
+
"type": "string",
|
|
1187
|
+
"description": "Where the CTA goes. It renders an <a>, so without one it is not a link."
|
|
1179
1188
|
},
|
|
1180
1189
|
{
|
|
1181
1190
|
"name": "align",
|
|
@@ -1184,7 +1193,8 @@
|
|
|
1184
1193
|
"left",
|
|
1185
1194
|
"center",
|
|
1186
1195
|
"right"
|
|
1187
|
-
]
|
|
1196
|
+
],
|
|
1197
|
+
"description": "Horizontal placement, as on bd-button. Set it as an attribute."
|
|
1188
1198
|
},
|
|
1189
1199
|
{
|
|
1190
1200
|
"name": "shape",
|
|
@@ -1195,6 +1205,9 @@
|
|
|
1195
1205
|
],
|
|
1196
1206
|
"description": "Corner shape. rounded takes --radius-3xl whatever the size; default keeps the size band's radius."
|
|
1197
1207
|
}
|
|
1208
|
+
],
|
|
1209
|
+
"events": [
|
|
1210
|
+
"custom-click"
|
|
1198
1211
|
]
|
|
1199
1212
|
},
|
|
1200
1213
|
{
|
|
@@ -1245,7 +1258,21 @@
|
|
|
1245
1258
|
{
|
|
1246
1259
|
"name": "disabled",
|
|
1247
1260
|
"type": "boolean"
|
|
1261
|
+
},
|
|
1262
|
+
{
|
|
1263
|
+
"name": "value",
|
|
1264
|
+
"type": "string",
|
|
1265
|
+
"description": "The chosen option. Read it, or set it to choose one; unset, or set to an option that is not there, it is the first. Carried on the bd-input / bd-change detail."
|
|
1266
|
+
},
|
|
1267
|
+
{
|
|
1268
|
+
"name": "name",
|
|
1269
|
+
"type": "string",
|
|
1270
|
+
"description": "Carried on the bd-input and bd-change event detail. NOT submitted with a form — the select lives in a shadow root."
|
|
1248
1271
|
}
|
|
1272
|
+
],
|
|
1273
|
+
"events": [
|
|
1274
|
+
"bd-input",
|
|
1275
|
+
"bd-change"
|
|
1249
1276
|
]
|
|
1250
1277
|
},
|
|
1251
1278
|
{
|
|
@@ -1287,7 +1314,8 @@
|
|
|
1287
1314
|
},
|
|
1288
1315
|
{
|
|
1289
1316
|
"name": "focused",
|
|
1290
|
-
"type": "boolean"
|
|
1317
|
+
"type": "boolean",
|
|
1318
|
+
"description": "Has keyboard focus. Setting it moves focus into the field and clearing it blurs the field; it reflects whether the field is focused. Set it on at most one field, since only one can hold focus."
|
|
1291
1319
|
},
|
|
1292
1320
|
{
|
|
1293
1321
|
"name": "tooltip",
|
|
@@ -1488,7 +1516,16 @@
|
|
|
1488
1516
|
},
|
|
1489
1517
|
{
|
|
1490
1518
|
"name": "thickness",
|
|
1491
|
-
"type": "string"
|
|
1519
|
+
"type": "string",
|
|
1520
|
+
"enum": [
|
|
1521
|
+
"0",
|
|
1522
|
+
"1",
|
|
1523
|
+
"2",
|
|
1524
|
+
"3",
|
|
1525
|
+
"4",
|
|
1526
|
+
"8"
|
|
1527
|
+
],
|
|
1528
|
+
"description": "A border-width step, resolved to var(--border-width-N). \"1px\" and the other px spellings are read as their step; anything else is the 1px step."
|
|
1492
1529
|
},
|
|
1493
1530
|
{
|
|
1494
1531
|
"name": "color",
|
|
@@ -2061,7 +2098,15 @@
|
|
|
2061
2098
|
},
|
|
2062
2099
|
{
|
|
2063
2100
|
"name": "fit",
|
|
2064
|
-
"type": "string"
|
|
2101
|
+
"type": "string",
|
|
2102
|
+
"enum": [
|
|
2103
|
+
"cover",
|
|
2104
|
+
"contain",
|
|
2105
|
+
"fill",
|
|
2106
|
+
"none",
|
|
2107
|
+
"scale-down"
|
|
2108
|
+
],
|
|
2109
|
+
"description": "object-fit for the image. Applied as a class; any other value falls back to \"cover\"."
|
|
2065
2110
|
},
|
|
2066
2111
|
{
|
|
2067
2112
|
"name": "radius",
|
|
@@ -2080,7 +2125,15 @@
|
|
|
2080
2125
|
},
|
|
2081
2126
|
{
|
|
2082
2127
|
"name": "shadow",
|
|
2083
|
-
"type": "string"
|
|
2128
|
+
"type": "string",
|
|
2129
|
+
"enum": [
|
|
2130
|
+
"none",
|
|
2131
|
+
"sm",
|
|
2132
|
+
"md",
|
|
2133
|
+
"lg",
|
|
2134
|
+
"xl"
|
|
2135
|
+
],
|
|
2136
|
+
"description": "A shadow step. Applied as a class; any other value falls back to \"none\"."
|
|
2084
2137
|
}
|
|
2085
2138
|
]
|
|
2086
2139
|
},
|
|
@@ -2133,10 +2186,11 @@
|
|
|
2133
2186
|
"name": "size",
|
|
2134
2187
|
"type": "string",
|
|
2135
2188
|
"enum": [
|
|
2136
|
-
"
|
|
2137
|
-
"
|
|
2138
|
-
"
|
|
2139
|
-
]
|
|
2189
|
+
"sm",
|
|
2190
|
+
"md",
|
|
2191
|
+
"lg"
|
|
2192
|
+
],
|
|
2193
|
+
"description": "A size step. small, default and large still resolve, and are rewritten to these."
|
|
2140
2194
|
},
|
|
2141
2195
|
{
|
|
2142
2196
|
"name": "for",
|
|
@@ -2320,6 +2374,11 @@
|
|
|
2320
2374
|
"role": "content",
|
|
2321
2375
|
"contentModel": "text-or-children",
|
|
2322
2376
|
"props": [
|
|
2377
|
+
{
|
|
2378
|
+
"name": "description",
|
|
2379
|
+
"type": "string",
|
|
2380
|
+
"description": "Extra text a screen reader reads after the link's name, wired with aria-describedby inside the shadow root, where the <a> is. bd-tooltip sets it on a trigger."
|
|
2381
|
+
},
|
|
2323
2382
|
{
|
|
2324
2383
|
"name": "variant",
|
|
2325
2384
|
"type": "string",
|
|
@@ -2401,6 +2460,11 @@
|
|
|
2401
2460
|
"error"
|
|
2402
2461
|
],
|
|
2403
2462
|
"description": "A semantic colour role, not a CSS colour. Resolves to a palette token."
|
|
2463
|
+
},
|
|
2464
|
+
{
|
|
2465
|
+
"name": "arrow",
|
|
2466
|
+
"type": "boolean",
|
|
2467
|
+
"description": "A trailing arrow after the label, for a standalone call-to-action link such as Read more. Every variant, state and surface applies; the arrow takes the link's ink. Slot a bd-*-icon into slot=\"icon\" to swap the glyph. It is decorative: the label must say where the link goes."
|
|
2404
2468
|
}
|
|
2405
2469
|
]
|
|
2406
2470
|
},
|
|
@@ -2413,15 +2477,32 @@
|
|
|
2413
2477
|
"props": [
|
|
2414
2478
|
{
|
|
2415
2479
|
"name": "type",
|
|
2416
|
-
"type": "string"
|
|
2480
|
+
"type": "string",
|
|
2481
|
+
"enum": [
|
|
2482
|
+
"unordered",
|
|
2483
|
+
"ordered"
|
|
2484
|
+
],
|
|
2485
|
+
"description": "The tag: <ul> or <ol>. Any other value falls back to \"unordered\"."
|
|
2417
2486
|
},
|
|
2418
2487
|
{
|
|
2419
2488
|
"name": "spacing",
|
|
2420
|
-
"type": "string"
|
|
2489
|
+
"type": "string",
|
|
2490
|
+
"enum": [
|
|
2491
|
+
"sm",
|
|
2492
|
+
"md",
|
|
2493
|
+
"lg"
|
|
2494
|
+
],
|
|
2495
|
+
"description": "The gap between items when horizontal. Any other value falls back to \"md\"."
|
|
2421
2496
|
},
|
|
2422
2497
|
{
|
|
2423
2498
|
"name": "variant",
|
|
2424
|
-
"type": "string"
|
|
2499
|
+
"type": "string",
|
|
2500
|
+
"enum": [
|
|
2501
|
+
"default",
|
|
2502
|
+
"compact",
|
|
2503
|
+
"spacious"
|
|
2504
|
+
],
|
|
2505
|
+
"description": "The gap between items. Any other value falls back to \"default\"."
|
|
2425
2506
|
},
|
|
2426
2507
|
{
|
|
2427
2508
|
"name": "start",
|
|
@@ -2429,7 +2510,12 @@
|
|
|
2429
2510
|
},
|
|
2430
2511
|
{
|
|
2431
2512
|
"name": "orientation",
|
|
2432
|
-
"type": "string"
|
|
2513
|
+
"type": "string",
|
|
2514
|
+
"enum": [
|
|
2515
|
+
"vertical",
|
|
2516
|
+
"horizontal"
|
|
2517
|
+
],
|
|
2518
|
+
"description": "Flow of the items. Any other value falls back to \"vertical\"."
|
|
2433
2519
|
}
|
|
2434
2520
|
]
|
|
2435
2521
|
},
|
|
@@ -2549,9 +2635,10 @@
|
|
|
2549
2635
|
"small",
|
|
2550
2636
|
"regular",
|
|
2551
2637
|
"large",
|
|
2552
|
-
"lead"
|
|
2638
|
+
"lead",
|
|
2639
|
+
"eyebrow"
|
|
2553
2640
|
],
|
|
2554
|
-
"description": "Body type role. Replaces kind, which still resolves."
|
|
2641
|
+
"description": "Body type role. Replaces kind, which still resolves. eyebrow is the short brand-ink label above a section title, in text-brand: the label-large role (16px, Medium 500) from lg up, label-default (14px) below lg."
|
|
2555
2642
|
},
|
|
2556
2643
|
{
|
|
2557
2644
|
"name": "kind",
|
|
@@ -2652,7 +2739,7 @@
|
|
|
2652
2739
|
"warning",
|
|
2653
2740
|
"error"
|
|
2654
2741
|
],
|
|
2655
|
-
"description": "A
|
|
2742
|
+
"description": "A semantic colour role, not a CSS colour, the same set bd-h and bd-display take. primary is brand blue; inverse is white on a dark or brand band."
|
|
2656
2743
|
}
|
|
2657
2744
|
]
|
|
2658
2745
|
},
|
|
@@ -2732,6 +2819,66 @@
|
|
|
2732
2819
|
}
|
|
2733
2820
|
]
|
|
2734
2821
|
},
|
|
2822
|
+
{
|
|
2823
|
+
"tag": "bd-pagination-dots",
|
|
2824
|
+
"packageExport": "./pagination-dots",
|
|
2825
|
+
"module": "./src/components/pagination-dots/pagination-dots.js",
|
|
2826
|
+
"role": "navigation",
|
|
2827
|
+
"contentModel": "none",
|
|
2828
|
+
"events": [
|
|
2829
|
+
"bd-change",
|
|
2830
|
+
"bd-toggle"
|
|
2831
|
+
],
|
|
2832
|
+
"props": [
|
|
2833
|
+
{
|
|
2834
|
+
"name": "count",
|
|
2835
|
+
"type": "number",
|
|
2836
|
+
"description": "How many dots, one per slide or page. Below 2 nothing renders."
|
|
2837
|
+
},
|
|
2838
|
+
{
|
|
2839
|
+
"name": "current",
|
|
2840
|
+
"type": "number",
|
|
2841
|
+
"description": "Which dot is current, 1-based, held between 1 and count. The owner of the slides sets it; a visitor's pick fires bd-change with detail.current."
|
|
2842
|
+
},
|
|
2843
|
+
{
|
|
2844
|
+
"name": "label",
|
|
2845
|
+
"type": "string",
|
|
2846
|
+
"default": "Slides",
|
|
2847
|
+
"description": "Accessible name of the group: what the dots move through. Set it in the page's language."
|
|
2848
|
+
},
|
|
2849
|
+
{
|
|
2850
|
+
"name": "itemLabel",
|
|
2851
|
+
"type": "string",
|
|
2852
|
+
"attributeName": "item-label",
|
|
2853
|
+
"default": "Go to slide",
|
|
2854
|
+
"description": "Starts each dot's accessible name; the dot's number follows it. Set it in the page's language."
|
|
2855
|
+
},
|
|
2856
|
+
{
|
|
2857
|
+
"name": "autoplay",
|
|
2858
|
+
"type": "boolean",
|
|
2859
|
+
"default": false,
|
|
2860
|
+
"description": "The atom advances itself every delay ms, wrapping after the last slide, and the current pill fills as the time runs. Each advance fires bd-change like a click. Picking a dot stops it for good (WCAG 2.2.2); it never starts under prefers-reduced-motion."
|
|
2861
|
+
},
|
|
2862
|
+
{
|
|
2863
|
+
"name": "delay",
|
|
2864
|
+
"type": "number",
|
|
2865
|
+
"default": 4000,
|
|
2866
|
+
"description": "Milliseconds each slide shows under autoplay. Held at 1000 or more."
|
|
2867
|
+
},
|
|
2868
|
+
{
|
|
2869
|
+
"name": "paused",
|
|
2870
|
+
"type": "boolean",
|
|
2871
|
+
"default": false,
|
|
2872
|
+
"description": "Autoplay stopped for good: set when the visitor picks a dot, or under prefers-reduced-motion, and otherwise only by the owner. bd-toggle reports it."
|
|
2873
|
+
},
|
|
2874
|
+
{
|
|
2875
|
+
"name": "held",
|
|
2876
|
+
"type": "boolean",
|
|
2877
|
+
"default": false,
|
|
2878
|
+
"description": "A transient hold the owner sets while the pointer or focus is on its slides. The atom holds itself the same way while the pointer or focus is on the dots."
|
|
2879
|
+
}
|
|
2880
|
+
]
|
|
2881
|
+
},
|
|
2735
2882
|
{
|
|
2736
2883
|
"tag": "bd-picture",
|
|
2737
2884
|
"packageExport": "./picture",
|
|
@@ -2767,7 +2914,15 @@
|
|
|
2767
2914
|
},
|
|
2768
2915
|
{
|
|
2769
2916
|
"name": "fit",
|
|
2770
|
-
"type": "string"
|
|
2917
|
+
"type": "string",
|
|
2918
|
+
"enum": [
|
|
2919
|
+
"cover",
|
|
2920
|
+
"contain",
|
|
2921
|
+
"fill",
|
|
2922
|
+
"none",
|
|
2923
|
+
"scale-down"
|
|
2924
|
+
],
|
|
2925
|
+
"description": "object-fit for the fallback image. Applied as a class; any other value falls back to \"cover\"."
|
|
2771
2926
|
},
|
|
2772
2927
|
{
|
|
2773
2928
|
"name": "radius",
|
|
@@ -2886,7 +3041,8 @@
|
|
|
2886
3041
|
"info",
|
|
2887
3042
|
"success",
|
|
2888
3043
|
"error"
|
|
2889
|
-
]
|
|
3044
|
+
],
|
|
3045
|
+
"description": "Colour of the fill. Unset is the default fill; any other value is cleared."
|
|
2890
3046
|
}
|
|
2891
3047
|
]
|
|
2892
3048
|
},
|
|
@@ -2960,10 +3116,11 @@
|
|
|
2960
3116
|
"name": "size",
|
|
2961
3117
|
"type": "string",
|
|
2962
3118
|
"enum": [
|
|
2963
|
-
"
|
|
2964
|
-
"
|
|
2965
|
-
"
|
|
2966
|
-
]
|
|
3119
|
+
"sm",
|
|
3120
|
+
"md",
|
|
3121
|
+
"lg"
|
|
3122
|
+
],
|
|
3123
|
+
"description": "A size step. small, default and large still resolve, and are rewritten to these."
|
|
2967
3124
|
},
|
|
2968
3125
|
{
|
|
2969
3126
|
"name": "surface",
|
|
@@ -3251,7 +3408,8 @@
|
|
|
3251
3408
|
},
|
|
3252
3409
|
{
|
|
3253
3410
|
"name": "controls",
|
|
3254
|
-
"type": "boolean"
|
|
3411
|
+
"type": "boolean",
|
|
3412
|
+
"description": "Native playback controls, on by default. In HTML, controls=\"false\" turns them off; leaving the attribute out does not. Off only for decoration that is muted and loops."
|
|
3255
3413
|
},
|
|
3256
3414
|
{
|
|
3257
3415
|
"name": "muted",
|