@velastack/cms 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +644 -0
  3. package/dist/cms.d.ts +6 -0
  4. package/dist/cms.js +30 -0
  5. package/dist/components/admin-bar/admin-bar-internal.svelte +1697 -0
  6. package/dist/components/admin-bar/admin-bar-internal.svelte.d.ts +12 -0
  7. package/dist/components/admin-bar/admin-bar.css +5 -0
  8. package/dist/components/admin-bar/admin-bar.svelte +355 -0
  9. package/dist/components/admin-bar/admin-bar.svelte.d.ts +7 -0
  10. package/dist/components/admin-bar/click-outside.d.ts +8 -0
  11. package/dist/components/admin-bar/click-outside.js +17 -0
  12. package/dist/components/admin-bar/css-root.svelte +23 -0
  13. package/dist/components/admin-bar/css-root.svelte.d.ts +19 -0
  14. package/dist/components/admin-bar/delete-page-dialog.svelte +326 -0
  15. package/dist/components/admin-bar/delete-page-dialog.svelte.d.ts +32 -0
  16. package/dist/components/admin-bar/history-panel.svelte +264 -0
  17. package/dist/components/admin-bar/history-panel.svelte.d.ts +8 -0
  18. package/dist/components/admin-bar/icons/bold.svelte +13 -0
  19. package/dist/components/admin-bar/icons/bold.svelte.d.ts +3 -0
  20. package/dist/components/admin-bar/icons/check.svelte +11 -0
  21. package/dist/components/admin-bar/icons/check.svelte.d.ts +3 -0
  22. package/dist/components/admin-bar/icons/chevron-down.svelte +11 -0
  23. package/dist/components/admin-bar/icons/chevron-down.svelte.d.ts +3 -0
  24. package/dist/components/admin-bar/icons/chevron-right.svelte +11 -0
  25. package/dist/components/admin-bar/icons/chevron-right.svelte.d.ts +3 -0
  26. package/dist/components/admin-bar/icons/chevron-up.svelte +11 -0
  27. package/dist/components/admin-bar/icons/chevron-up.svelte.d.ts +3 -0
  28. package/dist/components/admin-bar/icons/code.svelte +14 -0
  29. package/dist/components/admin-bar/icons/code.svelte.d.ts +3 -0
  30. package/dist/components/admin-bar/icons/external-link.svelte +15 -0
  31. package/dist/components/admin-bar/icons/external-link.svelte.d.ts +3 -0
  32. package/dist/components/admin-bar/icons/file.svelte +19 -0
  33. package/dist/components/admin-bar/icons/file.svelte.d.ts +3 -0
  34. package/dist/components/admin-bar/icons/heading-2.svelte +16 -0
  35. package/dist/components/admin-bar/icons/heading-2.svelte.d.ts +3 -0
  36. package/dist/components/admin-bar/icons/heading-3.svelte +17 -0
  37. package/dist/components/admin-bar/icons/heading-3.svelte.d.ts +3 -0
  38. package/dist/components/admin-bar/icons/icon.svelte +41 -0
  39. package/dist/components/admin-bar/icons/icon.svelte.d.ts +21 -0
  40. package/dist/components/admin-bar/icons/images.svelte +16 -0
  41. package/dist/components/admin-bar/icons/images.svelte.d.ts +3 -0
  42. package/dist/components/admin-bar/icons/italic.svelte +15 -0
  43. package/dist/components/admin-bar/icons/italic.svelte.d.ts +3 -0
  44. package/dist/components/admin-bar/icons/link-2-off.svelte +16 -0
  45. package/dist/components/admin-bar/icons/link-2-off.svelte.d.ts +3 -0
  46. package/dist/components/admin-bar/icons/link.svelte +14 -0
  47. package/dist/components/admin-bar/icons/link.svelte.d.ts +3 -0
  48. package/dist/components/admin-bar/icons/list-ordered.svelte +18 -0
  49. package/dist/components/admin-bar/icons/list-ordered.svelte.d.ts +3 -0
  50. package/dist/components/admin-bar/icons/list.svelte +18 -0
  51. package/dist/components/admin-bar/icons/list.svelte.d.ts +3 -0
  52. package/dist/components/admin-bar/icons/loader-circle.svelte +11 -0
  53. package/dist/components/admin-bar/icons/loader-circle.svelte.d.ts +3 -0
  54. package/dist/components/admin-bar/icons/minus.svelte +11 -0
  55. package/dist/components/admin-bar/icons/minus.svelte.d.ts +3 -0
  56. package/dist/components/admin-bar/icons/quote.svelte +24 -0
  57. package/dist/components/admin-bar/icons/quote.svelte.d.ts +3 -0
  58. package/dist/components/admin-bar/icons/search.svelte +14 -0
  59. package/dist/components/admin-bar/icons/search.svelte.d.ts +3 -0
  60. package/dist/components/admin-bar/icons/trash-2.svelte +17 -0
  61. package/dist/components/admin-bar/icons/trash-2.svelte.d.ts +3 -0
  62. package/dist/components/admin-bar/icons/triangle-alert.svelte +15 -0
  63. package/dist/components/admin-bar/icons/triangle-alert.svelte.d.ts +3 -0
  64. package/dist/components/admin-bar/icons/types.d.ts +7 -0
  65. package/dist/components/admin-bar/icons/types.js +1 -0
  66. package/dist/components/admin-bar/icons/undo-2.svelte +14 -0
  67. package/dist/components/admin-bar/icons/undo-2.svelte.d.ts +3 -0
  68. package/dist/components/admin-bar/icons/upload.svelte +15 -0
  69. package/dist/components/admin-bar/icons/upload.svelte.d.ts +3 -0
  70. package/dist/components/admin-bar/icons/x.svelte +14 -0
  71. package/dist/components/admin-bar/icons/x.svelte.d.ts +3 -0
  72. package/dist/components/admin-bar/keyboard-shortcuts-dialog.svelte +96 -0
  73. package/dist/components/admin-bar/keyboard-shortcuts-dialog.svelte.d.ts +7 -0
  74. package/dist/components/admin-bar/locales-panel.svelte +137 -0
  75. package/dist/components/admin-bar/locales-panel.svelte.d.ts +9 -0
  76. package/dist/components/admin-bar/media-panel.svelte +282 -0
  77. package/dist/components/admin-bar/media-panel.svelte.d.ts +7 -0
  78. package/dist/components/admin-bar/new-page-chooser-dialog.svelte +56 -0
  79. package/dist/components/admin-bar/new-page-chooser-dialog.svelte.d.ts +10 -0
  80. package/dist/components/admin-bar/new-page-dialog.svelte +126 -0
  81. package/dist/components/admin-bar/new-page-dialog.svelte.d.ts +14 -0
  82. package/dist/components/admin-bar/page-config.d.ts +61 -0
  83. package/dist/components/admin-bar/page-config.js +24 -0
  84. package/dist/components/admin-bar/pages-panel.svelte +639 -0
  85. package/dist/components/admin-bar/pages-panel.svelte.d.ts +13 -0
  86. package/dist/components/admin-bar/panel-footer.svelte +21 -0
  87. package/dist/components/admin-bar/panel-footer.svelte.d.ts +8 -0
  88. package/dist/components/admin-bar/panel-header.svelte +29 -0
  89. package/dist/components/admin-bar/panel-header.svelte.d.ts +10 -0
  90. package/dist/components/admin-bar/panel.svelte +41 -0
  91. package/dist/components/admin-bar/panel.svelte.d.ts +10 -0
  92. package/dist/components/admin-bar/publish-dialog.svelte +387 -0
  93. package/dist/components/admin-bar/publish-dialog.svelte.d.ts +16 -0
  94. package/dist/components/admin-bar/resolve-route.d.ts +20 -0
  95. package/dist/components/admin-bar/resolve-route.js +50 -0
  96. package/dist/components/admin-bar/seo-panel.svelte +387 -0
  97. package/dist/components/admin-bar/seo-panel.svelte.d.ts +7 -0
  98. package/dist/components/admin-bar/share-preview-link-dialog.svelte +97 -0
  99. package/dist/components/admin-bar/share-preview-link-dialog.svelte.d.ts +9 -0
  100. package/dist/components/admin-bar/site-settings-panel.svelte +225 -0
  101. package/dist/components/admin-bar/site-settings-panel.svelte.d.ts +7 -0
  102. package/dist/components/admin-bar/status-pill.svelte +49 -0
  103. package/dist/components/admin-bar/status-pill.svelte.d.ts +11 -0
  104. package/dist/components/admin-bar/theme.svelte.d.ts +16 -0
  105. package/dist/components/admin-bar/theme.svelte.js +39 -0
  106. package/dist/components/admin-bar/ui/badge/badge.svelte +57 -0
  107. package/dist/components/admin-bar/ui/badge/badge.svelte.d.ts +16 -0
  108. package/dist/components/admin-bar/ui/badge/index.d.ts +4 -0
  109. package/dist/components/admin-bar/ui/badge/index.js +4 -0
  110. package/dist/components/admin-bar/ui/button/button.svelte +73 -0
  111. package/dist/components/admin-bar/ui/button/button.svelte.d.ts +16 -0
  112. package/dist/components/admin-bar/ui/button/index.d.ts +4 -0
  113. package/dist/components/admin-bar/ui/button/index.js +4 -0
  114. package/dist/components/admin-bar/ui/collapsible/collapsible-content.svelte +7 -0
  115. package/dist/components/admin-bar/ui/collapsible/collapsible-content.svelte.d.ts +4 -0
  116. package/dist/components/admin-bar/ui/collapsible/collapsible-trigger.svelte +7 -0
  117. package/dist/components/admin-bar/ui/collapsible/collapsible-trigger.svelte.d.ts +4 -0
  118. package/dist/components/admin-bar/ui/collapsible/collapsible.svelte +7 -0
  119. package/dist/components/admin-bar/ui/collapsible/collapsible.svelte.d.ts +4 -0
  120. package/dist/components/admin-bar/ui/collapsible/index.d.ts +4 -0
  121. package/dist/components/admin-bar/ui/collapsible/index.js +6 -0
  122. package/dist/components/admin-bar/ui/dialog/dialog-close.svelte +7 -0
  123. package/dist/components/admin-bar/ui/dialog/dialog-close.svelte.d.ts +4 -0
  124. package/dist/components/admin-bar/ui/dialog/dialog-content.svelte +46 -0
  125. package/dist/components/admin-bar/ui/dialog/dialog-content.svelte.d.ts +11 -0
  126. package/dist/components/admin-bar/ui/dialog/dialog-description.svelte +17 -0
  127. package/dist/components/admin-bar/ui/dialog/dialog-description.svelte.d.ts +4 -0
  128. package/dist/components/admin-bar/ui/dialog/dialog-footer.svelte +23 -0
  129. package/dist/components/admin-bar/ui/dialog/dialog-footer.svelte.d.ts +5 -0
  130. package/dist/components/admin-bar/ui/dialog/dialog-header.svelte +20 -0
  131. package/dist/components/admin-bar/ui/dialog/dialog-header.svelte.d.ts +5 -0
  132. package/dist/components/admin-bar/ui/dialog/dialog-overlay.svelte +20 -0
  133. package/dist/components/admin-bar/ui/dialog/dialog-overlay.svelte.d.ts +4 -0
  134. package/dist/components/admin-bar/ui/dialog/dialog-portal.svelte +7 -0
  135. package/dist/components/admin-bar/ui/dialog/dialog-portal.svelte.d.ts +3 -0
  136. package/dist/components/admin-bar/ui/dialog/dialog-title.svelte +17 -0
  137. package/dist/components/admin-bar/ui/dialog/dialog-title.svelte.d.ts +4 -0
  138. package/dist/components/admin-bar/ui/dialog/dialog-trigger.svelte +7 -0
  139. package/dist/components/admin-bar/ui/dialog/dialog-trigger.svelte.d.ts +4 -0
  140. package/dist/components/admin-bar/ui/dialog/dialog.svelte +7 -0
  141. package/dist/components/admin-bar/ui/dialog/dialog.svelte.d.ts +3 -0
  142. package/dist/components/admin-bar/ui/dialog/index.d.ts +11 -0
  143. package/dist/components/admin-bar/ui/dialog/index.js +13 -0
  144. package/dist/components/admin-bar/ui/input/index.d.ts +3 -0
  145. package/dist/components/admin-bar/ui/input/index.js +3 -0
  146. package/dist/components/admin-bar/ui/input/input.svelte +24 -0
  147. package/dist/components/admin-bar/ui/input/input.svelte.d.ts +5 -0
  148. package/dist/components/admin-bar/ui/kbd/index.d.ts +4 -0
  149. package/dist/components/admin-bar/ui/kbd/index.js +6 -0
  150. package/dist/components/admin-bar/ui/kbd/kbd-group.svelte +20 -0
  151. package/dist/components/admin-bar/ui/kbd/kbd-group.svelte.d.ts +5 -0
  152. package/dist/components/admin-bar/ui/kbd/kbd-shortcut.svelte +52 -0
  153. package/dist/components/admin-bar/ui/kbd/kbd-shortcut.svelte.d.ts +8 -0
  154. package/dist/components/admin-bar/ui/kbd/kbd.svelte +27 -0
  155. package/dist/components/admin-bar/ui/kbd/kbd.svelte.d.ts +5 -0
  156. package/dist/components/admin-bar/ui/label/index.d.ts +3 -0
  157. package/dist/components/admin-bar/ui/label/index.js +3 -0
  158. package/dist/components/admin-bar/ui/label/label.svelte +20 -0
  159. package/dist/components/admin-bar/ui/label/label.svelte.d.ts +4 -0
  160. package/dist/components/admin-bar/ui/menubar/index.d.ts +18 -0
  161. package/dist/components/admin-bar/ui/menubar/index.js +20 -0
  162. package/dist/components/admin-bar/ui/menubar/menubar-checkbox-item.svelte +46 -0
  163. package/dist/components/admin-bar/ui/menubar/menubar-checkbox-item.svelte.d.ts +10 -0
  164. package/dist/components/admin-bar/ui/menubar/menubar-content.svelte +28 -0
  165. package/dist/components/admin-bar/ui/menubar/menubar-content.svelte.d.ts +4 -0
  166. package/dist/components/admin-bar/ui/menubar/menubar-group-heading.svelte +25 -0
  167. package/dist/components/admin-bar/ui/menubar/menubar-group-heading.svelte.d.ts +8 -0
  168. package/dist/components/admin-bar/ui/menubar/menubar-group.svelte +12 -0
  169. package/dist/components/admin-bar/ui/menubar/menubar-group.svelte.d.ts +7 -0
  170. package/dist/components/admin-bar/ui/menubar/menubar-item.svelte +27 -0
  171. package/dist/components/admin-bar/ui/menubar/menubar-item.svelte.d.ts +8 -0
  172. package/dist/components/admin-bar/ui/menubar/menubar-label.svelte +25 -0
  173. package/dist/components/admin-bar/ui/menubar/menubar-label.svelte.d.ts +8 -0
  174. package/dist/components/admin-bar/ui/menubar/menubar-menu.svelte +7 -0
  175. package/dist/components/admin-bar/ui/menubar/menubar-menu.svelte.d.ts +3 -0
  176. package/dist/components/admin-bar/ui/menubar/menubar-portal.svelte +7 -0
  177. package/dist/components/admin-bar/ui/menubar/menubar-portal.svelte.d.ts +3 -0
  178. package/dist/components/admin-bar/ui/menubar/menubar-radio-group.svelte +11 -0
  179. package/dist/components/admin-bar/ui/menubar/menubar-radio-group.svelte.d.ts +4 -0
  180. package/dist/components/admin-bar/ui/menubar/menubar-radio-item.svelte +37 -0
  181. package/dist/components/admin-bar/ui/menubar/menubar-radio-item.svelte.d.ts +8 -0
  182. package/dist/components/admin-bar/ui/menubar/menubar-separator.svelte +17 -0
  183. package/dist/components/admin-bar/ui/menubar/menubar-separator.svelte.d.ts +4 -0
  184. package/dist/components/admin-bar/ui/menubar/menubar-shortcut.svelte +23 -0
  185. package/dist/components/admin-bar/ui/menubar/menubar-shortcut.svelte.d.ts +5 -0
  186. package/dist/components/admin-bar/ui/menubar/menubar-sub-content.svelte +20 -0
  187. package/dist/components/admin-bar/ui/menubar/menubar-sub-content.svelte.d.ts +4 -0
  188. package/dist/components/admin-bar/ui/menubar/menubar-sub-trigger.svelte +29 -0
  189. package/dist/components/admin-bar/ui/menubar/menubar-sub-trigger.svelte.d.ts +8 -0
  190. package/dist/components/admin-bar/ui/menubar/menubar-sub.svelte +7 -0
  191. package/dist/components/admin-bar/ui/menubar/menubar-sub.svelte.d.ts +4 -0
  192. package/dist/components/admin-bar/ui/menubar/menubar-trigger.svelte +20 -0
  193. package/dist/components/admin-bar/ui/menubar/menubar-trigger.svelte.d.ts +4 -0
  194. package/dist/components/admin-bar/ui/menubar/menubar.svelte +20 -0
  195. package/dist/components/admin-bar/ui/menubar/menubar.svelte.d.ts +4 -0
  196. package/dist/components/admin-bar/ui/select/index.d.ts +12 -0
  197. package/dist/components/admin-bar/ui/select/index.js +14 -0
  198. package/dist/components/admin-bar/ui/select/select-content.svelte +45 -0
  199. package/dist/components/admin-bar/ui/select/select-content.svelte.d.ts +11 -0
  200. package/dist/components/admin-bar/ui/select/select-group-heading.svelte +21 -0
  201. package/dist/components/admin-bar/ui/select/select-group-heading.svelte.d.ts +10 -0
  202. package/dist/components/admin-bar/ui/select/select-group.svelte +17 -0
  203. package/dist/components/admin-bar/ui/select/select-group.svelte.d.ts +4 -0
  204. package/dist/components/admin-bar/ui/select/select-item.svelte +40 -0
  205. package/dist/components/admin-bar/ui/select/select-item.svelte.d.ts +5 -0
  206. package/dist/components/admin-bar/ui/select/select-label.svelte +20 -0
  207. package/dist/components/admin-bar/ui/select/select-label.svelte.d.ts +6 -0
  208. package/dist/components/admin-bar/ui/select/select-portal.svelte +7 -0
  209. package/dist/components/admin-bar/ui/select/select-portal.svelte.d.ts +3 -0
  210. package/dist/components/admin-bar/ui/select/select-scroll-down-button.svelte +23 -0
  211. package/dist/components/admin-bar/ui/select/select-scroll-down-button.svelte.d.ts +5 -0
  212. package/dist/components/admin-bar/ui/select/select-scroll-up-button.svelte +23 -0
  213. package/dist/components/admin-bar/ui/select/select-scroll-up-button.svelte.d.ts +5 -0
  214. package/dist/components/admin-bar/ui/select/select-separator.svelte +21 -0
  215. package/dist/components/admin-bar/ui/select/select-separator.svelte.d.ts +4 -0
  216. package/dist/components/admin-bar/ui/select/select-trigger.svelte +31 -0
  217. package/dist/components/admin-bar/ui/select/select-trigger.svelte.d.ts +8 -0
  218. package/dist/components/admin-bar/ui/select/select.svelte +11 -0
  219. package/dist/components/admin-bar/ui/select/select.svelte.d.ts +3 -0
  220. package/dist/components/admin-bar/ui/separator/index.d.ts +2 -0
  221. package/dist/components/admin-bar/ui/separator/index.js +4 -0
  222. package/dist/components/admin-bar/ui/separator/separator.svelte +21 -0
  223. package/dist/components/admin-bar/ui/separator/separator.svelte.d.ts +4 -0
  224. package/dist/components/admin-bar/ui/textarea/index.d.ts +3 -0
  225. package/dist/components/admin-bar/ui/textarea/index.js +3 -0
  226. package/dist/components/admin-bar/ui/textarea/textarea.svelte +21 -0
  227. package/dist/components/admin-bar/ui/textarea/textarea.svelte.d.ts +5 -0
  228. package/dist/components/admin-bar/user-avatar.svelte +29 -0
  229. package/dist/components/admin-bar/user-avatar.svelte.d.ts +7 -0
  230. package/dist/components/admin-bar/utils.d.ts +10 -0
  231. package/dist/components/admin-bar/utils.js +46 -0
  232. package/dist/components/admin-bar/variants.d.ts +20 -0
  233. package/dist/components/admin-bar/variants.js +14 -0
  234. package/dist/components/cms/cms-boolean.svelte +102 -0
  235. package/dist/components/cms/cms-boolean.svelte.d.ts +10 -0
  236. package/dist/components/cms/cms-date-time-editable.svelte +66 -0
  237. package/dist/components/cms/cms-date-time-editable.svelte.d.ts +11 -0
  238. package/dist/components/cms/cms-date-time.svelte +67 -0
  239. package/dist/components/cms/cms-date-time.svelte.d.ts +19 -0
  240. package/dist/components/cms/cms-entries.svelte +24 -0
  241. package/dist/components/cms/cms-entries.svelte.d.ts +31 -0
  242. package/dist/components/cms/cms-image-editable.svelte +439 -0
  243. package/dist/components/cms/cms-image-editable.svelte.d.ts +11 -0
  244. package/dist/components/cms/cms-image.svelte +78 -0
  245. package/dist/components/cms/cms-image.svelte.d.ts +18 -0
  246. package/dist/components/cms/cms-link-editable.svelte +429 -0
  247. package/dist/components/cms/cms-link-editable.svelte.d.ts +13 -0
  248. package/dist/components/cms/cms-link.svelte +92 -0
  249. package/dist/components/cms/cms-link.svelte.d.ts +25 -0
  250. package/dist/components/cms/cms-markdown-editable.svelte +74 -0
  251. package/dist/components/cms/cms-markdown-editable.svelte.d.ts +9 -0
  252. package/dist/components/cms/cms-markdown.svelte +56 -0
  253. package/dist/components/cms/cms-markdown.svelte.d.ts +10 -0
  254. package/dist/components/cms/cms-media-picker.svelte +150 -0
  255. package/dist/components/cms/cms-media-picker.svelte.d.ts +8 -0
  256. package/dist/components/cms/cms-number-editable.svelte +77 -0
  257. package/dist/components/cms/cms-number-editable.svelte.d.ts +13 -0
  258. package/dist/components/cms/cms-number.svelte +63 -0
  259. package/dist/components/cms/cms-number.svelte.d.ts +16 -0
  260. package/dist/components/cms/cms-repeater-editable.svelte +137 -0
  261. package/dist/components/cms/cms-repeater-editable.svelte.d.ts +31 -0
  262. package/dist/components/cms/cms-repeater.svelte +55 -0
  263. package/dist/components/cms/cms-repeater.svelte.d.ts +30 -0
  264. package/dist/components/cms/cms-rich-text-editable.svelte +101 -0
  265. package/dist/components/cms/cms-rich-text-editable.svelte.d.ts +9 -0
  266. package/dist/components/cms/cms-rich-text-toolbar.svelte +246 -0
  267. package/dist/components/cms/cms-rich-text-toolbar.svelte.d.ts +9 -0
  268. package/dist/components/cms/cms-rich-text.svelte +74 -0
  269. package/dist/components/cms/cms-rich-text.svelte.d.ts +10 -0
  270. package/dist/components/cms/cms-store.svelte.d.ts +294 -0
  271. package/dist/components/cms/cms-store.svelte.js +625 -0
  272. package/dist/components/cms/cms-text.svelte +131 -0
  273. package/dist/components/cms/cms-text.svelte.d.ts +11 -0
  274. package/dist/components/cms/index.d.ts +13 -0
  275. package/dist/components/cms/index.js +11 -0
  276. package/dist/components/cms/install-scope.svelte.d.ts +7 -0
  277. package/dist/components/cms/install-scope.svelte.js +33 -0
  278. package/dist/components/cms/locale-merge.d.ts +41 -0
  279. package/dist/components/cms/locale-merge.js +77 -0
  280. package/dist/components/cms/overlay-sync.d.ts +82 -0
  281. package/dist/components/cms/overlay-sync.js +76 -0
  282. package/dist/components/cms/path.d.ts +30 -0
  283. package/dist/components/cms/path.js +156 -0
  284. package/dist/components/cms/scope.d.ts +120 -0
  285. package/dist/components/cms/scope.js +23 -0
  286. package/dist/index.d.ts +27 -0
  287. package/dist/index.js +28 -0
  288. package/dist/srv/README.md +341 -0
  289. package/dist/srv/api-adapter.d.ts +20 -0
  290. package/dist/srv/api-adapter.js +178 -0
  291. package/dist/srv/cms.d.ts +62 -0
  292. package/dist/srv/cms.js +35 -0
  293. package/dist/srv/index.d.ts +5 -0
  294. package/dist/srv/index.js +4 -0
  295. package/dist/srv/load-cms.d.ts +105 -0
  296. package/dist/srv/load-cms.js +227 -0
  297. package/dist/srv/mock-adapter.d.ts +96 -0
  298. package/dist/srv/mock-adapter.js +171 -0
  299. package/dist/srv/types.d.ts +114 -0
  300. package/dist/srv/types.js +1 -0
  301. package/package.json +116 -0
  302. package/plugin/README.md +137 -0
  303. package/plugin/dist/adapter.d.ts +35 -0
  304. package/plugin/dist/adapter.js +346 -0
  305. package/plugin/dist/adapter.js.map +1 -0
  306. package/plugin/dist/build-state.d.ts +10 -0
  307. package/plugin/dist/build-state.js +26 -0
  308. package/plugin/dist/build-state.js.map +1 -0
  309. package/plugin/dist/fallback-shim.js +194 -0
  310. package/plugin/dist/index.d.ts +56 -0
  311. package/plugin/dist/index.js +396 -0
  312. package/plugin/dist/index.js.map +1 -0
  313. package/plugin/dist/manifest.d.ts +76 -0
  314. package/plugin/dist/manifest.js +367 -0
  315. package/plugin/dist/manifest.js.map +1 -0
  316. package/plugin/dist/media.d.ts +36 -0
  317. package/plugin/dist/media.js +153 -0
  318. package/plugin/dist/media.js.map +1 -0
  319. package/plugin/dist/parse-svelte.d.ts +35 -0
  320. package/plugin/dist/parse-svelte.js +120 -0
  321. package/plugin/dist/parse-svelte.js.map +1 -0
  322. package/plugin/dist/route-tree.d.ts +27 -0
  323. package/plugin/dist/route-tree.js +69 -0
  324. package/plugin/dist/route-tree.js.map +1 -0
  325. package/plugin/dist/transforms.d.ts +42 -0
  326. package/plugin/dist/transforms.js +95 -0
  327. package/plugin/dist/transforms.js.map +1 -0
@@ -0,0 +1,225 @@
1
+ <script lang="ts">
2
+ import { page } from '$app/state';
3
+ import ImagesIcon from './icons/images.svelte';
4
+ import { cmsStore, type MediaItem } from '../cms/cms-store.svelte.js';
5
+ import CmsMediaPicker from '../cms/cms-media-picker.svelte';
6
+ import type { CmsPayload, SiteFieldSchema, SiteSchema } from '../cms/scope.js';
7
+ import { clickOutside } from './click-outside.js';
8
+ import PanelFooter from './panel-footer.svelte';
9
+ import PanelHeader from './panel-header.svelte';
10
+ import Panel from './panel.svelte';
11
+ import { Button } from './ui/button/index.js';
12
+ import { Input } from './ui/input/index.js';
13
+ import { Textarea } from './ui/textarea/index.js';
14
+
15
+ type Props = { onClose: () => void; onSave: () => void | Promise<void> };
16
+ let { onClose, onSave }: Props = $props();
17
+
18
+ const cms = $derived(page.data.cms as CmsPayload | undefined);
19
+ const schema = $derived<SiteSchema>(cms?.site?.schema ?? {});
20
+ const endpoint = $derived(cms?.endpoint ?? '/api/cms');
21
+
22
+ // Flat (path → schema) view for save/reset; sections preserved for layout.
23
+ const sections = $derived(Object.entries(schema));
24
+ const allFieldPaths = $derived.by(() => {
25
+ const out: Array<{ path: string; schema: SiteFieldSchema }> = [];
26
+ for (const [sectionKey, section] of sections) {
27
+ for (const [fieldKey, fieldSchema] of Object.entries(section.fields)) {
28
+ out.push({ path: `${sectionKey}.${fieldKey}`, schema: fieldSchema });
29
+ }
30
+ }
31
+ return out;
32
+ });
33
+
34
+ const persistedValue = (path: string): unknown => cmsStore.getSiteValue(path);
35
+
36
+ // Local form state — typing only updates `local`; nothing reaches
37
+ // `cmsStore.siteDraft` until Save fires (matches seo-panel.svelte). That
38
+ // keeps the bar's "X drafts" count from flickering as the user explores.
39
+ let local = $state<Record<string, unknown>>({});
40
+
41
+ $effect(() => {
42
+ const next: Record<string, unknown> = {};
43
+ for (const { path } of allFieldPaths) next[path] = persistedValue(path);
44
+ local = next;
45
+ });
46
+
47
+ // Per-field media library popover state — keyed by field path.
48
+ let openLibrary = $state<string | null>(null);
49
+
50
+ const fieldLabelClass = 'vela:text-[12px] vela:text-bar-text-secondary';
51
+
52
+ const stringValue = (v: unknown): string => (typeof v === 'string' ? v : '');
53
+ const numberValue = (v: unknown): number | null =>
54
+ typeof v === 'number' && !Number.isNaN(v) ? v : null;
55
+
56
+ const setNumber = (path: string, raw: string) => {
57
+ if (raw === '') local[path] = undefined;
58
+ else {
59
+ const n = Number(raw);
60
+ local[path] = Number.isFinite(n) ? n : undefined;
61
+ }
62
+ };
63
+
64
+ const onLibrarySelect = (path: string, item: MediaItem) => {
65
+ local[path] = item.url;
66
+ openLibrary = null;
67
+ };
68
+
69
+ const handleSave = async () => {
70
+ for (const { path } of allFieldPaths) {
71
+ const v = local[path];
72
+ if (v !== persistedValue(path)) cmsStore.setSiteValue(path, v);
73
+ }
74
+ await onSave();
75
+ };
76
+ </script>
77
+
78
+ <Panel ariaLabel="Site settings" {onClose}>
79
+ <PanelHeader title="Site settings" {onClose} />
80
+
81
+ <form
82
+ class="vela:overflow-y-auto vela:px-4 vela:pb-4 vela:flex vela:flex-col vela:gap-5"
83
+ onsubmit={(e) => {
84
+ e.preventDefault();
85
+ handleSave();
86
+ }}
87
+ >
88
+ {#if sections.length === 0}
89
+ <p class="vela:text-[13px] vela:text-bar-text-tertiary vela:py-2">
90
+ No site settings have been declared. Pass a <code>site</code> schema to
91
+ <code>createCms()</code> to add fields here.
92
+ </p>
93
+ {:else}
94
+ {#each sections as [sectionKey, section] (sectionKey)}
95
+ <section class="vela:flex vela:flex-col vela:gap-3">
96
+ <h3
97
+ class="vela:text-[10px] vela:font-semibold vela:uppercase vela:tracking-widest vela:text-bar-text-tertiary vela:m-0"
98
+ >
99
+ {section.label}
100
+ </h3>
101
+
102
+ {#each Object.entries(section.fields) as [fieldKey, fieldSchema] (fieldKey)}
103
+ {@const path = `${sectionKey}.${fieldKey}`}
104
+ {#if fieldSchema.type === 'markdown'}
105
+ <label class="vela:flex vela:flex-col vela:gap-1.5">
106
+ <span class={fieldLabelClass}>{fieldSchema.label}</span>
107
+ <Textarea
108
+ value={stringValue(local[path])}
109
+ placeholder={fieldSchema.placeholder ?? ''}
110
+ oninput={(e) => (local[path] = e.currentTarget.value)}
111
+ />
112
+ </label>
113
+ {:else if fieldSchema.type === 'number'}
114
+ <label class="vela:flex vela:flex-col vela:gap-1.5">
115
+ <span class={fieldLabelClass}>{fieldSchema.label}</span>
116
+ <Input
117
+ type="number"
118
+ value={numberValue(local[path]) ?? ''}
119
+ placeholder={fieldSchema.placeholder ?? ''}
120
+ oninput={(e) => setNumber(path, e.currentTarget.value)}
121
+ />
122
+ </label>
123
+ {:else if fieldSchema.type === 'datetime'}
124
+ <label class="vela:flex vela:flex-col vela:gap-1.5">
125
+ <span class={fieldLabelClass}>{fieldSchema.label}</span>
126
+ <Input
127
+ type="datetime-local"
128
+ value={stringValue(local[path])}
129
+ oninput={(e) => (local[path] = e.currentTarget.value)}
130
+ />
131
+ </label>
132
+ {:else if fieldSchema.type === 'color'}
133
+ <label class="vela:flex vela:flex-col vela:gap-1.5">
134
+ <span class={fieldLabelClass}>{fieldSchema.label}</span>
135
+ <div class="vela:flex vela:items-center vela:gap-2">
136
+ <input
137
+ type="color"
138
+ value={stringValue(local[path]) || '#000000'}
139
+ oninput={(e) => (local[path] = e.currentTarget.value)}
140
+ class="vela:h-9 vela:w-12 vela:rounded vela:border vela:border-[var(--cms-bar-divider)] vela:bg-[var(--cms-bar-bg-hover)] vela:cursor-pointer"
141
+ />
142
+ <Input
143
+ type="text"
144
+ value={stringValue(local[path])}
145
+ placeholder={fieldSchema.placeholder ?? '#1f1f1f'}
146
+ oninput={(e) => (local[path] = e.currentTarget.value)}
147
+ />
148
+ </div>
149
+ </label>
150
+ {:else if fieldSchema.type === 'url'}
151
+ <label class="vela:flex vela:flex-col vela:gap-1.5">
152
+ <span class={fieldLabelClass}>{fieldSchema.label}</span>
153
+ <Input
154
+ type="url"
155
+ value={stringValue(local[path])}
156
+ placeholder={fieldSchema.placeholder ?? 'https://…'}
157
+ oninput={(e) => (local[path] = e.currentTarget.value)}
158
+ />
159
+ </label>
160
+ {:else if fieldSchema.type === 'image'}
161
+ <div class="vela:flex vela:flex-col vela:gap-1.5">
162
+ <span class={fieldLabelClass}>{fieldSchema.label}</span>
163
+ <div class="vela:relative vela:flex vela:items-center vela:gap-2">
164
+ <Input
165
+ type="url"
166
+ value={stringValue(local[path])}
167
+ placeholder={fieldSchema.placeholder ?? 'https://…'}
168
+ oninput={(e) => (local[path] = e.currentTarget.value)}
169
+ />
170
+ <Button
171
+ type="button"
172
+ variant="ghost"
173
+ size="pill-icon"
174
+ aria-label="Choose from media library"
175
+ onclick={() => (openLibrary = openLibrary === path ? null : path)}
176
+ >
177
+ <ImagesIcon class="vela:size-4" />
178
+ </Button>
179
+ {#if openLibrary === path}
180
+ <div
181
+ role="dialog"
182
+ aria-label="Choose from media library"
183
+ class="vela:absolute vela:right-0 vela:top-full vela:mt-1 vela:z-30
184
+ vela:p-2 vela:rounded-md vela:bg-bar-bg
185
+ vela:border vela:border-[var(--cms-bar-divider)]
186
+ vela:shadow-[0_8px_24px_rgba(0,0,0,0.35)]"
187
+ use:clickOutside={() => (openLibrary = null)}
188
+ >
189
+ <CmsMediaPicker {endpoint} onSelect={(item) => onLibrarySelect(path, item)} />
190
+ </div>
191
+ {/if}
192
+ </div>
193
+ {#if stringValue(local[path])}
194
+ <img
195
+ src={stringValue(local[path])}
196
+ alt=""
197
+ class="vela:max-h-24 vela:w-auto vela:rounded vela:border vela:border-[var(--cms-bar-divider)] vela:object-contain vela:bg-[var(--cms-bar-bg-hover)]"
198
+ />
199
+ {/if}
200
+ </div>
201
+ {:else}
202
+ <label class="vela:flex vela:flex-col vela:gap-1.5">
203
+ <span class={fieldLabelClass}>{fieldSchema.label}</span>
204
+ <Input
205
+ type="text"
206
+ value={stringValue(local[path])}
207
+ placeholder={fieldSchema.placeholder ?? ''}
208
+ oninput={(e) => (local[path] = e.currentTarget.value)}
209
+ />
210
+ </label>
211
+ {/if}
212
+ {/each}
213
+ </section>
214
+ {/each}
215
+ {/if}
216
+ </form>
217
+
218
+ <PanelFooter>
219
+ <span>Save to keep your changes</span>
220
+ <div class="vela:flex vela:items-center vela:gap-1.5">
221
+ <Button variant="ghost" size="pill" onclick={onClose}>Cancel</Button>
222
+ <Button size="pill" onclick={handleSave}>Save</Button>
223
+ </div>
224
+ </PanelFooter>
225
+ </Panel>
@@ -0,0 +1,7 @@
1
+ type Props = {
2
+ onClose: () => void;
3
+ onSave: () => void | Promise<void>;
4
+ };
5
+ declare const SiteSettingsPanel: import("svelte").Component<Props, {}, "">;
6
+ type SiteSettingsPanel = ReturnType<typeof SiteSettingsPanel>;
7
+ export default SiteSettingsPanel;
@@ -0,0 +1,49 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import { cn } from './utils.js';
4
+
5
+ type Variant = 'clean' | 'warn' | 'edit';
6
+
7
+ type Props = {
8
+ variant: Variant;
9
+ onclick?: () => void;
10
+ class?: string;
11
+ children: Snippet;
12
+ };
13
+ let { variant, onclick, class: className, children }: Props = $props();
14
+
15
+ const variantClass: Record<Variant, string> = {
16
+ clean: 'vela:text-[var(--cms-status-clean-text)]',
17
+ warn: 'vela:bg-[var(--cms-status-warn-bg)] vela:text-[var(--cms-status-warn-text)] vela:animate-bar-pulse',
18
+ edit: 'vela:bg-[var(--cms-status-edit-bg)] vela:text-[var(--cms-status-edit-text)]'
19
+ };
20
+ const dotClass: Record<Variant, string> = {
21
+ clean: 'vela:bg-[var(--cms-status-clean-dot)]',
22
+ warn: 'vela:bg-[var(--cms-status-warn-dot)]',
23
+ edit: 'vela:bg-[var(--cms-status-edit-dot)]'
24
+ };
25
+
26
+ const baseClass =
27
+ 'vela:inline-flex vela:items-center vela:gap-1.5 vela:h-7 vela:pl-2.5 vela:pr-3 vela:rounded-full vela:text-[13px]';
28
+ </script>
29
+
30
+ {#if onclick}
31
+ <button
32
+ type="button"
33
+ {onclick}
34
+ class={cn(
35
+ baseClass,
36
+ variantClass[variant],
37
+ 'vela:cursor-pointer vela:hover:bg-[var(--cms-status-warn-bg-hover)] vela:focus:outline-none',
38
+ className
39
+ )}
40
+ >
41
+ <span class={cn('vela:w-1.5 vela:h-1.5 vela:rounded-full', dotClass[variant])}></span>
42
+ {@render children()}
43
+ </button>
44
+ {:else}
45
+ <div class={cn(baseClass, variantClass[variant], className)}>
46
+ <span class={cn('vela:w-1.5 vela:h-1.5 vela:rounded-full', dotClass[variant])}></span>
47
+ {@render children()}
48
+ </div>
49
+ {/if}
@@ -0,0 +1,11 @@
1
+ import type { Snippet } from 'svelte';
2
+ type Variant = 'clean' | 'warn' | 'edit';
3
+ type Props = {
4
+ variant: Variant;
5
+ onclick?: () => void;
6
+ class?: string;
7
+ children: Snippet;
8
+ };
9
+ declare const StatusPill: import("svelte").Component<Props, {}, "">;
10
+ type StatusPill = ReturnType<typeof StatusPill>;
11
+ export default StatusPill;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Shared theme state for the admin bar and editable CMS components.
3
+ *
4
+ * The View → Theme menu writes here; the bar's wrapper, every editable
5
+ * component's `<CssRoot>`, and the system-preference listener all read from
6
+ * the same singleton so theme changes propagate everywhere immediately.
7
+ */
8
+ export type AdminBarTheme = 'system' | 'light' | 'dark';
9
+ declare class AdminBarThemeState {
10
+ pref: AdminBarTheme;
11
+ systemPrefersDark: boolean;
12
+ get resolved(): 'light' | 'dark';
13
+ setPref(next: AdminBarTheme): void;
14
+ }
15
+ export declare const adminBarTheme: AdminBarThemeState;
16
+ export {};
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Shared theme state for the admin bar and editable CMS components.
3
+ *
4
+ * The View → Theme menu writes here; the bar's wrapper, every editable
5
+ * component's `<CssRoot>`, and the system-preference listener all read from
6
+ * the same singleton so theme changes propagate everywhere immediately.
7
+ */
8
+ import { browser } from '$app/environment';
9
+ const STORAGE_KEY = 'cms.theme';
10
+ const readStoredTheme = () => {
11
+ if (typeof localStorage === 'undefined')
12
+ return null;
13
+ const raw = localStorage.getItem(STORAGE_KEY);
14
+ return raw === 'system' || raw === 'light' || raw === 'dark' ? raw : null;
15
+ };
16
+ class AdminBarThemeState {
17
+ pref = $state(browser ? (readStoredTheme() ?? 'system') : 'system');
18
+ systemPrefersDark = $state(false);
19
+ get resolved() {
20
+ return this.pref === 'system' ? (this.systemPrefersDark ? 'dark' : 'light') : this.pref;
21
+ }
22
+ setPref(next) {
23
+ this.pref = next;
24
+ try {
25
+ localStorage.setItem(STORAGE_KEY, next);
26
+ }
27
+ catch {
28
+ /* private mode etc. — non-fatal */
29
+ }
30
+ }
31
+ }
32
+ export const adminBarTheme = new AdminBarThemeState();
33
+ if (browser) {
34
+ const mq = window.matchMedia('(prefers-color-scheme: dark)');
35
+ adminBarTheme.systemPrefersDark = mq.matches;
36
+ mq.addEventListener('change', (e) => {
37
+ adminBarTheme.systemPrefersDark = e.matches;
38
+ });
39
+ }
@@ -0,0 +1,57 @@
1
+ <script lang="ts" module>
2
+ import type { WithElementRef } from 'bits-ui';
3
+ import type { HTMLAnchorAttributes, HTMLAttributes } from 'svelte/elements';
4
+ import { variants, type VariantProps } from '../../variants.js';
5
+
6
+ export const badgeVariants = variants({
7
+ base: 'vela:inline-flex vela:items-center vela:justify-center vela:gap-1 vela:rounded-md vela:px-2 vela:py-0.5 vela:text-[11px] vela:font-medium vela:tracking-tight vela:whitespace-nowrap',
8
+ variants: {
9
+ variant: {
10
+ default: 'vela:bg-[var(--cms-bar-bg-hover)] vela:text-bar-text-secondary',
11
+ warn: 'vela:bg-[var(--cms-status-warn-bg)] vela:text-[var(--cms-status-warn-text)]',
12
+ success:
13
+ 'vela:bg-[var(--cms-status-success-bg)] vela:text-[var(--cms-status-success-text)]',
14
+ edit: 'vela:bg-[var(--cms-status-edit-bg)] vela:text-[var(--cms-status-edit-text)]',
15
+ destructive: 'vela:bg-[var(--cms-status-error-bg)] vela:text-[var(--cms-status-error-text)]'
16
+ },
17
+ size: {
18
+ default: 'vela:px-2 vela:py-0.5 vela:text-[11px]',
19
+ sm: 'vela:px-1.5 vela:py-0.5 vela:text-[10px] vela:font-semibold vela:uppercase vela:tracking-wider'
20
+ }
21
+ },
22
+ defaultVariants: { variant: 'default', size: 'default' }
23
+ });
24
+
25
+ export type BadgeVariant = VariantProps<typeof badgeVariants>['variant'];
26
+ export type BadgeSize = VariantProps<typeof badgeVariants>['size'];
27
+
28
+ export type BadgeProps = WithElementRef<HTMLAttributes<HTMLSpanElement>> &
29
+ WithElementRef<HTMLAnchorAttributes> & {
30
+ variant?: BadgeVariant;
31
+ size?: BadgeSize;
32
+ };
33
+ </script>
34
+
35
+ <script lang="ts">
36
+ import { cn } from '../../utils.js';
37
+
38
+ let {
39
+ class: className,
40
+ variant = 'default',
41
+ size = 'default',
42
+ ref = $bindable(null),
43
+ href = undefined,
44
+ children,
45
+ ...restProps
46
+ }: BadgeProps = $props();
47
+ </script>
48
+
49
+ {#if href}
50
+ <a bind:this={ref} class={cn(badgeVariants({ variant, size }), className)} {href} {...restProps}>
51
+ {@render children?.()}
52
+ </a>
53
+ {:else}
54
+ <span bind:this={ref} class={cn(badgeVariants({ variant, size }), className)} {...restProps}>
55
+ {@render children?.()}
56
+ </span>
57
+ {/if}
@@ -0,0 +1,16 @@
1
+ import type { WithElementRef } from 'bits-ui';
2
+ import type { HTMLAnchorAttributes, HTMLAttributes } from 'svelte/elements';
3
+ import { type VariantProps } from '../../variants.js';
4
+ export declare const badgeVariants: (props?: {
5
+ variant?: "default" | "destructive" | "warn" | "success" | "edit" | undefined;
6
+ size?: "default" | "sm" | undefined;
7
+ }) => string;
8
+ export type BadgeVariant = VariantProps<typeof badgeVariants>['variant'];
9
+ export type BadgeSize = VariantProps<typeof badgeVariants>['size'];
10
+ export type BadgeProps = WithElementRef<HTMLAttributes<HTMLSpanElement>> & WithElementRef<HTMLAnchorAttributes> & {
11
+ variant?: BadgeVariant;
12
+ size?: BadgeSize;
13
+ };
14
+ declare const Badge: import("svelte").Component<BadgeProps, {}, "ref">;
15
+ type Badge = ReturnType<typeof Badge>;
16
+ export default Badge;
@@ -0,0 +1,4 @@
1
+ import Root from './badge.svelte';
2
+ export { badgeVariants, type BadgeProps, type BadgeSize, type BadgeVariant } from './badge.svelte';
3
+ export { Root, Root as Badge };
4
+ export default Root;
@@ -0,0 +1,4 @@
1
+ import Root from './badge.svelte';
2
+ export { badgeVariants } from './badge.svelte';
3
+ export { Root, Root as Badge };
4
+ export default Root;
@@ -0,0 +1,73 @@
1
+ <script lang="ts" module>
2
+ import type { WithElementRef } from 'bits-ui';
3
+ import type { HTMLAnchorAttributes, HTMLButtonAttributes } from 'svelte/elements';
4
+ import { variants, type VariantProps } from '../../variants.js';
5
+
6
+ export const buttonVariants = variants({
7
+ base: 'vela:inline-flex vela:items-center vela:justify-center vela:gap-2 vela:whitespace-nowrap vela:rounded-md vela:text-sm vela:font-medium vela:transition-colors vela:focus-visible:outline-none vela:focus-visible:ring-1 vela:focus-visible:ring-ring vela:disabled:pointer-events-none vela:disabled:opacity-50 vela:cursor-pointer',
8
+ variants: {
9
+ variant: {
10
+ default: 'vela:bg-primary vela:text-primary-foreground vela:hover:bg-primary/90',
11
+ destructive:
12
+ 'vela:bg-destructive vela:text-destructive-foreground vela:hover:bg-destructive/90',
13
+ outline:
14
+ 'vela:border vela:border-[var(--cms-bar-divider)] vela:bg-transparent vela:text-bar-text-secondary vela:hover:text-bar-text vela:hover:bg-[var(--cms-bar-bg-hover)]',
15
+ 'outline-destructive':
16
+ 'vela:border vela:border-[var(--cms-status-error-border)] vela:bg-transparent vela:text-[var(--cms-status-error-text-base)] vela:hover:text-[var(--cms-status-error-text-hover)] vela:hover:bg-[var(--cms-status-error-bg-hover)]',
17
+ secondary: 'vela:bg-secondary vela:text-secondary-foreground vela:hover:bg-secondary/80',
18
+ ghost:
19
+ 'vela:bg-transparent vela:text-bar-text-secondary vela:hover:text-bar-text vela:hover:bg-[var(--cms-bar-bg-hover)]',
20
+ link: 'vela:text-primary vela:underline-offset-4 vela:hover:underline'
21
+ },
22
+ size: {
23
+ default: 'vela:h-9 vela:px-4 vela:py-2',
24
+ sm: 'vela:h-8 vela:rounded-md vela:px-3 vela:text-xs',
25
+ lg: 'vela:h-10 vela:rounded-md vela:px-8',
26
+ icon: 'vela:h-9 vela:w-9',
27
+ pill: 'vela:h-7 vela:rounded-full vela:px-3 vela:text-[12px]',
28
+ 'pill-icon': 'vela:h-7 vela:w-7 vela:rounded-full',
29
+ xs: 'vela:h-6 vela:rounded-md vela:px-2 vela:text-[11px]'
30
+ }
31
+ },
32
+ defaultVariants: { variant: 'default', size: 'default' }
33
+ });
34
+
35
+ export type ButtonVariant = VariantProps<typeof buttonVariants>['variant'];
36
+ export type ButtonSize = VariantProps<typeof buttonVariants>['size'];
37
+
38
+ export type ButtonProps = WithElementRef<HTMLButtonAttributes> &
39
+ WithElementRef<HTMLAnchorAttributes> & {
40
+ variant?: ButtonVariant;
41
+ size?: ButtonSize;
42
+ };
43
+ </script>
44
+
45
+ <script lang="ts">
46
+ import { cn } from '../../utils.js';
47
+
48
+ let {
49
+ class: className,
50
+ variant = 'default',
51
+ size = 'default',
52
+ ref = $bindable(null),
53
+ href = undefined,
54
+ type = 'button',
55
+ children,
56
+ ...restProps
57
+ }: ButtonProps = $props();
58
+ </script>
59
+
60
+ {#if href}
61
+ <a bind:this={ref} class={cn(buttonVariants({ variant, size }), className)} {href} {...restProps}>
62
+ {@render children?.()}
63
+ </a>
64
+ {:else}
65
+ <button
66
+ bind:this={ref}
67
+ class={cn(buttonVariants({ variant, size }), className)}
68
+ {type}
69
+ {...restProps}
70
+ >
71
+ {@render children?.()}
72
+ </button>
73
+ {/if}
@@ -0,0 +1,16 @@
1
+ import type { WithElementRef } from 'bits-ui';
2
+ import type { HTMLAnchorAttributes, HTMLButtonAttributes } from 'svelte/elements';
3
+ import { type VariantProps } from '../../variants.js';
4
+ export declare const buttonVariants: (props?: {
5
+ variant?: "link" | "default" | "destructive" | "outline" | "outline-destructive" | "secondary" | "ghost" | undefined;
6
+ size?: "default" | "sm" | "lg" | "icon" | "pill" | "pill-icon" | "xs" | undefined;
7
+ }) => string;
8
+ export type ButtonVariant = VariantProps<typeof buttonVariants>['variant'];
9
+ export type ButtonSize = VariantProps<typeof buttonVariants>['size'];
10
+ export type ButtonProps = WithElementRef<HTMLButtonAttributes> & WithElementRef<HTMLAnchorAttributes> & {
11
+ variant?: ButtonVariant;
12
+ size?: ButtonSize;
13
+ };
14
+ declare const Button: import("svelte").Component<ButtonProps, {}, "ref">;
15
+ type Button = ReturnType<typeof Button>;
16
+ export default Button;
@@ -0,0 +1,4 @@
1
+ import Root from './button.svelte';
2
+ export { buttonVariants, type ButtonProps, type ButtonSize, type ButtonVariant } from './button.svelte';
3
+ export { Root, Root as Button };
4
+ export default Root;
@@ -0,0 +1,4 @@
1
+ import Root from './button.svelte';
2
+ export { buttonVariants } from './button.svelte';
3
+ export { Root, Root as Button };
4
+ export default Root;
@@ -0,0 +1,7 @@
1
+ <script lang="ts">
2
+ import { Collapsible as CollapsiblePrimitive } from 'bits-ui';
3
+
4
+ let { ref = $bindable(null), ...restProps }: CollapsiblePrimitive.ContentProps = $props();
5
+ </script>
6
+
7
+ <CollapsiblePrimitive.Content bind:ref data-slot="collapsible-content" {...restProps} />
@@ -0,0 +1,4 @@
1
+ import { Collapsible as CollapsiblePrimitive } from 'bits-ui';
2
+ declare const CollapsibleContent: import("svelte").Component<CollapsiblePrimitive.ContentProps, {}, "ref">;
3
+ type CollapsibleContent = ReturnType<typeof CollapsibleContent>;
4
+ export default CollapsibleContent;
@@ -0,0 +1,7 @@
1
+ <script lang="ts">
2
+ import { Collapsible as CollapsiblePrimitive } from 'bits-ui';
3
+
4
+ let { ref = $bindable(null), ...restProps }: CollapsiblePrimitive.TriggerProps = $props();
5
+ </script>
6
+
7
+ <CollapsiblePrimitive.Trigger bind:ref data-slot="collapsible-trigger" {...restProps} />
@@ -0,0 +1,4 @@
1
+ import { Collapsible as CollapsiblePrimitive } from 'bits-ui';
2
+ declare const CollapsibleTrigger: import("svelte").Component<CollapsiblePrimitive.TriggerProps, {}, "ref">;
3
+ type CollapsibleTrigger = ReturnType<typeof CollapsibleTrigger>;
4
+ export default CollapsibleTrigger;
@@ -0,0 +1,7 @@
1
+ <script lang="ts">
2
+ import { Collapsible as CollapsiblePrimitive } from 'bits-ui';
3
+
4
+ let { ref = $bindable(null), ...restProps }: CollapsiblePrimitive.RootProps = $props();
5
+ </script>
6
+
7
+ <CollapsiblePrimitive.Root bind:ref data-slot="collapsible" {...restProps} />
@@ -0,0 +1,4 @@
1
+ import { Collapsible as CollapsiblePrimitive } from 'bits-ui';
2
+ declare const Collapsible: import("svelte").Component<CollapsiblePrimitive.RootProps, {}, "ref">;
3
+ type Collapsible = ReturnType<typeof Collapsible>;
4
+ export default Collapsible;
@@ -0,0 +1,4 @@
1
+ import Root from './collapsible.svelte';
2
+ import Trigger from './collapsible-trigger.svelte';
3
+ import Content from './collapsible-content.svelte';
4
+ export { Root, Trigger, Content, Root as Collapsible, Trigger as CollapsibleTrigger, Content as CollapsibleContent };
@@ -0,0 +1,6 @@
1
+ import Root from './collapsible.svelte';
2
+ import Trigger from './collapsible-trigger.svelte';
3
+ import Content from './collapsible-content.svelte';
4
+ export { Root, Trigger, Content,
5
+ //
6
+ Root as Collapsible, Trigger as CollapsibleTrigger, Content as CollapsibleContent };
@@ -0,0 +1,7 @@
1
+ <script lang="ts">
2
+ import { Dialog as DialogPrimitive } from 'bits-ui';
3
+
4
+ let { ref = $bindable(null), ...restProps }: DialogPrimitive.CloseProps = $props();
5
+ </script>
6
+
7
+ <DialogPrimitive.Close bind:ref data-slot="dialog-close" {...restProps} />
@@ -0,0 +1,4 @@
1
+ import { Dialog as DialogPrimitive } from 'bits-ui';
2
+ declare const DialogClose: import("svelte").Component<DialogPrimitive.TriggerProps, {}, "ref">;
3
+ type DialogClose = ReturnType<typeof DialogClose>;
4
+ export default DialogClose;