@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,38 @@
1
+ ---
2
+ title: Content
3
+ type: primitive
4
+ id: content
5
+ description: Content wrapper with consistent vertical spacing. Use inside container for padded, spaced content areas.
6
+ api: ./content.api.json
7
+ ---
8
+
9
+ <!-- @default -->
10
+ <!-- Vertical flex layout with gap between children and block/inline padding. -->
11
+ <div class="ui-content" style="0: b; 1: a; 2: c; 3: k; 4: g; 5: r; 6: o; 7: u; 8: n; 9: d; 10: :; 11: ; 12: v; 13: a; 14: r; 15: (; 16: -; 17: -; 18: u; 19: i; 20: -; 21: c; 22: o; 23: l; 24: o; 25: r; 26: -; 27: b; 28: g; 29: -; 30: s; 31: u; 32: b; 33: t; 34: l; 35: e; 36: )">
12
+ <p>First section of content with consistent spacing.</p>
13
+ <p>Second section automatically spaced by the gap token.</p>
14
+ <p>Third section follows the same rhythm.</p>
15
+ </div>
16
+
17
+ <!-- @prose -->
18
+ <!-- Narrower max-width for readable long-form text (640px / 80 units). -->
19
+ <div class="ui-content ui-content--prose" style="0: b; 1: a; 2: c; 3: k; 4: g; 5: r; 6: o; 7: u; 8: n; 9: d; 10: :; 11: ; 12: v; 13: a; 14: r; 15: (; 16: -; 17: -; 18: u; 19: i; 20: -; 21: c; 22: o; 23: l; 24: o; 25: r; 26: -; 27: b; 28: g; 29: -; 30: s; 31: u; 32: b; 33: t; 34: l; 35: e; 36: )">
20
+ <p>Prose content is constrained to a comfortable reading width. Long paragraphs stay readable without requiring the eye to travel too far across the screen.</p>
21
+ <p>This works well for articles, documentation, and form layouts.</p>
22
+ </div>
23
+
24
+ <!-- @flush -->
25
+ <!-- No padding, only gap between children. Useful when the parent handles padding. -->
26
+ <div class="ui-content ui-content--flush" style="0: b; 1: a; 2: c; 3: k; 4: g; 5: r; 6: o; 7: u; 8: n; 9: d; 10: :; 11: ; 12: v; 13: a; 14: r; 15: (; 16: -; 17: -; 18: u; 19: i; 20: -; 21: c; 22: o; 23: l; 24: o; 25: r; 26: -; 27: b; 28: g; 29: -; 30: s; 31: u; 32: b; 33: t; 34: l; 35: e; 36: )">
27
+ <p>Flush content has no padding.</p>
28
+ <p>Gap between children is preserved.</p>
29
+ </div>
30
+
31
+ <!-- @with_container -->
32
+ <!-- Content inside a centered container for a typical page layout. -->
33
+ <div class="ui-container ui-container--center">
34
+ <div class="ui-content">
35
+ <h2 class="ui-heading ui-heading--3">Page Title</h2>
36
+ <p>Content with consistent spacing and max-width.</p>
37
+ </div>
38
+ </div>
@@ -1,12 +1,16 @@
1
1
  import { resolve } from 'node:path';
2
2
  import { expect, test } from '@playwright/test';
3
- import { saveForLostPixel, setupVisualTestFromDocs, validateGridRhythm } from '../../../test-utils';
3
+ import {
4
+ saveForLostPixel,
5
+ setupVisualTestFromHtmlDocs,
6
+ validateGridRhythm,
7
+ } from '../../../test-utils';
4
8
 
5
- const DOCS_PATH = resolve(__dirname, 'content.docs.json');
9
+ const DOCS_PATH = resolve(__dirname, 'content.docs.html');
6
10
 
7
11
  test.describe('content visual regression', () => {
8
12
  test('all variations', async ({ page }) => {
9
- await setupVisualTestFromDocs(page, DOCS_PATH);
13
+ await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
10
14
  await validateGridRhythm(page, 'content');
11
15
  await saveForLostPixel(page, 'content');
12
16
  await expect(page.locator('body')).toHaveScreenshot('content.visual.png');
Binary file
@@ -0,0 +1,73 @@
1
+ ---
2
+ title: Footer
3
+ type: primitive
4
+ id: footer
5
+ description: Page footer with start, center, and end sections. Supports sticky/fixed positioning and border/shadow variants.
6
+ api: ./footer.api.json
7
+ ---
8
+
9
+ <!-- @default -->
10
+ <!-- Basic footer with three sections. -->
11
+ <footer class="ui-footer ui-footer--bordered">
12
+ <div class="ui-footer__start">
13
+ <small>2026 Brand</small>
14
+ </div>
15
+ <div class="ui-footer__center">
16
+ <span>Footer links</span>
17
+ </div>
18
+ <div class="ui-footer__end">
19
+ <small>v1.0.0</small>
20
+ </div>
21
+ </footer>
22
+
23
+ <!-- @sticky -->
24
+ <!-- Stays at the bottom of the viewport on scroll. -->
25
+ <footer class="ui-footer ui-footer--sticky ui-footer--bordered">
26
+ <div class="ui-footer__start"><small>Brand</small></div>
27
+ <div class="ui-footer__center">Links</div>
28
+ <div class="ui-footer__end"><small>v1.0.0</small></div>
29
+ </footer>
30
+
31
+ <!-- @bordered -->
32
+ <!-- Top border via inset box-shadow to preserve grid rhythm. -->
33
+ <footer class="ui-footer ui-footer--bordered">
34
+ <div class="ui-footer__start">
35
+ <small>Bordered footer</small>
36
+ </div>
37
+ <div class="ui-footer__end">
38
+ <small>v1.0.0</small>
39
+ </div>
40
+ </footer>
41
+
42
+ <!-- @raised -->
43
+ <!-- Subtle drop shadow above the footer. -->
44
+ <footer class="ui-footer ui-footer--raised">
45
+ <div class="ui-footer__start">
46
+ <small>Raised footer</small>
47
+ </div>
48
+ <div class="ui-footer__end">
49
+ <small>v1.0.0</small>
50
+ </div>
51
+ </footer>
52
+
53
+ <!-- @fixed -->
54
+ <!-- Fixed to viewport bottom, always visible. -->
55
+ <footer class="ui-footer ui-footer--fixed ui-footer--bordered">
56
+ <div class="ui-footer__start"><small>Brand</small></div>
57
+ <div class="ui-footer__end"><small>v1.0.0</small></div>
58
+ </footer>
59
+
60
+ <!-- @full_layout -->
61
+ <!-- Footer inside an app-shell with topbar and sidebar. -->
62
+ <body class="ui-app-shell">
63
+ <header class="ui-topbar ui-topbar--bordered">
64
+ <div class="ui-topbar__start"><strong>App</strong></div>
65
+ </header>
66
+ <main class="ui-main ui-main--full">
67
+ <div class="ui-container">Content</div>
68
+ <footer class="ui-footer ui-footer--bordered">
69
+ <div class="ui-footer__start"><small>Brand</small></div>
70
+ <div class="ui-footer__end"><small>v1.0.0</small></div>
71
+ </footer>
72
+ </main>
73
+ </body>
@@ -1,12 +1,16 @@
1
1
  import { resolve } from 'node:path';
2
2
  import { expect, test } from '@playwright/test';
3
- import { saveForLostPixel, setupVisualTestFromDocs, validateGridRhythm } from '../../../test-utils';
3
+ import {
4
+ saveForLostPixel,
5
+ setupVisualTestFromHtmlDocs,
6
+ validateGridRhythm,
7
+ } from '../../../test-utils';
4
8
 
5
- const DOCS_PATH = resolve(__dirname, 'footer.docs.json');
9
+ const DOCS_PATH = resolve(__dirname, 'footer.docs.html');
6
10
 
7
11
  test.describe('footer visual regression', () => {
8
12
  test('all variations', async ({ page }) => {
9
- await setupVisualTestFromDocs(page, DOCS_PATH);
13
+ await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
10
14
  await validateGridRhythm(page, 'footer');
11
15
  await saveForLostPixel(page, 'footer');
12
16
  await expect(page.locator('body')).toHaveScreenshot('footer.visual.png');
@@ -0,0 +1,87 @@
1
+ ---
2
+ title: Grid
3
+ type: primitive
4
+ id: grid-primitive
5
+ description: CSS Grid with column variants, subgrid support, and span utilities.
6
+ api: grid.api.json
7
+ ---
8
+
9
+ <!-- @columns -->
10
+ <div class="ui-grid ui-grid--2">
11
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">1</div>
12
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">2</div>
13
+ </div>
14
+ <div class="ui-grid ui-grid--3">
15
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">1</div>
16
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">2</div>
17
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">3</div>
18
+ </div>
19
+ <div class="ui-grid ui-grid--4">
20
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">1</div>
21
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">2</div>
22
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">3</div>
23
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">4</div>
24
+ </div>
25
+ <div class="ui-grid ui-grid--auto">
26
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Auto</div>
27
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Auto</div>
28
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Auto</div>
29
+ </div>
30
+
31
+ <!-- @subgrid -->
32
+ <!-- Children inherit parent grid tracks for cross-item alignment. -->
33
+ <div class="ui-grid ui-grid--3">
34
+ <div class="ui-grid--subgrid" style="grid-column: span 3">
35
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Subgrid child 1</div>
36
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Subgrid child 2</div>
37
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Subgrid child 3</div>
38
+ </div>
39
+ </div>
40
+ <div class="ui-grid ui-grid--3" style="grid-template-rows: auto 1fr auto">
41
+ <div class="ui-grid--subgrid-rows" style="grid-row: span 3; border: 1px solid var(--ui-color-border); padding: var(--ui-space-2)">
42
+ <strong>Card A</strong>
43
+ <p>Short content.</p>
44
+ <span style="color: var(--ui-color-text-muted)">Footer</span>
45
+ </div>
46
+ <div class="ui-grid--subgrid-rows" style="grid-row: span 3; border: 1px solid var(--ui-color-border); padding: var(--ui-space-2)">
47
+ <strong>Card B</strong>
48
+ <p>Longer content that wraps to multiple lines to demonstrate row alignment.</p>
49
+ <span style="color: var(--ui-color-text-muted)">Footer</span>
50
+ </div>
51
+ <div class="ui-grid--subgrid-rows" style="grid-row: span 3; border: 1px solid var(--ui-color-border); padding: var(--ui-space-2)">
52
+ <strong>Card C</strong>
53
+ <p>Medium text.</p>
54
+ <span style="color: var(--ui-color-text-muted)">Footer</span>
55
+ </div>
56
+ </div>
57
+ <div class="ui-grid ui-grid--3" style="grid-template-rows: auto auto">
58
+ <div class="ui-grid--subgrid-both" style="grid-column: span 3; grid-row: span 2">
59
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">A1</div>
60
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">A2</div>
61
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">A3</div>
62
+ <div style="background: var(--ui-color-bg-subtle); padding: var(--ui-space-2)">B1</div>
63
+ <div style="background: var(--ui-color-bg-subtle); padding: var(--ui-space-2)">B2</div>
64
+ <div style="background: var(--ui-color-bg-subtle); padding: var(--ui-space-2)">B3</div>
65
+ </div>
66
+ </div>
67
+
68
+ <!-- @column_span -->
69
+ <!-- Span multiple columns with .ui-grid-col-span-{2,3,4,full} utilities. -->
70
+ <div class="ui-grid ui-grid--4">
71
+ <div style="grid-column: span 2; background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Span 2</div>
72
+ <div style="background: var(--ui-color-bg-subtle); padding: var(--ui-space-2)">1</div>
73
+ <div style="background: var(--ui-color-bg-subtle); padding: var(--ui-space-2)">1</div>
74
+ <div style="background: var(--ui-color-bg-subtle); padding: var(--ui-space-2)">1</div>
75
+ <div style="grid-column: span 3; background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Span 3</div>
76
+ <div style="grid-column: 1 / -1; background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Span full</div>
77
+ </div>
78
+
79
+ <!-- @row_span -->
80
+ <!-- Span multiple rows with .ui-grid-row-span-{2,3,full} utilities. -->
81
+ <div class="ui-grid ui-grid--3">
82
+ <div style="grid-row: span 2; background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Row span 2</div>
83
+ <div style="background: var(--ui-color-bg-subtle); padding: var(--ui-space-2)">1</div>
84
+ <div style="background: var(--ui-color-bg-subtle); padding: var(--ui-space-2)">2</div>
85
+ <div style="background: var(--ui-color-bg-subtle); padding: var(--ui-space-2)">3</div>
86
+ <div style="background: var(--ui-color-bg-subtle); padding: var(--ui-space-2)">4</div>
87
+ </div>
@@ -1,12 +1,12 @@
1
1
  import { resolve } from 'node:path';
2
2
  import { expect, test } from '@playwright/test';
3
- import { saveForLostPixel, setupVisualTestFromDocs } from '../../../test-utils';
3
+ import { saveForLostPixel, setupVisualTestFromHtmlDocs } from '../../../test-utils';
4
4
 
5
- const DOCS_PATH = resolve(__dirname, 'grid.docs.json');
5
+ const DOCS_PATH = resolve(__dirname, 'grid.docs.html');
6
6
 
7
7
  test.describe('grid visual regression', () => {
8
8
  test('all variations', async ({ page }) => {
9
- await setupVisualTestFromDocs(page, DOCS_PATH);
9
+ await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
10
10
  await saveForLostPixel(page, 'grid');
11
11
  await expect(page.locator('body')).toHaveScreenshot('grid.visual.png');
12
12
  });
@@ -0,0 +1,31 @@
1
+ ---
2
+ title: Main
3
+ type: primitive
4
+ id: main
5
+ description: Main content area that accounts for sidebar and topbar offsets in app layouts.
6
+ api: main.api.json
7
+ ---
8
+
9
+ <!-- @default -->
10
+ <!-- Offsets content for a start-side sidebar and optional topbar. -->
11
+ <div style="position: relative; height: var(--ui-row-4)">
12
+ <main class="ui-main" style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">
13
+ <p>Main content area</p>
14
+ </main>
15
+ </div>
16
+
17
+ <!-- @sidebar_end -->
18
+ <!-- Offsets content for an end-side sidebar instead of start. -->
19
+ <div style="position: relative; height: var(--ui-row-4)">
20
+ <main class="ui-main ui-main--sidebar-end" style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">
21
+ <p>Content with end sidebar</p>
22
+ </main>
23
+ </div>
24
+
25
+ <!-- @full_width -->
26
+ <!-- No sidebar offset. Use when there is no sidebar. -->
27
+ <div style="position: relative; height: var(--ui-row-4)">
28
+ <main class="ui-main ui-main--full" style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">
29
+ <p>Full width content</p>
30
+ </main>
31
+ </div>
@@ -0,0 +1,42 @@
1
+ ---
2
+ title: Nav Rail
3
+ type: primitive
4
+ id: nav-rail
5
+ description: Narrow fixed vertical navigation rail for icon-based navigation with bottom actions.
6
+ api: ./nav-rail.api.json
7
+ ---
8
+
9
+ <!-- @default -->
10
+ <!-- Fixed narrow rail with icon items and bottom actions. -->
11
+ <nav class="ui-nav-rail" style="0: p; 1: o; 2: s; 3: i; 4: t; 5: i; 6: o; 7: n; 8: :; 9: ; 10: r; 11: e; 12: l; 13: a; 14: t; 15: i; 16: v; 17: e; 18: ;; 19: ; 20: b; 21: l; 22: o; 23: c; 24: k; 25: -; 26: s; 27: i; 28: z; 29: e; 30: :; 31: ; 32: 3; 33: 2; 34: 0; 35: p; 36: x">
12
+ <div class="ui-nav-rail__items">
13
+ <button class="ui-button ui-button--ghost ui-button--icon">H</button>
14
+ <button class="ui-button ui-button--ghost ui-button--icon">S</button>
15
+ <button class="ui-button ui-button--ghost ui-button--icon">M</button>
16
+ </div>
17
+ <div class="ui-nav-rail__actions">
18
+ <button class="ui-button ui-button--ghost ui-button--icon">G</button>
19
+ </div>
20
+ </nav>
21
+
22
+ <!-- @end_position -->
23
+ <!-- Rail on the end (right in LTR) side. -->
24
+ <nav class="ui-nav-rail ui-nav-rail--end">
25
+ <div class="ui-nav-rail__items">
26
+ <!-- icon buttons -->
27
+ </div>
28
+ <div class="ui-nav-rail__actions">
29
+ <!-- settings, profile -->
30
+ </div>
31
+ </nav>
32
+
33
+ <!-- @with_topbar -->
34
+ <!-- Nav rail respects --topbar-height, offsetting below the topbar. -->
35
+ <body class="ui-app-shell" style="--topbar-height: var(--ui-row-3)">
36
+ <header class="ui-topbar ui-topbar--fixed ui-topbar--bordered">
37
+ <div class="ui-topbar__start"><strong>App</strong></div>
38
+ </header>
39
+ <nav class="ui-nav-rail">
40
+ <div class="ui-nav-rail__items"><!-- icons --></div>
41
+ </nav>
42
+ </body>
@@ -1,12 +1,16 @@
1
1
  import { resolve } from 'node:path';
2
2
  import { expect, test } from '@playwright/test';
3
- import { saveForLostPixel, setupVisualTestFromDocs, validateGridRhythm } from '../../../test-utils';
3
+ import {
4
+ saveForLostPixel,
5
+ setupVisualTestFromHtmlDocs,
6
+ validateGridRhythm,
7
+ } from '../../../test-utils';
4
8
 
5
- const DOCS_PATH = resolve(__dirname, 'nav-rail.docs.json');
9
+ const DOCS_PATH = resolve(__dirname, 'nav-rail.docs.html');
6
10
 
7
11
  test.describe('nav-rail visual regression', () => {
8
12
  test('all variations', async ({ page }) => {
9
- await setupVisualTestFromDocs(page, DOCS_PATH);
13
+ await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
10
14
  await validateGridRhythm(page, 'nav-rail');
11
15
  await saveForLostPixel(page, 'nav-rail');
12
16
  await expect(page.locator('body')).toHaveScreenshot('nav-rail.visual.png');
@@ -0,0 +1,52 @@
1
+ ---
2
+ title: Page Header
3
+ type: primitive
4
+ id: page-header
5
+ description: Content area header with title, description, actions, and optional breadcrumb.
6
+ api: ./page-header.api.json
7
+ ---
8
+
9
+ <!-- @default -->
10
+ <!-- Title with actions on the end side. -->
11
+ <header class="ui-page-header ui-page-header--bordered">
12
+ <div class="ui-page-header__title">
13
+ <h1 class="ui-heading ui-heading--xl">Users</h1>
14
+ <p>Manage user accounts and permissions.</p>
15
+ </div>
16
+ <div class="ui-page-header__actions">
17
+ <button class="ui-button ui-button--primary">Add user</button>
18
+ </div>
19
+ </header>
20
+
21
+ <!-- @with_breadcrumb -->
22
+ <!-- Breadcrumb spans the full width above the title row. -->
23
+ <header class="ui-page-header ui-page-header--bordered">
24
+ <nav class="ui-page-header__breadcrumb">
25
+ <span>Home / Settings / Users</span>
26
+ </nav>
27
+ <div class="ui-page-header__title">
28
+ <h1 class="ui-heading ui-heading--xl">Users</h1>
29
+ </div>
30
+ <div class="ui-page-header__actions">
31
+ <button class="ui-button">Export</button>
32
+ </div>
33
+ </header>
34
+
35
+ <!-- @bordered -->
36
+ <!-- Bottom border via inset box-shadow. -->
37
+ <header class="ui-page-header ui-page-header--bordered">
38
+ <div class="ui-page-header__title">
39
+ <h1 class="ui-heading ui-heading--xl">Dashboard</h1>
40
+ </div>
41
+ </header>
42
+
43
+ <!-- @sticky -->
44
+ <!-- Sticks to the top of the scroll container. -->
45
+ <header class="ui-page-header ui-page-header--sticky ui-page-header--bordered">
46
+ <div class="ui-page-header__title">
47
+ <h1 class="ui-heading ui-heading--xl">Sticky Header</h1>
48
+ </div>
49
+ <div class="ui-page-header__actions">
50
+ <button class="ui-button">Save</button>
51
+ </div>
52
+ </header>
@@ -1,12 +1,16 @@
1
1
  import { resolve } from 'node:path';
2
2
  import { expect, test } from '@playwright/test';
3
- import { saveForLostPixel, setupVisualTestFromDocs, validateGridRhythm } from '../../../test-utils';
3
+ import {
4
+ saveForLostPixel,
5
+ setupVisualTestFromHtmlDocs,
6
+ validateGridRhythm,
7
+ } from '../../../test-utils';
4
8
 
5
- const DOCS_PATH = resolve(__dirname, 'page-header.docs.json');
9
+ const DOCS_PATH = resolve(__dirname, 'page-header.docs.html');
6
10
 
7
11
  test.describe('page-header visual regression', () => {
8
12
  test('all variations', async ({ page }) => {
9
- await setupVisualTestFromDocs(page, DOCS_PATH);
13
+ await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
10
14
  await validateGridRhythm(page, 'page-header');
11
15
  await saveForLostPixel(page, 'page-header');
12
16
  await expect(page.locator('body')).toHaveScreenshot('page-header.visual.png');
@@ -0,0 +1,47 @@
1
+ ---
2
+ title: Row
3
+ type: primitive
4
+ id: row
5
+ description: Horizontal layout with wrapping.
6
+ api: row.api.json
7
+ ---
8
+
9
+ <!-- @basic -->
10
+ <div class="ui-row ui-row--md">
11
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Tag 1</div>
12
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Tag 2</div>
13
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Tag 3</div>
14
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Tag 4</div>
15
+ </div>
16
+
17
+ <!-- @sizes -->
18
+ <div class="ui-row ui-row--xs">
19
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">xs</div>
20
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">xs</div>
21
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">xs</div>
22
+ </div>
23
+ <div class="ui-row ui-row--lg">
24
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">lg</div>
25
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">lg</div>
26
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">lg</div>
27
+ </div>
28
+ <div class="ui-row ui-row--sm">
29
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">sm</div>
30
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">sm</div>
31
+ <div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">sm</div>
32
+ </div>
33
+
34
+ <!-- @alignment -->
35
+ <div class="ui-row ui-row--start" style="background: var(--ui-color-bg-muted)">
36
+ <div style="background: var(--ui-color-bg); padding: var(--ui-space-2)">Start</div>
37
+ </div>
38
+ <div class="ui-row ui-row--center" style="background: var(--ui-color-bg-muted)">
39
+ <div style="background: var(--ui-color-bg); padding: var(--ui-space-2)">Center</div>
40
+ </div>
41
+ <div class="ui-row ui-row--end" style="background: var(--ui-color-bg-muted)">
42
+ <div style="background: var(--ui-color-bg); padding: var(--ui-space-2)">End</div>
43
+ </div>
44
+ <div class="ui-row ui-row--between" style="background: var(--ui-color-bg-muted)">
45
+ <div style="background: var(--ui-color-bg); padding: var(--ui-space-2)">Between A</div>
46
+ <div style="background: var(--ui-color-bg); padding: var(--ui-space-2)">Between B</div>
47
+ </div>
@@ -1,12 +1,12 @@
1
1
  import { resolve } from 'node:path';
2
2
  import { expect, test } from '@playwright/test';
3
- import { saveForLostPixel, setupVisualTestFromDocs } from '../../../test-utils';
3
+ import { saveForLostPixel, setupVisualTestFromHtmlDocs } from '../../../test-utils';
4
4
 
5
- const DOCS_PATH = resolve(__dirname, 'row.docs.json');
5
+ const DOCS_PATH = resolve(__dirname, 'row.docs.html');
6
6
 
7
7
  test.describe('row visual regression', () => {
8
8
  test('all variations', async ({ page }) => {
9
- await setupVisualTestFromDocs(page, DOCS_PATH);
9
+ await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
10
10
  // skip validateGridRhythm: row is a layout primitive that
11
11
  // controls gap/alignment, not child height
12
12
  await saveForLostPixel(page, 'row');
@@ -0,0 +1,30 @@
1
+ ---
2
+ title: Sidebar
3
+ type: primitive
4
+ id: sidebar
5
+ description: Fixed-position sidebar for app layouts with adjustable widths and positioning.
6
+ api: ./sidebar.api.json
7
+ ---
8
+
9
+ <!-- @basic -->
10
+ <!-- Default sidebar positioned on the start side. Use inside an app-shell layout. -->
11
+ <aside class="ui-sidebar">
12
+ <p>Sidebar content</p>
13
+ </aside>
14
+
15
+ <!-- @widths | column -->
16
+ <aside class="ui-sidebar ui-sidebar--sm" style="position: relative; height: auto;">
17
+ <p>Small (192px)</p>
18
+ </aside>
19
+ <aside class="ui-sidebar ui-sidebar--md" style="position: relative; height: auto;">
20
+ <p>Medium (240px, default)</p>
21
+ </aside>
22
+ <aside class="ui-sidebar ui-sidebar--lg" style="position: relative; height: auto;">
23
+ <p>Large (320px)</p>
24
+ </aside>
25
+
26
+ <!-- @end_position -->
27
+ <!-- Position sidebar on the end side with --end modifier. -->
28
+ <aside class="ui-sidebar ui-sidebar--end">
29
+ <p>End sidebar</p>
30
+ </aside>
@@ -1,12 +1,16 @@
1
1
  import { resolve } from 'node:path';
2
2
  import { expect, test } from '@playwright/test';
3
- import { saveForLostPixel, setupVisualTestFromDocs, validateGridRhythm } from '../../../test-utils';
3
+ import {
4
+ saveForLostPixel,
5
+ setupVisualTestFromHtmlDocs,
6
+ validateGridRhythm,
7
+ } from '../../../test-utils';
4
8
 
5
- const DOCS_PATH = resolve(__dirname, 'sidebar.docs.json');
9
+ const DOCS_PATH = resolve(__dirname, 'sidebar.docs.html');
6
10
 
7
11
  test.describe('sidebar visual regression', () => {
8
12
  test('all variations', async ({ page }) => {
9
- await setupVisualTestFromDocs(page, DOCS_PATH);
13
+ await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
10
14
  await validateGridRhythm(page, 'sidebar');
11
15
  await saveForLostPixel(page, 'sidebar');
12
16
  await expect(page.locator('body')).toHaveScreenshot('sidebar.visual.png');