@hiai-gg/docsmint 0.3.8 → 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 (90) hide show
  1. package/dist/backend/index.js +1 -1
  2. package/dist/client.d.ts +11 -0
  3. package/dist/client.js +9 -0
  4. package/dist/frontend/CategoryDialog-CxVyaBV5.js +611 -0
  5. package/dist/frontend/{ConfirmDialog-BLF3x_hr.js → ConfirmDialog-NFGXRa3E.js} +2 -2
  6. package/dist/frontend/{CreateSnapshotDialog-D5vPvFTL.js → CreateSnapshotDialog-BDgFTeFn.js} +40 -40
  7. package/dist/frontend/{DatePicker-CLNTdvTk.js → DatePicker-BZRBluzF.js} +102 -105
  8. package/dist/frontend/{DeleteDialog-DxYFJivN.js → DeleteDialog-CvAr2WPu.js} +39 -39
  9. package/dist/frontend/{FolderNode-C2zG7uii.js → FolderNode-C6FJv99G.js} +41 -41
  10. package/dist/frontend/HiaiDocsExtensionProvider-DHWLzRUu.js +11 -0
  11. package/dist/frontend/SettingsDialog-BHh68rTB.js +1016 -0
  12. package/dist/frontend/{ShareDialog-DYu3RKQu.js → ShareDialog-BUOkYSlw.js} +35 -35
  13. package/dist/frontend/Sidebar-Cu3JrKDC.js +2021 -0
  14. package/dist/frontend/{TagCreateDialog-DXQs2bL9.js → TagCreateDialog-B9YZBNHi.js} +38 -38
  15. package/dist/frontend/api/settings.js +1 -1
  16. package/dist/frontend/app-shell.d.ts +8 -0
  17. package/dist/frontend/app-shell.js +291 -0
  18. package/dist/frontend/{clsx-C7bIvsDS.js → bundle-mjs-DllmqUxV.js} +583 -583
  19. package/dist/frontend/components/category-dialog.js +1 -1
  20. package/dist/frontend/components/create-snapshot-dialog.js +1 -1
  21. package/dist/frontend/components/delete-dialog.js +1 -1
  22. package/dist/frontend/components/editor/document-editor.js +1102 -1102
  23. package/dist/frontend/components/editor/document-title.js +2 -2
  24. package/dist/frontend/components/editor/markdown-toggle.js +1 -1
  25. package/dist/frontend/components/folder-node.js +1 -1
  26. package/dist/frontend/components/save-as-dialog.js +75 -75
  27. package/dist/frontend/components/settings.js +1 -1
  28. package/dist/frontend/components/share-dialog.js +1 -1
  29. package/dist/frontend/components/sidebar.js +2 -2021
  30. package/dist/frontend/components/tag-create-dialog.js +1 -1
  31. package/dist/frontend/components/version-history.js +58 -58
  32. package/dist/frontend/{FolderDialog-CRVZM2Oi.js → confirm-dialog-C4jTRbiS.js} +69 -69
  33. package/dist/frontend/dashboard.js +1118 -1118
  34. package/dist/frontend/{dialog-D6NxYVmy.js → dialog-Bevp9mmM.js} +2 -2
  35. package/dist/frontend/{loader-circle-BA6aLO71.js → dist-C3857Spp.js} +81 -81
  36. package/dist/frontend/{ellipsis-vertical-P9MHvCps.js → dropdown-menu-CRSby3e9.js} +182 -182
  37. package/dist/frontend/extension.js +2 -11
  38. package/dist/frontend/{floating-layer-anchor-CPwucTfd.js → floating-layer-anchor-BDs7vO-M.js} +1 -1
  39. package/dist/frontend/frontend.css +1 -1
  40. package/dist/frontend/i18n.js +2 -2
  41. package/dist/frontend/{input-B5Rak-5G.js → input-BWlOML_m.js} +1 -1
  42. package/dist/frontend/{label-CW9rxoAb.js → label-C2HfJNQ2.js} +1 -1
  43. package/dist/frontend/{messages-BpYaLbzE.js → messages-C5Q890i2.js} +8 -8
  44. package/dist/frontend/search.js +613 -613
  45. package/dist/frontend/{select-value-sF86Geyh.js → select-value-GXwx90Pr.js} +2 -2
  46. package/dist/frontend/{settings-blyobazp.js → settings-DSrUl4hW.js} +9 -9
  47. package/dist/frontend/{textarea-i1720bE7.js → textarea-DOAE-h42.js} +1 -1
  48. package/dist/frontend/{utils-hzdMVeCv.js → utils-BPDRytUU.js} +1 -1
  49. package/dist/frontend/{utils-CffiyuTo.js → utils-DrfHTcei.js} +1 -1
  50. package/dist/frontend/utils.js +1 -1
  51. package/dist/frontend-ssr/api/settings.js +1 -1
  52. package/dist/frontend-ssr/app-shell.js +294 -0
  53. package/dist/frontend-ssr/assets/{CategoryDialog-C2xaZKHq.js → CategoryDialog-BcGW8-Kf.js} +4 -4
  54. package/dist/frontend-ssr/assets/{CreateSnapshotDialog-BRw1xJW1.js → CreateSnapshotDialog-1bROJ-Rn.js} +4 -4
  55. package/dist/frontend-ssr/assets/{DatePicker-DnXniwlZ.js → DatePicker-B1ML8OVz.js} +33 -33
  56. package/dist/frontend-ssr/assets/{FolderNode-DRfBfpft.js → FolderNode-BZ0Q2QUS.js} +3 -3
  57. package/dist/frontend-ssr/assets/HiaiDocsExtensionProvider-DAM-lX4R.js +13 -0
  58. package/dist/frontend-ssr/assets/{SettingsDialog-CX8Noa8A.js → SettingsDialog-B8L_YqNA.js} +16 -16
  59. package/dist/frontend-ssr/assets/{ShareDialog-Cge49ZdJ.js → ShareDialog-vMvJLRfn.js} +1 -1
  60. package/dist/frontend-ssr/assets/Sidebar-EHuUAx3W.js +2033 -0
  61. package/dist/frontend-ssr/assets/{TagCreateDialog-EAChgBF-.js → TagCreateDialog-B0DPEfmQ.js} +3 -3
  62. package/dist/frontend-ssr/assets/{FolderDialog-Dq7I2cKZ.js → confirm-dialog-BCthVwUY.js} +4 -4
  63. package/dist/frontend-ssr/assets/{ellipsis-vertical-C-0hgkZn.js → dropdown-menu-Bj5rbqbB.js} +96 -96
  64. package/dist/frontend-ssr/assets/{messages-DhXqlcJI.js → messages-CvqpZNJe.js} +1 -1
  65. package/dist/frontend-ssr/assets/{select-value-DngdSmLI.js → select-value-6Lk0ToYd.js} +1 -1
  66. package/dist/frontend-ssr/components/category-dialog.js +1 -1
  67. package/dist/frontend-ssr/components/create-snapshot-dialog.js +1 -1
  68. package/dist/frontend-ssr/components/delete-dialog.js +1 -1
  69. package/dist/frontend-ssr/components/editor/document-editor.js +5 -5
  70. package/dist/frontend-ssr/components/editor/document-title.js +1 -1
  71. package/dist/frontend-ssr/components/editor/markdown-toggle.js +1 -1
  72. package/dist/frontend-ssr/components/folder-node.js +1 -1
  73. package/dist/frontend-ssr/components/save-as-dialog.js +4 -4
  74. package/dist/frontend-ssr/components/settings.js +1 -1
  75. package/dist/frontend-ssr/components/share-dialog.js +1 -1
  76. package/dist/frontend-ssr/components/sidebar.js +1 -2032
  77. package/dist/frontend-ssr/components/tag-create-dialog.js +1 -1
  78. package/dist/frontend-ssr/components/version-history.js +3 -3
  79. package/dist/frontend-ssr/dashboard.js +15 -15
  80. package/dist/frontend-ssr/extension.js +1 -12
  81. package/dist/frontend-ssr/i18n.js +1 -1
  82. package/dist/frontend-ssr/search.js +3 -3
  83. package/package.json +7 -1
  84. package/packages/cli/src/index.ts +1 -1
  85. package/packages/mcp-server/src/index.ts +1 -1
  86. package/dist/frontend/CategoryDialog-DphkZqIB.js +0 -611
  87. package/dist/frontend/SettingsDialog-DCM4-N6_.js +0 -1016
  88. package/dist/frontend-ssr/assets/{DeleteDialog-BCfZy3Zn.js → DeleteDialog-tBYaP0L3.js} +1 -1
  89. package/dist/frontend-ssr/assets/{floating-layer-anchor-uzw9K8qN.js → floating-layer-anchor-CYIE8Oj6.js} +1 -1
  90. package/dist/frontend-ssr/assets/{settings-E6qSAWM2.js → settings-Bk5Hk9Vq.js} +1 -1
@@ -214237,7 +214237,7 @@ var swaggerConfig = {
214237
214237
  documentation: {
214238
214238
  info: {
214239
214239
  title: "DocsMint API",
214240
- version: "0.3.8",
214240
+ version: "0.3.9",
214241
214241
  description: "Self-hosted AI-first documentation platform. Full-text + semantic search, version history, sharing, and folder organization.",
214242
214242
  contact: { name: "HiAi-gg", url: "https://github.com/HiAi-gg/docsmint" },
214243
214243
  license: {
package/dist/client.d.ts CHANGED
@@ -126,6 +126,17 @@ export declare class DocsClient {
126
126
  success: true;
127
127
  }>;
128
128
  search(query: string, options?: DocsSearchOptions, context?: DocsRequestContext): Promise<DocsSearchResponse>;
129
+ /**
130
+ * Product-facing search contract. The retrieval choice is explicitly typed
131
+ * so server-side callers do not need to synthesize browser-only headers.
132
+ * `graph` retains hybrid lexical/vector retrieval and enables AGE expansion;
133
+ * `rag` keeps the lexical/vector channels while disabling graph traversal.
134
+ */
135
+ searchDocuments(input: {
136
+ query: string;
137
+ retrievalMode: "graph" | "rag";
138
+ options?: Omit<DocsSearchOptions, "graph">;
139
+ }, context?: DocsRequestContext): Promise<DocsSearchResponse>;
129
140
  suggest(query: string, context?: DocsRequestContext): Promise<DocsSearchSuggestItem[]>;
130
141
  /** Return entities linked to a document through the AGE graph. */
131
142
  getGraphEntities(docId: string, context?: DocsRequestContext): Promise<DocsGraphEntitiesResponse>;
package/dist/client.js CHANGED
@@ -234,6 +234,15 @@ export class DocsClient {
234
234
  }),
235
235
  }, context);
236
236
  }
237
+ /**
238
+ * Product-facing search contract. The retrieval choice is explicitly typed
239
+ * so server-side callers do not need to synthesize browser-only headers.
240
+ * `graph` retains hybrid lexical/vector retrieval and enables AGE expansion;
241
+ * `rag` keeps the lexical/vector channels while disabling graph traversal.
242
+ */
243
+ async searchDocuments(input, context) {
244
+ return this.search(input.query, { ...input.options, graph: input.retrievalMode === "graph" }, context);
245
+ }
237
246
  async suggest(query, context) {
238
247
  return this.request("GET", "/api/search/suggest", {
239
248
  query: this.cleanQuery({ q: query }),
@@ -0,0 +1,611 @@
1
+ import { t as e } from "./copy-GppwRMjX.js";
2
+ import { t } from "./circle-check-tSPE1V6t.js";
3
+ import { n } from "./dist-C3857Spp.js";
4
+ import { $n as r, S as i, _ as a, b as o, g as s, h as c, m as l, nr as u, p as d, rr as f, tr as p, v as m, x as h, y as g } from "./messages-C5Q890i2.js";
5
+ import { a as ee, i as _, n as te, o as v, r as ne, t as re } from "./dialog-Bevp9mmM.js";
6
+ import { t as ie } from "./input-BWlOML_m.js";
7
+ import { t as y } from "./label-C2HfJNQ2.js";
8
+ import { a as ae, n as oe, o as se, r as b, s as ce, t as le } from "./api-keys-CpkrA8rD.js";
9
+ import { a as ue, i as de, n as fe, r as pe, t as me } from "./select-value-GXwx90Pr.js";
10
+ import "svelte/internal/disclose-version";
11
+ import * as x from "svelte/internal/client";
12
+ //#region src/lib/components/sidebar/category-dialog-feedback.ts
13
+ function S(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 he = x.from_html("<span class=\"font-medium text-foreground\"> </span> ", 1), ge = x.from_html("Delete <span class=\"font-medium text-foreground\"> </span> ", 1), C = x.from_html("<!> <!>", 1), _e = x.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>"), ve = x.from_html("<!> Copy API key", 1), ye = x.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>"), w = x.from_html("<p class=\"text-xs text-destructive\" role=\"alert\"> </p>"), be = x.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>"), xe = x.from_html("<p id=\"category-dialog-name-error\" class=\"text-xs text-destructive\" role=\"alert\"> </p>"), T = x.from_html("<!> <!> <!>", 1), Se = x.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>"), Ce = x.from_html("<p class=\"text-xs text-muted-foreground\">Save Category API access first, then reopen settings to issue a key.</p>"), we = x.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>"), Te = x.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>"), Ee = x.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>"), E = x.from_html("<form class=\"space-y-4\"><div class=\"space-y-2\"><!> <!> <!></div> <div class=\"space-y-2\"><!> <!></div> <!> <!></form>"), D = x.from_html("<!> ", 1);
19
+ function O(O, k) {
20
+ x.push(k, !0);
21
+ let A = {
22
+ Root: ue,
23
+ Content: de,
24
+ Item: pe,
25
+ Trigger: fe,
26
+ Value: me
27
+ }, j = x.prop(k, "open", 15, !1), M = x.state(""), N = x.state(null), P = x.state(!1), F = x.state("unavailable"), I = x.state(!1), L = x.state(!1), R = x.state(!1), z = x.state(x.proxy([])), B = x.state(x.proxy({})), V = x.state(null), H = x.state(!1), U = x.state(null), W = x.state(null), G = x.state(null), K = x.derived(() => x.get(V) ? x.get(B)[x.get(V)] : void 0);
28
+ async function q(e) {
29
+ let t = await ae();
30
+ x.set(z, t.keys.filter((t) => oe(t.scopes) === e), !0);
31
+ }
32
+ async function De() {
33
+ if (k.category?.id) {
34
+ x.set(H, !0);
35
+ try {
36
+ let e = await b(k.category.id);
37
+ x.set(B, {
38
+ ...x.get(B),
39
+ [e.id]: e.key
40
+ }, !0), x.set(V, e.id, !0), await q(k.category.id);
41
+ } catch (e) {
42
+ x.set(N, e instanceof Error ? e.message : "Failed to create category API key", !0);
43
+ } finally {
44
+ x.set(H, !1);
45
+ }
46
+ }
47
+ }
48
+ async function Oe(e) {
49
+ if (k.category?.id) {
50
+ x.set(H, !0);
51
+ try {
52
+ await ce(e);
53
+ let { [e]: t, ...n } = x.get(B);
54
+ x.set(B, n, !0), x.get(V) === e && x.set(V, null), await q(k.category.id);
55
+ } finally {
56
+ x.set(H, !1);
57
+ }
58
+ }
59
+ }
60
+ async function ke(e) {
61
+ let t = x.get(B)[e.id] ?? await se(e.id);
62
+ await navigator.clipboard.writeText(le(e, t));
63
+ }
64
+ x.user_effect(() => {
65
+ if (!j()) return;
66
+ x.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
+ x.set(F, e, !0), x.set(I, !!k.category?.apiPermissionRead, !0), x.set(L, !!k.category?.apiPermissionEdit, !0), x.set(R, !!k.category?.apiPermissionWrite, !0), e === "unavailable" && (x.set(I, !1), x.set(L, !1), x.set(R, !1)), x.set(B, {}, !0), x.set(V, null), x.set(z, [], !0), x.set(U, null), x.set(W, null), x.set(G, null), k.mode === "edit" && k.category?.id && q(k.category.id), x.set(N, null);
69
+ });
70
+ let J = x.derived(() => x.get(M).trim()), Y = x.derived(() => k.mode === "delete"), Ae = x.derived(() => x.get(I) || x.get(L) || x.get(R)), X = x.derived(() => x.get(G) ? l() : x.get(Y) ? s() : k.mode === "edit" ? h() : i()), je = x.derived(() => x.get(Y) ? p() : k.mode === "edit" ? f() : r());
71
+ function Me(e) {
72
+ return e === "category" ? "category" : e === "global" ? "global" : "unavailable";
73
+ }
74
+ function Z(e) {
75
+ if (e === "read") {
76
+ x.set(I, !0), x.set(L, !1), x.set(R, !1);
77
+ return;
78
+ }
79
+ if (e === "write") {
80
+ x.set(I, !1), x.set(L, !1), x.set(R, !0);
81
+ return;
82
+ }
83
+ if (e === "read-write") {
84
+ x.set(I, !0), x.set(L, !1), x.set(R, !0);
85
+ return;
86
+ }
87
+ x.set(I, !0), x.set(L, !0), x.set(R, !0);
88
+ }
89
+ async function Q(e) {
90
+ if (e?.preventDefault(), !x.get(P)) {
91
+ if (x.get(Y)) {
92
+ if (!k.onDelete) {
93
+ $();
94
+ return;
95
+ }
96
+ x.set(P, !0);
97
+ try {
98
+ await k.onDelete(), x.set(G, k.category?.name ?? "Category", !0);
99
+ } catch (e) {
100
+ console.error("CategoryDialog: delete failed", e), x.set(N, e instanceof Error ? e.message : a(), !0);
101
+ } finally {
102
+ x.set(P, !1);
103
+ }
104
+ return;
105
+ }
106
+ if (x.get(J).length === 0) {
107
+ x.set(N, "Name is required");
108
+ return;
109
+ }
110
+ if (x.get(F) !== "unavailable" && !x.get(Ae)) {
111
+ x.set(N, "Select at least one permission");
112
+ return;
113
+ }
114
+ if (!k.onSave) {
115
+ $();
116
+ return;
117
+ }
118
+ x.set(N, null), x.set(P, !0);
119
+ try {
120
+ let e = await k.onSave({
121
+ name: x.get(J),
122
+ apiMode: Me(x.get(F)),
123
+ apiPermissionRead: x.get(F) === "unavailable" ? !1 : x.get(I),
124
+ apiPermissionEdit: x.get(F) === "unavailable" ? !1 : x.get(L),
125
+ apiPermissionWrite: x.get(F) === "unavailable" ? !1 : x.get(R)
126
+ });
127
+ if (k.mode === "create" && e) {
128
+ if (x.set(U, e.name, !0), x.get(F) === "category") try {
129
+ let t = await b(e.id);
130
+ x.set(W, t.key, !0);
131
+ } catch (e) {
132
+ x.set(N, `Category created, but its API key could not be created: ${S(e, "Unknown error")}`);
133
+ }
134
+ return;
135
+ }
136
+ $();
137
+ } catch (e) {
138
+ console.error("CategoryDialog: save failed", e), x.set(N, S(e, k.mode === "edit" ? m() : g()), !0);
139
+ } finally {
140
+ x.set(P, !1);
141
+ }
142
+ }
143
+ }
144
+ function $() {
145
+ x.get(P) || (j(!1), k.onClose?.());
146
+ }
147
+ function Ne(e) {
148
+ if (!e && x.get(P)) {
149
+ j(!0);
150
+ return;
151
+ }
152
+ e || $();
153
+ }
154
+ ee(O, {
155
+ onOpenChange: Ne,
156
+ get open() {
157
+ return j();
158
+ },
159
+ set open(e) {
160
+ j(e);
161
+ },
162
+ children: (r, i) => {
163
+ var a = T(), s = x.first_child(a);
164
+ te(s, {
165
+ children: (e, t) => {
166
+ var n = C(), r = x.first_child(n);
167
+ re(r, {
168
+ children: (e, t) => {
169
+ x.next();
170
+ var n = x.text();
171
+ x.template_effect(() => x.set_text(n, x.get(X))), x.append(e, n);
172
+ },
173
+ $$slots: { default: !0 }
174
+ });
175
+ var i = x.sibling(r, 2), a = (e) => {
176
+ _(e, {
177
+ children: (e, t) => {
178
+ var n = he(), r = x.first_child(n), i = x.child(r);
179
+ x.reset(r);
180
+ var a = x.sibling(r);
181
+ x.template_effect((e) => {
182
+ x.set_text(i, `“${x.get(G) ?? ""}”`), x.set_text(a, ` ${e ?? ""}`);
183
+ }, [() => d()]), x.append(e, n);
184
+ },
185
+ $$slots: { default: !0 }
186
+ });
187
+ }, s = (e) => {
188
+ _(e, {
189
+ children: (e, t) => {
190
+ x.next();
191
+ var n = ge(), r = x.sibling(x.first_child(n)), i = x.child(r);
192
+ x.reset(r);
193
+ var a = x.sibling(r);
194
+ x.template_effect((e) => {
195
+ x.set_text(i, `“${k.category?.name ?? "Category" ?? ""}”`), x.set_text(a, `?
196
+ ${e ?? ""}`);
197
+ }, [() => c()]), x.append(e, n);
198
+ },
199
+ $$slots: { default: !0 }
200
+ });
201
+ }, l = (e) => {
202
+ _(e, {
203
+ children: (e, t) => {
204
+ x.next();
205
+ var n = x.text();
206
+ x.template_effect((e) => x.set_text(n, e), [() => o()]), x.append(e, n);
207
+ },
208
+ $$slots: { default: !0 }
209
+ });
210
+ };
211
+ x.if(i, (e) => {
212
+ x.get(G) ? e(a) : x.get(Y) ? e(s, 1) : e(l, -1);
213
+ }), x.append(e, n);
214
+ },
215
+ $$slots: { default: !0 }
216
+ });
217
+ var f = x.sibling(s, 2), p = (e) => {
218
+ var n = _e(), r = x.child(n);
219
+ t(r, { class: "mt-0.5 size-5 shrink-0 text-primary" });
220
+ var i = x.sibling(r, 2), a = x.child(i), o = x.child(a, !0);
221
+ x.reset(a);
222
+ var s = x.sibling(a, 2), c = x.child(s), u = x.child(c);
223
+ x.reset(c);
224
+ var f = x.sibling(c);
225
+ x.reset(s), x.reset(i), x.reset(n), x.template_effect((e, t) => {
226
+ x.set_text(o, e), x.set_text(u, `“${x.get(G) ?? ""}”`), x.set_text(f, ` ${t ?? ""}`);
227
+ }, [() => l(), () => d()]), x.append(e, n);
228
+ }, m = (n) => {
229
+ var r = be(), i = x.child(r), a = x.child(i);
230
+ t(a, { class: "mt-0.5 size-5 shrink-0 text-primary" });
231
+ var o = x.sibling(a, 2), s = x.sibling(x.child(o), 2), c = x.child(s);
232
+ x.reset(s), x.reset(o), x.reset(i);
233
+ var l = x.sibling(i, 2), u = (t) => {
234
+ var n = ye(), r = x.sibling(x.child(n), 2), i = x.child(r, !0);
235
+ x.reset(r), v(x.sibling(r, 2), {
236
+ type: "button",
237
+ size: "sm",
238
+ variant: "outline",
239
+ class: "mt-2",
240
+ onclick: () => navigator.clipboard.writeText(x.get(W) ?? ""),
241
+ children: (t, n) => {
242
+ var r = ve();
243
+ e(x.first_child(r), { class: "mr-1 size-3.5" }), x.next(), x.append(t, r);
244
+ },
245
+ $$slots: { default: !0 }
246
+ }), x.reset(n), x.template_effect(() => x.set_text(i, x.get(W))), x.append(t, n);
247
+ };
248
+ x.if(l, (e) => {
249
+ x.get(W) && e(u);
250
+ });
251
+ var d = x.sibling(l, 2), f = (e) => {
252
+ var t = w(), n = x.child(t, !0);
253
+ x.reset(t), x.template_effect(() => x.set_text(n, x.get(N))), x.append(e, t);
254
+ };
255
+ x.if(d, (e) => {
256
+ x.get(N) && e(f);
257
+ }), x.reset(r), x.template_effect(() => x.set_text(c, `${x.get(U) ?? ""} is ready to use.`)), x.append(n, r);
258
+ }, h = (e) => {
259
+ var t = E(), n = x.child(t), r = x.child(n);
260
+ y(r, {
261
+ for: "category-dialog-name",
262
+ children: (e, t) => {
263
+ x.next();
264
+ var n = x.text();
265
+ x.template_effect((e) => x.set_text(n, e), [() => o()]), x.append(e, n);
266
+ },
267
+ $$slots: { default: !0 }
268
+ });
269
+ var i = x.sibling(r, 2);
270
+ {
271
+ let e = x.derived(() => o()), t = x.derived(() => x.get(N) ? "true" : void 0), n = x.derived(() => x.get(N) ? "category-dialog-name-error" : void 0);
272
+ ie(i, {
273
+ id: "category-dialog-name",
274
+ name: "name",
275
+ type: "text",
276
+ get placeholder() {
277
+ return x.get(e);
278
+ },
279
+ maxlength: 255,
280
+ required: !0,
281
+ get disabled() {
282
+ return x.get(P);
283
+ },
284
+ get "aria-invalid"() {
285
+ return x.get(t);
286
+ },
287
+ get "aria-describedby"() {
288
+ return x.get(n);
289
+ },
290
+ autocomplete: "off",
291
+ get value() {
292
+ return x.get(M);
293
+ },
294
+ set value(e) {
295
+ x.set(M, e, !0);
296
+ }
297
+ });
298
+ }
299
+ var a = x.sibling(i, 2), s = (e) => {
300
+ var t = xe(), n = x.child(t, !0);
301
+ x.reset(t), x.template_effect(() => x.set_text(n, x.get(N))), x.append(e, t);
302
+ };
303
+ x.if(a, (e) => {
304
+ x.get(N) && e(s);
305
+ }), x.reset(n);
306
+ var c = x.sibling(n, 2), l = x.child(c);
307
+ y(l, {
308
+ for: "category-dialog-api-mode",
309
+ children: (e, t) => {
310
+ x.next();
311
+ var n = x.text("API access");
312
+ x.append(e, n);
313
+ },
314
+ $$slots: { default: !0 }
315
+ });
316
+ var u = x.sibling(l, 2);
317
+ x.component(u, () => A.Root, (e, t) => {
318
+ t(e, {
319
+ type: "single",
320
+ get value() {
321
+ return x.get(F);
322
+ },
323
+ get disabled() {
324
+ return x.get(P);
325
+ },
326
+ onValueChange: (e) => {
327
+ (e === "unavailable" || e === "global" || e === "category") && x.set(F, e, !0);
328
+ },
329
+ children: (e, t) => {
330
+ var n = C(), r = x.first_child(n);
331
+ x.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 = x.comment(), r = x.first_child(n);
337
+ x.component(r, () => A.Value, (e, t) => {
338
+ t(e, {
339
+ placeholder: "Select API access",
340
+ children: (e, t) => {
341
+ x.next();
342
+ var n = x.text();
343
+ x.template_effect(() => x.set_text(n, x.get(F) === "unavailable" ? "Unavailable" : x.get(F) === "global" ? "Global" : "Category API")), x.append(e, n);
344
+ },
345
+ $$slots: { default: !0 }
346
+ });
347
+ }), x.append(e, n);
348
+ },
349
+ $$slots: { default: !0 }
350
+ });
351
+ });
352
+ var i = x.sibling(r, 2);
353
+ x.component(i, () => A.Content, (e, t) => {
354
+ t(e, {
355
+ children: (e, t) => {
356
+ var n = T(), r = x.first_child(n);
357
+ x.component(r, () => A.Item, (e, t) => {
358
+ t(e, {
359
+ value: "unavailable",
360
+ children: (e, t) => {
361
+ x.next();
362
+ var n = x.text("Unavailable");
363
+ x.append(e, n);
364
+ },
365
+ $$slots: { default: !0 }
366
+ });
367
+ });
368
+ var i = x.sibling(r, 2);
369
+ x.component(i, () => A.Item, (e, t) => {
370
+ t(e, {
371
+ value: "global",
372
+ children: (e, t) => {
373
+ x.next();
374
+ var n = x.text("Global");
375
+ x.append(e, n);
376
+ },
377
+ $$slots: { default: !0 }
378
+ });
379
+ });
380
+ var a = x.sibling(i, 2);
381
+ x.component(a, () => A.Item, (e, t) => {
382
+ t(e, {
383
+ value: "category",
384
+ children: (e, t) => {
385
+ x.next();
386
+ var n = x.text("Category API");
387
+ x.append(e, n);
388
+ },
389
+ $$slots: { default: !0 }
390
+ });
391
+ }), x.append(e, n);
392
+ },
393
+ $$slots: { default: !0 }
394
+ });
395
+ }), x.append(e, n);
396
+ },
397
+ $$slots: { default: !0 }
398
+ });
399
+ }), x.reset(c);
400
+ var d = x.sibling(c, 2), f = (e) => {
401
+ var t = Se(), n = x.child(t), r = x.child(n);
402
+ y(r, {
403
+ class: "text-sm",
404
+ children: (e, t) => {
405
+ x.next();
406
+ var n = x.text("Permissions");
407
+ x.append(e, n);
408
+ },
409
+ $$slots: { default: !0 }
410
+ });
411
+ var i = x.sibling(r, 2), a = x.child(i);
412
+ v(a, {
413
+ type: "button",
414
+ variant: "outline",
415
+ size: "sm",
416
+ onclick: () => Z("read-write"),
417
+ children: (e, t) => {
418
+ x.next();
419
+ var n = x.text("Read / Write");
420
+ x.append(e, n);
421
+ },
422
+ $$slots: { default: !0 }
423
+ }), v(x.sibling(a, 2), {
424
+ type: "button",
425
+ variant: "outline",
426
+ size: "sm",
427
+ onclick: () => Z("read-edit-write"),
428
+ children: (e, t) => {
429
+ x.next();
430
+ var n = x.text("Read / Edit / Write");
431
+ x.append(e, n);
432
+ },
433
+ $$slots: { default: !0 }
434
+ }), x.reset(i), x.reset(n);
435
+ var o = x.sibling(n, 2), s = x.child(o), c = x.child(s);
436
+ x.remove_input_defaults(c), x.next(2), x.reset(s);
437
+ var l = x.sibling(s, 2), u = x.child(l);
438
+ x.remove_input_defaults(u), x.next(2), x.reset(l);
439
+ var d = x.sibling(l, 2), f = x.child(d);
440
+ x.remove_input_defaults(f), x.next(2), x.reset(d), x.reset(o), x.reset(t), x.template_effect(() => {
441
+ c.disabled = x.get(P), u.disabled = x.get(P), f.disabled = x.get(P);
442
+ }), x.bind_checked(c, () => x.get(I), (e) => x.set(I, e)), x.bind_checked(u, () => x.get(L), (e) => x.set(L, e)), x.bind_checked(f, () => x.get(R), (e) => x.set(R, e)), x.append(e, t);
443
+ };
444
+ x.if(d, (e) => {
445
+ x.get(F) !== "unavailable" && e(f);
446
+ });
447
+ var p = x.sibling(d, 2), m = (e) => {
448
+ var t = Ee(), n = x.child(t), r = x.child(n);
449
+ y(x.child(r), {
450
+ children: (e, t) => {
451
+ x.next();
452
+ var n = x.text("Category API keys");
453
+ x.append(e, n);
454
+ },
455
+ $$slots: { default: !0 }
456
+ }), x.next(), x.reset(r);
457
+ var i = x.sibling(r, 2);
458
+ {
459
+ let e = x.derived(() => x.get(P) || x.get(H) || k.category.apiMode !== "category");
460
+ v(i, {
461
+ type: "button",
462
+ size: "sm",
463
+ onclick: De,
464
+ get disabled() {
465
+ return x.get(e);
466
+ },
467
+ children: (e, t) => {
468
+ x.next();
469
+ var n = x.text("Create key");
470
+ x.append(e, n);
471
+ },
472
+ $$slots: { default: !0 }
473
+ });
474
+ }
475
+ x.reset(n);
476
+ var a = x.sibling(n, 2), o = (e) => {
477
+ var t = Ce();
478
+ x.append(e, t);
479
+ };
480
+ x.if(a, (e) => {
481
+ k.category.apiMode !== "category" && e(o);
482
+ });
483
+ var s = x.sibling(a, 2), c = (e) => {
484
+ var t = we(), n = x.sibling(x.child(t), 2), r = x.child(n, !0);
485
+ x.reset(n), v(x.sibling(n, 2), {
486
+ type: "button",
487
+ size: "sm",
488
+ variant: "outline",
489
+ class: "mt-2",
490
+ onclick: () => navigator.clipboard.writeText(x.get(K)),
491
+ children: (e, t) => {
492
+ x.next();
493
+ var n = x.text("Copy key");
494
+ x.append(e, n);
495
+ },
496
+ $$slots: { default: !0 }
497
+ }), x.reset(t), x.template_effect(() => x.set_text(r, x.get(K))), x.append(e, t);
498
+ };
499
+ x.if(s, (e) => {
500
+ x.get(K) && e(c);
501
+ });
502
+ var l = x.sibling(s, 2);
503
+ x.each(l, 21, () => x.get(z), (e) => e.id, (e, t) => {
504
+ var n = Te(), r = x.child(n), i = x.child(r);
505
+ x.reset(r);
506
+ var a = x.sibling(r, 2), o = x.child(a);
507
+ {
508
+ let e = x.derived(() => !x.get(t).recoverable && !x.get(B)[x.get(t).id]);
509
+ v(o, {
510
+ type: "button",
511
+ size: "sm",
512
+ variant: "outline",
513
+ onclick: () => ke(x.get(t)),
514
+ get disabled() {
515
+ return x.get(e);
516
+ },
517
+ children: (e, n) => {
518
+ x.next();
519
+ var r = x.text();
520
+ x.template_effect(() => x.set_text(r, x.get(t).recoverable || x.get(B)[x.get(t).id] ? "Copy key" : "Rotate to enable copy")), x.append(e, r);
521
+ },
522
+ $$slots: { default: !0 }
523
+ });
524
+ }
525
+ v(x.sibling(o, 2), {
526
+ type: "button",
527
+ size: "sm",
528
+ variant: "destructive",
529
+ onclick: () => Oe(x.get(t).id),
530
+ get disabled() {
531
+ return x.get(H);
532
+ },
533
+ children: (e, t) => {
534
+ x.next();
535
+ var n = x.text("Revoke");
536
+ x.append(e, n);
537
+ },
538
+ $$slots: { default: !0 }
539
+ }), x.reset(a), x.reset(n), x.template_effect(() => x.set_text(i, `${x.get(t).name ?? ""} · ${x.get(t).prefix ?? ""}…`)), x.append(e, n);
540
+ }), x.reset(l), x.reset(t), x.append(e, t);
541
+ };
542
+ x.if(p, (e) => {
543
+ k.mode === "edit" && x.get(F) === "category" && k.category?.id && e(m);
544
+ }), x.reset(t), x.event("submit", t, Q), x.append(e, t);
545
+ }, g = (e) => {
546
+ var t = w(), n = x.child(t, !0);
547
+ x.reset(t), x.template_effect(() => x.set_text(n, x.get(N))), x.append(e, t);
548
+ };
549
+ x.if(f, (e) => {
550
+ x.get(G) ? e(p) : x.get(U) ? e(m, 1) : x.get(Y) ? x.get(N) && e(g, 3) : e(h, 2);
551
+ }), ne(x.sibling(f, 2), {
552
+ class: "gap-2 max-sm:flex-col max-sm:items-stretch",
553
+ children: (e, t) => {
554
+ var r = C(), i = x.first_child(r), a = (e) => {
555
+ v(e, {
556
+ variant: "outline",
557
+ type: "button",
558
+ onclick: $,
559
+ get disabled() {
560
+ return x.get(P);
561
+ },
562
+ children: (e, t) => {
563
+ x.next();
564
+ var n = x.text();
565
+ x.template_effect((e) => x.set_text(n, e), [() => u()]), x.append(e, n);
566
+ },
567
+ $$slots: { default: !0 }
568
+ });
569
+ };
570
+ x.if(i, (e) => {
571
+ !x.get(U) && !x.get(G) && e(a);
572
+ });
573
+ var o = x.sibling(i, 2);
574
+ {
575
+ let e = x.derived(() => x.get(Y) ? "button" : "submit"), t = x.derived(() => x.get(Y) ? "destructive" : "default"), r = x.derived(() => x.get(U) || x.get(G) ? $ : Q), i = x.derived(() => x.get(P) || !x.get(Y) && !x.get(U) && !x.get(G) && x.get(J).length === 0);
576
+ v(o, {
577
+ get type() {
578
+ return x.get(e);
579
+ },
580
+ get variant() {
581
+ return x.get(t);
582
+ },
583
+ get onclick() {
584
+ return x.get(r);
585
+ },
586
+ get disabled() {
587
+ return x.get(i);
588
+ },
589
+ children: (e, t) => {
590
+ var r = D(), i = x.first_child(r), a = (e) => {
591
+ n(e, { class: "mr-1 size-4 animate-spin" });
592
+ };
593
+ x.if(i, (e) => {
594
+ x.get(P) && e(a);
595
+ });
596
+ var o = x.sibling(i);
597
+ x.template_effect(() => x.set_text(o, ` ${(x.get(U) || x.get(G) ? "Done" : x.get(je)) ?? ""}`)), x.append(e, r);
598
+ },
599
+ $$slots: { default: !0 }
600
+ });
601
+ }
602
+ x.append(e, r);
603
+ },
604
+ $$slots: { default: !0 }
605
+ }), x.append(r, a);
606
+ },
607
+ $$slots: { default: !0 }
608
+ }), x.pop();
609
+ }
610
+ //#endregion
611
+ export { O as t };
@@ -1,5 +1,5 @@
1
- import { a as e, i as t, n, o as r, r as i, t as a } from "./dialog-D6NxYVmy.js";
2
- import { t as o } from "./textarea-i1720bE7.js";
1
+ import { a as e, i as t, n, o as r, r as i, t as a } from "./dialog-Bevp9mmM.js";
2
+ import { t as o } from "./textarea-DOAE-h42.js";
3
3
  import "svelte/internal/disclose-version";
4
4
  import * as s from "svelte/internal/client";
5
5
  import "svelte/internal/flags/legacy";