@marioschmidt/design-system-components 1.0.70 → 1.0.71
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/README.md +280 -42
- package/dist/bds/bds.css +1 -1
- package/dist/bds/bds.esm.js +1 -1
- package/dist/bds/p-D4AJ85X0.js +3 -0
- package/dist/bds/p-D4AJ85X0.js.map +1 -0
- package/dist/{www/build/p-d7e8ddec.entry.js → bds/p-b9a761d3.entry.js} +2 -2
- package/dist/cjs/bds.cjs.js +1 -1
- package/dist/cjs/ds-button_2.cjs.entry.js +1 -1
- package/dist/cjs/index-BpGV3QoB.js +1392 -0
- package/dist/cjs/index-BpGV3QoB.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/esm/bds.js +2 -2
- package/dist/esm/ds-button_2.entry.js +1 -1
- package/dist/esm/index-D4AJ85X0.js +1385 -0
- package/dist/esm/index-D4AJ85X0.js.map +1 -0
- package/dist/esm/loader.js +2 -2
- package/dist/www/build/bds.css +1 -1
- package/dist/www/build/bds.esm.js +1 -1
- package/dist/www/build/p-D4AJ85X0.js +3 -0
- package/dist/www/build/p-D4AJ85X0.js.map +1 -0
- package/dist/{bds/p-d7e8ddec.entry.js → www/build/p-b9a761d3.entry.js} +2 -2
- package/dist/www/build/p-f1cd5881.css +1 -0
- package/dist/www/css/README.md +837 -0
- package/dist/www/css/advertorial/components/_dsysdocs.css +1 -1
- package/dist/www/css/advertorial/components/accordion.css +1 -1
- package/dist/www/css/advertorial/components/article.css +1 -1
- package/dist/www/css/advertorial/components/audioplayer.css +1 -1
- package/dist/www/css/advertorial/components/avatar.css +1 -1
- package/dist/www/css/advertorial/components/badge.css +1 -1
- package/dist/www/css/advertorial/components/breadcrumb.css +1 -1
- package/dist/www/css/advertorial/components/breakingnews.css +1 -1
- package/dist/www/css/advertorial/components/button.css +1 -1
- package/dist/www/css/advertorial/components/card.css +1 -1
- package/dist/www/css/advertorial/components/carousel.css +1 -1
- package/dist/www/css/advertorial/components/chip.css +1 -1
- package/dist/www/css/advertorial/components/datepicker.css +1 -1
- package/dist/www/css/advertorial/components/drawers.css +1 -1
- package/dist/www/css/advertorial/components/dropdown.css +1 -1
- package/dist/www/css/advertorial/components/footer.css +1 -1
- package/dist/www/css/advertorial/components/icon.css +1 -1
- package/dist/www/css/advertorial/components/infoelement.css +1 -1
- package/dist/www/css/advertorial/components/inputfield.css +1 -1
- package/dist/www/css/advertorial/components/liveticker.css +1 -1
- package/dist/www/css/advertorial/components/mediaplayer.css +1 -1
- package/dist/www/css/advertorial/components/menu.css +1 -1
- package/dist/www/css/advertorial/components/newsticker.css +1 -1
- package/dist/www/css/advertorial/components/pagination.css +1 -1
- package/dist/www/css/advertorial/components/paywall.css +1 -1
- package/dist/www/css/advertorial/components/quote.css +1 -1
- package/dist/www/css/advertorial/components/radiobutton.css +1 -1
- package/dist/www/css/advertorial/components/search.css +1 -1
- package/dist/www/css/advertorial/components/sectiontitle.css +1 -1
- package/dist/www/css/advertorial/components/separator.css +1 -1
- package/dist/www/css/advertorial/components/skeletons.css +1 -1
- package/dist/www/css/advertorial/components/slider.css +1 -1
- package/dist/www/css/advertorial/components/specialnavi.css +1 -1
- package/dist/www/css/advertorial/components/spinner.css +1 -1
- package/dist/www/css/advertorial/components/tab.css +1 -1
- package/dist/www/css/advertorial/components/table.css +1 -1
- package/dist/www/css/advertorial/components/teaser.css +1 -1
- package/dist/www/css/advertorial/components/toggleswitch.css +1 -1
- package/dist/www/css/advertorial/components/video.css +1 -1
- package/dist/www/css/advertorial/theme.css +1 -1
- package/dist/www/css/advertorial/tokens.css +1 -1
- package/dist/www/css/bild/components/_dsysdoc.css +1 -1
- package/dist/www/css/bild/components/_dsysdocs.css +1 -1
- package/dist/www/css/bild/components/accordion.css +1 -1
- package/dist/www/css/bild/components/alert.css +1 -1
- package/dist/www/css/bild/components/article.css +1 -1
- package/dist/www/css/bild/components/audioplayer.css +1 -1
- package/dist/www/css/bild/components/avatar.css +1 -1
- package/dist/www/css/bild/components/badge.css +1 -1
- package/dist/www/css/bild/components/breadcrumb.css +1 -1
- package/dist/www/css/bild/components/breakingnews.css +1 -1
- package/dist/www/css/bild/components/button.css +3 -3
- package/dist/www/css/bild/components/card.css +1 -1
- package/dist/www/css/bild/components/carousel.css +1 -1
- package/dist/www/css/bild/components/chip.css +1 -1
- package/dist/www/css/bild/components/datepicker.css +1 -1
- package/dist/www/css/bild/components/drawers.css +1 -1
- package/dist/www/css/bild/components/dropdown.css +1 -1
- package/dist/www/css/bild/components/empties.css +1 -1
- package/dist/www/css/bild/components/foldout.css +1 -1
- package/dist/www/css/bild/components/footer.css +1 -1
- package/dist/www/css/bild/components/gallery.css +1 -1
- package/dist/www/css/bild/components/hey.css +1 -1
- package/dist/www/css/bild/components/icon.css +1 -1
- package/dist/www/css/bild/components/infoelement.css +1 -1
- package/dist/www/css/bild/components/inputfield.css +1 -1
- package/dist/www/css/bild/components/kicker.css +1 -1
- package/dist/www/css/bild/components/liveticker.css +1 -1
- package/dist/www/css/bild/components/mediaplayer.css +1 -1
- package/dist/www/css/bild/components/menu.css +1 -1
- package/dist/www/css/bild/components/menuitem.css +1 -1
- package/dist/www/css/bild/components/newsticker.css +1 -1
- package/dist/www/css/bild/components/pagination.css +1 -1
- package/dist/www/css/bild/components/partnerlinks.css +1 -1
- package/dist/www/css/bild/components/paywall.css +1 -1
- package/dist/www/css/bild/components/quote.css +1 -1
- package/dist/www/css/bild/components/radiobutton.css +1 -1
- package/dist/www/css/bild/components/search.css +1 -1
- package/dist/www/css/bild/components/sectiontitle.css +1 -1
- package/dist/www/css/bild/components/selection.css +1 -1
- package/dist/www/css/bild/components/separator.css +1 -1
- package/dist/www/css/bild/components/skeletons.css +1 -1
- package/dist/www/css/bild/components/slider.css +1 -1
- package/dist/www/css/bild/components/socialsharebutton.css +1 -1
- package/dist/www/css/bild/components/specialnavi.css +1 -1
- package/dist/www/css/bild/components/spinner.css +1 -1
- package/dist/www/css/bild/components/subheader.css +1 -1
- package/dist/www/css/bild/components/tab.css +1 -1
- package/dist/www/css/bild/components/table.css +1 -1
- package/dist/www/css/bild/components/teaser.css +1 -1
- package/dist/www/css/bild/components/textlink.css +1 -1
- package/dist/www/css/bild/components/toggleswitch.css +1 -1
- package/dist/www/css/bild/components/video.css +1 -1
- package/dist/www/css/bild/theme.css +1 -3
- package/dist/www/css/bild/tokens.css +1 -1
- package/dist/www/css/bundles/advertorial.css +1 -1
- package/dist/www/css/bundles/bild.css +3 -5
- package/dist/www/css/bundles/sportbild.css +3 -5
- package/dist/www/css/shared/colorprimitive.css +1 -1
- package/dist/www/css/shared/fontprimitive.css +1 -1
- package/dist/www/css/shared/primitives.css +1 -1
- package/dist/www/css/shared/sizeprimitive.css +1 -1
- package/dist/www/css/shared/spaceprimitive.css +1 -1
- package/dist/www/css/sportbild/components/_dsysdoc.css +1 -1
- package/dist/www/css/sportbild/components/_dsysdocs.css +1 -1
- package/dist/www/css/sportbild/components/accordion.css +1 -1
- package/dist/www/css/sportbild/components/alert.css +1 -1
- package/dist/www/css/sportbild/components/article.css +1 -1
- package/dist/www/css/sportbild/components/audioplayer.css +1 -1
- package/dist/www/css/sportbild/components/avatar.css +1 -1
- package/dist/www/css/sportbild/components/badge.css +1 -1
- package/dist/www/css/sportbild/components/breadcrumb.css +1 -1
- package/dist/www/css/sportbild/components/breakingnews.css +1 -1
- package/dist/www/css/sportbild/components/button.css +3 -3
- package/dist/www/css/sportbild/components/card.css +1 -1
- package/dist/www/css/sportbild/components/carousel.css +1 -1
- package/dist/www/css/sportbild/components/chip.css +1 -1
- package/dist/www/css/sportbild/components/datepicker.css +1 -1
- package/dist/www/css/sportbild/components/drawers.css +1 -1
- package/dist/www/css/sportbild/components/dropdown.css +1 -1
- package/dist/www/css/sportbild/components/empties.css +1 -1
- package/dist/www/css/sportbild/components/foldout.css +1 -1
- package/dist/www/css/sportbild/components/footer.css +1 -1
- package/dist/www/css/sportbild/components/gallery.css +1 -1
- package/dist/www/css/sportbild/components/hey.css +1 -1
- package/dist/www/css/sportbild/components/icon.css +1 -1
- package/dist/www/css/sportbild/components/infoelement.css +1 -1
- package/dist/www/css/sportbild/components/inputfield.css +1 -1
- package/dist/www/css/sportbild/components/kicker.css +1 -1
- package/dist/www/css/sportbild/components/liveticker.css +1 -1
- package/dist/www/css/sportbild/components/mediaplayer.css +1 -1
- package/dist/www/css/sportbild/components/menu.css +1 -1
- package/dist/www/css/sportbild/components/menuitem.css +1 -1
- package/dist/www/css/sportbild/components/newsticker.css +1 -1
- package/dist/www/css/sportbild/components/pagination.css +1 -1
- package/dist/www/css/sportbild/components/partnerlinks.css +1 -1
- package/dist/www/css/sportbild/components/paywall.css +1 -1
- package/dist/www/css/sportbild/components/quote.css +1 -1
- package/dist/www/css/sportbild/components/radiobutton.css +1 -1
- package/dist/www/css/sportbild/components/search.css +1 -1
- package/dist/www/css/sportbild/components/sectiontitle.css +1 -1
- package/dist/www/css/sportbild/components/selection.css +1 -1
- package/dist/www/css/sportbild/components/separator.css +1 -1
- package/dist/www/css/sportbild/components/skeletons.css +1 -1
- package/dist/www/css/sportbild/components/slider.css +1 -1
- package/dist/www/css/sportbild/components/socialsharebutton.css +1 -1
- package/dist/www/css/sportbild/components/specialnavi.css +1 -1
- package/dist/www/css/sportbild/components/spinner.css +1 -1
- package/dist/www/css/sportbild/components/subheader.css +1 -1
- package/dist/www/css/sportbild/components/tab.css +1 -1
- package/dist/www/css/sportbild/components/table.css +1 -1
- package/dist/www/css/sportbild/components/teaser.css +1 -1
- package/dist/www/css/sportbild/components/textlink.css +1 -1
- package/dist/www/css/sportbild/components/toggleswitch.css +1 -1
- package/dist/www/css/sportbild/components/video.css +1 -1
- package/dist/www/css/sportbild/theme.css +1 -3
- package/dist/www/css/sportbild/tokens.css +1 -1
- package/dist/www/index.html +1 -1
- package/package.json +3 -3
- package/dist/bds/p-B7bu6LKB.js +0 -3
- package/dist/bds/p-B7bu6LKB.js.map +0 -1
- package/dist/cjs/index-BPxehkGV.js +0 -1392
- package/dist/cjs/index-BPxehkGV.js.map +0 -1
- package/dist/esm/index-B7bu6LKB.js +0 -1385
- package/dist/esm/index-B7bu6LKB.js.map +0 -1
- package/dist/www/build/p-B7bu6LKB.js +0 -3
- package/dist/www/build/p-B7bu6LKB.js.map +0 -1
- package/dist/www/build/p-ab3e85ed.css +0 -1
- /package/dist/bds/{p-d7e8ddec.entry.js.map → p-b9a761d3.entry.js.map} +0 -0
- /package/dist/www/build/{p-d7e8ddec.entry.js.map → p-b9a761d3.entry.js.map} +0 -0
package/README.md
CHANGED
|
@@ -1,8 +1,30 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 🧩 BILD Design System Components
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> **Part of the [BILD Design Ops Pipeline](../../README.md)** | [Token Documentation](../tokens/README.md) | [Icon Documentation](../icons/README.md)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Stencil-based Web Components for the BILD Design System. Components consume design tokens via CSS Custom Properties and work in any framework.
|
|
6
|
+
|
|
7
|
+
[](https://www.npmjs.com/package/@marioschmidt/design-system-components)
|
|
8
|
+
[](https://github.com/UXWizard25/vv-token-test-v3/actions)
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 📋 Table of Contents
|
|
13
|
+
|
|
14
|
+
- [📦 Installation](#-installation)
|
|
15
|
+
- [🚀 Usage](#-usage)
|
|
16
|
+
- [🧩 Available Components](#-available-components)
|
|
17
|
+
- [🎨 Theming](#-theming)
|
|
18
|
+
- [🌓 Shadow DOM](#-shadow-dom)
|
|
19
|
+
- [📁 Project Structure](#-project-structure)
|
|
20
|
+
- [⚙️ Development](#️-development)
|
|
21
|
+
- [📚 Storybook](#-storybook)
|
|
22
|
+
- [🔗 Related](#-related)
|
|
23
|
+
- [📄 License](#-license)
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 📦 Installation
|
|
6
28
|
|
|
7
29
|
```bash
|
|
8
30
|
npm install @marioschmidt/design-system-components
|
|
@@ -14,7 +36,9 @@ npm install @marioschmidt/design-system-components
|
|
|
14
36
|
npm install @marioschmidt/design-system-tokens @marioschmidt/design-system-components
|
|
15
37
|
```
|
|
16
38
|
|
|
17
|
-
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 🚀 Usage
|
|
18
42
|
|
|
19
43
|
### Option 1: Lazy Loading (Recommended)
|
|
20
44
|
|
|
@@ -38,7 +62,7 @@ import '@marioschmidt/design-system-components/components';
|
|
|
38
62
|
import { DsButton, DsCard } from '@marioschmidt/design-system-components';
|
|
39
63
|
```
|
|
40
64
|
|
|
41
|
-
|
|
65
|
+
### HTML Usage
|
|
42
66
|
|
|
43
67
|
```html
|
|
44
68
|
<!DOCTYPE html>
|
|
@@ -63,35 +87,46 @@ import { DsButton, DsCard } from '@marioschmidt/design-system-components';
|
|
|
63
87
|
</html>
|
|
64
88
|
```
|
|
65
89
|
|
|
66
|
-
|
|
90
|
+
---
|
|
67
91
|
|
|
68
|
-
|
|
69
|
-
|-----------|-----|-------------|
|
|
70
|
-
| Button | `<ds-button>` | Primary, secondary, ghost variants |
|
|
71
|
-
| Card | `<ds-card>` | Content container with styling |
|
|
92
|
+
## 🧩 Available Components
|
|
72
93
|
|
|
73
|
-
|
|
94
|
+
| Component | Tag | Variants | Description |
|
|
95
|
+
|-----------|-----|----------|-------------|
|
|
96
|
+
| **Button** | `<ds-button>` | `primary`, `secondary`, `ghost` | Interactive button with hover/active states |
|
|
97
|
+
| **Card** | `<ds-card>` | - | Content container with shadow and padding |
|
|
74
98
|
|
|
75
|
-
|
|
99
|
+
### Button
|
|
76
100
|
|
|
77
101
|
```html
|
|
78
|
-
<!--
|
|
79
|
-
<
|
|
80
|
-
<ds-button variant="primary">BILD Button</ds-button>
|
|
81
|
-
</body>
|
|
102
|
+
<!-- Primary (default) -->
|
|
103
|
+
<ds-button variant="primary">Primary Button</ds-button>
|
|
82
104
|
|
|
83
|
-
<!--
|
|
84
|
-
<
|
|
85
|
-
<ds-button variant="primary">Sport Button</ds-button>
|
|
86
|
-
</body>
|
|
105
|
+
<!-- Secondary -->
|
|
106
|
+
<ds-button variant="secondary">Secondary Button</ds-button>
|
|
87
107
|
|
|
88
|
-
<!--
|
|
89
|
-
<
|
|
90
|
-
|
|
91
|
-
|
|
108
|
+
<!-- Ghost -->
|
|
109
|
+
<ds-button variant="ghost">Ghost Button</ds-button>
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Card
|
|
113
|
+
|
|
114
|
+
```html
|
|
115
|
+
<ds-card>
|
|
116
|
+
<h2>Card Title</h2>
|
|
117
|
+
<p>Card content with automatic styling.</p>
|
|
118
|
+
</ds-card>
|
|
92
119
|
```
|
|
93
120
|
|
|
94
|
-
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 🎨 Theming
|
|
124
|
+
|
|
125
|
+
Components automatically adapt to brand/theme/density changes via CSS Custom Properties.
|
|
126
|
+
|
|
127
|
+
### Data Attributes
|
|
128
|
+
|
|
129
|
+
Set these on `<body>` or any parent element:
|
|
95
130
|
|
|
96
131
|
| Attribute | Values | Purpose |
|
|
97
132
|
|-----------|--------|---------|
|
|
@@ -100,7 +135,36 @@ Components automatically adapt to brand/theme changes via CSS Custom Properties:
|
|
|
100
135
|
| `data-theme` | `light`, `dark` | Color mode |
|
|
101
136
|
| `data-density` | `default`, `dense`, `spacious` | Spacing density |
|
|
102
137
|
|
|
103
|
-
|
|
138
|
+
### Brand Examples
|
|
139
|
+
|
|
140
|
+
```html
|
|
141
|
+
<!-- BILD Brand (Light) -->
|
|
142
|
+
<body data-color-brand="bild" data-content-brand="bild" data-theme="light" data-density="default">
|
|
143
|
+
<ds-button variant="primary">BILD Button</ds-button> <!-- Red -->
|
|
144
|
+
</body>
|
|
145
|
+
|
|
146
|
+
<!-- SportBILD Brand (Dark, Dense) -->
|
|
147
|
+
<body data-color-brand="sportbild" data-content-brand="sportbild" data-theme="dark" data-density="dense">
|
|
148
|
+
<ds-button variant="primary">Sport Button</ds-button> <!-- Blue -->
|
|
149
|
+
</body>
|
|
150
|
+
|
|
151
|
+
<!-- Advertorial in BILD context -->
|
|
152
|
+
<body data-color-brand="bild" data-content-brand="advertorial" data-theme="light">
|
|
153
|
+
<ds-button variant="primary">Advertorial Button</ds-button> <!-- BILD colors, Advertorial typography -->
|
|
154
|
+
</body>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Runtime Switching
|
|
158
|
+
|
|
159
|
+
```javascript
|
|
160
|
+
// Switch brand at runtime - components update automatically!
|
|
161
|
+
document.body.dataset.colorBrand = 'sportbild';
|
|
162
|
+
document.body.dataset.theme = 'dark';
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## 🌓 Shadow DOM
|
|
104
168
|
|
|
105
169
|
All components use Shadow DOM for style encapsulation. Design tokens are inherited through CSS Custom Properties:
|
|
106
170
|
|
|
@@ -111,38 +175,212 @@ Light DOM Shadow DOM
|
|
|
111
175
|
│ #shadow-root
|
|
112
176
|
│ CSS Variables set here: .button {
|
|
113
177
|
│ --button-primary-bg: #DD0000 background: var(--button-primary-bg);
|
|
178
|
+
│ --button-label-color: #FFF color: var(--button-label-color);
|
|
114
179
|
│ /* Inherits from body! */
|
|
115
180
|
└────────────────────────────► }
|
|
181
|
+
Variables inherit
|
|
182
|
+
through Shadow DOM
|
|
116
183
|
```
|
|
117
184
|
|
|
118
|
-
|
|
185
|
+
### How It Works
|
|
119
186
|
|
|
120
|
-
|
|
187
|
+
1. **Token CSS** is loaded in the Light DOM (on `<body>` or `<html>`)
|
|
188
|
+
2. **CSS Custom Properties inherit** through the Shadow DOM boundary
|
|
189
|
+
3. **Components read tokens** using `var(--token-name)`
|
|
190
|
+
4. **No JavaScript needed** for theming - pure CSS inheritance
|
|
121
191
|
|
|
122
|
-
|
|
123
|
-
|
|
192
|
+
### What Inherits
|
|
193
|
+
|
|
194
|
+
| Token Type | Inheritance | Example |
|
|
195
|
+
|------------|-------------|---------|
|
|
196
|
+
| Color tokens | ✅ Inherits | `var(--button-primary-bg-color)` |
|
|
197
|
+
| Spacing tokens | ✅ Inherits | `var(--button-inline-space)` |
|
|
198
|
+
| Typography tokens | ✅ Inherits | `var(--button-label-font-size)` |
|
|
199
|
+
| Effects (shadows) | ✅ Inherits | `var(--shadow-soft-md)` |
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## 📁 Project Structure
|
|
124
204
|
|
|
125
|
-
|
|
126
|
-
|
|
205
|
+
```
|
|
206
|
+
packages/components/
|
|
207
|
+
├── src/ # Stencil component source
|
|
208
|
+
│ ├── ds-button/
|
|
209
|
+
│ │ ├── ds-button.tsx # Component logic
|
|
210
|
+
│ │ ├── ds-button.css # Component styles (uses tokens)
|
|
211
|
+
│ │ └── ds-button.stories.ts # Storybook stories
|
|
212
|
+
│ ├── ds-card/
|
|
213
|
+
│ │ ├── ds-card.tsx
|
|
214
|
+
│ │ ├── ds-card.css
|
|
215
|
+
│ │ └── ds-card.stories.ts
|
|
216
|
+
│ └── components.d.ts # Generated type definitions
|
|
217
|
+
│
|
|
218
|
+
├── docs/ # Storybook MDX documentation
|
|
219
|
+
│ ├── intro.mdx # Introduction & overview
|
|
220
|
+
│ ├── colors.mdx # Color tokens
|
|
221
|
+
│ ├── typography.mdx # Typography tokens
|
|
222
|
+
│ ├── spacing.mdx # Spacing & density
|
|
223
|
+
│ └── effects.mdx # Shadows & effects
|
|
224
|
+
│
|
|
225
|
+
├── dist/ # Built output (gitignored)
|
|
226
|
+
│ ├── esm/ # ES Modules
|
|
227
|
+
│ ├── cjs/ # CommonJS
|
|
228
|
+
│ ├── components/ # Custom Elements (auto-define)
|
|
229
|
+
│ ├── loader/ # Lazy loader
|
|
230
|
+
│ └── types/ # TypeScript definitions
|
|
231
|
+
│
|
|
232
|
+
├── package.json
|
|
233
|
+
└── README.md
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## ⚙️ Development
|
|
239
|
+
|
|
240
|
+
### Prerequisites
|
|
241
|
+
|
|
242
|
+
Build tokens first (components depend on token CSS):
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
npm run build:tokens
|
|
127
246
|
```
|
|
128
247
|
|
|
129
|
-
|
|
248
|
+
### Commands
|
|
130
249
|
|
|
131
|
-
|
|
250
|
+
```bash
|
|
251
|
+
# Start dev server with hot reload
|
|
252
|
+
npm run dev:stencil # Port 3333
|
|
253
|
+
|
|
254
|
+
# Build components
|
|
255
|
+
npm run build:components
|
|
256
|
+
|
|
257
|
+
# Build everything (tokens + icons + components)
|
|
258
|
+
npm run build:all
|
|
259
|
+
|
|
260
|
+
# Clean build output
|
|
261
|
+
npm run clean
|
|
262
|
+
```
|
|
132
263
|
|
|
133
|
-
|
|
264
|
+
### Creating New Components
|
|
265
|
+
|
|
266
|
+
1. **Create component directory:**
|
|
267
|
+
```
|
|
268
|
+
packages/components/src/ds-{name}/
|
|
269
|
+
├── ds-{name}.tsx
|
|
270
|
+
├── ds-{name}.css
|
|
271
|
+
└── ds-{name}.stories.ts
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
2. **Component structure:**
|
|
275
|
+
```tsx
|
|
276
|
+
import { Component, Prop, h } from '@stencil/core';
|
|
277
|
+
|
|
278
|
+
@Component({
|
|
279
|
+
tag: 'ds-{name}',
|
|
280
|
+
styleUrl: 'ds-{name}.css',
|
|
281
|
+
shadow: true,
|
|
282
|
+
})
|
|
283
|
+
export class Ds{Name} {
|
|
284
|
+
@Prop() variant: string = 'default';
|
|
285
|
+
|
|
286
|
+
render() {
|
|
287
|
+
return (
|
|
288
|
+
<div class={`ds-{name} ds-{name}--${this.variant}`}>
|
|
289
|
+
<slot></slot>
|
|
290
|
+
</div>
|
|
291
|
+
);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
3. **Use design tokens in CSS:**
|
|
297
|
+
```css
|
|
298
|
+
:host {
|
|
299
|
+
display: block;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
.ds-{name} {
|
|
303
|
+
/* Tokens inherit from Light DOM automatically */
|
|
304
|
+
background: var(--surface-color-primary);
|
|
305
|
+
color: var(--text-color-primary);
|
|
306
|
+
padding: var(--space-2-x);
|
|
307
|
+
border-radius: var(--border-radius-md);
|
|
308
|
+
}
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
## 📚 Storybook
|
|
314
|
+
|
|
315
|
+
Interactive component documentation with live theming.
|
|
134
316
|
|
|
135
317
|
```bash
|
|
136
|
-
#
|
|
137
|
-
npm run
|
|
138
|
-
|
|
318
|
+
npm run storybook # Start dev server (port 6006)
|
|
319
|
+
npm run build:storybook # Build static site
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Features
|
|
323
|
+
|
|
324
|
+
- **4-Axis Controls**: Color Brand, Content Brand, Theme, Density
|
|
325
|
+
- **Component Stories**: All variants with controls
|
|
326
|
+
- **Styleguide Pages**: Colors, Typography, Spacing, Effects
|
|
327
|
+
- **Dark Mode Toggle**: Synced with design tokens
|
|
328
|
+
|
|
329
|
+
### Writing Stories
|
|
330
|
+
|
|
331
|
+
```typescript
|
|
332
|
+
// ds-button.stories.ts
|
|
333
|
+
import type { Meta, StoryObj } from '@storybook/web-components';
|
|
334
|
+
import { html } from 'lit';
|
|
335
|
+
|
|
336
|
+
const meta: Meta = {
|
|
337
|
+
title: 'Components/Button',
|
|
338
|
+
tags: ['autodocs'],
|
|
339
|
+
render: (args) => html`
|
|
340
|
+
<ds-button variant=${args.variant}>
|
|
341
|
+
${args.label}
|
|
342
|
+
</ds-button>
|
|
343
|
+
`,
|
|
344
|
+
argTypes: {
|
|
345
|
+
variant: {
|
|
346
|
+
control: 'select',
|
|
347
|
+
options: ['primary', 'secondary', 'ghost'],
|
|
348
|
+
},
|
|
349
|
+
},
|
|
350
|
+
};
|
|
351
|
+
|
|
352
|
+
export default meta;
|
|
353
|
+
|
|
354
|
+
export const Primary: StoryObj = {
|
|
355
|
+
args: { variant: 'primary', label: 'Click me' },
|
|
356
|
+
};
|
|
139
357
|
```
|
|
140
358
|
|
|
141
|
-
|
|
359
|
+
---
|
|
360
|
+
|
|
361
|
+
## 🔗 Related
|
|
142
362
|
|
|
143
|
-
|
|
144
|
-
|
|
363
|
+
| Document | Description |
|
|
364
|
+
|----------|-------------|
|
|
365
|
+
| [📖 Main README](../../README.md) | Project overview |
|
|
366
|
+
| [📖 Tokens README](../tokens/README.md) | Design tokens documentation |
|
|
367
|
+
| [📖 Icons README](../icons/README.md) | Icon library documentation |
|
|
368
|
+
| [📖 CSS Documentation](../tokens/docs/css.md) | CSS Custom Properties & Shadow DOM |
|
|
145
369
|
|
|
146
|
-
|
|
370
|
+
---
|
|
371
|
+
|
|
372
|
+
## 📄 License
|
|
147
373
|
|
|
148
374
|
MIT
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
**Built with ❤️ for the BILD Design System**
|
|
379
|
+
|
|
380
|
+
| Feature | Status |
|
|
381
|
+
|---------|--------|
|
|
382
|
+
| Shadow DOM | ✅ |
|
|
383
|
+
| CSS Custom Properties | ✅ |
|
|
384
|
+
| 4-Axis Theming | ✅ |
|
|
385
|
+
| TypeScript | ✅ |
|
|
386
|
+
| Storybook | ✅ |
|