@ivds/core 0.1.1

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 (154) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +215 -0
  3. package/lib/all.css +6802 -0
  4. package/lib/all.min.css +1 -0
  5. package/lib/base/base.css +215 -0
  6. package/lib/base/base.min.css +1 -0
  7. package/lib/components/_breadcrumb-mixins.scss +173 -0
  8. package/lib/components/_button-mixin.scss +120 -0
  9. package/lib/components/_card-mixin.scss +196 -0
  10. package/lib/components/_checkbox-mixin.scss +208 -0
  11. package/lib/components/_footer-mixin.scss +385 -0
  12. package/lib/components/_header-mixin.scss +275 -0
  13. package/lib/components/_navigation-mixins.scss +270 -0
  14. package/lib/components/_notification-mixin.scss +239 -0
  15. package/lib/components/_pagination-mixins.scss +280 -0
  16. package/lib/components/_radio-button-mixin.scss +207 -0
  17. package/lib/components/_tag-mixin.scss +261 -0
  18. package/lib/components/_text-input-mixin.scss +203 -0
  19. package/lib/components/all.css +3005 -0
  20. package/lib/components/all.min.css +1 -0
  21. package/lib/components/breadcrumb/breadcrumb.css +141 -0
  22. package/lib/components/breadcrumb/breadcrumb.min.css +1 -0
  23. package/lib/components/button/button.css +221 -0
  24. package/lib/components/button/button.min.css +1 -0
  25. package/lib/components/card/card.css +236 -0
  26. package/lib/components/card/card.min.css +1 -0
  27. package/lib/components/checkbox/checkbox.css +305 -0
  28. package/lib/components/checkbox/checkbox.min.css +1 -0
  29. package/lib/components/footer/footer.css +466 -0
  30. package/lib/components/footer/footer.min.css +1 -0
  31. package/lib/components/header/header.css +274 -0
  32. package/lib/components/header/header.min.css +1 -0
  33. package/lib/components/navigation/navigation.css +214 -0
  34. package/lib/components/navigation/navigation.min.css +1 -0
  35. package/lib/components/notification/notification.css +253 -0
  36. package/lib/components/notification/notification.min.css +1 -0
  37. package/lib/components/pagination/pagination.css +221 -0
  38. package/lib/components/pagination/pagination.min.css +1 -0
  39. package/lib/components/radio-button/radio-button.css +326 -0
  40. package/lib/components/radio-button/radio-button.min.css +1 -0
  41. package/lib/components/tag/tag.css +367 -0
  42. package/lib/components/tag/tag.min.css +1 -0
  43. package/lib/components/text-input/text-input.css +243 -0
  44. package/lib/components/text-input/text-input.min.css +1 -0
  45. package/lib/icons/icon-arrow-left.css +139 -0
  46. package/lib/icons/icon-arrow-left.min.css +1 -0
  47. package/lib/icons/icon-arrow-right.css +139 -0
  48. package/lib/icons/icon-arrow-right.min.css +1 -0
  49. package/lib/icons/icon-check.css +139 -0
  50. package/lib/icons/icon-check.min.css +1 -0
  51. package/lib/icons/icon-close.css +140 -0
  52. package/lib/icons/icon-close.min.css +1 -0
  53. package/lib/icons/icon-error.css +140 -0
  54. package/lib/icons/icon-error.min.css +1 -0
  55. package/lib/icons/icon-info.css +140 -0
  56. package/lib/icons/icon-info.min.css +1 -0
  57. package/lib/icons/icon-success.css +139 -0
  58. package/lib/icons/icon-success.min.css +1 -0
  59. package/lib/icons/icon-warning.css +139 -0
  60. package/lib/icons/icon-warning.min.css +1 -0
  61. package/lib/icons/icons.css +1158 -0
  62. package/lib/icons/icons.min.css +1 -0
  63. package/lib/utils/_flex.scss +200 -0
  64. package/lib/utils/_grid.scss +211 -0
  65. package/lib/utils/_layout.scss +253 -0
  66. package/lib/utils/_spacing.scss +260 -0
  67. package/lib/utils/_typography.scss +111 -0
  68. package/lib/utils/utils.css +2434 -0
  69. package/lib/utils/utils.min.css +1 -0
  70. package/lib/utils-only.css +2801 -0
  71. package/lib/utils-only.min.css +1 -0
  72. package/lib/variables/variables.css +2 -0
  73. package/lib/variables/variables.min.css +0 -0
  74. package/package.json +194 -0
  75. package/src/__tests__/example.test.scss +12 -0
  76. package/src/accessibility.stories.js +416 -0
  77. package/src/all.scss +9 -0
  78. package/src/base/_layout.scss +97 -0
  79. package/src/base/_reset.scss +85 -0
  80. package/src/base/_typography.scss +105 -0
  81. package/src/base/base.scss +6 -0
  82. package/src/components/all.scss +22 -0
  83. package/src/components/breadcrumb/_breadcrumb-mixins.scss +173 -0
  84. package/src/components/breadcrumb/breadcrumb.scss +68 -0
  85. package/src/components/breadcrumb/breadcrumb.stories.js +483 -0
  86. package/src/components/button/__tests__/button-mixins.test.scss +35 -0
  87. package/src/components/button/_button-mixin.scss +120 -0
  88. package/src/components/button/button.scss +126 -0
  89. package/src/components/button/button.stories.js +364 -0
  90. package/src/components/card/__tests__/card-mixins.test.scss +36 -0
  91. package/src/components/card/_card-mixin.scss +196 -0
  92. package/src/components/card/card.scss +193 -0
  93. package/src/components/card/card.stories.js +635 -0
  94. package/src/components/checkbox/_checkbox-mixin.scss +208 -0
  95. package/src/components/checkbox/checkbox.scss +141 -0
  96. package/src/components/checkbox/checkbox.stories.js +303 -0
  97. package/src/components/footer/_footer-mixin.scss +385 -0
  98. package/src/components/footer/footer.scss +86 -0
  99. package/src/components/footer/footer.stories.js +740 -0
  100. package/src/components/header/_header-mixin.scss +275 -0
  101. package/src/components/header/header.scss +84 -0
  102. package/src/components/header/header.stories.js +450 -0
  103. package/src/components/navigation/_navigation-mixins.scss +270 -0
  104. package/src/components/navigation/navigation.scss +64 -0
  105. package/src/components/navigation/navigation.stories.js +410 -0
  106. package/src/components/notification/_notification-mixin.scss +239 -0
  107. package/src/components/notification/notification.scss +118 -0
  108. package/src/components/notification/notification.stories.js +378 -0
  109. package/src/components/overview.stories.js +473 -0
  110. package/src/components/pagination/_pagination-mixins.scss +280 -0
  111. package/src/components/pagination/pagination.scss +76 -0
  112. package/src/components/pagination/pagination.stories.js +729 -0
  113. package/src/components/radio-button/_radio-button-mixin.scss +207 -0
  114. package/src/components/radio-button/radio-button.scss +178 -0
  115. package/src/components/radio-button/radio-button.stories.js +379 -0
  116. package/src/components/tag/_tag-mixin.scss +261 -0
  117. package/src/components/tag/tag.scss +244 -0
  118. package/src/components/tag/tag.stories.js +482 -0
  119. package/src/components/text-input/_text-input-mixin.scss +203 -0
  120. package/src/components/text-input/text-input.scss +150 -0
  121. package/src/components/text-input/text-input.stories.js +723 -0
  122. package/src/icons/_icon.scss +121 -0
  123. package/src/icons/icon-arrow-left.scss +23 -0
  124. package/src/icons/icon-arrow-right.scss +23 -0
  125. package/src/icons/icon-check.scss +23 -0
  126. package/src/icons/icon-close.scss +24 -0
  127. package/src/icons/icon-error.scss +24 -0
  128. package/src/icons/icon-info.scss +24 -0
  129. package/src/icons/icon-success.scss +23 -0
  130. package/src/icons/icon-warning.scss +23 -0
  131. package/src/icons/icons.scss +12 -0
  132. package/src/icons/icons.stories.js +249 -0
  133. package/src/icons/svg/arrow-left.svg +3 -0
  134. package/src/icons/svg/arrow-right.svg +3 -0
  135. package/src/icons/svg/check.svg +3 -0
  136. package/src/icons/svg/close.svg +4 -0
  137. package/src/icons/svg/error.svg +5 -0
  138. package/src/icons/svg/info.svg +5 -0
  139. package/src/icons/svg/success.svg +4 -0
  140. package/src/icons/svg/warning.svg +5 -0
  141. package/src/utils/__tests__/utilities.test.scss +37 -0
  142. package/src/utils/_flex.scss +200 -0
  143. package/src/utils/_grid.scss +211 -0
  144. package/src/utils/_layout.scss +253 -0
  145. package/src/utils/_spacing.scss +260 -0
  146. package/src/utils/_typography.scss +111 -0
  147. package/src/utils/utils.scss +8 -0
  148. package/src/variables/_borders.scss +15 -0
  149. package/src/variables/_breakpoints.scss +11 -0
  150. package/src/variables/_colors.scss +97 -0
  151. package/src/variables/_shadows.scss +14 -0
  152. package/src/variables/_spacing.scss +24 -0
  153. package/src/variables/_typography.scss +47 -0
  154. package/src/variables/variables.scss +9 -0
@@ -0,0 +1,473 @@
1
+ // IVDS Core Overview - Complete Design System Showcase
2
+ // Demonstrates all available components and their usage
3
+
4
+ export default {
5
+ title: 'Core/Overview',
6
+ parameters: {
7
+ docs: {
8
+ description: {
9
+ component: 'Complete overview of the IVDS Core design system components. This showcase demonstrates all available components, their variants, and how they work together to create cohesive user interfaces.'
10
+ }
11
+ },
12
+ a11y: {
13
+ config: {
14
+ rules: [
15
+ {
16
+ id: 'color-contrast',
17
+ enabled: true
18
+ },
19
+ {
20
+ id: 'focus-order-semantics',
21
+ enabled: true
22
+ },
23
+ {
24
+ id: 'aria-allowed-attr',
25
+ enabled: true
26
+ },
27
+ {
28
+ id: 'button-name',
29
+ enabled: true
30
+ },
31
+ {
32
+ id: 'label',
33
+ enabled: true
34
+ }
35
+ ]
36
+ },
37
+ options: {
38
+ runOnly: {
39
+ type: 'tag',
40
+ values: ['wcag2a', 'wcag2aa', 'wcag21aa']
41
+ }
42
+ }
43
+ }
44
+ }
45
+ };
46
+
47
+ // Complete component showcase
48
+ export const AllComponents = () => `
49
+ <div style="display: flex; flex-direction: column; gap: 3rem; max-width: 1200px; margin: 0 auto; padding: 2rem;">
50
+
51
+ <!-- Header Section -->
52
+ <section>
53
+ <h2 style="margin-bottom: 1.5rem; font-size: 1.5rem; font-weight: 600;">Form Components</h2>
54
+
55
+ <!-- Buttons -->
56
+ <div style="margin-bottom: 2rem;">
57
+ <h3 style="margin-bottom: 1rem; font-size: 1.25rem; font-weight: 500;">Buttons</h3>
58
+ <div style="display: flex; gap: 1rem; flex-wrap: wrap; margin-bottom: 1rem;">
59
+ <button class="ivds-button ivds-button--primary">Primary</button>
60
+ <button class="ivds-button ivds-button--secondary">Secondary</button>
61
+ <button class="ivds-button ivds-button--tertiary">Tertiary</button>
62
+ <button class="ivds-button ivds-button--success">Success</button>
63
+ <button class="ivds-button ivds-button--warning">Warning</button>
64
+ <button class="ivds-button ivds-button--danger">Danger</button>
65
+ </div>
66
+ <div style="display: flex; gap: 1rem; flex-wrap: wrap;">
67
+ <button class="ivds-button ivds-button--primary ivds-button--small">Small</button>
68
+ <button class="ivds-button ivds-button--primary">Default</button>
69
+ <button class="ivds-button ivds-button--primary ivds-button--large">Large</button>
70
+ </div>
71
+ </div>
72
+
73
+ <!-- Text Inputs -->
74
+ <div style="margin-bottom: 2rem;">
75
+ <h3 style="margin-bottom: 1rem; font-size: 1.25rem; font-weight: 500;">Text Inputs</h3>
76
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1.5rem;">
77
+ <div class="ivds-text-input-wrapper">
78
+ <label class="ivds-text-input__label" for="overview-name">Full Name</label>
79
+ <input type="text" id="overview-name" class="ivds-text-input" placeholder="Enter your name" />
80
+ </div>
81
+ <div class="ivds-text-input-wrapper">
82
+ <label class="ivds-text-input__label" for="overview-email">Email Address</label>
83
+ <input type="email" id="overview-email" class="ivds-text-input" placeholder="you@example.com" />
84
+ <div class="ivds-text-input__helper">We'll never share your email.</div>
85
+ </div>
86
+ </div>
87
+ </div>
88
+
89
+ <!-- Checkboxes and Radio Buttons -->
90
+ <div style="margin-bottom: 2rem;">
91
+ <h3 style="margin-bottom: 1rem; font-size: 1.25rem; font-weight: 500;">Selection Controls</h3>
92
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem;">
93
+ <div>
94
+ <h4 style="margin-bottom: 0.5rem; font-weight: 500;">Checkboxes</h4>
95
+ <label class="ivds-checkbox">
96
+ <input type="checkbox" class="ivds-checkbox__input" />
97
+ <div class="ivds-checkbox__box"></div>
98
+ <span class="ivds-checkbox__label">Email notifications</span>
99
+ </label>
100
+ <label class="ivds-checkbox">
101
+ <input type="checkbox" class="ivds-checkbox__input" checked />
102
+ <div class="ivds-checkbox__box"></div>
103
+ <span class="ivds-checkbox__label">SMS notifications</span>
104
+ </label>
105
+ </div>
106
+ <div>
107
+ <h4 style="margin-bottom: 0.5rem; font-weight: 500;">Radio Buttons</h4>
108
+ <label class="ivds-radio-button">
109
+ <input type="radio" class="ivds-radio-button__input" name="overview-plan" value="basic" />
110
+ <div class="ivds-radio-button__circle"></div>
111
+ <span class="ivds-radio-button__label">Basic Plan</span>
112
+ </label>
113
+ <label class="ivds-radio-button">
114
+ <input type="radio" class="ivds-radio-button__input" name="overview-plan" value="premium" checked />
115
+ <div class="ivds-radio-button__circle"></div>
116
+ <span class="ivds-radio-button__label">Premium Plan</span>
117
+ </label>
118
+ </div>
119
+ </div>
120
+ </div>
121
+ </section>
122
+
123
+ <!-- Content Components -->
124
+ <section>
125
+ <h2 style="margin-bottom: 1.5rem; font-size: 1.5rem; font-weight: 600;">Content Components</h2>
126
+
127
+ <!-- Cards -->
128
+ <div style="margin-bottom: 2rem;">
129
+ <h3 style="margin-bottom: 1rem; font-size: 1.25rem; font-weight: 500;">Cards</h3>
130
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1.5rem;">
131
+ <div class="ivds-card">
132
+ <div class="ivds-card__header">
133
+ <h4 class="ivds-card__title">Default Card</h4>
134
+ <p class="ivds-card__subtitle">Card subtitle</p>
135
+ </div>
136
+ <div class="ivds-card__body">
137
+ <p class="ivds-card__content">This is a default card with header, body, and actions.</p>
138
+ <div class="ivds-card__actions">
139
+ <button class="ivds-button ivds-button--primary ivds-button--small">Action</button>
140
+ </div>
141
+ </div>
142
+ </div>
143
+
144
+ <div class="ivds-card ivds-card--elevated">
145
+ <div class="ivds-card__header">
146
+ <h4 class="ivds-card__title">Elevated Card</h4>
147
+ </div>
148
+ <div class="ivds-card__body">
149
+ <p class="ivds-card__content">This card has elevated styling with more prominent shadow.</p>
150
+ </div>
151
+ </div>
152
+ </div>
153
+ </div>
154
+
155
+ <!-- Notifications -->
156
+ <div style="margin-bottom: 2rem;">
157
+ <h3 style="margin-bottom: 1rem; font-size: 1.25rem; font-weight: 500;">Notifications</h3>
158
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
159
+ <div class="ivds-notification ivds-notification--success">
160
+ <div class="ivds-notification__icon">
161
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
162
+ <path d="M9 12L11 14L15 10M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
163
+ </svg>
164
+ </div>
165
+ <div class="ivds-notification__content">
166
+ <div class="ivds-notification__title">Success</div>
167
+ <div class="ivds-notification__message">Your changes have been saved successfully.</div>
168
+ </div>
169
+ </div>
170
+
171
+ <div class="ivds-notification ivds-notification--warning ivds-notification--dismissible">
172
+ <div class="ivds-notification__icon">
173
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
174
+ <path d="M12 9V13M12 17H12.01M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
175
+ </svg>
176
+ </div>
177
+ <div class="ivds-notification__content">
178
+ <div class="ivds-notification__title">Warning</div>
179
+ <div class="ivds-notification__message">Please review your input before proceeding.</div>
180
+ </div>
181
+ <button class="ivds-notification__dismiss" aria-label="Dismiss notification">
182
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
183
+ <path d="M18 6L6 18M6 6L18 18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
184
+ </svg>
185
+ </button>
186
+ </div>
187
+ </div>
188
+ </div>
189
+
190
+ <!-- Tags -->
191
+ <div style="margin-bottom: 2rem;">
192
+ <h3 style="margin-bottom: 1rem; font-size: 1.25rem; font-weight: 500;">Tags</h3>
193
+ <div class="ivds-tag-group">
194
+ <span class="ivds-tag ivds-tag--primary">
195
+ <span class="ivds-tag__text">React</span>
196
+ </span>
197
+ <span class="ivds-tag ivds-tag--success">
198
+ <span class="ivds-tag__text">JavaScript</span>
199
+ </span>
200
+ <span class="ivds-tag ivds-tag--info">
201
+ <span class="ivds-tag__text">TypeScript</span>
202
+ </span>
203
+ <span class="ivds-tag ivds-tag--warning ivds-tag--removable">
204
+ <span class="ivds-tag__text">CSS</span>
205
+ <button class="ivds-tag__remove" aria-label="Remove CSS tag">
206
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
207
+ <path d="M18 6L6 18M6 6L18 18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
208
+ </svg>
209
+ </button>
210
+ </span>
211
+ </div>
212
+ </div>
213
+ </section>
214
+
215
+ <!-- Usage Guidelines -->
216
+ <section>
217
+ <h2 style="margin-bottom: 1.5rem; font-size: 1.5rem; font-weight: 600;">Usage Guidelines</h2>
218
+ <div class="ivds-card">
219
+ <div class="ivds-card__body">
220
+ <h3 class="ivds-card__title">Getting Started</h3>
221
+ <p class="ivds-card__content" style="margin-bottom: 1rem;">
222
+ IVDS Core provides CSS-only components that can be used in any web project. Simply include the CSS files and apply the appropriate classes to your HTML elements.
223
+ </p>
224
+ <h4 style="font-weight: 500; margin-bottom: 0.5rem;">Installation:</h4>
225
+ <pre style="background: #f3f4f6; padding: 1rem; border-radius: 0.375rem; overflow-x: auto; margin-bottom: 1rem;"><code>npm install @ivds/core</code></pre>
226
+ <h4 style="font-weight: 500; margin-bottom: 0.5rem;">Usage:</h4>
227
+ <pre style="background: #f3f4f6; padding: 1rem; border-radius: 0.375rem; overflow-x: auto;"><code>@import '@ivds/core/all.css';</code></pre>
228
+ </div>
229
+ </div>
230
+ </section>
231
+ </div>
232
+ `;
233
+
234
+ // Form example showcasing multiple components working together
235
+ export const FormExample = () => `
236
+ <div style="max-width: 600px; margin: 0 auto; padding: 2rem;">
237
+ <div class="ivds-card">
238
+ <div class="ivds-card__header">
239
+ <h2 class="ivds-card__title">User Registration</h2>
240
+ <p class="ivds-card__subtitle">Create your account to get started</p>
241
+ </div>
242
+ <div class="ivds-card__body">
243
+ <form style="display: flex; flex-direction: column; gap: 1.5rem;">
244
+ <!-- Personal Information -->
245
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem;">
246
+ <div class="ivds-text-input-wrapper">
247
+ <label class="ivds-text-input__label ivds-text-input__label--required" for="form-first-name">
248
+ First Name
249
+ </label>
250
+ <input
251
+ type="text"
252
+ id="form-first-name"
253
+ class="ivds-text-input"
254
+ placeholder="John"
255
+ required
256
+ />
257
+ </div>
258
+ <div class="ivds-text-input-wrapper">
259
+ <label class="ivds-text-input__label ivds-text-input__label--required" for="form-last-name">
260
+ Last Name
261
+ </label>
262
+ <input
263
+ type="text"
264
+ id="form-last-name"
265
+ class="ivds-text-input"
266
+ placeholder="Doe"
267
+ required
268
+ />
269
+ </div>
270
+ </div>
271
+
272
+ <!-- Contact Information -->
273
+ <div class="ivds-text-input-wrapper">
274
+ <label class="ivds-text-input__label ivds-text-input__label--required" for="form-email">
275
+ Email Address
276
+ </label>
277
+ <input
278
+ type="email"
279
+ id="form-email"
280
+ class="ivds-text-input"
281
+ placeholder="john.doe@example.com"
282
+ required
283
+ />
284
+ <div class="ivds-text-input__helper">
285
+ We'll use this email for account verification and important updates.
286
+ </div>
287
+ </div>
288
+
289
+ <!-- Account Type -->
290
+ <div class="ivds-radio-button-group">
291
+ <div class="ivds-radio-button-group__label ivds-radio-button-group__label--required">
292
+ Account Type
293
+ </div>
294
+ <label class="ivds-radio-button">
295
+ <input type="radio" class="ivds-radio-button__input" name="account-type" value="personal" checked />
296
+ <div class="ivds-radio-button__circle"></div>
297
+ <div>
298
+ <span class="ivds-radio-button__label">Personal</span>
299
+ <div class="ivds-radio-button__description">For individual use</div>
300
+ </div>
301
+ </label>
302
+ <label class="ivds-radio-button">
303
+ <input type="radio" class="ivds-radio-button__input" name="account-type" value="business" />
304
+ <div class="ivds-radio-button__circle"></div>
305
+ <div>
306
+ <span class="ivds-radio-button__label">Business</span>
307
+ <div class="ivds-radio-button__description">For teams and organizations</div>
308
+ </div>
309
+ </label>
310
+ </div>
311
+
312
+ <!-- Preferences -->
313
+ <div class="ivds-checkbox-group">
314
+ <div class="ivds-checkbox-group__label">
315
+ Communication Preferences
316
+ </div>
317
+ <label class="ivds-checkbox">
318
+ <input type="checkbox" class="ivds-checkbox__input" />
319
+ <div class="ivds-checkbox__box"></div>
320
+ <span class="ivds-checkbox__label">Email newsletters</span>
321
+ </label>
322
+ <label class="ivds-checkbox">
323
+ <input type="checkbox" class="ivds-checkbox__input" />
324
+ <div class="ivds-checkbox__box"></div>
325
+ <span class="ivds-checkbox__label">Product updates</span>
326
+ </label>
327
+ <label class="ivds-checkbox">
328
+ <input type="checkbox" class="ivds-checkbox__input" required />
329
+ <div class="ivds-checkbox__box"></div>
330
+ <span class="ivds-checkbox__label">I agree to the Terms of Service</span>
331
+ </label>
332
+ </div>
333
+
334
+ <!-- Actions -->
335
+ <div class="ivds-card__actions">
336
+ <button type="submit" class="ivds-button ivds-button--primary">
337
+ Create Account
338
+ </button>
339
+ <button type="button" class="ivds-button ivds-button--secondary">
340
+ Cancel
341
+ </button>
342
+ </div>
343
+ </form>
344
+ </div>
345
+ </div>
346
+
347
+ <!-- Success notification (hidden by default) -->
348
+ <div class="ivds-notification ivds-notification--success" style="margin-top: 1rem; display: none;">
349
+ <div class="ivds-notification__icon">
350
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
351
+ <path d="M9 12L11 14L15 10M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
352
+ </svg>
353
+ </div>
354
+ <div class="ivds-notification__content">
355
+ <div class="ivds-notification__title">Account Created!</div>
356
+ <div class="ivds-notification__message">Welcome to IVDS! Please check your email to verify your account.</div>
357
+ </div>
358
+ </div>
359
+ </div>
360
+ `;
361
+
362
+ // Dashboard example showing complex layout
363
+ export const DashboardExample = () => `
364
+ <div style="max-width: 1200px; margin: 0 auto; padding: 2rem;">
365
+ <!-- Header with tags -->
366
+ <div style="margin-bottom: 2rem;">
367
+ <h1 style="margin-bottom: 0.5rem; font-size: 2rem; font-weight: 700;">Project Dashboard</h1>
368
+ <div class="ivds-tag-group">
369
+ <span class="ivds-tag ivds-tag--success">
370
+ <span class="ivds-tag__icon">
371
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
372
+ <path d="M9 12L11 14L15 10M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
373
+ </svg>
374
+ </span>
375
+ <span class="ivds-tag__text">Active</span>
376
+ </span>
377
+ <span class="ivds-tag ivds-tag--info">
378
+ <span class="ivds-tag__text">Frontend</span>
379
+ </span>
380
+ <span class="ivds-tag ivds-tag--warning">
381
+ <span class="ivds-tag__text">High Priority</span>
382
+ </span>
383
+ </div>
384
+ </div>
385
+
386
+ <!-- Notifications -->
387
+ <div style="margin-bottom: 2rem;">
388
+ <div class="ivds-notification ivds-notification--info ivds-notification--dismissible">
389
+ <div class="ivds-notification__icon">
390
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
391
+ <path d="M13 16H12V12H11M12 8H12.01M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
392
+ </svg>
393
+ </div>
394
+ <div class="ivds-notification__content">
395
+ <div class="ivds-notification__title">System Maintenance</div>
396
+ <div class="ivds-notification__message">Scheduled maintenance will occur tonight from 2:00 AM to 4:00 AM EST.</div>
397
+ </div>
398
+ <button class="ivds-notification__dismiss" aria-label="Dismiss notification">
399
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
400
+ <path d="M18 6L6 18M6 6L18 18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
401
+ </svg>
402
+ </button>
403
+ </div>
404
+ </div>
405
+
406
+ <!-- Dashboard Cards -->
407
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1.5rem; margin-bottom: 2rem;">
408
+ <div class="ivds-card">
409
+ <div class="ivds-card__header">
410
+ <h3 class="ivds-card__title">Project Statistics</h3>
411
+ </div>
412
+ <div class="ivds-card__body">
413
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; text-align: center;">
414
+ <div>
415
+ <div style="font-size: 2rem; font-weight: 700; color: var(--color-semantic-success-600, #059669);">24</div>
416
+ <div style="font-size: 0.875rem; color: var(--color-semantic-neutral-600, #6b7280);">Completed</div>
417
+ </div>
418
+ <div>
419
+ <div style="font-size: 2rem; font-weight: 700; color: var(--color-semantic-warning-600, #d97706);">8</div>
420
+ <div style="font-size: 0.875rem; color: var(--color-semantic-neutral-600, #6b7280);">In Progress</div>
421
+ </div>
422
+ </div>
423
+ </div>
424
+ </div>
425
+
426
+ <div class="ivds-card ivds-card--elevated">
427
+ <div class="ivds-card__header">
428
+ <h3 class="ivds-card__title">Quick Actions</h3>
429
+ </div>
430
+ <div class="ivds-card__body">
431
+ <div style="display: flex; flex-direction: column; gap: 0.75rem;">
432
+ <button class="ivds-button ivds-button--primary ivds-button--small" style="width: 100%;">
433
+ Create New Task
434
+ </button>
435
+ <button class="ivds-button ivds-button--secondary ivds-button--small" style="width: 100%;">
436
+ Generate Report
437
+ </button>
438
+ <button class="ivds-button ivds-button--tertiary ivds-button--small" style="width: 100%;">
439
+ View Analytics
440
+ </button>
441
+ </div>
442
+ </div>
443
+ </div>
444
+
445
+ <div class="ivds-card">
446
+ <div class="ivds-card__header">
447
+ <h3 class="ivds-card__title">Team Members</h3>
448
+ </div>
449
+ <div class="ivds-card__body">
450
+ <div style="display: flex; flex-direction: column; gap: 0.75rem;">
451
+ <div style="display: flex; align-items: center; gap: 0.75rem;">
452
+ <div style="width: 32px; height: 32px; border-radius: 50%; background: var(--color-brand-primary-500, #0ea5e9); display: flex; align-items: center; justify-content: center; color: white; font-weight: 500; font-size: 0.875rem;">JD</div>
453
+ <div>
454
+ <div style="font-weight: 500;">John Doe</div>
455
+ <div style="font-size: 0.875rem; color: var(--color-semantic-neutral-600, #6b7280);">Frontend Developer</div>
456
+ </div>
457
+ </div>
458
+ <div style="display: flex; align-items: center; gap: 0.75rem;">
459
+ <div style="width: 32px; height: 32px; border-radius: 50%; background: var(--color-semantic-success-500, #10b981); display: flex; align-items: center; justify-content: center; color: white; font-weight: 500; font-size: 0.875rem;">JS</div>
460
+ <div>
461
+ <div style="font-weight: 500;">Jane Smith</div>
462
+ <div style="font-size: 0.875rem; color: var(--color-semantic-neutral-600, #6b7280);">UI Designer</div>
463
+ </div>
464
+ </div>
465
+ </div>
466
+ </div>
467
+ <div class="ivds-card__footer">
468
+ <button class="ivds-button ivds-button--tertiary ivds-button--small">View All Members</button>
469
+ </div>
470
+ </div>
471
+ </div>
472
+ </div>
473
+ `;