@signal9/era-ui 1.1.2

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 (656) hide show
  1. package/dist/dev/audit/audits/_helpers.d.ts +5 -0
  2. package/dist/dev/audit/audits/_helpers.js +11 -0
  3. package/dist/dev/audit/audits/concentric-inset.d.ts +2 -0
  4. package/dist/dev/audit/audits/concentric-inset.js +33 -0
  5. package/dist/dev/audit/audits/index.d.ts +4 -0
  6. package/dist/dev/audit/audits/index.js +9 -0
  7. package/dist/dev/audit/audits/uniform-sibling-gaps.d.ts +2 -0
  8. package/dist/dev/audit/audits/uniform-sibling-gaps.js +29 -0
  9. package/dist/dev/audit/audits/wall-matches-gap.d.ts +2 -0
  10. package/dist/dev/audit/audits/wall-matches-gap.js +30 -0
  11. package/dist/dev/audit/index.d.ts +4 -0
  12. package/dist/dev/audit/index.js +3 -0
  13. package/dist/dev/audit/registry.d.ts +13 -0
  14. package/dist/dev/audit/registry.js +50 -0
  15. package/dist/dev/audit/runner.d.ts +3 -0
  16. package/dist/dev/audit/runner.js +27 -0
  17. package/dist/dev/audit/types.d.ts +28 -0
  18. package/dist/dev/audit/types.js +7 -0
  19. package/dist/dev/audit-overlay.svelte +125 -0
  20. package/dist/dev/audit-overlay.svelte.d.ts +9 -0
  21. package/dist/dev/index.d.ts +2 -0
  22. package/dist/dev/index.js +2 -0
  23. package/dist/docs/badge.md +18 -0
  24. package/dist/docs/bits-ui-audit.md +58 -0
  25. package/dist/docs/button.md +18 -0
  26. package/dist/docs/chip.md +20 -0
  27. package/dist/docs/component-docs-core.d.ts +8 -0
  28. package/dist/docs/component-docs-core.js +72 -0
  29. package/dist/docs/component-docs.d.ts +2 -0
  30. package/dist/docs/component-docs.js +25 -0
  31. package/dist/docs/component-source-scanners.d.ts +18 -0
  32. package/dist/docs/component-source-scanners.js +46 -0
  33. package/dist/docs/extract-props.d.ts +13 -0
  34. package/dist/docs/extract-props.js +324 -0
  35. package/dist/docs/generated-docs.d.ts +4 -0
  36. package/dist/docs/generated-docs.js +23 -0
  37. package/dist/docs/index.d.ts +5 -0
  38. package/dist/docs/index.js +62 -0
  39. package/dist/docs/llms-txt.d.ts +2 -0
  40. package/dist/docs/llms-txt.js +84 -0
  41. package/dist/docs/quickstart.md +43 -0
  42. package/dist/docs/separator.md +20 -0
  43. package/dist/docs/table.md +35 -0
  44. package/dist/era-ui.css +2 -0
  45. package/dist/generated-docs/accordion.md +57 -0
  46. package/dist/generated-docs/alert-dialog.md +81 -0
  47. package/dist/generated-docs/aspect-ratio.md +17 -0
  48. package/dist/generated-docs/avatar.md +39 -0
  49. package/dist/generated-docs/badge.md +38 -0
  50. package/dist/generated-docs/bar.md +19 -0
  51. package/dist/generated-docs/button-group.md +19 -0
  52. package/dist/generated-docs/button.md +46 -0
  53. package/dist/generated-docs/calendar.md +126 -0
  54. package/dist/generated-docs/card.md +26 -0
  55. package/dist/generated-docs/checkbox.md +42 -0
  56. package/dist/generated-docs/chip.md +40 -0
  57. package/dist/generated-docs/code-block.md +20 -0
  58. package/dist/generated-docs/collapsible.md +30 -0
  59. package/dist/generated-docs/combobox.md +74 -0
  60. package/dist/generated-docs/command.md +123 -0
  61. package/dist/generated-docs/context-menu.md +94 -0
  62. package/dist/generated-docs/date-field.md +49 -0
  63. package/dist/generated-docs/date-picker.md +180 -0
  64. package/dist/generated-docs/date-range-field.md +50 -0
  65. package/dist/generated-docs/date-range-picker.md +180 -0
  66. package/dist/generated-docs/dialog.md +70 -0
  67. package/dist/generated-docs/draggable.md +3 -0
  68. package/dist/generated-docs/dropdown-menu.md +94 -0
  69. package/dist/generated-docs/file-upload.md +18 -0
  70. package/dist/generated-docs/input.md +18 -0
  71. package/dist/generated-docs/kv.md +20 -0
  72. package/dist/generated-docs/label.md +17 -0
  73. package/dist/generated-docs/link-preview.md +30 -0
  74. package/dist/generated-docs/llms-full.txt +3104 -0
  75. package/dist/generated-docs/llms.txt +34 -0
  76. package/dist/generated-docs/manifest.json +812 -0
  77. package/dist/generated-docs/menu.md +11 -0
  78. package/dist/generated-docs/menubar.md +103 -0
  79. package/dist/generated-docs/meter.md +17 -0
  80. package/dist/generated-docs/mode.md +24 -0
  81. package/dist/generated-docs/navigation-menu.md +11 -0
  82. package/dist/generated-docs/pagination.md +55 -0
  83. package/dist/generated-docs/pane.md +30 -0
  84. package/dist/generated-docs/pin-input.md +31 -0
  85. package/dist/generated-docs/popover.md +43 -0
  86. package/dist/generated-docs/progress.md +17 -0
  87. package/dist/generated-docs/quickstart.md +47 -0
  88. package/dist/generated-docs/radio-group.md +31 -0
  89. package/dist/generated-docs/range-calendar.md +11 -0
  90. package/dist/generated-docs/rating-group.md +31 -0
  91. package/dist/generated-docs/scroll-area.md +57 -0
  92. package/dist/generated-docs/select.md +49 -0
  93. package/dist/generated-docs/separator.md +39 -0
  94. package/dist/generated-docs/sheet.md +11 -0
  95. package/dist/generated-docs/skeleton.md +18 -0
  96. package/dist/generated-docs/slider.md +71 -0
  97. package/dist/generated-docs/surfaces.md +3 -0
  98. package/dist/generated-docs/switch.md +18 -0
  99. package/dist/generated-docs/table.md +113 -0
  100. package/dist/generated-docs/tabs.md +48 -0
  101. package/dist/generated-docs/time-field.md +49 -0
  102. package/dist/generated-docs/time-range-field.md +50 -0
  103. package/dist/generated-docs/toggle-group.md +30 -0
  104. package/dist/generated-docs/toggle.md +20 -0
  105. package/dist/generated-docs/toolbar.md +11 -0
  106. package/dist/generated-docs/tooltip.md +30 -0
  107. package/dist/generated-docs/video-player.md +73 -0
  108. package/dist/index.d.ts +2 -0
  109. package/dist/index.js +2 -0
  110. package/dist/styles/density.css +274 -0
  111. package/dist/styles/index.css +77 -0
  112. package/dist/styles/motion.css +56 -0
  113. package/dist/styles/surfaces/base.css +103 -0
  114. package/dist/styles/surfaces/bevel.css +71 -0
  115. package/dist/styles/surfaces/cartoon.css +27 -0
  116. package/dist/styles/surfaces/glass.css +127 -0
  117. package/dist/styles/themes.css +351 -0
  118. package/dist/styles/typography.css +28 -0
  119. package/dist/ui/accordion/accordion-content.svelte +15 -0
  120. package/dist/ui/accordion/accordion-content.svelte.d.ts +4 -0
  121. package/dist/ui/accordion/accordion-header.svelte +8 -0
  122. package/dist/ui/accordion/accordion-header.svelte.d.ts +4 -0
  123. package/dist/ui/accordion/accordion-item.svelte +12 -0
  124. package/dist/ui/accordion/accordion-item.svelte.d.ts +4 -0
  125. package/dist/ui/accordion/accordion-trigger.svelte +24 -0
  126. package/dist/ui/accordion/accordion-trigger.svelte.d.ts +5 -0
  127. package/dist/ui/accordion/accordion.svelte +8 -0
  128. package/dist/ui/accordion/accordion.svelte.d.ts +4 -0
  129. package/dist/ui/accordion/index.d.ts +5 -0
  130. package/dist/ui/accordion/index.js +5 -0
  131. package/dist/ui/alert-dialog/alert-dialog-action.svelte +41 -0
  132. package/dist/ui/alert-dialog/alert-dialog-action.svelte.d.ts +9 -0
  133. package/dist/ui/alert-dialog/alert-dialog-cancel.svelte +39 -0
  134. package/dist/ui/alert-dialog/alert-dialog-cancel.svelte.d.ts +9 -0
  135. package/dist/ui/alert-dialog/alert-dialog-content.svelte +25 -0
  136. package/dist/ui/alert-dialog/alert-dialog-content.svelte.d.ts +4 -0
  137. package/dist/ui/alert-dialog/alert-dialog-description.svelte +16 -0
  138. package/dist/ui/alert-dialog/alert-dialog-description.svelte.d.ts +4 -0
  139. package/dist/ui/alert-dialog/alert-dialog-overlay.svelte +16 -0
  140. package/dist/ui/alert-dialog/alert-dialog-overlay.svelte.d.ts +4 -0
  141. package/dist/ui/alert-dialog/alert-dialog-title.svelte +12 -0
  142. package/dist/ui/alert-dialog/alert-dialog-title.svelte.d.ts +4 -0
  143. package/dist/ui/alert-dialog/alert-dialog-trigger.svelte +28 -0
  144. package/dist/ui/alert-dialog/alert-dialog-trigger.svelte.d.ts +9 -0
  145. package/dist/ui/alert-dialog/index.d.ts +10 -0
  146. package/dist/ui/alert-dialog/index.js +10 -0
  147. package/dist/ui/aspect-ratio/aspect-ratio.svelte +19 -0
  148. package/dist/ui/aspect-ratio/aspect-ratio.svelte.d.ts +5 -0
  149. package/dist/ui/aspect-ratio/index.d.ts +1 -0
  150. package/dist/ui/aspect-ratio/index.js +1 -0
  151. package/dist/ui/avatar/avatar-fallback.svelte +22 -0
  152. package/dist/ui/avatar/avatar-fallback.svelte.d.ts +5 -0
  153. package/dist/ui/avatar/avatar-image.svelte +8 -0
  154. package/dist/ui/avatar/avatar-image.svelte.d.ts +4 -0
  155. package/dist/ui/avatar/avatar-root.svelte +22 -0
  156. package/dist/ui/avatar/avatar-root.svelte.d.ts +5 -0
  157. package/dist/ui/avatar/index.d.ts +3 -0
  158. package/dist/ui/avatar/index.js +3 -0
  159. package/dist/ui/badge/badge.svelte +40 -0
  160. package/dist/ui/badge/badge.svelte.d.ts +32 -0
  161. package/dist/ui/badge/index.d.ts +1 -0
  162. package/dist/ui/badge/index.js +1 -0
  163. package/dist/ui/bar/bar.svelte +45 -0
  164. package/dist/ui/bar/bar.svelte.d.ts +30 -0
  165. package/dist/ui/bar/index.d.ts +1 -0
  166. package/dist/ui/bar/index.js +1 -0
  167. package/dist/ui/button/button.svelte +53 -0
  168. package/dist/ui/button/button.svelte.d.ts +21 -0
  169. package/dist/ui/button/index.d.ts +12 -0
  170. package/dist/ui/button/index.js +3 -0
  171. package/dist/ui/button/variants.d.ts +70 -0
  172. package/dist/ui/button/variants.js +97 -0
  173. package/dist/ui/button-group/button-group.svelte +31 -0
  174. package/dist/ui/button-group/button-group.svelte.d.ts +10 -0
  175. package/dist/ui/button-group/index.d.ts +1 -0
  176. package/dist/ui/button-group/index.js +1 -0
  177. package/dist/ui/calendar/calendar-cell.svelte +8 -0
  178. package/dist/ui/calendar/calendar-cell.svelte.d.ts +4 -0
  179. package/dist/ui/calendar/calendar-day.svelte +15 -0
  180. package/dist/ui/calendar/calendar-day.svelte.d.ts +4 -0
  181. package/dist/ui/calendar/calendar-grid-body.svelte +7 -0
  182. package/dist/ui/calendar/calendar-grid-body.svelte.d.ts +4 -0
  183. package/dist/ui/calendar/calendar-grid-head.svelte +7 -0
  184. package/dist/ui/calendar/calendar-grid-head.svelte.d.ts +4 -0
  185. package/dist/ui/calendar/calendar-grid-row.svelte +8 -0
  186. package/dist/ui/calendar/calendar-grid-row.svelte.d.ts +4 -0
  187. package/dist/ui/calendar/calendar-grid.svelte +8 -0
  188. package/dist/ui/calendar/calendar-grid.svelte.d.ts +4 -0
  189. package/dist/ui/calendar/calendar-head-cell.svelte +15 -0
  190. package/dist/ui/calendar/calendar-head-cell.svelte.d.ts +4 -0
  191. package/dist/ui/calendar/calendar-header.svelte +12 -0
  192. package/dist/ui/calendar/calendar-header.svelte.d.ts +4 -0
  193. package/dist/ui/calendar/calendar-heading.svelte +8 -0
  194. package/dist/ui/calendar/calendar-heading.svelte.d.ts +4 -0
  195. package/dist/ui/calendar/calendar-next-button.svelte +30 -0
  196. package/dist/ui/calendar/calendar-next-button.svelte.d.ts +9 -0
  197. package/dist/ui/calendar/calendar-prev-button.svelte +30 -0
  198. package/dist/ui/calendar/calendar-prev-button.svelte.d.ts +9 -0
  199. package/dist/ui/calendar/calendar-root.svelte +30 -0
  200. package/dist/ui/calendar/calendar-root.svelte.d.ts +4 -0
  201. package/dist/ui/calendar/index.d.ts +12 -0
  202. package/dist/ui/calendar/index.js +12 -0
  203. package/dist/ui/card/card.svelte +159 -0
  204. package/dist/ui/card/card.svelte.d.ts +63 -0
  205. package/dist/ui/card/index.d.ts +1 -0
  206. package/dist/ui/card/index.js +1 -0
  207. package/dist/ui/checkbox/checkbox-group-label.svelte +12 -0
  208. package/dist/ui/checkbox/checkbox-group-label.svelte.d.ts +4 -0
  209. package/dist/ui/checkbox/checkbox-group.svelte +18 -0
  210. package/dist/ui/checkbox/checkbox-group.svelte.d.ts +4 -0
  211. package/dist/ui/checkbox/checkbox.svelte +33 -0
  212. package/dist/ui/checkbox/checkbox.svelte.d.ts +4 -0
  213. package/dist/ui/checkbox/index.d.ts +3 -0
  214. package/dist/ui/checkbox/index.js +3 -0
  215. package/dist/ui/chip/chip.svelte +66 -0
  216. package/dist/ui/chip/chip.svelte.d.ts +26 -0
  217. package/dist/ui/chip/index.d.ts +1 -0
  218. package/dist/ui/chip/index.js +1 -0
  219. package/dist/ui/code-block/code-block.svelte +58 -0
  220. package/dist/ui/code-block/code-block.svelte.d.ts +11 -0
  221. package/dist/ui/code-block/index.d.ts +1 -0
  222. package/dist/ui/code-block/index.js +1 -0
  223. package/dist/ui/collapsible/collapsible-content.svelte +15 -0
  224. package/dist/ui/collapsible/collapsible-content.svelte.d.ts +5 -0
  225. package/dist/ui/collapsible/collapsible-trigger.svelte +22 -0
  226. package/dist/ui/collapsible/collapsible-trigger.svelte.d.ts +5 -0
  227. package/dist/ui/collapsible/index.d.ts +4 -0
  228. package/dist/ui/collapsible/index.js +4 -0
  229. package/dist/ui/combobox/combobox-content.svelte +25 -0
  230. package/dist/ui/combobox/combobox-content.svelte.d.ts +5 -0
  231. package/dist/ui/combobox/combobox-empty.svelte +22 -0
  232. package/dist/ui/combobox/combobox-empty.svelte.d.ts +8 -0
  233. package/dist/ui/combobox/combobox-group-heading.svelte +19 -0
  234. package/dist/ui/combobox/combobox-group-heading.svelte.d.ts +5 -0
  235. package/dist/ui/combobox/combobox-group.svelte +8 -0
  236. package/dist/ui/combobox/combobox-group.svelte.d.ts +4 -0
  237. package/dist/ui/combobox/combobox-input.svelte +15 -0
  238. package/dist/ui/combobox/combobox-input.svelte.d.ts +4 -0
  239. package/dist/ui/combobox/combobox-item.svelte +17 -0
  240. package/dist/ui/combobox/combobox-item.svelte.d.ts +4 -0
  241. package/dist/ui/combobox/combobox-trigger.svelte +27 -0
  242. package/dist/ui/combobox/combobox-trigger.svelte.d.ts +5 -0
  243. package/dist/ui/combobox/index.d.ts +10 -0
  244. package/dist/ui/combobox/index.js +10 -0
  245. package/dist/ui/command/command-empty.svelte +15 -0
  246. package/dist/ui/command/command-empty.svelte.d.ts +4 -0
  247. package/dist/ui/command/command-group-heading.svelte +16 -0
  248. package/dist/ui/command/command-group-heading.svelte.d.ts +4 -0
  249. package/dist/ui/command/command-group-items.svelte +12 -0
  250. package/dist/ui/command/command-group-items.svelte.d.ts +4 -0
  251. package/dist/ui/command/command-group.svelte +7 -0
  252. package/dist/ui/command/command-group.svelte.d.ts +4 -0
  253. package/dist/ui/command/command-input.svelte +45 -0
  254. package/dist/ui/command/command-input.svelte.d.ts +10 -0
  255. package/dist/ui/command/command-item.svelte +15 -0
  256. package/dist/ui/command/command-item.svelte.d.ts +4 -0
  257. package/dist/ui/command/command-link-item.svelte +15 -0
  258. package/dist/ui/command/command-link-item.svelte.d.ts +4 -0
  259. package/dist/ui/command/command-list.svelte +12 -0
  260. package/dist/ui/command/command-list.svelte.d.ts +4 -0
  261. package/dist/ui/command/command-loading.svelte +15 -0
  262. package/dist/ui/command/command-loading.svelte.d.ts +4 -0
  263. package/dist/ui/command/command-root.svelte +21 -0
  264. package/dist/ui/command/command-root.svelte.d.ts +4 -0
  265. package/dist/ui/command/command-separator.svelte +12 -0
  266. package/dist/ui/command/command-separator.svelte.d.ts +4 -0
  267. package/dist/ui/command/command-viewport.svelte +8 -0
  268. package/dist/ui/command/command-viewport.svelte.d.ts +4 -0
  269. package/dist/ui/command/index.d.ts +12 -0
  270. package/dist/ui/command/index.js +12 -0
  271. package/dist/ui/context-menu/context-menu-checkbox-item.svelte +21 -0
  272. package/dist/ui/context-menu/context-menu-checkbox-item.svelte.d.ts +4 -0
  273. package/dist/ui/context-menu/context-menu-content.svelte +27 -0
  274. package/dist/ui/context-menu/context-menu-content.svelte.d.ts +4 -0
  275. package/dist/ui/context-menu/context-menu-group-heading.svelte +16 -0
  276. package/dist/ui/context-menu/context-menu-group-heading.svelte.d.ts +4 -0
  277. package/dist/ui/context-menu/context-menu-item.svelte +22 -0
  278. package/dist/ui/context-menu/context-menu-item.svelte.d.ts +5 -0
  279. package/dist/ui/context-menu/context-menu-radio-item.svelte +19 -0
  280. package/dist/ui/context-menu/context-menu-radio-item.svelte.d.ts +4 -0
  281. package/dist/ui/context-menu/context-menu-separator.svelte +16 -0
  282. package/dist/ui/context-menu/context-menu-separator.svelte.d.ts +4 -0
  283. package/dist/ui/context-menu/context-menu-sub-content.svelte +26 -0
  284. package/dist/ui/context-menu/context-menu-sub-content.svelte.d.ts +5 -0
  285. package/dist/ui/context-menu/context-menu-sub-trigger.svelte +24 -0
  286. package/dist/ui/context-menu/context-menu-sub-trigger.svelte.d.ts +5 -0
  287. package/dist/ui/context-menu/context-menu-trigger.svelte +12 -0
  288. package/dist/ui/context-menu/context-menu-trigger.svelte.d.ts +4 -0
  289. package/dist/ui/context-menu/index.d.ts +14 -0
  290. package/dist/ui/context-menu/index.js +14 -0
  291. package/dist/ui/date-field/date-field-input.svelte +15 -0
  292. package/dist/ui/date-field/date-field-input.svelte.d.ts +4 -0
  293. package/dist/ui/date-field/date-field-label.svelte +8 -0
  294. package/dist/ui/date-field/date-field-label.svelte.d.ts +4 -0
  295. package/dist/ui/date-field/date-field-root.svelte +11 -0
  296. package/dist/ui/date-field/date-field-root.svelte.d.ts +3 -0
  297. package/dist/ui/date-field/date-field-segment.svelte +15 -0
  298. package/dist/ui/date-field/date-field-segment.svelte.d.ts +4 -0
  299. package/dist/ui/date-field/index.d.ts +4 -0
  300. package/dist/ui/date-field/index.js +4 -0
  301. package/dist/ui/date-picker/date-picker-calendar.svelte +16 -0
  302. package/dist/ui/date-picker/date-picker-calendar.svelte.d.ts +4 -0
  303. package/dist/ui/date-picker/date-picker-cell.svelte +8 -0
  304. package/dist/ui/date-picker/date-picker-cell.svelte.d.ts +4 -0
  305. package/dist/ui/date-picker/date-picker-content.svelte +25 -0
  306. package/dist/ui/date-picker/date-picker-content.svelte.d.ts +5 -0
  307. package/dist/ui/date-picker/date-picker-day.svelte +15 -0
  308. package/dist/ui/date-picker/date-picker-day.svelte.d.ts +4 -0
  309. package/dist/ui/date-picker/date-picker-grid-body.svelte +11 -0
  310. package/dist/ui/date-picker/date-picker-grid-body.svelte.d.ts +4 -0
  311. package/dist/ui/date-picker/date-picker-grid-head.svelte +11 -0
  312. package/dist/ui/date-picker/date-picker-grid-head.svelte.d.ts +4 -0
  313. package/dist/ui/date-picker/date-picker-grid-row.svelte +8 -0
  314. package/dist/ui/date-picker/date-picker-grid-row.svelte.d.ts +4 -0
  315. package/dist/ui/date-picker/date-picker-grid.svelte +8 -0
  316. package/dist/ui/date-picker/date-picker-grid.svelte.d.ts +4 -0
  317. package/dist/ui/date-picker/date-picker-head-cell.svelte +19 -0
  318. package/dist/ui/date-picker/date-picker-head-cell.svelte.d.ts +4 -0
  319. package/dist/ui/date-picker/date-picker-header.svelte +12 -0
  320. package/dist/ui/date-picker/date-picker-header.svelte.d.ts +4 -0
  321. package/dist/ui/date-picker/date-picker-heading.svelte +12 -0
  322. package/dist/ui/date-picker/date-picker-heading.svelte.d.ts +4 -0
  323. package/dist/ui/date-picker/date-picker-input.svelte +15 -0
  324. package/dist/ui/date-picker/date-picker-input.svelte.d.ts +4 -0
  325. package/dist/ui/date-picker/date-picker-label.svelte +8 -0
  326. package/dist/ui/date-picker/date-picker-label.svelte.d.ts +4 -0
  327. package/dist/ui/date-picker/date-picker-next-button.svelte +30 -0
  328. package/dist/ui/date-picker/date-picker-next-button.svelte.d.ts +9 -0
  329. package/dist/ui/date-picker/date-picker-prev-button.svelte +30 -0
  330. package/dist/ui/date-picker/date-picker-prev-button.svelte.d.ts +9 -0
  331. package/dist/ui/date-picker/date-picker-root.svelte +19 -0
  332. package/dist/ui/date-picker/date-picker-root.svelte.d.ts +3 -0
  333. package/dist/ui/date-picker/date-picker-segment.svelte +15 -0
  334. package/dist/ui/date-picker/date-picker-segment.svelte.d.ts +4 -0
  335. package/dist/ui/date-picker/date-picker-trigger.svelte +27 -0
  336. package/dist/ui/date-picker/date-picker-trigger.svelte.d.ts +5 -0
  337. package/dist/ui/date-picker/index.d.ts +18 -0
  338. package/dist/ui/date-picker/index.js +18 -0
  339. package/dist/ui/date-range-field/date-range-field-input.svelte +19 -0
  340. package/dist/ui/date-range-field/date-range-field-input.svelte.d.ts +4 -0
  341. package/dist/ui/date-range-field/date-range-field-label.svelte +12 -0
  342. package/dist/ui/date-range-field/date-range-field-label.svelte.d.ts +4 -0
  343. package/dist/ui/date-range-field/date-range-field-root.svelte +13 -0
  344. package/dist/ui/date-range-field/date-range-field-root.svelte.d.ts +4 -0
  345. package/dist/ui/date-range-field/date-range-field-segment.svelte +19 -0
  346. package/dist/ui/date-range-field/date-range-field-segment.svelte.d.ts +3 -0
  347. package/dist/ui/date-range-field/index.d.ts +4 -0
  348. package/dist/ui/date-range-field/index.js +4 -0
  349. package/dist/ui/date-range-picker/date-range-picker-calendar.svelte +16 -0
  350. package/dist/ui/date-range-picker/date-range-picker-calendar.svelte.d.ts +4 -0
  351. package/dist/ui/date-range-picker/date-range-picker-cell.svelte +12 -0
  352. package/dist/ui/date-range-picker/date-range-picker-cell.svelte.d.ts +4 -0
  353. package/dist/ui/date-range-picker/date-range-picker-content.svelte +25 -0
  354. package/dist/ui/date-range-picker/date-range-picker-content.svelte.d.ts +5 -0
  355. package/dist/ui/date-range-picker/date-range-picker-day.svelte +19 -0
  356. package/dist/ui/date-range-picker/date-range-picker-day.svelte.d.ts +4 -0
  357. package/dist/ui/date-range-picker/date-range-picker-grid-body.svelte +12 -0
  358. package/dist/ui/date-range-picker/date-range-picker-grid-body.svelte.d.ts +4 -0
  359. package/dist/ui/date-range-picker/date-range-picker-grid-head.svelte +12 -0
  360. package/dist/ui/date-range-picker/date-range-picker-grid-head.svelte.d.ts +4 -0
  361. package/dist/ui/date-range-picker/date-range-picker-grid-row.svelte +12 -0
  362. package/dist/ui/date-range-picker/date-range-picker-grid-row.svelte.d.ts +4 -0
  363. package/dist/ui/date-range-picker/date-range-picker-grid.svelte +16 -0
  364. package/dist/ui/date-range-picker/date-range-picker-grid.svelte.d.ts +4 -0
  365. package/dist/ui/date-range-picker/date-range-picker-head-cell.svelte +19 -0
  366. package/dist/ui/date-range-picker/date-range-picker-head-cell.svelte.d.ts +4 -0
  367. package/dist/ui/date-range-picker/date-range-picker-header.svelte +16 -0
  368. package/dist/ui/date-range-picker/date-range-picker-header.svelte.d.ts +4 -0
  369. package/dist/ui/date-range-picker/date-range-picker-heading.svelte +16 -0
  370. package/dist/ui/date-range-picker/date-range-picker-heading.svelte.d.ts +4 -0
  371. package/dist/ui/date-range-picker/date-range-picker-input.svelte +19 -0
  372. package/dist/ui/date-range-picker/date-range-picker-input.svelte.d.ts +4 -0
  373. package/dist/ui/date-range-picker/date-range-picker-label.svelte +12 -0
  374. package/dist/ui/date-range-picker/date-range-picker-label.svelte.d.ts +4 -0
  375. package/dist/ui/date-range-picker/date-range-picker-next-button.svelte +30 -0
  376. package/dist/ui/date-range-picker/date-range-picker-next-button.svelte.d.ts +9 -0
  377. package/dist/ui/date-range-picker/date-range-picker-prev-button.svelte +30 -0
  378. package/dist/ui/date-range-picker/date-range-picker-prev-button.svelte.d.ts +9 -0
  379. package/dist/ui/date-range-picker/date-range-picker-root.svelte +19 -0
  380. package/dist/ui/date-range-picker/date-range-picker-root.svelte.d.ts +4 -0
  381. package/dist/ui/date-range-picker/date-range-picker-segment.svelte +19 -0
  382. package/dist/ui/date-range-picker/date-range-picker-segment.svelte.d.ts +3 -0
  383. package/dist/ui/date-range-picker/date-range-picker-trigger.svelte +27 -0
  384. package/dist/ui/date-range-picker/date-range-picker-trigger.svelte.d.ts +5 -0
  385. package/dist/ui/date-range-picker/index.d.ts +18 -0
  386. package/dist/ui/date-range-picker/index.js +18 -0
  387. package/dist/ui/dialog/dialog-close.svelte +39 -0
  388. package/dist/ui/dialog/dialog-close.svelte.d.ts +9 -0
  389. package/dist/ui/dialog/dialog-content.svelte +25 -0
  390. package/dist/ui/dialog/dialog-content.svelte.d.ts +5 -0
  391. package/dist/ui/dialog/dialog-description.svelte +12 -0
  392. package/dist/ui/dialog/dialog-description.svelte.d.ts +4 -0
  393. package/dist/ui/dialog/dialog-overlay.svelte +12 -0
  394. package/dist/ui/dialog/dialog-overlay.svelte.d.ts +4 -0
  395. package/dist/ui/dialog/dialog-title.svelte +8 -0
  396. package/dist/ui/dialog/dialog-title.svelte.d.ts +4 -0
  397. package/dist/ui/dialog/dialog-trigger.svelte +28 -0
  398. package/dist/ui/dialog/dialog-trigger.svelte.d.ts +9 -0
  399. package/dist/ui/dialog/index.d.ts +9 -0
  400. package/dist/ui/dialog/index.js +9 -0
  401. package/dist/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +21 -0
  402. package/dist/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +4 -0
  403. package/dist/ui/dropdown-menu/dropdown-menu-content.svelte +27 -0
  404. package/dist/ui/dropdown-menu/dropdown-menu-content.svelte.d.ts +5 -0
  405. package/dist/ui/dropdown-menu/dropdown-menu-group-heading.svelte +16 -0
  406. package/dist/ui/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +4 -0
  407. package/dist/ui/dropdown-menu/dropdown-menu-item.svelte +22 -0
  408. package/dist/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +5 -0
  409. package/dist/ui/dropdown-menu/dropdown-menu-radio-item.svelte +19 -0
  410. package/dist/ui/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +4 -0
  411. package/dist/ui/dropdown-menu/dropdown-menu-separator.svelte +16 -0
  412. package/dist/ui/dropdown-menu/dropdown-menu-separator.svelte.d.ts +4 -0
  413. package/dist/ui/dropdown-menu/dropdown-menu-sub-content.svelte +26 -0
  414. package/dist/ui/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +5 -0
  415. package/dist/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +24 -0
  416. package/dist/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +5 -0
  417. package/dist/ui/dropdown-menu/dropdown-menu-trigger.svelte +24 -0
  418. package/dist/ui/dropdown-menu/dropdown-menu-trigger.svelte.d.ts +5 -0
  419. package/dist/ui/dropdown-menu/index.d.ts +14 -0
  420. package/dist/ui/dropdown-menu/index.js +14 -0
  421. package/dist/ui/file-upload/file-upload.svelte +98 -0
  422. package/dist/ui/file-upload/file-upload.svelte.d.ts +8 -0
  423. package/dist/ui/file-upload/index.d.ts +1 -0
  424. package/dist/ui/file-upload/index.js +1 -0
  425. package/dist/ui/index.d.ts +58 -0
  426. package/dist/ui/index.js +62 -0
  427. package/dist/ui/input/index.d.ts +2 -0
  428. package/dist/ui/input/index.js +2 -0
  429. package/dist/ui/input/input.svelte +23 -0
  430. package/dist/ui/input/input.svelte.d.ts +7 -0
  431. package/dist/ui/input/textarea.svelte +23 -0
  432. package/dist/ui/input/textarea.svelte.d.ts +7 -0
  433. package/dist/ui/kv/index.d.ts +1 -0
  434. package/dist/ui/kv/index.js +1 -0
  435. package/dist/ui/kv/kv.svelte +33 -0
  436. package/dist/ui/kv/kv.svelte.d.ts +10 -0
  437. package/dist/ui/label/index.d.ts +1 -0
  438. package/dist/ui/label/index.js +1 -0
  439. package/dist/ui/label/label.svelte +15 -0
  440. package/dist/ui/label/label.svelte.d.ts +5 -0
  441. package/dist/ui/link-preview/index.d.ts +7 -0
  442. package/dist/ui/link-preview/index.js +7 -0
  443. package/dist/ui/link-preview/link-preview-content.svelte +26 -0
  444. package/dist/ui/link-preview/link-preview-content.svelte.d.ts +5 -0
  445. package/dist/ui/link-preview/link-preview-trigger.svelte +19 -0
  446. package/dist/ui/link-preview/link-preview-trigger.svelte.d.ts +5 -0
  447. package/dist/ui/menu/index.d.ts +1 -0
  448. package/dist/ui/menu/index.js +3 -0
  449. package/dist/ui/menubar/index.d.ts +16 -0
  450. package/dist/ui/menubar/index.js +16 -0
  451. package/dist/ui/menubar/menubar-checkbox-item.svelte +21 -0
  452. package/dist/ui/menubar/menubar-checkbox-item.svelte.d.ts +4 -0
  453. package/dist/ui/menubar/menubar-content.svelte +27 -0
  454. package/dist/ui/menubar/menubar-content.svelte.d.ts +5 -0
  455. package/dist/ui/menubar/menubar-group-heading.svelte +16 -0
  456. package/dist/ui/menubar/menubar-group-heading.svelte.d.ts +4 -0
  457. package/dist/ui/menubar/menubar-item.svelte +22 -0
  458. package/dist/ui/menubar/menubar-item.svelte.d.ts +5 -0
  459. package/dist/ui/menubar/menubar-radio-item.svelte +15 -0
  460. package/dist/ui/menubar/menubar-radio-item.svelte.d.ts +4 -0
  461. package/dist/ui/menubar/menubar-root.svelte +15 -0
  462. package/dist/ui/menubar/menubar-root.svelte.d.ts +4 -0
  463. package/dist/ui/menubar/menubar-separator.svelte +12 -0
  464. package/dist/ui/menubar/menubar-separator.svelte.d.ts +4 -0
  465. package/dist/ui/menubar/menubar-sub-content.svelte +26 -0
  466. package/dist/ui/menubar/menubar-sub-content.svelte.d.ts +5 -0
  467. package/dist/ui/menubar/menubar-sub-trigger.svelte +24 -0
  468. package/dist/ui/menubar/menubar-sub-trigger.svelte.d.ts +5 -0
  469. package/dist/ui/menubar/menubar-trigger.svelte +22 -0
  470. package/dist/ui/menubar/menubar-trigger.svelte.d.ts +5 -0
  471. package/dist/ui/meter/index.d.ts +1 -0
  472. package/dist/ui/meter/index.js +1 -0
  473. package/dist/ui/meter/meter.svelte +32 -0
  474. package/dist/ui/meter/meter.svelte.d.ts +4 -0
  475. package/dist/ui/mode/index.d.ts +1 -0
  476. package/dist/ui/mode/index.js +1 -0
  477. package/dist/ui/mode/mode.svelte +61 -0
  478. package/dist/ui/mode/mode.svelte.d.ts +18 -0
  479. package/dist/ui/navigation-menu/index.d.ts +10 -0
  480. package/dist/ui/navigation-menu/index.js +10 -0
  481. package/dist/ui/pagination/index.d.ts +4 -0
  482. package/dist/ui/pagination/index.js +4 -0
  483. package/dist/ui/pagination/pagination-next-button.svelte +30 -0
  484. package/dist/ui/pagination/pagination-next-button.svelte.d.ts +9 -0
  485. package/dist/ui/pagination/pagination-page.svelte +32 -0
  486. package/dist/ui/pagination/pagination-page.svelte.d.ts +9 -0
  487. package/dist/ui/pagination/pagination-prev-button.svelte +30 -0
  488. package/dist/ui/pagination/pagination-prev-button.svelte.d.ts +9 -0
  489. package/dist/ui/pagination/pagination-root.svelte +18 -0
  490. package/dist/ui/pagination/pagination-root.svelte.d.ts +4 -0
  491. package/dist/ui/pane/index.d.ts +1 -0
  492. package/dist/ui/pane/index.js +1 -0
  493. package/dist/ui/pane/pane.svelte +145 -0
  494. package/dist/ui/pane/pane.svelte.d.ts +34 -0
  495. package/dist/ui/pin-input/index.d.ts +2 -0
  496. package/dist/ui/pin-input/index.js +2 -0
  497. package/dist/ui/pin-input/pin-input-cell.svelte +30 -0
  498. package/dist/ui/pin-input/pin-input-cell.svelte.d.ts +4 -0
  499. package/dist/ui/pin-input/pin-input-root.svelte +18 -0
  500. package/dist/ui/pin-input/pin-input-root.svelte.d.ts +4 -0
  501. package/dist/ui/popover/index.d.ts +7 -0
  502. package/dist/ui/popover/index.js +7 -0
  503. package/dist/ui/popover/popover-close.svelte +27 -0
  504. package/dist/ui/popover/popover-close.svelte.d.ts +9 -0
  505. package/dist/ui/popover/popover-content.svelte +24 -0
  506. package/dist/ui/popover/popover-content.svelte.d.ts +5 -0
  507. package/dist/ui/popover/popover-trigger.svelte +41 -0
  508. package/dist/ui/popover/popover-trigger.svelte.d.ts +9 -0
  509. package/dist/ui/progress/index.d.ts +1 -0
  510. package/dist/ui/progress/index.js +1 -0
  511. package/dist/ui/progress/progress.svelte +47 -0
  512. package/dist/ui/progress/progress.svelte.d.ts +4 -0
  513. package/dist/ui/provider/axes.d.ts +74 -0
  514. package/dist/ui/provider/axes.js +70 -0
  515. package/dist/ui/provider/index.d.ts +6 -0
  516. package/dist/ui/provider/index.js +6 -0
  517. package/dist/ui/provider/modes.d.ts +12 -0
  518. package/dist/ui/provider/modes.js +14 -0
  519. package/dist/ui/provider/surfaces.d.ts +45 -0
  520. package/dist/ui/provider/surfaces.js +24 -0
  521. package/dist/ui/radio-group/index.d.ts +2 -0
  522. package/dist/ui/radio-group/index.js +2 -0
  523. package/dist/ui/radio-group/radio-group-item.svelte +19 -0
  524. package/dist/ui/radio-group/radio-group-item.svelte.d.ts +4 -0
  525. package/dist/ui/radio-group/radio-group-root.svelte +18 -0
  526. package/dist/ui/radio-group/radio-group-root.svelte.d.ts +4 -0
  527. package/dist/ui/range-calendar/index.d.ts +15 -0
  528. package/dist/ui/range-calendar/index.js +15 -0
  529. package/dist/ui/rating-group/index.d.ts +2 -0
  530. package/dist/ui/rating-group/index.js +2 -0
  531. package/dist/ui/rating-group/rating-group-item.svelte +17 -0
  532. package/dist/ui/rating-group/rating-group-item.svelte.d.ts +4 -0
  533. package/dist/ui/rating-group/rating-group-root.svelte +20 -0
  534. package/dist/ui/rating-group/rating-group-root.svelte.d.ts +4 -0
  535. package/dist/ui/scroll-area/index.d.ts +5 -0
  536. package/dist/ui/scroll-area/index.js +5 -0
  537. package/dist/ui/scroll-area/scroll-area-corner.svelte +7 -0
  538. package/dist/ui/scroll-area/scroll-area-corner.svelte.d.ts +4 -0
  539. package/dist/ui/scroll-area/scroll-area-scrollbar.svelte +19 -0
  540. package/dist/ui/scroll-area/scroll-area-scrollbar.svelte.d.ts +4 -0
  541. package/dist/ui/scroll-area/scroll-area-thumb.svelte +12 -0
  542. package/dist/ui/scroll-area/scroll-area-thumb.svelte.d.ts +4 -0
  543. package/dist/ui/scroll-area/scroll-area-viewport.svelte +12 -0
  544. package/dist/ui/scroll-area/scroll-area-viewport.svelte.d.ts +4 -0
  545. package/dist/ui/scroll-area/scroll-area.svelte +18 -0
  546. package/dist/ui/scroll-area/scroll-area.svelte.d.ts +4 -0
  547. package/dist/ui/select/index.d.ts +6 -0
  548. package/dist/ui/select/index.js +6 -0
  549. package/dist/ui/select/select-content.svelte +25 -0
  550. package/dist/ui/select/select-content.svelte.d.ts +5 -0
  551. package/dist/ui/select/select-item.svelte +17 -0
  552. package/dist/ui/select/select-item.svelte.d.ts +4 -0
  553. package/dist/ui/select/select-trigger.svelte +24 -0
  554. package/dist/ui/select/select-trigger.svelte.d.ts +5 -0
  555. package/dist/ui/select/select-value.svelte +71 -0
  556. package/dist/ui/select/select-value.svelte.d.ts +9 -0
  557. package/dist/ui/separator/index.d.ts +1 -0
  558. package/dist/ui/separator/index.js +1 -0
  559. package/dist/ui/separator/separator.svelte +31 -0
  560. package/dist/ui/separator/separator.svelte.d.ts +8 -0
  561. package/dist/ui/sheet/index.d.ts +2 -0
  562. package/dist/ui/sheet/index.js +5 -0
  563. package/dist/ui/sheet/sheet-content.svelte +41 -0
  564. package/dist/ui/sheet/sheet-content.svelte.d.ts +31 -0
  565. package/dist/ui/skeleton/index.d.ts +1 -0
  566. package/dist/ui/skeleton/index.js +1 -0
  567. package/dist/ui/skeleton/skeleton.svelte +43 -0
  568. package/dist/ui/skeleton/skeleton.svelte.d.ts +27 -0
  569. package/dist/ui/slider/index.d.ts +6 -0
  570. package/dist/ui/slider/index.js +6 -0
  571. package/dist/ui/slider/slider-range.svelte +40 -0
  572. package/dist/ui/slider/slider-range.svelte.d.ts +13 -0
  573. package/dist/ui/slider/slider-root.svelte +29 -0
  574. package/dist/ui/slider/slider-root.svelte.d.ts +4 -0
  575. package/dist/ui/slider/slider-thumb-label.svelte +12 -0
  576. package/dist/ui/slider/slider-thumb-label.svelte.d.ts +4 -0
  577. package/dist/ui/slider/slider-thumb.svelte +15 -0
  578. package/dist/ui/slider/slider-thumb.svelte.d.ts +4 -0
  579. package/dist/ui/slider/slider-tick-label.svelte +12 -0
  580. package/dist/ui/slider/slider-tick-label.svelte.d.ts +4 -0
  581. package/dist/ui/slider/slider-tick.svelte +15 -0
  582. package/dist/ui/slider/slider-tick.svelte.d.ts +4 -0
  583. package/dist/ui/switch/index.d.ts +1 -0
  584. package/dist/ui/switch/index.js +1 -0
  585. package/dist/ui/switch/switch.svelte +36 -0
  586. package/dist/ui/switch/switch.svelte.d.ts +4 -0
  587. package/dist/ui/table/index.d.ts +6 -0
  588. package/dist/ui/table/index.js +6 -0
  589. package/dist/ui/table/table-body.svelte +18 -0
  590. package/dist/ui/table/table-body.svelte.d.ts +9 -0
  591. package/dist/ui/table/table-cell.svelte +26 -0
  592. package/dist/ui/table/table-cell.svelte.d.ts +9 -0
  593. package/dist/ui/table/table-head-cell.svelte +26 -0
  594. package/dist/ui/table/table-head-cell.svelte.d.ts +9 -0
  595. package/dist/ui/table/table-head.svelte +18 -0
  596. package/dist/ui/table/table-head.svelte.d.ts +9 -0
  597. package/dist/ui/table/table-root.svelte +36 -0
  598. package/dist/ui/table/table-root.svelte.d.ts +17 -0
  599. package/dist/ui/table/table-row.svelte +26 -0
  600. package/dist/ui/table/table-row.svelte.d.ts +9 -0
  601. package/dist/ui/tabs/index.d.ts +4 -0
  602. package/dist/ui/tabs/index.js +4 -0
  603. package/dist/ui/tabs/tabs-content.svelte +7 -0
  604. package/dist/ui/tabs/tabs-content.svelte.d.ts +4 -0
  605. package/dist/ui/tabs/tabs-list.svelte +7 -0
  606. package/dist/ui/tabs/tabs-list.svelte.d.ts +4 -0
  607. package/dist/ui/tabs/tabs-trigger.svelte +7 -0
  608. package/dist/ui/tabs/tabs-trigger.svelte.d.ts +4 -0
  609. package/dist/ui/tabs/tabs.svelte +7 -0
  610. package/dist/ui/tabs/tabs.svelte.d.ts +4 -0
  611. package/dist/ui/time-field/index.d.ts +4 -0
  612. package/dist/ui/time-field/index.js +4 -0
  613. package/dist/ui/time-field/time-field-input.svelte +15 -0
  614. package/dist/ui/time-field/time-field-input.svelte.d.ts +4 -0
  615. package/dist/ui/time-field/time-field-label.svelte +8 -0
  616. package/dist/ui/time-field/time-field-label.svelte.d.ts +4 -0
  617. package/dist/ui/time-field/time-field-root.svelte +11 -0
  618. package/dist/ui/time-field/time-field-root.svelte.d.ts +4 -0
  619. package/dist/ui/time-field/time-field-segment.svelte +15 -0
  620. package/dist/ui/time-field/time-field-segment.svelte.d.ts +4 -0
  621. package/dist/ui/time-range-field/index.d.ts +4 -0
  622. package/dist/ui/time-range-field/index.js +4 -0
  623. package/dist/ui/time-range-field/time-range-field-input.svelte +19 -0
  624. package/dist/ui/time-range-field/time-range-field-input.svelte.d.ts +4 -0
  625. package/dist/ui/time-range-field/time-range-field-label.svelte +12 -0
  626. package/dist/ui/time-range-field/time-range-field-label.svelte.d.ts +4 -0
  627. package/dist/ui/time-range-field/time-range-field-root.svelte +13 -0
  628. package/dist/ui/time-range-field/time-range-field-root.svelte.d.ts +4 -0
  629. package/dist/ui/time-range-field/time-range-field-segment.svelte +19 -0
  630. package/dist/ui/time-range-field/time-range-field-segment.svelte.d.ts +3 -0
  631. package/dist/ui/toggle/index.d.ts +1 -0
  632. package/dist/ui/toggle/index.js +1 -0
  633. package/dist/ui/toggle/toggle.svelte +27 -0
  634. package/dist/ui/toggle/toggle.svelte.d.ts +9 -0
  635. package/dist/ui/toggle-group/index.d.ts +2 -0
  636. package/dist/ui/toggle-group/index.js +2 -0
  637. package/dist/ui/toggle-group/toggle-group-item.svelte +17 -0
  638. package/dist/ui/toggle-group/toggle-group-item.svelte.d.ts +4 -0
  639. package/dist/ui/toggle-group/toggle-group-root.svelte +19 -0
  640. package/dist/ui/toggle-group/toggle-group-root.svelte.d.ts +5 -0
  641. package/dist/ui/toolbar/index.d.ts +6 -0
  642. package/dist/ui/toolbar/index.js +6 -0
  643. package/dist/ui/tooltip/index.d.ts +7 -0
  644. package/dist/ui/tooltip/index.js +7 -0
  645. package/dist/ui/tooltip/tooltip-content.svelte +26 -0
  646. package/dist/ui/tooltip/tooltip-content.svelte.d.ts +5 -0
  647. package/dist/ui/tooltip/tooltip-trigger.svelte +7 -0
  648. package/dist/ui/tooltip/tooltip-trigger.svelte.d.ts +4 -0
  649. package/dist/ui/video-player/index.d.ts +1 -0
  650. package/dist/ui/video-player/index.js +1 -0
  651. package/dist/ui/video-player/video-player.svelte +1377 -0
  652. package/dist/ui/video-player/video-player.svelte.d.ts +107 -0
  653. package/dist/utils/index.d.ts +15 -0
  654. package/dist/utils/index.js +24 -0
  655. package/package.json +115 -0
  656. package/readme +127 -0
@@ -0,0 +1,5 @@
1
+ /** Sub-pixel tolerance. Below this, treat values as equal. */
2
+ export declare const TOL = 0.5;
3
+ export declare function flexChildren(el: HTMLElement): HTMLElement[];
4
+ export declare function isFlex(style: CSSStyleDeclaration): boolean;
5
+ export declare function isHorizontalFlex(style: CSSStyleDeclaration): boolean;
@@ -0,0 +1,11 @@
1
+ /** Sub-pixel tolerance. Below this, treat values as equal. */
2
+ export const TOL = 0.5;
3
+ export function flexChildren(el) {
4
+ return [...el.children].filter((c) => c instanceof HTMLElement);
5
+ }
6
+ export function isFlex(style) {
7
+ return style.display === 'flex' || style.display === 'inline-flex';
8
+ }
9
+ export function isHorizontalFlex(style) {
10
+ return isFlex(style) && !style.flexDirection.startsWith('column');
11
+ }
@@ -0,0 +1,2 @@
1
+ import type { Audit } from '../types.js';
2
+ export declare const concentricInset: Audit;
@@ -0,0 +1,33 @@
1
+ import { TOL, flexChildren, isFlex } from './_helpers.js';
2
+ export const concentricInset = {
3
+ id: 'layout/concentric-inset',
4
+ name: 'Concentric vertical inset',
5
+ description: 'In a vertically-centered flex container, each child should sit with equal space above and below. Flags asymmetry greater than 0.5px.',
6
+ category: 'layout',
7
+ severity: 'warn',
8
+ selector: '*',
9
+ check(el) {
10
+ const s = getComputedStyle(el);
11
+ if (!isFlex(s) || !s.alignItems.includes('center'))
12
+ return null;
13
+ const kids = flexChildren(el);
14
+ if (kids.length === 0)
15
+ return null;
16
+ const pR = el.getBoundingClientRect();
17
+ const issues = [];
18
+ for (const k of kids) {
19
+ const kR = k.getBoundingClientRect();
20
+ const top = kR.top - pR.top;
21
+ const bot = pR.bottom - kR.bottom;
22
+ if (Math.abs(top - bot) > TOL) {
23
+ issues.push({
24
+ auditId: 'layout/concentric-inset',
25
+ element: k,
26
+ message: `asymmetric vertical inset: T${top.toFixed(1)} vs B${bot.toFixed(1)}`,
27
+ details: { top, bottom: bot, delta: top - bot }
28
+ });
29
+ }
30
+ }
31
+ return issues.length > 0 ? issues : null;
32
+ }
33
+ };
@@ -0,0 +1,4 @@
1
+ import { concentricInset } from './concentric-inset.js';
2
+ import { uniformSiblingGaps } from './uniform-sibling-gaps.js';
3
+ import { wallMatchesGap } from './wall-matches-gap.js';
4
+ export { concentricInset, uniformSiblingGaps, wallMatchesGap };
@@ -0,0 +1,9 @@
1
+ import { registry } from '../registry.js';
2
+ import { concentricInset } from './concentric-inset.js';
3
+ import { uniformSiblingGaps } from './uniform-sibling-gaps.js';
4
+ import { wallMatchesGap } from './wall-matches-gap.js';
5
+ export { concentricInset, uniformSiblingGaps, wallMatchesGap };
6
+ // Auto-register built-ins. Consumers can still unregister or add their own.
7
+ registry.register(concentricInset);
8
+ registry.register(uniformSiblingGaps);
9
+ registry.register(wallMatchesGap);
@@ -0,0 +1,2 @@
1
+ import type { Audit } from '../types.js';
2
+ export declare const uniformSiblingGaps: Audit;
@@ -0,0 +1,29 @@
1
+ import { TOL, flexChildren, isHorizontalFlex } from './_helpers.js';
2
+ export const uniformSiblingGaps = {
3
+ id: 'layout/uniform-sibling-gaps',
4
+ name: 'Uniform sibling gaps',
5
+ description: 'Horizontal flex siblings should have equal gaps between each adjacent pair. Flags variance greater than 0.5px.',
6
+ category: 'layout',
7
+ severity: 'warn',
8
+ selector: '*',
9
+ check(el) {
10
+ const s = getComputedStyle(el);
11
+ if (!isHorizontalFlex(s))
12
+ return null;
13
+ const kids = flexChildren(el);
14
+ if (kids.length < 3)
15
+ return null;
16
+ const rects = kids.map((k) => k.getBoundingClientRect());
17
+ const gaps = rects.slice(1).map((r, i) => r.left - rects[i].right);
18
+ const min = Math.min(...gaps);
19
+ const max = Math.max(...gaps);
20
+ if (max - min <= TOL)
21
+ return null;
22
+ return {
23
+ auditId: 'layout/uniform-sibling-gaps',
24
+ element: el,
25
+ message: `sibling gaps vary: ${min.toFixed(1)}…${max.toFixed(1)} (Δ ${(max - min).toFixed(1)})`,
26
+ details: { gaps, min, max }
27
+ };
28
+ }
29
+ };
@@ -0,0 +1,2 @@
1
+ import type { Audit } from '../types.js';
2
+ export declare const wallMatchesGap: Audit;
@@ -0,0 +1,30 @@
1
+ import { TOL, flexChildren, isHorizontalFlex } from './_helpers.js';
2
+ export const wallMatchesGap = {
3
+ id: 'layout/wall-matches-gap',
4
+ name: 'Wall padding matches sibling gap',
5
+ description: 'In a horizontal flex container, the left padding (wall to first child) should equal the gap between siblings — the rhythm rule that would have caught the bar/button-group mismatch. Flags delta greater than 0.5px.',
6
+ category: 'layout',
7
+ severity: 'info',
8
+ selector: '*',
9
+ check(el) {
10
+ const s = getComputedStyle(el);
11
+ if (!isHorizontalFlex(s))
12
+ return null;
13
+ const kids = flexChildren(el);
14
+ if (kids.length < 2)
15
+ return null;
16
+ const pR = el.getBoundingClientRect();
17
+ const first = kids[0].getBoundingClientRect();
18
+ const second = kids[1].getBoundingClientRect();
19
+ const wall = first.left - pR.left;
20
+ const gap = second.left - first.right;
21
+ if (Math.abs(wall - gap) <= TOL)
22
+ return null;
23
+ return {
24
+ auditId: 'layout/wall-matches-gap',
25
+ element: el,
26
+ message: `wall ≠ gap: wall=${wall.toFixed(1)} gap=${gap.toFixed(1)}`,
27
+ details: { wall, gap, delta: wall - gap }
28
+ };
29
+ }
30
+ };
@@ -0,0 +1,4 @@
1
+ export type { Audit, AuditCategory, AuditResult, AuditSeverity, Issue } from './types.js';
2
+ export { AuditRegistry, registry } from './registry.js';
3
+ export { runAudits } from './runner.js';
4
+ export * from './audits/index.js';
@@ -0,0 +1,3 @@
1
+ export { AuditRegistry, registry } from './registry.js';
2
+ export { runAudits } from './runner.js';
3
+ export * from './audits/index.js';
@@ -0,0 +1,13 @@
1
+ import type { Audit } from './types.js';
2
+ export declare class AuditRegistry {
3
+ #private;
4
+ constructor();
5
+ register(audit: Audit): void;
6
+ unregister(id: string): void;
7
+ all(): Audit[];
8
+ get(id: string): Audit | undefined;
9
+ isEnabled(id: string): boolean;
10
+ setEnabled(id: string, enabled: boolean): void;
11
+ }
12
+ /** Shared singleton. Import built-in audits via ./audits to auto-register. */
13
+ export declare const registry: AuditRegistry;
@@ -0,0 +1,50 @@
1
+ const STORAGE_KEY = 'era-audit-disabled';
2
+ export class AuditRegistry {
3
+ #audits = new Map();
4
+ #disabled;
5
+ constructor() {
6
+ this.#disabled = new Set(loadDisabled());
7
+ }
8
+ register(audit) {
9
+ if (this.#audits.has(audit.id)) {
10
+ console.warn(`[audit] duplicate id: ${audit.id}`);
11
+ }
12
+ this.#audits.set(audit.id, audit);
13
+ }
14
+ unregister(id) {
15
+ this.#audits.delete(id);
16
+ }
17
+ all() {
18
+ return [...this.#audits.values()];
19
+ }
20
+ get(id) {
21
+ return this.#audits.get(id);
22
+ }
23
+ isEnabled(id) {
24
+ return !this.#disabled.has(id);
25
+ }
26
+ setEnabled(id, enabled) {
27
+ if (enabled)
28
+ this.#disabled.delete(id);
29
+ else
30
+ this.#disabled.add(id);
31
+ saveDisabled(this.#disabled);
32
+ }
33
+ }
34
+ function loadDisabled() {
35
+ if (typeof localStorage === 'undefined')
36
+ return [];
37
+ try {
38
+ return JSON.parse(localStorage.getItem(STORAGE_KEY) ?? '[]');
39
+ }
40
+ catch {
41
+ return [];
42
+ }
43
+ }
44
+ function saveDisabled(disabled) {
45
+ if (typeof localStorage === 'undefined')
46
+ return;
47
+ localStorage.setItem(STORAGE_KEY, JSON.stringify([...disabled]));
48
+ }
49
+ /** Shared singleton. Import built-in audits via ./audits to auto-register. */
50
+ export const registry = new AuditRegistry();
@@ -0,0 +1,3 @@
1
+ import type { AuditResult } from './types.js';
2
+ import type { AuditRegistry } from './registry.js';
3
+ export declare function runAudits(root: HTMLElement, reg: AuditRegistry): AuditResult[];
@@ -0,0 +1,27 @@
1
+ export function runAudits(root, reg) {
2
+ return reg
3
+ .all()
4
+ .filter((a) => reg.isEnabled(a.id))
5
+ .map((audit) => {
6
+ const t0 = performance.now();
7
+ const issues = runOne(audit, root);
8
+ return { audit, issues, durationMs: performance.now() - t0 };
9
+ });
10
+ }
11
+ function runOne(audit, root) {
12
+ if (audit.runAll)
13
+ return audit.runAll(root);
14
+ if (!audit.selector || !audit.check)
15
+ return [];
16
+ const issues = [];
17
+ for (const el of root.querySelectorAll(audit.selector)) {
18
+ const r = audit.check(el);
19
+ if (!r)
20
+ continue;
21
+ if (Array.isArray(r))
22
+ issues.push(...r);
23
+ else
24
+ issues.push(r);
25
+ }
26
+ return issues;
27
+ }
@@ -0,0 +1,28 @@
1
+ export type AuditSeverity = 'info' | 'warn' | 'error';
2
+ export type AuditCategory = 'layout' | 'tokens' | 'a11y' | 'semantics';
3
+ export interface Issue {
4
+ readonly auditId: string;
5
+ readonly element: HTMLElement;
6
+ readonly message: string;
7
+ readonly details?: Record<string, unknown>;
8
+ }
9
+ type CheckResult = Issue | Issue[] | null;
10
+ export interface Audit {
11
+ readonly id: string;
12
+ readonly name: string;
13
+ readonly description: string;
14
+ readonly category: AuditCategory;
15
+ readonly severity: AuditSeverity;
16
+ /** CSS selector for elements the runner iterates. Paired with check(). */
17
+ readonly selector?: string;
18
+ /** Per-element check. Return null to pass, Issue(s) to report. */
19
+ readonly check?: (el: HTMLElement) => CheckResult;
20
+ /** Escape hatch for audits that don't fit selector iteration. */
21
+ readonly runAll?: (root: HTMLElement) => Issue[];
22
+ }
23
+ export interface AuditResult {
24
+ readonly audit: Audit;
25
+ readonly issues: Issue[];
26
+ readonly durationMs: number;
27
+ }
28
+ export {};
@@ -0,0 +1,7 @@
1
+ /*
2
+ * Audit framework types.
3
+ *
4
+ * Design informed by axe-core (rules + metadata + selectors), ESLint (rule
5
+ * meta + severity), and Lighthouse (categorized results, impact levels).
6
+ */
7
+ export {};
@@ -0,0 +1,125 @@
1
+ <script lang="ts">
2
+ import { onMount } from 'svelte';
3
+ import { dev } from '$app/environment';
4
+ import { registry, runAudits, type AuditResult } from './audit/index.js';
5
+
6
+ interface Props {
7
+ /** Scope audits to a subtree. Defaults to document.body. */
8
+ root?: HTMLElement;
9
+ /** Shortcut letter (cmd/ctrl + shift + key). Default: "a". */
10
+ key?: string;
11
+ }
12
+
13
+ let { root, key = 'a' }: Props = $props();
14
+
15
+ let open = $state(false);
16
+ let results = $state<AuditResult[]>([]);
17
+
18
+ // Highlight tracking — restore previous outline when a new element is selected.
19
+ let highlightedEl: HTMLElement | undefined;
20
+ let prevOutline = '';
21
+
22
+ function run() {
23
+ results = runAudits(root ?? document.body, registry);
24
+ }
25
+
26
+ function toggle(id: string, enabled: boolean) {
27
+ registry.setEnabled(id, enabled);
28
+ run();
29
+ }
30
+
31
+ function highlight(el: HTMLElement) {
32
+ if (highlightedEl) highlightedEl.style.outline = prevOutline;
33
+ prevOutline = el.style.outline;
34
+ el.style.outline = '2px solid oklch(0.7 0.3 330)';
35
+ el.scrollIntoView({ behavior: 'smooth', block: 'center' });
36
+ highlightedEl = el;
37
+ }
38
+
39
+ function onKey(e: KeyboardEvent) {
40
+ if ((e.metaKey || e.ctrlKey) && e.shiftKey && e.key.toLowerCase() === key) {
41
+ e.preventDefault();
42
+ open = !open;
43
+ if (open) run();
44
+ }
45
+ }
46
+
47
+ onMount(() => {
48
+ window.addEventListener('keydown', onKey);
49
+ return () => {
50
+ window.removeEventListener('keydown', onKey);
51
+ if (highlightedEl) highlightedEl.style.outline = prevOutline;
52
+ };
53
+ });
54
+
55
+ let totalIssues = $derived(results.reduce((n, r) => n + r.issues.length, 0));
56
+
57
+ const isMac = typeof navigator !== 'undefined' && navigator.platform.includes('Mac');
58
+ </script>
59
+
60
+ {#if dev && open}
61
+ <div
62
+ class="fixed right-4 bottom-4 z-50 flex max-h-[70vh] w-96 flex-col overflow-hidden rounded-(--era-rd-md) bg-surface font-mono text-body shadow-[inset_0_0_0_0.5px_var(--color-border),var(--era-shadow)]"
63
+ >
64
+ <header
65
+ class="flex items-center gap-(--era-xs-inset-sm) px-(--era-inset-sm) py-(--era-gap) shadow-[inset_0_-0.5px_0_0_var(--color-border)]"
66
+ >
67
+ <strong class="text-bright">audits</strong>
68
+ <span class="text-muted">
69
+ {totalIssues} issue{totalIssues === 1 ? '' : 's'}
70
+ </span>
71
+ <button class="ml-auto text-muted hover:text-bright" onclick={run} aria-label="Re-run audits"
72
+ >↻</button
73
+ >
74
+ <button class="text-muted hover:text-bright" onclick={() => (open = false)} aria-label="Close"
75
+ >×</button
76
+ >
77
+ </header>
78
+
79
+ <div class="overflow-auto">
80
+ {#each results as r (r.audit.id)}
81
+ {@const enabled = registry.isEnabled(r.audit.id)}
82
+ <details open={r.issues.length > 0}>
83
+ <summary
84
+ class="flex cursor-pointer items-center gap-(--era-xs-inset-sm) px-(--era-inset-sm) py-(--era-gap) hover:bg-(--era-highlight)"
85
+ >
86
+ <input
87
+ type="checkbox"
88
+ checked={enabled}
89
+ onclick={(e) => e.stopPropagation()}
90
+ onchange={(e) => toggle(r.audit.id, e.currentTarget.checked)}
91
+ />
92
+ <span class="flex-1 text-fg">{r.audit.name}</span>
93
+ <span class={r.issues.length > 0 ? 'text-destructive' : 'text-muted'}>
94
+ {r.issues.length}
95
+ </span>
96
+ </summary>
97
+ {#if r.issues.length === 0}
98
+ <p class="px-(--era-inset-sm) py-(--era-gap) text-muted">
99
+ {r.audit.description}
100
+ </p>
101
+ {:else}
102
+ {#each r.issues as issue, i (i)}
103
+ <button
104
+ class="flex w-full items-start gap-(--era-xs-inset-sm) px-(--era-inset-sm) py-(--era-gap) text-left hover:bg-(--era-highlight)"
105
+ onclick={() => highlight(issue.element)}
106
+ >
107
+ <span class="text-destructive">●</span>
108
+ <span class="text-fg">{issue.message}</span>
109
+ </button>
110
+ {/each}
111
+ {/if}
112
+ </details>
113
+ {/each}
114
+ </div>
115
+
116
+ <footer
117
+ class="flex items-center gap-(--era-gap) px-(--era-inset-sm) py-(--era-gap) text-muted shadow-[inset_0_0.5px_0_0_var(--color-border)]"
118
+ >
119
+ <kbd class="rounded-(--era-rd-xs) bg-hover px-(--era-inset-sm) text-fg">
120
+ {isMac ? '⌘' : 'ctrl'}⇧{key.toUpperCase()}
121
+ </kbd>
122
+ <span>toggle</span>
123
+ </footer>
124
+ </div>
125
+ {/if}
@@ -0,0 +1,9 @@
1
+ interface Props {
2
+ /** Scope audits to a subtree. Defaults to document.body. */
3
+ root?: HTMLElement;
4
+ /** Shortcut letter (cmd/ctrl + shift + key). Default: "a". */
5
+ key?: string;
6
+ }
7
+ declare const AuditOverlay: import("svelte").Component<Props, {}, "">;
8
+ type AuditOverlay = ReturnType<typeof AuditOverlay>;
9
+ export default AuditOverlay;
@@ -0,0 +1,2 @@
1
+ export * from './audit/index.js';
2
+ export { default as AuditOverlay } from './audit-overlay.svelte';
@@ -0,0 +1,2 @@
1
+ export * from './audit/index.js';
2
+ export { default as AuditOverlay } from './audit-overlay.svelte';
@@ -0,0 +1,18 @@
1
+ ## Usage
2
+
3
+ ```svelte
4
+ <script>
5
+ import { Badge } from '$lib/ui/badge';
6
+ </script>
7
+
8
+ <Badge>draft</Badge>
9
+ <Badge tone="accent">new</Badge>
10
+ <Badge tone="success">passing</Badge>
11
+ <Badge tone="destructive">failing</Badge>
12
+ ```
13
+
14
+ ## Notes
15
+
16
+ - Non-interactive. For dismissible tokens use `Chip`. For labelled pairs use `KV`.
17
+ - Uses the `xxs` tier tokens (height, radius, inset).
18
+ - Inter-icon gap tightens to `--era-inset-xxs` when an SVG is present.
@@ -0,0 +1,58 @@
1
+ # Bits UI leverage audit
2
+
3
+ _Date: 2026-04-22_
4
+
5
+ ## High-level status
6
+
7
+ Era UI already wraps most of the major Bits UI primitives (accordion, dialog, menus, date/time fields, calendar/date pickers, command, select/combobox, etc.).
8
+
9
+ ## Components that are **custom-only** today
10
+
11
+ These directories currently do not import `bits-ui` and are intentionally custom presentation components:
12
+
13
+ - `badge`
14
+ - `bar`
15
+ - `button-group`
16
+ - `card`
17
+ - `chip`
18
+ - `code-block`
19
+ - `file-upload`
20
+ - `input`
21
+ - `kv`
22
+ - `mode`
23
+ - `skeleton`
24
+ - `table`
25
+
26
+ ### Which of these are likely fine as custom components
27
+
28
+ No direct Bits UI primitive exists for these semantic/presentational pieces:
29
+
30
+ - `badge`, `bar`, `button-group`, `card`, `chip`, `code-block`, `kv`, `mode`, `skeleton`, `table`
31
+
32
+ ### One likely improvement area
33
+
34
+ - `input` can stay native for simple text input, but if you want richer semantics and stronger consistency with the rest of the library, consider introducing wrappers around Bits UI field-family components (`DateField`, `TimeField`, etc.) as your recommended form surface. This is more of a product/design-system choice than a correctness gap.
35
+
36
+ - `file-upload` has no first-class Bits UI file-upload primitive, so your custom drag/drop implementation is expected.
37
+
38
+ ## Bits UI primitives available but not wrapped yet
39
+
40
+ Bits UI currently exposes additional primitives that are not represented in `src/lib/ui` yet:
41
+
42
+ - `avatar`
43
+ - `collapsible`
44
+ - `link-preview`
45
+ - `menu`
46
+ - `navigation-menu`
47
+ - `range-calendar`
48
+ - `rating-group`
49
+ - `toggle-group`
50
+ - `toolbar`
51
+
52
+ If your design system roadmap includes any of those UX patterns, adding wrappers would be the main way to “take fuller advantage” of Bits UI from where the repo is today.
53
+
54
+ ## Practical recommendations
55
+
56
+ 1. **Prioritize wrappers with immediate UX value**: `avatar`, `collapsible`, `toggle-group`, `toolbar`.
57
+ 2. **Document intentional non-Bits components** (`card`, `badge`, `table`, `skeleton`) so contributors know these are design primitives, not missing migrations.
58
+ 3. **Keep custom `file-upload`** unless Bits UI adds a dedicated primitive later.
@@ -0,0 +1,18 @@
1
+ ## Usage
2
+
3
+ ```svelte
4
+ <script>
5
+ import { Button } from '$lib/ui/button';
6
+ </script>
7
+
8
+ <Button onclick={() => console.log('clicked')}>Save</Button>
9
+ <Button tone="accent" size="sm">Confirm</Button>
10
+ <Button tone="destructive" variant="link">Delete</Button>
11
+ <Button icon size="icon" aria-label="Close"><X /></Button>
12
+ ```
13
+
14
+ ## Notes
15
+
16
+ - Heights, radii, paddings, and gaps come from density tokens — never hard-code px.
17
+ - `link` variant intentionally does not change color on hover (underline only) so it reads as static prose until confirmed interactive.
18
+ - For a segmented row of buttons, use `ButtonGroup`.
@@ -0,0 +1,20 @@
1
+ ## Usage
2
+
3
+ ```svelte
4
+ <script>
5
+ import { Chip } from '$lib/ui/chip';
6
+
7
+ let tags = $state(['alpha', 'beta', 'gamma']);
8
+ </script>
9
+
10
+ {#each tags as tag}
11
+ <Chip ondismiss={() => (tags = tags.filter((t) => t !== tag))}>
12
+ {tag}
13
+ </Chip>
14
+ {/each}
15
+ ```
16
+
17
+ ## Notes
18
+
19
+ - Internal pointerdown/up events on the dismiss button are stopped from bubbling — this prevents accidental toggling when a Chip is nested inside a Select/Popover trigger.
20
+ - Uses the `xxs` tier tokens (height, radius, inset). Part of the Badge/Chip/KV "tag" family.
@@ -0,0 +1,8 @@
1
+ import type { ComponentEntry } from '../../routes/registry.js';
2
+ import type { RootExport, SubExport } from './component-source-scanners.js';
3
+ export interface ComponentDocSources {
4
+ rootExports: Record<string, RootExport>;
5
+ subExportsBySlug: Record<string, SubExport[]>;
6
+ svelteBySlug: Record<string, Record<string, string>>;
7
+ }
8
+ export declare function buildComponentDocFromSources(entry: ComponentEntry, sources: ComponentDocSources, appendix?: string): string;
@@ -0,0 +1,72 @@
1
+ import { extractProps } from './extract-props.js';
2
+ export function buildComponentDocFromSources(entry, sources, appendix) {
3
+ const { slug, name, description } = entry;
4
+ const root = sources.rootExports[slug];
5
+ const lines = [`# ${name}`, '', description, ''];
6
+ if (!root) {
7
+ if (appendix) {
8
+ const trimmed = stripRedundantHeader(appendix).trim();
9
+ if (trimmed)
10
+ lines.push(trimmed, '');
11
+ }
12
+ return lines.join('\n');
13
+ }
14
+ lines.push('## Import', '', '```ts', `import { ${root.alias} } from "$lib/ui/${slug}";`, '```', '');
15
+ const subs = sources.subExportsBySlug[slug] ?? [];
16
+ const files = sources.svelteBySlug[slug] ?? {};
17
+ if (root.kind === 'namespace') {
18
+ lines.push('Composed from sub-components — compose explicitly at the call site:', '', ...subs.map((s) => `- \`${root.alias}.${s.name}\``), '');
19
+ for (const sub of subs) {
20
+ lines.push(`## ${root.alias}.${sub.name}`, '');
21
+ if (sub.source.kind === 'passthrough') {
22
+ lines.push(`Re-exports \`${sub.source.ref}\` directly — see [bits-ui docs](https://bits-ui.com) for its full API.`, '');
23
+ continue;
24
+ }
25
+ const spec = extractProps(files[sub.source.file] ?? '');
26
+ lines.push(...renderPropsSection(spec));
27
+ }
28
+ }
29
+ else {
30
+ const sub = subs.find((s) => s.source.kind === 'file');
31
+ const file = sub && sub.source.kind === 'file' ? sub.source.file : `${slug}.svelte`;
32
+ const spec = extractProps(files[file] ?? '');
33
+ lines.push('## Props', '');
34
+ lines.push(...renderPropsSection(spec));
35
+ }
36
+ if (appendix) {
37
+ const trimmed = stripRedundantHeader(appendix).trim();
38
+ if (trimmed)
39
+ lines.push(trimmed, '');
40
+ }
41
+ return lines.join('\n');
42
+ }
43
+ function renderPropsSection(spec) {
44
+ if (!spec)
45
+ return ['_Props could not be parsed from source._', ''];
46
+ const out = [];
47
+ for (const inh of spec.inherits) {
48
+ out.push(`Inherits all props from \`${inh}\`.`);
49
+ }
50
+ if (spec.inherits.length)
51
+ out.push('');
52
+ if (!spec.props.length) {
53
+ if (!spec.inherits.length)
54
+ out.push('_No wrapper-specific props._', '');
55
+ return out;
56
+ }
57
+ out.push('| Prop | Type | Default | Notes |');
58
+ out.push('|------|------|---------|-------|');
59
+ for (const p of spec.props) {
60
+ const notes = [p.bindable ? 'bindable' : '', p.description ?? ''].filter(Boolean).join(' — ');
61
+ out.push(`| \`${p.name}${p.optional ? '?' : ''}\` | ${fmtCode(p.type)} | ${p.default !== undefined ? fmtCode(p.default) : '—'} | ${notes || '—'} |`);
62
+ }
63
+ out.push('');
64
+ return out;
65
+ }
66
+ function fmtCode(s) {
67
+ const normalized = s.replace(/\s+/g, ' ').trim().replace(/\|/g, '\\|');
68
+ return `\`${normalized}\``;
69
+ }
70
+ function stripRedundantHeader(md) {
71
+ return md.replace(/^#\s+[^\n]+\n+/, '');
72
+ }
@@ -0,0 +1,2 @@
1
+ import type { ComponentEntry } from '../../routes/registry.js';
2
+ export declare function buildComponentDoc(entry: ComponentEntry, appendix?: string): string;