@xtyle/core 0.5.0 → 0.6.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 (441) hide show
  1. package/README.md +3 -1
  2. package/dist/audit.d.ts +26 -0
  3. package/dist/audit.d.ts.map +1 -1
  4. package/dist/audit.js +10 -3
  5. package/dist/audit.js.map +1 -1
  6. package/dist/css/components/alert.d.ts.map +1 -1
  7. package/dist/css/components/alert.js +12 -1
  8. package/dist/css/components/alert.js.map +1 -1
  9. package/dist/css/components/app-shell.d.ts.map +1 -1
  10. package/dist/css/components/app-shell.js +7 -0
  11. package/dist/css/components/app-shell.js.map +1 -1
  12. package/dist/css/components/badge.d.ts.map +1 -1
  13. package/dist/css/components/badge.js +37 -4
  14. package/dist/css/components/badge.js.map +1 -1
  15. package/dist/css/components/button.d.ts.map +1 -1
  16. package/dist/css/components/button.js +3 -0
  17. package/dist/css/components/button.js.map +1 -1
  18. package/dist/css/components/card.d.ts.map +1 -1
  19. package/dist/css/components/card.js +11 -2
  20. package/dist/css/components/card.js.map +1 -1
  21. package/dist/css/components/carousel.d.ts.map +1 -1
  22. package/dist/css/components/carousel.js +6 -1
  23. package/dist/css/components/carousel.js.map +1 -1
  24. package/dist/css/components/code.d.ts.map +1 -1
  25. package/dist/css/components/code.js +28 -9
  26. package/dist/css/components/code.js.map +1 -1
  27. package/dist/css/components/empty.d.ts +2 -0
  28. package/dist/css/components/empty.d.ts.map +1 -0
  29. package/dist/css/components/empty.js +37 -0
  30. package/dist/css/components/empty.js.map +1 -0
  31. package/dist/css/components/image.d.ts +11 -0
  32. package/dist/css/components/image.d.ts.map +1 -1
  33. package/dist/css/components/image.js +106 -37
  34. package/dist/css/components/image.js.map +1 -1
  35. package/dist/css/components/rating.d.ts +2 -0
  36. package/dist/css/components/rating.d.ts.map +1 -0
  37. package/dist/css/components/rating.js +42 -0
  38. package/dist/css/components/rating.js.map +1 -0
  39. package/dist/css/components/skeleton.d.ts.map +1 -1
  40. package/dist/css/components/skeleton.js +3 -0
  41. package/dist/css/components/skeleton.js.map +1 -1
  42. package/dist/css/components/sparkline.d.ts.map +1 -1
  43. package/dist/css/components/sparkline.js +7 -0
  44. package/dist/css/components/sparkline.js.map +1 -1
  45. package/dist/css/components/spinner.d.ts.map +1 -1
  46. package/dist/css/components/spinner.js +3 -0
  47. package/dist/css/components/spinner.js.map +1 -1
  48. package/dist/css/components/steps.d.ts +2 -0
  49. package/dist/css/components/steps.d.ts.map +1 -0
  50. package/dist/css/components/steps.js +75 -0
  51. package/dist/css/components/steps.js.map +1 -0
  52. package/dist/css/components/swatch.d.ts.map +1 -1
  53. package/dist/css/components/swatch.js +11 -0
  54. package/dist/css/components/swatch.js.map +1 -1
  55. package/dist/css/components/table.d.ts.map +1 -1
  56. package/dist/css/components/table.js +6 -0
  57. package/dist/css/components/table.js.map +1 -1
  58. package/dist/css/components/timeline.d.ts +2 -0
  59. package/dist/css/components/timeline.d.ts.map +1 -0
  60. package/dist/css/components/timeline.js +64 -0
  61. package/dist/css/components/timeline.js.map +1 -0
  62. package/dist/css/components/toast.d.ts.map +1 -1
  63. package/dist/css/components/toast.js +0 -1
  64. package/dist/css/components/toast.js.map +1 -1
  65. package/dist/css/components.d.ts.map +1 -1
  66. package/dist/css/components.js +7 -0
  67. package/dist/css/components.js.map +1 -1
  68. package/dist/css/index.d.ts +4 -0
  69. package/dist/css/index.d.ts.map +1 -1
  70. package/dist/css/index.js +4 -0
  71. package/dist/css/index.js.map +1 -1
  72. package/dist/dom.d.ts +7 -0
  73. package/dist/dom.d.ts.map +1 -1
  74. package/dist/dom.js +10 -0
  75. package/dist/dom.js.map +1 -1
  76. package/dist/elements/bar.d.ts +1 -0
  77. package/dist/elements/bar.d.ts.map +1 -1
  78. package/dist/elements/bar.js +3 -0
  79. package/dist/elements/bar.js.map +1 -1
  80. package/dist/elements/base.d.ts +19 -0
  81. package/dist/elements/base.d.ts.map +1 -1
  82. package/dist/elements/base.js +42 -0
  83. package/dist/elements/base.js.map +1 -1
  84. package/dist/elements/card.d.ts +2 -0
  85. package/dist/elements/card.d.ts.map +1 -1
  86. package/dist/elements/card.js +8 -1
  87. package/dist/elements/card.js.map +1 -1
  88. package/dist/elements/carousel.d.ts +2 -1
  89. package/dist/elements/carousel.d.ts.map +1 -1
  90. package/dist/elements/carousel.js +4 -2
  91. package/dist/elements/carousel.js.map +1 -1
  92. package/dist/elements/checkbox.d.ts.map +1 -1
  93. package/dist/elements/checkbox.js +2 -0
  94. package/dist/elements/checkbox.js.map +1 -1
  95. package/dist/elements/code.d.ts +7 -0
  96. package/dist/elements/code.d.ts.map +1 -1
  97. package/dist/elements/code.js +32 -0
  98. package/dist/elements/code.js.map +1 -1
  99. package/dist/elements/color-picker.d.ts.map +1 -1
  100. package/dist/elements/color-picker.js +7 -1
  101. package/dist/elements/color-picker.js.map +1 -1
  102. package/dist/elements/dialog.d.ts +9 -0
  103. package/dist/elements/dialog.d.ts.map +1 -1
  104. package/dist/elements/dialog.js +26 -0
  105. package/dist/elements/dialog.js.map +1 -1
  106. package/dist/elements/dock-zone.d.ts +3 -2
  107. package/dist/elements/dock-zone.d.ts.map +1 -1
  108. package/dist/elements/dock-zone.js +6 -2
  109. package/dist/elements/dock-zone.js.map +1 -1
  110. package/dist/elements/empty.d.ts +11 -0
  111. package/dist/elements/empty.d.ts.map +1 -0
  112. package/dist/elements/empty.js +15 -0
  113. package/dist/elements/empty.js.map +1 -0
  114. package/dist/elements/form-group.d.ts.map +1 -1
  115. package/dist/elements/form-group.js +1 -0
  116. package/dist/elements/form-group.js.map +1 -1
  117. package/dist/elements/fragments/card/source.generated.d.ts.map +1 -1
  118. package/dist/elements/fragments/card/source.generated.js +1 -1
  119. package/dist/elements/fragments/card/source.generated.js.map +1 -1
  120. package/dist/elements/fragments/icon/source.generated.d.ts.map +1 -1
  121. package/dist/elements/fragments/icon/source.generated.js +1 -1
  122. package/dist/elements/fragments/icon/source.generated.js.map +1 -1
  123. package/dist/elements/fragments/progress/source.generated.d.ts.map +1 -1
  124. package/dist/elements/fragments/progress/source.generated.js +2 -2
  125. package/dist/elements/fragments/progress/source.generated.js.map +1 -1
  126. package/dist/elements/fragments/sparkline/source.generated.d.ts.map +1 -1
  127. package/dist/elements/fragments/sparkline/source.generated.js +1 -1
  128. package/dist/elements/fragments/sparkline/source.generated.js.map +1 -1
  129. package/dist/elements/heatmap.d.ts +1 -0
  130. package/dist/elements/heatmap.d.ts.map +1 -1
  131. package/dist/elements/heatmap.js +3 -0
  132. package/dist/elements/heatmap.js.map +1 -1
  133. package/dist/elements/hero.d.ts +2 -1
  134. package/dist/elements/hero.d.ts.map +1 -1
  135. package/dist/elements/hero.js +2 -2
  136. package/dist/elements/hero.js.map +1 -1
  137. package/dist/elements/icon.d.ts +1 -0
  138. package/dist/elements/icon.d.ts.map +1 -1
  139. package/dist/elements/icon.js +3 -0
  140. package/dist/elements/icon.js.map +1 -1
  141. package/dist/elements/image.d.ts +7 -3
  142. package/dist/elements/image.d.ts.map +1 -1
  143. package/dist/elements/image.js +64 -53
  144. package/dist/elements/image.js.map +1 -1
  145. package/dist/elements/index.d.ts +10 -0
  146. package/dist/elements/index.d.ts.map +1 -1
  147. package/dist/elements/index.js +9 -0
  148. package/dist/elements/index.js.map +1 -1
  149. package/dist/elements/lightbox.d.ts +38 -0
  150. package/dist/elements/lightbox.d.ts.map +1 -0
  151. package/dist/elements/lightbox.js +144 -0
  152. package/dist/elements/lightbox.js.map +1 -0
  153. package/dist/elements/menu.d.ts.map +1 -1
  154. package/dist/elements/menu.js +1 -0
  155. package/dist/elements/menu.js.map +1 -1
  156. package/dist/elements/parallax.d.ts +2 -1
  157. package/dist/elements/parallax.d.ts.map +1 -1
  158. package/dist/elements/parallax.js +4 -2
  159. package/dist/elements/parallax.js.map +1 -1
  160. package/dist/elements/pie.d.ts +1 -0
  161. package/dist/elements/pie.d.ts.map +1 -1
  162. package/dist/elements/pie.js +3 -0
  163. package/dist/elements/pie.js.map +1 -1
  164. package/dist/elements/progress.d.ts +23 -0
  165. package/dist/elements/progress.d.ts.map +1 -1
  166. package/dist/elements/progress.js +83 -1
  167. package/dist/elements/progress.js.map +1 -1
  168. package/dist/elements/radio.d.ts.map +1 -1
  169. package/dist/elements/radio.js +2 -0
  170. package/dist/elements/radio.js.map +1 -1
  171. package/dist/elements/rating.d.ts +59 -0
  172. package/dist/elements/rating.d.ts.map +1 -0
  173. package/dist/elements/rating.js +270 -0
  174. package/dist/elements/rating.js.map +1 -0
  175. package/dist/elements/segmented.d.ts.map +1 -1
  176. package/dist/elements/segmented.js +1 -0
  177. package/dist/elements/segmented.js.map +1 -1
  178. package/dist/elements/sparkline.d.ts +8 -2
  179. package/dist/elements/sparkline.d.ts.map +1 -1
  180. package/dist/elements/sparkline.js +26 -7
  181. package/dist/elements/sparkline.js.map +1 -1
  182. package/dist/elements/statusbar.d.ts.map +1 -1
  183. package/dist/elements/statusbar.js +1 -0
  184. package/dist/elements/statusbar.js.map +1 -1
  185. package/dist/elements/steps.d.ts +21 -0
  186. package/dist/elements/steps.d.ts.map +1 -0
  187. package/dist/elements/steps.js +68 -0
  188. package/dist/elements/steps.js.map +1 -0
  189. package/dist/elements/table.d.ts +2 -2
  190. package/dist/elements/table.d.ts.map +1 -1
  191. package/dist/elements/table.js +20 -23
  192. package/dist/elements/table.js.map +1 -1
  193. package/dist/elements/tabs.d.ts.map +1 -1
  194. package/dist/elements/tabs.js +1 -0
  195. package/dist/elements/tabs.js.map +1 -1
  196. package/dist/elements/timeline.d.ts +16 -0
  197. package/dist/elements/timeline.d.ts.map +1 -0
  198. package/dist/elements/timeline.js +45 -0
  199. package/dist/elements/timeline.js.map +1 -0
  200. package/dist/elements/toc.d.ts.map +1 -1
  201. package/dist/elements/toc.js +1 -0
  202. package/dist/elements/toc.js.map +1 -1
  203. package/dist/icon-builder.d.ts +20 -4
  204. package/dist/icon-builder.d.ts.map +1 -1
  205. package/dist/icon-builder.js +163 -41
  206. package/dist/icon-builder.js.map +1 -1
  207. package/dist/icons.d.ts +1 -1
  208. package/dist/icons.d.ts.map +1 -1
  209. package/dist/icons.js +1 -0
  210. package/dist/icons.js.map +1 -1
  211. package/dist/index.d.ts +4 -0
  212. package/dist/index.d.ts.map +1 -1
  213. package/dist/index.js +2 -0
  214. package/dist/index.js.map +1 -1
  215. package/dist/manifest/accordion.manifest.d.ts.map +1 -1
  216. package/dist/manifest/accordion.manifest.js +2 -0
  217. package/dist/manifest/accordion.manifest.js.map +1 -1
  218. package/dist/manifest/alert.manifest.d.ts.map +1 -1
  219. package/dist/manifest/alert.manifest.js +5 -3
  220. package/dist/manifest/alert.manifest.js.map +1 -1
  221. package/dist/manifest/app-shell.manifest.d.ts.map +1 -1
  222. package/dist/manifest/app-shell.manifest.js +2 -0
  223. package/dist/manifest/app-shell.manifest.js.map +1 -1
  224. package/dist/manifest/avatar-group.manifest.d.ts.map +1 -1
  225. package/dist/manifest/avatar-group.manifest.js +2 -0
  226. package/dist/manifest/avatar-group.manifest.js.map +1 -1
  227. package/dist/manifest/avatar.manifest.d.ts.map +1 -1
  228. package/dist/manifest/avatar.manifest.js +2 -0
  229. package/dist/manifest/avatar.manifest.js.map +1 -1
  230. package/dist/manifest/badge.manifest.d.ts.map +1 -1
  231. package/dist/manifest/badge.manifest.js +22 -3
  232. package/dist/manifest/badge.manifest.js.map +1 -1
  233. package/dist/manifest/bar.manifest.d.ts.map +1 -1
  234. package/dist/manifest/bar.manifest.js +2 -0
  235. package/dist/manifest/bar.manifest.js.map +1 -1
  236. package/dist/manifest/breadcrumb.manifest.d.ts.map +1 -1
  237. package/dist/manifest/breadcrumb.manifest.js +2 -0
  238. package/dist/manifest/breadcrumb.manifest.js.map +1 -1
  239. package/dist/manifest/button.manifest.d.ts.map +1 -1
  240. package/dist/manifest/button.manifest.js +2 -0
  241. package/dist/manifest/button.manifest.js.map +1 -1
  242. package/dist/manifest/card-link.manifest.d.ts.map +1 -1
  243. package/dist/manifest/card-link.manifest.js +2 -0
  244. package/dist/manifest/card-link.manifest.js.map +1 -1
  245. package/dist/manifest/card.manifest.d.ts.map +1 -1
  246. package/dist/manifest/card.manifest.js +17 -5
  247. package/dist/manifest/card.manifest.js.map +1 -1
  248. package/dist/manifest/carousel.manifest.d.ts.map +1 -1
  249. package/dist/manifest/carousel.manifest.js +6 -2
  250. package/dist/manifest/carousel.manifest.js.map +1 -1
  251. package/dist/manifest/checkbox.manifest.d.ts.map +1 -1
  252. package/dist/manifest/checkbox.manifest.js +2 -0
  253. package/dist/manifest/checkbox.manifest.js.map +1 -1
  254. package/dist/manifest/cluster.manifest.d.ts.map +1 -1
  255. package/dist/manifest/cluster.manifest.js +2 -0
  256. package/dist/manifest/cluster.manifest.js.map +1 -1
  257. package/dist/manifest/code.manifest.d.ts.map +1 -1
  258. package/dist/manifest/code.manifest.js +13 -1
  259. package/dist/manifest/code.manifest.js.map +1 -1
  260. package/dist/manifest/color-picker.manifest.d.ts.map +1 -1
  261. package/dist/manifest/color-picker.manifest.js +2 -0
  262. package/dist/manifest/color-picker.manifest.js.map +1 -1
  263. package/dist/manifest/dialog.manifest.d.ts.map +1 -1
  264. package/dist/manifest/dialog.manifest.js +2 -0
  265. package/dist/manifest/dialog.manifest.js.map +1 -1
  266. package/dist/manifest/dock-zone.manifest.d.ts.map +1 -1
  267. package/dist/manifest/dock-zone.manifest.js +2 -0
  268. package/dist/manifest/dock-zone.manifest.js.map +1 -1
  269. package/dist/manifest/dock.manifest.d.ts.map +1 -1
  270. package/dist/manifest/dock.manifest.js +2 -0
  271. package/dist/manifest/dock.manifest.js.map +1 -1
  272. package/dist/manifest/empty.manifest.d.ts +3 -0
  273. package/dist/manifest/empty.manifest.d.ts.map +1 -0
  274. package/dist/manifest/empty.manifest.js +115 -0
  275. package/dist/manifest/empty.manifest.js.map +1 -0
  276. package/dist/manifest/eyebrow.manifest.d.ts.map +1 -1
  277. package/dist/manifest/eyebrow.manifest.js +2 -0
  278. package/dist/manifest/eyebrow.manifest.js.map +1 -1
  279. package/dist/manifest/field.manifest.d.ts.map +1 -1
  280. package/dist/manifest/field.manifest.js +2 -0
  281. package/dist/manifest/field.manifest.js.map +1 -1
  282. package/dist/manifest/form-group.manifest.d.ts.map +1 -1
  283. package/dist/manifest/form-group.manifest.js +2 -0
  284. package/dist/manifest/form-group.manifest.js.map +1 -1
  285. package/dist/manifest/grid.manifest.d.ts.map +1 -1
  286. package/dist/manifest/grid.manifest.js +2 -0
  287. package/dist/manifest/grid.manifest.js.map +1 -1
  288. package/dist/manifest/heading.manifest.d.ts.map +1 -1
  289. package/dist/manifest/heading.manifest.js +2 -0
  290. package/dist/manifest/heading.manifest.js.map +1 -1
  291. package/dist/manifest/heatmap.manifest.d.ts.map +1 -1
  292. package/dist/manifest/heatmap.manifest.js +2 -0
  293. package/dist/manifest/heatmap.manifest.js.map +1 -1
  294. package/dist/manifest/hero.manifest.d.ts.map +1 -1
  295. package/dist/manifest/hero.manifest.js +2 -0
  296. package/dist/manifest/hero.manifest.js.map +1 -1
  297. package/dist/manifest/icon.manifest.d.ts.map +1 -1
  298. package/dist/manifest/icon.manifest.js +13 -10
  299. package/dist/manifest/icon.manifest.js.map +1 -1
  300. package/dist/manifest/image.manifest.d.ts.map +1 -1
  301. package/dist/manifest/image.manifest.js +80 -6
  302. package/dist/manifest/image.manifest.js.map +1 -1
  303. package/dist/manifest/kbd.manifest.d.ts.map +1 -1
  304. package/dist/manifest/kbd.manifest.js +2 -0
  305. package/dist/manifest/kbd.manifest.js.map +1 -1
  306. package/dist/manifest/link.manifest.d.ts.map +1 -1
  307. package/dist/manifest/link.manifest.js +2 -0
  308. package/dist/manifest/link.manifest.js.map +1 -1
  309. package/dist/manifest/menu.manifest.d.ts.map +1 -1
  310. package/dist/manifest/menu.manifest.js +2 -0
  311. package/dist/manifest/menu.manifest.js.map +1 -1
  312. package/dist/manifest/number-input.manifest.d.ts.map +1 -1
  313. package/dist/manifest/number-input.manifest.js +2 -0
  314. package/dist/manifest/number-input.manifest.js.map +1 -1
  315. package/dist/manifest/pagination.manifest.d.ts.map +1 -1
  316. package/dist/manifest/pagination.manifest.js +2 -0
  317. package/dist/manifest/pagination.manifest.js.map +1 -1
  318. package/dist/manifest/panel.manifest.d.ts.map +1 -1
  319. package/dist/manifest/panel.manifest.js +2 -0
  320. package/dist/manifest/panel.manifest.js.map +1 -1
  321. package/dist/manifest/parallax.manifest.d.ts.map +1 -1
  322. package/dist/manifest/parallax.manifest.js +2 -0
  323. package/dist/manifest/parallax.manifest.js.map +1 -1
  324. package/dist/manifest/pie.manifest.d.ts.map +1 -1
  325. package/dist/manifest/pie.manifest.js +2 -0
  326. package/dist/manifest/pie.manifest.js.map +1 -1
  327. package/dist/manifest/progress.manifest.d.ts.map +1 -1
  328. package/dist/manifest/progress.manifest.js +56 -4
  329. package/dist/manifest/progress.manifest.js.map +1 -1
  330. package/dist/manifest/radio.manifest.d.ts.map +1 -1
  331. package/dist/manifest/radio.manifest.js +2 -0
  332. package/dist/manifest/radio.manifest.js.map +1 -1
  333. package/dist/manifest/rating.manifest.d.ts +3 -0
  334. package/dist/manifest/rating.manifest.d.ts.map +1 -0
  335. package/dist/manifest/rating.manifest.js +202 -0
  336. package/dist/manifest/rating.manifest.js.map +1 -0
  337. package/dist/manifest/registry.d.ts.map +1 -1
  338. package/dist/manifest/registry.js +8 -0
  339. package/dist/manifest/registry.js.map +1 -1
  340. package/dist/manifest/section.manifest.d.ts.map +1 -1
  341. package/dist/manifest/section.manifest.js +2 -0
  342. package/dist/manifest/section.manifest.js.map +1 -1
  343. package/dist/manifest/segmented.manifest.d.ts.map +1 -1
  344. package/dist/manifest/segmented.manifest.js +2 -0
  345. package/dist/manifest/segmented.manifest.js.map +1 -1
  346. package/dist/manifest/select.manifest.d.ts.map +1 -1
  347. package/dist/manifest/select.manifest.js +2 -0
  348. package/dist/manifest/select.manifest.js.map +1 -1
  349. package/dist/manifest/separator.manifest.d.ts.map +1 -1
  350. package/dist/manifest/separator.manifest.js +2 -0
  351. package/dist/manifest/separator.manifest.js.map +1 -1
  352. package/dist/manifest/skeleton.manifest.d.ts.map +1 -1
  353. package/dist/manifest/skeleton.manifest.js +2 -0
  354. package/dist/manifest/skeleton.manifest.js.map +1 -1
  355. package/dist/manifest/slider.manifest.d.ts.map +1 -1
  356. package/dist/manifest/slider.manifest.js +2 -0
  357. package/dist/manifest/slider.manifest.js.map +1 -1
  358. package/dist/manifest/sparkline.manifest.d.ts.map +1 -1
  359. package/dist/manifest/sparkline.manifest.js +65 -5
  360. package/dist/manifest/sparkline.manifest.js.map +1 -1
  361. package/dist/manifest/spinner.manifest.d.ts.map +1 -1
  362. package/dist/manifest/spinner.manifest.js +2 -0
  363. package/dist/manifest/spinner.manifest.js.map +1 -1
  364. package/dist/manifest/splitter.manifest.d.ts.map +1 -1
  365. package/dist/manifest/splitter.manifest.js +2 -0
  366. package/dist/manifest/splitter.manifest.js.map +1 -1
  367. package/dist/manifest/stack.manifest.d.ts.map +1 -1
  368. package/dist/manifest/stack.manifest.js +2 -0
  369. package/dist/manifest/stack.manifest.js.map +1 -1
  370. package/dist/manifest/stat.manifest.d.ts.map +1 -1
  371. package/dist/manifest/stat.manifest.js +2 -0
  372. package/dist/manifest/stat.manifest.js.map +1 -1
  373. package/dist/manifest/statusbar.manifest.d.ts.map +1 -1
  374. package/dist/manifest/statusbar.manifest.js +2 -0
  375. package/dist/manifest/statusbar.manifest.js.map +1 -1
  376. package/dist/manifest/steps.manifest.d.ts +3 -0
  377. package/dist/manifest/steps.manifest.d.ts.map +1 -0
  378. package/dist/manifest/steps.manifest.js +138 -0
  379. package/dist/manifest/steps.manifest.js.map +1 -0
  380. package/dist/manifest/swatch.manifest.d.ts.map +1 -1
  381. package/dist/manifest/swatch.manifest.js +5 -0
  382. package/dist/manifest/swatch.manifest.js.map +1 -1
  383. package/dist/manifest/switch.manifest.d.ts.map +1 -1
  384. package/dist/manifest/switch.manifest.js +2 -0
  385. package/dist/manifest/switch.manifest.js.map +1 -1
  386. package/dist/manifest/table.manifest.d.ts.map +1 -1
  387. package/dist/manifest/table.manifest.js +46 -1
  388. package/dist/manifest/table.manifest.js.map +1 -1
  389. package/dist/manifest/tabs.manifest.d.ts.map +1 -1
  390. package/dist/manifest/tabs.manifest.js +2 -0
  391. package/dist/manifest/tabs.manifest.js.map +1 -1
  392. package/dist/manifest/text.manifest.d.ts.map +1 -1
  393. package/dist/manifest/text.manifest.js +2 -0
  394. package/dist/manifest/text.manifest.js.map +1 -1
  395. package/dist/manifest/textarea.manifest.d.ts.map +1 -1
  396. package/dist/manifest/textarea.manifest.js +2 -0
  397. package/dist/manifest/textarea.manifest.js.map +1 -1
  398. package/dist/manifest/timeline.manifest.d.ts +3 -0
  399. package/dist/manifest/timeline.manifest.d.ts.map +1 -0
  400. package/dist/manifest/timeline.manifest.js +130 -0
  401. package/dist/manifest/timeline.manifest.js.map +1 -0
  402. package/dist/manifest/toast.manifest.d.ts.map +1 -1
  403. package/dist/manifest/toast.manifest.js +2 -0
  404. package/dist/manifest/toast.manifest.js.map +1 -1
  405. package/dist/manifest/toc.manifest.d.ts.map +1 -1
  406. package/dist/manifest/toc.manifest.js +2 -0
  407. package/dist/manifest/toc.manifest.js.map +1 -1
  408. package/dist/manifest/toolbar.manifest.d.ts.map +1 -1
  409. package/dist/manifest/toolbar.manifest.js +2 -0
  410. package/dist/manifest/toolbar.manifest.js.map +1 -1
  411. package/dist/manifest/tooltip.manifest.d.ts.map +1 -1
  412. package/dist/manifest/tooltip.manifest.js +2 -0
  413. package/dist/manifest/tooltip.manifest.js.map +1 -1
  414. package/dist/manifest/tree.manifest.d.ts.map +1 -1
  415. package/dist/manifest/tree.manifest.js +2 -0
  416. package/dist/manifest/tree.manifest.js.map +1 -1
  417. package/dist/manifest/types.d.ts +6 -0
  418. package/dist/manifest/types.d.ts.map +1 -1
  419. package/dist/markup/image.d.ts +1 -0
  420. package/dist/markup/image.d.ts.map +1 -1
  421. package/dist/markup/image.js.map +1 -1
  422. package/dist/markup/index.d.ts +4 -2
  423. package/dist/markup/index.d.ts.map +1 -1
  424. package/dist/markup/index.js +2 -1
  425. package/dist/markup/index.js.map +1 -1
  426. package/dist/markup/sparkline.d.ts +18 -1
  427. package/dist/markup/sparkline.d.ts.map +1 -1
  428. package/dist/markup/sparkline.js +23 -0
  429. package/dist/markup/sparkline.js.map +1 -1
  430. package/dist/markup/table.d.ts +22 -0
  431. package/dist/markup/table.d.ts.map +1 -0
  432. package/dist/markup/table.js +20 -0
  433. package/dist/markup/table.js.map +1 -0
  434. package/dist/mcp/tools.d.ts.map +1 -1
  435. package/dist/mcp/tools.js +10 -2
  436. package/dist/mcp/tools.js.map +1 -1
  437. package/dist/series.d.ts +9 -0
  438. package/dist/series.d.ts.map +1 -1
  439. package/dist/series.js +16 -2
  440. package/dist/series.js.map +1 -1
  441. package/package.json +2 -1
package/README.md CHANGED
@@ -66,6 +66,7 @@ apply(register, { persistKey: "theme" });
66
66
  ```sh
67
67
  xtyle derive --bg "#0f1115" --accent "#5b8cff" --format css
68
68
  xtyle coverage --consumed "--bg-0,--fg-0,--accent" --bg "#0f1115"
69
+ xtyle audit -a xtyle-default --level AA
69
70
  xtyle gauntlet --runs 200
70
71
  ```
71
72
 
@@ -198,7 +199,8 @@ Author your own with `defineXtyleAlgorithm` / `defineAlgorithm` from `@xtyle/cor
198
199
  engine the CLI hands a human. Point an MCP client at `xtyle mcp` (or `npx -y @xtyle/core xtyle
199
200
  mcp`).
200
201
 
201
- - **Tools**: `xtyle_derive`, `xtyle_coverage`, `xtyle_components` (list every component or
202
+ - **Tools**: `xtyle_derive`, `xtyle_coverage`, `xtyle_audit` (grade a register's contrast
203
+ against the canonical WCAG text/fill pairs), `xtyle_components` (list every component or
202
204
  describe one's full manifest), `xtyle_gauntlet`, `xtyle_list_algorithms`, and
203
205
  `xtyle_server_info`; each runs the same code as its CLI counterpart, so the two can't drift.
204
206
  - **Resources**: `xtyle://concept/{id}` for the concept docs and `xtyle://component/{id}` for
package/dist/audit.d.ts CHANGED
@@ -30,6 +30,11 @@ export interface ContrastAuditOptions {
30
30
  largeText?: boolean;
31
31
  /** The floor a pair must clear to count toward `passes` / `tallies.pass` (default `"AA"`). */
32
32
  level?: "AA" | "AAA";
33
+ /** Audit this consumer-supplied pair set instead of xtyle's canonical pairs. A consumer whose token
34
+ * contract differs (its status inks read on `--bg-0`, not each tone's soft tint) passes its own pairs
35
+ * so the audit grades what it actually renders, not xtyle's default surfaces. Reach for
36
+ * {@link canonicalContrastPairs} to start from xtyle's list and extend it. Omit to audit the canonical set. */
37
+ pairs?: readonly PairSpec[];
33
38
  }
34
39
  export interface ContrastAuditTallies {
35
40
  total: number;
@@ -48,5 +53,26 @@ export interface ContrastAudit {
48
53
  /** The lowest ratio across all audited pairs, the theme's weakest link (`0` when nothing was audited). */
49
54
  worst: number;
50
55
  }
56
+ /** A text/fill token pair to grade for contrast: `fg` is the text token, `bg` the surface it sits on. */
57
+ export interface PairSpec {
58
+ fg: TokenName;
59
+ bg: TokenName;
60
+ /** A human label for the pair in the audit result; defaults to `"<fg> on <bg>"`. */
61
+ label?: string;
62
+ }
63
+ /** xtyle's canonical text/fill pairs, each token audited against its *intended* surface rather than a
64
+ * naive fg×bg cross that cries wolf. This mirrors the token contract xtyle-default's own invariants
65
+ * enforce: the primary ink on the page base; the neutral / brand inks readable on the base *and* on
66
+ * both panel surfaces (so "does secondary text read on a card?" is a real check, not a false green);
67
+ * the placeholder on the field surface; each tone's on-fill text (`-fg` on the solid fill); the accent
68
+ * ramp's readable inks on the base; and the status readable inks on their soft tint. */
69
+ /**
70
+ * xtyle's canonical text/fill pairs as data. Exported so a consumer can read the token contract
71
+ * directly — extend it with `opts.pairs`, or (for a QuickJS/xript sandbox that can't `import` from
72
+ * `@xtyle/core`) inline this small list and pair it with the equally-pure `contrast()` to run the
73
+ * same grade the frontend runs. That's the sandbox-reachable path: the audit is a pure function of a
74
+ * register plus this pair list, so the two surfaces agree by sharing the data, not the import.
75
+ */
76
+ export declare function canonicalContrastPairs(): PairSpec[];
51
77
  export declare function auditRegister(register: TokenRegister, opts?: ContrastAuditOptions): ContrastAudit;
52
78
  //# sourceMappingURL=audit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3D;;;;;;;;GAQG;AAEH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IAClC,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,EAAE,EAAE,SAAS,CAAC;IACd,iDAAiD;IACjD,EAAE,EAAE,SAAS,CAAC;IACd,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,IAAI,EAAE,YAAY,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACpC,2GAA2G;IAC3G,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8FAA8F;IAC9F,KAAK,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,iEAAiE;IACjE,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,IAAI,GAAG,KAAK,CAAC;IACpB,0GAA0G;IAC1G,KAAK,EAAE,MAAM,CAAC;CACd;AAyCD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,GAAE,oBAAyB,GAAG,aAAa,CA6BrG"}
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3D;;;;;;;;GAQG;AAEH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IAClC,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,EAAE,EAAE,SAAS,CAAC;IACd,iDAAiD;IACjD,EAAE,EAAE,SAAS,CAAC;IACd,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,IAAI,EAAE,YAAY,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACpC,2GAA2G;IAC3G,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8FAA8F;IAC9F,KAAK,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC;IACrB;;;mHAG+G;IAC/G,KAAK,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,iEAAiE;IACjE,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,IAAI,GAAG,KAAK,CAAC;IACpB,0GAA0G;IAC1G,KAAK,EAAE,MAAM,CAAC;CACd;AAED,yGAAyG;AACzG,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,SAAS,CAAC;IACd,EAAE,EAAE,SAAS,CAAC;IACd,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAYD;;;;;wFAKwF;AACxF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,IAAI,QAAQ,EAAE,CAQnD;AAUD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,GAAE,oBAAyB,GAAG,aAAa,CA6BrG"}
package/dist/audit.js CHANGED
@@ -15,7 +15,14 @@ const TINT_TEXT_TONES = ["success", "warn", "danger", "info"];
15
15
  * both panel surfaces (so "does secondary text read on a card?" is a real check, not a false green);
16
16
  * the placeholder on the field surface; each tone's on-fill text (`-fg` on the solid fill); the accent
17
17
  * ramp's readable inks on the base; and the status readable inks on their soft tint. */
18
- function canonicalPairs() {
18
+ /**
19
+ * xtyle's canonical text/fill pairs as data. Exported so a consumer can read the token contract
20
+ * directly — extend it with `opts.pairs`, or (for a QuickJS/xript sandbox that can't `import` from
21
+ * `@xtyle/core`) inline this small list and pair it with the equally-pure `contrast()` to run the
22
+ * same grade the frontend runs. That's the sandbox-reachable path: the audit is a pure function of a
23
+ * register plus this pair list, so the two surfaces agree by sharing the data, not the import.
24
+ */
25
+ export function canonicalContrastPairs() {
19
26
  const pairs = [{ fg: "--fg-0", bg: "--bg-0" }];
20
27
  for (const ink of SURFACE_INKS)
21
28
  for (const surface of READING_SURFACES)
@@ -43,13 +50,13 @@ export function auditRegister(register, opts = {}) {
43
50
  const level = opts.level ?? "AA";
44
51
  const clears = (tier) => (level === "AAA" ? tier === "AAA" : tier !== "fail");
45
52
  const entries = [];
46
- for (const { fg, bg } of canonicalPairs()) {
53
+ for (const { fg, bg, label } of opts.pairs ?? canonicalContrastPairs()) {
47
54
  const fgValue = register[fg];
48
55
  const bgValue = register[bg];
49
56
  if (fgValue == null || bgValue == null)
50
57
  continue;
51
58
  const ratio = Math.round(contrast(fgValue, bgValue) * 100) / 100;
52
- entries.push({ pair: `${fg} on ${bg}`, fg, bg, fgValue, bgValue, ratio, tier: tierFor(ratio, largeText) });
59
+ entries.push({ pair: label ?? `${fg} on ${bg}`, fg, bg, fgValue, bgValue, ratio, tier: tierFor(ratio, largeText) });
53
60
  }
54
61
  const tallies = { total: entries.length, AAA: 0, AA: 0, fail: 0, pass: 0 };
55
62
  let worst = Infinity;
package/dist/audit.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/css/components/alert.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,QAAQ,QAkFb,CAAC"}
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/css/components/alert.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,QAAQ,QA6Fb,CAAC"}
@@ -15,6 +15,7 @@ const solidRules = TONES.map((t) => `.xtyle-alert--solid.xtyle-alert--${t} {
15
15
  export const alertCss = `
16
16
  .xtyle-alert {
17
17
  display: flex;
18
+ align-items: center;
18
19
  gap: var(--space-3);
19
20
  font-family: var(--font-sans);
20
21
  font-size: var(--text-body);
@@ -23,6 +24,17 @@ export const alertCss = `
23
24
  border-radius: var(--radius-md);
24
25
  padding: var(--space-3) var(--space-4);
25
26
  }
27
+ /* The fragment always emits the title/actions wrappers; they're only real when filled. A filled
28
+ title or actions stacks content, so the icon aligns to the first line; a message-only alert
29
+ centers the icon against its (possibly wrapped) text, and the empty wrappers collapse. */
30
+ .xtyle-alert:has(.xtyle-alert__title:not(:empty)),
31
+ .xtyle-alert:has(.xtyle-alert__actions:not(:empty)) {
32
+ align-items: flex-start;
33
+ }
34
+ .xtyle-alert__title:empty,
35
+ .xtyle-alert__actions:empty {
36
+ display: none;
37
+ }
26
38
  ${softRules}
27
39
  ${solidRules}
28
40
  .xtyle-alert__icon {
@@ -36,7 +48,6 @@ ${solidRules}
36
48
  margin-top: var(--space-0);
37
49
  }
38
50
  .xtyle-alert--noicon .xtyle-alert__icon { display: none; }
39
- :host(:has([slot="icon"])) .xtyle-alert__icon { display: inline-flex; }
40
51
  .xtyle-alert__body {
41
52
  display: flex;
42
53
  flex-direction: column;
@@ -1 +1 @@
1
- {"version":3,"file":"alert.js","sourceRoot":"","sources":["../../../src/css/components/alert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,mCAAmC,CAAC;qBACvB,CAAC;gBACN,CAAC;uBACM,CAAC;;kCAEU,CAAC,sCAAsC,CAAC,MAAM,CAC/E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,oCAAoC,CAAC;qBACxB,CAAC;gBACN,CAAC;;;mCAGkB,CAAC,uCAAuC,CAAC;mCACzC,CAAC,sCAAsC,CAAC,SAAS,CACnF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;EAWtB,SAAS;EACT,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsEX,CAAC,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"alert.js","sourceRoot":"","sources":["../../../src/css/components/alert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,mCAAmC,CAAC;qBACvB,CAAC;gBACN,CAAC;uBACM,CAAC;;kCAEU,CAAC,sCAAsC,CAAC,MAAM,CAC/E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,oCAAoC,CAAC;qBACxB,CAAC;gBACN,CAAC;;;mCAGkB,CAAC,uCAAuC,CAAC;mCACzC,CAAC,sCAAsC,CAAC,SAAS,CACnF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;EAuBtB,SAAS;EACT,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqEX,CAAC,IAAI,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"app-shell.d.ts","sourceRoot":"","sources":["../../../src/css/components/app-shell.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,QA+IhB,CAAC"}
1
+ {"version":3,"file":"app-shell.d.ts","sourceRoot":"","sources":["../../../src/css/components/app-shell.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,QAsJhB,CAAC"}
@@ -24,6 +24,13 @@ export const appShellCss = `
24
24
  .xtyle-app__rail {
25
25
  min-width: 0;
26
26
  }
27
+ /* A dock's host element carries a standalone default width (14/18/22rem by size); in a rail it must
28
+ fill the shell-sized track instead, or its edge border overhangs the rail and bleeds into main. */
29
+ .xtyle-app .xtyle-app__rail xtyle-dock,
30
+ .xtyle-app .xtyle-app__rail xtyle-dock-zone {
31
+ width: 100%;
32
+ box-sizing: border-box;
33
+ }
27
34
  .xtyle-app__rail--left {
28
35
  grid-column: 1;
29
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"app-shell.js","sourceRoot":"","sources":["../../../src/css/components/app-shell.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+I1B,CAAC,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"app-shell.js","sourceRoot":"","sources":["../../../src/css/components/app-shell.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsJ1B,CAAC,IAAI,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/css/components/badge.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,QAAQ,QA+Ib,CAAC"}
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/css/components/badge.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,QAAQ,QAgLb,CAAC"}
@@ -129,12 +129,15 @@ ${toneOutline}
129
129
  height: 0.75em;
130
130
  }
131
131
  .xtyle-dot {
132
+ --dot-color: var(--neutral);
133
+ --dot-pulse-duration: 1.4s;
134
+ position: relative;
132
135
  display: inline-block;
133
136
  width: var(--space-2);
134
137
  height: var(--space-2);
135
138
  flex: none;
136
139
  border-radius: var(--radius-full);
137
- background: var(--neutral);
140
+ background: var(--dot-color);
138
141
  }
139
142
  .xtyle-dot--sm {
140
143
  width: var(--space-1);
@@ -144,18 +147,48 @@ ${toneOutline}
144
147
  width: var(--space-3);
145
148
  height: var(--space-3);
146
149
  }
147
- ${TONES.map((t) => `.xtyle-dot--${t} { background: var(--${t}); }`).join("\n")}
150
+ ${TONES.map((t) => `.xtyle-dot--${t} { --dot-color: var(--${t}); }`).join("\n")}
148
151
  .xtyle-dot--pulse-slow {
149
- animation: xtyle-badge-pulse 1.8s var(--ease-standard) infinite;
152
+ --dot-pulse-duration: 1.8s;
153
+ animation: xtyle-badge-pulse var(--dot-pulse-duration) var(--ease-standard) infinite;
150
154
  }
151
155
  .xtyle-dot--pulse-fast {
152
- animation: xtyle-badge-pulse 0.9s var(--ease-standard) infinite;
156
+ --dot-pulse-duration: 0.9s;
157
+ animation: xtyle-badge-pulse var(--dot-pulse-duration) var(--ease-standard) infinite;
158
+ }
159
+ .xtyle-dot--glow {
160
+ box-shadow:
161
+ 0 0 0 var(--border-thin) color-mix(in oklch, var(--dot-color) 35%, transparent),
162
+ 0 0 var(--space-2) 0 var(--dot-color);
163
+ }
164
+ .xtyle-dot--ping::after {
165
+ content: "";
166
+ position: absolute;
167
+ inset: 0;
168
+ border-radius: inherit;
169
+ background: var(--dot-color);
170
+ animation: xtyle-dot-ping var(--dot-pulse-duration) var(--ease-standard) infinite;
171
+ }
172
+ @keyframes xtyle-dot-ping {
173
+ 0% {
174
+ transform: scale(1);
175
+ opacity: 0.55;
176
+ }
177
+ 80%,
178
+ 100% {
179
+ transform: scale(2.6);
180
+ opacity: 0;
181
+ }
153
182
  }
154
183
  @media (prefers-reduced-motion: reduce) {
155
184
  .xtyle-dot--pulse-slow,
156
185
  .xtyle-dot--pulse-fast {
157
186
  animation: none;
158
187
  }
188
+ .xtyle-dot--ping::after {
189
+ animation: none;
190
+ opacity: 0;
191
+ }
159
192
  }
160
193
  `.trim();
161
194
  //# sourceMappingURL=badge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../src/css/components/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,oCAAoC,CAAC;qBACxB,CAAC;gBACN,CAAC;;EAEf,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,mCAAmC,CAAC;qBACvB,CAAC;gBACN,CAAC;;EAEf,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,sCAAsC,CAAC;;gBAE/B,CAAC;uBACM,CAAC;EACtB,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BtB,SAAS;EACT,QAAQ;EACR,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqGX,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;CAa7E,CAAC,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../src/css/components/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,oCAAoC,CAAC;qBACxB,CAAC;gBACN,CAAC;;EAEf,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,mCAAmC,CAAC;qBACvB,CAAC;gBACN,CAAC;;EAEf,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,sCAAsC,CAAC;;gBAE/B,CAAC;uBACM,CAAC;EACtB,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BtB,SAAS;EACT,QAAQ;EACR,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwGX,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C9E,CAAC,IAAI,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/css/components/button.ts"],"names":[],"mappings":"AAwCA,eAAO,MAAM,SAAS,QA2Id,CAAC"}
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/css/components/button.ts"],"names":[],"mappings":"AAwCA,eAAO,MAAM,SAAS,QA8Id,CAAC"}
@@ -161,5 +161,8 @@ ${linkRules}
161
161
  }
162
162
  .xtyle-button:disabled::after,
163
163
  .xtyle-button[aria-disabled="true"]::after { background: transparent; }
164
+ @media (prefers-reduced-motion: reduce) {
165
+ .xtyle-button__spinner { animation: none; }
166
+ }
164
167
  `.trim();
165
168
  //# sourceMappingURL=button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","sourceRoot":"","sources":["../../../src/css/components/button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,sCAAsC,CAAC;qBAC1B,CAAC;gBACN,CAAC;;EAEf,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,wCAAwC,CAAC;;gBAEjC,CAAC;uBACM,CAAC;EACtB,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,sCAAsC,CAAC;;gBAE/B,CAAC;;EAEf,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,uCAAuC,CAAC;qBAC3B,CAAC;gBACN,CAAC;;EAEf,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,qCAAqC,CAAC;gBAC9B,CAAC;EACf,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiDvB,UAAU;EACV,YAAY;EACZ,UAAU;EACV,WAAW;EACX,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsFV,CAAC,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../../src/css/components/button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,sCAAsC,CAAC;qBAC1B,CAAC;gBACN,CAAC;;EAEf,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,wCAAwC,CAAC;;gBAEjC,CAAC;uBACM,CAAC;EACtB,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,sCAAsC,CAAC;;gBAE/B,CAAC;;EAEf,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,uCAAuC,CAAC;qBAC3B,CAAC;gBACN,CAAC;;EAEf,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,qCAAqC,CAAC;gBAC9B,CAAC;EACf,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiDvB,UAAU;EACV,YAAY;EACZ,UAAU;EACV,WAAW;EACX,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyFV,CAAC,IAAI,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../src/css/components/card.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO,QAiFZ,CAAC"}
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../src/css/components/card.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO,QA0FZ,CAAC"}
@@ -12,10 +12,15 @@ export const cardCss = `
12
12
  background: var(--bg-1);
13
13
  border: var(--border-thin) solid var(--line);
14
14
  border-radius: var(--radius-lg);
15
- box-shadow: var(--elevation-2);
15
+ box-shadow: var(--card-shadow, var(--elevation-1));
16
16
  padding: var(--space-5);
17
17
  gap: var(--space-4);
18
18
  }
19
+ /* depthStrength: how far the surface lifts. The default (no class) is the eased md; sm is a
20
+ whisper, lg keeps the heavier legacy elevation. An interactive card bumps one step on hover. */
21
+ .xtyle-card--depth-sm { --card-shadow: var(--elevation-0); --card-shadow-hover: var(--elevation-1); }
22
+ .xtyle-card--depth-md { --card-shadow: var(--elevation-1); --card-shadow-hover: var(--elevation-2); }
23
+ .xtyle-card--depth-lg { --card-shadow: var(--elevation-2); --card-shadow-hover: var(--elevation-3); }
19
24
  .xtyle-card--overlay {
20
25
  background: var(--surface-overlay);
21
26
  border-color: var(--surface-overlay-border);
@@ -38,6 +43,10 @@ export const cardCss = `
38
43
  border-top: var(--border-thin) solid var(--line);
39
44
  color: var(--fg-2);
40
45
  }
46
+ .xtyle-card__header:empty,
47
+ .xtyle-card__footer:empty {
48
+ display: none;
49
+ }
41
50
  .xtyle-card--interactive {
42
51
  position: relative;
43
52
  isolation: isolate;
@@ -69,7 +78,7 @@ export const cardCss = `
69
78
  }
70
79
  ${cardToneVars}
71
80
  .xtyle-card--interactive:hover {
72
- box-shadow: var(--elevation-4);
81
+ box-shadow: var(--card-shadow-hover, var(--elevation-2));
73
82
  border-color: var(--line-2);
74
83
  transform: translateY(calc(-1 * var(--space-1)));
75
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"card.js","sourceRoot":"","sources":["../../../src/css/components/card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAExG,MAAM,CAAC,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmErB,YAAY;;;;;;;;;;;;;;CAcb,CAAC,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../../src/css/components/card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAExG,MAAM,CAAC,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4ErB,YAAY;;;;;;;;;;;;;;CAcb,CAAC,IAAI,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../../src/css/components/carousel.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,QAyEhB,CAAC"}
1
+ {"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../../src/css/components/carousel.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,QA8EhB,CAAC"}
@@ -60,7 +60,9 @@ xtyle-carousel[data-enhanced] .xtyle-carousel__controls { display: flex; }
60
60
  border-radius: var(--radius-full);
61
61
  background: var(--bg-3);
62
62
  cursor: pointer;
63
- transition: background var(--duration-fast) var(--ease-standard);
63
+ transition:
64
+ background var(--duration-fast) var(--ease-standard),
65
+ width var(--duration-fast) var(--ease-standard);
64
66
  }
65
67
  .xtyle-carousel__dot:hover { background: var(--fg-2); }
66
68
  .xtyle-carousel__dot.is-active { background: var(--accent); }
@@ -68,6 +70,9 @@ xtyle-carousel[data-enhanced] .xtyle-carousel__controls { display: flex; }
68
70
  outline: var(--border-thin) solid var(--ring);
69
71
  outline-offset: 2px;
70
72
  }
73
+ @container style(--selection-cue: marker) {
74
+ .xtyle-carousel__dot.is-active { width: 1.4rem; }
75
+ }
71
76
  @media (prefers-reduced-motion: reduce) {
72
77
  .xtyle-carousel__track { scroll-behavior: auto; }
73
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.js","sourceRoot":"","sources":["../../../src/css/components/carousel.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyE1B,CAAC,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"carousel.js","sourceRoot":"","sources":["../../../src/css/components/carousel.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8E1B,CAAC,IAAI,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../../src/css/components/code.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,QAqIZ,CAAC"}
1
+ {"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../../src/css/components/code.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,QAwJZ,CAAC"}
@@ -11,7 +11,17 @@ export const codeCss = `
11
11
  line-height: var(--leading-normal);
12
12
  tab-size: 2;
13
13
  }
14
- :host([wrap]) .xtyle-code {
14
+ /* A block wide enough to scroll horizontally is made tabbable (see the element); an outline sits
15
+ outside the border box, so the scrolled code can't cover it. */
16
+ .xtyle-code:focus-visible {
17
+ outline: var(--border-thick) solid var(--ring);
18
+ outline-offset: 2px;
19
+ }
20
+ /* Unlike the rest of the set (which keys state off .xtyle-x--variant classes), code drives state off
21
+ host attributes, so each state needs both a shadow (:host) and a light-DOM (xtyle-code) selector:
22
+ :host only matches a shadow host, and the element renders light DOM over Astro SSR. */
23
+ :host([wrap]) .xtyle-code,
24
+ xtyle-code[wrap] .xtyle-code {
15
25
  white-space: pre-wrap;
16
26
  overflow-wrap: anywhere;
17
27
  }
@@ -21,17 +31,24 @@ export const codeCss = `
21
31
  background: none;
22
32
  }
23
33
  .xtyle-code-line { display: block; }
24
- :host([highlight]) .xtyle-code code { display: block; width: max-content; min-width: 100%; }
25
- :host([highlight][wrap]) .xtyle-code code { width: auto; }
34
+ :host([highlight]) .xtyle-code code,
35
+ xtyle-code[highlight] .xtyle-code code { display: block; width: max-content; min-width: 100%; }
36
+ :host([highlight][wrap]) .xtyle-code code,
37
+ xtyle-code[highlight][wrap] .xtyle-code code { width: auto; }
26
38
  .xtyle-code-line[data-line-highlight] { background: var(--code-line-highlight); }
27
- :host([line-numbers]) { --xtyle-code-gutter: 2.5ch; }
28
- :host([line-numbers]) .xtyle-code { padding-left: 0; }
29
- :host([line-numbers]) .xtyle-code code { display: block; counter-reset: xtyle-code-line; }
30
- :host([line-numbers]) .xtyle-code-line {
39
+ :host([line-numbers]),
40
+ xtyle-code[line-numbers] { --xtyle-code-gutter: 2.5ch; }
41
+ :host([line-numbers]) .xtyle-code,
42
+ xtyle-code[line-numbers] .xtyle-code { padding-left: 0; }
43
+ :host([line-numbers]) .xtyle-code code,
44
+ xtyle-code[line-numbers] .xtyle-code code { display: block; counter-reset: xtyle-code-line; }
45
+ :host([line-numbers]) .xtyle-code-line,
46
+ xtyle-code[line-numbers] .xtyle-code-line {
31
47
  display: flex;
32
48
  counter-increment: xtyle-code-line;
33
49
  }
34
- :host([line-numbers]) .xtyle-code-line::before {
50
+ :host([line-numbers]) .xtyle-code-line::before,
51
+ xtyle-code[line-numbers] .xtyle-code-line::before {
35
52
  content: counter(xtyle-code-line);
36
53
  position: sticky;
37
54
  left: 0;
@@ -46,7 +63,8 @@ export const codeCss = `
46
63
  user-select: none;
47
64
  -webkit-user-select: none;
48
65
  }
49
- :host([line-numbers]) .xtyle-code-line__text {
66
+ :host([line-numbers]) .xtyle-code-line__text,
67
+ xtyle-code[line-numbers] .xtyle-code-line__text {
50
68
  flex: 1 1 auto;
51
69
  min-width: 0;
52
70
  }
@@ -91,6 +109,7 @@ export const codeCss = `
91
109
  border-color var(--duration-fast) var(--ease-standard);
92
110
  }
93
111
  :host(:hover) .xtyle-code-copy,
112
+ xtyle-code:hover .xtyle-code-copy,
94
113
  .xtyle-code-copy:focus-visible { opacity: 1; }
95
114
  .xtyle-code-copy:hover { color: var(--neutral-fg); background: var(--neutral); }
96
115
  .xtyle-code-copy[data-copied] {
@@ -1 +1 @@
1
- {"version":3,"file":"code.js","sourceRoot":"","sources":["../../../src/css/components/code.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqItB,CAAC,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"code.js","sourceRoot":"","sources":["../../../src/css/components/code.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwJtB,CAAC,IAAI,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const emptyCss: string;
2
+ //# sourceMappingURL=empty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty.d.ts","sourceRoot":"","sources":["../../../src/css/components/empty.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,QAmCb,CAAC"}
@@ -0,0 +1,37 @@
1
+ export const emptyCss = `
2
+ .xtyle-empty {
3
+ display: flex;
4
+ flex-direction: column;
5
+ align-items: center;
6
+ text-align: center;
7
+ gap: var(--space-3);
8
+ padding: var(--space-8) var(--space-4);
9
+ font-family: var(--font-sans);
10
+ }
11
+ .xtyle-empty__media,
12
+ .xtyle-empty > xtyle-icon {
13
+ font-size: var(--text-4xl);
14
+ line-height: 1;
15
+ color: var(--fg-3);
16
+ }
17
+ .xtyle-empty :is(h1, h2, h3, h4, h5, h6, .xtyle-empty__title) {
18
+ margin: 0;
19
+ font-size: var(--text-lg);
20
+ font-weight: var(--weight-semibold);
21
+ color: var(--fg-0);
22
+ }
23
+ .xtyle-empty :is(p, .xtyle-empty__text) {
24
+ margin: 0;
25
+ max-width: 34ch;
26
+ font-size: var(--text-sm);
27
+ color: var(--fg-2);
28
+ }
29
+ .xtyle-empty__actions {
30
+ display: flex;
31
+ flex-wrap: wrap;
32
+ justify-content: center;
33
+ gap: var(--space-2);
34
+ margin-top: var(--space-2);
35
+ }
36
+ `.trim();
37
+ //# sourceMappingURL=empty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty.js","sourceRoot":"","sources":["../../../src/css/components/empty.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCvB,CAAC,IAAI,EAAE,CAAC"}
@@ -1,2 +1,13 @@
1
+ /**
2
+ * The lightbox variant of `<xtyle-dialog>`. The shared lightbox controller (`elements/lightbox.ts`)
3
+ * mounts an `<xtyle-dialog class="xtyle-lightbox">` on `document.body` and slots the image into the
4
+ * body and the caption into the footer; the dialog supplies the close button, scrim, focus trap,
5
+ * Escape, backdrop-click-to-close, and its own body-portal. These rules re-skin that dialog into an
6
+ * immersive viewer through the `.xtyle-lightbox` host class and `::part`-adjacent slot styling — the
7
+ * same override surface any app can use — so the lightbox is no longer a closed, hand-rolled box.
8
+ * They live in the shared component sheet the dialog's shadow adopts, so `:host()` and `::slotted()`
9
+ * resolve inside it; composed into `imageCss` below so the coverage lint still sees every token.
10
+ */
11
+ export declare const imageLightboxCss: string;
1
12
  export declare const imageCss: string;
2
13
  //# sourceMappingURL=image.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../src/css/components/image.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,QAoHb,CAAC"}
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../src/css/components/image.ts"],"names":[],"mappings":"AAqHA;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,QA2DrB,CAAC;AAET,eAAO,MAAM,QAAQ,QAAiD,CAAC"}