@fpkit/acss 0.5.12 → 0.5.13

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 (264) hide show
  1. package/README.md +89 -0
  2. package/libs/{chunk-DV56L5YX.cjs → chunk-2LTJ7HHX.cjs} +4 -4
  3. package/libs/{chunk-EQ67LF46.js → chunk-2Y7W75TT.js} +3 -3
  4. package/libs/{chunk-KKLTUJFB.cjs → chunk-3MKLDCKQ.cjs} +5 -5
  5. package/libs/chunk-3MKLDCKQ.cjs.map +1 -0
  6. package/libs/{chunk-X3EVB7VS.cjs → chunk-5S4ORA4C.cjs} +3 -3
  7. package/libs/{chunk-O6QZBB6G.js → chunk-772NRB75.js} +5 -5
  8. package/libs/chunk-772NRB75.js.map +1 -0
  9. package/libs/{chunk-6BVXFW7U.cjs → chunk-AHDJGCG5.cjs} +3 -3
  10. package/libs/{chunk-E3XP6BEX.cjs → chunk-B7F5FS6D.cjs} +3 -3
  11. package/libs/chunk-D4YLRWAO.cjs +18 -0
  12. package/libs/chunk-D4YLRWAO.cjs.map +1 -0
  13. package/libs/chunk-ETFLFC2S.js +10 -0
  14. package/libs/chunk-ETFLFC2S.js.map +1 -0
  15. package/libs/chunk-GZ4QFPRY.js +9 -0
  16. package/libs/chunk-GZ4QFPRY.js.map +1 -0
  17. package/libs/{chunk-LHVJKDMA.cjs → chunk-J32EZPYD.cjs} +3 -3
  18. package/libs/chunk-JJ43O4Y5.js +8 -0
  19. package/libs/chunk-JJ43O4Y5.js.map +1 -0
  20. package/libs/chunk-KUKIVRC2.js +7 -0
  21. package/libs/chunk-KUKIVRC2.js.map +1 -0
  22. package/libs/chunk-L75OQKEI.cjs +13 -0
  23. package/libs/chunk-L75OQKEI.cjs.map +1 -0
  24. package/libs/{chunk-LL7HTLMS.cjs → chunk-M5RRNTVX.cjs} +3 -3
  25. package/libs/{chunk-LIQJ7ZZR.js → chunk-NGTJDDFO.js} +2 -2
  26. package/libs/chunk-OK5QEIMD.cjs +17 -0
  27. package/libs/chunk-OK5QEIMD.cjs.map +1 -0
  28. package/libs/chunk-P2DC76ZZ.cjs +18 -0
  29. package/libs/chunk-P2DC76ZZ.cjs.map +1 -0
  30. package/libs/chunk-PQ2K3BM6.cjs +17 -0
  31. package/libs/chunk-PQ2K3BM6.cjs.map +1 -0
  32. package/libs/{chunk-QCMV4VQZ.js → chunk-QLZWHAMK.js} +2 -2
  33. package/libs/{chunk-BIP2NY53.js → chunk-RIVUMPOG.js} +2 -2
  34. package/libs/{chunk-ICCKQ2GC.cjs → chunk-ROZI23GS.cjs} +4 -4
  35. package/libs/{chunk-NHYXGV3L.js → chunk-SMYRLO3E.js} +2 -2
  36. package/libs/{chunk-5ZM4XL44.js → chunk-TYRCEX2L.js} +2 -2
  37. package/libs/chunk-VUH3FXGJ.js +11 -0
  38. package/libs/chunk-VUH3FXGJ.js.map +1 -0
  39. package/libs/{chunk-PPOOBUOS.js → chunk-XBA562WW.js} +2 -2
  40. package/libs/{chunk-QVV34QEH.cjs → chunk-XTQKWY7W.cjs} +3 -3
  41. package/libs/{chunk-YWOYVRFT.js → chunk-ZANSFMTD.js} +3 -3
  42. package/libs/components/alert/alert.css +1 -1
  43. package/libs/components/alert/alert.css.map +1 -1
  44. package/libs/components/alert/alert.min.css +2 -2
  45. package/libs/components/badge/badge.css +1 -1
  46. package/libs/components/badge/badge.css.map +1 -1
  47. package/libs/components/badge/badge.min.css +2 -2
  48. package/libs/components/breadcrumbs/breadcrumb.cjs +9 -5
  49. package/libs/components/breadcrumbs/breadcrumb.d.cts +271 -32
  50. package/libs/components/breadcrumbs/breadcrumb.d.ts +271 -32
  51. package/libs/components/breadcrumbs/breadcrumb.js +3 -3
  52. package/libs/components/button.cjs +4 -4
  53. package/libs/components/button.d.cts +2 -2
  54. package/libs/components/button.d.ts +2 -2
  55. package/libs/components/button.js +2 -2
  56. package/libs/components/buttons/button.css +1 -1
  57. package/libs/components/buttons/button.css.map +1 -1
  58. package/libs/components/buttons/button.min.css +2 -2
  59. package/libs/components/card.cjs +7 -7
  60. package/libs/components/card.d.cts +277 -33
  61. package/libs/components/card.d.ts +277 -33
  62. package/libs/components/card.js +2 -2
  63. package/libs/components/cards/card.css +1 -1
  64. package/libs/components/cards/card.css.map +1 -1
  65. package/libs/components/cards/card.min.css +2 -2
  66. package/libs/components/details/details.css +1 -1
  67. package/libs/components/details/details.css.map +1 -1
  68. package/libs/components/details/details.min.css +2 -2
  69. package/libs/components/dialog/dialog.cjs +7 -7
  70. package/libs/components/dialog/dialog.css +1 -1
  71. package/libs/components/dialog/dialog.css.map +1 -1
  72. package/libs/components/dialog/dialog.d.cts +88 -34
  73. package/libs/components/dialog/dialog.d.ts +88 -34
  74. package/libs/components/dialog/dialog.js +5 -5
  75. package/libs/components/dialog/dialog.min.css +2 -2
  76. package/libs/components/form/fields.cjs +4 -4
  77. package/libs/components/form/fields.d.cts +2 -2
  78. package/libs/components/form/fields.d.ts +2 -2
  79. package/libs/components/form/fields.js +2 -2
  80. package/libs/components/form/textarea.cjs +4 -4
  81. package/libs/components/form/textarea.d.cts +2 -2
  82. package/libs/components/form/textarea.d.ts +2 -2
  83. package/libs/components/form/textarea.js +2 -2
  84. package/libs/components/heading/heading.cjs +3 -3
  85. package/libs/components/heading/heading.d.cts +3 -14
  86. package/libs/components/heading/heading.d.ts +3 -14
  87. package/libs/components/heading/heading.js +2 -2
  88. package/libs/components/icons/icon.cjs +4 -4
  89. package/libs/components/icons/icon.d.cts +148 -4
  90. package/libs/components/icons/icon.d.ts +148 -4
  91. package/libs/components/icons/icon.js +2 -2
  92. package/libs/components/images/img.css +1 -1
  93. package/libs/components/images/img.css.map +1 -1
  94. package/libs/components/images/img.min.css +2 -2
  95. package/libs/components/link/link.cjs +4 -4
  96. package/libs/components/link/link.d.cts +2 -2
  97. package/libs/components/link/link.d.ts +2 -2
  98. package/libs/components/link/link.js +2 -2
  99. package/libs/components/list/list.cjs +5 -5
  100. package/libs/components/list/list.d.cts +3 -3
  101. package/libs/components/list/list.d.ts +3 -3
  102. package/libs/components/list/list.js +2 -2
  103. package/libs/components/modal.cjs +4 -4
  104. package/libs/components/modal.js +3 -3
  105. package/libs/components/nav/nav.cjs +7 -7
  106. package/libs/components/nav/nav.d.cts +2 -2
  107. package/libs/components/nav/nav.d.ts +2 -2
  108. package/libs/components/nav/nav.js +3 -3
  109. package/libs/components/text/text.cjs +5 -5
  110. package/libs/components/text/text.d.cts +2 -2
  111. package/libs/components/text/text.d.ts +2 -2
  112. package/libs/components/text/text.js +2 -2
  113. package/libs/heading-3648c538.d.ts +250 -0
  114. package/libs/hooks.cjs +7 -0
  115. package/libs/hooks.d.cts +5 -0
  116. package/libs/hooks.d.ts +5 -0
  117. package/libs/hooks.js +3 -0
  118. package/libs/icons.cjs +3 -3
  119. package/libs/icons.d.cts +1 -1
  120. package/libs/icons.d.ts +1 -1
  121. package/libs/icons.js +2 -2
  122. package/libs/index.cjs +112 -91
  123. package/libs/index.cjs.map +1 -1
  124. package/libs/index.css +1 -1
  125. package/libs/index.css.map +1 -1
  126. package/libs/index.d.cts +515 -31
  127. package/libs/index.d.ts +515 -31
  128. package/libs/index.js +31 -19
  129. package/libs/index.js.map +1 -1
  130. package/libs/ui-645f95b5.d.ts +285 -0
  131. package/package.json +2 -83
  132. package/src/components/README-UI.mdx +416 -0
  133. package/src/components/alert/ACCESSIBILITY.md +319 -0
  134. package/src/components/alert/README.mdx +475 -19
  135. package/src/components/alert/alert.scss +113 -6
  136. package/src/components/alert/alert.stories.tsx +372 -0
  137. package/src/components/alert/alert.test.tsx +762 -0
  138. package/src/components/alert/alert.tsx +331 -66
  139. package/src/components/alert/views/alert-actions.tsx +13 -0
  140. package/src/components/alert/views/alert-content.tsx +17 -0
  141. package/src/components/alert/views/alert-icon.tsx +53 -0
  142. package/src/components/alert/views/alert-screen-reader-text.tsx +30 -0
  143. package/src/components/alert/views/alert-title.tsx +23 -0
  144. package/src/components/alert/views/alert-view.tsx +158 -0
  145. package/src/components/alert/views/index.ts +12 -0
  146. package/src/components/badge/badge.mdx +186 -49
  147. package/src/components/badge/badge.scss +20 -2
  148. package/src/components/badge/badge.stories.tsx +160 -14
  149. package/src/components/badge/badge.test.tsx +179 -0
  150. package/src/components/badge/badge.tsx +97 -4
  151. package/src/components/breadcrumbs/README.mdx +364 -45
  152. package/src/components/breadcrumbs/__snapshots__/breadcrumb.test.tsx.snap +152 -0
  153. package/src/components/breadcrumbs/breadcrumb.stories.tsx +7 -3
  154. package/src/components/breadcrumbs/breadcrumb.test.tsx +490 -0
  155. package/src/components/breadcrumbs/breadcrumb.tsx +427 -170
  156. package/src/components/buttons/button.scss +34 -31
  157. package/src/components/buttons/button.stories.tsx +35 -0
  158. package/src/components/cards/README.mdx +657 -0
  159. package/src/components/cards/card.scss +22 -0
  160. package/src/components/cards/card.stories.tsx +167 -5
  161. package/src/components/cards/card.test.tsx +360 -20
  162. package/src/components/cards/card.tsx +200 -79
  163. package/src/components/cards/card.types.ts +135 -0
  164. package/src/components/cards/card.utils.ts +79 -0
  165. package/src/components/details/ACCESSIBILITY-REVIEW-LIVE.md +1050 -0
  166. package/src/components/details/ACCESSIBILITY-REVIEW.md +502 -0
  167. package/src/components/details/README.mdx +437 -69
  168. package/src/components/details/details.scss +16 -7
  169. package/src/components/details/details.test.tsx +385 -0
  170. package/src/components/details/details.tsx +101 -69
  171. package/src/components/details/details.types.ts +76 -0
  172. package/src/components/dialog/README.mdx +513 -110
  173. package/src/components/dialog/dialog-modal.tsx +79 -56
  174. package/src/components/dialog/dialog.scss +53 -3
  175. package/src/components/dialog/dialog.stories.tsx +10 -7
  176. package/src/components/dialog/dialog.test.tsx +450 -0
  177. package/src/components/dialog/dialog.tsx +69 -59
  178. package/src/components/dialog/dialog.types.ts +133 -0
  179. package/src/components/dialog/views/dialog-footer.tsx +54 -11
  180. package/src/components/dialog/views/dialog-header.tsx +20 -15
  181. package/src/components/heading/heading.stories.tsx +44 -4
  182. package/src/components/heading/heading.tsx +89 -23
  183. package/src/components/icons/README.mdx +332 -0
  184. package/src/components/icons/icon.stories.tsx +74 -1
  185. package/src/components/icons/icon.tsx +89 -1
  186. package/src/components/icons/types.ts +47 -0
  187. package/src/components/images/README.mdx +340 -24
  188. package/src/components/images/img.scss +19 -3
  189. package/src/components/images/img.stories.tsx +424 -15
  190. package/src/components/images/img.test.tsx +354 -25
  191. package/src/components/images/img.tsx +186 -63
  192. package/src/components/images/img.types.ts +211 -0
  193. package/src/components/title/MIGRATION.md +199 -0
  194. package/src/components/title/README.md +326 -0
  195. package/src/components/title/README.mdx +452 -0
  196. package/src/components/title/title.stories.tsx +393 -0
  197. package/src/components/title/title.test.tsx +251 -0
  198. package/src/components/title/title.tsx +219 -0
  199. package/src/components/ui.stories.tsx +894 -0
  200. package/src/components/ui.test.tsx +559 -0
  201. package/src/components/ui.tsx +266 -15
  202. package/src/components/word-count/README.md +240 -0
  203. package/src/hooks.ts +1 -0
  204. package/src/index.ts +10 -2
  205. package/src/sass/_properties.scss +1 -0
  206. package/src/styles/alert/alert.css +94 -4
  207. package/src/styles/alert/alert.css.map +1 -1
  208. package/src/styles/badge/badge.css +20 -2
  209. package/src/styles/badge/badge.css.map +1 -1
  210. package/src/styles/buttons/button.css +31 -31
  211. package/src/styles/buttons/button.css.map +1 -1
  212. package/src/styles/cards/card.css +16 -0
  213. package/src/styles/cards/card.css.map +1 -1
  214. package/src/styles/details/details.css +19 -8
  215. package/src/styles/details/details.css.map +1 -1
  216. package/src/styles/dialog/dialog.css +43 -2
  217. package/src/styles/dialog/dialog.css.map +1 -1
  218. package/src/styles/images/img.css +15 -3
  219. package/src/styles/images/img.css.map +1 -1
  220. package/src/styles/index.css +240 -51
  221. package/src/styles/index.css.map +1 -1
  222. package/src/test/setup.d.ts +9 -0
  223. package/src/test/setup.ts +53 -1
  224. package/libs/chunk-6TE5QEVE.cjs +0 -13
  225. package/libs/chunk-6TE5QEVE.cjs.map +0 -1
  226. package/libs/chunk-7K76RW2A.cjs +0 -18
  227. package/libs/chunk-7K76RW2A.cjs.map +0 -1
  228. package/libs/chunk-BSPKFLO4.js +0 -8
  229. package/libs/chunk-BSPKFLO4.js.map +0 -1
  230. package/libs/chunk-BV5CLH44.cjs +0 -18
  231. package/libs/chunk-BV5CLH44.cjs.map +0 -1
  232. package/libs/chunk-DKGJHKGW.js +0 -9
  233. package/libs/chunk-DKGJHKGW.js.map +0 -1
  234. package/libs/chunk-ECLD37WN.cjs +0 -16
  235. package/libs/chunk-ECLD37WN.cjs.map +0 -1
  236. package/libs/chunk-HYBZBN4G.js +0 -8
  237. package/libs/chunk-HYBZBN4G.js.map +0 -1
  238. package/libs/chunk-KKLTUJFB.cjs.map +0 -1
  239. package/libs/chunk-M5QL5TAE.cjs +0 -14
  240. package/libs/chunk-M5QL5TAE.cjs.map +0 -1
  241. package/libs/chunk-NE6YXTMC.js +0 -7
  242. package/libs/chunk-NE6YXTMC.js.map +0 -1
  243. package/libs/chunk-O6QZBB6G.js.map +0 -1
  244. package/libs/chunk-SXVZSWX6.js +0 -11
  245. package/libs/chunk-SXVZSWX6.js.map +0 -1
  246. package/libs/ui-9a6f9f8d.d.ts +0 -24
  247. package/src/components/cards/README.md +0 -80
  248. package/src/components/dialog/hooks/useClickOutside.ts +0 -33
  249. /package/libs/{chunk-DV56L5YX.cjs.map → chunk-2LTJ7HHX.cjs.map} +0 -0
  250. /package/libs/{chunk-EQ67LF46.js.map → chunk-2Y7W75TT.js.map} +0 -0
  251. /package/libs/{chunk-X3EVB7VS.cjs.map → chunk-5S4ORA4C.cjs.map} +0 -0
  252. /package/libs/{chunk-6BVXFW7U.cjs.map → chunk-AHDJGCG5.cjs.map} +0 -0
  253. /package/libs/{chunk-E3XP6BEX.cjs.map → chunk-B7F5FS6D.cjs.map} +0 -0
  254. /package/libs/{chunk-LHVJKDMA.cjs.map → chunk-J32EZPYD.cjs.map} +0 -0
  255. /package/libs/{chunk-LL7HTLMS.cjs.map → chunk-M5RRNTVX.cjs.map} +0 -0
  256. /package/libs/{chunk-LIQJ7ZZR.js.map → chunk-NGTJDDFO.js.map} +0 -0
  257. /package/libs/{chunk-QCMV4VQZ.js.map → chunk-QLZWHAMK.js.map} +0 -0
  258. /package/libs/{chunk-BIP2NY53.js.map → chunk-RIVUMPOG.js.map} +0 -0
  259. /package/libs/{chunk-ICCKQ2GC.cjs.map → chunk-ROZI23GS.cjs.map} +0 -0
  260. /package/libs/{chunk-NHYXGV3L.js.map → chunk-SMYRLO3E.js.map} +0 -0
  261. /package/libs/{chunk-5ZM4XL44.js.map → chunk-TYRCEX2L.js.map} +0 -0
  262. /package/libs/{chunk-PPOOBUOS.js.map → chunk-XBA562WW.js.map} +0 -0
  263. /package/libs/{chunk-QVV34QEH.cjs.map → chunk-XTQKWY7W.cjs.map} +0 -0
  264. /package/libs/{chunk-YWOYVRFT.js.map → chunk-ZANSFMTD.js.map} +0 -0
@@ -131,3 +131,375 @@ export const InteractionTest: Story = {
131
131
  });
132
132
  },
133
133
  } as Story;
134
+
135
+ export const AutoDismissAlert: Story = {
136
+ args: {
137
+ open: true,
138
+ severity: "success",
139
+ autoHideDuration: 5000,
140
+ title: "Auto-Dismiss Alert",
141
+ children: "This alert will automatically dismiss after 5 seconds",
142
+ },
143
+ parameters: {
144
+ docs: {
145
+ description: {
146
+ story: "Alert with automatic dismissal after 5 seconds. Useful for temporary success messages.",
147
+ },
148
+ },
149
+ },
150
+ } as Story;
151
+
152
+ export const WithActions: Story = {
153
+ args: {
154
+ open: true,
155
+ severity: "warning",
156
+ title: "Unsaved Changes",
157
+ children: "You have unsaved changes. What would you like to do?",
158
+ actions: (
159
+ <>
160
+ <button style={{ marginRight: '8px' }}>Save</button>
161
+ <button>Discard</button>
162
+ </>
163
+ ),
164
+ },
165
+ parameters: {
166
+ docs: {
167
+ description: {
168
+ story: "Alert with custom action buttons for user interactions.",
169
+ },
170
+ },
171
+ },
172
+ } as Story;
173
+
174
+ export const FilledVariant: Story = {
175
+ args: {
176
+ open: true,
177
+ severity: "error",
178
+ variant: "filled",
179
+ title: "Error",
180
+ children: "An error occurred while processing your request.",
181
+ dismissible: true,
182
+ },
183
+ parameters: {
184
+ docs: {
185
+ description: {
186
+ story: "Alert with filled variant - solid colored background for high emphasis.",
187
+ },
188
+ },
189
+ },
190
+ } as Story;
191
+
192
+ export const SoftVariant: Story = {
193
+ args: {
194
+ open: true,
195
+ severity: "info",
196
+ variant: "soft",
197
+ title: "Information",
198
+ children: "This is an informational message with soft variant styling.",
199
+ dismissible: true,
200
+ },
201
+ parameters: {
202
+ docs: {
203
+ description: {
204
+ story: "Alert with soft variant - subtle background without border.",
205
+ },
206
+ },
207
+ },
208
+ } as Story;
209
+
210
+ export const AutoFocusAlert: Story = {
211
+ args: {
212
+ open: true,
213
+ severity: "error",
214
+ autoFocus: true,
215
+ title: "Critical Error",
216
+ children: "This is a critical alert that automatically receives focus for screen readers.",
217
+ dismissible: true,
218
+ },
219
+ parameters: {
220
+ docs: {
221
+ description: {
222
+ story: "Alert with autoFocus enabled - useful for critical alerts that need immediate attention.",
223
+ },
224
+ },
225
+ },
226
+ } as Story;
227
+
228
+ export const WithHeadingLevel: Story = {
229
+ args: {
230
+ open: true,
231
+ severity: "info",
232
+ title: "Section Alert",
233
+ titleLevel: 2,
234
+ children: "This alert uses an h2 heading for proper document structure. Use titleLevel to maintain heading hierarchy.",
235
+ dismissible: true,
236
+ },
237
+ parameters: {
238
+ docs: {
239
+ description: {
240
+ story: "Alert with configurable heading level (WCAG 1.3.1). Use titleLevel prop (2-6) to maintain proper heading hierarchy in your page structure.",
241
+ },
242
+ },
243
+ },
244
+ } as Story;
245
+
246
+ export const WithPauseOnHover: Story = {
247
+ args: {
248
+ open: true,
249
+ severity: "success",
250
+ autoHideDuration: 5000,
251
+ pauseOnHover: true,
252
+ title: "Hover to Pause",
253
+ children: "This alert will pause auto-dismiss when you hover over it or focus on it (WCAG 2.2.1).",
254
+ dismissible: true,
255
+ },
256
+ parameters: {
257
+ docs: {
258
+ description: {
259
+ story: "Alert with pause on hover/focus enabled. Hovering over or focusing the alert pauses the auto-dismiss timer, allowing users more time to read the content.",
260
+ },
261
+ },
262
+ },
263
+ } as Story;
264
+
265
+ export const CustomIconSizes: Story = {
266
+ render: () => (
267
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>
268
+ <Alert
269
+ open={true}
270
+ severity="info"
271
+ iconSize={16}
272
+ title="Small Icon (16px)"
273
+ dismissible={true}
274
+ >
275
+ Compact alert with smaller icon, useful for dense layouts or secondary messages.
276
+ </Alert>
277
+ <Alert
278
+ open={true}
279
+ severity="warning"
280
+ iconSize={24}
281
+ title="Default Icon (24px)"
282
+ dismissible={true}
283
+ >
284
+ Standard alert with default icon size, balanced for most use cases.
285
+ </Alert>
286
+ <Alert
287
+ open={true}
288
+ severity="error"
289
+ iconSize={32}
290
+ title="Large Icon (32px)"
291
+ dismissible={true}
292
+ >
293
+ Prominent alert with larger icon for high-priority messages or larger viewports.
294
+ </Alert>
295
+ <Alert
296
+ open={true}
297
+ severity="success"
298
+ iconSize={48}
299
+ title="Extra Large Icon (48px)"
300
+ dismissible={true}
301
+ >
302
+ Eye-catching alert with extra-large icon for critical success confirmations.
303
+ </Alert>
304
+ </div>
305
+ ),
306
+ parameters: {
307
+ docs: {
308
+ description: {
309
+ story: "Demonstration of customizable icon sizes. Use the `iconSize` prop to adjust the severity icon size based on your design needs and context.",
310
+ },
311
+ },
312
+ },
313
+ } as Story;
314
+
315
+ export const AccessibilityShowcase: Story = {
316
+ render: () => (
317
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>
318
+ <Alert
319
+ open={true}
320
+ severity="error"
321
+ title="Error Alert"
322
+ titleLevel={2}
323
+ autoFocus={true}
324
+ dismissible={true}
325
+ >
326
+ Screen readers will announce "Error:" before the message. This alert is automatically focused.
327
+ </Alert>
328
+ <Alert
329
+ open={true}
330
+ severity="success"
331
+ title="Success Alert"
332
+ titleLevel={3}
333
+ autoHideDuration={8000}
334
+ pauseOnHover={true}
335
+ dismissible={true}
336
+ >
337
+ This alert auto-dismisses in 8 seconds but pauses when hovered or focused.
338
+ </Alert>
339
+ <Alert
340
+ open={true}
341
+ severity="info"
342
+ variant="filled"
343
+ title="Info Alert"
344
+ dismissible={true}
345
+ >
346
+ All dismiss buttons meet 44×44px touch target size (WCAG 2.5.5).
347
+ </Alert>
348
+ </div>
349
+ ),
350
+ parameters: {
351
+ docs: {
352
+ description: {
353
+ story: "Showcase of WCAG 2.1 Level AA accessibility features: screen reader announcements, configurable heading levels, pause on interaction, proper focus indicators, and adequate touch targets.",
354
+ },
355
+ },
356
+ },
357
+ } as Story;
358
+
359
+ export const SimpleTextContent: Story = {
360
+ args: {
361
+ open: true,
362
+ severity: "info",
363
+ title: "Simple Text Alert",
364
+ children: "This is a simple text message that will be wrapped in a paragraph tag automatically.",
365
+ dismissible: true,
366
+ },
367
+ parameters: {
368
+ docs: {
369
+ description: {
370
+ story: "Default content type ('text') automatically wraps simple text content in a paragraph tag for proper semantic HTML.",
371
+ },
372
+ },
373
+ },
374
+ } as Story;
375
+
376
+ export const ComplexContentWithList: Story = {
377
+ args: {
378
+ open: true,
379
+ severity: "warning",
380
+ title: "Action Required",
381
+ contentType: "node",
382
+ children: (
383
+ <>
384
+ <p>Please complete the following steps to secure your account:</p>
385
+ <ul style={{ marginTop: '0.5rem', marginBottom: 0, paddingLeft: '1.5rem' }}>
386
+ <li>Review your recent login activity</li>
387
+ <li>Update your password to a strong, unique passphrase</li>
388
+ <li>Enable two-factor authentication</li>
389
+ <li>Add a recovery email address</li>
390
+ </ul>
391
+ </>
392
+ ),
393
+ dismissible: true,
394
+ },
395
+ parameters: {
396
+ docs: {
397
+ description: {
398
+ story: "Using contentType='node' allows complex content structures like lists, multiple paragraphs, or custom layouts without automatic paragraph wrapping.",
399
+ },
400
+ },
401
+ },
402
+ } as Story;
403
+
404
+ export const CustomLayoutContent: Story = {
405
+ args: {
406
+ open: true,
407
+ severity: "success",
408
+ title: "Deployment Complete",
409
+ contentType: "node",
410
+ children: (
411
+ <div>
412
+ <p>Your application has been successfully deployed to production.</p>
413
+ <div style={{
414
+ display: 'flex',
415
+ gap: '1rem',
416
+ marginTop: '0.75rem',
417
+ padding: '0.5rem',
418
+ background: 'rgba(0,0,0,0.05)',
419
+ borderRadius: '4px'
420
+ }}>
421
+ <div>
422
+ <strong>Build #:</strong> 1234
423
+ </div>
424
+ <div>
425
+ <strong>Duration:</strong> 2m 34s
426
+ </div>
427
+ <div>
428
+ <strong>Environment:</strong> Production
429
+ </div>
430
+ </div>
431
+ </div>
432
+ ),
433
+ dismissible: true,
434
+ },
435
+ parameters: {
436
+ docs: {
437
+ description: {
438
+ story: "contentType='node' enables custom component layouts with complex structures, flexbox layouts, or styled components.",
439
+ },
440
+ },
441
+ },
442
+ } as Story;
443
+
444
+ export const MultiParagraphContent: Story = {
445
+ args: {
446
+ open: true,
447
+ severity: "info",
448
+ title: "Important Update",
449
+ contentType: "node",
450
+ children: (
451
+ <>
452
+ <p style={{ marginBottom: '0.5rem' }}>
453
+ We've made significant improvements to our privacy policy to better protect your data and give you more control over your information.
454
+ </p>
455
+ <p style={{ marginTop: '0.5rem', marginBottom: 0 }}>
456
+ Please take a moment to review the changes. The new policy will take effect on January 1, 2026.
457
+ </p>
458
+ </>
459
+ ),
460
+ dismissible: true,
461
+ },
462
+ parameters: {
463
+ docs: {
464
+ description: {
465
+ story: "Multiple paragraphs can be rendered when using contentType='node', allowing for more detailed alert messages.",
466
+ },
467
+ },
468
+ },
469
+ } as Story;
470
+
471
+ export const ContentTypeComparison: Story = {
472
+ render: () => (
473
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>
474
+ <Alert
475
+ open={true}
476
+ severity="info"
477
+ title="Text Mode (Default)"
478
+ dismissible={true}
479
+ >
480
+ This simple text is automatically wrapped in a paragraph tag.
481
+ </Alert>
482
+ <Alert
483
+ open={true}
484
+ severity="warning"
485
+ title="Node Mode"
486
+ contentType="node"
487
+ dismissible={true}
488
+ >
489
+ <p>This content uses node mode for custom structure.</p>
490
+ <ul style={{ marginTop: '0.5rem', marginBottom: 0, paddingLeft: '1.5rem' }}>
491
+ <li>Supports lists</li>
492
+ <li>Multiple elements</li>
493
+ <li>Custom layouts</li>
494
+ </ul>
495
+ </Alert>
496
+ </div>
497
+ ),
498
+ parameters: {
499
+ docs: {
500
+ description: {
501
+ story: "Side-by-side comparison of text mode (default) vs node mode for rendering alert content.",
502
+ },
503
+ },
504
+ },
505
+ } as Story;