@teseor/css 1.14.3 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/package.json +1 -1
  2. package/src/base/root.docs.html +20 -0
  3. package/src/base/typography/typography.docs.html +161 -0
  4. package/src/components/actions/button/button.docs.html +76 -0
  5. package/src/components/actions/button/button.visual.spec.ts +3 -3
  6. package/src/components/actions/button-group/button-group.docs.html +47 -0
  7. package/src/components/actions/button-group/button-group.visual.spec.ts +3 -3
  8. package/src/components/actions/close-button/close-button.docs.html +77 -0
  9. package/src/components/actions/close-button/close-button.visual.spec.ts +3 -3
  10. package/src/components/content/divider/divider.docs.html +27 -0
  11. package/src/components/content/divider/divider.visual.spec.ts +3 -3
  12. package/src/components/content/scroll-area/scroll-area-visual.png +0 -0
  13. package/src/components/content/scroll-area/scroll-area.docs.html +130 -0
  14. package/src/components/content/scroll-area/scroll-area.visual.spec.ts +3 -3
  15. package/src/components/content/spacer/spacer.docs.html +23 -0
  16. package/src/components/content/spacer/spacer.visual.spec.ts +3 -3
  17. package/src/components/data-display/avatar/avatar.docs.html +67 -0
  18. package/src/components/data-display/avatar/avatar.visual.spec.ts +3 -3
  19. package/src/components/data-display/badge/badge.docs.html +39 -0
  20. package/src/components/data-display/badge/badge.visual.spec.ts +3 -3
  21. package/src/components/data-display/card/card-visual.png +0 -0
  22. package/src/components/data-display/card/card.docs.html +36 -0
  23. package/src/components/data-display/card/card.visual.spec.ts +3 -3
  24. package/src/components/data-display/data-list/data-list-visual.png +0 -0
  25. package/src/components/data-display/data-list/data-list.docs.html +97 -0
  26. package/src/components/data-display/data-list/data-list.visual.spec.ts +3 -3
  27. package/src/components/data-display/icon/icon.docs.html +72 -0
  28. package/src/components/data-display/icon/icon.visual.spec.ts +3 -3
  29. package/src/components/data-display/image/image-visual.png +0 -0
  30. package/src/components/data-display/image/image.docs.html +67 -0
  31. package/src/components/data-display/image/image.visual.spec.ts +3 -3
  32. package/src/components/data-display/stat/stat.docs.html +35 -0
  33. package/src/components/data-display/stat/stat.visual.spec.ts +3 -3
  34. package/src/components/data-display/status/status.docs.html +67 -0
  35. package/src/components/data-display/status/status.visual.spec.ts +3 -3
  36. package/src/components/data-display/table/table.docs.html +73 -0
  37. package/src/components/data-display/table/table.visual.spec.ts +3 -3
  38. package/src/components/data-display/tag/tag.docs.html +42 -0
  39. package/src/components/data-display/tag/tag.visual.spec.ts +3 -3
  40. package/src/components/disclosure/accordion/accordion.docs.html +83 -0
  41. package/src/components/disclosure/accordion/accordion.visual.spec.ts +3 -3
  42. package/src/components/disclosure/disclosure/disclosure.docs.html +51 -0
  43. package/src/components/disclosure/disclosure/disclosure.visual.spec.ts +3 -3
  44. package/src/components/feedback/alert/alert.docs.html +90 -0
  45. package/src/components/feedback/alert/alert.visual.spec.ts +3 -3
  46. package/src/components/feedback/progress/progress.docs.html +65 -0
  47. package/src/components/feedback/progress/progress.visual.spec.ts +3 -3
  48. package/src/components/feedback/progress-circle/progress-circle.docs.html +65 -0
  49. package/src/components/feedback/progress-circle/progress-circle.visual.spec.ts +3 -3
  50. package/src/components/feedback/skeleton/skeleton.docs.html +40 -0
  51. package/src/components/feedback/skeleton/skeleton.visual.spec.ts +3 -3
  52. package/src/components/feedback/spinner/spinner.docs.html +28 -0
  53. package/src/components/feedback/spinner/spinner.visual.spec.ts +3 -3
  54. package/src/components/feedback/toast/toast-visual.png +0 -0
  55. package/src/components/feedback/toast/toast.docs.html +109 -0
  56. package/src/components/feedback/toast/toast.visual.spec.ts +3 -3
  57. package/src/components/forms/checkbox/checkbox.docs.html +33 -0
  58. package/src/components/forms/checkbox/checkbox.visual.spec.ts +3 -3
  59. package/src/components/forms/checkbox-group/checkbox-group.docs.html +104 -0
  60. package/src/components/forms/checkbox-group/checkbox-group.visual.spec.ts +3 -3
  61. package/src/components/forms/field/field.docs.html +63 -0
  62. package/src/components/forms/field/field.visual.spec.ts +3 -3
  63. package/src/components/forms/fieldset/fieldset.docs.html +122 -0
  64. package/src/components/forms/fieldset/fieldset.visual.spec.ts +3 -3
  65. package/src/components/forms/form/form.docs.html +132 -0
  66. package/src/components/forms/form/form.visual.spec.ts +3 -3
  67. package/src/components/forms/form-error/form-error.docs.html +18 -0
  68. package/src/components/forms/form-error/form-error.visual.spec.ts +3 -3
  69. package/src/components/forms/form-helper/form-helper.docs.html +42 -0
  70. package/src/components/forms/form-helper/form-helper.visual.spec.ts +3 -3
  71. package/src/components/forms/input/input-visual.png +0 -0
  72. package/src/components/forms/input/input.docs.html +69 -0
  73. package/src/components/forms/input/input.visual.spec.ts +3 -3
  74. package/src/components/forms/label/label-visual.png +0 -0
  75. package/src/components/forms/label/label.docs.html +29 -0
  76. package/src/components/forms/label/label.visual.spec.ts +3 -3
  77. package/src/components/forms/number-input/number-input-visual.png +0 -0
  78. package/src/components/forms/number-input/number-input.docs.html +100 -0
  79. package/src/components/forms/number-input/number-input.visual.spec.ts +3 -3
  80. package/src/components/forms/password-input/password-input-visual.png +0 -0
  81. package/src/components/forms/password-input/password-input.docs.html +88 -0
  82. package/src/components/forms/password-input/password-input.visual.spec.ts +3 -3
  83. package/src/components/forms/radio/radio.docs.html +52 -0
  84. package/src/components/forms/radio/radio.visual.spec.ts +3 -3
  85. package/src/components/forms/radio-group/radio-group.docs.html +100 -0
  86. package/src/components/forms/radio-group/radio-group.visual.spec.ts +3 -3
  87. package/src/components/forms/search-input/search-input-visual.png +0 -0
  88. package/src/components/forms/search-input/search-input.docs.html +87 -0
  89. package/src/components/forms/search-input/search-input.visual.spec.ts +3 -3
  90. package/src/components/forms/select/select-visual.png +0 -0
  91. package/src/components/forms/select/select.docs.html +70 -0
  92. package/src/components/forms/select/select.visual.spec.ts +3 -3
  93. package/src/components/forms/slider/slider-visual.png +0 -0
  94. package/src/components/forms/slider/slider.docs.html +25 -0
  95. package/src/components/forms/slider/slider.visual.spec.ts +3 -3
  96. package/src/components/forms/textarea/textarea-visual.png +0 -0
  97. package/src/components/forms/textarea/textarea.docs.html +39 -0
  98. package/src/components/forms/textarea/textarea.visual.spec.ts +3 -3
  99. package/src/components/forms/toggle/toggle.docs.html +64 -0
  100. package/src/components/forms/toggle/toggle.visual.spec.ts +3 -3
  101. package/src/components/navigation/breadcrumb/breadcrumb.docs.html +60 -0
  102. package/src/components/navigation/breadcrumb/breadcrumb.visual.spec.ts +3 -3
  103. package/src/components/navigation/dropdown-menu/dropdown-menu-visual.png +0 -0
  104. package/src/components/navigation/dropdown-menu/dropdown-menu.docs.html +106 -0
  105. package/src/components/navigation/dropdown-menu/dropdown-menu.visual.spec.ts +3 -3
  106. package/src/components/navigation/menu/menu.docs.html +122 -0
  107. package/src/components/navigation/menu/menu.visual.spec.ts +3 -3
  108. package/src/components/navigation/nav/nav.docs.html +74 -0
  109. package/src/components/navigation/nav/nav.visual.spec.ts +3 -3
  110. package/src/components/navigation/pagination/pagination-visual.png +0 -0
  111. package/src/components/navigation/pagination/pagination.docs.html +116 -0
  112. package/src/components/navigation/pagination/pagination.visual.spec.ts +3 -3
  113. package/src/components/navigation/tabs/tabs.docs.html +66 -0
  114. package/src/components/navigation/tabs/tabs.visual.spec.ts +3 -3
  115. package/src/components/overlays/dialog/dialog.docs.html +61 -0
  116. package/src/components/overlays/dialog/dialog.visual.spec.ts +3 -3
  117. package/src/components/overlays/drawer/drawer-visual.png +0 -0
  118. package/src/components/overlays/drawer/drawer.docs.html +90 -0
  119. package/src/components/overlays/drawer/drawer.visual.spec.ts +3 -3
  120. package/src/components/overlays/modal/modal.docs.html +69 -0
  121. package/src/components/overlays/modal/modal.visual.spec.ts +3 -3
  122. package/src/components/overlays/overlay/overlay.docs.html +30 -0
  123. package/src/components/overlays/overlay/overlay.visual.spec.ts +3 -3
  124. package/src/components/overlays/popover/popover.docs.html +41 -0
  125. package/src/components/overlays/popover/popover.visual.spec.ts +3 -3
  126. package/src/components/overlays/tooltip/tooltip.docs.html +33 -0
  127. package/src/components/overlays/tooltip/tooltip.visual.spec.ts +3 -3
  128. package/src/components/typography/blockquote/blockquote.docs.html +24 -0
  129. package/src/components/typography/blockquote/blockquote.visual.spec.ts +3 -3
  130. package/src/components/typography/code/code-visual.png +0 -0
  131. package/src/components/typography/code/code.docs.html +23 -0
  132. package/src/components/typography/code/code.visual.spec.ts +3 -3
  133. package/src/components/typography/code-block/code-block-visual.png +0 -0
  134. package/src/components/typography/code-block/code-block.docs.html +87 -0
  135. package/src/components/typography/code-block/code-block.visual.spec.ts +3 -3
  136. package/src/components/typography/heading/heading-visual.png +0 -0
  137. package/src/components/typography/heading/heading.docs.html +26 -0
  138. package/src/components/typography/heading/heading.visual.spec.ts +3 -3
  139. package/src/components/typography/kbd/kbd.docs.html +16 -0
  140. package/src/components/typography/kbd/kbd.visual.spec.ts +3 -3
  141. package/src/components/typography/link/link.docs.html +33 -0
  142. package/src/components/typography/link/link.visual.spec.ts +3 -3
  143. package/src/components/typography/list/list.docs.html +79 -0
  144. package/src/components/typography/list/list.visual.spec.ts +3 -3
  145. package/src/components/typography/mark/mark.docs.html +12 -0
  146. package/src/components/typography/mark/mark.visual.spec.ts +3 -3
  147. package/src/config/guides/accessibility.docs.html +108 -0
  148. package/src/config/guides/getting-started.docs.html +47 -0
  149. package/src/config/guides/theming.docs.html +71 -0
  150. package/src/config/tokens/colors/colors.docs.html +75 -0
  151. package/src/config/tokens/design-tokens.docs.html +116 -0
  152. package/src/config/tokens/grid/grid.docs.html +12 -0
  153. package/src/config/tokens/spacing/spacing.docs.html +33 -0
  154. package/src/debug/debug.docs.html +29 -0
  155. package/src/layout/app-shell/app-shell-visual.png +0 -0
  156. package/src/layout/app-shell/app-shell.docs.html +102 -0
  157. package/src/layout/app-shell/app-shell.visual.spec.ts +3 -3
  158. package/src/layout/aspect-ratio/aspect-ratio.docs.html +41 -0
  159. package/src/layout/aspect-ratio/aspect-ratio.visual.spec.ts +3 -3
  160. package/src/layout/box/box-visual.png +0 -0
  161. package/src/layout/box/box.docs.html +27 -0
  162. package/src/layout/box/box.visual.spec.ts +3 -3
  163. package/src/layout/center/center.docs.html +26 -0
  164. package/src/layout/center/center.visual.spec.ts +3 -3
  165. package/src/layout/column/column.docs.html +32 -0
  166. package/src/layout/column/column.visual.spec.ts +3 -3
  167. package/src/layout/container/container.docs.html +37 -0
  168. package/src/layout/content/content-visual.png +0 -0
  169. package/src/layout/content/content.docs.html +38 -0
  170. package/src/layout/content/content.visual.spec.ts +7 -3
  171. package/src/layout/footer/footer-visual.png +0 -0
  172. package/src/layout/footer/footer.docs.html +73 -0
  173. package/src/layout/footer/footer.visual.spec.ts +7 -3
  174. package/src/layout/grid/grid.docs.html +87 -0
  175. package/src/layout/grid/grid.visual.spec.ts +3 -3
  176. package/src/layout/main/main.docs.html +31 -0
  177. package/src/layout/nav-rail/nav-rail-visual.png +0 -0
  178. package/src/layout/nav-rail/nav-rail.docs.html +42 -0
  179. package/src/layout/nav-rail/nav-rail.visual.spec.ts +7 -3
  180. package/src/layout/page-header/page-header.docs.html +52 -0
  181. package/src/layout/page-header/page-header.visual.spec.ts +7 -3
  182. package/src/layout/row/row.docs.html +47 -0
  183. package/src/layout/row/row.visual.spec.ts +3 -3
  184. package/src/layout/sidebar/sidebar-visual.png +0 -0
  185. package/src/layout/sidebar/sidebar.docs.html +30 -0
  186. package/src/layout/sidebar/sidebar.visual.spec.ts +7 -3
  187. package/src/layout/sidebar-nav/sidebar-nav.docs.html +235 -0
  188. package/src/layout/sidebar-nav/sidebar-nav.visual.spec.ts +7 -3
  189. package/src/layout/topbar/topbar-visual.png +0 -0
  190. package/src/layout/topbar/topbar.docs.html +64 -0
  191. package/src/layout/topbar/topbar.visual.spec.ts +7 -3
  192. package/src/utilities/container/container.docs.html +34 -0
  193. package/src/utilities/display/display.docs.html +30 -0
  194. package/src/utilities/scroll-animation/scroll-animation.docs.html +32 -0
  195. package/src/utilities/scroll-snap/scroll-snap.docs.html +80 -0
  196. package/src/utilities/spacing/spacing.docs.html +29 -0
  197. package/src/utilities/text/text.docs.html +66 -0
  198. package/src/utilities/view-transition/view-transition.docs.html +52 -0
  199. package/src/utilities/visually-hidden/visually-hidden.docs.html +18 -0
  200. package/src/base/root.docs.json +0 -35
  201. package/src/base/typography/typography.docs.json +0 -328
  202. package/src/components/actions/button/button.docs.json +0 -264
  203. package/src/components/actions/button-group/button-group.docs.json +0 -151
  204. package/src/components/actions/close-button/close-button.docs.json +0 -265
  205. package/src/components/content/divider/divider.docs.json +0 -113
  206. package/src/components/content/scroll-area/scroll-area.docs.json +0 -273
  207. package/src/components/content/spacer/spacer.docs.json +0 -102
  208. package/src/components/data-display/avatar/avatar.docs.json +0 -245
  209. package/src/components/data-display/badge/badge.docs.json +0 -114
  210. package/src/components/data-display/card/card.docs.json +0 -229
  211. package/src/components/data-display/data-list/data-list.docs.json +0 -259
  212. package/src/components/data-display/icon/icon.docs.json +0 -307
  213. package/src/components/data-display/image/image.docs.json +0 -337
  214. package/src/components/data-display/stat/stat.docs.json +0 -114
  215. package/src/components/data-display/status/status.docs.json +0 -147
  216. package/src/components/data-display/table/table.docs.json +0 -184
  217. package/src/components/data-display/tag/tag.docs.json +0 -146
  218. package/src/components/disclosure/accordion/accordion.docs.json +0 -206
  219. package/src/components/disclosure/disclosure/disclosure.docs.json +0 -154
  220. package/src/components/feedback/alert/alert.docs.json +0 -325
  221. package/src/components/feedback/progress/progress.docs.json +0 -315
  222. package/src/components/feedback/progress-circle/progress-circle.docs.json +0 -378
  223. package/src/components/feedback/skeleton/skeleton.docs.json +0 -142
  224. package/src/components/feedback/spinner/spinner.docs.json +0 -121
  225. package/src/components/feedback/toast/toast.docs.json +0 -418
  226. package/src/components/forms/checkbox/checkbox.docs.json +0 -166
  227. package/src/components/forms/checkbox-group/checkbox-group.docs.json +0 -339
  228. package/src/components/forms/field/field.docs.json +0 -276
  229. package/src/components/forms/fieldset/fieldset.docs.json +0 -520
  230. package/src/components/forms/form/form.docs.json +0 -482
  231. package/src/components/forms/form-error/form-error.docs.json +0 -61
  232. package/src/components/forms/form-helper/form-helper.docs.json +0 -151
  233. package/src/components/forms/input/input.docs.json +0 -306
  234. package/src/components/forms/label/label.docs.json +0 -110
  235. package/src/components/forms/number-input/number-input.docs.json +0 -311
  236. package/src/components/forms/password-input/password-input.docs.json +0 -316
  237. package/src/components/forms/radio/radio.docs.json +0 -236
  238. package/src/components/forms/radio-group/radio-group.docs.json +0 -351
  239. package/src/components/forms/search-input/search-input.docs.json +0 -293
  240. package/src/components/forms/select/select.docs.json +0 -231
  241. package/src/components/forms/slider/slider.docs.json +0 -144
  242. package/src/components/forms/textarea/textarea.docs.json +0 -229
  243. package/src/components/forms/toggle/toggle.docs.json +0 -229
  244. package/src/components/navigation/breadcrumb/breadcrumb.docs.json +0 -240
  245. package/src/components/navigation/dropdown-menu/dropdown-menu.docs.json +0 -290
  246. package/src/components/navigation/menu/menu.docs.json +0 -326
  247. package/src/components/navigation/nav/nav.docs.json +0 -304
  248. package/src/components/navigation/pagination/pagination.docs.json +0 -483
  249. package/src/components/navigation/tabs/tabs.docs.json +0 -243
  250. package/src/components/overlays/dialog/dialog.docs.json +0 -200
  251. package/src/components/overlays/drawer/drawer.docs.json +0 -307
  252. package/src/components/overlays/modal/modal.docs.json +0 -252
  253. package/src/components/overlays/overlay/overlay.docs.json +0 -138
  254. package/src/components/overlays/popover/popover.docs.json +0 -154
  255. package/src/components/overlays/tooltip/tooltip.docs.json +0 -133
  256. package/src/components/typography/blockquote/blockquote.docs.json +0 -89
  257. package/src/components/typography/code/code.docs.json +0 -104
  258. package/src/components/typography/code-block/code-block.docs.json +0 -308
  259. package/src/components/typography/heading/heading.docs.json +0 -120
  260. package/src/components/typography/kbd/kbd.docs.json +0 -61
  261. package/src/components/typography/link/link.docs.json +0 -149
  262. package/src/components/typography/list/list.docs.json +0 -296
  263. package/src/components/typography/mark/mark.docs.json +0 -60
  264. package/src/config/guides/accessibility.docs.json +0 -126
  265. package/src/config/guides/getting-started.docs.json +0 -106
  266. package/src/config/guides/theming.docs.json +0 -289
  267. package/src/config/tokens/colors/colors.docs.json +0 -316
  268. package/src/config/tokens/design-tokens.docs.json +0 -239
  269. package/src/config/tokens/grid/grid.docs.json +0 -54
  270. package/src/config/tokens/spacing/spacing.docs.json +0 -114
  271. package/src/debug/debug.docs.json +0 -96
  272. package/src/layout/app-shell/app-shell.docs.json +0 -155
  273. package/src/layout/aspect-ratio/aspect-ratio.docs.json +0 -193
  274. package/src/layout/box/box.docs.json +0 -93
  275. package/src/layout/center/center.docs.json +0 -63
  276. package/src/layout/column/column.docs.json +0 -157
  277. package/src/layout/container/container.docs.json +0 -85
  278. package/src/layout/content/content.docs.json +0 -82
  279. package/src/layout/footer/footer.docs.json +0 -119
  280. package/src/layout/grid/grid.docs.json +0 -493
  281. package/src/layout/main/main.docs.json +0 -87
  282. package/src/layout/nav-rail/nav-rail.docs.json +0 -76
  283. package/src/layout/page-header/page-header.docs.json +0 -124
  284. package/src/layout/row/row.docs.json +0 -237
  285. package/src/layout/sidebar/sidebar.docs.json +0 -63
  286. package/src/layout/sidebar-nav/sidebar-nav.docs.json +0 -833
  287. package/src/layout/topbar/topbar.docs.json +0 -110
  288. package/src/utilities/container/container.docs.json +0 -121
  289. package/src/utilities/display/display.docs.json +0 -83
  290. package/src/utilities/scroll-animation/scroll-animation.docs.json +0 -100
  291. package/src/utilities/scroll-snap/scroll-snap.docs.json +0 -333
  292. package/src/utilities/spacing/spacing.docs.json +0 -133
  293. package/src/utilities/text/text.docs.json +0 -191
  294. package/src/utilities/view-transition/view-transition.docs.json +0 -63
  295. package/src/utilities/visually-hidden/visually-hidden.docs.json +0 -44
@@ -0,0 +1,67 @@
1
+ ---
2
+ title: Status
3
+ type: component
4
+ id: status
5
+ description: Visual status indicator with colored dot to show state.
6
+ api: ./status.api.json
7
+ ---
8
+
9
+ <!-- @variants -->
10
+ <div style="display: flex; flex-direction: column; gap: var(--ui-space-2);">
11
+ <span class="ui-status">
12
+ <span class="ui-status__dot"></span>
13
+ Default
14
+ </span>
15
+ <span class="ui-status ui-status--success">
16
+ <span class="ui-status__dot"></span>
17
+ Online
18
+ </span>
19
+ <span class="ui-status ui-status--warning">
20
+ <span class="ui-status__dot"></span>
21
+ Away
22
+ </span>
23
+ <span class="ui-status ui-status--danger">
24
+ <span class="ui-status__dot"></span>
25
+ Busy
26
+ </span>
27
+ <span class="ui-status ui-status--info">
28
+ <span class="ui-status__dot"></span>
29
+ In a meeting
30
+ </span>
31
+ </div>
32
+
33
+ <!-- @sizes -->
34
+ <div style="display: flex; gap: var(--ui-space-4); align-items: center;">
35
+ <span class="ui-status ui-status--success ui-status--sm">
36
+ <span class="ui-status__dot"></span>
37
+ Small
38
+ </span>
39
+ <span class="ui-status ui-status--success">
40
+ <span class="ui-status__dot"></span>
41
+ Default
42
+ </span>
43
+ <span class="ui-status ui-status--success ui-status--lg">
44
+ <span class="ui-status__dot"></span>
45
+ Large
46
+ </span>
47
+ </div>
48
+
49
+ <!-- @pulse_animation -->
50
+ <!-- For live or active indicators -->
51
+ <span class="ui-status ui-status--success ui-status--pulse">
52
+ <span class="ui-status__dot"></span>
53
+ Live
54
+ </span>
55
+
56
+ <!-- @dot_only -->
57
+ <div style="display: flex; gap: var(--ui-space-2);">
58
+ <span class="ui-status ui-status--success">
59
+ <span class="ui-status__dot"></span>
60
+ </span>
61
+ <span class="ui-status ui-status--warning">
62
+ <span class="ui-status__dot"></span>
63
+ </span>
64
+ <span class="ui-status ui-status--danger">
65
+ <span class="ui-status__dot"></span>
66
+ </span>
67
+ </div>
@@ -2,15 +2,15 @@ import { resolve } from 'node:path';
2
2
  import { expect, test } from '@playwright/test';
3
3
  import {
4
4
  saveForLostPixel,
5
- setupVisualTestFromDocs,
5
+ setupVisualTestFromHtmlDocs,
6
6
  validateGridRhythm,
7
7
  } from '../../../../test-utils';
8
8
 
9
- const DOCS_PATH = resolve(__dirname, 'status.docs.json');
9
+ const DOCS_PATH = resolve(__dirname, 'status.docs.html');
10
10
 
11
11
  test.describe('status visual regression', () => {
12
12
  test('all variations', async ({ page }) => {
13
- await setupVisualTestFromDocs(page, DOCS_PATH);
13
+ await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
14
14
  await validateGridRhythm(page, 'status');
15
15
  await saveForLostPixel(page, 'status');
16
16
  await expect(page.locator('body')).toHaveScreenshot('status.visual.png');
@@ -0,0 +1,73 @@
1
+ ---
2
+ title: Table
3
+ type: component
4
+ id: table
5
+ description: Styled table with header formatting and optional variants.
6
+ api: ./table.api.json
7
+ ---
8
+
9
+ <!-- @basic_table -->
10
+ <table class="ui-table">
11
+ <thead>
12
+ <tr>
13
+ <th>Name</th>
14
+ <th>Value</th>
15
+ </tr>
16
+ </thead>
17
+ <tbody>
18
+ <tr>
19
+ <td>Alpha</td>
20
+ <td>100</td>
21
+ </tr>
22
+ <tr>
23
+ <td>Beta</td>
24
+ <td>200</td>
25
+ </tr>
26
+ </tbody>
27
+ </table>
28
+
29
+ <!-- @variants -->
30
+ <table class="ui-table ui-table--compact">
31
+ <thead>
32
+ <tr>
33
+ <th>Token</th>
34
+ <th>Value</th>
35
+ </tr>
36
+ </thead>
37
+ <tbody>
38
+ <tr>
39
+ <td>
40
+ <code class="ui-code ui-code--sm">--space-1</code>
41
+ </td>
42
+ <td>0.5rem</td>
43
+ </tr>
44
+ <tr>
45
+ <td>
46
+ <code class="ui-code ui-code--sm">--space-2</code>
47
+ </td>
48
+ <td>1rem</td>
49
+ </tr>
50
+ </tbody>
51
+ </table>
52
+ <table class="ui-table ui-table--striped">
53
+ <thead>
54
+ <tr>
55
+ <th>Item</th>
56
+ <th>Status</th>
57
+ </tr>
58
+ </thead>
59
+ <tbody>
60
+ <tr>
61
+ <td>Task 1</td>
62
+ <td>Done</td>
63
+ </tr>
64
+ <tr>
65
+ <td>Task 2</td>
66
+ <td>Pending</td>
67
+ </tr>
68
+ <tr>
69
+ <td>Task 3</td>
70
+ <td>Done</td>
71
+ </tr>
72
+ </tbody>
73
+ </table>
@@ -2,15 +2,15 @@ import { resolve } from 'node:path';
2
2
  import { expect, test } from '@playwright/test';
3
3
  import {
4
4
  saveForLostPixel,
5
- setupVisualTestFromDocs,
5
+ setupVisualTestFromHtmlDocs,
6
6
  validateGridRhythm,
7
7
  } from '../../../../test-utils';
8
8
 
9
- const DOCS_PATH = resolve(__dirname, 'table.docs.json');
9
+ const DOCS_PATH = resolve(__dirname, 'table.docs.html');
10
10
 
11
11
  test.describe('table visual regression', () => {
12
12
  test('all variations', async ({ page }) => {
13
- await setupVisualTestFromDocs(page, DOCS_PATH);
13
+ await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
14
14
  await validateGridRhythm(page, 'table');
15
15
  await saveForLostPixel(page, 'table');
16
16
  await expect(page.locator('body')).toHaveScreenshot('table.visual.png');
@@ -0,0 +1,42 @@
1
+ ---
2
+ title: Tag
3
+ type: component
4
+ id: tag
5
+ description: Keyword labels for categorization. Use for filtering, attributes, or status indicators.
6
+ api: ./tag.api.json
7
+ ---
8
+
9
+ <!-- @default | row -->
10
+ <span class="ui-tag">Tag</span>
11
+ <span class="ui-tag">Category</span>
12
+ <span class="ui-tag">Label</span>
13
+
14
+ <!-- @sizes | row -->
15
+ <span class="ui-tag ui-tag--sm">Small</span>
16
+ <span class="ui-tag">Default</span>
17
+ <span class="ui-tag ui-tag--lg">Large</span>
18
+
19
+ <!-- @variants | row -->
20
+ <span class="ui-tag">Default</span>
21
+ <span class="ui-tag ui-tag--primary">Primary</span>
22
+ <span class="ui-tag ui-tag--success">Success</span>
23
+ <span class="ui-tag ui-tag--warning">Warning</span>
24
+ <span class="ui-tag ui-tag--danger">Danger</span>
25
+
26
+ <!-- @with_remove_button -->
27
+ <span class="ui-tag">
28
+ <span>Removable</span>
29
+ <button class="ui-tag__remove" aria-label="Remove">
30
+ <svg class="ui-icon ui-icon--xs" viewBox="0 0 24 24">
31
+ <path d="M18 6 6 18M6 6l12 12"></path>
32
+ </svg>
33
+ </button>
34
+ </span>
35
+
36
+ <!-- @tag_group -->
37
+ <div class="ui-tag-group">
38
+ <span class="ui-tag">JavaScript</span>
39
+ <span class="ui-tag">TypeScript</span>
40
+ <span class="ui-tag">React</span>
41
+ <span class="ui-tag">CSS</span>
42
+ </div>
@@ -2,15 +2,15 @@ import { resolve } from 'node:path';
2
2
  import { expect, test } from '@playwright/test';
3
3
  import {
4
4
  saveForLostPixel,
5
- setupVisualTestFromDocs,
5
+ setupVisualTestFromHtmlDocs,
6
6
  validateGridRhythm,
7
7
  } from '../../../../test-utils';
8
8
 
9
- const DOCS_PATH = resolve(__dirname, 'tag.docs.json');
9
+ const DOCS_PATH = resolve(__dirname, 'tag.docs.html');
10
10
 
11
11
  test.describe('tag visual regression', () => {
12
12
  test('all variations', async ({ page }) => {
13
- await setupVisualTestFromDocs(page, DOCS_PATH);
13
+ await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
14
14
  await validateGridRhythm(page, 'tag');
15
15
  await saveForLostPixel(page, 'tag');
16
16
  await expect(page.locator('body')).toHaveScreenshot('tag.visual.png');
@@ -0,0 +1,83 @@
1
+ ---
2
+ title: Accordion
3
+ type: component
4
+ id: accordion
5
+ description: Container for grouped expandable sections. Use with disclosure components.
6
+ api: ./accordion.api.json
7
+ ---
8
+
9
+ <!-- @default -->
10
+ <div class="ui-accordion">
11
+ <details class="ui-disclosure">
12
+ <summary class="ui-disclosure__trigger">
13
+ Section 1
14
+ <span class="ui-disclosure__icon">▾</span>
15
+ </summary>
16
+ <div class="ui-disclosure__content">
17
+ <p>Content for section 1</p>
18
+ </div>
19
+ </details>
20
+ <details class="ui-disclosure">
21
+ <summary class="ui-disclosure__trigger">
22
+ Section 2
23
+ <span class="ui-disclosure__icon">▾</span>
24
+ </summary>
25
+ <div class="ui-disclosure__content">
26
+ <p>Content for section 2</p>
27
+ </div>
28
+ </details>
29
+ <details class="ui-disclosure">
30
+ <summary class="ui-disclosure__trigger">
31
+ Section 3
32
+ <span class="ui-disclosure__icon">▾</span>
33
+ </summary>
34
+ <div class="ui-disclosure__content">
35
+ <p>Content for section 3</p>
36
+ </div>
37
+ </details>
38
+ </div>
39
+
40
+ <!-- @separated -->
41
+ <!-- Gap between accordion items -->
42
+ <div class="ui-accordion ui-accordion--separated">
43
+ <details class="ui-disclosure">
44
+ <summary class="ui-disclosure__trigger">
45
+ Section 1
46
+ <span class="ui-disclosure__icon">▾</span>
47
+ </summary>
48
+ <div class="ui-disclosure__content">
49
+ <p>Content for section 1</p>
50
+ </div>
51
+ </details>
52
+ <details class="ui-disclosure">
53
+ <summary class="ui-disclosure__trigger">
54
+ Section 2
55
+ <span class="ui-disclosure__icon">▾</span>
56
+ </summary>
57
+ <div class="ui-disclosure__content">
58
+ <p>Content for section 2</p>
59
+ </div>
60
+ </details>
61
+ </div>
62
+
63
+ <!-- @with_one_open -->
64
+ <div class="ui-accordion">
65
+ <details class="ui-disclosure" open>
66
+ <summary class="ui-disclosure__trigger">
67
+ Open Section
68
+ <span class="ui-disclosure__icon">▾</span>
69
+ </summary>
70
+ <div class="ui-disclosure__content">
71
+ <p>This section starts open</p>
72
+ </div>
73
+ </details>
74
+ <details class="ui-disclosure">
75
+ <summary class="ui-disclosure__trigger">
76
+ Closed Section
77
+ <span class="ui-disclosure__icon">▾</span>
78
+ </summary>
79
+ <div class="ui-disclosure__content">
80
+ <p>Click to open</p>
81
+ </div>
82
+ </details>
83
+ </div>
@@ -2,15 +2,15 @@ import { resolve } from 'node:path';
2
2
  import { expect, test } from '@playwright/test';
3
3
  import {
4
4
  saveForLostPixel,
5
- setupVisualTestFromDocs,
5
+ setupVisualTestFromHtmlDocs,
6
6
  validateGridRhythm,
7
7
  } from '../../../../test-utils';
8
8
 
9
- const DOCS_PATH = resolve(__dirname, 'accordion.docs.json');
9
+ const DOCS_PATH = resolve(__dirname, 'accordion.docs.html');
10
10
 
11
11
  test.describe('accordion visual regression', () => {
12
12
  test('all variations', async ({ page }) => {
13
- await setupVisualTestFromDocs(page, DOCS_PATH);
13
+ await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
14
14
  await validateGridRhythm(page, 'accordion');
15
15
  await saveForLostPixel(page, 'accordion');
16
16
  await expect(page.locator('body')).toHaveScreenshot('accordion.visual.png');
@@ -0,0 +1,51 @@
1
+ ---
2
+ title: Disclosure
3
+ type: component
4
+ id: disclosure
5
+ description: Expandable/collapsible content section. Uses native details/summary for accessibility without JS.
6
+ api: ./disclosure.api.json
7
+ ---
8
+
9
+ <!-- @default -->
10
+ <details class="ui-disclosure">
11
+ <summary class="ui-disclosure__trigger">
12
+ Click to expand
13
+ <span class="ui-disclosure__icon">▾</span>
14
+ </summary>
15
+ <div class="ui-disclosure__content">
16
+ <p>Hidden content that expands when clicked.</p>
17
+ </div>
18
+ </details>
19
+
20
+ <!-- @open_by_default -->
21
+ <details class="ui-disclosure" open>
22
+ <summary class="ui-disclosure__trigger">
23
+ Already expanded
24
+ <span class="ui-disclosure__icon">▾</span>
25
+ </summary>
26
+ <div class="ui-disclosure__content">
27
+ <p>This content is visible by default.</p>
28
+ </div>
29
+ </details>
30
+
31
+ <!-- @borderless -->
32
+ <details class="ui-disclosure ui-disclosure--borderless">
33
+ <summary class="ui-disclosure__trigger">
34
+ Borderless disclosure
35
+ <span class="ui-disclosure__icon">▾</span>
36
+ </summary>
37
+ <div class="ui-disclosure__content">
38
+ <p>No border around the disclosure.</p>
39
+ </div>
40
+ </details>
41
+
42
+ <!-- @animated -->
43
+ <details class="ui-disclosure ui-disclosure--animate">
44
+ <summary class="ui-disclosure__trigger">
45
+ Animated expansion
46
+ <span class="ui-disclosure__icon">▾</span>
47
+ </summary>
48
+ <div class="ui-disclosure__content">
49
+ <p>Content animates in when opened.</p>
50
+ </div>
51
+ </details>
@@ -2,15 +2,15 @@ import { resolve } from 'node:path';
2
2
  import { expect, test } from '@playwright/test';
3
3
  import {
4
4
  saveForLostPixel,
5
- setupVisualTestFromDocs,
5
+ setupVisualTestFromHtmlDocs,
6
6
  validateGridRhythm,
7
7
  } from '../../../../test-utils';
8
8
 
9
- const DOCS_PATH = resolve(__dirname, 'disclosure.docs.json');
9
+ const DOCS_PATH = resolve(__dirname, 'disclosure.docs.html');
10
10
 
11
11
  test.describe('disclosure visual regression', () => {
12
12
  test('all variations', async ({ page }) => {
13
- await setupVisualTestFromDocs(page, DOCS_PATH);
13
+ await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
14
14
  await validateGridRhythm(page, 'disclosure');
15
15
  await saveForLostPixel(page, 'disclosure');
16
16
  await expect(page.locator('body')).toHaveScreenshot('disclosure.visual.png');
@@ -0,0 +1,90 @@
1
+ ---
2
+ title: Alert
3
+ type: component
4
+ id: alert
5
+ description: Informational banner for important messages. Use variants for different message types.
6
+ api: ./alert.api.json
7
+ ---
8
+
9
+ <!-- @default -->
10
+ <div class="ui-alert">
11
+ <div class="ui-alert__content">
12
+ <p class="ui-alert__title">Note</p>
13
+ <p class="ui-alert__description">This is a default alert message.</p>
14
+ </div>
15
+ </div>
16
+
17
+ <!-- @variants -->
18
+ <div class="ui-column" style="--column-gap: var(--ui-space-2);">
19
+ <div class="ui-alert ui-alert--info">
20
+ <div class="ui-alert__content">
21
+ <p class="ui-alert__title">Info</p>
22
+ <p class="ui-alert__description">Informational message for the user.</p>
23
+ </div>
24
+ </div>
25
+ <div class="ui-alert ui-alert--success">
26
+ <div class="ui-alert__content">
27
+ <p class="ui-alert__title">Success</p>
28
+ <p class="ui-alert__description">Your action was completed successfully.</p>
29
+ </div>
30
+ </div>
31
+ <div class="ui-alert ui-alert--warning">
32
+ <div class="ui-alert__content">
33
+ <p class="ui-alert__title">Warning</p>
34
+ <p class="ui-alert__description">Please review before continuing.</p>
35
+ </div>
36
+ </div>
37
+ <div class="ui-alert ui-alert--danger">
38
+ <div class="ui-alert__content">
39
+ <p class="ui-alert__title">Error</p>
40
+ <p class="ui-alert__description">Something went wrong. Please try again.</p>
41
+ </div>
42
+ </div>
43
+ </div>
44
+
45
+ <!-- @with_icon -->
46
+ <div class="ui-alert ui-alert--info">
47
+ <svg class="ui-icon ui-icon--sm ui-alert__icon" viewBox="0 0 24 24">
48
+ <circle cx="12" cy="12" r="10"></circle>
49
+ <path d="M12 16v-4"></path>
50
+ <path d="M12 8h.01"></path>
51
+ </svg>
52
+ <div class="ui-alert__content">
53
+ <p class="ui-alert__description">Your session will expire in 5 minutes.</p>
54
+ </div>
55
+ </div>
56
+
57
+ <!-- @description_only -->
58
+ <div class="ui-alert ui-alert--success">
59
+ <div class="ui-alert__content">
60
+ <p class="ui-alert__description">File uploaded successfully.</p>
61
+ </div>
62
+ </div>
63
+
64
+ <!-- @sizes -->
65
+ <div class="ui-column" style="--column-gap: var(--ui-space-2);">
66
+ <div class="ui-alert ui-alert--info ui-alert--sm">
67
+ <div class="ui-alert__content">
68
+ <p class="ui-alert__description">Small alert with compact padding.</p>
69
+ </div>
70
+ </div>
71
+ <div class="ui-alert ui-alert--info">
72
+ <div class="ui-alert__content">
73
+ <p class="ui-alert__description">Default alert size.</p>
74
+ </div>
75
+ </div>
76
+ <div class="ui-alert ui-alert--info ui-alert--lg">
77
+ <div class="ui-alert__content">
78
+ <p class="ui-alert__description">Large alert with extra padding.</p>
79
+ </div>
80
+ </div>
81
+ </div>
82
+
83
+ <!-- @dismissible -->
84
+ <div class="ui-alert ui-alert--info ui-alert--dismissible">
85
+ <div class="ui-alert__content">
86
+ <p class="ui-alert__title">Dismissible</p>
87
+ <p class="ui-alert__description">This alert can be closed by the user.</p>
88
+ </div>
89
+ <button class="ui-alert__close ui-close-button" aria-label="Close"></button>
90
+ </div>
@@ -2,15 +2,15 @@ import { resolve } from 'node:path';
2
2
  import { expect, test } from '@playwright/test';
3
3
  import {
4
4
  saveForLostPixel,
5
- setupVisualTestFromDocs,
5
+ setupVisualTestFromHtmlDocs,
6
6
  validateGridRhythm,
7
7
  } from '../../../../test-utils';
8
8
 
9
- const DOCS_PATH = resolve(__dirname, 'alert.docs.json');
9
+ const DOCS_PATH = resolve(__dirname, 'alert.docs.html');
10
10
 
11
11
  test.describe('alert visual regression', () => {
12
12
  test('all variations', async ({ page }) => {
13
- await setupVisualTestFromDocs(page, DOCS_PATH);
13
+ await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
14
14
  await validateGridRhythm(page, 'alert');
15
15
  await saveForLostPixel(page, 'alert');
16
16
  await expect(page.locator('body')).toHaveScreenshot('alert.visual.png');
@@ -0,0 +1,65 @@
1
+ ---
2
+ title: Progress
3
+ type: component
4
+ id: progress
5
+ description: Progress bar indicator showing completion status. Use aria-valuenow for accessibility.
6
+ api: ./progress.api.json
7
+ ---
8
+
9
+ <!-- @default -->
10
+ <div class="ui-progress" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" aria-label="Loading">
11
+ <div class="ui-progress__bar" style="width: 60%;"></div>
12
+ </div>
13
+
14
+ <!-- @sizes -->
15
+ <div style="display: flex; flex-direction: column; gap: var(--ui-space-2);">
16
+ <div class="ui-progress ui-progress--sm" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100">
17
+ <div class="ui-progress__bar" style="width: 40%;"></div>
18
+ </div>
19
+ <div class="ui-progress" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100">
20
+ <div class="ui-progress__bar" style="width: 60%;"></div>
21
+ </div>
22
+ <div class="ui-progress ui-progress--lg" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100">
23
+ <div class="ui-progress__bar" style="width: 80%;"></div>
24
+ </div>
25
+ </div>
26
+
27
+ <!-- @colors -->
28
+ <div style="display: flex; flex-direction: column; gap: var(--ui-space-2);">
29
+ <div class="ui-progress ui-progress--success" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">
30
+ <div class="ui-progress__bar" style="width: 100%;"></div>
31
+ </div>
32
+ <div class="ui-progress ui-progress--warning" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100">
33
+ <div class="ui-progress__bar" style="width: 60%;"></div>
34
+ </div>
35
+ <div class="ui-progress ui-progress--danger" role="progressbar" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
36
+ <div class="ui-progress__bar" style="width: 25%;"></div>
37
+ </div>
38
+ </div>
39
+
40
+ <!-- @striped -->
41
+ <div class="ui-progress ui-progress--striped" role="progressbar" aria-valuenow="70" aria-valuemin="0" aria-valuemax="100">
42
+ <div class="ui-progress__bar" style="width: 70%;"></div>
43
+ </div>
44
+
45
+ <!-- @animated_stripes -->
46
+ <div class="ui-progress ui-progress--striped ui-progress--animated" role="progressbar" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
47
+ <div class="ui-progress__bar" style="width: 50%;"></div>
48
+ </div>
49
+
50
+ <!-- @indeterminate -->
51
+ <!-- For unknown progress duration -->
52
+ <div class="ui-progress ui-progress--indeterminate" role="progressbar" aria-label="Loading">
53
+ <div class="ui-progress__bar"></div>
54
+ </div>
55
+
56
+ <!-- @typed_custom_property -->
57
+ <!-- Set value via --ui-progress-value instead of inline width. The @property registration enables smooth CSS transitions when JS updates the value. -->
58
+ <div style="display: flex; flex-direction: column; gap: var(--ui-space-2);">
59
+ <div class="ui-progress" role="progressbar" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
60
+ <div class="ui-progress__bar" style="--ui-progress-value: 25%"></div>
61
+ </div>
62
+ <div class="ui-progress" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
63
+ <div class="ui-progress__bar" style="--ui-progress-value: 75%"></div>
64
+ </div>
65
+ </div>
@@ -2,15 +2,15 @@ import { resolve } from 'node:path';
2
2
  import { expect, test } from '@playwright/test';
3
3
  import {
4
4
  saveForLostPixel,
5
- setupVisualTestFromDocs,
5
+ setupVisualTestFromHtmlDocs,
6
6
  validateGridRhythm,
7
7
  } from '../../../../test-utils';
8
8
 
9
- const DOCS_PATH = resolve(__dirname, 'progress.docs.json');
9
+ const DOCS_PATH = resolve(__dirname, 'progress.docs.html');
10
10
 
11
11
  test.describe('progress visual regression', () => {
12
12
  test('all variations', async ({ page }) => {
13
- await setupVisualTestFromDocs(page, DOCS_PATH);
13
+ await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
14
14
  await validateGridRhythm(page, 'progress');
15
15
  await saveForLostPixel(page, 'progress');
16
16
  await expect(page.locator('body')).toHaveScreenshot('progress.visual.png');