svelte-firekit 0.1.6 → 0.1.8

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 (355) hide show
  1. package/README.md +365 -308
  2. package/dist/components/docs/doc-content.svelte +19 -0
  3. package/dist/components/docs/doc-content.svelte.d.ts +6 -0
  4. package/dist/components/docs/doc-header.svelte +24 -0
  5. package/dist/components/docs/doc-header.svelte.d.ts +13 -0
  6. package/dist/components/docs/doc-renderer.svelte +27 -0
  7. package/dist/components/docs/doc-renderer.svelte.d.ts +8 -0
  8. package/dist/components/docs/mobile-table-of-contents.svelte +42 -0
  9. package/dist/components/docs/mobile-table-of-contents.svelte.d.ts +3 -0
  10. package/dist/components/docs/table-of-contents.svelte +33 -0
  11. package/dist/components/docs/table-of-contents.svelte.d.ts +4 -0
  12. package/dist/components/docs/toc.svelte.d.ts +16 -0
  13. package/dist/components/docs/toc.svelte.js +59 -0
  14. package/dist/components/{Collection.svelte → firekit/Collection.svelte} +2 -2
  15. package/dist/components/{Doc.svelte → firekit/Doc.svelte} +11 -11
  16. package/dist/components/{Doc.svelte.d.ts → firekit/Doc.svelte.d.ts} +1 -1
  17. package/dist/components/{Node.svelte → firekit/Node.svelte} +2 -2
  18. package/dist/components/{auth-guard.svelte → firekit/auth-guard.svelte} +5 -5
  19. package/dist/components/{auth-guard.svelte.d.ts → firekit/auth-guard.svelte.d.ts} +1 -1
  20. package/dist/components/{custom-guard.svelte → firekit/custom-guard.svelte} +5 -5
  21. package/dist/components/{custom-guard.svelte.d.ts → firekit/custom-guard.svelte.d.ts} +1 -1
  22. package/dist/components/{download-url.svelte → firekit/download-url.svelte} +2 -2
  23. package/dist/components/{firebase-app.svelte → firekit/firebase-app.svelte} +5 -2
  24. package/dist/components/{node-list.svelte → firekit/node-list.svelte} +2 -2
  25. package/dist/components/{signed-in.svelte → firekit/signed-in.svelte} +3 -3
  26. package/dist/components/{signed-in.svelte.d.ts → firekit/signed-in.svelte.d.ts} +1 -1
  27. package/dist/components/{signed-out.svelte → firekit/signed-out.svelte} +2 -2
  28. package/dist/components/{storage-list.svelte → firekit/storage-list.svelte} +2 -2
  29. package/dist/components/{upload-task.svelte → firekit/upload-task.svelte} +2 -2
  30. package/dist/components/nav/app-sidebar.svelte +175 -0
  31. package/dist/components/nav/app-sidebar.svelte.d.ts +9 -0
  32. package/dist/components/nav/auto-breadcrumb.svelte +41 -0
  33. package/dist/components/nav/auto-breadcrumb.svelte.d.ts +3 -0
  34. package/dist/components/nav/dark-mode-toggle.svelte +17 -0
  35. package/dist/components/nav/dark-mode-toggle.svelte.d.ts +18 -0
  36. package/dist/components/nav/nav-components.svelte +24 -0
  37. package/dist/components/nav/nav-components.svelte.d.ts +11 -0
  38. package/dist/components/nav/nav-main.svelte +45 -0
  39. package/dist/components/nav/nav-main.svelte.d.ts +11 -0
  40. package/dist/components/nav/nav-secondary.svelte +32 -0
  41. package/dist/components/nav/nav-secondary.svelte.d.ts +14 -0
  42. package/dist/components/nav/site-header.svelte +32 -0
  43. package/dist/components/nav/site-header.svelte.d.ts +18 -0
  44. package/dist/components/ui/avatar/avatar-fallback.svelte +17 -0
  45. package/dist/components/ui/avatar/avatar-fallback.svelte.d.ts +4 -0
  46. package/dist/components/ui/avatar/avatar-image.svelte +17 -0
  47. package/dist/components/ui/avatar/avatar-image.svelte.d.ts +4 -0
  48. package/dist/components/ui/avatar/avatar.svelte +19 -0
  49. package/dist/components/ui/avatar/avatar.svelte.d.ts +4 -0
  50. package/dist/components/ui/avatar/index.d.ts +4 -0
  51. package/dist/components/ui/avatar/index.js +6 -0
  52. package/dist/components/ui/badge/badge.svelte +50 -0
  53. package/dist/components/ui/badge/badge.svelte.d.ts +32 -0
  54. package/dist/components/ui/badge/index.d.ts +2 -0
  55. package/dist/components/ui/badge/index.js +2 -0
  56. package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +23 -0
  57. package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte.d.ts +5 -0
  58. package/dist/components/ui/breadcrumb/breadcrumb-item.svelte +20 -0
  59. package/dist/components/ui/breadcrumb/breadcrumb-item.svelte.d.ts +5 -0
  60. package/dist/components/ui/breadcrumb/breadcrumb-link.svelte +31 -0
  61. package/dist/components/ui/breadcrumb/breadcrumb-link.svelte.d.ts +11 -0
  62. package/dist/components/ui/breadcrumb/breadcrumb-list.svelte +23 -0
  63. package/dist/components/ui/breadcrumb/breadcrumb-list.svelte.d.ts +5 -0
  64. package/dist/components/ui/breadcrumb/breadcrumb-page.svelte +23 -0
  65. package/dist/components/ui/breadcrumb/breadcrumb-page.svelte.d.ts +5 -0
  66. package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte +27 -0
  67. package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte.d.ts +5 -0
  68. package/dist/components/ui/breadcrumb/breadcrumb.svelte +21 -0
  69. package/dist/components/ui/breadcrumb/breadcrumb.svelte.d.ts +5 -0
  70. package/dist/components/ui/breadcrumb/index.d.ts +8 -0
  71. package/dist/components/ui/breadcrumb/index.js +10 -0
  72. package/dist/components/ui/button/button.svelte +80 -0
  73. package/dist/components/ui/button/button.svelte.d.ts +58 -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 +20 -0
  77. package/dist/components/ui/card/card-action.svelte.d.ts +5 -0
  78. package/dist/components/ui/card/card-content.svelte +15 -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 +20 -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 +20 -0
  87. package/dist/components/ui/card/card-title.svelte.d.ts +5 -0
  88. package/dist/components/ui/card/card.svelte +23 -0
  89. package/dist/components/ui/card/card.svelte.d.ts +5 -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/chart/chart-container.svelte +80 -0
  93. package/dist/components/ui/chart/chart-container.svelte.d.ts +9 -0
  94. package/dist/components/ui/chart/chart-style.svelte +36 -0
  95. package/dist/components/ui/chart/chart-style.svelte.d.ts +8 -0
  96. package/dist/components/ui/chart/chart-tooltip.svelte +159 -0
  97. package/dist/components/ui/chart/chart-tooltip.svelte.d.ts +27 -0
  98. package/dist/components/ui/chart/chart-utils.d.ts +36 -0
  99. package/dist/components/ui/chart/chart-utils.js +33 -0
  100. package/dist/components/ui/chart/index.d.ts +4 -0
  101. package/dist/components/ui/chart/index.js +4 -0
  102. package/dist/components/ui/checkbox/checkbox.svelte +36 -0
  103. package/dist/components/ui/checkbox/checkbox.svelte.d.ts +4 -0
  104. package/dist/components/ui/checkbox/index.d.ts +2 -0
  105. package/dist/components/ui/checkbox/index.js +4 -0
  106. package/dist/components/ui/data-table/data-table.svelte.d.ts +40 -0
  107. package/dist/components/ui/data-table/data-table.svelte.js +110 -0
  108. package/dist/components/ui/data-table/flex-render.svelte +36 -0
  109. package/dist/components/ui/data-table/flex-render.svelte.d.ts +30 -0
  110. package/dist/components/ui/data-table/index.d.ts +3 -0
  111. package/dist/components/ui/data-table/index.js +3 -0
  112. package/dist/components/ui/data-table/render-helpers.d.ts +90 -0
  113. package/dist/components/ui/data-table/render-helpers.js +99 -0
  114. package/dist/components/ui/dialog/dialog-close.svelte +7 -0
  115. package/dist/components/ui/dialog/dialog-close.svelte.d.ts +4 -0
  116. package/dist/components/ui/dialog/dialog-content.svelte +43 -0
  117. package/dist/components/ui/dialog/dialog-content.svelte.d.ts +11 -0
  118. package/dist/components/ui/dialog/dialog-description.svelte +17 -0
  119. package/dist/components/ui/dialog/dialog-description.svelte.d.ts +4 -0
  120. package/dist/components/ui/dialog/dialog-footer.svelte +20 -0
  121. package/dist/components/ui/dialog/dialog-footer.svelte.d.ts +5 -0
  122. package/dist/components/ui/dialog/dialog-header.svelte +20 -0
  123. package/dist/components/ui/dialog/dialog-header.svelte.d.ts +5 -0
  124. package/dist/components/ui/dialog/dialog-overlay.svelte +20 -0
  125. package/dist/components/ui/dialog/dialog-overlay.svelte.d.ts +4 -0
  126. package/dist/components/ui/dialog/dialog-title.svelte +17 -0
  127. package/dist/components/ui/dialog/dialog-title.svelte.d.ts +4 -0
  128. package/dist/components/ui/dialog/dialog-trigger.svelte +7 -0
  129. package/dist/components/ui/dialog/dialog-trigger.svelte.d.ts +4 -0
  130. package/dist/components/ui/dialog/index.d.ts +11 -0
  131. package/dist/components/ui/dialog/index.js +14 -0
  132. package/dist/components/ui/drawer/drawer-close.svelte +7 -0
  133. package/dist/components/ui/drawer/drawer-close.svelte.d.ts +4 -0
  134. package/dist/components/ui/drawer/drawer-content.svelte +37 -0
  135. package/dist/components/ui/drawer/drawer-content.svelte.d.ts +7 -0
  136. package/dist/components/ui/drawer/drawer-description.svelte +17 -0
  137. package/dist/components/ui/drawer/drawer-description.svelte.d.ts +4 -0
  138. package/dist/components/ui/drawer/drawer-footer.svelte +20 -0
  139. package/dist/components/ui/drawer/drawer-footer.svelte.d.ts +5 -0
  140. package/dist/components/ui/drawer/drawer-header.svelte +20 -0
  141. package/dist/components/ui/drawer/drawer-header.svelte.d.ts +5 -0
  142. package/dist/components/ui/drawer/drawer-nested.svelte +12 -0
  143. package/dist/components/ui/drawer/drawer-nested.svelte.d.ts +3 -0
  144. package/dist/components/ui/drawer/drawer-overlay.svelte +20 -0
  145. package/dist/components/ui/drawer/drawer-overlay.svelte.d.ts +4 -0
  146. package/dist/components/ui/drawer/drawer-title.svelte +17 -0
  147. package/dist/components/ui/drawer/drawer-title.svelte.d.ts +4 -0
  148. package/dist/components/ui/drawer/drawer-trigger.svelte +7 -0
  149. package/dist/components/ui/drawer/drawer-trigger.svelte.d.ts +4 -0
  150. package/dist/components/ui/drawer/drawer.svelte +12 -0
  151. package/dist/components/ui/drawer/drawer.svelte.d.ts +3 -0
  152. package/dist/components/ui/drawer/index.d.ts +13 -0
  153. package/dist/components/ui/drawer/index.js +15 -0
  154. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +41 -0
  155. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +9 -0
  156. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +27 -0
  157. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte.d.ts +7 -0
  158. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +22 -0
  159. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +8 -0
  160. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte +7 -0
  161. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte.d.ts +4 -0
  162. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +27 -0
  163. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +8 -0
  164. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +24 -0
  165. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte.d.ts +8 -0
  166. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +16 -0
  167. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +4 -0
  168. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +31 -0
  169. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +4 -0
  170. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +17 -0
  171. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte.d.ts +4 -0
  172. package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte +20 -0
  173. package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte.d.ts +5 -0
  174. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +20 -0
  175. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +4 -0
  176. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +29 -0
  177. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +7 -0
  178. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +7 -0
  179. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte.d.ts +4 -0
  180. package/dist/components/ui/dropdown-menu/index.d.ts +25 -0
  181. package/dist/components/ui/dropdown-menu/index.js +17 -0
  182. package/dist/components/ui/input/index.d.ts +2 -0
  183. package/dist/components/ui/input/index.js +4 -0
  184. package/dist/components/ui/input/input.svelte +51 -0
  185. package/dist/components/ui/input/input.svelte.d.ts +13 -0
  186. package/dist/components/ui/label/index.d.ts +2 -0
  187. package/dist/components/ui/label/index.js +4 -0
  188. package/dist/components/ui/label/label.svelte +20 -0
  189. package/dist/components/ui/label/label.svelte.d.ts +4 -0
  190. package/dist/components/ui/scroll-area/index.d.ts +3 -0
  191. package/dist/components/ui/scroll-area/index.js +5 -0
  192. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +31 -0
  193. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte.d.ts +4 -0
  194. package/dist/components/ui/scroll-area/scroll-area.svelte +40 -0
  195. package/dist/components/ui/scroll-area/scroll-area.svelte.d.ts +10 -0
  196. package/dist/components/ui/select/index.d.ts +11 -0
  197. package/dist/components/ui/select/index.js +14 -0
  198. package/dist/components/ui/select/select-content.svelte +40 -0
  199. package/dist/components/ui/select/select-content.svelte.d.ts +8 -0
  200. package/dist/components/ui/select/select-group-heading.svelte +21 -0
  201. package/dist/components/ui/select/select-group-heading.svelte.d.ts +10 -0
  202. package/dist/components/ui/select/select-group.svelte +7 -0
  203. package/dist/components/ui/select/select-group.svelte.d.ts +4 -0
  204. package/dist/components/ui/select/select-item.svelte +38 -0
  205. package/dist/components/ui/select/select-item.svelte.d.ts +4 -0
  206. package/dist/components/ui/select/select-label.svelte +20 -0
  207. package/dist/components/ui/select/select-label.svelte.d.ts +6 -0
  208. package/dist/components/ui/select/select-scroll-down-button.svelte +20 -0
  209. package/dist/components/ui/select/select-scroll-down-button.svelte.d.ts +4 -0
  210. package/dist/components/ui/select/select-scroll-up-button.svelte +20 -0
  211. package/dist/components/ui/select/select-scroll-up-button.svelte.d.ts +4 -0
  212. package/dist/components/ui/select/select-separator.svelte +18 -0
  213. package/dist/components/ui/select/select-separator.svelte.d.ts +4 -0
  214. package/dist/components/ui/select/select-trigger.svelte +29 -0
  215. package/dist/components/ui/select/select-trigger.svelte.d.ts +8 -0
  216. package/dist/components/ui/separator/index.d.ts +2 -0
  217. package/dist/components/ui/separator/index.js +4 -0
  218. package/dist/components/ui/separator/separator.svelte +20 -0
  219. package/dist/components/ui/separator/separator.svelte.d.ts +4 -0
  220. package/dist/components/ui/sheet/index.d.ts +11 -0
  221. package/dist/components/ui/sheet/index.js +14 -0
  222. package/dist/components/ui/sheet/sheet-close.svelte +7 -0
  223. package/dist/components/ui/sheet/sheet-close.svelte.d.ts +4 -0
  224. package/dist/components/ui/sheet/sheet-content.svelte +58 -0
  225. package/dist/components/ui/sheet/sheet-content.svelte.d.ts +35 -0
  226. package/dist/components/ui/sheet/sheet-description.svelte +17 -0
  227. package/dist/components/ui/sheet/sheet-description.svelte.d.ts +4 -0
  228. package/dist/components/ui/sheet/sheet-footer.svelte +20 -0
  229. package/dist/components/ui/sheet/sheet-footer.svelte.d.ts +5 -0
  230. package/dist/components/ui/sheet/sheet-header.svelte +20 -0
  231. package/dist/components/ui/sheet/sheet-header.svelte.d.ts +5 -0
  232. package/dist/components/ui/sheet/sheet-overlay.svelte +20 -0
  233. package/dist/components/ui/sheet/sheet-overlay.svelte.d.ts +4 -0
  234. package/dist/components/ui/sheet/sheet-title.svelte +17 -0
  235. package/dist/components/ui/sheet/sheet-title.svelte.d.ts +4 -0
  236. package/dist/components/ui/sheet/sheet-trigger.svelte +7 -0
  237. package/dist/components/ui/sheet/sheet-trigger.svelte.d.ts +4 -0
  238. package/dist/components/ui/sidebar/constants.d.ts +6 -0
  239. package/dist/components/ui/sidebar/constants.js +6 -0
  240. package/dist/components/ui/sidebar/context.svelte.d.ts +42 -0
  241. package/dist/components/ui/sidebar/context.svelte.js +54 -0
  242. package/dist/components/ui/sidebar/index.d.ts +25 -0
  243. package/dist/components/ui/sidebar/index.js +27 -0
  244. package/dist/components/ui/sidebar/sidebar-content.svelte +24 -0
  245. package/dist/components/ui/sidebar/sidebar-content.svelte.d.ts +5 -0
  246. package/dist/components/ui/sidebar/sidebar-footer.svelte +21 -0
  247. package/dist/components/ui/sidebar/sidebar-footer.svelte.d.ts +5 -0
  248. package/dist/components/ui/sidebar/sidebar-group-action.svelte +36 -0
  249. package/dist/components/ui/sidebar/sidebar-group-action.svelte.d.ts +11 -0
  250. package/dist/components/ui/sidebar/sidebar-group-content.svelte +21 -0
  251. package/dist/components/ui/sidebar/sidebar-group-content.svelte.d.ts +5 -0
  252. package/dist/components/ui/sidebar/sidebar-group-label.svelte +34 -0
  253. package/dist/components/ui/sidebar/sidebar-group-label.svelte.d.ts +11 -0
  254. package/dist/components/ui/sidebar/sidebar-group.svelte +21 -0
  255. package/dist/components/ui/sidebar/sidebar-group.svelte.d.ts +5 -0
  256. package/dist/components/ui/sidebar/sidebar-header.svelte +21 -0
  257. package/dist/components/ui/sidebar/sidebar-header.svelte.d.ts +5 -0
  258. package/dist/components/ui/sidebar/sidebar-input.svelte +21 -0
  259. package/dist/components/ui/sidebar/sidebar-input.svelte.d.ts +11 -0
  260. package/dist/components/ui/sidebar/sidebar-inset.svelte +24 -0
  261. package/dist/components/ui/sidebar/sidebar-inset.svelte.d.ts +5 -0
  262. package/dist/components/ui/sidebar/sidebar-menu-action.svelte +43 -0
  263. package/dist/components/ui/sidebar/sidebar-menu-action.svelte.d.ts +12 -0
  264. package/dist/components/ui/sidebar/sidebar-menu-badge.svelte +29 -0
  265. package/dist/components/ui/sidebar/sidebar-menu-badge.svelte.d.ts +5 -0
  266. package/dist/components/ui/sidebar/sidebar-menu-button.svelte +103 -0
  267. package/dist/components/ui/sidebar/sidebar-menu-button.svelte.d.ts +51 -0
  268. package/dist/components/ui/sidebar/sidebar-menu-item.svelte +21 -0
  269. package/dist/components/ui/sidebar/sidebar-menu-item.svelte.d.ts +5 -0
  270. package/dist/components/ui/sidebar/sidebar-menu-skeleton.svelte +36 -0
  271. package/dist/components/ui/sidebar/sidebar-menu-skeleton.svelte.d.ts +8 -0
  272. package/dist/components/ui/sidebar/sidebar-menu-sub-button.svelte +43 -0
  273. package/dist/components/ui/sidebar/sidebar-menu-sub-button.svelte.d.ts +13 -0
  274. package/dist/components/ui/sidebar/sidebar-menu-sub-item.svelte +21 -0
  275. package/dist/components/ui/sidebar/sidebar-menu-sub-item.svelte.d.ts +5 -0
  276. package/dist/components/ui/sidebar/sidebar-menu-sub.svelte +25 -0
  277. package/dist/components/ui/sidebar/sidebar-menu-sub.svelte.d.ts +5 -0
  278. package/dist/components/ui/sidebar/sidebar-menu.svelte +21 -0
  279. package/dist/components/ui/sidebar/sidebar-menu.svelte.d.ts +5 -0
  280. package/dist/components/ui/sidebar/sidebar-provider.svelte +53 -0
  281. package/dist/components/ui/sidebar/sidebar-provider.svelte.d.ts +9 -0
  282. package/dist/components/ui/sidebar/sidebar-rail.svelte +36 -0
  283. package/dist/components/ui/sidebar/sidebar-rail.svelte.d.ts +5 -0
  284. package/dist/components/ui/sidebar/sidebar-separator.svelte +19 -0
  285. package/dist/components/ui/sidebar/sidebar-separator.svelte.d.ts +13 -0
  286. package/dist/components/ui/sidebar/sidebar-trigger.svelte +35 -0
  287. package/dist/components/ui/sidebar/sidebar-trigger.svelte.d.ts +8 -0
  288. package/dist/components/ui/sidebar/sidebar.svelte +104 -0
  289. package/dist/components/ui/sidebar/sidebar.svelte.d.ts +10 -0
  290. package/dist/components/ui/skeleton/index.d.ts +2 -0
  291. package/dist/components/ui/skeleton/index.js +4 -0
  292. package/dist/components/ui/skeleton/skeleton.svelte +17 -0
  293. package/dist/components/ui/skeleton/skeleton.svelte.d.ts +5 -0
  294. package/dist/components/ui/table/index.d.ts +9 -0
  295. package/dist/components/ui/table/index.js +11 -0
  296. package/dist/components/ui/table/table-body.svelte +20 -0
  297. package/dist/components/ui/table/table-body.svelte.d.ts +5 -0
  298. package/dist/components/ui/table/table-caption.svelte +20 -0
  299. package/dist/components/ui/table/table-caption.svelte.d.ts +5 -0
  300. package/dist/components/ui/table/table-cell.svelte +20 -0
  301. package/dist/components/ui/table/table-cell.svelte.d.ts +5 -0
  302. package/dist/components/ui/table/table-footer.svelte +20 -0
  303. package/dist/components/ui/table/table-footer.svelte.d.ts +5 -0
  304. package/dist/components/ui/table/table-head.svelte +23 -0
  305. package/dist/components/ui/table/table-head.svelte.d.ts +5 -0
  306. package/dist/components/ui/table/table-header.svelte +20 -0
  307. package/dist/components/ui/table/table-header.svelte.d.ts +5 -0
  308. package/dist/components/ui/table/table-row.svelte +23 -0
  309. package/dist/components/ui/table/table-row.svelte.d.ts +5 -0
  310. package/dist/components/ui/table/table.svelte +22 -0
  311. package/dist/components/ui/table/table.svelte.d.ts +5 -0
  312. package/dist/components/ui/tabs/index.d.ts +5 -0
  313. package/dist/components/ui/tabs/index.js +7 -0
  314. package/dist/components/ui/tabs/tabs-content.svelte +17 -0
  315. package/dist/components/ui/tabs/tabs-content.svelte.d.ts +4 -0
  316. package/dist/components/ui/tabs/tabs-list.svelte +20 -0
  317. package/dist/components/ui/tabs/tabs-list.svelte.d.ts +4 -0
  318. package/dist/components/ui/tabs/tabs-trigger.svelte +20 -0
  319. package/dist/components/ui/tabs/tabs-trigger.svelte.d.ts +4 -0
  320. package/dist/components/ui/tabs/tabs.svelte +19 -0
  321. package/dist/components/ui/tabs/tabs.svelte.d.ts +4 -0
  322. package/dist/components/ui/toggle/index.d.ts +3 -0
  323. package/dist/components/ui/toggle/index.js +5 -0
  324. package/dist/components/ui/toggle/toggle.svelte +52 -0
  325. package/dist/components/ui/toggle/toggle.svelte.d.ts +43 -0
  326. package/dist/components/ui/toggle-group/index.d.ts +3 -0
  327. package/dist/components/ui/toggle-group/index.js +5 -0
  328. package/dist/components/ui/toggle-group/toggle-group-item.svelte +34 -0
  329. package/dist/components/ui/toggle-group/toggle-group-item.svelte.d.ts +6 -0
  330. package/dist/components/ui/toggle-group/toggle-group.svelte +47 -0
  331. package/dist/components/ui/toggle-group/toggle-group.svelte.d.ts +8 -0
  332. package/dist/components/ui/tooltip/index.d.ts +7 -0
  333. package/dist/components/ui/tooltip/index.js +9 -0
  334. package/dist/components/ui/tooltip/tooltip-content.svelte +47 -0
  335. package/dist/components/ui/tooltip/tooltip-content.svelte.d.ts +7 -0
  336. package/dist/components/ui/tooltip/tooltip-trigger.svelte +7 -0
  337. package/dist/components/ui/tooltip/tooltip-trigger.svelte.d.ts +4 -0
  338. package/dist/hooks/is-mobile.svelte.d.ts +4 -0
  339. package/dist/hooks/is-mobile.svelte.js +7 -0
  340. package/dist/index.d.ts +12 -12
  341. package/dist/index.js +12 -12
  342. package/dist/types/docs.d.ts +67 -0
  343. package/dist/types/docs.js +1 -0
  344. package/dist/types/index.d.ts +3 -3
  345. package/dist/utils.d.ts +15 -0
  346. package/dist/utils.js +44 -0
  347. package/package.json +34 -6
  348. /package/dist/components/{Collection.svelte.d.ts → firekit/Collection.svelte.d.ts} +0 -0
  349. /package/dist/components/{Node.svelte.d.ts → firekit/Node.svelte.d.ts} +0 -0
  350. /package/dist/components/{download-url.svelte.d.ts → firekit/download-url.svelte.d.ts} +0 -0
  351. /package/dist/components/{firebase-app.svelte.d.ts → firekit/firebase-app.svelte.d.ts} +0 -0
  352. /package/dist/components/{node-list.svelte.d.ts → firekit/node-list.svelte.d.ts} +0 -0
  353. /package/dist/components/{signed-out.svelte.d.ts → firekit/signed-out.svelte.d.ts} +0 -0
  354. /package/dist/components/{storage-list.svelte.d.ts → firekit/storage-list.svelte.d.ts} +0 -0
  355. /package/dist/components/{upload-task.svelte.d.ts → firekit/upload-task.svelte.d.ts} +0 -0
package/README.md CHANGED
@@ -1,445 +1,502 @@
1
- # Svelte Firekit
1
+ # Svelte Firebase Library
2
2
 
3
- Svelte Firekit is a powerful Firebase toolkit for SvelteKit applications, providing a comprehensive set of utilities, stores, and components for seamless Firebase integration. Whether you're building a micro SaaS, web application, or any Firebase-powered project, Svelte Firekit streamlines your development process.
3
+ A comprehensive, production-ready Firebase integration library for Svelte 5 applications. Built with reactive state management using Svelte 5 runes, providing a complete solution for authentication, Firestore, Storage, Realtime Database, Analytics, and more.
4
4
 
5
- ## Installation
5
+ ## 🚀 Features
6
+
7
+ - **Complete Firebase Integration** - All Firebase products supported
8
+ - **Svelte 5 Runes** - Reactive state management with optimal performance
9
+ - **TypeScript First** - Full type safety and excellent developer experience
10
+ - **SSR Compatible** - Server-side rendering support
11
+ - **Real-time Updates** - Live data synchronization across all services
12
+ - **Authentication System** - Complete auth solution with multiple providers
13
+ - **Advanced Querying** - Complex Firestore queries with type safety
14
+ - **File Management** - Storage upload/download with progress tracking
15
+ - **Presence System** - User online/offline tracking with geolocation
16
+ - **Analytics Integration** - Comprehensive event tracking
17
+ - **Error Handling** - Robust error management with retry mechanisms
18
+ - **Performance Optimized** - Persistent cache, memory management, and optimizations
19
+
20
+ ## 📦 Installation
6
21
 
7
22
  ```bash
8
- npm install firebase svelte-firekit
23
+ npm install svelte-firekit firebase
9
24
  ```
10
25
 
11
- ## Configuration
26
+ ## 🔧 Quick Setup
12
27
 
13
- Svelte Firekit automatically manages your Firebase configuration through environment variables. Create a `.env` file in your project root with the following variables:
28
+ ### 1. Environment Variables
14
29
 
15
- ```env
30
+ Create a `.env` file with your Firebase configuration:
31
+
32
+ ```dotenv
16
33
  PUBLIC_FIREBASE_API_KEY=your_api_key
17
- PUBLIC_FIREBASE_AUTH_DOMAIN=your_auth_domain
34
+ PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
18
35
  PUBLIC_FIREBASE_PROJECT_ID=your_project_id
19
- PUBLIC_FIREBASE_STORAGE_BUCKET=your_storage_bucket
20
- PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
36
+ PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
37
+ PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
21
38
  PUBLIC_FIREBASE_APP_ID=your_app_id
22
39
  PUBLIC_FIREBASE_MEASUREMENT_ID=your_measurement_id
23
40
  ```
24
41
 
25
- The configuration is automatically handled by Firekit - no manual setup required. If any required environment variables are missing, Firekit will throw a helpful error indicating which variables need to be set.
26
-
27
- ## Usage Example
28
-
29
- Here's a simple example showing how to display the current user's name:
42
+ ### 2. Initialize Firebase
30
43
 
31
44
  ```svelte
32
45
  <script>
33
- import { firekitUser } from 'svelte-firekit';
46
+ import { FirebaseApp } from 'svelte-firekit';
34
47
  </script>
35
48
 
36
- Hello {firekitUser.displayName}
49
+ <FirebaseApp>
50
+ <!-- Your app content -->
51
+ </FirebaseApp>
37
52
  ```
38
53
 
39
- The `firekitUser` store provides access to the current user's information and authentication state.
40
-
41
- ## Core Features
54
+ ### 3. Basic Usage
42
55
 
43
- ### 🔥 Firebase Integration
56
+ ```svelte
57
+ <script>
58
+ import { firekitUser, firekitCollection, firekitDoc } from 'svelte-firekit';
44
59
 
45
- - Zero-config Firebase setup through environment variables
46
- - Automatic initialization and app management
47
- - Built-in error handling and connection state management
48
- - Type-safe configuration management
60
+ // Reactive user state
61
+ const user = $derived(firekitUser.user);
62
+ const isAuthenticated = $derived(firekitUser.isAuthenticated);
49
63
 
50
- ### 🔐 Authentication
64
+ // Reactive document
65
+ const userDoc = firekitDoc('users/123');
51
66
 
52
- - Complete authentication system with built-in components
53
- - Support for multiple authentication providers:
54
- - Email/Password
55
- - Google
56
- - GitHub
57
- - Custom providers
58
- - User state management and persistence through `firekitUser` store
67
+ // Reactive collection
68
+ const posts = firekitCollection('posts', [
69
+ where('published', '==', true),
70
+ orderBy('createdAt', 'desc'),
71
+ limit(10)
72
+ ]);
73
+ </script>
59
74
 
60
- ### 📚 Firestore Integration
75
+ {#if isAuthenticated}
76
+ <h1>Welcome, {user?.displayName}!</h1>
61
77
 
62
- - Reactive data stores for real-time updates
63
- - Simplified CRUD operations
64
- - Batch operations and transactions
65
- - Type-safe document references
66
- - Automatic data serialization/deserialization
78
+ {#if userDoc.loading}
79
+ <p>Loading user data...</p>
80
+ {:else if userDoc.data}
81
+ <p>Email: {userDoc.data.email}</p>
82
+ {/if}
67
83
 
68
- ### 📦 Storage Management
84
+ <h2>Recent Posts</h2>
85
+ {#each posts.data as post}
86
+ <article>
87
+ <h3>{post.title}</h3>
88
+ <p>{post.content}</p>
89
+ </article>
90
+ {/each}
91
+ {/if}
92
+ ```
69
93
 
70
- - File upload and download utilities
71
- - Progress tracking and status updates
72
- - Storage security rules helpers
73
- - Image optimization utilities
94
+ ## 📚 Core Services
74
95
 
75
- ### ⚡ Server-Side Rendering
96
+ ### Authentication
76
97
 
77
- - Full SSR compatibility
78
- - Hydration support
79
- - Server-side data fetching
80
- - SEO-friendly rendering
98
+ ```typescript
99
+ import { firekitAuth, firekitUser } from 'svelte-firekit';
81
100
 
82
- ### 🎯 Type Safety
101
+ // Sign in methods
102
+ await firekitAuth.signInWithEmail('user@example.com', 'password');
103
+ await firekitAuth.signInWithGoogle();
104
+ await firekitAuth.signInWithFacebook();
105
+ await firekitAuth.signInWithApple();
83
106
 
84
- - Built with TypeScript
85
- - Complete type definitions
86
- - Intelligent autocomplete
87
- - Runtime type checking
88
- - Type-safe Firestore operations
107
+ // User registration
108
+ await firekitAuth.registerWithEmail('user@example.com', 'password', 'John Doe');
89
109
 
90
- ## Components
110
+ // Reactive user state
111
+ const user = $derived(firekitUser.user);
112
+ const isAuthenticated = $derived(firekitUser.isAuthenticated);
113
+ const isEmailVerified = $derived(firekitUser.isEmailVerified);
114
+ ```
91
115
 
92
- Svelte Firekit provides a comprehensive set of Svelte components for easy Firebase integration:
116
+ ### Firestore Documents
93
117
 
94
- ### 🔧 Core Components
118
+ ```typescript
119
+ import { firekitDoc, firekitDocOnce } from 'svelte-firekit';
95
120
 
96
- #### `FirebaseApp`
121
+ // Real-time document subscription
122
+ const userDoc = firekitDoc<User>('users/123', {
123
+ name: 'Loading...',
124
+ email: ''
125
+ });
97
126
 
98
- The root component that initializes Firebase and provides context to child components.
127
+ // One-time document fetch
128
+ const userData = firekitDocOnce<User>('users/123');
99
129
 
100
- ```svelte
101
- <script>
102
- import { FirebaseApp } from 'svelte-firekit';
103
- </script>
130
+ // Access reactive state
131
+ const isLoading = $derived(userDoc.loading);
132
+ const userData = $derived(userDoc.data);
133
+ const userError = $derived(userDoc.error);
104
134
 
105
- <FirebaseApp let:children>
106
- <!-- Your app content here -->
107
- </FirebaseApp>
135
+ $effect(() => {
136
+ if (isLoading) console.log('Loading...');
137
+ if (userData) console.log('User:', userData);
138
+ if (userError) console.error('Error:', userError);
139
+ });
108
140
  ```
109
141
 
110
- ### 🔐 Authentication Components
111
-
112
- #### `AuthGuard`
142
+ ### Firestore Collections
113
143
 
114
- Protects routes and content based on authentication state.
144
+ ```typescript
145
+ import { firekitCollection, where, orderBy, limit } from 'svelte-firekit';
146
+
147
+ // Simple collection
148
+ const users = firekitCollection<User>('users');
149
+
150
+ // With query constraints
151
+ const activeUsers = firekitCollection<User>('users', [
152
+ where('active', '==', true),
153
+ orderBy('name'),
154
+ limit(10)
155
+ ]);
156
+
157
+ // Advanced options
158
+ const paginatedUsers = firekitCollection<User>('users', {
159
+ pagination: { enabled: true, pageSize: 20 },
160
+ cache: { enabled: true, ttl: 300000 }
161
+ });
115
162
 
116
- ```svelte
117
- <script>
118
- import { AuthGuard } from 'svelte-firekit';
119
- </script>
163
+ // Access reactive state
164
+ const usersData = $derived(users.data);
165
+ const usersLoading = $derived(users.loading);
166
+ const usersError = $derived(users.error);
120
167
 
121
- <AuthGuard requireAuth={true} redirectTo="/login" let:children let:user let:auth let:signOut>
122
- <h1>Welcome, {user.displayName}!</h1>
123
- <button on:click={signOut}>Sign Out</button>
124
- </AuthGuard>
168
+ $effect(() => {
169
+ console.log('Users:', usersData);
170
+ console.log('Loading:', usersLoading);
171
+ console.log('Error:', usersError);
172
+ });
125
173
  ```
126
174
 
127
- #### `SignedIn`
175
+ ### Document Mutations
128
176
 
129
- Renders content only when a user is signed in.
177
+ ```typescript
178
+ import { firekitDocMutations } from 'svelte-firekit';
179
+
180
+ // Create document
181
+ const result = await firekitDocMutations.add(
182
+ 'users',
183
+ {
184
+ name: 'John Doe',
185
+ email: 'john@example.com'
186
+ },
187
+ {
188
+ timestamps: true,
189
+ validate: true
190
+ }
191
+ );
192
+
193
+ // Update document
194
+ await firekitDocMutations.update('users/123', {
195
+ name: 'Jane Doe'
196
+ });
130
197
 
131
- ```svelte
132
- <script>
133
- import { SignedIn } from 'svelte-firekit';
134
- </script>
198
+ // Delete document
199
+ await firekitDocMutations.delete('users/123');
135
200
 
136
- <SignedIn let:children let:user>
137
- <p>Hello, {user.displayName}!</p>
138
- </SignedIn>
201
+ // Batch operations
202
+ const batchResult = await firekitDocMutations.batch([
203
+ { type: 'create', path: 'users', data: userData },
204
+ { type: 'update', path: 'profiles/123', data: profileUpdate }
205
+ ]);
139
206
  ```
140
207
 
141
- #### `SignedOut`
208
+ ### Storage Management
142
209
 
143
- Renders content only when no user is signed in.
210
+ ```typescript
211
+ import { firekitDownloadUrl, firekitUploadTask, firekitStorageList } from 'svelte-firekit';
212
+
213
+ // Download URL
214
+ const imageUrl = firekitDownloadUrl('images/photo.jpg');
215
+ const downloadUrl = $derived(imageUrl.url);
216
+
217
+ // File upload with progress
218
+ const upload = firekitUploadTask('uploads/file.pdf', file);
219
+ const uploadProgress = $derived(upload.progress);
220
+ const uploadCompleted = $derived(upload.completed);
221
+ const uploadDownloadUrl = $derived(upload.downloadURL);
222
+
223
+ $effect(() => {
224
+ if (downloadUrl) console.log('Image URL:', downloadUrl);
225
+ console.log('Upload progress:', uploadProgress);
226
+ if (uploadCompleted) console.log('Download URL:', uploadDownloadUrl);
227
+ });
144
228
 
145
- ```svelte
146
- <script>
147
- import { SignedOut } from 'svelte-firekit';
148
- </script>
229
+ // Storage listing
230
+ const files = firekitStorageList('uploads');
231
+ const fileItems = $derived(files.items);
232
+ const filePrefixes = $derived(files.prefixes);
149
233
 
150
- <SignedOut let:children let:auth>
151
- <button on:click={() => signInWithGoogle()}>Sign In</button>
152
- </SignedOut>
234
+ $effect(() => {
235
+ console.log('Files:', fileItems);
236
+ console.log('Folders:', filePrefixes);
237
+ });
153
238
  ```
154
239
 
155
- #### `CustomGuard`
156
-
157
- Advanced authentication guard with custom verification checks.
158
-
159
- ```svelte
160
- <script>
161
- import { CustomGuard } from 'svelte-firekit';
162
-
163
- const emailVerificationCheck = (user) => user.emailVerified;
164
- </script>
240
+ ### Realtime Database
165
241
 
166
- <CustomGuard
167
- verificationChecks={[emailVerificationCheck]}
168
- redirectTo="/verify-email"
169
- let:children
170
- let:user
171
- let:auth
172
- let:signOut
173
- >
174
- <p>Your email is verified!</p>
175
- </CustomGuard>
176
- ```
242
+ ```typescript
243
+ import { firekitRealtimeDB, firekitRealtimeList } from 'svelte-firekit';
177
244
 
178
- ### 📚 Firestore Components
245
+ // Single value
246
+ const userStatus = firekitRealtimeDB<{ online: boolean }>('users/123/status');
179
247
 
180
- #### `Collection`
248
+ // List data
249
+ const messages = firekitRealtimeList<Message>('messages');
181
250
 
182
- Reactive component for Firestore collections with real-time updates.
251
+ // Access data
252
+ const statusData = $derived(userStatus.data);
253
+ const messagesList = $derived(messages.list);
183
254
 
184
- ```svelte
185
- <script>
186
- import { Collection } from 'svelte-firekit';
187
- </script>
255
+ $effect(() => {
256
+ console.log('Status:', statusData);
257
+ console.log('Messages:', messagesList);
258
+ });
188
259
 
189
- <Collection ref="users" let:children let:data let:ref let:firestore let:count>
190
- {#each data as user}
191
- <div>{user.name}</div>
192
- {/each}
193
- <p>Total users: {count}</p>
194
- </Collection>
260
+ // Update data
261
+ await userStatus.set({ online: true });
262
+ await messages.push({ text: 'Hello', userId: '123' });
195
263
  ```
196
264
 
197
- #### `Ddoc`
265
+ ### Presence System
198
266
 
199
- Reactive component for individual Firestore documents.
267
+ ```typescript
268
+ import { firekitPresence } from 'svelte-firekit';
269
+
270
+ // Initialize presence
271
+ await firekitPresence.initialize(user, {
272
+ geolocation: {
273
+ enabled: true,
274
+ type: 'browser',
275
+ requireConsent: true
276
+ }
277
+ });
200
278
 
201
- ```svelte
202
- <script>
203
- import { Ddoc } from 'svelte-firekit';
204
- </script>
279
+ // Set presence status
280
+ await firekitPresence.setPresence('online');
205
281
 
206
- <Ddoc ref="users/123" let:children let:data let:ref let:firestore>
207
- {#if data}
208
- <h1>{data.name}</h1>
209
- <p>{data.email}</p>
210
- {/if}
211
- </Ddoc>
282
+ // Access reactive state
283
+ const presenceStatus = $derived(firekitPresence.status);
284
+ const presenceLocation = $derived(firekitPresence.location);
285
+ const presenceSessions = $derived(firekitPresence.sessions);
212
286
  ```
213
287
 
214
- ### 📦 Storage Components
288
+ ### Analytics
215
289
 
216
- #### `UploadTask`
217
-
218
- Handles file uploads with progress tracking.
290
+ ```typescript
291
+ import { firekitAnalytics } from 'svelte-firekit';
219
292
 
220
- ```svelte
221
- <script>
222
- import { UploadTask } from 'svelte-firekit';
293
+ // Track custom events
294
+ firekitAnalytics.trackEvent('button_click', {
295
+ button_name: 'signup',
296
+ page_location: '/home'
297
+ });
223
298
 
224
- let file;
225
- </script>
299
+ // Track purchases
300
+ firekitAnalytics.trackPurchase({
301
+ transaction_id: 'T12345',
302
+ value: 29.99,
303
+ currency: 'USD',
304
+ items: [{ item_id: 'prod_123', item_name: 'Premium Plan' }]
305
+ });
226
306
 
227
- <input type="file" bind:files={file} />
228
-
229
- <UploadTask
230
- ref="images/{file.name}"
231
- data={file}
232
- let:children
233
- let:snapshot
234
- let:task
235
- let:progress
236
- let:storage
237
- >
238
- <div>Upload Progress: {progress}%</div>
239
- {#if snapshot?.state === 'success'}
240
- <p>Upload complete!</p>
241
- {/if}
242
- </UploadTask>
307
+ // Set user properties
308
+ firekitAnalytics.setUserProperties({
309
+ user_type: 'premium',
310
+ subscription_plan: 'pro'
311
+ });
243
312
  ```
244
313
 
245
- #### `DownloadUrl`
314
+ ## 🧩 Components
246
315
 
247
- Retrieves download URLs for storage files.
316
+ ### Authentication Components
248
317
 
249
318
  ```svelte
250
319
  <script>
251
- import { DownloadUrl } from 'svelte-firekit';
320
+ import { AuthGuard, SignedIn, SignedOut } from 'svelte-firekit';
252
321
  </script>
253
322
 
254
- <DownloadUrl ref="images/profile.jpg" let:children let:url let:ref let:storage>
255
- <img src={url} alt="Profile" />
256
- </DownloadUrl>
257
- ```
258
-
259
- #### `StorageList`
260
-
261
- Lists files and folders in Firebase Storage.
323
+ <!-- Route protection -->
324
+ <AuthGuard requireAuth={true} redirectTo="/login">
325
+ <h1>Protected Content</h1>
326
+ </AuthGuard>
262
327
 
263
- ```svelte
264
- <script>
265
- import { StorageList } from 'svelte-firekit';
266
- </script>
328
+ <!-- Conditional rendering -->
329
+ <SignedIn>
330
+ <h1>Welcome back!</h1>
331
+ </SignedIn>
267
332
 
268
- <StorageList ref="images" let:children let:list let:ref let:storage>
269
- {#each list.items as item}
270
- <div>{item.name}</div>
271
- {/each}
272
- {#each list.prefixes as prefix}
273
- <div>📁 {prefix.name}</div>
274
- {/each}
275
- </StorageList>
333
+ <SignedOut>
334
+ <h1>Please sign in</h1>
335
+ </SignedOut>
276
336
  ```
277
337
 
278
- ### 🔄 Realtime Database Components
279
-
280
- #### `Node`
281
-
282
- Reactive component for Realtime Database nodes.
338
+ ### Data Components
283
339
 
284
340
  ```svelte
285
341
  <script>
286
- import { Node } from 'svelte-firekit';
342
+ import { Doc, Collection } from 'svelte-firekit';
287
343
  </script>
288
344
 
289
- <Node path="users/123" let:children let:data let:ref let:database>
290
- {#if data}
291
- <h1>{data.name}</h1>
292
- <p>Status: {data.status}</p>
293
- {/if}
294
- </Node>
345
+ <!-- Document component -->
346
+ <Doc ref="users/123" let:data let:ref let:firestore>
347
+ <h1>{data.name}</h1>
348
+ <p>{data.email}</p>
349
+ </Doc>
350
+
351
+ <!-- Collection component -->
352
+ <Collection ref="posts" let:data let:ref let:firestore let:count>
353
+ <h1>Posts ({count})</h1>
354
+ {#each data as post}
355
+ <article>
356
+ <h2>{post.title}</h2>
357
+ <p>{post.content}</p>
358
+ </article>
359
+ {/each}
360
+ </Collection>
295
361
  ```
296
362
 
297
- #### `NodeList`
298
-
299
- Reactive component for Realtime Database lists.
363
+ ### Storage Components
300
364
 
301
365
  ```svelte
302
366
  <script>
303
- import { NodeList } from 'svelte-firekit';
367
+ import { StorageList, DownloadURL, UploadTask } from 'svelte-firekit';
304
368
  </script>
305
369
 
306
- <NodeList path="users" let:children let:data let:ref let:database>
307
- {#each data as user}
308
- <div>{user.name} - {user.status}</div>
370
+ <!-- Storage listing -->
371
+ <StorageList path="uploads" let:items let:prefixes>
372
+ <h2>Files</h2>
373
+ {#each items as item}
374
+ <p>{item.name}</p>
309
375
  {/each}
310
- </NodeList>
311
- ```
312
376
 
313
- ## Why Svelte Firekit?
314
-
315
- - **Zero Configuration**: Automatic Firebase setup through environment variables
316
- - **Type Safety**: Full TypeScript support with built-in type checking
317
- - **Rapid Development**: Get your Firebase-powered SvelteKit application up and running in minutes
318
- - **Best Practices**: Built following Firebase and SvelteKit best practices
319
- - **Production Ready**: Battle-tested in production environments
320
- - **Active Community**: Regular updates and active community support
321
- - **Extensible**: Easy to customize and extend for your specific needs
322
-
323
- ## Next Steps
324
-
325
- - Check out our [Getting Started](/getting-started) guide
326
- - Explore the [API Reference](/api)
327
- - View [Examples](/examples)
328
- - Join our [Community](/community)
329
-
330
- ## Contributing
331
-
332
- We welcome contributions! Please see our [Contributing Guide](/contributing) for more details.
333
-
334
- ## License
335
-
336
- Svelte Firekit is released under the MIT License. See the [LICENSE](/license) file for more details.
377
+ <h2>Folders</h2>
378
+ {#each prefixes as prefix}
379
+ <p>{prefix.name}</p>
380
+ {/each}
381
+ </StorageList>
337
382
 
338
- # Authentication
383
+ <!-- Download URL -->
384
+ <DownloadURL path="images/photo.jpg" let:url let:loading let:error>
385
+ {#if loading}
386
+ <p>Loading image...</p>
387
+ {:else if url}
388
+ <img src={url} alt="Photo" />
389
+ {:else if error}
390
+ <p>Error: {error.message}</p>
391
+ {/if}
392
+ </DownloadURL>
393
+
394
+ <!-- Upload with progress -->
395
+ <UploadTask path="uploads/file.pdf" file={selectedFile} let:progress let:completed let:error>
396
+ {#if !completed}
397
+ <div class="progress-bar">
398
+ <div class="progress" style="width: {progress}%"></div>
399
+ </div>
400
+ <p>{progress}% uploaded</p>
401
+ {:else}
402
+ <p>Upload complete!</p>
403
+ {/if}
404
+ </UploadTask>
405
+ ```
339
406
 
340
- Svelte Firekit provides a comprehensive authentication system through the `firekitAuth` singleton, offering various authentication methods and user management features.
407
+ ## 🎯 Best Practices
341
408
 
342
- ## Basic Usage
409
+ ### 1. Use Reactive State
343
410
 
344
411
  ```typescript
345
- import { firekitAuth } from 'svelte-firekit';
346
- ```
412
+ // Good - Reactive state
413
+ const user = $derived(firekitUser.user);
414
+ const isAuthenticated = $derived(firekitUser.isAuthenticated);
347
415
 
348
- ## Authentication Methods
416
+ // Avoid - Direct service calls in templates
417
+ const user = firekitUser.getCurrentUser();
418
+ ```
349
419
 
350
- ### Google Authentication
420
+ ### 2. Handle Loading States
351
421
 
352
- ```typescript
353
- await firekitAuth.signInWithGoogle();
422
+ ```svelte
423
+ {#if userDoc.loading}
424
+ <LoadingSpinner />
425
+ {:else if userDoc.error}
426
+ <ErrorMessage error={userDoc.error} />
427
+ {:else if userDoc.data}
428
+ <UserProfile user={userDoc.data} />
429
+ {/if}
354
430
  ```
355
431
 
356
- ### Email/Password Authentication
432
+ ### 3. Clean Up Subscriptions
357
433
 
358
434
  ```typescript
359
- // Sign in
360
- await firekitAuth.signInWithEmail(email, password);
435
+ import { onDestroy } from 'svelte';
361
436
 
362
- // Register
363
- await firekitAuth.registerWithEmail(email, password, displayName);
437
+ const userDoc = firekitDoc('users/123');
364
438
 
365
- // Sign out
366
- await firekitAuth.logOut();
439
+ onDestroy(() => {
440
+ userDoc.dispose();
441
+ });
367
442
  ```
368
443
 
369
- ## User Management
370
-
371
- ### Password Management
444
+ ### 4. Use Type Safety
372
445
 
373
446
  ```typescript
374
- // Send password reset email
375
- await firekitAuth.sendPasswordReset(email);
447
+ interface User {
448
+ id: string;
449
+ name: string;
450
+ email: string;
451
+ active: boolean;
452
+ }
376
453
 
377
- // Update password (requires reauthentication)
378
- await firekitAuth.updateUserPassword(newPassword, currentPassword);
454
+ const userDoc = firekitDoc<User>('users/123');
455
+ const users = firekitCollection<User>('users');
379
456
  ```
380
457
 
381
- ### Profile Management
458
+ ### 5. Optimize Queries
382
459
 
383
460
  ```typescript
384
- // Update user profile
385
- await firekitAuth.updateUserProfile({
386
- displayName: 'New Name',
387
- photoURL: 'https://example.com/photo.jpg'
388
- });
389
- ```
461
+ // Good - Specific queries
462
+ const activeUsers = firekitCollection('users', where('active', '==', true), limit(10));
390
463
 
391
- ### Email Verification
392
-
393
- ```typescript
394
- // Send verification email
395
- await firekitAuth.sendEmailVerificationToUser();
464
+ // Avoid - Fetching all data
465
+ const allUsers = firekitCollection('users');
396
466
  ```
397
467
 
398
- ### Account Deletion
468
+ ## 📚 Documentation
399
469
 
400
- ```typescript
401
- // Delete user account
402
- await firekitAuth.deleteUserAccount();
403
- ```
470
+ For complete documentation, examples, and API reference, visit:
404
471
 
405
- ## Automatic Firestore Integration
472
+ **[https://sveltefirekit.com](https://sveltefirekit.com)**
406
473
 
407
- The authentication system automatically maintains a user document in Firestore with the following information:
474
+ ### Key Sections:
408
475
 
409
- - User ID
410
- - Email
411
- - Email verification status
412
- - Display name
413
- - Photo URL
414
- - Authentication provider information
415
- - Anonymous status
476
+ - [Installation Guide](https://sveltefirekit.com/installation) - Complete setup guide
477
+ - [Authentication](https://sveltefirekit.com/auth) - User authentication and management
478
+ - [Firestore Collections](https://sveltefirekit.com/collections) - Real-time data management
479
+ - [Document Operations](https://sveltefirekit.com/documents) - Individual document handling
480
+ - [File Storage](https://sveltefirekit.com/storage) - File upload and management
481
+ - [Realtime Database](https://sveltefirekit.com/realtime) - Real-time data synchronization
482
+ - [Analytics](https://sveltefirekit.com/analytics) - User and event tracking
483
+ - [Components](https://sveltefirekit.com/components) - Pre-built Svelte components
484
+ - [Presence System](https://sveltefirekit.com/presence) - User online/offline tracking
416
485
 
417
- ## Error Handling
486
+ ## 🤝 Contributing
418
487
 
419
- All methods include proper error handling and return appropriate error messages. For example, password updates will return:
488
+ We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
420
489
 
421
- ```typescript
422
- {
423
- success: boolean;
424
- message: string;
425
- code?: string; // In case of errors
426
- }
427
- ```
490
+ ## 📄 License
491
+
492
+ MIT License - see [LICENSE](LICENSE) for details.
428
493
 
429
- ## Features
494
+ ## 🆘 Support
430
495
 
431
- - 🔐 Multiple authentication providers
432
- - 📝 Automatic user profile management
433
- - 🔄 Password reset and update functionality
434
- - ✉️ Email verification
435
- - 🗑️ Account deletion
436
- - 🔄 Reauthentication support
437
- - 📚 Automatic Firestore user document management
438
- - ⚡ Type-safe operations
496
+ - [Documentation](https://sveltefirekit.com)
497
+ - [GitHub Issues](https://github.com/code-gio/svelte-firekit/issues)
498
+ - [Discussions](https://github.com/code-gio/svelte-firekit/discussions)
439
499
 
440
- ## Important Notes
500
+ ---
441
501
 
442
- 1. User data is automatically synchronized with Firestore
443
- 2. Password updates require current password verification
444
- 3. Account deletion removes both authentication and Firestore data
445
- 4. All operations are fully typed for TypeScript support
502
+ **Built with ❤️ for the Svelte community**