@poodle64/ui 2026.8.7

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 (387) hide show
  1. package/README.md +624 -0
  2. package/dist/components/ui/alert/alert-description.svelte +23 -0
  3. package/dist/components/ui/alert/alert-description.svelte.d.ts +9 -0
  4. package/dist/components/ui/alert/alert-title.svelte +23 -0
  5. package/dist/components/ui/alert/alert-title.svelte.d.ts +9 -0
  6. package/dist/components/ui/alert/alert.svelte +46 -0
  7. package/dist/components/ui/alert/alert.svelte.d.ts +28 -0
  8. package/dist/components/ui/alert/index.d.ts +4 -0
  9. package/dist/components/ui/alert/index.js +4 -0
  10. package/dist/components/ui/alert-dialog/alert-dialog-action.svelte +27 -0
  11. package/dist/components/ui/alert-dialog/alert-dialog-action.svelte.d.ts +9 -0
  12. package/dist/components/ui/alert-dialog/alert-dialog-cancel.svelte +27 -0
  13. package/dist/components/ui/alert-dialog/alert-dialog-cancel.svelte.d.ts +9 -0
  14. package/dist/components/ui/alert-dialog/alert-dialog-content.svelte +39 -0
  15. package/dist/components/ui/alert-dialog/alert-dialog-content.svelte.d.ts +11 -0
  16. package/dist/components/ui/alert-dialog/alert-dialog-description.svelte +20 -0
  17. package/dist/components/ui/alert-dialog/alert-dialog-description.svelte.d.ts +4 -0
  18. package/dist/components/ui/alert-dialog/alert-dialog-footer.svelte +23 -0
  19. package/dist/components/ui/alert-dialog/alert-dialog-footer.svelte.d.ts +5 -0
  20. package/dist/components/ui/alert-dialog/alert-dialog-header.svelte +23 -0
  21. package/dist/components/ui/alert-dialog/alert-dialog-header.svelte.d.ts +5 -0
  22. package/dist/components/ui/alert-dialog/alert-dialog-media.svelte +23 -0
  23. package/dist/components/ui/alert-dialog/alert-dialog-media.svelte.d.ts +5 -0
  24. package/dist/components/ui/alert-dialog/alert-dialog-overlay.svelte +20 -0
  25. package/dist/components/ui/alert-dialog/alert-dialog-overlay.svelte.d.ts +4 -0
  26. package/dist/components/ui/alert-dialog/alert-dialog-portal.svelte +7 -0
  27. package/dist/components/ui/alert-dialog/alert-dialog-portal.svelte.d.ts +3 -0
  28. package/dist/components/ui/alert-dialog/alert-dialog-title.svelte +20 -0
  29. package/dist/components/ui/alert-dialog/alert-dialog-title.svelte.d.ts +4 -0
  30. package/dist/components/ui/alert-dialog/alert-dialog-trigger.svelte +7 -0
  31. package/dist/components/ui/alert-dialog/alert-dialog-trigger.svelte.d.ts +4 -0
  32. package/dist/components/ui/alert-dialog/alert-dialog.svelte +7 -0
  33. package/dist/components/ui/alert-dialog/alert-dialog.svelte.d.ts +3 -0
  34. package/dist/components/ui/alert-dialog/index.d.ts +13 -0
  35. package/dist/components/ui/alert-dialog/index.js +15 -0
  36. package/dist/components/ui/app-dialog/app-dialog.svelte +111 -0
  37. package/dist/components/ui/app-dialog/app-dialog.svelte.d.ts +41 -0
  38. package/dist/components/ui/app-dialog/index.d.ts +2 -0
  39. package/dist/components/ui/app-dialog/index.js +2 -0
  40. package/dist/components/ui/app-shell/app-nav.svelte +299 -0
  41. package/dist/components/ui/app-shell/app-nav.svelte.d.ts +22 -0
  42. package/dist/components/ui/app-shell/app-shell.svelte +675 -0
  43. package/dist/components/ui/app-shell/app-shell.svelte.d.ts +157 -0
  44. package/dist/components/ui/app-shell/index.d.ts +6 -0
  45. package/dist/components/ui/app-shell/index.js +6 -0
  46. package/dist/components/ui/app-shell/measure.d.ts +28 -0
  47. package/dist/components/ui/app-shell/measure.js +21 -0
  48. package/dist/components/ui/app-shell/texture.d.ts +32 -0
  49. package/dist/components/ui/app-shell/texture.js +27 -0
  50. package/dist/components/ui/app-shell/types.d.ts +134 -0
  51. package/dist/components/ui/app-shell/types.js +88 -0
  52. package/dist/components/ui/arc-gauge/arc-gauge.svelte +112 -0
  53. package/dist/components/ui/arc-gauge/arc-gauge.svelte.d.ts +15 -0
  54. package/dist/components/ui/arc-gauge/index.d.ts +3 -0
  55. package/dist/components/ui/arc-gauge/index.js +2 -0
  56. package/dist/components/ui/avatar/avatar-fallback.svelte +26 -0
  57. package/dist/components/ui/avatar/avatar-fallback.svelte.d.ts +4 -0
  58. package/dist/components/ui/avatar/avatar-image.svelte +17 -0
  59. package/dist/components/ui/avatar/avatar-image.svelte.d.ts +4 -0
  60. package/dist/components/ui/avatar/avatar.svelte +31 -0
  61. package/dist/components/ui/avatar/avatar.svelte.d.ts +4 -0
  62. package/dist/components/ui/avatar/index.d.ts +4 -0
  63. package/dist/components/ui/avatar/index.js +6 -0
  64. package/dist/components/ui/badge/badge.svelte +50 -0
  65. package/dist/components/ui/badge/badge.svelte.d.ts +38 -0
  66. package/dist/components/ui/badge/index.d.ts +2 -0
  67. package/dist/components/ui/badge/index.js +2 -0
  68. package/dist/components/ui/bar-row/bar-row.svelte +42 -0
  69. package/dist/components/ui/bar-row/bar-row.svelte.d.ts +12 -0
  70. package/dist/components/ui/bar-row/index.d.ts +2 -0
  71. package/dist/components/ui/bar-row/index.js +2 -0
  72. package/dist/components/ui/button/button.svelte +89 -0
  73. package/dist/components/ui/button/button.svelte.d.ts +70 -0
  74. package/dist/components/ui/button/index.d.ts +2 -0
  75. package/dist/components/ui/button/index.js +4 -0
  76. package/dist/components/ui/card/card-action.svelte +23 -0
  77. package/dist/components/ui/card/card-action.svelte.d.ts +5 -0
  78. package/dist/components/ui/card/card-content.svelte +20 -0
  79. package/dist/components/ui/card/card-content.svelte.d.ts +5 -0
  80. package/dist/components/ui/card/card-description.svelte +20 -0
  81. package/dist/components/ui/card/card-description.svelte.d.ts +5 -0
  82. package/dist/components/ui/card/card-footer.svelte +23 -0
  83. package/dist/components/ui/card/card-footer.svelte.d.ts +5 -0
  84. package/dist/components/ui/card/card-header.svelte +23 -0
  85. package/dist/components/ui/card/card-header.svelte.d.ts +5 -0
  86. package/dist/components/ui/card/card-title.svelte +52 -0
  87. package/dist/components/ui/card/card-title.svelte.d.ts +8 -0
  88. package/dist/components/ui/card/card.svelte +25 -0
  89. package/dist/components/ui/card/card.svelte.d.ts +8 -0
  90. package/dist/components/ui/card/index.d.ts +8 -0
  91. package/dist/components/ui/card/index.js +10 -0
  92. package/dist/components/ui/checkbox/checkbox.svelte +36 -0
  93. package/dist/components/ui/checkbox/checkbox.svelte.d.ts +8 -0
  94. package/dist/components/ui/checkbox/index.d.ts +2 -0
  95. package/dist/components/ui/checkbox/index.js +2 -0
  96. package/dist/components/ui/command/command-dialog.svelte +42 -0
  97. package/dist/components/ui/command/command-dialog.svelte.d.ts +14 -0
  98. package/dist/components/ui/command/command-empty.svelte +17 -0
  99. package/dist/components/ui/command/command-empty.svelte.d.ts +4 -0
  100. package/dist/components/ui/command/command-group.svelte +33 -0
  101. package/dist/components/ui/command/command-group.svelte.d.ts +7 -0
  102. package/dist/components/ui/command/command-input.svelte +36 -0
  103. package/dist/components/ui/command/command-input.svelte.d.ts +4 -0
  104. package/dist/components/ui/command/command-item.svelte +27 -0
  105. package/dist/components/ui/command/command-item.svelte.d.ts +4 -0
  106. package/dist/components/ui/command/command-link-item.svelte +20 -0
  107. package/dist/components/ui/command/command-link-item.svelte.d.ts +4 -0
  108. package/dist/components/ui/command/command-list.svelte +20 -0
  109. package/dist/components/ui/command/command-list.svelte.d.ts +4 -0
  110. package/dist/components/ui/command/command-loading.svelte +7 -0
  111. package/dist/components/ui/command/command-loading.svelte.d.ts +4 -0
  112. package/dist/components/ui/command/command-separator.svelte +17 -0
  113. package/dist/components/ui/command/command-separator.svelte.d.ts +4 -0
  114. package/dist/components/ui/command/command-shortcut.svelte +23 -0
  115. package/dist/components/ui/command/command-shortcut.svelte.d.ts +5 -0
  116. package/dist/components/ui/command/command.svelte +28 -0
  117. package/dist/components/ui/command/command.svelte.d.ts +8 -0
  118. package/dist/components/ui/command/index.d.ts +12 -0
  119. package/dist/components/ui/command/index.js +14 -0
  120. package/dist/components/ui/command-palette/command-palette.svelte +94 -0
  121. package/dist/components/ui/command-palette/command-palette.svelte.d.ts +40 -0
  122. package/dist/components/ui/command-palette/index.d.ts +3 -0
  123. package/dist/components/ui/command-palette/index.js +2 -0
  124. package/dist/components/ui/context-column/context-column.svelte +56 -0
  125. package/dist/components/ui/context-column/context-column.svelte.d.ts +14 -0
  126. package/dist/components/ui/context-column/index.d.ts +2 -0
  127. package/dist/components/ui/context-column/index.js +2 -0
  128. package/dist/components/ui/data-table/data-table.svelte.d.ts +40 -0
  129. package/dist/components/ui/data-table/data-table.svelte.js +110 -0
  130. package/dist/components/ui/data-table/flex-render.svelte +40 -0
  131. package/dist/components/ui/data-table/flex-render.svelte.d.ts +33 -0
  132. package/dist/components/ui/data-table/index.d.ts +3 -0
  133. package/dist/components/ui/data-table/index.js +3 -0
  134. package/dist/components/ui/data-table/render-helpers.d.ts +90 -0
  135. package/dist/components/ui/data-table/render-helpers.js +99 -0
  136. package/dist/components/ui/data-table-tanstack/data-table-tanstack.svelte +247 -0
  137. package/dist/components/ui/data-table-tanstack/data-table-tanstack.svelte.d.ts +79 -0
  138. package/dist/components/ui/data-table-tanstack/index.d.ts +3 -0
  139. package/dist/components/ui/data-table-tanstack/index.js +2 -0
  140. package/dist/components/ui/data-table-toolbar/data-table-toolbar.svelte +102 -0
  141. package/dist/components/ui/data-table-toolbar/data-table-toolbar.svelte.d.ts +32 -0
  142. package/dist/components/ui/data-table-toolbar/index.d.ts +3 -0
  143. package/dist/components/ui/data-table-toolbar/index.js +2 -0
  144. package/dist/components/ui/detail-panel/detail-panel.svelte +95 -0
  145. package/dist/components/ui/detail-panel/detail-panel.svelte.d.ts +26 -0
  146. package/dist/components/ui/detail-panel/index.d.ts +2 -0
  147. package/dist/components/ui/detail-panel/index.js +2 -0
  148. package/dist/components/ui/dialog/dialog-close.svelte +11 -0
  149. package/dist/components/ui/dialog/dialog-close.svelte.d.ts +4 -0
  150. package/dist/components/ui/dialog/dialog-content.svelte +48 -0
  151. package/dist/components/ui/dialog/dialog-content.svelte.d.ts +13 -0
  152. package/dist/components/ui/dialog/dialog-description.svelte +20 -0
  153. package/dist/components/ui/dialog/dialog-description.svelte.d.ts +4 -0
  154. package/dist/components/ui/dialog/dialog-footer.svelte +35 -0
  155. package/dist/components/ui/dialog/dialog-footer.svelte.d.ts +8 -0
  156. package/dist/components/ui/dialog/dialog-header.svelte +20 -0
  157. package/dist/components/ui/dialog/dialog-header.svelte.d.ts +5 -0
  158. package/dist/components/ui/dialog/dialog-overlay.svelte +20 -0
  159. package/dist/components/ui/dialog/dialog-overlay.svelte.d.ts +4 -0
  160. package/dist/components/ui/dialog/dialog-portal.svelte +7 -0
  161. package/dist/components/ui/dialog/dialog-portal.svelte.d.ts +3 -0
  162. package/dist/components/ui/dialog/dialog-title.svelte +17 -0
  163. package/dist/components/ui/dialog/dialog-title.svelte.d.ts +4 -0
  164. package/dist/components/ui/dialog/dialog-trigger.svelte +11 -0
  165. package/dist/components/ui/dialog/dialog-trigger.svelte.d.ts +4 -0
  166. package/dist/components/ui/dialog/dialog.svelte +7 -0
  167. package/dist/components/ui/dialog/dialog.svelte.d.ts +3 -0
  168. package/dist/components/ui/dialog/index.d.ts +11 -0
  169. package/dist/components/ui/dialog/index.js +13 -0
  170. package/dist/components/ui/dialog-section/dialog-section.svelte +20 -0
  171. package/dist/components/ui/dialog-section/dialog-section.svelte.d.ts +8 -0
  172. package/dist/components/ui/dialog-section/index.d.ts +2 -0
  173. package/dist/components/ui/dialog-section/index.js +2 -0
  174. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte +16 -0
  175. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte.d.ts +4 -0
  176. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +44 -0
  177. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +9 -0
  178. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +31 -0
  179. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte.d.ts +10 -0
  180. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +22 -0
  181. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +8 -0
  182. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte +7 -0
  183. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte.d.ts +4 -0
  184. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +27 -0
  185. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +8 -0
  186. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +27 -0
  187. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte.d.ts +8 -0
  188. package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte +7 -0
  189. package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte.d.ts +3 -0
  190. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +16 -0
  191. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +4 -0
  192. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +34 -0
  193. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +4 -0
  194. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +17 -0
  195. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte.d.ts +4 -0
  196. package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte +23 -0
  197. package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte.d.ts +5 -0
  198. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +20 -0
  199. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +4 -0
  200. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +29 -0
  201. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +7 -0
  202. package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte +7 -0
  203. package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte.d.ts +3 -0
  204. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +7 -0
  205. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte.d.ts +4 -0
  206. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +7 -0
  207. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte.d.ts +3 -0
  208. package/dist/components/ui/dropdown-menu/index.d.ts +18 -0
  209. package/dist/components/ui/dropdown-menu/index.js +18 -0
  210. package/dist/components/ui/empty-state/empty-state.svelte +44 -0
  211. package/dist/components/ui/empty-state/empty-state.svelte.d.ts +14 -0
  212. package/dist/components/ui/empty-state/index.d.ts +2 -0
  213. package/dist/components/ui/empty-state/index.js +2 -0
  214. package/dist/components/ui/error-state/error-state.svelte +52 -0
  215. package/dist/components/ui/error-state/error-state.svelte.d.ts +10 -0
  216. package/dist/components/ui/error-state/index.d.ts +2 -0
  217. package/dist/components/ui/error-state/index.js +2 -0
  218. package/dist/components/ui/info-tip/index.d.ts +2 -0
  219. package/dist/components/ui/info-tip/index.js +2 -0
  220. package/dist/components/ui/info-tip/info-tip.svelte +37 -0
  221. package/dist/components/ui/info-tip/info-tip.svelte.d.ts +10 -0
  222. package/dist/components/ui/input/index.d.ts +2 -0
  223. package/dist/components/ui/input/index.js +4 -0
  224. package/dist/components/ui/input/input.svelte +48 -0
  225. package/dist/components/ui/input/input.svelte.d.ts +13 -0
  226. package/dist/components/ui/input-group/index.d.ts +7 -0
  227. package/dist/components/ui/input-group/index.js +9 -0
  228. package/dist/components/ui/input-group/input-group-addon.svelte +53 -0
  229. package/dist/components/ui/input-group/input-group-addon.svelte.d.ts +32 -0
  230. package/dist/components/ui/input-group/input-group-button.svelte +49 -0
  231. package/dist/components/ui/input-group/input-group-button.svelte.d.ts +32 -0
  232. package/dist/components/ui/input-group/input-group-input.svelte +23 -0
  233. package/dist/components/ui/input-group/input-group-input.svelte.d.ts +11 -0
  234. package/dist/components/ui/input-group/input-group-text.svelte +22 -0
  235. package/dist/components/ui/input-group/input-group-text.svelte.d.ts +5 -0
  236. package/dist/components/ui/input-group/input-group-textarea.svelte +23 -0
  237. package/dist/components/ui/input-group/input-group-textarea.svelte.d.ts +3 -0
  238. package/dist/components/ui/input-group/input-group.svelte +24 -0
  239. package/dist/components/ui/input-group/input-group.svelte.d.ts +5 -0
  240. package/dist/components/ui/label/index.d.ts +2 -0
  241. package/dist/components/ui/label/index.js +4 -0
  242. package/dist/components/ui/label/label.svelte +20 -0
  243. package/dist/components/ui/label/label.svelte.d.ts +4 -0
  244. package/dist/components/ui/loading-state/index.d.ts +2 -0
  245. package/dist/components/ui/loading-state/index.js +2 -0
  246. package/dist/components/ui/loading-state/loading-state.svelte +28 -0
  247. package/dist/components/ui/loading-state/loading-state.svelte.d.ts +8 -0
  248. package/dist/components/ui/page-header/index.d.ts +2 -0
  249. package/dist/components/ui/page-header/index.js +2 -0
  250. package/dist/components/ui/page-header/page-header.svelte +100 -0
  251. package/dist/components/ui/page-header/page-header.svelte.d.ts +17 -0
  252. package/dist/components/ui/panel/index.d.ts +2 -0
  253. package/dist/components/ui/panel/index.js +2 -0
  254. package/dist/components/ui/panel/panel.svelte +54 -0
  255. package/dist/components/ui/panel/panel.svelte.d.ts +16 -0
  256. package/dist/components/ui/password-input/index.d.ts +2 -0
  257. package/dist/components/ui/password-input/index.js +4 -0
  258. package/dist/components/ui/password-input/password-input.svelte +48 -0
  259. package/dist/components/ui/password-input/password-input.svelte.d.ts +8 -0
  260. package/dist/components/ui/popover/index.d.ts +4 -0
  261. package/dist/components/ui/popover/index.js +6 -0
  262. package/dist/components/ui/popover/popover-content.svelte +45 -0
  263. package/dist/components/ui/popover/popover-content.svelte.d.ts +7 -0
  264. package/dist/components/ui/popover/popover-trigger.svelte +7 -0
  265. package/dist/components/ui/popover/popover-trigger.svelte.d.ts +4 -0
  266. package/dist/components/ui/popover/popover.svelte +7 -0
  267. package/dist/components/ui/popover/popover.svelte.d.ts +3 -0
  268. package/dist/components/ui/progress/index.d.ts +2 -0
  269. package/dist/components/ui/progress/index.js +4 -0
  270. package/dist/components/ui/progress/progress.svelte +30 -0
  271. package/dist/components/ui/progress/progress.svelte.d.ts +4 -0
  272. package/dist/components/ui/scorecard/index.d.ts +2 -0
  273. package/dist/components/ui/scorecard/index.js +2 -0
  274. package/dist/components/ui/scorecard/scorecard.svelte +35 -0
  275. package/dist/components/ui/scorecard/scorecard.svelte.d.ts +8 -0
  276. package/dist/components/ui/select/index.d.ts +12 -0
  277. package/dist/components/ui/select/index.js +14 -0
  278. package/dist/components/ui/select/select-content.svelte +45 -0
  279. package/dist/components/ui/select/select-content.svelte.d.ts +11 -0
  280. package/dist/components/ui/select/select-group-heading.svelte +21 -0
  281. package/dist/components/ui/select/select-group-heading.svelte.d.ts +10 -0
  282. package/dist/components/ui/select/select-group.svelte +17 -0
  283. package/dist/components/ui/select/select-group.svelte.d.ts +4 -0
  284. package/dist/components/ui/select/select-item.svelte +38 -0
  285. package/dist/components/ui/select/select-item.svelte.d.ts +4 -0
  286. package/dist/components/ui/select/select-label.svelte +20 -0
  287. package/dist/components/ui/select/select-label.svelte.d.ts +6 -0
  288. package/dist/components/ui/select/select-portal.svelte +7 -0
  289. package/dist/components/ui/select/select-portal.svelte.d.ts +3 -0
  290. package/dist/components/ui/select/select-scroll-down-button.svelte +23 -0
  291. package/dist/components/ui/select/select-scroll-down-button.svelte.d.ts +4 -0
  292. package/dist/components/ui/select/select-scroll-up-button.svelte +23 -0
  293. package/dist/components/ui/select/select-scroll-up-button.svelte.d.ts +4 -0
  294. package/dist/components/ui/select/select-separator.svelte +18 -0
  295. package/dist/components/ui/select/select-separator.svelte.d.ts +4 -0
  296. package/dist/components/ui/select/select-trigger.svelte +29 -0
  297. package/dist/components/ui/select/select-trigger.svelte.d.ts +8 -0
  298. package/dist/components/ui/select/select.svelte +11 -0
  299. package/dist/components/ui/select/select.svelte.d.ts +3 -0
  300. package/dist/components/ui/separator/index.d.ts +2 -0
  301. package/dist/components/ui/separator/index.js +4 -0
  302. package/dist/components/ui/separator/separator.svelte +23 -0
  303. package/dist/components/ui/separator/separator.svelte.d.ts +4 -0
  304. package/dist/components/ui/skeleton/index.d.ts +2 -0
  305. package/dist/components/ui/skeleton/index.js +4 -0
  306. package/dist/components/ui/skeleton/skeleton.svelte +17 -0
  307. package/dist/components/ui/skeleton/skeleton.svelte.d.ts +5 -0
  308. package/dist/components/ui/sonner/index.d.ts +1 -0
  309. package/dist/components/ui/sonner/index.js +1 -0
  310. package/dist/components/ui/sonner/sonner.svelte +34 -0
  311. package/dist/components/ui/sonner/sonner.svelte.d.ts +4 -0
  312. package/dist/components/ui/sparkline/index.d.ts +3 -0
  313. package/dist/components/ui/sparkline/index.js +2 -0
  314. package/dist/components/ui/sparkline/sparkline.svelte +90 -0
  315. package/dist/components/ui/sparkline/sparkline.svelte.d.ts +16 -0
  316. package/dist/components/ui/stat-card/index.d.ts +2 -0
  317. package/dist/components/ui/stat-card/index.js +2 -0
  318. package/dist/components/ui/stat-card/stat-card.svelte +77 -0
  319. package/dist/components/ui/stat-card/stat-card.svelte.d.ts +34 -0
  320. package/dist/components/ui/stat-list/index.d.ts +3 -0
  321. package/dist/components/ui/stat-list/index.js +2 -0
  322. package/dist/components/ui/stat-list/stat-list.svelte +80 -0
  323. package/dist/components/ui/stat-list/stat-list.svelte.d.ts +23 -0
  324. package/dist/components/ui/status/index.d.ts +1 -0
  325. package/dist/components/ui/status/index.js +1 -0
  326. package/dist/components/ui/status-badge/index.d.ts +3 -0
  327. package/dist/components/ui/status-badge/index.js +2 -0
  328. package/dist/components/ui/status-badge/status-badge.svelte +53 -0
  329. package/dist/components/ui/status-badge/status-badge.svelte.d.ts +39 -0
  330. package/dist/components/ui/switch/index.d.ts +2 -0
  331. package/dist/components/ui/switch/index.js +4 -0
  332. package/dist/components/ui/switch/switch.svelte +39 -0
  333. package/dist/components/ui/switch/switch.svelte.d.ts +4 -0
  334. package/dist/components/ui/table/index.d.ts +10 -0
  335. package/dist/components/ui/table/index.js +12 -0
  336. package/dist/components/ui/table/table-body.svelte +20 -0
  337. package/dist/components/ui/table/table-body.svelte.d.ts +5 -0
  338. package/dist/components/ui/table/table-caption.svelte +20 -0
  339. package/dist/components/ui/table/table-caption.svelte.d.ts +5 -0
  340. package/dist/components/ui/table/table-cell.svelte +20 -0
  341. package/dist/components/ui/table/table-cell.svelte.d.ts +5 -0
  342. package/dist/components/ui/table/table-classes.d.ts +15 -0
  343. package/dist/components/ui/table/table-classes.js +15 -0
  344. package/dist/components/ui/table/table-footer.svelte +20 -0
  345. package/dist/components/ui/table/table-footer.svelte.d.ts +5 -0
  346. package/dist/components/ui/table/table-head.svelte +23 -0
  347. package/dist/components/ui/table/table-head.svelte.d.ts +5 -0
  348. package/dist/components/ui/table/table-header.svelte +20 -0
  349. package/dist/components/ui/table/table-header.svelte.d.ts +5 -0
  350. package/dist/components/ui/table/table-row.svelte +23 -0
  351. package/dist/components/ui/table/table-row.svelte.d.ts +5 -0
  352. package/dist/components/ui/table/table.svelte +37 -0
  353. package/dist/components/ui/table/table.svelte.d.ts +20 -0
  354. package/dist/components/ui/tabs/index.d.ts +5 -0
  355. package/dist/components/ui/tabs/index.js +7 -0
  356. package/dist/components/ui/tabs/tabs-content.svelte +13 -0
  357. package/dist/components/ui/tabs/tabs-content.svelte.d.ts +4 -0
  358. package/dist/components/ui/tabs/tabs-list.svelte +16 -0
  359. package/dist/components/ui/tabs/tabs-list.svelte.d.ts +4 -0
  360. package/dist/components/ui/tabs/tabs-trigger.svelte +16 -0
  361. package/dist/components/ui/tabs/tabs-trigger.svelte.d.ts +4 -0
  362. package/dist/components/ui/tabs/tabs.svelte +19 -0
  363. package/dist/components/ui/tabs/tabs.svelte.d.ts +4 -0
  364. package/dist/components/ui/textarea/index.d.ts +2 -0
  365. package/dist/components/ui/textarea/index.js +4 -0
  366. package/dist/components/ui/textarea/textarea.svelte +22 -0
  367. package/dist/components/ui/textarea/textarea.svelte.d.ts +5 -0
  368. package/dist/components/ui/tile-grid/index.d.ts +2 -0
  369. package/dist/components/ui/tile-grid/index.js +2 -0
  370. package/dist/components/ui/tile-grid/tile-grid.svelte +66 -0
  371. package/dist/components/ui/tile-grid/tile-grid.svelte.d.ts +43 -0
  372. package/dist/components/ui/tooltip/index.d.ts +6 -0
  373. package/dist/components/ui/tooltip/index.js +8 -0
  374. package/dist/components/ui/tooltip/tooltip-content.svelte +52 -0
  375. package/dist/components/ui/tooltip/tooltip-content.svelte.d.ts +11 -0
  376. package/dist/components/ui/tooltip/tooltip-portal.svelte +7 -0
  377. package/dist/components/ui/tooltip/tooltip-portal.svelte.d.ts +4 -0
  378. package/dist/components/ui/tooltip/tooltip-provider.svelte +7 -0
  379. package/dist/components/ui/tooltip/tooltip-provider.svelte.d.ts +4 -0
  380. package/dist/components/ui/tooltip/tooltip-trigger.svelte +7 -0
  381. package/dist/components/ui/tooltip/tooltip-trigger.svelte.d.ts +4 -0
  382. package/dist/components/ui/tooltip/tooltip.svelte +7 -0
  383. package/dist/components/ui/tooltip/tooltip.svelte.d.ts +4 -0
  384. package/dist/styles.css +961 -0
  385. package/dist/utils.d.ts +12 -0
  386. package/dist/utils.js +5 -0
  387. package/package.json +81 -0
@@ -0,0 +1,23 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../../utils.js';
3
+ import type { ComponentProps } from 'svelte';
4
+ import { Input } from '../input/index.js';
5
+
6
+ let {
7
+ ref = $bindable(null),
8
+ value = $bindable(),
9
+ class: className,
10
+ ...props
11
+ }: ComponentProps<typeof Input> = $props();
12
+ </script>
13
+
14
+ <Input
15
+ bind:ref
16
+ data-slot="input-group-control"
17
+ class={cn(
18
+ 'flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent',
19
+ className
20
+ )}
21
+ bind:value
22
+ {...props}
23
+ />
@@ -0,0 +1,11 @@
1
+ declare const InputGroupInput: import("svelte").Component<(Omit<import("svelte/elements").HTMLInputAttributes, "type"> & ({
2
+ type: "file";
3
+ files?: FileList;
4
+ } | {
5
+ type?: "number" | "hidden" | "color" | "submit" | "reset" | "button" | "search" | "checkbox" | "radio" | (string & {}) | "text" | "tel" | "url" | "email" | "date" | "time" | "image" | "datetime-local" | "month" | "password" | "range" | "week";
6
+ files?: undefined;
7
+ })) & {
8
+ ref?: HTMLElement | null | undefined;
9
+ }, {}, "ref" | "value">;
10
+ type InputGroupInput = ReturnType<typeof InputGroupInput>;
11
+ export default InputGroupInput;
@@ -0,0 +1,22 @@
1
+ <script lang="ts">
2
+ import { cn, type WithElementRef } from '../../../utils.js';
3
+ import type { HTMLAttributes } from 'svelte/elements';
4
+
5
+ let {
6
+ ref = $bindable(null),
7
+ class: className,
8
+ children,
9
+ ...restProps
10
+ }: WithElementRef<HTMLAttributes<HTMLSpanElement>> = $props();
11
+ </script>
12
+
13
+ <span
14
+ bind:this={ref}
15
+ class={cn(
16
+ "text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
17
+ className
18
+ )}
19
+ {...restProps}
20
+ >
21
+ {@render children?.()}
22
+ </span>
@@ -0,0 +1,5 @@
1
+ import { type WithElementRef } from '../../../utils.js';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ declare const InputGroupText: import("svelte").Component<WithElementRef<HTMLAttributes<HTMLSpanElement>>, {}, "ref">;
4
+ type InputGroupText = ReturnType<typeof InputGroupText>;
5
+ export default InputGroupText;
@@ -0,0 +1,23 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../../utils.js';
3
+ import { Textarea } from '../textarea/index.js';
4
+ import type { ComponentProps } from 'svelte';
5
+
6
+ let {
7
+ ref = $bindable(null),
8
+ value = $bindable(),
9
+ class: className,
10
+ ...props
11
+ }: ComponentProps<typeof Textarea> = $props();
12
+ </script>
13
+
14
+ <Textarea
15
+ bind:ref
16
+ data-slot="input-group-control"
17
+ class={cn(
18
+ 'flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent',
19
+ className
20
+ )}
21
+ bind:value
22
+ {...props}
23
+ />
@@ -0,0 +1,3 @@
1
+ declare const InputGroupTextarea: import("svelte").Component<Omit<import("../../../utils.js").WithElementRef<import("svelte/elements").HTMLTextareaAttributes>, "children">, {}, "ref" | "value">;
2
+ type InputGroupTextarea = ReturnType<typeof InputGroupTextarea>;
3
+ export default InputGroupTextarea;
@@ -0,0 +1,24 @@
1
+ <script lang="ts">
2
+ import { cn, type WithElementRef } from '../../../utils.js';
3
+ import type { HTMLAttributes } from 'svelte/elements';
4
+
5
+ let {
6
+ ref = $bindable(null),
7
+ class: className,
8
+ children,
9
+ ...props
10
+ }: WithElementRef<HTMLAttributes<HTMLDivElement>> = $props();
11
+ </script>
12
+
13
+ <div
14
+ bind:this={ref}
15
+ data-slot="input-group"
16
+ role="group"
17
+ class={cn(
18
+ 'group/input-group border-input dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-disabled:bg-input/50 dark:has-disabled:bg-input/80 relative flex h-8 w-full min-w-0 items-center rounded-lg border transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5',
19
+ className
20
+ )}
21
+ {...props}
22
+ >
23
+ {@render children?.()}
24
+ </div>
@@ -0,0 +1,5 @@
1
+ import { type WithElementRef } from '../../../utils.js';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ declare const InputGroup: import("svelte").Component<WithElementRef<HTMLAttributes<HTMLDivElement>>, {}, "ref">;
4
+ type InputGroup = ReturnType<typeof InputGroup>;
5
+ export default InputGroup;
@@ -0,0 +1,2 @@
1
+ import Root from './label.svelte';
2
+ export { Root, Root as Label };
@@ -0,0 +1,4 @@
1
+ import Root from './label.svelte';
2
+ export { Root,
3
+ //
4
+ Root as Label };
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ import { Label as LabelPrimitive } from 'bits-ui';
3
+ import { cn } from '../../../utils.js';
4
+
5
+ let {
6
+ ref = $bindable(null),
7
+ class: className,
8
+ ...restProps
9
+ }: LabelPrimitive.RootProps = $props();
10
+ </script>
11
+
12
+ <LabelPrimitive.Root
13
+ bind:ref
14
+ data-slot="label"
15
+ class={cn(
16
+ 'flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50',
17
+ className
18
+ )}
19
+ {...restProps}
20
+ />
@@ -0,0 +1,4 @@
1
+ import { Label as LabelPrimitive } from 'bits-ui';
2
+ declare const Label: import("svelte").Component<LabelPrimitive.RootProps, {}, "ref">;
3
+ type Label = ReturnType<typeof Label>;
4
+ export default Label;
@@ -0,0 +1,2 @@
1
+ export { default as LoadingState } from './loading-state.svelte';
2
+ export { default } from './loading-state.svelte';
@@ -0,0 +1,2 @@
1
+ export { default as LoadingState } from './loading-state.svelte';
2
+ export { default } from './loading-state.svelte';
@@ -0,0 +1,28 @@
1
+ <script lang="ts">
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import Loader2 from '@lucide/svelte/icons/loader-2';
4
+ import { cn, type WithElementRef } from '../../../utils.js';
5
+
6
+ type Props = WithElementRef<HTMLAttributes<HTMLDivElement>> & {
7
+ message?: string;
8
+ };
9
+
10
+ let {
11
+ message = 'Loading…',
12
+ ref = $bindable(null),
13
+ class: className,
14
+ ...restProps
15
+ }: Props = $props();
16
+ </script>
17
+
18
+ <div
19
+ bind:this={ref}
20
+ class={cn('flex flex-col items-center justify-center p-8', className)}
21
+ role="status"
22
+ aria-live="polite"
23
+ aria-label={message}
24
+ {...restProps}
25
+ >
26
+ <Loader2 class="text-muted-foreground mb-2 size-8 animate-spin" aria-hidden="true" />
27
+ <p class="text-muted-foreground text-sm">{message}</p>
28
+ </div>
@@ -0,0 +1,8 @@
1
+ import type { HTMLAttributes } from 'svelte/elements';
2
+ import { type WithElementRef } from '../../../utils.js';
3
+ type Props = WithElementRef<HTMLAttributes<HTMLDivElement>> & {
4
+ message?: string;
5
+ };
6
+ declare const LoadingState: import("svelte").Component<Props, {}, "ref">;
7
+ type LoadingState = ReturnType<typeof LoadingState>;
8
+ export default LoadingState;
@@ -0,0 +1,2 @@
1
+ export { default as PageHeader } from './page-header.svelte';
2
+ export { default } from './page-header.svelte';
@@ -0,0 +1,2 @@
1
+ export { default as PageHeader } from './page-header.svelte';
2
+ export { default } from './page-header.svelte';
@@ -0,0 +1,100 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import type { HTMLAttributes } from 'svelte/elements';
4
+ import { cn, type WithElementRef } from '../../../utils.js';
5
+ import InfoTip from '../info-tip/info-tip.svelte';
6
+
7
+ /**
8
+ * The one page-title pattern for every route. `subtitle` is a short, single
9
+ * line that never wraps (line-clamp-1); reserve longer explanation for `info`,
10
+ * which renders an (i) tooltip beside the title, so the page never carries a
11
+ * standing explainer banner.
12
+ *
13
+ * `title` is optional, and that is a deliberate widening rather than an
14
+ * oversight. One adopting app could not use this component at all: 19 of its
15
+ * 22 page headers carry breadcrumbs and 15 have no title, because its page
16
+ * header IS a breadcrumb bar with actions on the right. A component that
17
+ * insists on a title excludes that shape entirely.
18
+ *
19
+ * It grew a breadcrumb slot rather than becoming a second component. A
20
+ * separate `BreadcrumbHeader` would have had to re-implement the actions row,
21
+ * the eyebrow, the info tip and the spacing, and every app would then face a
22
+ * choice between two page headers that must not drift — which is precisely
23
+ * the drift this package exists to end. One component, one spacing rhythm,
24
+ * two shapes.
25
+ *
26
+ * The trail itself stays the app's, as a snippet: a breadcrumb trail is made
27
+ * of routed links, and a package with no SvelteKit runtime of its own cannot
28
+ * own those (the same reasoning that makes AppShell take `currentPath` as a
29
+ * prop rather than importing `$app/state`).
30
+ */
31
+ let {
32
+ eyebrow,
33
+ breadcrumbs,
34
+ title,
35
+ subtitle,
36
+ info,
37
+ actions,
38
+ ref = $bindable(null),
39
+ class: className,
40
+ ...restProps
41
+ }: WithElementRef<HTMLAttributes<HTMLDivElement>> & {
42
+ /** A short kicker above the title. Use this OR `breadcrumbs`, not both. */
43
+ eyebrow?: string;
44
+ /** The trail above the title — the app's own routed links. */
45
+ breadcrumbs?: Snippet;
46
+ /** Omit for a header that is a breadcrumb bar with actions. */
47
+ title?: string;
48
+ subtitle?: string;
49
+ info?: string;
50
+ actions?: Snippet;
51
+ } = $props();
52
+ </script>
53
+
54
+ <div
55
+ bind:this={ref}
56
+ class={cn('mb-6 flex flex-wrap items-start justify-between gap-4', className)}
57
+ {...restProps}
58
+ >
59
+ <div class="min-w-0">
60
+ {#if breadcrumbs}
61
+ <div class="text-muted-foreground mb-1.5 flex min-w-0 items-center text-sm">
62
+ {@render breadcrumbs()}
63
+ </div>
64
+ {/if}
65
+ {#if eyebrow}
66
+ <div class="text-primary text-2xs tracking-eyebrow mb-1 font-medium uppercase">
67
+ {eyebrow}
68
+ </div>
69
+ {/if}
70
+ {#if title}
71
+ <div class="flex items-center gap-2">
72
+ <h1 class="font-display text-display leading-tight font-semibold tracking-[-0.02em]">
73
+ {title}
74
+ </h1>
75
+ {#if info}
76
+ <InfoTip
77
+ text={info}
78
+ class="text-muted-foreground/50 hover:text-muted-foreground mt-0.5 size-4 transition-colors"
79
+ />
80
+ {/if}
81
+ </div>
82
+ {:else if info}
83
+ <!-- Title-less, but the page still has something to explain. The tip
84
+ keeps a row of its own rather than being dropped along with the
85
+ heading it usually sits beside. -->
86
+ <div class="flex items-center gap-2">
87
+ <InfoTip
88
+ text={info}
89
+ class="text-muted-foreground/50 hover:text-muted-foreground size-4 transition-colors"
90
+ />
91
+ </div>
92
+ {/if}
93
+ {#if subtitle}
94
+ <p class="text-muted-foreground mt-1.5 line-clamp-1 max-w-4xl text-sm">{subtitle}</p>
95
+ {/if}
96
+ </div>
97
+ {#if actions}
98
+ <div class="flex flex-wrap items-center justify-end gap-2">{@render actions()}</div>
99
+ {/if}
100
+ </div>
@@ -0,0 +1,17 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import { type WithElementRef } from '../../../utils.js';
4
+ type $$ComponentProps = WithElementRef<HTMLAttributes<HTMLDivElement>> & {
5
+ /** A short kicker above the title. Use this OR `breadcrumbs`, not both. */
6
+ eyebrow?: string;
7
+ /** The trail above the title — the app's own routed links. */
8
+ breadcrumbs?: Snippet;
9
+ /** Omit for a header that is a breadcrumb bar with actions. */
10
+ title?: string;
11
+ subtitle?: string;
12
+ info?: string;
13
+ actions?: Snippet;
14
+ };
15
+ declare const PageHeader: import("svelte").Component<$$ComponentProps, {}, "ref">;
16
+ type PageHeader = ReturnType<typeof PageHeader>;
17
+ export default PageHeader;
@@ -0,0 +1,2 @@
1
+ export { default as Panel } from './panel.svelte';
2
+ export { default } from './panel.svelte';
@@ -0,0 +1,2 @@
1
+ export { default as Panel } from './panel.svelte';
2
+ export { default } from './panel.svelte';
@@ -0,0 +1,54 @@
1
+ <script lang="ts">
2
+ import type { Snippet, Component } from 'svelte';
3
+ import type { HTMLAttributes } from 'svelte/elements';
4
+ import type { WithElementRef } from '../../../utils.js';
5
+
6
+ // The generic titled card. Where DetailPanel is the *entity* surface (and owns
7
+ // a status and a close affordance), Panel is the plain sectioning card any
8
+ // route reaches for: an optional header with icon, subtitle and trailing
9
+ // actions, over a body that can opt out of padding for a flush table.
10
+ let {
11
+ title,
12
+ subtitle,
13
+ icon: Icon,
14
+ action,
15
+ children,
16
+ pad = true,
17
+ class: klass = '',
18
+ ref = $bindable(null),
19
+ ...restProps
20
+ }: WithElementRef<HTMLAttributes<HTMLElement>> & {
21
+ title?: string;
22
+ subtitle?: string;
23
+ icon?: Component<{ class?: string }>;
24
+ action?: Snippet;
25
+ children: Snippet;
26
+ pad?: boolean;
27
+ } = $props();
28
+ </script>
29
+
30
+ <section
31
+ bind:this={ref}
32
+ class="bg-card border-border ds-edge flex flex-col overflow-hidden rounded-lg border {klass}"
33
+ {...restProps}
34
+ >
35
+ {#if title}
36
+ <header class="border-border flex items-center gap-2.5 border-b px-4 py-3">
37
+ {#if Icon}
38
+ <Icon class="text-muted-foreground size-4" />
39
+ {/if}
40
+ <div class="min-w-0">
41
+ <h2 class="text-body leading-tight font-semibold tracking-tight">{title}</h2>
42
+ {#if subtitle}
43
+ <p class="text-muted-foreground truncate text-xs">{subtitle}</p>
44
+ {/if}
45
+ </div>
46
+ {#if action}
47
+ <div class="ml-auto flex items-center gap-1.5">{@render action()}</div>
48
+ {/if}
49
+ </header>
50
+ {/if}
51
+ <div class={pad ? 'p-4' : ''}>
52
+ {@render children()}
53
+ </div>
54
+ </section>
@@ -0,0 +1,16 @@
1
+ import type { Snippet, Component } from 'svelte';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import type { WithElementRef } from '../../../utils.js';
4
+ type $$ComponentProps = WithElementRef<HTMLAttributes<HTMLElement>> & {
5
+ title?: string;
6
+ subtitle?: string;
7
+ icon?: Component<{
8
+ class?: string;
9
+ }>;
10
+ action?: Snippet;
11
+ children: Snippet;
12
+ pad?: boolean;
13
+ };
14
+ declare const Panel: Component<$$ComponentProps, {}, "ref">;
15
+ type Panel = ReturnType<typeof Panel>;
16
+ export default Panel;
@@ -0,0 +1,2 @@
1
+ import Root from './password-input.svelte';
2
+ export { Root, Root as PasswordInput };
@@ -0,0 +1,4 @@
1
+ import Root from './password-input.svelte';
2
+ export { Root,
3
+ //
4
+ Root as PasswordInput };
@@ -0,0 +1,48 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../../utils.js';
3
+ import * as InputGroup from '../input-group/index.js';
4
+ import Eye from '@lucide/svelte/icons/eye';
5
+ import EyeOff from '@lucide/svelte/icons/eye-off';
6
+ import type { HTMLInputAttributes } from 'svelte/elements';
7
+
8
+ type Props = Omit<HTMLInputAttributes, 'type' | 'files'> & {
9
+ value?: string;
10
+ class?: string;
11
+ };
12
+
13
+ let { value = $bindable(''), id, class: className, disabled, ...rest }: Props = $props();
14
+
15
+ let revealed = $state(false);
16
+ </script>
17
+
18
+ <InputGroup.Root class={cn('h-9 font-mono text-sm', className)}>
19
+ <InputGroup.Input
20
+ {id}
21
+ type={revealed ? 'text' : 'password'}
22
+ bind:value
23
+ {disabled}
24
+ class="font-mono text-sm"
25
+ {...rest}
26
+ />
27
+ <InputGroup.Addon align="inline-end">
28
+ <InputGroup.Button
29
+ type="button"
30
+ variant="ghost"
31
+ size="icon-xs"
32
+ class="text-muted-foreground"
33
+ {disabled}
34
+ aria-label={revealed ? 'Hide password' : 'Show password'}
35
+ aria-pressed={revealed}
36
+ aria-controls={id}
37
+ onclick={() => {
38
+ revealed = !revealed;
39
+ }}
40
+ >
41
+ {#if revealed}
42
+ <EyeOff class="size-4" aria-hidden="true" />
43
+ {:else}
44
+ <Eye class="size-4" aria-hidden="true" />
45
+ {/if}
46
+ </InputGroup.Button>
47
+ </InputGroup.Addon>
48
+ </InputGroup.Root>
@@ -0,0 +1,8 @@
1
+ import type { HTMLInputAttributes } from 'svelte/elements';
2
+ type Props = Omit<HTMLInputAttributes, 'type' | 'files'> & {
3
+ value?: string;
4
+ class?: string;
5
+ };
6
+ declare const PasswordInput: import("svelte").Component<Props, {}, "value">;
7
+ type PasswordInput = ReturnType<typeof PasswordInput>;
8
+ export default PasswordInput;
@@ -0,0 +1,4 @@
1
+ import Root from './popover.svelte';
2
+ import Trigger from './popover-trigger.svelte';
3
+ import Content from './popover-content.svelte';
4
+ export { Root, Trigger, Content, Root as Popover, Trigger as PopoverTrigger, Content as PopoverContent };
@@ -0,0 +1,6 @@
1
+ import Root from './popover.svelte';
2
+ import Trigger from './popover-trigger.svelte';
3
+ import Content from './popover-content.svelte';
4
+ export { Root, Trigger, Content,
5
+ // Aliases
6
+ Root as Popover, Trigger as PopoverTrigger, Content as PopoverContent };
@@ -0,0 +1,45 @@
1
+ <script lang="ts">
2
+ import { Popover as PopoverPrimitive } from 'bits-ui';
3
+ import { cn } from '../../../utils';
4
+
5
+ let {
6
+ ref = $bindable(null),
7
+ class: className,
8
+ align = 'center',
9
+ sideOffset = 4,
10
+ children,
11
+ ...restProps
12
+ }: PopoverPrimitive.ContentProps & { class?: string } = $props();
13
+ </script>
14
+
15
+ <PopoverPrimitive.Portal>
16
+ <!--
17
+ The transform origin comes from bits-ui, so it is a `--bits-*` variable.
18
+ This carried the React registry's equivalent, inherited verbatim in the port
19
+ — a variable nothing in a Svelte tree ever sets — so the origin resolved to
20
+ nothing and the zoom scaled from the box centre rather than from the
21
+ trigger. Silent in the usual way: an undefined custom property makes the
22
+ declaration invalid at computed-value time and the property just falls back.
23
+ `theme-coverage.test.ts` now fails on any such leftover.
24
+
25
+ The height cap and the scroll come as a pair, and the pair is deliberate.
26
+ A popover holds whatever a page puts in it, and unlike the menus it carried
27
+ no `overflow-y-auto`, so content taller than the space below the trigger
28
+ simply ran off the bottom of the window — not clipped, not scrollable,
29
+ just unreachable. Capping without the overflow would trade that for
30
+ clipping, which is the same defect wearing a different mask.
31
+ -->
32
+ <PopoverPrimitive.Content
33
+ bind:ref
34
+ data-slot="popover-content"
35
+ {align}
36
+ {sideOffset}
37
+ class={cn(
38
+ 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--bits-popover-content-available-height) w-72 origin-(--bits-popover-content-transform-origin) overflow-y-auto rounded-md border p-4 shadow-md outline-none',
39
+ className
40
+ )}
41
+ {...restProps}
42
+ >
43
+ {@render children?.()}
44
+ </PopoverPrimitive.Content>
45
+ </PopoverPrimitive.Portal>
@@ -0,0 +1,7 @@
1
+ import { Popover as PopoverPrimitive } from 'bits-ui';
2
+ type $$ComponentProps = PopoverPrimitive.ContentProps & {
3
+ class?: string;
4
+ };
5
+ declare const PopoverContent: import("svelte").Component<$$ComponentProps, {}, "ref">;
6
+ type PopoverContent = ReturnType<typeof PopoverContent>;
7
+ export default PopoverContent;
@@ -0,0 +1,7 @@
1
+ <script lang="ts">
2
+ import { Popover as PopoverPrimitive } from 'bits-ui';
3
+
4
+ let { ...restProps }: PopoverPrimitive.TriggerProps = $props();
5
+ </script>
6
+
7
+ <PopoverPrimitive.Trigger {...restProps} />
@@ -0,0 +1,4 @@
1
+ import { Popover as PopoverPrimitive } from 'bits-ui';
2
+ declare const PopoverTrigger: import("svelte").Component<PopoverPrimitive.TriggerProps, {}, "">;
3
+ type PopoverTrigger = ReturnType<typeof PopoverTrigger>;
4
+ export default PopoverTrigger;
@@ -0,0 +1,7 @@
1
+ <script lang="ts">
2
+ import { Popover as PopoverPrimitive } from 'bits-ui';
3
+
4
+ let { open = $bindable(false), ...restProps }: PopoverPrimitive.RootProps = $props();
5
+ </script>
6
+
7
+ <PopoverPrimitive.Root bind:open {...restProps} />
@@ -0,0 +1,3 @@
1
+ declare const Popover: import("svelte").Component<import("bits-ui").PopoverRootPropsWithoutHTML, {}, "open">;
2
+ type Popover = ReturnType<typeof Popover>;
3
+ export default Popover;
@@ -0,0 +1,2 @@
1
+ import Root from './progress.svelte';
2
+ export { Root, Root as Progress };
@@ -0,0 +1,4 @@
1
+ import Root from './progress.svelte';
2
+ export { Root,
3
+ //
4
+ Root as Progress };
@@ -0,0 +1,30 @@
1
+ <script lang="ts">
2
+ import { Progress as ProgressPrimitive } from 'bits-ui';
3
+ import { cn, type WithoutChildrenOrChild } from '../../../utils.js';
4
+
5
+ let {
6
+ ref = $bindable(null),
7
+ class: className,
8
+ max = 100,
9
+ value,
10
+ ...restProps
11
+ }: WithoutChildrenOrChild<ProgressPrimitive.RootProps> = $props();
12
+ </script>
13
+
14
+ <ProgressPrimitive.Root
15
+ bind:ref
16
+ data-slot="progress"
17
+ class={cn(
18
+ 'bg-muted relative flex h-1 w-full items-center overflow-x-hidden rounded-full',
19
+ className
20
+ )}
21
+ {value}
22
+ {max}
23
+ {...restProps}
24
+ >
25
+ <div
26
+ data-slot="progress-indicator"
27
+ class="bg-primary size-full flex-1 transition-all"
28
+ style="transform: translateX(-{100 - (100 * (value ?? 0)) / (max ?? 1)}%)"
29
+ ></div>
30
+ </ProgressPrimitive.Root>
@@ -0,0 +1,4 @@
1
+ import { Progress as ProgressPrimitive } from 'bits-ui';
2
+ declare const Progress: import("svelte").Component<Omit<Omit<ProgressPrimitive.RootProps, "child">, "children">, {}, "ref">;
3
+ type Progress = ReturnType<typeof Progress>;
4
+ export default Progress;
@@ -0,0 +1,2 @@
1
+ export { default as Scorecard } from './scorecard.svelte';
2
+ export { default } from './scorecard.svelte';
@@ -0,0 +1,2 @@
1
+ export { default as Scorecard } from './scorecard.svelte';
2
+ export { default } from './scorecard.svelte';