@hiai-gg/docsmint 0.3.7 → 0.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/backend/src/lib/logger.ts +45 -15
  2. package/dist/backend/index.js +238 -150
  3. package/dist/frontend/CategoryDialog-DphkZqIB.js +611 -0
  4. package/dist/frontend/ConfirmDialog-BLF3x_hr.js +214 -0
  5. package/dist/frontend/CreateSnapshotDialog-D5vPvFTL.js +216 -0
  6. package/dist/frontend/DatePicker-CLNTdvTk.js +259 -0
  7. package/dist/frontend/DeleteDialog-DxYFJivN.js +174 -0
  8. package/dist/frontend/FolderDialog-CRVZM2Oi.js +250 -0
  9. package/dist/frontend/FolderNode-C2zG7uii.js +298 -0
  10. package/dist/frontend/FolderTreeSelector-CyB8y2Sm.js +103 -0
  11. package/dist/frontend/Icon-CooFj4Ee.js +64 -0
  12. package/dist/frontend/SettingsDialog-DCM4-N6_.js +1016 -0
  13. package/dist/frontend/ShareDialog-DYu3RKQu.js +165 -0
  14. package/dist/frontend/TagCreateDialog-DXQs2bL9.js +260 -0
  15. package/dist/frontend/camera-iKXDOOWT.js +29 -0
  16. package/dist/frontend/check-D-UuvBuh.js +25 -0
  17. package/dist/frontend/chevron-down-CiPtYyFh.js +25 -0
  18. package/dist/frontend/circle-check-tSPE1V6t.js +29 -0
  19. package/dist/frontend/clock-DJHbHZb8.js +29 -0
  20. package/dist/frontend/{bundle-mjs-CP6Owz-8.js → clsx-C7bIvsDS.js} +16 -1
  21. package/dist/frontend/components/category-dialog.js +1 -1
  22. package/dist/frontend/components/create-snapshot-dialog.js +1 -1
  23. package/dist/frontend/components/delete-dialog.js +1 -1
  24. package/dist/frontend/components/editor/document-editor.js +1364 -1353
  25. package/dist/frontend/components/editor/document-title.js +25 -25
  26. package/dist/frontend/components/editor/markdown-toggle.js +45 -45
  27. package/dist/frontend/components/folder-node.js +1 -1
  28. package/dist/frontend/components/folder-tree-selector.js +1 -1
  29. package/dist/frontend/components/save-as-dialog.js +169 -151
  30. package/dist/frontend/components/settings.js +1 -1
  31. package/dist/frontend/components/share-dialog.js +1 -1
  32. package/dist/frontend/components/sidebar.js +1161 -1153
  33. package/dist/frontend/components/tag-create-dialog.js +1 -1
  34. package/dist/frontend/components/version-history.js +188 -187
  35. package/dist/frontend/copy-GppwRMjX.js +32 -0
  36. package/dist/frontend/dashboard.js +1188 -1156
  37. package/dist/frontend/dialog-D6NxYVmy.js +213 -0
  38. package/dist/frontend/doc-tabs.js +2 -2
  39. package/dist/frontend/ellipsis-vertical-P9MHvCps.js +530 -0
  40. package/dist/frontend/extension.js +8 -8
  41. package/dist/frontend/{floating-layer-anchor-C51M4l6v.js → floating-layer-anchor-CPwucTfd.js} +1414 -1412
  42. package/dist/frontend/folder-DeWhnD7O.js +45 -0
  43. package/dist/frontend/folder-refresh.js +1 -1
  44. package/dist/frontend/input-B5Rak-5G.js +23 -0
  45. package/dist/frontend/keyboard.js +1 -1
  46. package/dist/frontend/{keyboard.svelte-D7H8DihC.js → keyboard.svelte-CApmX0vl.js} +53 -53
  47. package/dist/frontend/label-CW9rxoAb.js +30 -0
  48. package/dist/frontend/{loader-circle-Bk-WFz9g.js → loader-circle-BA6aLO71.js} +86 -85
  49. package/dist/frontend/rotate-ccw-B4Q7brmV.js +25 -0
  50. package/dist/frontend/search.js +680 -654
  51. package/dist/frontend/select-value-sF86Geyh.js +1446 -0
  52. package/dist/frontend/shared-document.js +94 -94
  53. package/dist/frontend/subfolders-refresh-store.svelte-B2dKVmgz.js +65 -0
  54. package/dist/frontend/tag-HxRazVN_.js +54 -0
  55. package/dist/frontend/tag-store.svelte-CqrUXo0o.js +29 -0
  56. package/dist/frontend/textarea-i1720bE7.js +23 -0
  57. package/dist/frontend/theme.js +1 -1
  58. package/dist/frontend/theme.svelte-DKfCy12k.js +49 -0
  59. package/dist/frontend/{utils-C0OW2678.js → utils-CffiyuTo.js} +2 -3
  60. package/dist/frontend/{utils-D8kmM3ub.js → utils-hzdMVeCv.js} +2 -3
  61. package/dist/frontend/utils.js +1 -1
  62. package/dist/frontend/x-CzBsnJ2x.js +25 -0
  63. package/dist/frontend-ssr/api/attachments.js +2 -0
  64. package/dist/frontend-ssr/api/categories.js +2 -0
  65. package/dist/frontend-ssr/api/documents.js +2 -0
  66. package/dist/frontend-ssr/api/folders.js +2 -0
  67. package/dist/frontend-ssr/api/settings.js +2 -0
  68. package/dist/frontend-ssr/api/share.js +2 -0
  69. package/dist/frontend-ssr/api/tags.js +2 -0
  70. package/dist/frontend-ssr/assets/CategoryDialog-C2xaZKHq.js +584 -0
  71. package/dist/frontend-ssr/assets/ConfirmDialog-DjMFKc0V.js +420 -0
  72. package/dist/frontend-ssr/assets/CreateSnapshotDialog-BRw1xJW1.js +214 -0
  73. package/dist/frontend-ssr/assets/DatePicker-DnXniwlZ.js +312 -0
  74. package/dist/frontend-ssr/assets/DeleteDialog-BCfZy3Zn.js +154 -0
  75. package/dist/frontend-ssr/assets/FolderDialog-Dq7I2cKZ.js +429 -0
  76. package/dist/frontend-ssr/assets/FolderNode-DRfBfpft.js +171 -0
  77. package/dist/frontend-ssr/assets/FolderTreeSelector-DZNZ2oI6.js +147 -0
  78. package/dist/frontend-ssr/assets/Icon-B0Zqppjo.js +231 -0
  79. package/dist/frontend-ssr/assets/SettingsDialog-CX8Noa8A.js +1107 -0
  80. package/dist/frontend-ssr/assets/ShareDialog-Cge49ZdJ.js +54 -0
  81. package/dist/frontend-ssr/assets/TagCreateDialog-EAChgBF-.js +264 -0
  82. package/dist/frontend-ssr/assets/api-keys-DFqX39MT.js +35 -0
  83. package/dist/frontend-ssr/assets/attachments-CWBxE3Vz.js +85 -0
  84. package/dist/frontend-ssr/assets/auth-client-x26kqY8Z.js +1286 -0
  85. package/dist/frontend-ssr/assets/camera-CdxscTw-.js +84 -0
  86. package/dist/frontend-ssr/assets/categories-AOqgcsn4.js +75 -0
  87. package/dist/frontend-ssr/assets/chevron-down-CSSNGNh_.js +80 -0
  88. package/dist/frontend-ssr/assets/chevron-right-B4p7Sk6X.js +80 -0
  89. package/dist/frontend-ssr/assets/circle-check-CI1v4vYh.js +84 -0
  90. package/dist/frontend-ssr/assets/client-DZMkDkDn.js +129 -0
  91. package/dist/frontend-ssr/assets/clipboard-CXOaoz2W.js +30 -0
  92. package/dist/frontend-ssr/assets/clock-IL-eX2di.js +84 -0
  93. package/dist/frontend-ssr/assets/context-jz1GGEUi.js +45 -0
  94. package/dist/frontend-ssr/assets/copy-CjV57nGQ.js +87 -0
  95. package/dist/frontend-ssr/assets/db-CnxeO66n.js +65 -0
  96. package/dist/frontend-ssr/assets/dialog-BOV1u6zP.js +157 -0
  97. package/dist/frontend-ssr/assets/dndzone-DMvTO_Jz.js +2114 -0
  98. package/dist/frontend-ssr/assets/document-drop-coordinator-CEaYACsC.js +109 -0
  99. package/dist/frontend-ssr/assets/documents-BnOTRdTY.js +108 -0
  100. package/dist/frontend-ssr/assets/editorExtensions-DUzwndMy.js +186 -0
  101. package/dist/frontend-ssr/assets/ellipsis-vertical-C-0hgkZn.js +555 -0
  102. package/dist/frontend-ssr/assets/floating-layer-anchor-uzw9K8qN.js +6114 -0
  103. package/dist/frontend-ssr/assets/folder-DChhG7qN.js +80 -0
  104. package/dist/frontend-ssr/assets/folders-CTfbS24J.js +127 -0
  105. package/dist/frontend-ssr/assets/identity-B3uHoDtf.js +99 -0
  106. package/dist/frontend-ssr/assets/input-DezGsU3y.js +19 -0
  107. package/dist/frontend-ssr/assets/keyboard.svelte-BgF47N3L.js +174 -0
  108. package/dist/frontend-ssr/assets/label-Bj8-TfFN.js +21 -0
  109. package/dist/frontend-ssr/assets/loader-circle-DZsrZ-er.js +80 -0
  110. package/dist/frontend-ssr/assets/markdown-CjqvGi5W.js +20 -0
  111. package/dist/frontend-ssr/assets/messages-DhXqlcJI.js +11125 -0
  112. package/dist/frontend-ssr/assets/resolve-BqHozBXl.js +32 -0
  113. package/dist/frontend-ssr/assets/rotate-ccw-BlgWwaiq.js +80 -0
  114. package/dist/frontend-ssr/assets/select-value-DngdSmLI.js +1526 -0
  115. package/dist/frontend-ssr/assets/settings-E6qSAWM2.js +64 -0
  116. package/dist/frontend-ssr/assets/share-BTBJelxA.js +30 -0
  117. package/dist/frontend-ssr/assets/subfolders-refresh-store.svelte-DAh4gT16.js +77 -0
  118. package/dist/frontend-ssr/assets/tag-GZEuGWk1.js +166 -0
  119. package/dist/frontend-ssr/assets/tag-store.svelte-DPodKj6Z.js +21 -0
  120. package/dist/frontend-ssr/assets/tags-BId2wdYd.js +49 -0
  121. package/dist/frontend-ssr/assets/textarea-Dev-qSEc.js +21 -0
  122. package/dist/frontend-ssr/assets/theme.svelte-Co0-ssaD.js +67 -0
  123. package/dist/frontend-ssr/assets/utils-DtlPPXpJ.js +9 -0
  124. package/dist/frontend-ssr/assets/utils-DvZnctjz.js +23 -0
  125. package/dist/frontend-ssr/collaboration.js +39 -0
  126. package/dist/frontend-ssr/components/category-dialog.js +2 -0
  127. package/dist/frontend-ssr/components/create-snapshot-dialog.js +2 -0
  128. package/dist/frontend-ssr/components/delete-dialog.js +2 -0
  129. package/dist/frontend-ssr/components/editor/document-editor.js +2499 -0
  130. package/dist/frontend-ssr/components/editor/document-title.js +11 -0
  131. package/dist/frontend-ssr/components/editor/docx-serializer.js +186 -0
  132. package/dist/frontend-ssr/components/editor/extensions.js +2 -0
  133. package/dist/frontend-ssr/components/editor/markdown-toggle.js +20 -0
  134. package/dist/frontend-ssr/components/editor/markdown.js +2 -0
  135. package/dist/frontend-ssr/components/folder-node.js +2 -0
  136. package/dist/frontend-ssr/components/folder-tree-selector.js +2 -0
  137. package/dist/frontend-ssr/components/save-as-dialog.js +280 -0
  138. package/dist/frontend-ssr/components/settings.js +2 -0
  139. package/dist/frontend-ssr/components/share-dialog.js +2 -0
  140. package/dist/frontend-ssr/components/sidebar.js +2033 -0
  141. package/dist/frontend-ssr/components/tag-create-dialog.js +2 -0
  142. package/dist/frontend-ssr/components/version-history.js +370 -0
  143. package/dist/frontend-ssr/dashboard.js +2542 -0
  144. package/dist/frontend-ssr/doc-tabs.js +23 -0
  145. package/dist/frontend-ssr/document-drop-coordinator.js +2 -0
  146. package/dist/frontend-ssr/extension.js +13 -0
  147. package/dist/frontend-ssr/folder-refresh.js +2 -0
  148. package/dist/frontend-ssr/i18n.js +10 -0
  149. package/dist/frontend-ssr/keyboard.js +2 -0
  150. package/dist/frontend-ssr/offline/identity.js +2 -0
  151. package/dist/frontend-ssr/search.js +332 -0
  152. package/dist/frontend-ssr/shared-document.js +273 -0
  153. package/dist/frontend-ssr/theme.js +9 -0
  154. package/dist/frontend-ssr/types.js +1 -0
  155. package/dist/frontend-ssr/utils/clipboard.js +2 -0
  156. package/dist/frontend-ssr/utils/dndzone.js +2 -0
  157. package/dist/frontend-ssr/utils.js +2 -0
  158. package/package.json +22 -1
  159. package/packages/cli/src/index.ts +1 -1
  160. package/packages/db/src/schema.ts +3 -0
  161. package/packages/mcp-server/src/index.ts +1 -1
  162. package/dist/frontend/CategoryDialog--rIE7FrH.js +0 -580
  163. package/dist/frontend/ConfirmDialog-Cpzyb55f.js +0 -212
  164. package/dist/frontend/CreateSnapshotDialog-CmkV-n2A.js +0 -216
  165. package/dist/frontend/DatePicker-Byynca7V.js +0 -257
  166. package/dist/frontend/DeleteDialog-ap6nOywZ.js +0 -174
  167. package/dist/frontend/FolderDialog-DmN_trV0.js +0 -247
  168. package/dist/frontend/FolderNode-C4B8a2fd.js +0 -317
  169. package/dist/frontend/FolderTreeSelector-D6ijiZTA.js +0 -100
  170. package/dist/frontend/Icon-DtNo0N1U.js +0 -64
  171. package/dist/frontend/SettingsDialog-2kTaTXAs.js +0 -992
  172. package/dist/frontend/ShareDialog-BBDGNF5n.js +0 -165
  173. package/dist/frontend/TagCreateDialog-DiLZnJo4.js +0 -258
  174. package/dist/frontend/camera-B7dAOd4s.js +0 -28
  175. package/dist/frontend/check-CDwRlG9T.js +0 -24
  176. package/dist/frontend/chevron-down-B7ZrjUmT.js +0 -24
  177. package/dist/frontend/circle-check-CDqeMB2d.js +0 -28
  178. package/dist/frontend/client-Bc5Fzx40.js +0 -2785
  179. package/dist/frontend/clock-Ck5Sn-Zl.js +0 -28
  180. package/dist/frontend/clsx-nmtDPO_P.js +0 -16
  181. package/dist/frontend/copy-CMAA6GP0.js +0 -31
  182. package/dist/frontend/dialog-BDkiG42a.js +0 -213
  183. package/dist/frontend/disclose-version-5I57E3LD.js +0 -3
  184. package/dist/frontend/ellipsis-vertical-BBuPldbW.js +0 -519
  185. package/dist/frontend/folder-TQjKY4yn.js +0 -44
  186. package/dist/frontend/index-client-jobkrWVL.js +0 -86
  187. package/dist/frontend/input-CBI6p4Xl.js +0 -23
  188. package/dist/frontend/label-C-GkhEp4.js +0 -30
  189. package/dist/frontend/rotate-ccw-CleZtJ5D.js +0 -24
  190. package/dist/frontend/select-value-CvrWRkXW.js +0 -1436
  191. package/dist/frontend/subfolders-refresh-store.svelte-BsheoQma.js +0 -65
  192. package/dist/frontend/tag-Dx3SmucJ.js +0 -53
  193. package/dist/frontend/tag-store.svelte-CIaF4sdZ.js +0 -29
  194. package/dist/frontend/textarea-Dfp78XlL.js +0 -23
  195. package/dist/frontend/theme.svelte-CROg1Hi5.js +0 -49
  196. package/dist/frontend/x-DaTdeDXv.js +0 -24
@@ -0,0 +1,611 @@
1
+ import { t as e } from "./loader-circle-BA6aLO71.js";
2
+ import { a as t, i as n, n as r, o as i, r as a, t as o } from "./dialog-D6NxYVmy.js";
3
+ import { a as s, i as c, n as l, r as u, t as d } from "./select-value-sF86Geyh.js";
4
+ import { t as f } from "./label-CW9rxoAb.js";
5
+ import { t as p } from "./copy-GppwRMjX.js";
6
+ import { t as m } from "./circle-check-tSPE1V6t.js";
7
+ import { Qn as h, S as g, _, b as v, er as ee, g as te, h as ne, m as y, nr as re, p as b, tr as ie, v as ae, x as oe, y as se } from "./messages-BpYaLbzE.js";
8
+ import { t as ce } from "./input-B5Rak-5G.js";
9
+ import { a as le, n as ue, o as de, r as x, s as fe, t as pe } from "./api-keys-CpkrA8rD.js";
10
+ import "svelte/internal/disclose-version";
11
+ import * as S from "svelte/internal/client";
12
+ //#region src/lib/components/sidebar/category-dialog-feedback.ts
13
+ function C(e, t) {
14
+ return typeof e == "object" && e && "status" in e && e.status === 409 ? "A category with this name already exists." : e instanceof Error && e.message.trim().length > 0 ? e.message : t;
15
+ }
16
+ //#endregion
17
+ //#region src/lib/components/sidebar/CategoryDialog.svelte
18
+ var me = S.from_html("<span class=\"font-medium text-foreground\"> </span> ", 1), he = S.from_html("Delete <span class=\"font-medium text-foreground\"> </span> ", 1), w = S.from_html("<!> <!>", 1), ge = S.from_html("<div class=\"flex items-start gap-3 rounded-lg border border-primary/30 bg-primary/10 p-4\" role=\"status\" aria-live=\"polite\"><!> <div><p class=\"text-sm font-medium text-foreground\"> </p> <p class=\"text-sm text-muted-foreground\"><span class=\"font-medium text-foreground\"> </span> </p></div></div>"), _e = S.from_html("<!> Copy API key", 1), ve = S.from_html("<div class=\"rounded-md border border-primary/20 bg-background/80 p-3\"><p class=\"text-xs font-medium text-foreground\">Copy the API key now. It remains available in Settings → API.</p> <code class=\"mt-2 block break-all rounded bg-muted p-2 text-xs text-foreground\"> </code> <!></div>"), T = S.from_html("<p class=\"text-xs text-destructive\" role=\"alert\"> </p>"), ye = S.from_html("<div class=\"space-y-3 rounded-lg border border-primary/30 bg-primary/10 p-4\" role=\"status\" aria-live=\"polite\"><div class=\"flex items-start gap-3\"><!> <div><p class=\"text-sm font-medium text-foreground\">Category created</p> <p class=\"text-sm text-muted-foreground\"> </p></div></div> <!> <!></div>"), be = S.from_html("<p id=\"category-dialog-name-error\" class=\"text-xs text-destructive\" role=\"alert\"> </p>"), E = S.from_html("<!> <!> <!>", 1), xe = S.from_html("<div class=\"space-y-3 rounded-md border border-border/70 bg-muted/30 p-3\"><div class=\"flex flex-wrap items-center justify-between gap-2\"><!> <div class=\"flex flex-wrap gap-2\"><!> <!></div></div> <div class=\"grid gap-2 sm:grid-cols-3\"><label class=\"flex items-center gap-2 rounded-md border border-border/60 bg-background px-3 py-2 text-sm\"><input type=\"checkbox\" class=\"size-4 rounded border-input\"/> <span>Read</span></label> <label class=\"flex items-center gap-2 rounded-md border border-border/60 bg-background px-3 py-2 text-sm\"><input type=\"checkbox\" class=\"size-4 rounded border-input\"/> <span>Edit</span></label> <label class=\"flex items-center gap-2 rounded-md border border-border/60 bg-background px-3 py-2 text-sm\"><input type=\"checkbox\" class=\"size-4 rounded border-input\"/> <span>Write</span></label></div></div>"), Se = S.from_html("<p class=\"text-xs text-muted-foreground\">Save Category API access first, then reopen settings to issue a key.</p>"), Ce = S.from_html("<div class=\"rounded-lg border border-primary/30 bg-primary/10 p-3 text-primary\"><p class=\"text-xs font-medium\">Copy now — this raw key is shown once.</p> <code class=\"mt-1 block break-all rounded bg-background/80 p-2 text-xs text-foreground\"> </code> <!></div>"), we = S.from_html("<div class=\"flex items-center justify-between gap-3 rounded-md bg-muted/40 px-3 py-2 text-xs\"><span> </span> <div class=\"flex shrink-0 gap-2\"><!> <!></div></div>"), Te = S.from_html("<div class=\"space-y-3 rounded-md border border-border/70 p-3\"><div class=\"flex items-center justify-between gap-2\"><div><!><p class=\"text-xs text-muted-foreground\">Keys inherit the saved permissions above.</p></div> <!></div> <!> <!> <div class=\"max-h-48 space-y-2 overflow-y-auto pr-1\"></div></div>"), Ee = S.from_html("<form class=\"space-y-4\"><div class=\"space-y-2\"><!> <!> <!></div> <div class=\"space-y-2\"><!> <!></div> <!> <!></form>"), D = S.from_html("<!> ", 1);
19
+ function O(O, k) {
20
+ S.push(k, !0);
21
+ let A = {
22
+ Root: s,
23
+ Content: c,
24
+ Item: u,
25
+ Trigger: l,
26
+ Value: d
27
+ }, j = S.prop(k, "open", 15, !1), M = S.state(""), N = S.state(null), P = S.state(!1), F = S.state("unavailable"), I = S.state(!1), L = S.state(!1), R = S.state(!1), z = S.state(S.proxy([])), B = S.state(S.proxy({})), V = S.state(null), H = S.state(!1), U = S.state(null), W = S.state(null), G = S.state(null), K = S.derived(() => S.get(V) ? S.get(B)[S.get(V)] : void 0);
28
+ async function q(e) {
29
+ let t = await le();
30
+ S.set(z, t.keys.filter((t) => ue(t.scopes) === e), !0);
31
+ }
32
+ async function De() {
33
+ if (k.category?.id) {
34
+ S.set(H, !0);
35
+ try {
36
+ let e = await x(k.category.id);
37
+ S.set(B, {
38
+ ...S.get(B),
39
+ [e.id]: e.key
40
+ }, !0), S.set(V, e.id, !0), await q(k.category.id);
41
+ } catch (e) {
42
+ S.set(N, e instanceof Error ? e.message : "Failed to create category API key", !0);
43
+ } finally {
44
+ S.set(H, !1);
45
+ }
46
+ }
47
+ }
48
+ async function Oe(e) {
49
+ if (k.category?.id) {
50
+ S.set(H, !0);
51
+ try {
52
+ await fe(e);
53
+ let { [e]: t, ...n } = S.get(B);
54
+ S.set(B, n, !0), S.get(V) === e && S.set(V, null), await q(k.category.id);
55
+ } finally {
56
+ S.set(H, !1);
57
+ }
58
+ }
59
+ }
60
+ async function ke(e) {
61
+ let t = S.get(B)[e.id] ?? await de(e.id);
62
+ await navigator.clipboard.writeText(pe(e, t));
63
+ }
64
+ S.user_effect(() => {
65
+ if (!j()) return;
66
+ S.set(M, k.category?.name ?? "", !0);
67
+ let e = k.category?.apiMode === "category" ? "category" : k.category?.apiMode === "global" || k.category?.apiMode === "general" ? "global" : "unavailable";
68
+ S.set(F, e, !0), S.set(I, !!k.category?.apiPermissionRead, !0), S.set(L, !!k.category?.apiPermissionEdit, !0), S.set(R, !!k.category?.apiPermissionWrite, !0), e === "unavailable" && (S.set(I, !1), S.set(L, !1), S.set(R, !1)), S.set(B, {}, !0), S.set(V, null), S.set(z, [], !0), S.set(U, null), S.set(W, null), S.set(G, null), k.mode === "edit" && k.category?.id && q(k.category.id), S.set(N, null);
69
+ });
70
+ let J = S.derived(() => S.get(M).trim()), Y = S.derived(() => k.mode === "delete"), Ae = S.derived(() => S.get(I) || S.get(L) || S.get(R)), X = S.derived(() => S.get(G) ? y() : S.get(Y) ? te() : k.mode === "edit" ? oe() : g()), je = S.derived(() => S.get(Y) ? ee() : k.mode === "edit" ? re() : h());
71
+ function Me(e) {
72
+ return e === "category" ? "category" : e === "global" ? "global" : "unavailable";
73
+ }
74
+ function Z(e) {
75
+ if (e === "read") {
76
+ S.set(I, !0), S.set(L, !1), S.set(R, !1);
77
+ return;
78
+ }
79
+ if (e === "write") {
80
+ S.set(I, !1), S.set(L, !1), S.set(R, !0);
81
+ return;
82
+ }
83
+ if (e === "read-write") {
84
+ S.set(I, !0), S.set(L, !1), S.set(R, !0);
85
+ return;
86
+ }
87
+ S.set(I, !0), S.set(L, !0), S.set(R, !0);
88
+ }
89
+ async function Q(e) {
90
+ if (e?.preventDefault(), !S.get(P)) {
91
+ if (S.get(Y)) {
92
+ if (!k.onDelete) {
93
+ $();
94
+ return;
95
+ }
96
+ S.set(P, !0);
97
+ try {
98
+ await k.onDelete(), S.set(G, k.category?.name ?? "Category", !0);
99
+ } catch (e) {
100
+ console.error("CategoryDialog: delete failed", e), S.set(N, e instanceof Error ? e.message : _(), !0);
101
+ } finally {
102
+ S.set(P, !1);
103
+ }
104
+ return;
105
+ }
106
+ if (S.get(J).length === 0) {
107
+ S.set(N, "Name is required");
108
+ return;
109
+ }
110
+ if (S.get(F) !== "unavailable" && !S.get(Ae)) {
111
+ S.set(N, "Select at least one permission");
112
+ return;
113
+ }
114
+ if (!k.onSave) {
115
+ $();
116
+ return;
117
+ }
118
+ S.set(N, null), S.set(P, !0);
119
+ try {
120
+ let e = await k.onSave({
121
+ name: S.get(J),
122
+ apiMode: Me(S.get(F)),
123
+ apiPermissionRead: S.get(F) === "unavailable" ? !1 : S.get(I),
124
+ apiPermissionEdit: S.get(F) === "unavailable" ? !1 : S.get(L),
125
+ apiPermissionWrite: S.get(F) === "unavailable" ? !1 : S.get(R)
126
+ });
127
+ if (k.mode === "create" && e) {
128
+ if (S.set(U, e.name, !0), S.get(F) === "category") try {
129
+ let t = await x(e.id);
130
+ S.set(W, t.key, !0);
131
+ } catch (e) {
132
+ S.set(N, `Category created, but its API key could not be created: ${C(e, "Unknown error")}`);
133
+ }
134
+ return;
135
+ }
136
+ $();
137
+ } catch (e) {
138
+ console.error("CategoryDialog: save failed", e), S.set(N, C(e, k.mode === "edit" ? ae() : se()), !0);
139
+ } finally {
140
+ S.set(P, !1);
141
+ }
142
+ }
143
+ }
144
+ function $() {
145
+ S.get(P) || (j(!1), k.onClose?.());
146
+ }
147
+ function Ne(e) {
148
+ if (!e && S.get(P)) {
149
+ j(!0);
150
+ return;
151
+ }
152
+ e || $();
153
+ }
154
+ t(O, {
155
+ onOpenChange: Ne,
156
+ get open() {
157
+ return j();
158
+ },
159
+ set open(e) {
160
+ j(e);
161
+ },
162
+ children: (t, s) => {
163
+ var c = E(), l = S.first_child(c);
164
+ r(l, {
165
+ children: (e, t) => {
166
+ var r = w(), i = S.first_child(r);
167
+ o(i, {
168
+ children: (e, t) => {
169
+ S.next();
170
+ var n = S.text();
171
+ S.template_effect(() => S.set_text(n, S.get(X))), S.append(e, n);
172
+ },
173
+ $$slots: { default: !0 }
174
+ });
175
+ var a = S.sibling(i, 2), s = (e) => {
176
+ n(e, {
177
+ children: (e, t) => {
178
+ var n = me(), r = S.first_child(n), i = S.child(r);
179
+ S.reset(r);
180
+ var a = S.sibling(r);
181
+ S.template_effect((e) => {
182
+ S.set_text(i, `“${S.get(G) ?? ""}”`), S.set_text(a, ` ${e ?? ""}`);
183
+ }, [() => b()]), S.append(e, n);
184
+ },
185
+ $$slots: { default: !0 }
186
+ });
187
+ }, c = (e) => {
188
+ n(e, {
189
+ children: (e, t) => {
190
+ S.next();
191
+ var n = he(), r = S.sibling(S.first_child(n)), i = S.child(r);
192
+ S.reset(r);
193
+ var a = S.sibling(r);
194
+ S.template_effect((e) => {
195
+ S.set_text(i, `“${k.category?.name ?? "Category" ?? ""}”`), S.set_text(a, `?
196
+ ${e ?? ""}`);
197
+ }, [() => ne()]), S.append(e, n);
198
+ },
199
+ $$slots: { default: !0 }
200
+ });
201
+ }, l = (e) => {
202
+ n(e, {
203
+ children: (e, t) => {
204
+ S.next();
205
+ var n = S.text();
206
+ S.template_effect((e) => S.set_text(n, e), [() => v()]), S.append(e, n);
207
+ },
208
+ $$slots: { default: !0 }
209
+ });
210
+ };
211
+ S.if(a, (e) => {
212
+ S.get(G) ? e(s) : S.get(Y) ? e(c, 1) : e(l, -1);
213
+ }), S.append(e, r);
214
+ },
215
+ $$slots: { default: !0 }
216
+ });
217
+ var u = S.sibling(l, 2), d = (e) => {
218
+ var t = ge(), n = S.child(t);
219
+ m(n, { class: "mt-0.5 size-5 shrink-0 text-primary" });
220
+ var r = S.sibling(n, 2), i = S.child(r), a = S.child(i, !0);
221
+ S.reset(i);
222
+ var o = S.sibling(i, 2), s = S.child(o), c = S.child(s);
223
+ S.reset(s);
224
+ var l = S.sibling(s);
225
+ S.reset(o), S.reset(r), S.reset(t), S.template_effect((e, t) => {
226
+ S.set_text(a, e), S.set_text(c, `“${S.get(G) ?? ""}”`), S.set_text(l, ` ${t ?? ""}`);
227
+ }, [() => y(), () => b()]), S.append(e, t);
228
+ }, h = (e) => {
229
+ var t = ye(), n = S.child(t), r = S.child(n);
230
+ m(r, { class: "mt-0.5 size-5 shrink-0 text-primary" });
231
+ var a = S.sibling(r, 2), o = S.sibling(S.child(a), 2), s = S.child(o);
232
+ S.reset(o), S.reset(a), S.reset(n);
233
+ var c = S.sibling(n, 2), l = (e) => {
234
+ var t = ve(), n = S.sibling(S.child(t), 2), r = S.child(n, !0);
235
+ S.reset(n), i(S.sibling(n, 2), {
236
+ type: "button",
237
+ size: "sm",
238
+ variant: "outline",
239
+ class: "mt-2",
240
+ onclick: () => navigator.clipboard.writeText(S.get(W) ?? ""),
241
+ children: (e, t) => {
242
+ var n = _e();
243
+ p(S.first_child(n), { class: "mr-1 size-3.5" }), S.next(), S.append(e, n);
244
+ },
245
+ $$slots: { default: !0 }
246
+ }), S.reset(t), S.template_effect(() => S.set_text(r, S.get(W))), S.append(e, t);
247
+ };
248
+ S.if(c, (e) => {
249
+ S.get(W) && e(l);
250
+ });
251
+ var u = S.sibling(c, 2), d = (e) => {
252
+ var t = T(), n = S.child(t, !0);
253
+ S.reset(t), S.template_effect(() => S.set_text(n, S.get(N))), S.append(e, t);
254
+ };
255
+ S.if(u, (e) => {
256
+ S.get(N) && e(d);
257
+ }), S.reset(t), S.template_effect(() => S.set_text(s, `${S.get(U) ?? ""} is ready to use.`)), S.append(e, t);
258
+ }, g = (e) => {
259
+ var t = Ee(), n = S.child(t), r = S.child(n);
260
+ f(r, {
261
+ for: "category-dialog-name",
262
+ children: (e, t) => {
263
+ S.next();
264
+ var n = S.text();
265
+ S.template_effect((e) => S.set_text(n, e), [() => v()]), S.append(e, n);
266
+ },
267
+ $$slots: { default: !0 }
268
+ });
269
+ var a = S.sibling(r, 2);
270
+ {
271
+ let e = S.derived(() => v()), t = S.derived(() => S.get(N) ? "true" : void 0), n = S.derived(() => S.get(N) ? "category-dialog-name-error" : void 0);
272
+ ce(a, {
273
+ id: "category-dialog-name",
274
+ name: "name",
275
+ type: "text",
276
+ get placeholder() {
277
+ return S.get(e);
278
+ },
279
+ maxlength: 255,
280
+ required: !0,
281
+ get disabled() {
282
+ return S.get(P);
283
+ },
284
+ get "aria-invalid"() {
285
+ return S.get(t);
286
+ },
287
+ get "aria-describedby"() {
288
+ return S.get(n);
289
+ },
290
+ autocomplete: "off",
291
+ get value() {
292
+ return S.get(M);
293
+ },
294
+ set value(e) {
295
+ S.set(M, e, !0);
296
+ }
297
+ });
298
+ }
299
+ var o = S.sibling(a, 2), s = (e) => {
300
+ var t = be(), n = S.child(t, !0);
301
+ S.reset(t), S.template_effect(() => S.set_text(n, S.get(N))), S.append(e, t);
302
+ };
303
+ S.if(o, (e) => {
304
+ S.get(N) && e(s);
305
+ }), S.reset(n);
306
+ var c = S.sibling(n, 2), l = S.child(c);
307
+ f(l, {
308
+ for: "category-dialog-api-mode",
309
+ children: (e, t) => {
310
+ S.next();
311
+ var n = S.text("API access");
312
+ S.append(e, n);
313
+ },
314
+ $$slots: { default: !0 }
315
+ });
316
+ var u = S.sibling(l, 2);
317
+ S.component(u, () => A.Root, (e, t) => {
318
+ t(e, {
319
+ type: "single",
320
+ get value() {
321
+ return S.get(F);
322
+ },
323
+ get disabled() {
324
+ return S.get(P);
325
+ },
326
+ onValueChange: (e) => {
327
+ (e === "unavailable" || e === "global" || e === "category") && S.set(F, e, !0);
328
+ },
329
+ children: (e, t) => {
330
+ var n = w(), r = S.first_child(n);
331
+ S.component(r, () => A.Trigger, (e, t) => {
332
+ t(e, {
333
+ id: "category-dialog-api-mode",
334
+ class: "h-10 w-full",
335
+ children: (e, t) => {
336
+ var n = S.comment(), r = S.first_child(n);
337
+ S.component(r, () => A.Value, (e, t) => {
338
+ t(e, {
339
+ placeholder: "Select API access",
340
+ children: (e, t) => {
341
+ S.next();
342
+ var n = S.text();
343
+ S.template_effect(() => S.set_text(n, S.get(F) === "unavailable" ? "Unavailable" : S.get(F) === "global" ? "Global" : "Category API")), S.append(e, n);
344
+ },
345
+ $$slots: { default: !0 }
346
+ });
347
+ }), S.append(e, n);
348
+ },
349
+ $$slots: { default: !0 }
350
+ });
351
+ });
352
+ var i = S.sibling(r, 2);
353
+ S.component(i, () => A.Content, (e, t) => {
354
+ t(e, {
355
+ children: (e, t) => {
356
+ var n = E(), r = S.first_child(n);
357
+ S.component(r, () => A.Item, (e, t) => {
358
+ t(e, {
359
+ value: "unavailable",
360
+ children: (e, t) => {
361
+ S.next();
362
+ var n = S.text("Unavailable");
363
+ S.append(e, n);
364
+ },
365
+ $$slots: { default: !0 }
366
+ });
367
+ });
368
+ var i = S.sibling(r, 2);
369
+ S.component(i, () => A.Item, (e, t) => {
370
+ t(e, {
371
+ value: "global",
372
+ children: (e, t) => {
373
+ S.next();
374
+ var n = S.text("Global");
375
+ S.append(e, n);
376
+ },
377
+ $$slots: { default: !0 }
378
+ });
379
+ });
380
+ var a = S.sibling(i, 2);
381
+ S.component(a, () => A.Item, (e, t) => {
382
+ t(e, {
383
+ value: "category",
384
+ children: (e, t) => {
385
+ S.next();
386
+ var n = S.text("Category API");
387
+ S.append(e, n);
388
+ },
389
+ $$slots: { default: !0 }
390
+ });
391
+ }), S.append(e, n);
392
+ },
393
+ $$slots: { default: !0 }
394
+ });
395
+ }), S.append(e, n);
396
+ },
397
+ $$slots: { default: !0 }
398
+ });
399
+ }), S.reset(c);
400
+ var d = S.sibling(c, 2), p = (e) => {
401
+ var t = xe(), n = S.child(t), r = S.child(n);
402
+ f(r, {
403
+ class: "text-sm",
404
+ children: (e, t) => {
405
+ S.next();
406
+ var n = S.text("Permissions");
407
+ S.append(e, n);
408
+ },
409
+ $$slots: { default: !0 }
410
+ });
411
+ var a = S.sibling(r, 2), o = S.child(a);
412
+ i(o, {
413
+ type: "button",
414
+ variant: "outline",
415
+ size: "sm",
416
+ onclick: () => Z("read-write"),
417
+ children: (e, t) => {
418
+ S.next();
419
+ var n = S.text("Read / Write");
420
+ S.append(e, n);
421
+ },
422
+ $$slots: { default: !0 }
423
+ }), i(S.sibling(o, 2), {
424
+ type: "button",
425
+ variant: "outline",
426
+ size: "sm",
427
+ onclick: () => Z("read-edit-write"),
428
+ children: (e, t) => {
429
+ S.next();
430
+ var n = S.text("Read / Edit / Write");
431
+ S.append(e, n);
432
+ },
433
+ $$slots: { default: !0 }
434
+ }), S.reset(a), S.reset(n);
435
+ var s = S.sibling(n, 2), c = S.child(s), l = S.child(c);
436
+ S.remove_input_defaults(l), S.next(2), S.reset(c);
437
+ var u = S.sibling(c, 2), d = S.child(u);
438
+ S.remove_input_defaults(d), S.next(2), S.reset(u);
439
+ var p = S.sibling(u, 2), m = S.child(p);
440
+ S.remove_input_defaults(m), S.next(2), S.reset(p), S.reset(s), S.reset(t), S.template_effect(() => {
441
+ l.disabled = S.get(P), d.disabled = S.get(P), m.disabled = S.get(P);
442
+ }), S.bind_checked(l, () => S.get(I), (e) => S.set(I, e)), S.bind_checked(d, () => S.get(L), (e) => S.set(L, e)), S.bind_checked(m, () => S.get(R), (e) => S.set(R, e)), S.append(e, t);
443
+ };
444
+ S.if(d, (e) => {
445
+ S.get(F) !== "unavailable" && e(p);
446
+ });
447
+ var m = S.sibling(d, 2), h = (e) => {
448
+ var t = Te(), n = S.child(t), r = S.child(n);
449
+ f(S.child(r), {
450
+ children: (e, t) => {
451
+ S.next();
452
+ var n = S.text("Category API keys");
453
+ S.append(e, n);
454
+ },
455
+ $$slots: { default: !0 }
456
+ }), S.next(), S.reset(r);
457
+ var a = S.sibling(r, 2);
458
+ {
459
+ let e = S.derived(() => S.get(P) || S.get(H) || k.category.apiMode !== "category");
460
+ i(a, {
461
+ type: "button",
462
+ size: "sm",
463
+ onclick: De,
464
+ get disabled() {
465
+ return S.get(e);
466
+ },
467
+ children: (e, t) => {
468
+ S.next();
469
+ var n = S.text("Create key");
470
+ S.append(e, n);
471
+ },
472
+ $$slots: { default: !0 }
473
+ });
474
+ }
475
+ S.reset(n);
476
+ var o = S.sibling(n, 2), s = (e) => {
477
+ var t = Se();
478
+ S.append(e, t);
479
+ };
480
+ S.if(o, (e) => {
481
+ k.category.apiMode !== "category" && e(s);
482
+ });
483
+ var c = S.sibling(o, 2), l = (e) => {
484
+ var t = Ce(), n = S.sibling(S.child(t), 2), r = S.child(n, !0);
485
+ S.reset(n), i(S.sibling(n, 2), {
486
+ type: "button",
487
+ size: "sm",
488
+ variant: "outline",
489
+ class: "mt-2",
490
+ onclick: () => navigator.clipboard.writeText(S.get(K)),
491
+ children: (e, t) => {
492
+ S.next();
493
+ var n = S.text("Copy key");
494
+ S.append(e, n);
495
+ },
496
+ $$slots: { default: !0 }
497
+ }), S.reset(t), S.template_effect(() => S.set_text(r, S.get(K))), S.append(e, t);
498
+ };
499
+ S.if(c, (e) => {
500
+ S.get(K) && e(l);
501
+ });
502
+ var u = S.sibling(c, 2);
503
+ S.each(u, 21, () => S.get(z), (e) => e.id, (e, t) => {
504
+ var n = we(), r = S.child(n), a = S.child(r);
505
+ S.reset(r);
506
+ var o = S.sibling(r, 2), s = S.child(o);
507
+ {
508
+ let e = S.derived(() => !S.get(t).recoverable && !S.get(B)[S.get(t).id]);
509
+ i(s, {
510
+ type: "button",
511
+ size: "sm",
512
+ variant: "outline",
513
+ onclick: () => ke(S.get(t)),
514
+ get disabled() {
515
+ return S.get(e);
516
+ },
517
+ children: (e, n) => {
518
+ S.next();
519
+ var r = S.text();
520
+ S.template_effect(() => S.set_text(r, S.get(t).recoverable || S.get(B)[S.get(t).id] ? "Copy key" : "Rotate to enable copy")), S.append(e, r);
521
+ },
522
+ $$slots: { default: !0 }
523
+ });
524
+ }
525
+ i(S.sibling(s, 2), {
526
+ type: "button",
527
+ size: "sm",
528
+ variant: "destructive",
529
+ onclick: () => Oe(S.get(t).id),
530
+ get disabled() {
531
+ return S.get(H);
532
+ },
533
+ children: (e, t) => {
534
+ S.next();
535
+ var n = S.text("Revoke");
536
+ S.append(e, n);
537
+ },
538
+ $$slots: { default: !0 }
539
+ }), S.reset(o), S.reset(n), S.template_effect(() => S.set_text(a, `${S.get(t).name ?? ""} · ${S.get(t).prefix ?? ""}…`)), S.append(e, n);
540
+ }), S.reset(u), S.reset(t), S.append(e, t);
541
+ };
542
+ S.if(m, (e) => {
543
+ k.mode === "edit" && S.get(F) === "category" && k.category?.id && e(h);
544
+ }), S.reset(t), S.event("submit", t, Q), S.append(e, t);
545
+ }, _ = (e) => {
546
+ var t = T(), n = S.child(t, !0);
547
+ S.reset(t), S.template_effect(() => S.set_text(n, S.get(N))), S.append(e, t);
548
+ };
549
+ S.if(u, (e) => {
550
+ S.get(G) ? e(d) : S.get(U) ? e(h, 1) : S.get(Y) ? S.get(N) && e(_, 3) : e(g, 2);
551
+ }), a(S.sibling(u, 2), {
552
+ class: "gap-2 max-sm:flex-col max-sm:items-stretch",
553
+ children: (t, n) => {
554
+ var r = w(), a = S.first_child(r), o = (e) => {
555
+ i(e, {
556
+ variant: "outline",
557
+ type: "button",
558
+ onclick: $,
559
+ get disabled() {
560
+ return S.get(P);
561
+ },
562
+ children: (e, t) => {
563
+ S.next();
564
+ var n = S.text();
565
+ S.template_effect((e) => S.set_text(n, e), [() => ie()]), S.append(e, n);
566
+ },
567
+ $$slots: { default: !0 }
568
+ });
569
+ };
570
+ S.if(a, (e) => {
571
+ !S.get(U) && !S.get(G) && e(o);
572
+ });
573
+ var s = S.sibling(a, 2);
574
+ {
575
+ let t = S.derived(() => S.get(Y) ? "button" : "submit"), n = S.derived(() => S.get(Y) ? "destructive" : "default"), r = S.derived(() => S.get(U) || S.get(G) ? $ : Q), a = S.derived(() => S.get(P) || !S.get(Y) && !S.get(U) && !S.get(G) && S.get(J).length === 0);
576
+ i(s, {
577
+ get type() {
578
+ return S.get(t);
579
+ },
580
+ get variant() {
581
+ return S.get(n);
582
+ },
583
+ get onclick() {
584
+ return S.get(r);
585
+ },
586
+ get disabled() {
587
+ return S.get(a);
588
+ },
589
+ children: (t, n) => {
590
+ var r = D(), i = S.first_child(r), a = (t) => {
591
+ e(t, { class: "mr-1 size-4 animate-spin" });
592
+ };
593
+ S.if(i, (e) => {
594
+ S.get(P) && e(a);
595
+ });
596
+ var o = S.sibling(i);
597
+ S.template_effect(() => S.set_text(o, ` ${(S.get(U) || S.get(G) ? "Done" : S.get(je)) ?? ""}`)), S.append(t, r);
598
+ },
599
+ $$slots: { default: !0 }
600
+ });
601
+ }
602
+ S.append(t, r);
603
+ },
604
+ $$slots: { default: !0 }
605
+ }), S.append(t, c);
606
+ },
607
+ $$slots: { default: !0 }
608
+ }), S.pop();
609
+ }
610
+ //#endregion
611
+ export { O as t };