@hiai-gg/docsmint 0.3.7 → 0.3.9

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 (210) hide show
  1. package/backend/src/lib/logger.ts +45 -15
  2. package/dist/backend/index.js +238 -150
  3. package/dist/client.d.ts +11 -0
  4. package/dist/client.js +9 -0
  5. package/dist/frontend/CategoryDialog-CxVyaBV5.js +611 -0
  6. package/dist/frontend/ConfirmDialog-NFGXRa3E.js +214 -0
  7. package/dist/frontend/CreateSnapshotDialog-BDgFTeFn.js +216 -0
  8. package/dist/frontend/DatePicker-BZRBluzF.js +256 -0
  9. package/dist/frontend/DeleteDialog-CvAr2WPu.js +174 -0
  10. package/dist/frontend/FolderNode-C6FJv99G.js +298 -0
  11. package/dist/frontend/FolderTreeSelector-CyB8y2Sm.js +103 -0
  12. package/dist/frontend/HiaiDocsExtensionProvider-DHWLzRUu.js +11 -0
  13. package/dist/frontend/Icon-CooFj4Ee.js +64 -0
  14. package/dist/frontend/SettingsDialog-BHh68rTB.js +1016 -0
  15. package/dist/frontend/ShareDialog-BUOkYSlw.js +165 -0
  16. package/dist/frontend/Sidebar-Cu3JrKDC.js +2021 -0
  17. package/dist/frontend/TagCreateDialog-B9YZBNHi.js +260 -0
  18. package/dist/frontend/api/settings.js +1 -1
  19. package/dist/frontend/app-shell.d.ts +8 -0
  20. package/dist/frontend/app-shell.js +291 -0
  21. package/dist/frontend/{bundle-mjs-CP6Owz-8.js → bundle-mjs-DllmqUxV.js} +583 -568
  22. package/dist/frontend/camera-iKXDOOWT.js +29 -0
  23. package/dist/frontend/check-D-UuvBuh.js +25 -0
  24. package/dist/frontend/chevron-down-CiPtYyFh.js +25 -0
  25. package/dist/frontend/circle-check-tSPE1V6t.js +29 -0
  26. package/dist/frontend/clock-DJHbHZb8.js +29 -0
  27. package/dist/frontend/components/category-dialog.js +1 -1
  28. package/dist/frontend/components/create-snapshot-dialog.js +1 -1
  29. package/dist/frontend/components/delete-dialog.js +1 -1
  30. package/dist/frontend/components/editor/document-editor.js +1367 -1356
  31. package/dist/frontend/components/editor/document-title.js +25 -25
  32. package/dist/frontend/components/editor/markdown-toggle.js +45 -45
  33. package/dist/frontend/components/folder-node.js +1 -1
  34. package/dist/frontend/components/folder-tree-selector.js +1 -1
  35. package/dist/frontend/components/save-as-dialog.js +169 -151
  36. package/dist/frontend/components/settings.js +1 -1
  37. package/dist/frontend/components/share-dialog.js +1 -1
  38. package/dist/frontend/components/sidebar.js +2 -2013
  39. package/dist/frontend/components/tag-create-dialog.js +1 -1
  40. package/dist/frontend/components/version-history.js +188 -187
  41. package/dist/frontend/confirm-dialog-C4jTRbiS.js +250 -0
  42. package/dist/frontend/copy-GppwRMjX.js +32 -0
  43. package/dist/frontend/dashboard.js +1187 -1155
  44. package/dist/frontend/dialog-Bevp9mmM.js +213 -0
  45. package/dist/frontend/{loader-circle-Bk-WFz9g.js → dist-C3857Spp.js} +93 -92
  46. package/dist/frontend/doc-tabs.js +2 -2
  47. package/dist/frontend/dropdown-menu-CRSby3e9.js +530 -0
  48. package/dist/frontend/extension.js +2 -11
  49. package/dist/frontend/{floating-layer-anchor-C51M4l6v.js → floating-layer-anchor-BDs7vO-M.js} +1414 -1412
  50. package/dist/frontend/folder-DeWhnD7O.js +45 -0
  51. package/dist/frontend/folder-refresh.js +1 -1
  52. package/dist/frontend/frontend.css +1 -1
  53. package/dist/frontend/i18n.js +2 -2
  54. package/dist/frontend/input-BWlOML_m.js +23 -0
  55. package/dist/frontend/keyboard.js +1 -1
  56. package/dist/frontend/{keyboard.svelte-D7H8DihC.js → keyboard.svelte-CApmX0vl.js} +53 -53
  57. package/dist/frontend/label-C2HfJNQ2.js +30 -0
  58. package/dist/frontend/{messages-BpYaLbzE.js → messages-C5Q890i2.js} +8 -8
  59. package/dist/frontend/rotate-ccw-B4Q7brmV.js +25 -0
  60. package/dist/frontend/search.js +673 -647
  61. package/dist/frontend/select-value-GXwx90Pr.js +1446 -0
  62. package/dist/frontend/{settings-blyobazp.js → settings-DSrUl4hW.js} +9 -9
  63. package/dist/frontend/shared-document.js +94 -94
  64. package/dist/frontend/subfolders-refresh-store.svelte-B2dKVmgz.js +65 -0
  65. package/dist/frontend/tag-HxRazVN_.js +54 -0
  66. package/dist/frontend/tag-store.svelte-CqrUXo0o.js +29 -0
  67. package/dist/frontend/textarea-DOAE-h42.js +23 -0
  68. package/dist/frontend/theme.js +1 -1
  69. package/dist/frontend/theme.svelte-DKfCy12k.js +49 -0
  70. package/dist/frontend/{utils-D8kmM3ub.js → utils-BPDRytUU.js} +2 -3
  71. package/dist/frontend/{utils-C0OW2678.js → utils-DrfHTcei.js} +2 -3
  72. package/dist/frontend/utils.js +1 -1
  73. package/dist/frontend/x-CzBsnJ2x.js +25 -0
  74. package/dist/frontend-ssr/api/attachments.js +2 -0
  75. package/dist/frontend-ssr/api/categories.js +2 -0
  76. package/dist/frontend-ssr/api/documents.js +2 -0
  77. package/dist/frontend-ssr/api/folders.js +2 -0
  78. package/dist/frontend-ssr/api/settings.js +2 -0
  79. package/dist/frontend-ssr/api/share.js +2 -0
  80. package/dist/frontend-ssr/api/tags.js +2 -0
  81. package/dist/frontend-ssr/app-shell.js +294 -0
  82. package/dist/frontend-ssr/assets/CategoryDialog-BcGW8-Kf.js +584 -0
  83. package/dist/frontend-ssr/assets/ConfirmDialog-DjMFKc0V.js +420 -0
  84. package/dist/frontend-ssr/assets/CreateSnapshotDialog-1bROJ-Rn.js +214 -0
  85. package/dist/frontend-ssr/assets/DatePicker-B1ML8OVz.js +312 -0
  86. package/dist/frontend-ssr/assets/DeleteDialog-tBYaP0L3.js +154 -0
  87. package/dist/frontend-ssr/assets/FolderNode-BZ0Q2QUS.js +171 -0
  88. package/dist/frontend-ssr/assets/FolderTreeSelector-DZNZ2oI6.js +147 -0
  89. package/dist/frontend-ssr/assets/HiaiDocsExtensionProvider-DAM-lX4R.js +13 -0
  90. package/dist/frontend-ssr/assets/Icon-B0Zqppjo.js +231 -0
  91. package/dist/frontend-ssr/assets/SettingsDialog-B8L_YqNA.js +1107 -0
  92. package/dist/frontend-ssr/assets/ShareDialog-vMvJLRfn.js +54 -0
  93. package/dist/frontend-ssr/assets/Sidebar-EHuUAx3W.js +2033 -0
  94. package/dist/frontend-ssr/assets/TagCreateDialog-B0DPEfmQ.js +264 -0
  95. package/dist/frontend-ssr/assets/api-keys-DFqX39MT.js +35 -0
  96. package/dist/frontend-ssr/assets/attachments-CWBxE3Vz.js +85 -0
  97. package/dist/frontend-ssr/assets/auth-client-x26kqY8Z.js +1286 -0
  98. package/dist/frontend-ssr/assets/camera-CdxscTw-.js +84 -0
  99. package/dist/frontend-ssr/assets/categories-AOqgcsn4.js +75 -0
  100. package/dist/frontend-ssr/assets/chevron-down-CSSNGNh_.js +80 -0
  101. package/dist/frontend-ssr/assets/chevron-right-B4p7Sk6X.js +80 -0
  102. package/dist/frontend-ssr/assets/circle-check-CI1v4vYh.js +84 -0
  103. package/dist/frontend-ssr/assets/client-DZMkDkDn.js +129 -0
  104. package/dist/frontend-ssr/assets/clipboard-CXOaoz2W.js +30 -0
  105. package/dist/frontend-ssr/assets/clock-IL-eX2di.js +84 -0
  106. package/dist/frontend-ssr/assets/confirm-dialog-BCthVwUY.js +429 -0
  107. package/dist/frontend-ssr/assets/context-jz1GGEUi.js +45 -0
  108. package/dist/frontend-ssr/assets/copy-CjV57nGQ.js +87 -0
  109. package/dist/frontend-ssr/assets/db-CnxeO66n.js +65 -0
  110. package/dist/frontend-ssr/assets/dialog-BOV1u6zP.js +157 -0
  111. package/dist/frontend-ssr/assets/dndzone-DMvTO_Jz.js +2114 -0
  112. package/dist/frontend-ssr/assets/document-drop-coordinator-CEaYACsC.js +109 -0
  113. package/dist/frontend-ssr/assets/documents-BnOTRdTY.js +108 -0
  114. package/dist/frontend-ssr/assets/dropdown-menu-Bj5rbqbB.js +555 -0
  115. package/dist/frontend-ssr/assets/editorExtensions-DUzwndMy.js +186 -0
  116. package/dist/frontend-ssr/assets/floating-layer-anchor-CYIE8Oj6.js +6114 -0
  117. package/dist/frontend-ssr/assets/folder-DChhG7qN.js +80 -0
  118. package/dist/frontend-ssr/assets/folders-CTfbS24J.js +127 -0
  119. package/dist/frontend-ssr/assets/identity-B3uHoDtf.js +99 -0
  120. package/dist/frontend-ssr/assets/input-DezGsU3y.js +19 -0
  121. package/dist/frontend-ssr/assets/keyboard.svelte-BgF47N3L.js +174 -0
  122. package/dist/frontend-ssr/assets/label-Bj8-TfFN.js +21 -0
  123. package/dist/frontend-ssr/assets/loader-circle-DZsrZ-er.js +80 -0
  124. package/dist/frontend-ssr/assets/markdown-CjqvGi5W.js +20 -0
  125. package/dist/frontend-ssr/assets/messages-CvqpZNJe.js +11125 -0
  126. package/dist/frontend-ssr/assets/resolve-BqHozBXl.js +32 -0
  127. package/dist/frontend-ssr/assets/rotate-ccw-BlgWwaiq.js +80 -0
  128. package/dist/frontend-ssr/assets/select-value-6Lk0ToYd.js +1526 -0
  129. package/dist/frontend-ssr/assets/settings-Bk5Hk9Vq.js +64 -0
  130. package/dist/frontend-ssr/assets/share-BTBJelxA.js +30 -0
  131. package/dist/frontend-ssr/assets/subfolders-refresh-store.svelte-DAh4gT16.js +77 -0
  132. package/dist/frontend-ssr/assets/tag-GZEuGWk1.js +166 -0
  133. package/dist/frontend-ssr/assets/tag-store.svelte-DPodKj6Z.js +21 -0
  134. package/dist/frontend-ssr/assets/tags-BId2wdYd.js +49 -0
  135. package/dist/frontend-ssr/assets/textarea-Dev-qSEc.js +21 -0
  136. package/dist/frontend-ssr/assets/theme.svelte-Co0-ssaD.js +67 -0
  137. package/dist/frontend-ssr/assets/utils-DtlPPXpJ.js +9 -0
  138. package/dist/frontend-ssr/assets/utils-DvZnctjz.js +23 -0
  139. package/dist/frontend-ssr/collaboration.js +39 -0
  140. package/dist/frontend-ssr/components/category-dialog.js +2 -0
  141. package/dist/frontend-ssr/components/create-snapshot-dialog.js +2 -0
  142. package/dist/frontend-ssr/components/delete-dialog.js +2 -0
  143. package/dist/frontend-ssr/components/editor/document-editor.js +2499 -0
  144. package/dist/frontend-ssr/components/editor/document-title.js +11 -0
  145. package/dist/frontend-ssr/components/editor/docx-serializer.js +186 -0
  146. package/dist/frontend-ssr/components/editor/extensions.js +2 -0
  147. package/dist/frontend-ssr/components/editor/markdown-toggle.js +20 -0
  148. package/dist/frontend-ssr/components/editor/markdown.js +2 -0
  149. package/dist/frontend-ssr/components/folder-node.js +2 -0
  150. package/dist/frontend-ssr/components/folder-tree-selector.js +2 -0
  151. package/dist/frontend-ssr/components/save-as-dialog.js +280 -0
  152. package/dist/frontend-ssr/components/settings.js +2 -0
  153. package/dist/frontend-ssr/components/share-dialog.js +2 -0
  154. package/dist/frontend-ssr/components/sidebar.js +2 -0
  155. package/dist/frontend-ssr/components/tag-create-dialog.js +2 -0
  156. package/dist/frontend-ssr/components/version-history.js +370 -0
  157. package/dist/frontend-ssr/dashboard.js +2542 -0
  158. package/dist/frontend-ssr/doc-tabs.js +23 -0
  159. package/dist/frontend-ssr/document-drop-coordinator.js +2 -0
  160. package/dist/frontend-ssr/extension.js +2 -0
  161. package/dist/frontend-ssr/folder-refresh.js +2 -0
  162. package/dist/frontend-ssr/i18n.js +10 -0
  163. package/dist/frontend-ssr/keyboard.js +2 -0
  164. package/dist/frontend-ssr/offline/identity.js +2 -0
  165. package/dist/frontend-ssr/search.js +332 -0
  166. package/dist/frontend-ssr/shared-document.js +273 -0
  167. package/dist/frontend-ssr/theme.js +9 -0
  168. package/dist/frontend-ssr/types.js +1 -0
  169. package/dist/frontend-ssr/utils/clipboard.js +2 -0
  170. package/dist/frontend-ssr/utils/dndzone.js +2 -0
  171. package/dist/frontend-ssr/utils.js +2 -0
  172. package/package.json +28 -1
  173. package/packages/cli/src/index.ts +1 -1
  174. package/packages/db/src/schema.ts +3 -0
  175. package/packages/mcp-server/src/index.ts +1 -1
  176. package/dist/frontend/CategoryDialog--rIE7FrH.js +0 -580
  177. package/dist/frontend/ConfirmDialog-Cpzyb55f.js +0 -212
  178. package/dist/frontend/CreateSnapshotDialog-CmkV-n2A.js +0 -216
  179. package/dist/frontend/DatePicker-Byynca7V.js +0 -257
  180. package/dist/frontend/DeleteDialog-ap6nOywZ.js +0 -174
  181. package/dist/frontend/FolderDialog-DmN_trV0.js +0 -247
  182. package/dist/frontend/FolderNode-C4B8a2fd.js +0 -317
  183. package/dist/frontend/FolderTreeSelector-D6ijiZTA.js +0 -100
  184. package/dist/frontend/Icon-DtNo0N1U.js +0 -64
  185. package/dist/frontend/SettingsDialog-2kTaTXAs.js +0 -992
  186. package/dist/frontend/ShareDialog-BBDGNF5n.js +0 -165
  187. package/dist/frontend/TagCreateDialog-DiLZnJo4.js +0 -258
  188. package/dist/frontend/camera-B7dAOd4s.js +0 -28
  189. package/dist/frontend/check-CDwRlG9T.js +0 -24
  190. package/dist/frontend/chevron-down-B7ZrjUmT.js +0 -24
  191. package/dist/frontend/circle-check-CDqeMB2d.js +0 -28
  192. package/dist/frontend/client-Bc5Fzx40.js +0 -2785
  193. package/dist/frontend/clock-Ck5Sn-Zl.js +0 -28
  194. package/dist/frontend/clsx-nmtDPO_P.js +0 -16
  195. package/dist/frontend/copy-CMAA6GP0.js +0 -31
  196. package/dist/frontend/dialog-BDkiG42a.js +0 -213
  197. package/dist/frontend/disclose-version-5I57E3LD.js +0 -3
  198. package/dist/frontend/ellipsis-vertical-BBuPldbW.js +0 -519
  199. package/dist/frontend/folder-TQjKY4yn.js +0 -44
  200. package/dist/frontend/index-client-jobkrWVL.js +0 -86
  201. package/dist/frontend/input-CBI6p4Xl.js +0 -23
  202. package/dist/frontend/label-C-GkhEp4.js +0 -30
  203. package/dist/frontend/rotate-ccw-CleZtJ5D.js +0 -24
  204. package/dist/frontend/select-value-CvrWRkXW.js +0 -1436
  205. package/dist/frontend/subfolders-refresh-store.svelte-BsheoQma.js +0 -65
  206. package/dist/frontend/tag-Dx3SmucJ.js +0 -53
  207. package/dist/frontend/tag-store.svelte-CIaF4sdZ.js +0 -29
  208. package/dist/frontend/textarea-Dfp78XlL.js +0 -23
  209. package/dist/frontend/theme.svelte-CROg1Hi5.js +0 -49
  210. package/dist/frontend/x-DaTdeDXv.js +0 -24
@@ -0,0 +1,2542 @@
1
+ import { Br as nav_documents, Cr as doc_duplicate, Er as doc_updated, Ir as dashboard_page_title, Lr as dashboard_new_document, O as dashboard_import, Or as doc_share, Rr as dashboard_subtitle, Sr as doc_move_to_folder, Tr as doc_open_menu, _n as action_save, _r as folders_delete, a as import_progress_error, br as folders_empty, c as import_progress_uploading, cr as folders_subfolder, d as sidebar_uncategorized, dn as action_back, dr as folders_documents, fn as action_close, gn as action_cancel, gr as folders_delete_title, gt as folder_page_title, hn as action_delete, hr as folders_delete_description, ht as share_copied, i as import_progress_summary, l as import_progress_total, ln as action_loading, lr as folders_subfolders, n as import_progress_empty, o as import_progress_done, r as import_progress_close, s as import_progress_processing, sr as folders_move, u as import_progress_title, ur as folders_document, vr as folders_rename, vt as action_copy_content, wr as doc_open, yr as folders_empty_description, yt as editor_more_options, zr as dashboard_title } from "./assets/messages-CvqpZNJe.js";
2
+ import { t as Icon } from "./assets/Icon-B0Zqppjo.js";
3
+ import { i as Folder_kanban, n as Badge, r as X, t as DatePicker } from "./assets/DatePicker-B1ML8OVz.js";
4
+ import { i as Check, n as Plus, r as File_text, t as FolderDialog } from "./assets/confirm-dialog-BCthVwUY.js";
5
+ import { t as Chevron_down } from "./assets/chevron-down-CSSNGNh_.js";
6
+ import { t as Chevron_right } from "./assets/chevron-right-B4p7Sk6X.js";
7
+ import { t as Copy } from "./assets/copy-CjV57nGQ.js";
8
+ import { n as Folder_open, t as FolderTreeSelector } from "./assets/FolderTreeSelector-DZNZ2oI6.js";
9
+ import { t as Folder } from "./assets/folder-DChhG7qN.js";
10
+ import { t as Rotate_ccw } from "./assets/rotate-ccw-BlgWwaiq.js";
11
+ import { a as Dropdown_menu, i as Dropdown_menu_content, n as Dropdown_menu_separator, o as Ellipsis_vertical, r as Dropdown_menu_item, t as Dropdown_menu_trigger } from "./assets/dropdown-menu-Bj5rbqbB.js";
12
+ import { t as Loader_circle } from "./assets/loader-circle-DZsrZ-er.js";
13
+ import { n as formatRelativeTime } from "./assets/utils-DvZnctjz.js";
14
+ import { t as cn } from "./assets/utils-DtlPPXpJ.js";
15
+ import { a as Dialog, i as Dialog_description, n as Dialog_header, o as Button, r as Dialog_footer, t as Dialog_title } from "./assets/dialog-BOV1u6zP.js";
16
+ import { t as Label } from "./assets/label-Bj8-TfFN.js";
17
+ import { n as apiFetch } from "./assets/client-DZMkDkDn.js";
18
+ import "./assets/categories-AOqgcsn4.js";
19
+ import { t as getFrontendExtensions } from "./assets/context-jz1GGEUi.js";
20
+ import { t as resolveExtensions } from "./assets/resolve-BqHozBXl.js";
21
+ import { a as Select, i as Select_content, n as Select_trigger, r as Select_item, t as Select_value } from "./assets/select-value-6Lk0ToYd.js";
22
+ import { c as updateDocument, i as getDocument } from "./assets/documents-BnOTRdTY.js";
23
+ import { c as updateFolder, i as duplicateDocument } from "./assets/folders-CTfbS24J.js";
24
+ import { t as copyToClipboard } from "./assets/clipboard-CXOaoz2W.js";
25
+ import { t as ShareDialog } from "./assets/ShareDialog-vMvJLRfn.js";
26
+ import { d as refreshFolders, n as bumpSubfoldersRefresh } from "./assets/subfolders-refresh-store.svelte-DAh4gT16.js";
27
+ import { n as refreshDocs } from "./assets/tag-store.svelte-DPodKj6Z.js";
28
+ import { t as ConfirmDialog } from "./assets/ConfirmDialog-DjMFKc0V.js";
29
+ import * as $ from "svelte/internal/server";
30
+ import { goto, invalidateAll } from "$app/navigation";
31
+ import { page } from "$app/state";
32
+ //#region ../node_modules/.bun/lucide-svelte@1.0.1+ff5f301bb2db9a0d/node_modules/lucide-svelte/dist/icons/arrow-left.svelte
33
+ function Arrow_left($$renderer, $$props) {
34
+ const $$sanitized_props = $.sanitize_props($$props);
35
+ /**
36
+ * @license lucide-svelte v1.0.1 - ISC
37
+ *
38
+ * ISC License
39
+ *
40
+ * Copyright (c) 2026 Lucide Icons and Contributors
41
+ *
42
+ * Permission to use, copy, modify, and/or distribute this software for any
43
+ * purpose with or without fee is hereby granted, provided that the above
44
+ * copyright notice and this permission notice appear in all copies.
45
+ *
46
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
47
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
48
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
49
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
50
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
51
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
52
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
53
+ *
54
+ * ---
55
+ *
56
+ * The following Lucide icons are derived from the Feather project:
57
+ *
58
+ * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
59
+ *
60
+ * The MIT License (MIT) (for the icons listed above)
61
+ *
62
+ * Copyright (c) 2013-present Cole Bemis
63
+ *
64
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
65
+ * of this software and associated documentation files (the "Software"), to deal
66
+ * in the Software without restriction, including without limitation the rights
67
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
68
+ * copies of the Software, and to permit persons to whom the Software is
69
+ * furnished to do so, subject to the following conditions:
70
+ *
71
+ * The above copyright notice and this permission notice shall be included in all
72
+ * copies or substantial portions of the Software.
73
+ *
74
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
75
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
76
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
77
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
78
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
79
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
80
+ * SOFTWARE.
81
+ *
82
+ */
83
+ Icon($$renderer, $.spread_props([
84
+ { name: "arrow-left" },
85
+ $$sanitized_props,
86
+ {
87
+ /**
88
+ * @component @name ArrowLeft
89
+ * @description Lucide SVG icon component, renders SVG Element with children.
90
+ *
91
+ * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTIgMTktNy03IDctNyIgLz4KICA8cGF0aCBkPSJNMTkgMTJINSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/arrow-left
92
+ * @see https://lucide.dev/guide/packages/lucide-svelte - Documentation
93
+ *
94
+ * @param {Object} props - Lucide icons props and any valid SVG attribute
95
+ * @returns {FunctionalComponent} Svelte component
96
+ *
97
+ */
98
+ iconNode: [["path", { "d": "m12 19-7-7 7-7" }], ["path", { "d": "M19 12H5" }]],
99
+ children: ($$renderer) => {
100
+ $$renderer.push(`<!--[-->`);
101
+ $.slot($$renderer, $$props, "default", {}, null);
102
+ $$renderer.push(`<!--]-->`);
103
+ },
104
+ $$slots: { default: true }
105
+ }
106
+ ]));
107
+ }
108
+ //#endregion
109
+ //#region ../node_modules/.bun/lucide-svelte@1.0.1+ff5f301bb2db9a0d/node_modules/lucide-svelte/dist/icons/arrow-up-right.svelte
110
+ function Arrow_up_right($$renderer, $$props) {
111
+ const $$sanitized_props = $.sanitize_props($$props);
112
+ /**
113
+ * @license lucide-svelte v1.0.1 - ISC
114
+ *
115
+ * ISC License
116
+ *
117
+ * Copyright (c) 2026 Lucide Icons and Contributors
118
+ *
119
+ * Permission to use, copy, modify, and/or distribute this software for any
120
+ * purpose with or without fee is hereby granted, provided that the above
121
+ * copyright notice and this permission notice appear in all copies.
122
+ *
123
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
124
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
125
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
126
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
127
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
128
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
129
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
130
+ *
131
+ * ---
132
+ *
133
+ * The following Lucide icons are derived from the Feather project:
134
+ *
135
+ * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
136
+ *
137
+ * The MIT License (MIT) (for the icons listed above)
138
+ *
139
+ * Copyright (c) 2013-present Cole Bemis
140
+ *
141
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
142
+ * of this software and associated documentation files (the "Software"), to deal
143
+ * in the Software without restriction, including without limitation the rights
144
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
145
+ * copies of the Software, and to permit persons to whom the Software is
146
+ * furnished to do so, subject to the following conditions:
147
+ *
148
+ * The above copyright notice and this permission notice shall be included in all
149
+ * copies or substantial portions of the Software.
150
+ *
151
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
152
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
153
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
154
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
155
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
156
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
157
+ * SOFTWARE.
158
+ *
159
+ */
160
+ Icon($$renderer, $.spread_props([
161
+ { name: "arrow-up-right" },
162
+ $$sanitized_props,
163
+ {
164
+ /**
165
+ * @component @name ArrowUpRight
166
+ * @description Lucide SVG icon component, renders SVG Element with children.
167
+ *
168
+ * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNyA3aDEwdjEwIiAvPgogIDxwYXRoIGQ9Ik03IDE3IDE3IDciIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/arrow-up-right
169
+ * @see https://lucide.dev/guide/packages/lucide-svelte - Documentation
170
+ *
171
+ * @param {Object} props - Lucide icons props and any valid SVG attribute
172
+ * @returns {FunctionalComponent} Svelte component
173
+ *
174
+ */
175
+ iconNode: [["path", { "d": "M7 7h10v10" }], ["path", { "d": "M7 17 17 7" }]],
176
+ children: ($$renderer) => {
177
+ $$renderer.push(`<!--[-->`);
178
+ $.slot($$renderer, $$props, "default", {}, null);
179
+ $$renderer.push(`<!--]-->`);
180
+ },
181
+ $$slots: { default: true }
182
+ }
183
+ ]));
184
+ }
185
+ //#endregion
186
+ //#region ../node_modules/.bun/lucide-svelte@1.0.1+ff5f301bb2db9a0d/node_modules/lucide-svelte/dist/icons/files.svelte
187
+ function Files($$renderer, $$props) {
188
+ const $$sanitized_props = $.sanitize_props($$props);
189
+ /**
190
+ * @license lucide-svelte v1.0.1 - ISC
191
+ *
192
+ * ISC License
193
+ *
194
+ * Copyright (c) 2026 Lucide Icons and Contributors
195
+ *
196
+ * Permission to use, copy, modify, and/or distribute this software for any
197
+ * purpose with or without fee is hereby granted, provided that the above
198
+ * copyright notice and this permission notice appear in all copies.
199
+ *
200
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
201
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
202
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
203
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
204
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
205
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
206
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
207
+ *
208
+ * ---
209
+ *
210
+ * The following Lucide icons are derived from the Feather project:
211
+ *
212
+ * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
213
+ *
214
+ * The MIT License (MIT) (for the icons listed above)
215
+ *
216
+ * Copyright (c) 2013-present Cole Bemis
217
+ *
218
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
219
+ * of this software and associated documentation files (the "Software"), to deal
220
+ * in the Software without restriction, including without limitation the rights
221
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
222
+ * copies of the Software, and to permit persons to whom the Software is
223
+ * furnished to do so, subject to the following conditions:
224
+ *
225
+ * The above copyright notice and this permission notice shall be included in all
226
+ * copies or substantial portions of the Software.
227
+ *
228
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
229
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
230
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
231
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
232
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
233
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
234
+ * SOFTWARE.
235
+ *
236
+ */
237
+ Icon($$renderer, $.spread_props([
238
+ { name: "files" },
239
+ $$sanitized_props,
240
+ {
241
+ /**
242
+ * @component @name Files
243
+ * @description Lucide SVG icon component, renders SVG Element with children.
244
+ *
245
+ * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgMmgtNGEyIDIgMCAwIDAtMiAydjExYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjgiIC8+CiAgPHBhdGggZD0iTTE2LjcwNiAyLjcwNkEyLjQgMi40IDAgMCAwIDE1IDJ2NWExIDEgMCAwIDAgMSAxaDVhMi40IDIuNCAwIDAgMC0uNzA2LTEuNzA2eiIgLz4KICA8cGF0aCBkPSJNNSA3YTIgMiAwIDAgMC0yIDJ2MTFhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAxLjczMi0xIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/files
246
+ * @see https://lucide.dev/guide/packages/lucide-svelte - Documentation
247
+ *
248
+ * @param {Object} props - Lucide icons props and any valid SVG attribute
249
+ * @returns {FunctionalComponent} Svelte component
250
+ *
251
+ */
252
+ iconNode: [
253
+ ["path", { "d": "M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8" }],
254
+ ["path", { "d": "M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z" }],
255
+ ["path", { "d": "M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1" }]
256
+ ],
257
+ children: ($$renderer) => {
258
+ $$renderer.push(`<!--[-->`);
259
+ $.slot($$renderer, $$props, "default", {}, null);
260
+ $$renderer.push(`<!--]-->`);
261
+ },
262
+ $$slots: { default: true }
263
+ }
264
+ ]));
265
+ }
266
+ //#endregion
267
+ //#region ../node_modules/.bun/lucide-svelte@1.0.1+ff5f301bb2db9a0d/node_modules/lucide-svelte/dist/icons/folder-input.svelte
268
+ function Folder_input($$renderer, $$props) {
269
+ const $$sanitized_props = $.sanitize_props($$props);
270
+ /**
271
+ * @license lucide-svelte v1.0.1 - ISC
272
+ *
273
+ * ISC License
274
+ *
275
+ * Copyright (c) 2026 Lucide Icons and Contributors
276
+ *
277
+ * Permission to use, copy, modify, and/or distribute this software for any
278
+ * purpose with or without fee is hereby granted, provided that the above
279
+ * copyright notice and this permission notice appear in all copies.
280
+ *
281
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
282
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
283
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
284
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
285
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
286
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
287
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
288
+ *
289
+ * ---
290
+ *
291
+ * The following Lucide icons are derived from the Feather project:
292
+ *
293
+ * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
294
+ *
295
+ * The MIT License (MIT) (for the icons listed above)
296
+ *
297
+ * Copyright (c) 2013-present Cole Bemis
298
+ *
299
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
300
+ * of this software and associated documentation files (the "Software"), to deal
301
+ * in the Software without restriction, including without limitation the rights
302
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
303
+ * copies of the Software, and to permit persons to whom the Software is
304
+ * furnished to do so, subject to the following conditions:
305
+ *
306
+ * The above copyright notice and this permission notice shall be included in all
307
+ * copies or substantial portions of the Software.
308
+ *
309
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
310
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
311
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
312
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
313
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
314
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
315
+ * SOFTWARE.
316
+ *
317
+ */
318
+ Icon($$renderer, $.spread_props([
319
+ { name: "folder-input" },
320
+ $$sanitized_props,
321
+ {
322
+ /**
323
+ * @component @name FolderInput
324
+ * @description Lucide SVG icon component, renders SVG Element with children.
325
+ *
326
+ * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMiA5VjVhMiAyIDAgMCAxIDItMmgzLjlhMiAyIDAgMCAxIDEuNjkuOWwuODEgMS4yYTIgMiAwIDAgMCAxLjY3LjlIMjBhMiAyIDAgMCAxIDIgMnYxMGEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMnYtMSIgLz4KICA8cGF0aCBkPSJNMiAxM2gxMCIgLz4KICA8cGF0aCBkPSJtOSAxNiAzLTMtMy0zIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/folder-input
327
+ * @see https://lucide.dev/guide/packages/lucide-svelte - Documentation
328
+ *
329
+ * @param {Object} props - Lucide icons props and any valid SVG attribute
330
+ * @returns {FunctionalComponent} Svelte component
331
+ *
332
+ */
333
+ iconNode: [
334
+ ["path", { "d": "M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1" }],
335
+ ["path", { "d": "M2 13h10" }],
336
+ ["path", { "d": "m9 16 3-3-3-3" }]
337
+ ],
338
+ children: ($$renderer) => {
339
+ $$renderer.push(`<!--[-->`);
340
+ $.slot($$renderer, $$props, "default", {}, null);
341
+ $$renderer.push(`<!--]-->`);
342
+ },
343
+ $$slots: { default: true }
344
+ }
345
+ ]));
346
+ }
347
+ //#endregion
348
+ //#region ../node_modules/.bun/lucide-svelte@1.0.1+ff5f301bb2db9a0d/node_modules/lucide-svelte/dist/icons/layout-dashboard.svelte
349
+ function Layout_dashboard($$renderer, $$props) {
350
+ const $$sanitized_props = $.sanitize_props($$props);
351
+ /**
352
+ * @license lucide-svelte v1.0.1 - ISC
353
+ *
354
+ * ISC License
355
+ *
356
+ * Copyright (c) 2026 Lucide Icons and Contributors
357
+ *
358
+ * Permission to use, copy, modify, and/or distribute this software for any
359
+ * purpose with or without fee is hereby granted, provided that the above
360
+ * copyright notice and this permission notice appear in all copies.
361
+ *
362
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
363
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
364
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
365
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
366
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
367
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
368
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
369
+ *
370
+ * ---
371
+ *
372
+ * The following Lucide icons are derived from the Feather project:
373
+ *
374
+ * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
375
+ *
376
+ * The MIT License (MIT) (for the icons listed above)
377
+ *
378
+ * Copyright (c) 2013-present Cole Bemis
379
+ *
380
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
381
+ * of this software and associated documentation files (the "Software"), to deal
382
+ * in the Software without restriction, including without limitation the rights
383
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
384
+ * copies of the Software, and to permit persons to whom the Software is
385
+ * furnished to do so, subject to the following conditions:
386
+ *
387
+ * The above copyright notice and this permission notice shall be included in all
388
+ * copies or substantial portions of the Software.
389
+ *
390
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
391
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
392
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
393
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
394
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
395
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
396
+ * SOFTWARE.
397
+ *
398
+ */
399
+ Icon($$renderer, $.spread_props([
400
+ { name: "layout-dashboard" },
401
+ $$sanitized_props,
402
+ {
403
+ /**
404
+ * @component @name LayoutDashboard
405
+ * @description Lucide SVG icon component, renders SVG Element with children.
406
+ *
407
+ * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSI5IiB4PSIzIiB5PSIzIiByeD0iMSIgLz4KICA8cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSI1IiB4PSIxNCIgeT0iMyIgcng9IjEiIC8+CiAgPHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iOSIgeD0iMTQiIHk9IjEyIiByeD0iMSIgLz4KICA8cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSI1IiB4PSIzIiB5PSIxNiIgcng9IjEiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/layout-dashboard
408
+ * @see https://lucide.dev/guide/packages/lucide-svelte - Documentation
409
+ *
410
+ * @param {Object} props - Lucide icons props and any valid SVG attribute
411
+ * @returns {FunctionalComponent} Svelte component
412
+ *
413
+ */
414
+ iconNode: [
415
+ ["rect", {
416
+ "width": "7",
417
+ "height": "9",
418
+ "x": "3",
419
+ "y": "3",
420
+ "rx": "1"
421
+ }],
422
+ ["rect", {
423
+ "width": "7",
424
+ "height": "5",
425
+ "x": "14",
426
+ "y": "3",
427
+ "rx": "1"
428
+ }],
429
+ ["rect", {
430
+ "width": "7",
431
+ "height": "9",
432
+ "x": "14",
433
+ "y": "12",
434
+ "rx": "1"
435
+ }],
436
+ ["rect", {
437
+ "width": "7",
438
+ "height": "5",
439
+ "x": "3",
440
+ "y": "16",
441
+ "rx": "1"
442
+ }]
443
+ ],
444
+ children: ($$renderer) => {
445
+ $$renderer.push(`<!--[-->`);
446
+ $.slot($$renderer, $$props, "default", {}, null);
447
+ $$renderer.push(`<!--]-->`);
448
+ },
449
+ $$slots: { default: true }
450
+ }
451
+ ]));
452
+ }
453
+ //#endregion
454
+ //#region ../node_modules/.bun/lucide-svelte@1.0.1+ff5f301bb2db9a0d/node_modules/lucide-svelte/dist/icons/pencil.svelte
455
+ function Pencil($$renderer, $$props) {
456
+ const $$sanitized_props = $.sanitize_props($$props);
457
+ /**
458
+ * @license lucide-svelte v1.0.1 - ISC
459
+ *
460
+ * ISC License
461
+ *
462
+ * Copyright (c) 2026 Lucide Icons and Contributors
463
+ *
464
+ * Permission to use, copy, modify, and/or distribute this software for any
465
+ * purpose with or without fee is hereby granted, provided that the above
466
+ * copyright notice and this permission notice appear in all copies.
467
+ *
468
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
469
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
470
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
471
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
472
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
473
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
474
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
475
+ *
476
+ * ---
477
+ *
478
+ * The following Lucide icons are derived from the Feather project:
479
+ *
480
+ * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
481
+ *
482
+ * The MIT License (MIT) (for the icons listed above)
483
+ *
484
+ * Copyright (c) 2013-present Cole Bemis
485
+ *
486
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
487
+ * of this software and associated documentation files (the "Software"), to deal
488
+ * in the Software without restriction, including without limitation the rights
489
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
490
+ * copies of the Software, and to permit persons to whom the Software is
491
+ * furnished to do so, subject to the following conditions:
492
+ *
493
+ * The above copyright notice and this permission notice shall be included in all
494
+ * copies or substantial portions of the Software.
495
+ *
496
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
497
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
498
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
499
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
500
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
501
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
502
+ * SOFTWARE.
503
+ *
504
+ */
505
+ Icon($$renderer, $.spread_props([
506
+ { name: "pencil" },
507
+ $$sanitized_props,
508
+ {
509
+ /**
510
+ * @component @name Pencil
511
+ * @description Lucide SVG icon component, renders SVG Element with children.
512
+ *
513
+ * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEuMTc0IDYuODEyYTEgMSAwIDAgMC0zLjk4Ni0zLjk4N0wzLjg0MiAxNi4xNzRhMiAyIDAgMCAwLS41LjgzbC0xLjMyMSA0LjM1MmEuNS41IDAgMCAwIC42MjMuNjIybDQuMzUzLTEuMzJhMiAyIDAgMCAwIC44My0uNDk3eiIgLz4KICA8cGF0aCBkPSJtMTUgNSA0IDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/pencil
514
+ * @see https://lucide.dev/guide/packages/lucide-svelte - Documentation
515
+ *
516
+ * @param {Object} props - Lucide icons props and any valid SVG attribute
517
+ * @returns {FunctionalComponent} Svelte component
518
+ *
519
+ */
520
+ iconNode: [["path", { "d": "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z" }], ["path", { "d": "m15 5 4 4" }]],
521
+ children: ($$renderer) => {
522
+ $$renderer.push(`<!--[-->`);
523
+ $.slot($$renderer, $$props, "default", {}, null);
524
+ $$renderer.push(`<!--]-->`);
525
+ },
526
+ $$slots: { default: true }
527
+ }
528
+ ]));
529
+ }
530
+ //#endregion
531
+ //#region ../node_modules/.bun/lucide-svelte@1.0.1+ff5f301bb2db9a0d/node_modules/lucide-svelte/dist/icons/share-2.svelte
532
+ function Share_2($$renderer, $$props) {
533
+ const $$sanitized_props = $.sanitize_props($$props);
534
+ /**
535
+ * @license lucide-svelte v1.0.1 - ISC
536
+ *
537
+ * ISC License
538
+ *
539
+ * Copyright (c) 2026 Lucide Icons and Contributors
540
+ *
541
+ * Permission to use, copy, modify, and/or distribute this software for any
542
+ * purpose with or without fee is hereby granted, provided that the above
543
+ * copyright notice and this permission notice appear in all copies.
544
+ *
545
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
546
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
547
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
548
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
549
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
550
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
551
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
552
+ *
553
+ * ---
554
+ *
555
+ * The following Lucide icons are derived from the Feather project:
556
+ *
557
+ * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
558
+ *
559
+ * The MIT License (MIT) (for the icons listed above)
560
+ *
561
+ * Copyright (c) 2013-present Cole Bemis
562
+ *
563
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
564
+ * of this software and associated documentation files (the "Software"), to deal
565
+ * in the Software without restriction, including without limitation the rights
566
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
567
+ * copies of the Software, and to permit persons to whom the Software is
568
+ * furnished to do so, subject to the following conditions:
569
+ *
570
+ * The above copyright notice and this permission notice shall be included in all
571
+ * copies or substantial portions of the Software.
572
+ *
573
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
574
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
575
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
576
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
577
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
578
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
579
+ * SOFTWARE.
580
+ *
581
+ */
582
+ Icon($$renderer, $.spread_props([
583
+ { name: "share-2" },
584
+ $$sanitized_props,
585
+ {
586
+ /**
587
+ * @component @name Share2
588
+ * @description Lucide SVG icon component, renders SVG Element with children.
589
+ *
590
+ * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjUiIHI9IjMiIC8+CiAgPGNpcmNsZSBjeD0iNiIgY3k9IjEyIiByPSIzIiAvPgogIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTkiIHI9IjMiIC8+CiAgPGxpbmUgeDE9IjguNTkiIHgyPSIxNS40MiIgeTE9IjEzLjUxIiB5Mj0iMTcuNDkiIC8+CiAgPGxpbmUgeDE9IjE1LjQxIiB4Mj0iOC41OSIgeTE9IjYuNTEiIHkyPSIxMC40OSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/share-2
591
+ * @see https://lucide.dev/guide/packages/lucide-svelte - Documentation
592
+ *
593
+ * @param {Object} props - Lucide icons props and any valid SVG attribute
594
+ * @returns {FunctionalComponent} Svelte component
595
+ *
596
+ */
597
+ iconNode: [
598
+ ["circle", {
599
+ "cx": "18",
600
+ "cy": "5",
601
+ "r": "3"
602
+ }],
603
+ ["circle", {
604
+ "cx": "6",
605
+ "cy": "12",
606
+ "r": "3"
607
+ }],
608
+ ["circle", {
609
+ "cx": "18",
610
+ "cy": "19",
611
+ "r": "3"
612
+ }],
613
+ ["line", {
614
+ "x1": "8.59",
615
+ "x2": "15.42",
616
+ "y1": "13.51",
617
+ "y2": "17.49"
618
+ }],
619
+ ["line", {
620
+ "x1": "15.41",
621
+ "x2": "8.59",
622
+ "y1": "6.51",
623
+ "y2": "10.49"
624
+ }]
625
+ ],
626
+ children: ($$renderer) => {
627
+ $$renderer.push(`<!--[-->`);
628
+ $.slot($$renderer, $$props, "default", {}, null);
629
+ $$renderer.push(`<!--]-->`);
630
+ },
631
+ $$slots: { default: true }
632
+ }
633
+ ]));
634
+ }
635
+ //#endregion
636
+ //#region ../node_modules/.bun/lucide-svelte@1.0.1+ff5f301bb2db9a0d/node_modules/lucide-svelte/dist/icons/trash-2.svelte
637
+ function Trash_2($$renderer, $$props) {
638
+ const $$sanitized_props = $.sanitize_props($$props);
639
+ /**
640
+ * @license lucide-svelte v1.0.1 - ISC
641
+ *
642
+ * ISC License
643
+ *
644
+ * Copyright (c) 2026 Lucide Icons and Contributors
645
+ *
646
+ * Permission to use, copy, modify, and/or distribute this software for any
647
+ * purpose with or without fee is hereby granted, provided that the above
648
+ * copyright notice and this permission notice appear in all copies.
649
+ *
650
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
651
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
652
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
653
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
654
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
655
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
656
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
657
+ *
658
+ * ---
659
+ *
660
+ * The following Lucide icons are derived from the Feather project:
661
+ *
662
+ * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
663
+ *
664
+ * The MIT License (MIT) (for the icons listed above)
665
+ *
666
+ * Copyright (c) 2013-present Cole Bemis
667
+ *
668
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
669
+ * of this software and associated documentation files (the "Software"), to deal
670
+ * in the Software without restriction, including without limitation the rights
671
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
672
+ * copies of the Software, and to permit persons to whom the Software is
673
+ * furnished to do so, subject to the following conditions:
674
+ *
675
+ * The above copyright notice and this permission notice shall be included in all
676
+ * copies or substantial portions of the Software.
677
+ *
678
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
679
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
680
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
681
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
682
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
683
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
684
+ * SOFTWARE.
685
+ *
686
+ */
687
+ Icon($$renderer, $.spread_props([
688
+ { name: "trash-2" },
689
+ $$sanitized_props,
690
+ {
691
+ /**
692
+ * @component @name Trash2
693
+ * @description Lucide SVG icon component, renders SVG Element with children.
694
+ *
695
+ * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTAgMTF2NiIgLz4KICA8cGF0aCBkPSJNMTQgMTF2NiIgLz4KICA8cGF0aCBkPSJNMTkgNnYxNGEyIDIgMCAwIDEtMiAySDdhMiAyIDAgMCAxLTItMlY2IiAvPgogIDxwYXRoIGQ9Ik0zIDZoMTgiIC8+CiAgPHBhdGggZD0iTTggNlY0YTIgMiAwIDAgMSAyLTJoNGEyIDIgMCAwIDEgMiAydjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/trash-2
696
+ * @see https://lucide.dev/guide/packages/lucide-svelte - Documentation
697
+ *
698
+ * @param {Object} props - Lucide icons props and any valid SVG attribute
699
+ * @returns {FunctionalComponent} Svelte component
700
+ *
701
+ */
702
+ iconNode: [
703
+ ["path", { "d": "M10 11v6" }],
704
+ ["path", { "d": "M14 11v6" }],
705
+ ["path", { "d": "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6" }],
706
+ ["path", { "d": "M3 6h18" }],
707
+ ["path", { "d": "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }]
708
+ ],
709
+ children: ($$renderer) => {
710
+ $$renderer.push(`<!--[-->`);
711
+ $.slot($$renderer, $$props, "default", {}, null);
712
+ $$renderer.push(`<!--]-->`);
713
+ },
714
+ $$slots: { default: true }
715
+ }
716
+ ]));
717
+ }
718
+ //#endregion
719
+ //#region ../node_modules/.bun/lucide-svelte@1.0.1+ff5f301bb2db9a0d/node_modules/lucide-svelte/dist/icons/upload.svelte
720
+ function Upload($$renderer, $$props) {
721
+ const $$sanitized_props = $.sanitize_props($$props);
722
+ /**
723
+ * @license lucide-svelte v1.0.1 - ISC
724
+ *
725
+ * ISC License
726
+ *
727
+ * Copyright (c) 2026 Lucide Icons and Contributors
728
+ *
729
+ * Permission to use, copy, modify, and/or distribute this software for any
730
+ * purpose with or without fee is hereby granted, provided that the above
731
+ * copyright notice and this permission notice appear in all copies.
732
+ *
733
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
734
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
735
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
736
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
737
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
738
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
739
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
740
+ *
741
+ * ---
742
+ *
743
+ * The following Lucide icons are derived from the Feather project:
744
+ *
745
+ * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
746
+ *
747
+ * The MIT License (MIT) (for the icons listed above)
748
+ *
749
+ * Copyright (c) 2013-present Cole Bemis
750
+ *
751
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
752
+ * of this software and associated documentation files (the "Software"), to deal
753
+ * in the Software without restriction, including without limitation the rights
754
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
755
+ * copies of the Software, and to permit persons to whom the Software is
756
+ * furnished to do so, subject to the following conditions:
757
+ *
758
+ * The above copyright notice and this permission notice shall be included in all
759
+ * copies or substantial portions of the Software.
760
+ *
761
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
762
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
763
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
764
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
765
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
766
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
767
+ * SOFTWARE.
768
+ *
769
+ */
770
+ Icon($$renderer, $.spread_props([
771
+ { name: "upload" },
772
+ $$sanitized_props,
773
+ {
774
+ /**
775
+ * @component @name Upload
776
+ * @description Lucide SVG icon component, renders SVG Element with children.
777
+ *
778
+ * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgM3YxMiIgLz4KICA8cGF0aCBkPSJtMTcgOC01LTUtNSA1IiAvPgogIDxwYXRoIGQ9Ik0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/upload
779
+ * @see https://lucide.dev/guide/packages/lucide-svelte - Documentation
780
+ *
781
+ * @param {Object} props - Lucide icons props and any valid SVG attribute
782
+ * @returns {FunctionalComponent} Svelte component
783
+ *
784
+ */
785
+ iconNode: [
786
+ ["path", { "d": "M12 3v12" }],
787
+ ["path", { "d": "m17 8-5-5-5 5" }],
788
+ ["path", { "d": "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }]
789
+ ],
790
+ children: ($$renderer) => {
791
+ $$renderer.push(`<!--[-->`);
792
+ $.slot($$renderer, $$props, "default", {}, null);
793
+ $$renderer.push(`<!--]-->`);
794
+ },
795
+ $$slots: { default: true }
796
+ }
797
+ ]));
798
+ }
799
+ //#endregion
800
+ //#region ../node_modules/.bun/lucide-svelte@1.0.1+ff5f301bb2db9a0d/node_modules/lucide-svelte/dist/icons/circle-x.svelte
801
+ function Circle_x($$renderer, $$props) {
802
+ const $$sanitized_props = $.sanitize_props($$props);
803
+ /**
804
+ * @license lucide-svelte v1.0.1 - ISC
805
+ *
806
+ * ISC License
807
+ *
808
+ * Copyright (c) 2026 Lucide Icons and Contributors
809
+ *
810
+ * Permission to use, copy, modify, and/or distribute this software for any
811
+ * purpose with or without fee is hereby granted, provided that the above
812
+ * copyright notice and this permission notice appear in all copies.
813
+ *
814
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
815
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
816
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
817
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
818
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
819
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
820
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
821
+ *
822
+ * ---
823
+ *
824
+ * The following Lucide icons are derived from the Feather project:
825
+ *
826
+ * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
827
+ *
828
+ * The MIT License (MIT) (for the icons listed above)
829
+ *
830
+ * Copyright (c) 2013-present Cole Bemis
831
+ *
832
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
833
+ * of this software and associated documentation files (the "Software"), to deal
834
+ * in the Software without restriction, including without limitation the rights
835
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
836
+ * copies of the Software, and to permit persons to whom the Software is
837
+ * furnished to do so, subject to the following conditions:
838
+ *
839
+ * The above copyright notice and this permission notice shall be included in all
840
+ * copies or substantial portions of the Software.
841
+ *
842
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
843
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
844
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
845
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
846
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
847
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
848
+ * SOFTWARE.
849
+ *
850
+ */
851
+ Icon($$renderer, $.spread_props([
852
+ { name: "circle-x" },
853
+ $$sanitized_props,
854
+ {
855
+ /**
856
+ * @component @name CircleX
857
+ * @description Lucide SVG icon component, renders SVG Element with children.
858
+ *
859
+ * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJtMTUgOS02IDYiIC8+CiAgPHBhdGggZD0ibTkgOSA2IDYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/circle-x
860
+ * @see https://lucide.dev/guide/packages/lucide-svelte - Documentation
861
+ *
862
+ * @param {Object} props - Lucide icons props and any valid SVG attribute
863
+ * @returns {FunctionalComponent} Svelte component
864
+ *
865
+ */
866
+ iconNode: [
867
+ ["circle", {
868
+ "cx": "12",
869
+ "cy": "12",
870
+ "r": "10"
871
+ }],
872
+ ["path", { "d": "m15 9-6 6" }],
873
+ ["path", { "d": "m9 9 6 6" }]
874
+ ],
875
+ children: ($$renderer) => {
876
+ $$renderer.push(`<!--[-->`);
877
+ $.slot($$renderer, $$props, "default", {}, null);
878
+ $$renderer.push(`<!--]-->`);
879
+ },
880
+ $$slots: { default: true }
881
+ }
882
+ ]));
883
+ }
884
+ //#endregion
885
+ //#region ../node_modules/.bun/@hiai-gg+hiai-ui@0.0.8+3149ccaa93f654b8/node_modules/@hiai-gg/hiai-ui/dist/components/ui/card/card.svelte
886
+ function Card($$renderer, $$props) {
887
+ $$renderer.component(($$renderer) => {
888
+ let { ref = null, class: className, children, $$slots, $$events, ...restProps } = $$props;
889
+ $$renderer.push(`<div${$.attributes({
890
+ class: $.clsx(cn("rounded-xl border border-border bg-card text-card-foreground shadow-sm", className)),
891
+ ...restProps
892
+ })}>`);
893
+ if (children) {
894
+ $$renderer.push("<!--[0-->");
895
+ children($$renderer);
896
+ $$renderer.push(`<!---->`);
897
+ } else $$renderer.push("<!--[-1-->");
898
+ $$renderer.push(`<!--]--></div>`);
899
+ $.bind_props($$props, { ref });
900
+ });
901
+ }
902
+ //#endregion
903
+ //#region ../node_modules/.bun/@hiai-gg+hiai-ui@0.0.8+3149ccaa93f654b8/node_modules/@hiai-gg/hiai-ui/dist/components/ui/card/card-content.svelte
904
+ function Card_content($$renderer, $$props) {
905
+ $$renderer.component(($$renderer) => {
906
+ let { ref = null, class: className, children, $$slots, $$events, ...restProps } = $$props;
907
+ $$renderer.push(`<div${$.attributes({
908
+ class: $.clsx(cn("p-6 pt-0", className)),
909
+ ...restProps
910
+ })}>`);
911
+ if (children) {
912
+ $$renderer.push("<!--[0-->");
913
+ children($$renderer);
914
+ $$renderer.push(`<!---->`);
915
+ } else $$renderer.push("<!--[-1-->");
916
+ $$renderer.push(`<!--]--></div>`);
917
+ $.bind_props($$props, { ref });
918
+ });
919
+ }
920
+ //#endregion
921
+ //#region ../node_modules/.bun/@hiai-gg+hiai-ui@0.0.8+3149ccaa93f654b8/node_modules/@hiai-gg/hiai-ui/dist/components/ui/card/card-header.svelte
922
+ function Card_header($$renderer, $$props) {
923
+ $$renderer.component(($$renderer) => {
924
+ let { ref = null, class: className, children, $$slots, $$events, ...restProps } = $$props;
925
+ $$renderer.push(`<div${$.attributes({
926
+ class: $.clsx(cn("flex flex-col space-y-1.5 p-6", className)),
927
+ ...restProps
928
+ })}>`);
929
+ if (children) {
930
+ $$renderer.push("<!--[0-->");
931
+ children($$renderer);
932
+ $$renderer.push(`<!---->`);
933
+ } else $$renderer.push("<!--[-1-->");
934
+ $$renderer.push(`<!--]--></div>`);
935
+ $.bind_props($$props, { ref });
936
+ });
937
+ }
938
+ //#endregion
939
+ //#region src/lib/components/MoveDialog.svelte
940
+ function MoveDialog($$renderer, $$props) {
941
+ $$renderer.component(($$renderer) => {
942
+ let { open = false, itemId, itemType, initialParentId = null, initialCategoryId = null, onSave, onClose } = $$props;
943
+ let folders = [];
944
+ let categories = [];
945
+ let loading = false;
946
+ let busy = false;
947
+ let error = null;
948
+ let selectedParentId = null;
949
+ let selectedCategoryId = null;
950
+ const blockedFolderIds = $.derived(() => {
951
+ const blocked = /* @__PURE__ */ new Set();
952
+ if (itemType !== "folder") return blocked;
953
+ blocked.add(itemId);
954
+ let changed = true;
955
+ while (changed) {
956
+ changed = false;
957
+ for (const f of folders) {
958
+ const pid = f.parentId ?? null;
959
+ if (pid && blocked.has(pid) && !blocked.has(f.id)) {
960
+ blocked.add(f.id);
961
+ changed = true;
962
+ }
963
+ }
964
+ }
965
+ return blocked;
966
+ });
967
+ async function handleSubmit(e) {
968
+ e?.preventDefault();
969
+ if (busy) return;
970
+ busy = true;
971
+ try {
972
+ if (onSave) await onSave(selectedParentId === "" || selectedParentId === "null" ? null : selectedParentId, selectedCategoryId);
973
+ if (initialParentId) bumpSubfoldersRefresh(initialParentId);
974
+ if (selectedParentId && selectedParentId !== "" && selectedParentId !== "null") bumpSubfoldersRefresh(selectedParentId);
975
+ refreshFolders();
976
+ open = false;
977
+ } catch (err) {
978
+ console.error("Failed to move item", err);
979
+ error = err instanceof Error ? err.message : "Failed to move item";
980
+ } finally {
981
+ busy = false;
982
+ }
983
+ }
984
+ function close() {
985
+ if (busy) return;
986
+ open = false;
987
+ onClose?.();
988
+ }
989
+ let $$settled = true;
990
+ let $$inner_renderer;
991
+ function $$render_inner($$renderer) {
992
+ Dialog($$renderer, {
993
+ onOpenChange: (next) => {
994
+ if (!next) close();
995
+ },
996
+ get open() {
997
+ return open;
998
+ },
999
+ set open($$value) {
1000
+ open = $$value;
1001
+ $$settled = false;
1002
+ },
1003
+ children: ($$renderer) => {
1004
+ Dialog_header($$renderer, {
1005
+ children: ($$renderer) => {
1006
+ Dialog_title($$renderer, {
1007
+ children: ($$renderer) => {
1008
+ $$renderer.push(`<!---->${$.escape(itemType === "folder" ? folders_move() : doc_move_to_folder())}`);
1009
+ },
1010
+ $$slots: { default: true }
1011
+ });
1012
+ $$renderer.push(`<!----> `);
1013
+ Dialog_description($$renderer, {
1014
+ children: ($$renderer) => {
1015
+ $$renderer.push(`<!---->Choose a new parent folder and/or category for this ${$.escape(itemType)}.`);
1016
+ },
1017
+ $$slots: { default: true }
1018
+ });
1019
+ $$renderer.push(`<!---->`);
1020
+ },
1021
+ $$slots: { default: true }
1022
+ });
1023
+ $$renderer.push(`<!----> `);
1024
+ $$renderer.push("<!--[-1-->");
1025
+ $$renderer.push(`<form class="space-y-4 py-2">`);
1026
+ if (error) {
1027
+ $$renderer.push("<!--[0-->");
1028
+ $$renderer.push(`<p class="text-sm text-destructive" role="alert">${$.escape(error)}</p>`);
1029
+ } else $$renderer.push("<!--[-1-->");
1030
+ $$renderer.push(`<!--]--> <div class="space-y-2">`);
1031
+ Label($$renderer, {
1032
+ children: ($$renderer) => {
1033
+ $$renderer.push(`<!---->Parent Folder`);
1034
+ },
1035
+ $$slots: { default: true }
1036
+ });
1037
+ $$renderer.push(`<!----> `);
1038
+ FolderTreeSelector($$renderer, {
1039
+ folders,
1040
+ blockedIds: blockedFolderIds(),
1041
+ get selectedId() {
1042
+ return selectedParentId;
1043
+ },
1044
+ set selectedId($$value) {
1045
+ selectedParentId = $$value;
1046
+ $$settled = false;
1047
+ }
1048
+ });
1049
+ $$renderer.push(`<!----></div> <div class="space-y-2">`);
1050
+ Label($$renderer, {
1051
+ for: "move-dialog-category",
1052
+ children: ($$renderer) => {
1053
+ $$renderer.push(`<!---->Category`);
1054
+ },
1055
+ $$slots: { default: true }
1056
+ });
1057
+ $$renderer.push(`<!----> `);
1058
+ $$renderer.select({
1059
+ id: "move-dialog-category",
1060
+ value: selectedCategoryId,
1061
+ class: "h-9 w-full rounded-md border border-input bg-transparent px-2 text-sm shadow-sm focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50"
1062
+ }, ($$renderer) => {
1063
+ $$renderer.option({ value: "" }, ($$renderer) => {
1064
+ $$renderer.push(`Uncategorized`);
1065
+ });
1066
+ $$renderer.push(`<!--[-->`);
1067
+ const each_array = $.ensure_array_like(categories);
1068
+ for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
1069
+ let category = each_array[$$index];
1070
+ $$renderer.option({ value: category.id }, ($$renderer) => {
1071
+ $$renderer.push(`${$.escape(category.name)}`);
1072
+ });
1073
+ }
1074
+ $$renderer.push(`<!--]-->`);
1075
+ });
1076
+ $$renderer.push(`</div></form>`);
1077
+ $$renderer.push(`<!--]--> `);
1078
+ Dialog_footer($$renderer, {
1079
+ class: "mt-4",
1080
+ children: ($$renderer) => {
1081
+ Button($$renderer, {
1082
+ variant: "outline",
1083
+ type: "button",
1084
+ onclick: close,
1085
+ disabled: busy,
1086
+ children: ($$renderer) => {
1087
+ $$renderer.push(`<!---->${$.escape(action_cancel())}`);
1088
+ },
1089
+ $$slots: { default: true }
1090
+ });
1091
+ $$renderer.push(`<!----> `);
1092
+ Button($$renderer, {
1093
+ type: "button",
1094
+ onclick: handleSubmit,
1095
+ disabled: busy || loading,
1096
+ children: ($$renderer) => {
1097
+ if (busy) {
1098
+ $$renderer.push("<!--[0-->");
1099
+ Loader_circle($$renderer, { class: "mr-1 size-4 animate-spin" });
1100
+ } else $$renderer.push("<!--[-1-->");
1101
+ $$renderer.push(`<!--]--> ${$.escape(action_save())}`);
1102
+ },
1103
+ $$slots: { default: true }
1104
+ });
1105
+ $$renderer.push(`<!---->`);
1106
+ },
1107
+ $$slots: { default: true }
1108
+ });
1109
+ $$renderer.push(`<!---->`);
1110
+ },
1111
+ $$slots: { default: true }
1112
+ });
1113
+ }
1114
+ do {
1115
+ $$settled = true;
1116
+ $$inner_renderer = $$renderer.copy();
1117
+ $$render_inner($$inner_renderer);
1118
+ } while (!$$settled);
1119
+ $$renderer.subsume($$inner_renderer);
1120
+ $.bind_props($$props, { open });
1121
+ });
1122
+ }
1123
+ //#endregion
1124
+ //#region src/lib/utils/strip-markdown.ts
1125
+ /**
1126
+ * Strip common markdown syntax from a string, returning plain text.
1127
+ * Intended for preview snippets — not a full markdown-to-text converter.
1128
+ */
1129
+ function stripMarkdown(markdown) {
1130
+ let text = markdown;
1131
+ text = text.replace(/^```[\s\S]*?\n([\s\S]*?)^```/gm, "$1");
1132
+ text = text.replace(/`([^`]+)`/g, "$1");
1133
+ text = text.replace(/!\[([^\]]*)\]\([^)]*\)/g, "");
1134
+ text = text.replace(/!\[[^\]]*\]\([^)]*$/g, "");
1135
+ text = text.replace(/\[([^\]]*)\]\([^)]*\)/g, "$1");
1136
+ text = text.replace(/\[[^\]]*\]\([^)]*$/g, "");
1137
+ text = text.replace(/\*\*([^*]+)\*\*/g, "$1");
1138
+ text = text.replace(/__([^_]+)__/g, "$1");
1139
+ text = text.replace(/\*([^*]+)\*/g, "$1");
1140
+ text = text.replace(/_([^_]+)_/g, "$1");
1141
+ text = text.replace(/~~([^~]+)~~/g, "$1");
1142
+ text = text.replace(/^#{1,6}\s+/gm, "");
1143
+ text = text.replace(/^>\s?/gm, "");
1144
+ text = text.replace(/^[-*_]{3,}\s*$/gm, "");
1145
+ text = text.replace(/^[\s]*[-*+]\s+/gm, "");
1146
+ text = text.replace(/^[\s]*\d+\.\s+/gm, "");
1147
+ text = text.replace(/\n{3,}/g, "\n\n");
1148
+ text = text.replace(/[^\S\n]+/g, " ");
1149
+ return text.trim();
1150
+ }
1151
+ //#endregion
1152
+ //#region src/lib/components/DocumentCard.svelte
1153
+ function DocumentCard($$renderer, $$props) {
1154
+ $$renderer.component(($$renderer) => {
1155
+ const { document: doc, onDelete, onDuplicate, onShare, duplicateBusy = false } = $$props;
1156
+ function navigateToDoc() {
1157
+ goto(`/docs/${doc.id}`);
1158
+ }
1159
+ let showMoveDialog = false;
1160
+ async function handleMove(parentId, categoryId) {
1161
+ await updateDocument(doc.id, {
1162
+ folderId: parentId,
1163
+ categoryId
1164
+ });
1165
+ await invalidateAll();
1166
+ }
1167
+ let contentCopied = false;
1168
+ let contentCopying = false;
1169
+ let copyTimer = null;
1170
+ async function handleCopyContent(e) {
1171
+ e.stopPropagation();
1172
+ if (typeof window === "undefined") return;
1173
+ let text = "";
1174
+ contentCopying = true;
1175
+ try {
1176
+ text = (await getDocument(doc.id)).content ?? "";
1177
+ } catch (err) {
1178
+ console.error("DocumentCard: failed to fetch full document for copy", err);
1179
+ text = doc.excerpt || doc.content || "";
1180
+ } finally {
1181
+ contentCopying = false;
1182
+ }
1183
+ if (!text) return;
1184
+ if (!await copyToClipboard(text)) return;
1185
+ contentCopied = true;
1186
+ if (copyTimer) clearTimeout(copyTimer);
1187
+ copyTimer = setTimeout(() => {
1188
+ contentCopied = false;
1189
+ copyTimer = null;
1190
+ }, 2e3);
1191
+ }
1192
+ const preview = $.derived(() => stripMarkdown(doc.excerpt || doc.content || "").slice(0, 100));
1193
+ let $$settled = true;
1194
+ let $$inner_renderer;
1195
+ function $$render_inner($$renderer) {
1196
+ Card($$renderer, {
1197
+ class: "group cursor-pointer transition-shadow duration-200 hover:shadow-md",
1198
+ onclick: navigateToDoc,
1199
+ onkeydown: (e) => {
1200
+ if (e.key === "Enter" || e.key === " ") {
1201
+ e.preventDefault();
1202
+ navigateToDoc();
1203
+ }
1204
+ },
1205
+ role: "button",
1206
+ tabindex: 0,
1207
+ children: ($$renderer) => {
1208
+ Card_header($$renderer, {
1209
+ class: "flex-row items-start justify-between space-y-0 pb-2",
1210
+ children: ($$renderer) => {
1211
+ $$renderer.push(`<div class="flex items-center gap-2 text-muted-foreground">`);
1212
+ File_text($$renderer, { class: "size-4 shrink-0" });
1213
+ $$renderer.push(`<!----> <span class="text-xs">${$.escape(doc_updated({ time: formatRelativeTime(doc.updatedAt) }))}</span></div> `);
1214
+ Dropdown_menu($$renderer, {
1215
+ children: ($$renderer) => {
1216
+ Dropdown_menu_trigger($$renderer, {
1217
+ class: "inline-flex size-8 items-center justify-center rounded-md opacity-100 transition-opacity hover:bg-accent sm:opacity-0 sm:group-hover:opacity-100 focus-visible:opacity-100",
1218
+ onclick: (e) => e.stopPropagation(),
1219
+ children: ($$renderer) => {
1220
+ Ellipsis_vertical($$renderer, { class: "size-4" });
1221
+ $$renderer.push(`<!----> <span class="sr-only">${$.escape(doc_open_menu())}</span>`);
1222
+ },
1223
+ $$slots: { default: true }
1224
+ });
1225
+ $$renderer.push(`<!----> `);
1226
+ Dropdown_menu_content($$renderer, {
1227
+ align: "end",
1228
+ children: ($$renderer) => {
1229
+ Dropdown_menu_item($$renderer, {
1230
+ onclick: () => goto(`/docs/${doc.id}`),
1231
+ children: ($$renderer) => {
1232
+ Arrow_up_right($$renderer, { class: "size-4" });
1233
+ $$renderer.push(`<!----> ${$.escape(doc_open())}`);
1234
+ },
1235
+ $$slots: { default: true }
1236
+ });
1237
+ $$renderer.push(`<!----> `);
1238
+ Dropdown_menu_item($$renderer, {
1239
+ onclick: handleCopyContent,
1240
+ disabled: contentCopying,
1241
+ children: ($$renderer) => {
1242
+ if (contentCopying) {
1243
+ $$renderer.push("<!--[0-->");
1244
+ Loader_circle($$renderer, { class: "size-4 animate-spin" });
1245
+ $$renderer.push(`<!----> ${$.escape(action_copy_content())}`);
1246
+ } else if (contentCopied) {
1247
+ $$renderer.push("<!--[1-->");
1248
+ Check($$renderer, { class: "size-4" });
1249
+ $$renderer.push(`<!----> ${$.escape(share_copied())}`);
1250
+ } else {
1251
+ $$renderer.push("<!--[-1-->");
1252
+ Copy($$renderer, { class: "size-4" });
1253
+ $$renderer.push(`<!----> ${$.escape(action_copy_content())}`);
1254
+ }
1255
+ $$renderer.push(`<!--]-->`);
1256
+ },
1257
+ $$slots: { default: true }
1258
+ });
1259
+ $$renderer.push(`<!----> `);
1260
+ Dropdown_menu_item($$renderer, {
1261
+ disabled: duplicateBusy,
1262
+ onclick: (e) => {
1263
+ e.stopPropagation();
1264
+ onDuplicate?.(doc.id);
1265
+ },
1266
+ children: ($$renderer) => {
1267
+ if (duplicateBusy) {
1268
+ $$renderer.push("<!--[0-->");
1269
+ Loader_circle($$renderer, { class: "size-4 animate-spin" });
1270
+ $$renderer.push(`<!----> ${$.escape(action_loading())}`);
1271
+ } else {
1272
+ $$renderer.push("<!--[-1-->");
1273
+ Files($$renderer, { class: "size-4" });
1274
+ $$renderer.push(`<!----> ${$.escape(doc_duplicate())}`);
1275
+ }
1276
+ $$renderer.push(`<!--]-->`);
1277
+ },
1278
+ $$slots: { default: true }
1279
+ });
1280
+ $$renderer.push(`<!----> `);
1281
+ Dropdown_menu_item($$renderer, {
1282
+ onclick: (e) => {
1283
+ e.stopPropagation();
1284
+ showMoveDialog = true;
1285
+ },
1286
+ children: ($$renderer) => {
1287
+ Folder_input($$renderer, { class: "size-4" });
1288
+ $$renderer.push(`<!----> ${$.escape(doc_move_to_folder())}`);
1289
+ },
1290
+ $$slots: { default: true }
1291
+ });
1292
+ $$renderer.push(`<!----> `);
1293
+ Dropdown_menu_item($$renderer, {
1294
+ onclick: (e) => {
1295
+ e.stopPropagation();
1296
+ onShare?.(doc.id, doc.title);
1297
+ },
1298
+ children: ($$renderer) => {
1299
+ Share_2($$renderer, { class: "size-4" });
1300
+ $$renderer.push(`<!----> ${$.escape(doc_share())}`);
1301
+ },
1302
+ $$slots: { default: true }
1303
+ });
1304
+ $$renderer.push(`<!----> `);
1305
+ Dropdown_menu_separator($$renderer, {});
1306
+ $$renderer.push(`<!----> `);
1307
+ Dropdown_menu_item($$renderer, {
1308
+ class: "text-destructive",
1309
+ onclick: (e) => {
1310
+ e.stopPropagation();
1311
+ onDelete?.(doc.id);
1312
+ },
1313
+ children: ($$renderer) => {
1314
+ Trash_2($$renderer, { class: "size-4" });
1315
+ $$renderer.push(`<!----> ${$.escape(action_delete())}`);
1316
+ },
1317
+ $$slots: { default: true }
1318
+ });
1319
+ $$renderer.push(`<!---->`);
1320
+ },
1321
+ $$slots: { default: true }
1322
+ });
1323
+ $$renderer.push(`<!---->`);
1324
+ },
1325
+ $$slots: { default: true }
1326
+ });
1327
+ $$renderer.push(`<!---->`);
1328
+ },
1329
+ $$slots: { default: true }
1330
+ });
1331
+ $$renderer.push(`<!----> `);
1332
+ Card_content($$renderer, {
1333
+ children: ($$renderer) => {
1334
+ $$renderer.push(`<h3 class="mb-1 truncate text-sm font-medium leading-snug">${$.escape(doc.title)}</h3> `);
1335
+ if (preview()) {
1336
+ $$renderer.push("<!--[0-->");
1337
+ $$renderer.push(`<p class="mb-3 line-clamp-2 text-xs text-muted-foreground">${$.escape(preview())}</p>`);
1338
+ } else $$renderer.push("<!--[-1-->");
1339
+ $$renderer.push(`<!--]--> `);
1340
+ if (doc.tags.length > 0) {
1341
+ $$renderer.push("<!--[0-->");
1342
+ $$renderer.push(`<div class="flex flex-wrap gap-1"><!--[-->`);
1343
+ const each_array = $.ensure_array_like(doc.tags.slice(0, 3));
1344
+ for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
1345
+ let tag = each_array[$$index];
1346
+ Badge($$renderer, {
1347
+ variant: "secondary",
1348
+ class: "text-[10px]",
1349
+ children: ($$renderer) => {
1350
+ $$renderer.push(`<!---->${$.escape(tag)}`);
1351
+ },
1352
+ $$slots: { default: true }
1353
+ });
1354
+ }
1355
+ $$renderer.push(`<!--]--> `);
1356
+ if (doc.tags.length > 3) {
1357
+ $$renderer.push("<!--[0-->");
1358
+ Badge($$renderer, {
1359
+ variant: "outline",
1360
+ class: "text-[10px]",
1361
+ children: ($$renderer) => {
1362
+ $$renderer.push(`<!---->+${$.escape(doc.tags.length - 3)}`);
1363
+ },
1364
+ $$slots: { default: true }
1365
+ });
1366
+ } else $$renderer.push("<!--[-1-->");
1367
+ $$renderer.push(`<!--]--></div>`);
1368
+ } else $$renderer.push("<!--[-1-->");
1369
+ $$renderer.push(`<!--]-->`);
1370
+ },
1371
+ $$slots: { default: true }
1372
+ });
1373
+ $$renderer.push(`<!---->`);
1374
+ },
1375
+ $$slots: { default: true }
1376
+ });
1377
+ $$renderer.push(`<!----> `);
1378
+ MoveDialog($$renderer, {
1379
+ itemId: doc.id,
1380
+ itemType: "document",
1381
+ initialParentId: doc.folderId,
1382
+ initialCategoryId: doc.categoryId,
1383
+ onSave: handleMove,
1384
+ get open() {
1385
+ return showMoveDialog;
1386
+ },
1387
+ set open($$value) {
1388
+ showMoveDialog = $$value;
1389
+ $$settled = false;
1390
+ }
1391
+ });
1392
+ $$renderer.push(`<!---->`);
1393
+ }
1394
+ do {
1395
+ $$settled = true;
1396
+ $$inner_renderer = $$renderer.copy();
1397
+ $$render_inner($$inner_renderer);
1398
+ } while (!$$settled);
1399
+ $$renderer.subsume($$inner_renderer);
1400
+ });
1401
+ }
1402
+ //#endregion
1403
+ //#region src/lib/components/FolderCard.svelte
1404
+ function FolderCard($$renderer, $$props) {
1405
+ $$renderer.component(($$renderer) => {
1406
+ const { folder, onDelete, onRename, onShare } = $$props;
1407
+ function navigateToFolder() {
1408
+ goto(`/folders/${folder.id}`);
1409
+ }
1410
+ let showMoveDialog = false;
1411
+ async function handleMove(parentId, categoryId) {
1412
+ await updateFolder(folder.id, {
1413
+ parentId,
1414
+ categoryId
1415
+ });
1416
+ await invalidateAll();
1417
+ }
1418
+ let $$settled = true;
1419
+ let $$inner_renderer;
1420
+ function $$render_inner($$renderer) {
1421
+ Card($$renderer, {
1422
+ class: "group cursor-pointer transition-shadow duration-200 hover:shadow-md",
1423
+ onclick: navigateToFolder,
1424
+ onkeydown: (e) => {
1425
+ if (e.key === "Enter" || e.key === " ") {
1426
+ e.preventDefault();
1427
+ navigateToFolder();
1428
+ }
1429
+ },
1430
+ role: "button",
1431
+ tabindex: 0,
1432
+ children: ($$renderer) => {
1433
+ Card_content($$renderer, {
1434
+ class: "flex items-center gap-3 p-4",
1435
+ children: ($$renderer) => {
1436
+ $$renderer.push(`<div class="flex size-10 shrink-0 items-center justify-center rounded-lg bg-primary/10">`);
1437
+ Folder($$renderer, { class: "size-5 text-primary" });
1438
+ $$renderer.push(`<!----></div> <div class="min-w-0 flex-1"><h3 class="truncate text-sm font-medium">${$.escape(folder.name)}</h3> <p class="text-xs text-muted-foreground">${$.escape(folder.documentCount)} ${$.escape(folder.documentCount === 1 ? folders_document() : folders_documents())} · ${$.escape(folder.subfolderCount)} ${$.escape(folder.subfolderCount === 1 ? folders_subfolder() : folders_subfolders())} · ${$.escape(formatRelativeTime(folder.updatedAt))}</p></div> `);
1439
+ Dropdown_menu($$renderer, {
1440
+ children: ($$renderer) => {
1441
+ Dropdown_menu_trigger($$renderer, {
1442
+ class: "inline-flex size-8 shrink-0 items-center justify-center rounded-md opacity-100 transition-opacity hover:bg-accent sm:opacity-0 sm:group-hover:opacity-100 focus-visible:opacity-100",
1443
+ onclick: (e) => e.stopPropagation(),
1444
+ children: ($$renderer) => {
1445
+ Ellipsis_vertical($$renderer, { class: "size-4" });
1446
+ $$renderer.push(`<!----> <span class="sr-only">${$.escape(doc_open_menu())}</span>`);
1447
+ },
1448
+ $$slots: { default: true }
1449
+ });
1450
+ $$renderer.push(`<!----> `);
1451
+ Dropdown_menu_content($$renderer, {
1452
+ align: "end",
1453
+ children: ($$renderer) => {
1454
+ Dropdown_menu_item($$renderer, {
1455
+ onclick: () => goto(`/folders/${folder.id}`),
1456
+ children: ($$renderer) => {
1457
+ Folder($$renderer, { class: "size-4" });
1458
+ $$renderer.push(`<!----> ${$.escape(doc_open())}`);
1459
+ },
1460
+ $$slots: { default: true }
1461
+ });
1462
+ $$renderer.push(`<!----> `);
1463
+ Dropdown_menu_item($$renderer, {
1464
+ onclick: (e) => {
1465
+ e.stopPropagation();
1466
+ onRename?.(folder.id);
1467
+ },
1468
+ children: ($$renderer) => {
1469
+ Pencil($$renderer, { class: "size-4" });
1470
+ $$renderer.push(`<!----> ${$.escape(folders_rename())}`);
1471
+ },
1472
+ $$slots: { default: true }
1473
+ });
1474
+ $$renderer.push(`<!----> `);
1475
+ Dropdown_menu_item($$renderer, {
1476
+ onclick: (e) => {
1477
+ e.stopPropagation();
1478
+ showMoveDialog = true;
1479
+ },
1480
+ children: ($$renderer) => {
1481
+ Folder_input($$renderer, { class: "size-4" });
1482
+ $$renderer.push(`<!----> ${$.escape(folders_move())}`);
1483
+ },
1484
+ $$slots: { default: true }
1485
+ });
1486
+ $$renderer.push(`<!----> `);
1487
+ Dropdown_menu_item($$renderer, {
1488
+ onclick: (e) => {
1489
+ e.stopPropagation();
1490
+ onShare?.(folder.id, folder.name);
1491
+ },
1492
+ children: ($$renderer) => {
1493
+ Share_2($$renderer, { class: "size-4" });
1494
+ $$renderer.push(`<!----> ${$.escape(doc_share())}`);
1495
+ },
1496
+ $$slots: { default: true }
1497
+ });
1498
+ $$renderer.push(`<!----> `);
1499
+ Dropdown_menu_separator($$renderer, {});
1500
+ $$renderer.push(`<!----> `);
1501
+ Dropdown_menu_item($$renderer, {
1502
+ class: "text-destructive",
1503
+ onclick: (e) => {
1504
+ e.stopPropagation();
1505
+ onDelete?.(folder.id);
1506
+ },
1507
+ children: ($$renderer) => {
1508
+ Trash_2($$renderer, { class: "size-4" });
1509
+ $$renderer.push(`<!----> ${$.escape(action_delete())}`);
1510
+ },
1511
+ $$slots: { default: true }
1512
+ });
1513
+ $$renderer.push(`<!---->`);
1514
+ },
1515
+ $$slots: { default: true }
1516
+ });
1517
+ $$renderer.push(`<!---->`);
1518
+ },
1519
+ $$slots: { default: true }
1520
+ });
1521
+ $$renderer.push(`<!---->`);
1522
+ },
1523
+ $$slots: { default: true }
1524
+ });
1525
+ },
1526
+ $$slots: { default: true }
1527
+ });
1528
+ $$renderer.push(`<!----> `);
1529
+ MoveDialog($$renderer, {
1530
+ itemId: folder.id,
1531
+ itemType: "folder",
1532
+ initialParentId: folder.parentId,
1533
+ initialCategoryId: folder.categoryId,
1534
+ onSave: handleMove,
1535
+ get open() {
1536
+ return showMoveDialog;
1537
+ },
1538
+ set open($$value) {
1539
+ showMoveDialog = $$value;
1540
+ $$settled = false;
1541
+ }
1542
+ });
1543
+ $$renderer.push(`<!---->`);
1544
+ }
1545
+ do {
1546
+ $$settled = true;
1547
+ $$inner_renderer = $$renderer.copy();
1548
+ $$render_inner($$inner_renderer);
1549
+ } while (!$$settled);
1550
+ $$renderer.subsume($$inner_renderer);
1551
+ });
1552
+ }
1553
+ //#endregion
1554
+ //#region src/lib/components/ImportProgress.svelte
1555
+ function ImportProgress($$renderer, $$props) {
1556
+ $$renderer.component(($$renderer) => {
1557
+ const { open = true, items, onClose } = $$props;
1558
+ const total = $.derived(() => items.length);
1559
+ const done = $.derived(() => items.filter((i) => i.status === "done").length);
1560
+ const failed = $.derived(() => items.filter((i) => i.status === "error").length);
1561
+ const inFlight = $.derived(() => items.filter((i) => i.status === "uploading" || i.status === "processing").length);
1562
+ const settled = $.derived(() => inFlight() === 0);
1563
+ if (open) {
1564
+ $$renderer.push("<!--[0-->");
1565
+ $$renderer.push(`<div class="fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4" role="presentation"><div class="w-full max-w-md overflow-hidden rounded-lg border border-border bg-background shadow-2xl" role="dialog" tabindex="-1" aria-modal="true"${$.attr("aria-label", import_progress_title())}><div class="flex items-center justify-between border-b border-border px-4 py-3"><div><h2 class="text-sm font-semibold">${$.escape(import_progress_title())}</h2> `);
1566
+ if (total() > 0) {
1567
+ $$renderer.push("<!--[0-->");
1568
+ $$renderer.push(`<p class="mt-0.5 text-xs text-muted-foreground">${$.escape(import_progress_total({
1569
+ done: done(),
1570
+ total: total()
1571
+ }))}</p>`);
1572
+ } else $$renderer.push("<!--[-1-->");
1573
+ $$renderer.push(`<!--]--></div> <button type="button" class="rounded p-1 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:pointer-events-none disabled:opacity-50"${$.attr("aria-label", action_close())}${$.attr("disabled", !settled(), true)}>`);
1574
+ X($$renderer, { class: "size-4" });
1575
+ $$renderer.push(`<!----></button></div> <div class="max-h-[60vh] overflow-y-auto">`);
1576
+ if (items.length === 0) {
1577
+ $$renderer.push("<!--[0-->");
1578
+ $$renderer.push(`<div class="px-4 py-8 text-center text-sm text-muted-foreground">${$.escape(import_progress_empty())}</div>`);
1579
+ } else {
1580
+ $$renderer.push("<!--[-1-->");
1581
+ $$renderer.push(`<ul class="divide-y divide-border"><!--[-->`);
1582
+ const each_array = $.ensure_array_like(items);
1583
+ for (let idx = 0, $$length = each_array.length; idx < $$length; idx++) {
1584
+ let item = each_array[idx];
1585
+ $$renderer.push(`<li class="flex items-center gap-3 px-4 py-2.5 text-sm">`);
1586
+ File_text($$renderer, { class: "size-4 shrink-0 text-muted-foreground" });
1587
+ $$renderer.push(`<!----> <span class="min-w-0 flex-1 truncate">${$.escape(item.filename)}</span> <span class="inline-flex shrink-0 items-center gap-1 text-xs">`);
1588
+ if (item.status === "uploading") {
1589
+ $$renderer.push("<!--[0-->");
1590
+ Loader_circle($$renderer, { class: "size-3.5 animate-spin text-muted-foreground" });
1591
+ $$renderer.push(`<!----> <span class="text-muted-foreground">${$.escape(import_progress_uploading())}</span>`);
1592
+ } else if (item.status === "processing") {
1593
+ $$renderer.push("<!--[1-->");
1594
+ Loader_circle($$renderer, { class: "size-3.5 animate-spin text-muted-foreground" });
1595
+ $$renderer.push(`<!----> <span class="text-muted-foreground">${$.escape(import_progress_processing())}</span>`);
1596
+ } else if (item.status === "done") {
1597
+ $$renderer.push("<!--[2-->");
1598
+ Check($$renderer, { class: "size-3.5 text-emerald-600 dark:text-emerald-400" });
1599
+ $$renderer.push(`<!----> `);
1600
+ if (item.documentId) {
1601
+ $$renderer.push("<!--[0-->");
1602
+ $$renderer.push(`<a${$.attr("href", `/docs/${item.documentId}`)} class="inline-flex items-center gap-1 rounded bg-primary/10 px-2 py-0.5 text-xs font-semibold text-primary transition-colors hover:bg-primary/20"><span>View</span> `);
1603
+ Chevron_right($$renderer, { class: "size-3" });
1604
+ $$renderer.push(`<!----></a>`);
1605
+ } else {
1606
+ $$renderer.push("<!--[-1-->");
1607
+ $$renderer.push(`<span class="text-emerald-700 dark:text-emerald-400">${$.escape(import_progress_done())}</span>`);
1608
+ }
1609
+ $$renderer.push(`<!--]-->`);
1610
+ } else {
1611
+ $$renderer.push("<!--[-1-->");
1612
+ Circle_x($$renderer, { class: "size-3.5 text-destructive" });
1613
+ $$renderer.push(`<!----> <span class="text-destructive"${$.attr("title", item.error ?? "")}>${$.escape(import_progress_error())}</span>`);
1614
+ }
1615
+ $$renderer.push(`<!--]--></span></li>`);
1616
+ }
1617
+ $$renderer.push(`<!--]--></ul>`);
1618
+ }
1619
+ $$renderer.push(`<!--]--></div> `);
1620
+ if (settled() && total() > 0) {
1621
+ $$renderer.push("<!--[0-->");
1622
+ $$renderer.push(`<div class="flex items-center justify-between gap-2 border-t border-border bg-muted/50 px-4 py-3 text-sm"><p class="font-medium">${$.escape(import_progress_summary({
1623
+ imported: done(),
1624
+ failed: failed()
1625
+ }))}</p> <div class="flex items-center gap-2 ml-auto"><button type="button" class="inline-flex items-center gap-1 rounded-md bg-primary px-3 py-1 text-xs font-medium text-primary-foreground transition-colors hover:bg-primary/90">${$.escape(import_progress_close())}</button></div></div>`);
1626
+ } else $$renderer.push("<!--[-1-->");
1627
+ $$renderer.push(`<!--]--></div></div>`);
1628
+ } else $$renderer.push("<!--[-1-->");
1629
+ $$renderer.push(`<!--]-->`);
1630
+ });
1631
+ }
1632
+ //#endregion
1633
+ //#region src/lib/hosts/HiaiDocsDashboardHost.svelte
1634
+ function HiaiDocsDashboardHost($$renderer, $$props) {
1635
+ $$renderer.component(($$renderer) => {
1636
+ const Select$1 = {
1637
+ Root: Select,
1638
+ Content: Select_content,
1639
+ Item: Select_item,
1640
+ Trigger: Select_trigger,
1641
+ Value: Select_value
1642
+ };
1643
+ const { data, extensionContext = { pathname: "/" } } = $$props;
1644
+ const frontendExtensions = getFrontendExtensions();
1645
+ const dashboardWidgets = $.derived(() => resolveExtensions(frontendExtensions.dashboardWidgets, extensionContext));
1646
+ const activeFolderId = $.derived(() => page.url.searchParams.get("folder") || null);
1647
+ const activeCategoryId = $.derived(() => page.url.searchParams.get("category") || null);
1648
+ let searchQuery = "";
1649
+ let selectedTagId = null;
1650
+ let dateFrom = "";
1651
+ let dateTo = "";
1652
+ let showFolderDialog = false;
1653
+ let folderDialogMode = "create";
1654
+ let folderDialogTarget = null;
1655
+ let showDeleteFolderDialog = false;
1656
+ let deleteFolderTargetId = null;
1657
+ let deleteFolderBusy = false;
1658
+ let showShareDialog = false;
1659
+ let shareTarget = null;
1660
+ let importOpen = false;
1661
+ let importItems = [];
1662
+ let duplicatingDocumentId = null;
1663
+ let optimisticDocuments = [];
1664
+ function openShareDialogForDocument(id, title) {
1665
+ shareTarget = {
1666
+ kind: "document",
1667
+ documentId: id,
1668
+ title
1669
+ };
1670
+ showShareDialog = true;
1671
+ }
1672
+ function openShareDialogForFolder(id, name) {
1673
+ shareTarget = {
1674
+ kind: "folder",
1675
+ folderId: id,
1676
+ name
1677
+ };
1678
+ showShareDialog = true;
1679
+ }
1680
+ function openShareDialogForCategory(id, name) {
1681
+ shareTarget = {
1682
+ kind: "category",
1683
+ categoryId: id,
1684
+ name
1685
+ };
1686
+ showShareDialog = true;
1687
+ }
1688
+ function handleNewDocument() {
1689
+ let url = "/docs/new";
1690
+ const params = new URLSearchParams();
1691
+ if (activeFolderId()) params.set("folder", activeFolderId());
1692
+ if (activeCategoryId()) params.set("category", activeCategoryId());
1693
+ const qs = params.toString();
1694
+ if (qs) url += `?${qs}`;
1695
+ goto(url);
1696
+ }
1697
+ function handleRenameFolder(id) {
1698
+ const folder = activeFolderId() ? data.activeFolder?.children?.find((c) => c.id === id) : data.rootFolders.find((f) => f.id === id);
1699
+ if (!folder) return;
1700
+ folderDialogMode = "edit";
1701
+ folderDialogTarget = {
1702
+ id: folder.id,
1703
+ name: folder.name
1704
+ };
1705
+ showFolderDialog = true;
1706
+ }
1707
+ async function saveFolder(name) {
1708
+ if (folderDialogMode === "create") await apiFetch("/api/folders", {
1709
+ method: "POST",
1710
+ body: JSON.stringify({
1711
+ name,
1712
+ parentId: activeFolderId() || null,
1713
+ categoryId: activeFolderId() ? null : activeCategoryId() || null
1714
+ })
1715
+ });
1716
+ else if (folderDialogMode === "edit" && folderDialogTarget) await apiFetch(`/api/folders/${folderDialogTarget.id}`, {
1717
+ method: "PATCH",
1718
+ body: JSON.stringify({ name })
1719
+ });
1720
+ showFolderDialog = false;
1721
+ refreshFolders();
1722
+ await invalidateAll();
1723
+ }
1724
+ function handleDeleteFolder(id) {
1725
+ deleteFolderTargetId = id;
1726
+ showDeleteFolderDialog = true;
1727
+ }
1728
+ async function confirmDeleteFolder() {
1729
+ const id = deleteFolderTargetId;
1730
+ if (!id || deleteFolderBusy) return;
1731
+ deleteFolderBusy = true;
1732
+ try {
1733
+ await apiFetch(`/api/folders/${id}`, { method: "DELETE" });
1734
+ showDeleteFolderDialog = false;
1735
+ deleteFolderTargetId = null;
1736
+ await invalidateAll();
1737
+ refreshFolders();
1738
+ refreshDocs();
1739
+ } catch (e) {
1740
+ console.error("Failed to delete folder", e);
1741
+ } finally {
1742
+ deleteFolderBusy = false;
1743
+ }
1744
+ }
1745
+ async function handleDeleteDocument(id) {
1746
+ if (!confirm(`${action_delete()}?`)) return;
1747
+ try {
1748
+ await apiFetch(`/api/documents/${id}`, { method: "DELETE" });
1749
+ await invalidateAll();
1750
+ refreshDocs();
1751
+ } catch (e) {
1752
+ console.error("Failed to delete document", e);
1753
+ }
1754
+ }
1755
+ async function handleDuplicateDocument(id) {
1756
+ if (duplicatingDocumentId) return;
1757
+ duplicatingDocumentId = id;
1758
+ try {
1759
+ const duplicate = await duplicateDocument(id);
1760
+ optimisticDocuments = [...optimisticDocuments.filter((doc) => doc.id !== duplicate.id), duplicate];
1761
+ await invalidateAll();
1762
+ const currentDocuments = data.activeFolder?.documents ?? data.recentDocs;
1763
+ optimisticDocuments = optimisticDocuments.filter((doc) => !currentDocuments.some((current) => current.id === doc.id));
1764
+ refreshDocs();
1765
+ } catch (e) {
1766
+ console.error("Failed to duplicate document", e);
1767
+ } finally {
1768
+ duplicatingDocumentId = null;
1769
+ }
1770
+ }
1771
+ function triggerImport() {}
1772
+ function closeImport() {
1773
+ importOpen = false;
1774
+ setTimeout(() => {
1775
+ importItems = [];
1776
+ }, 200);
1777
+ }
1778
+ function updateFilters() {
1779
+ const params = new URLSearchParams(page.url.searchParams);
1780
+ if (searchQuery.trim());
1781
+ else params.delete("q");
1782
+ if (selectedTagId) params.set("tag", selectedTagId);
1783
+ else params.delete("tag");
1784
+ if (dateFrom) params.set("dateFrom", dateFrom);
1785
+ else params.delete("dateFrom");
1786
+ if (dateTo) params.set("dateTo", dateTo);
1787
+ else params.delete("dateTo");
1788
+ goto(`/?${params.toString()}`, {
1789
+ replaceState: true,
1790
+ keepFocus: true,
1791
+ noScroll: true
1792
+ });
1793
+ }
1794
+ const hasActiveFilters = $.derived(() => searchQuery.trim() !== "" || selectedTagId !== null || dateFrom !== "" || dateTo !== "");
1795
+ const filteredFolders = $.derived(() => {
1796
+ let list = activeFolderId() ? data.activeFolder?.children ?? [] : data.rootFolders;
1797
+ if (!activeFolderId() && activeCategoryId()) list = list.filter((f) => f.categoryId === activeCategoryId());
1798
+ if (searchQuery.trim());
1799
+ if (dateFrom) {
1800
+ const fromTime = new Date(dateFrom).getTime();
1801
+ list = list.filter((f) => new Date(f.updatedAt).getTime() >= fromTime);
1802
+ }
1803
+ if (dateTo) {
1804
+ const toTime = new Date(dateTo).getTime();
1805
+ list = list.filter((f) => new Date(f.updatedAt).getTime() <= toTime);
1806
+ }
1807
+ return list;
1808
+ });
1809
+ const filteredDocuments = $.derived(() => {
1810
+ let list = activeFolderId() ? data.activeFolder?.documents ?? [] : data.recentDocs;
1811
+ const extras = optimisticDocuments.filter((doc) => !list.some((current) => current.id === doc.id));
1812
+ if (extras.length > 0) list = [...list, ...extras];
1813
+ list = [...list].sort((a, b) => Date.parse(b.updatedAt) - Date.parse(a.updatedAt));
1814
+ if (searchQuery.trim());
1815
+ if (selectedTagId) {
1816
+ const tagId = selectedTagId;
1817
+ list = list.filter((d) => d.tags.includes(tagId));
1818
+ }
1819
+ if (dateFrom) {
1820
+ const fromTime = new Date(dateFrom).getTime();
1821
+ list = list.filter((d) => new Date(d.updatedAt).getTime() >= fromTime);
1822
+ }
1823
+ if (dateTo) {
1824
+ const toTime = new Date(dateTo).getTime();
1825
+ list = list.filter((d) => new Date(d.updatedAt).getTime() <= toTime);
1826
+ }
1827
+ return list;
1828
+ });
1829
+ const visibleSections = $.derived(() => {
1830
+ const byCategory = /* @__PURE__ */ new Map();
1831
+ for (const cat of data.categories) byCategory.set(cat.id, []);
1832
+ const uncategorized = [];
1833
+ for (const folder of filteredFolders()) if (folder.categoryId && byCategory.has(folder.categoryId)) byCategory.get(folder.categoryId)?.push(folder);
1834
+ else uncategorized.push(folder);
1835
+ const items = [];
1836
+ for (const cat of data.categories) items.push({
1837
+ key: cat.id,
1838
+ category: cat,
1839
+ folders: byCategory.get(cat.id) ?? []
1840
+ });
1841
+ items.push({
1842
+ key: "__uncategorized__",
1843
+ category: null,
1844
+ folders: uncategorized
1845
+ });
1846
+ if (activeCategoryId()) return items.filter((s) => s.key === activeCategoryId());
1847
+ return items.filter((s) => s.folders.length > 0);
1848
+ });
1849
+ const isRootEmpty = $.derived(() => filteredFolders().length === 0 && filteredDocuments().length === 0);
1850
+ const isFolderEmpty = $.derived(() => activeFolderId() && (data.activeFolder?.children?.length ?? 0) === 0 && (data.activeFolder?.documents?.length ?? 0) === 0);
1851
+ let $$settled = true;
1852
+ let $$inner_renderer;
1853
+ function $$render_inner($$renderer) {
1854
+ $.head("e61um3", $$renderer, ($$renderer) => {
1855
+ $$renderer.title(($$renderer) => {
1856
+ $$renderer.push(`<title>
1857
+ ${$.escape(activeFolderId() ? folder_page_title({ name: data.activeFolder?.name || "Folder" }) : activeCategoryId() ? data.categories.find((c) => c.id === activeCategoryId())?.name || "Category" : dashboard_page_title())}
1858
+ </title>`);
1859
+ });
1860
+ });
1861
+ $$renderer.push(`<div class="dashboard-shell mx-auto max-w-5xl px-6 py-8 svelte-e61um3"><div class="dashboard-header mb-8 flex flex-wrap items-center justify-between gap-4 svelte-e61um3"><div class="dashboard-context-identity flex items-center gap-3 flex-1 min-w-0 svelte-e61um3">`);
1862
+ if (activeFolderId()) {
1863
+ $$renderer.push("<!--[0-->");
1864
+ const activeFolderCategoryId = data.activeFolder?.categoryId;
1865
+ Button($$renderer, {
1866
+ variant: "ghost",
1867
+ size: "icon",
1868
+ class: "size-8 shrink-0",
1869
+ onclick: () => {
1870
+ const parentId = data.activeFolder?.parentId;
1871
+ if (parentId) goto(`/?folder=${parentId}`);
1872
+ else goto("/");
1873
+ },
1874
+ title: action_back(),
1875
+ children: ($$renderer) => {
1876
+ Arrow_left($$renderer, { class: "size-4" });
1877
+ },
1878
+ $$slots: { default: true }
1879
+ });
1880
+ $$renderer.push(`<!----> `);
1881
+ Folder_open($$renderer, { class: "size-7 shrink-0 text-primary" });
1882
+ $$renderer.push(`<!----> <h1 class="text-2xl font-semibold tracking-tight truncate svelte-e61um3">${$.escape(data.activeFolder?.name || "Folder")}</h1> `);
1883
+ if (activeFolderCategoryId) {
1884
+ $$renderer.push("<!--[0-->");
1885
+ const cat = data.categories.find((c) => c.id === activeFolderCategoryId);
1886
+ if (cat) {
1887
+ $$renderer.push("<!--[0-->");
1888
+ Badge($$renderer, {
1889
+ variant: "secondary",
1890
+ children: ($$renderer) => {
1891
+ $$renderer.push(`<!---->${$.escape(cat.name)}`);
1892
+ },
1893
+ $$slots: { default: true }
1894
+ });
1895
+ } else $$renderer.push("<!--[-1-->");
1896
+ $$renderer.push(`<!--]-->`);
1897
+ } else $$renderer.push("<!--[-1-->");
1898
+ $$renderer.push(`<!--]-->`);
1899
+ } else if (activeCategoryId()) {
1900
+ $$renderer.push("<!--[1-->");
1901
+ Button($$renderer, {
1902
+ variant: "ghost",
1903
+ size: "icon",
1904
+ class: "size-8 shrink-0",
1905
+ onclick: () => goto("/"),
1906
+ title: action_back(),
1907
+ children: ($$renderer) => {
1908
+ Arrow_left($$renderer, { class: "size-4" });
1909
+ },
1910
+ $$slots: { default: true }
1911
+ });
1912
+ $$renderer.push(`<!----> `);
1913
+ Folder_kanban($$renderer, { class: "size-7 shrink-0 text-primary" });
1914
+ $$renderer.push(`<!----> <h1 class="text-2xl font-semibold tracking-tight truncate svelte-e61um3">${$.escape(data.categories.find((c) => c.id === activeCategoryId())?.name || "Category")}</h1>`);
1915
+ } else {
1916
+ $$renderer.push("<!--[-1-->");
1917
+ $$renderer.push(`<div class="dashboard-identity flex items-center gap-3"><div class="flex size-10 items-center justify-center rounded-lg bg-primary/10">`);
1918
+ Layout_dashboard($$renderer, { class: "size-5 text-primary" });
1919
+ $$renderer.push(`<!----></div> <div><h1 class="text-2xl font-semibold tracking-tight svelte-e61um3">${$.escape(dashboard_title())}</h1> <p class="text-sm text-muted-foreground svelte-e61um3">${$.escape(dashboard_subtitle())}</p></div></div>`);
1920
+ }
1921
+ $$renderer.push(`<!--]--></div> <div class="dashboard-header-actions ml-auto flex items-center justify-end gap-2 svelte-e61um3"><input type="file" accept=".md,.txt,.json,.markdown,.docx" multiple="" class="hidden"/> `);
1922
+ Button($$renderer, {
1923
+ variant: "outline",
1924
+ size: "sm",
1925
+ onclick: triggerImport,
1926
+ class: "text-muted-foreground",
1927
+ "aria-label": dashboard_import(),
1928
+ children: ($$renderer) => {
1929
+ Upload($$renderer, { class: "size-4" });
1930
+ $$renderer.push(`<!----> <span class="dashboard-action-label svelte-e61um3">${$.escape(dashboard_import())}</span>`);
1931
+ },
1932
+ $$slots: { default: true }
1933
+ });
1934
+ $$renderer.push(`<!----> `);
1935
+ Button($$renderer, {
1936
+ size: "sm",
1937
+ onclick: handleNewDocument,
1938
+ "aria-label": dashboard_new_document(),
1939
+ children: ($$renderer) => {
1940
+ Plus($$renderer, { class: "size-4" });
1941
+ $$renderer.push(`<!----> <span class="dashboard-action-label svelte-e61um3">${$.escape(dashboard_new_document())}</span>`);
1942
+ },
1943
+ $$slots: { default: true }
1944
+ });
1945
+ $$renderer.push(`<!----> `);
1946
+ if (activeFolderId() && data.activeFolder) {
1947
+ $$renderer.push("<!--[0-->");
1948
+ Button($$renderer, {
1949
+ variant: "outline",
1950
+ size: "sm",
1951
+ onclick: () => openShareDialogForFolder(activeFolderId(), data.activeFolder?.name || "Folder"),
1952
+ "aria-label": doc_share(),
1953
+ children: ($$renderer) => {
1954
+ Share_2($$renderer, { class: "size-3.5" });
1955
+ $$renderer.push(`<!----> <span class="dashboard-action-label svelte-e61um3">${$.escape(doc_share())}</span>`);
1956
+ },
1957
+ $$slots: { default: true }
1958
+ });
1959
+ } else if (activeCategoryId()) {
1960
+ $$renderer.push("<!--[1-->");
1961
+ const activeCategory = data.categories.find((category) => category.id === activeCategoryId());
1962
+ if (activeCategory) {
1963
+ $$renderer.push("<!--[0-->");
1964
+ Button($$renderer, {
1965
+ variant: "outline",
1966
+ size: "sm",
1967
+ onclick: () => openShareDialogForCategory(activeCategory.id, activeCategory.name),
1968
+ "aria-label": doc_share(),
1969
+ children: ($$renderer) => {
1970
+ Share_2($$renderer, { class: "size-3.5" });
1971
+ $$renderer.push(`<!----> <span class="dashboard-action-label svelte-e61um3">${$.escape(doc_share())}</span>`);
1972
+ },
1973
+ $$slots: { default: true }
1974
+ });
1975
+ } else $$renderer.push("<!--[-1-->");
1976
+ $$renderer.push(`<!--]-->`);
1977
+ } else $$renderer.push("<!--[-1-->");
1978
+ $$renderer.push(`<!--]--></div></div> `);
1979
+ if (dashboardWidgets().length > 0) {
1980
+ $$renderer.push("<!--[0-->");
1981
+ $$renderer.push(`<section class="mb-8 grid grid-cols-1 gap-4 md:grid-cols-2" data-hiai-docs-extension-zone="dashboard-widgets" aria-label="Dashboard extensions"><!--[-->`);
1982
+ const each_array = $.ensure_array_like(dashboardWidgets());
1983
+ for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
1984
+ let widget = each_array[$$index];
1985
+ const Widget = widget.component;
1986
+ $$renderer.push(`<div class="rounded-xl border border-border bg-card p-4"${$.attr("data-hiai-docs-extension-id", widget.id)}>`);
1987
+ if (widget.title) {
1988
+ $$renderer.push("<!--[0-->");
1989
+ $$renderer.push(`<h2 class="mb-3 text-sm font-semibold">${$.escape(widget.title)}</h2>`);
1990
+ } else $$renderer.push("<!--[-1-->");
1991
+ $$renderer.push(`<!--]--> `);
1992
+ if (Widget) {
1993
+ $$renderer.push("<!--[-->");
1994
+ Widget($$renderer, { userId: extensionContext.userId });
1995
+ $$renderer.push("<!--]-->");
1996
+ } else {
1997
+ $$renderer.push("<!--[!-->");
1998
+ $$renderer.push("<!--]-->");
1999
+ }
2000
+ $$renderer.push(`</div>`);
2001
+ }
2002
+ $$renderer.push(`<!--]--></section>`);
2003
+ } else $$renderer.push("<!--[-1-->");
2004
+ $$renderer.push(`<!--]--> `);
2005
+ if (activeFolderId() && data.breadcrumb?.length > 0) {
2006
+ $$renderer.push("<!--[0-->");
2007
+ $$renderer.push(`<nav class="mb-6 flex flex-wrap items-center gap-1.5 text-sm text-muted-foreground" aria-label="Breadcrumbs"><a href="/" class="hover:text-foreground transition-colors">Home</a> <!--[-->`);
2008
+ const each_array_1 = $.ensure_array_like(data.breadcrumb);
2009
+ for (let idx = 0, $$length = each_array_1.length; idx < $$length; idx++) {
2010
+ let path = each_array_1[idx];
2011
+ Chevron_right($$renderer, { class: "size-3.5" });
2012
+ $$renderer.push(`<!----> `);
2013
+ if (idx === data.breadcrumb.length - 1) {
2014
+ $$renderer.push("<!--[0-->");
2015
+ $$renderer.push(`<span class="font-medium text-foreground truncate max-w-[150px]">${$.escape(path.name)}</span>`);
2016
+ } else {
2017
+ $$renderer.push("<!--[-1-->");
2018
+ $$renderer.push(`<a${$.attr("href", `/?folder=${$.stringify(path.id)}`)} class="hover:text-foreground transition-colors truncate max-w-[150px]">${$.escape(path.name)}</a>`);
2019
+ }
2020
+ $$renderer.push(`<!--]-->`);
2021
+ }
2022
+ $$renderer.push(`<!--]--></nav>`);
2023
+ } else $$renderer.push("<!--[-1-->");
2024
+ $$renderer.push(`<!--]--> <div class="mb-8 grid grid-cols-1 gap-4 rounded-xl border border-border bg-card p-4 sm:grid-cols-2 lg:grid-cols-5"><div class="space-y-1.5">`);
2025
+ Label($$renderer, {
2026
+ for: "dash-search",
2027
+ class: "text-[10px] font-semibold text-muted-foreground uppercase tracking-wider",
2028
+ children: ($$renderer) => {
2029
+ $$renderer.push(`<!---->Search`);
2030
+ },
2031
+ $$slots: { default: true }
2032
+ });
2033
+ $$renderer.push(`<!----> <input id="dash-search" type="text"${$.attr("value", searchQuery)} placeholder="Filter current view..." class="h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"/></div> <div class="space-y-1.5">`);
2034
+ Label($$renderer, {
2035
+ for: "dash-category",
2036
+ class: "text-[10px] font-semibold text-muted-foreground uppercase tracking-wider",
2037
+ children: ($$renderer) => {
2038
+ $$renderer.push(`<!---->Category`);
2039
+ },
2040
+ $$slots: { default: true }
2041
+ });
2042
+ $$renderer.push(`<!----> `);
2043
+ if (activeFolderId()) {
2044
+ $$renderer.push("<!--[0-->");
2045
+ $$renderer.push(`<div class="h-9 w-full rounded-md border border-input bg-muted/50 px-3 py-2 text-sm shadow-sm opacity-60 flex items-center select-none">Inherited from folder</div>`);
2046
+ } else {
2047
+ $$renderer.push("<!--[-1-->");
2048
+ if (Select$1.Root) {
2049
+ $$renderer.push("<!--[-->");
2050
+ Select$1.Root($$renderer, {
2051
+ type: "single",
2052
+ value: activeCategoryId() ?? "all",
2053
+ onValueChange: (val) => {
2054
+ const params = new URLSearchParams(page.url.searchParams);
2055
+ if (val && val !== "all") params.set("category", val);
2056
+ else params.delete("category");
2057
+ goto(`/?${params.toString()}`);
2058
+ },
2059
+ children: ($$renderer) => {
2060
+ if (Select$1.Trigger) {
2061
+ $$renderer.push("<!--[-->");
2062
+ Select$1.Trigger($$renderer, {
2063
+ class: "w-full text-foreground flex items-center justify-between bg-background border border-input px-3 py-2 text-sm rounded-md shadow-sm h-9",
2064
+ children: ($$renderer) => {
2065
+ if (Select$1.Value) {
2066
+ $$renderer.push("<!--[-->");
2067
+ Select$1.Value($$renderer, {
2068
+ placeholder: "All Categories",
2069
+ children: ($$renderer) => {
2070
+ $$renderer.push(`<!---->${$.escape(activeCategoryId() ? data.categories.find((c) => c.id === activeCategoryId())?.name ?? "All Categories" : "All Categories")}`);
2071
+ },
2072
+ $$slots: { default: true }
2073
+ });
2074
+ $$renderer.push("<!--]-->");
2075
+ } else {
2076
+ $$renderer.push("<!--[!-->");
2077
+ $$renderer.push("<!--]-->");
2078
+ }
2079
+ $$renderer.push(` `);
2080
+ Chevron_down($$renderer, { class: "size-4 opacity-50" });
2081
+ $$renderer.push(`<!---->`);
2082
+ },
2083
+ $$slots: { default: true }
2084
+ });
2085
+ $$renderer.push("<!--]-->");
2086
+ } else {
2087
+ $$renderer.push("<!--[!-->");
2088
+ $$renderer.push("<!--]-->");
2089
+ }
2090
+ $$renderer.push(` `);
2091
+ if (Select$1.Content) {
2092
+ $$renderer.push("<!--[-->");
2093
+ Select$1.Content($$renderer, {
2094
+ class: "w-[var(--bits-select-trigger-width)]",
2095
+ children: ($$renderer) => {
2096
+ if (Select$1.Item) {
2097
+ $$renderer.push("<!--[-->");
2098
+ Select$1.Item($$renderer, {
2099
+ value: "all",
2100
+ children: ($$renderer) => {
2101
+ $$renderer.push(`<!---->All Categories`);
2102
+ },
2103
+ $$slots: { default: true }
2104
+ });
2105
+ $$renderer.push("<!--]-->");
2106
+ } else {
2107
+ $$renderer.push("<!--[!-->");
2108
+ $$renderer.push("<!--]-->");
2109
+ }
2110
+ $$renderer.push(` <!--[-->`);
2111
+ const each_array_2 = $.ensure_array_like(data.categories);
2112
+ for (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {
2113
+ let cat = each_array_2[$$index_2];
2114
+ if (Select$1.Item) {
2115
+ $$renderer.push("<!--[-->");
2116
+ Select$1.Item($$renderer, {
2117
+ value: cat.id,
2118
+ children: ($$renderer) => {
2119
+ $$renderer.push(`<!---->${$.escape(cat.name)}`);
2120
+ },
2121
+ $$slots: { default: true }
2122
+ });
2123
+ $$renderer.push("<!--]-->");
2124
+ } else {
2125
+ $$renderer.push("<!--[!-->");
2126
+ $$renderer.push("<!--]-->");
2127
+ }
2128
+ }
2129
+ $$renderer.push(`<!--]-->`);
2130
+ },
2131
+ $$slots: { default: true }
2132
+ });
2133
+ $$renderer.push("<!--]-->");
2134
+ } else {
2135
+ $$renderer.push("<!--[!-->");
2136
+ $$renderer.push("<!--]-->");
2137
+ }
2138
+ },
2139
+ $$slots: { default: true }
2140
+ });
2141
+ $$renderer.push("<!--]-->");
2142
+ } else {
2143
+ $$renderer.push("<!--[!-->");
2144
+ $$renderer.push("<!--]-->");
2145
+ }
2146
+ }
2147
+ $$renderer.push(`<!--]--></div> <div class="space-y-1.5">`);
2148
+ Label($$renderer, {
2149
+ for: "dash-tag",
2150
+ class: "text-[10px] font-semibold text-muted-foreground uppercase tracking-wider",
2151
+ children: ($$renderer) => {
2152
+ $$renderer.push(`<!---->Tag`);
2153
+ },
2154
+ $$slots: { default: true }
2155
+ });
2156
+ $$renderer.push(`<!----> `);
2157
+ if (Select$1.Root) {
2158
+ $$renderer.push("<!--[-->");
2159
+ Select$1.Root($$renderer, {
2160
+ type: "single",
2161
+ value: selectedTagId ?? "all",
2162
+ onValueChange: (val) => {
2163
+ selectedTagId = val === "all" ? null : val;
2164
+ updateFilters();
2165
+ },
2166
+ children: ($$renderer) => {
2167
+ if (Select$1.Trigger) {
2168
+ $$renderer.push("<!--[-->");
2169
+ Select$1.Trigger($$renderer, {
2170
+ class: "w-full text-foreground flex items-center justify-between bg-background border border-input px-3 py-2 text-sm rounded-md shadow-sm h-9",
2171
+ children: ($$renderer) => {
2172
+ if (Select$1.Value) {
2173
+ $$renderer.push("<!--[-->");
2174
+ Select$1.Value($$renderer, {
2175
+ placeholder: "All Tags",
2176
+ children: ($$renderer) => {
2177
+ $$renderer.push(`<!---->${$.escape(selectedTagId ? data.tags.find((t) => t.id === selectedTagId)?.name ?? "All Tags" : "All Tags")}`);
2178
+ },
2179
+ $$slots: { default: true }
2180
+ });
2181
+ $$renderer.push("<!--]-->");
2182
+ } else {
2183
+ $$renderer.push("<!--[!-->");
2184
+ $$renderer.push("<!--]-->");
2185
+ }
2186
+ $$renderer.push(` `);
2187
+ Chevron_down($$renderer, { class: "size-4 opacity-50" });
2188
+ $$renderer.push(`<!---->`);
2189
+ },
2190
+ $$slots: { default: true }
2191
+ });
2192
+ $$renderer.push("<!--]-->");
2193
+ } else {
2194
+ $$renderer.push("<!--[!-->");
2195
+ $$renderer.push("<!--]-->");
2196
+ }
2197
+ $$renderer.push(` `);
2198
+ if (Select$1.Content) {
2199
+ $$renderer.push("<!--[-->");
2200
+ Select$1.Content($$renderer, {
2201
+ class: "w-[var(--bits-select-trigger-width)]",
2202
+ children: ($$renderer) => {
2203
+ if (Select$1.Item) {
2204
+ $$renderer.push("<!--[-->");
2205
+ Select$1.Item($$renderer, {
2206
+ value: "all",
2207
+ children: ($$renderer) => {
2208
+ $$renderer.push(`<!---->All Tags`);
2209
+ },
2210
+ $$slots: { default: true }
2211
+ });
2212
+ $$renderer.push("<!--]-->");
2213
+ } else {
2214
+ $$renderer.push("<!--[!-->");
2215
+ $$renderer.push("<!--]-->");
2216
+ }
2217
+ $$renderer.push(` <!--[-->`);
2218
+ const each_array_3 = $.ensure_array_like(data.tags);
2219
+ for (let $$index_3 = 0, $$length = each_array_3.length; $$index_3 < $$length; $$index_3++) {
2220
+ let tag = each_array_3[$$index_3];
2221
+ if (Select$1.Item) {
2222
+ $$renderer.push("<!--[-->");
2223
+ Select$1.Item($$renderer, {
2224
+ value: tag.id,
2225
+ children: ($$renderer) => {
2226
+ $$renderer.push(`<!---->${$.escape(tag.name)}`);
2227
+ },
2228
+ $$slots: { default: true }
2229
+ });
2230
+ $$renderer.push("<!--]-->");
2231
+ } else {
2232
+ $$renderer.push("<!--[!-->");
2233
+ $$renderer.push("<!--]-->");
2234
+ }
2235
+ }
2236
+ $$renderer.push(`<!--]-->`);
2237
+ },
2238
+ $$slots: { default: true }
2239
+ });
2240
+ $$renderer.push("<!--]-->");
2241
+ } else {
2242
+ $$renderer.push("<!--[!-->");
2243
+ $$renderer.push("<!--]-->");
2244
+ }
2245
+ },
2246
+ $$slots: { default: true }
2247
+ });
2248
+ $$renderer.push("<!--]-->");
2249
+ } else {
2250
+ $$renderer.push("<!--[!-->");
2251
+ $$renderer.push("<!--]-->");
2252
+ }
2253
+ $$renderer.push(`</div> <div class="space-y-1.5">`);
2254
+ Label($$renderer, {
2255
+ for: "date-from",
2256
+ class: "text-[10px] font-semibold text-muted-foreground uppercase tracking-wider",
2257
+ children: ($$renderer) => {
2258
+ $$renderer.push(`<!---->From Date`);
2259
+ },
2260
+ $$slots: { default: true }
2261
+ });
2262
+ $$renderer.push(`<!----> `);
2263
+ DatePicker($$renderer, {
2264
+ id: "date-from",
2265
+ onchange: updateFilters,
2266
+ placeholder: "From Date",
2267
+ get value() {
2268
+ return dateFrom;
2269
+ },
2270
+ set value($$value) {
2271
+ dateFrom = $$value;
2272
+ $$settled = false;
2273
+ }
2274
+ });
2275
+ $$renderer.push(`<!----></div> <div class="space-y-1.5">`);
2276
+ Label($$renderer, {
2277
+ for: "date-to",
2278
+ class: "text-[10px] font-semibold text-muted-foreground uppercase tracking-wider",
2279
+ children: ($$renderer) => {
2280
+ $$renderer.push(`<!---->To Date`);
2281
+ },
2282
+ $$slots: { default: true }
2283
+ });
2284
+ $$renderer.push(`<!----> `);
2285
+ DatePicker($$renderer, {
2286
+ id: "date-to",
2287
+ onchange: updateFilters,
2288
+ placeholder: "To Date",
2289
+ get value() {
2290
+ return dateTo;
2291
+ },
2292
+ set value($$value) {
2293
+ dateTo = $$value;
2294
+ $$settled = false;
2295
+ }
2296
+ });
2297
+ $$renderer.push(`<!----></div></div> `);
2298
+ if (hasActiveFilters()) {
2299
+ $$renderer.push("<!--[0-->");
2300
+ $$renderer.push(`<div class="mb-6 flex flex-wrap items-center gap-2 rounded-xl border border-border bg-muted/30 px-4 py-2 text-sm"><span class="text-xs font-semibold text-muted-foreground uppercase tracking-wider">Filters:</span> `);
2301
+ if (searchQuery.trim());
2302
+ else $$renderer.push("<!--[-1-->");
2303
+ $$renderer.push(`<!--]--> `);
2304
+ if (selectedTagId) {
2305
+ $$renderer.push("<!--[0-->");
2306
+ const tag = data.tags.find((t) => t.id === selectedTagId);
2307
+ if (tag) {
2308
+ $$renderer.push("<!--[0-->");
2309
+ Badge($$renderer, {
2310
+ variant: "secondary",
2311
+ class: "flex items-center gap-1.5",
2312
+ children: ($$renderer) => {
2313
+ $$renderer.push(`<span class="size-2 rounded-full"${$.attr_style(`background-color: ${$.stringify(tag.color || "#cccccc")}`)}></span> <span>Tag: ${$.escape(tag.name)}</span> <button class="text-muted-foreground hover:text-foreground">`);
2314
+ X($$renderer, { class: "size-3" });
2315
+ $$renderer.push(`<!----></button>`);
2316
+ },
2317
+ $$slots: { default: true }
2318
+ });
2319
+ } else $$renderer.push("<!--[-1-->");
2320
+ $$renderer.push(`<!--]-->`);
2321
+ } else $$renderer.push("<!--[-1-->");
2322
+ $$renderer.push(`<!--]--> `);
2323
+ if (dateFrom || dateTo) {
2324
+ $$renderer.push("<!--[0-->");
2325
+ Badge($$renderer, {
2326
+ variant: "secondary",
2327
+ class: "flex items-center gap-1",
2328
+ children: ($$renderer) => {
2329
+ $$renderer.push(`<span>Date: ${$.escape(dateFrom || "*")} to ${$.escape(dateTo || "*")}</span> <button class="text-muted-foreground hover:text-foreground">`);
2330
+ X($$renderer, { class: "size-3" });
2331
+ $$renderer.push(`<!----></button>`);
2332
+ },
2333
+ $$slots: { default: true }
2334
+ });
2335
+ } else $$renderer.push("<!--[-1-->");
2336
+ $$renderer.push(`<!--]--> <button class="ml-auto inline-flex items-center gap-1 text-xs font-semibold text-destructive hover:underline">`);
2337
+ Rotate_ccw($$renderer, { class: "size-3" });
2338
+ $$renderer.push(`<!----> Clear Filters</button></div>`);
2339
+ } else $$renderer.push("<!--[-1-->");
2340
+ $$renderer.push(`<!--]--> `);
2341
+ if (activeFolderId()) {
2342
+ $$renderer.push("<!--[0-->");
2343
+ if (isFolderEmpty()) {
2344
+ $$renderer.push("<!--[0-->");
2345
+ $$renderer.push(`<div class="flex flex-col items-center justify-center py-20 text-center"><div class="mb-4 flex size-16 items-center justify-center rounded-full bg-muted">`);
2346
+ Folder_open($$renderer, { class: "size-8 text-muted-foreground" });
2347
+ $$renderer.push(`<!----></div> <h2 class="mb-2 text-lg font-semibold">Folder is empty</h2> <p class="mb-6 max-w-sm text-sm text-muted-foreground">Create a new document, subfolder, or drag and drop items here to get started.</p></div>`);
2348
+ } else {
2349
+ $$renderer.push("<!--[-1-->");
2350
+ if (filteredFolders().length > 0) {
2351
+ $$renderer.push("<!--[0-->");
2352
+ $$renderer.push(`<div class="mb-8"><h2 class="mb-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground">Subfolders</h2> <div class="grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3"><!--[-->`);
2353
+ const each_array_4 = $.ensure_array_like(filteredFolders());
2354
+ for (let $$index_4 = 0, $$length = each_array_4.length; $$index_4 < $$length; $$index_4++) {
2355
+ let folder = each_array_4[$$index_4];
2356
+ FolderCard($$renderer, {
2357
+ folder,
2358
+ onDelete: handleDeleteFolder,
2359
+ onRename: handleRenameFolder,
2360
+ onShare: openShareDialogForFolder
2361
+ });
2362
+ }
2363
+ $$renderer.push(`<!--]--></div></div>`);
2364
+ } else $$renderer.push("<!--[-1-->");
2365
+ $$renderer.push(`<!--]--> `);
2366
+ if (filteredDocuments().length > 0) {
2367
+ $$renderer.push("<!--[0-->");
2368
+ $$renderer.push(`<div><h2 class="mb-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground">${$.escape(nav_documents())}</h2> <div class="grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3"><!--[-->`);
2369
+ const each_array_5 = $.ensure_array_like(filteredDocuments());
2370
+ for (let $$index_5 = 0, $$length = each_array_5.length; $$index_5 < $$length; $$index_5++) {
2371
+ let doc = each_array_5[$$index_5];
2372
+ DocumentCard($$renderer, {
2373
+ document: doc,
2374
+ onDelete: handleDeleteDocument,
2375
+ onDuplicate: handleDuplicateDocument,
2376
+ onShare: openShareDialogForDocument,
2377
+ duplicateBusy: duplicatingDocumentId === doc.id
2378
+ });
2379
+ }
2380
+ $$renderer.push(`<!--]--></div></div>`);
2381
+ } else $$renderer.push("<!--[-1-->");
2382
+ $$renderer.push(`<!--]-->`);
2383
+ }
2384
+ $$renderer.push(`<!--]-->`);
2385
+ } else {
2386
+ $$renderer.push("<!--[-1-->");
2387
+ if (isRootEmpty()) {
2388
+ $$renderer.push("<!--[0-->");
2389
+ $$renderer.push(`<div class="flex flex-col items-center justify-center py-20 text-center"><div class="mb-4 flex size-16 items-center justify-center rounded-full bg-muted">`);
2390
+ File_text($$renderer, { class: "size-8 text-muted-foreground" });
2391
+ $$renderer.push(`<!----></div> <h2 class="mb-2 text-lg font-semibold">${$.escape(folders_empty())}</h2> <p class="mb-6 max-w-sm text-sm text-muted-foreground">${$.escape(folders_empty_description())}</p></div>`);
2392
+ } else {
2393
+ $$renderer.push("<!--[-1-->");
2394
+ $$renderer.push(`<!--[-->`);
2395
+ const each_array_6 = $.ensure_array_like(visibleSections());
2396
+ for (let $$index_7 = 0, $$length = each_array_6.length; $$index_7 < $$length; $$index_7++) {
2397
+ let section = each_array_6[$$index_7];
2398
+ const docSum = section.folders.reduce((acc, f) => acc + f.documentCount, 0);
2399
+ $$renderer.push(`<section${$.attr("id", `category-${$.stringify(section.key)}`)} class="mb-8"><div class="mb-3 flex items-center gap-2 text-xs font-medium uppercase tracking-wider text-muted-foreground"><h2>${$.escape(section.category ? section.category.name : sidebar_uncategorized())}</h2> `);
2400
+ Badge($$renderer, {
2401
+ variant: "secondary",
2402
+ class: "text-[10px]",
2403
+ children: ($$renderer) => {
2404
+ $$renderer.push(`<!---->${$.escape(docSum)} ${$.escape(docSum === 1 ? "file" : "files")}`);
2405
+ },
2406
+ $$slots: { default: true }
2407
+ });
2408
+ $$renderer.push(`<!----> `);
2409
+ if (section.category) {
2410
+ $$renderer.push("<!--[0-->");
2411
+ Dropdown_menu($$renderer, {
2412
+ children: ($$renderer) => {
2413
+ Dropdown_menu_trigger($$renderer, {
2414
+ class: "ml-auto inline-flex size-8 items-center justify-center rounded-md hover:bg-accent",
2415
+ "aria-label": editor_more_options(),
2416
+ children: ($$renderer) => {
2417
+ Ellipsis_vertical($$renderer, { class: "size-4" });
2418
+ },
2419
+ $$slots: { default: true }
2420
+ });
2421
+ $$renderer.push(`<!----> `);
2422
+ Dropdown_menu_content($$renderer, {
2423
+ align: "end",
2424
+ children: ($$renderer) => {
2425
+ Dropdown_menu_item($$renderer, {
2426
+ onSelect: () => openShareDialogForCategory(section.category.id, section.category.name),
2427
+ children: ($$renderer) => {
2428
+ Share_2($$renderer, { class: "size-4" });
2429
+ $$renderer.push(`<!----> ${$.escape(doc_share())}`);
2430
+ },
2431
+ $$slots: { default: true }
2432
+ });
2433
+ },
2434
+ $$slots: { default: true }
2435
+ });
2436
+ $$renderer.push(`<!---->`);
2437
+ },
2438
+ $$slots: { default: true }
2439
+ });
2440
+ } else $$renderer.push("<!--[-1-->");
2441
+ $$renderer.push(`<!--]--></div> <div class="grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3"><!--[-->`);
2442
+ const each_array_7 = $.ensure_array_like(section.folders);
2443
+ for (let $$index_6 = 0, $$length = each_array_7.length; $$index_6 < $$length; $$index_6++) {
2444
+ let folder = each_array_7[$$index_6];
2445
+ FolderCard($$renderer, {
2446
+ folder,
2447
+ onDelete: handleDeleteFolder,
2448
+ onRename: handleRenameFolder,
2449
+ onShare: openShareDialogForFolder
2450
+ });
2451
+ }
2452
+ $$renderer.push(`<!--]--></div></section>`);
2453
+ }
2454
+ $$renderer.push(`<!--]--> `);
2455
+ if (filteredDocuments().length > 0) {
2456
+ $$renderer.push("<!--[0-->");
2457
+ $$renderer.push(`<div class="mt-12 border-t border-border/60 pt-8"><h2 class="mb-4 text-sm font-semibold uppercase tracking-wider text-muted-foreground">${$.escape(hasActiveFilters() ? "Filtered Documents" : "Recent Documents")}</h2> <div class="grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3"><!--[-->`);
2458
+ const each_array_8 = $.ensure_array_like(filteredDocuments());
2459
+ for (let $$index_8 = 0, $$length = each_array_8.length; $$index_8 < $$length; $$index_8++) {
2460
+ let doc = each_array_8[$$index_8];
2461
+ DocumentCard($$renderer, {
2462
+ document: doc,
2463
+ onDelete: handleDeleteDocument,
2464
+ onDuplicate: handleDuplicateDocument,
2465
+ onShare: openShareDialogForDocument,
2466
+ duplicateBusy: duplicatingDocumentId === doc.id
2467
+ });
2468
+ }
2469
+ $$renderer.push(`<!--]--></div></div>`);
2470
+ } else $$renderer.push("<!--[-1-->");
2471
+ $$renderer.push(`<!--]-->`);
2472
+ }
2473
+ $$renderer.push(`<!--]-->`);
2474
+ }
2475
+ $$renderer.push(`<!--]--></div> `);
2476
+ FolderDialog($$renderer, {
2477
+ mode: folderDialogMode,
2478
+ folder: folderDialogTarget,
2479
+ onSave: saveFolder,
2480
+ get open() {
2481
+ return showFolderDialog;
2482
+ },
2483
+ set open($$value) {
2484
+ showFolderDialog = $$value;
2485
+ $$settled = false;
2486
+ }
2487
+ });
2488
+ $$renderer.push(`<!----> `);
2489
+ ConfirmDialog($$renderer, {
2490
+ title: folders_delete_title(),
2491
+ description: folders_delete_description(),
2492
+ confirmLabel: folders_delete(),
2493
+ cancelLabel: action_cancel(),
2494
+ variant: "destructive",
2495
+ busy: deleteFolderBusy,
2496
+ onConfirm: confirmDeleteFolder,
2497
+ onCancel: () => showDeleteFolderDialog = false,
2498
+ get open() {
2499
+ return showDeleteFolderDialog;
2500
+ },
2501
+ set open($$value) {
2502
+ showDeleteFolderDialog = $$value;
2503
+ $$settled = false;
2504
+ }
2505
+ });
2506
+ $$renderer.push(`<!----> `);
2507
+ if (shareTarget) {
2508
+ $$renderer.push("<!--[0-->");
2509
+ ShareDialog($$renderer, {
2510
+ documentId: shareTarget.kind === "document" ? shareTarget.documentId : "",
2511
+ documentTitle: shareTarget.kind === "document" ? shareTarget.title : "",
2512
+ folderId: shareTarget.kind === "folder" ? shareTarget.folderId : "",
2513
+ folderName: shareTarget.kind === "folder" ? shareTarget.name : "",
2514
+ categoryId: shareTarget.kind === "category" ? shareTarget.categoryId : "",
2515
+ categoryName: shareTarget.kind === "category" ? shareTarget.name : "",
2516
+ get open() {
2517
+ return showShareDialog;
2518
+ },
2519
+ set open($$value) {
2520
+ showShareDialog = $$value;
2521
+ $$settled = false;
2522
+ }
2523
+ });
2524
+ } else $$renderer.push("<!--[-1-->");
2525
+ $$renderer.push(`<!--]--> `);
2526
+ ImportProgress($$renderer, {
2527
+ open: importOpen,
2528
+ items: importItems,
2529
+ onClose: closeImport
2530
+ });
2531
+ $$renderer.push(`<!---->`);
2532
+ }
2533
+ do {
2534
+ $$settled = true;
2535
+ $$inner_renderer = $$renderer.copy();
2536
+ $$render_inner($$inner_renderer);
2537
+ } while (!$$settled);
2538
+ $$renderer.subsume($$inner_renderer);
2539
+ });
2540
+ }
2541
+ //#endregion
2542
+ export { HiaiDocsDashboardHost as DocsmintDashboardHost };