@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.
Files changed (193) hide show
  1. package/README.md +280 -42
  2. package/dist/bds/bds.css +1 -1
  3. package/dist/bds/bds.esm.js +1 -1
  4. package/dist/bds/p-D4AJ85X0.js +3 -0
  5. package/dist/bds/p-D4AJ85X0.js.map +1 -0
  6. package/dist/{www/build/p-d7e8ddec.entry.js → bds/p-b9a761d3.entry.js} +2 -2
  7. package/dist/cjs/bds.cjs.js +1 -1
  8. package/dist/cjs/ds-button_2.cjs.entry.js +1 -1
  9. package/dist/cjs/index-BpGV3QoB.js +1392 -0
  10. package/dist/cjs/index-BpGV3QoB.js.map +1 -0
  11. package/dist/cjs/loader.cjs.js +1 -1
  12. package/dist/esm/bds.js +2 -2
  13. package/dist/esm/ds-button_2.entry.js +1 -1
  14. package/dist/esm/index-D4AJ85X0.js +1385 -0
  15. package/dist/esm/index-D4AJ85X0.js.map +1 -0
  16. package/dist/esm/loader.js +2 -2
  17. package/dist/www/build/bds.css +1 -1
  18. package/dist/www/build/bds.esm.js +1 -1
  19. package/dist/www/build/p-D4AJ85X0.js +3 -0
  20. package/dist/www/build/p-D4AJ85X0.js.map +1 -0
  21. package/dist/{bds/p-d7e8ddec.entry.js → www/build/p-b9a761d3.entry.js} +2 -2
  22. package/dist/www/build/p-f1cd5881.css +1 -0
  23. package/dist/www/css/README.md +837 -0
  24. package/dist/www/css/advertorial/components/_dsysdocs.css +1 -1
  25. package/dist/www/css/advertorial/components/accordion.css +1 -1
  26. package/dist/www/css/advertorial/components/article.css +1 -1
  27. package/dist/www/css/advertorial/components/audioplayer.css +1 -1
  28. package/dist/www/css/advertorial/components/avatar.css +1 -1
  29. package/dist/www/css/advertorial/components/badge.css +1 -1
  30. package/dist/www/css/advertorial/components/breadcrumb.css +1 -1
  31. package/dist/www/css/advertorial/components/breakingnews.css +1 -1
  32. package/dist/www/css/advertorial/components/button.css +1 -1
  33. package/dist/www/css/advertorial/components/card.css +1 -1
  34. package/dist/www/css/advertorial/components/carousel.css +1 -1
  35. package/dist/www/css/advertorial/components/chip.css +1 -1
  36. package/dist/www/css/advertorial/components/datepicker.css +1 -1
  37. package/dist/www/css/advertorial/components/drawers.css +1 -1
  38. package/dist/www/css/advertorial/components/dropdown.css +1 -1
  39. package/dist/www/css/advertorial/components/footer.css +1 -1
  40. package/dist/www/css/advertorial/components/icon.css +1 -1
  41. package/dist/www/css/advertorial/components/infoelement.css +1 -1
  42. package/dist/www/css/advertorial/components/inputfield.css +1 -1
  43. package/dist/www/css/advertorial/components/liveticker.css +1 -1
  44. package/dist/www/css/advertorial/components/mediaplayer.css +1 -1
  45. package/dist/www/css/advertorial/components/menu.css +1 -1
  46. package/dist/www/css/advertorial/components/newsticker.css +1 -1
  47. package/dist/www/css/advertorial/components/pagination.css +1 -1
  48. package/dist/www/css/advertorial/components/paywall.css +1 -1
  49. package/dist/www/css/advertorial/components/quote.css +1 -1
  50. package/dist/www/css/advertorial/components/radiobutton.css +1 -1
  51. package/dist/www/css/advertorial/components/search.css +1 -1
  52. package/dist/www/css/advertorial/components/sectiontitle.css +1 -1
  53. package/dist/www/css/advertorial/components/separator.css +1 -1
  54. package/dist/www/css/advertorial/components/skeletons.css +1 -1
  55. package/dist/www/css/advertorial/components/slider.css +1 -1
  56. package/dist/www/css/advertorial/components/specialnavi.css +1 -1
  57. package/dist/www/css/advertorial/components/spinner.css +1 -1
  58. package/dist/www/css/advertorial/components/tab.css +1 -1
  59. package/dist/www/css/advertorial/components/table.css +1 -1
  60. package/dist/www/css/advertorial/components/teaser.css +1 -1
  61. package/dist/www/css/advertorial/components/toggleswitch.css +1 -1
  62. package/dist/www/css/advertorial/components/video.css +1 -1
  63. package/dist/www/css/advertorial/theme.css +1 -1
  64. package/dist/www/css/advertorial/tokens.css +1 -1
  65. package/dist/www/css/bild/components/_dsysdoc.css +1 -1
  66. package/dist/www/css/bild/components/_dsysdocs.css +1 -1
  67. package/dist/www/css/bild/components/accordion.css +1 -1
  68. package/dist/www/css/bild/components/alert.css +1 -1
  69. package/dist/www/css/bild/components/article.css +1 -1
  70. package/dist/www/css/bild/components/audioplayer.css +1 -1
  71. package/dist/www/css/bild/components/avatar.css +1 -1
  72. package/dist/www/css/bild/components/badge.css +1 -1
  73. package/dist/www/css/bild/components/breadcrumb.css +1 -1
  74. package/dist/www/css/bild/components/breakingnews.css +1 -1
  75. package/dist/www/css/bild/components/button.css +3 -3
  76. package/dist/www/css/bild/components/card.css +1 -1
  77. package/dist/www/css/bild/components/carousel.css +1 -1
  78. package/dist/www/css/bild/components/chip.css +1 -1
  79. package/dist/www/css/bild/components/datepicker.css +1 -1
  80. package/dist/www/css/bild/components/drawers.css +1 -1
  81. package/dist/www/css/bild/components/dropdown.css +1 -1
  82. package/dist/www/css/bild/components/empties.css +1 -1
  83. package/dist/www/css/bild/components/foldout.css +1 -1
  84. package/dist/www/css/bild/components/footer.css +1 -1
  85. package/dist/www/css/bild/components/gallery.css +1 -1
  86. package/dist/www/css/bild/components/hey.css +1 -1
  87. package/dist/www/css/bild/components/icon.css +1 -1
  88. package/dist/www/css/bild/components/infoelement.css +1 -1
  89. package/dist/www/css/bild/components/inputfield.css +1 -1
  90. package/dist/www/css/bild/components/kicker.css +1 -1
  91. package/dist/www/css/bild/components/liveticker.css +1 -1
  92. package/dist/www/css/bild/components/mediaplayer.css +1 -1
  93. package/dist/www/css/bild/components/menu.css +1 -1
  94. package/dist/www/css/bild/components/menuitem.css +1 -1
  95. package/dist/www/css/bild/components/newsticker.css +1 -1
  96. package/dist/www/css/bild/components/pagination.css +1 -1
  97. package/dist/www/css/bild/components/partnerlinks.css +1 -1
  98. package/dist/www/css/bild/components/paywall.css +1 -1
  99. package/dist/www/css/bild/components/quote.css +1 -1
  100. package/dist/www/css/bild/components/radiobutton.css +1 -1
  101. package/dist/www/css/bild/components/search.css +1 -1
  102. package/dist/www/css/bild/components/sectiontitle.css +1 -1
  103. package/dist/www/css/bild/components/selection.css +1 -1
  104. package/dist/www/css/bild/components/separator.css +1 -1
  105. package/dist/www/css/bild/components/skeletons.css +1 -1
  106. package/dist/www/css/bild/components/slider.css +1 -1
  107. package/dist/www/css/bild/components/socialsharebutton.css +1 -1
  108. package/dist/www/css/bild/components/specialnavi.css +1 -1
  109. package/dist/www/css/bild/components/spinner.css +1 -1
  110. package/dist/www/css/bild/components/subheader.css +1 -1
  111. package/dist/www/css/bild/components/tab.css +1 -1
  112. package/dist/www/css/bild/components/table.css +1 -1
  113. package/dist/www/css/bild/components/teaser.css +1 -1
  114. package/dist/www/css/bild/components/textlink.css +1 -1
  115. package/dist/www/css/bild/components/toggleswitch.css +1 -1
  116. package/dist/www/css/bild/components/video.css +1 -1
  117. package/dist/www/css/bild/theme.css +1 -3
  118. package/dist/www/css/bild/tokens.css +1 -1
  119. package/dist/www/css/bundles/advertorial.css +1 -1
  120. package/dist/www/css/bundles/bild.css +3 -5
  121. package/dist/www/css/bundles/sportbild.css +3 -5
  122. package/dist/www/css/shared/colorprimitive.css +1 -1
  123. package/dist/www/css/shared/fontprimitive.css +1 -1
  124. package/dist/www/css/shared/primitives.css +1 -1
  125. package/dist/www/css/shared/sizeprimitive.css +1 -1
  126. package/dist/www/css/shared/spaceprimitive.css +1 -1
  127. package/dist/www/css/sportbild/components/_dsysdoc.css +1 -1
  128. package/dist/www/css/sportbild/components/_dsysdocs.css +1 -1
  129. package/dist/www/css/sportbild/components/accordion.css +1 -1
  130. package/dist/www/css/sportbild/components/alert.css +1 -1
  131. package/dist/www/css/sportbild/components/article.css +1 -1
  132. package/dist/www/css/sportbild/components/audioplayer.css +1 -1
  133. package/dist/www/css/sportbild/components/avatar.css +1 -1
  134. package/dist/www/css/sportbild/components/badge.css +1 -1
  135. package/dist/www/css/sportbild/components/breadcrumb.css +1 -1
  136. package/dist/www/css/sportbild/components/breakingnews.css +1 -1
  137. package/dist/www/css/sportbild/components/button.css +3 -3
  138. package/dist/www/css/sportbild/components/card.css +1 -1
  139. package/dist/www/css/sportbild/components/carousel.css +1 -1
  140. package/dist/www/css/sportbild/components/chip.css +1 -1
  141. package/dist/www/css/sportbild/components/datepicker.css +1 -1
  142. package/dist/www/css/sportbild/components/drawers.css +1 -1
  143. package/dist/www/css/sportbild/components/dropdown.css +1 -1
  144. package/dist/www/css/sportbild/components/empties.css +1 -1
  145. package/dist/www/css/sportbild/components/foldout.css +1 -1
  146. package/dist/www/css/sportbild/components/footer.css +1 -1
  147. package/dist/www/css/sportbild/components/gallery.css +1 -1
  148. package/dist/www/css/sportbild/components/hey.css +1 -1
  149. package/dist/www/css/sportbild/components/icon.css +1 -1
  150. package/dist/www/css/sportbild/components/infoelement.css +1 -1
  151. package/dist/www/css/sportbild/components/inputfield.css +1 -1
  152. package/dist/www/css/sportbild/components/kicker.css +1 -1
  153. package/dist/www/css/sportbild/components/liveticker.css +1 -1
  154. package/dist/www/css/sportbild/components/mediaplayer.css +1 -1
  155. package/dist/www/css/sportbild/components/menu.css +1 -1
  156. package/dist/www/css/sportbild/components/menuitem.css +1 -1
  157. package/dist/www/css/sportbild/components/newsticker.css +1 -1
  158. package/dist/www/css/sportbild/components/pagination.css +1 -1
  159. package/dist/www/css/sportbild/components/partnerlinks.css +1 -1
  160. package/dist/www/css/sportbild/components/paywall.css +1 -1
  161. package/dist/www/css/sportbild/components/quote.css +1 -1
  162. package/dist/www/css/sportbild/components/radiobutton.css +1 -1
  163. package/dist/www/css/sportbild/components/search.css +1 -1
  164. package/dist/www/css/sportbild/components/sectiontitle.css +1 -1
  165. package/dist/www/css/sportbild/components/selection.css +1 -1
  166. package/dist/www/css/sportbild/components/separator.css +1 -1
  167. package/dist/www/css/sportbild/components/skeletons.css +1 -1
  168. package/dist/www/css/sportbild/components/slider.css +1 -1
  169. package/dist/www/css/sportbild/components/socialsharebutton.css +1 -1
  170. package/dist/www/css/sportbild/components/specialnavi.css +1 -1
  171. package/dist/www/css/sportbild/components/spinner.css +1 -1
  172. package/dist/www/css/sportbild/components/subheader.css +1 -1
  173. package/dist/www/css/sportbild/components/tab.css +1 -1
  174. package/dist/www/css/sportbild/components/table.css +1 -1
  175. package/dist/www/css/sportbild/components/teaser.css +1 -1
  176. package/dist/www/css/sportbild/components/textlink.css +1 -1
  177. package/dist/www/css/sportbild/components/toggleswitch.css +1 -1
  178. package/dist/www/css/sportbild/components/video.css +1 -1
  179. package/dist/www/css/sportbild/theme.css +1 -3
  180. package/dist/www/css/sportbild/tokens.css +1 -1
  181. package/dist/www/index.html +1 -1
  182. package/package.json +3 -3
  183. package/dist/bds/p-B7bu6LKB.js +0 -3
  184. package/dist/bds/p-B7bu6LKB.js.map +0 -1
  185. package/dist/cjs/index-BPxehkGV.js +0 -1392
  186. package/dist/cjs/index-BPxehkGV.js.map +0 -1
  187. package/dist/esm/index-B7bu6LKB.js +0 -1385
  188. package/dist/esm/index-B7bu6LKB.js.map +0 -1
  189. package/dist/www/build/p-B7bu6LKB.js +0 -3
  190. package/dist/www/build/p-B7bu6LKB.js.map +0 -1
  191. package/dist/www/build/p-ab3e85ed.css +0 -1
  192. /package/dist/bds/{p-d7e8ddec.entry.js.map → p-b9a761d3.entry.js.map} +0 -0
  193. /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
- # @marioschmidt/design-system-components
1
+ # 🧩 BILD Design System Components
2
2
 
3
- BILD Design System Web Components - Stencil-based component library that consumes design tokens.
3
+ > **Part of the [BILD Design Ops Pipeline](../../README.md)** | [Token Documentation](../tokens/README.md) | [Icon Documentation](../icons/README.md)
4
4
 
5
- ## Installation
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
+ [![npm version](https://img.shields.io/npm/v/@marioschmidt/design-system-components.svg)](https://www.npmjs.com/package/@marioschmidt/design-system-components)
8
+ [![Build Status](https://github.com/UXWizard25/vv-token-test-v3/workflows/Build%20Design%20Tokens/badge.svg)](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
- ## Usage
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
- ## HTML Usage
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
- ## Available Components
90
+ ---
67
91
 
68
- | Component | Tag | Description |
69
- |-----------|-----|-------------|
70
- | Button | `<ds-button>` | Primary, secondary, ghost variants |
71
- | Card | `<ds-card>` | Content container with styling |
92
+ ## 🧩 Available Components
72
93
 
73
- ## Brand Switching
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
- Components automatically adapt to brand/theme changes via CSS Custom Properties:
99
+ ### Button
76
100
 
77
101
  ```html
78
- <!-- BILD Brand -->
79
- <body data-color-brand="bild" data-content-brand="bild" data-theme="light">
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
- <!-- SportBILD Brand -->
84
- <body data-color-brand="sportbild" data-content-brand="sportbild" data-theme="dark">
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
- <!-- Advertorial in BILD context -->
89
- <body data-color-brand="bild" data-content-brand="advertorial" data-theme="light">
90
- <ds-button variant="primary">Advertorial Button</ds-button>
91
- </body>
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
- ## Data Attributes
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
- ## Shadow DOM
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
- ## TypeScript
185
+ ### How It Works
119
186
 
120
- Full TypeScript support with type definitions:
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
- ```typescript
123
- import type { Components } from '@marioschmidt/design-system-components';
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
- const button: Components.DsButton = document.querySelector('ds-button');
126
- button.variant = 'primary';
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
- ## Peer Dependencies
248
+ ### Commands
130
249
 
131
- - `@marioschmidt/design-system-tokens` (optional but recommended)
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
- ## Development
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
- # In monorepo root
137
- npm run dev:stencil # Start dev server (port 3333)
138
- npm run storybook # Start Storybook (port 6006)
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
- ## Related Packages
359
+ ---
360
+
361
+ ## 🔗 Related
142
362
 
143
- - [@marioschmidt/design-system-tokens](https://www.npmjs.com/package/@marioschmidt/design-system-tokens) - Design tokens
144
- - [@marioschmidt/design-system-icons](https://www.npmjs.com/package/@marioschmidt/design-system-icons) - Icon library
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
- ## License
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 | ✅ |