@drawnagency/primitives 0.1.88 → 0.1.89

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 (66) hide show
  1. package/dist/{chunk-PTVY3Q7P.js → chunk-2QXJ2KGB.js} +1 -1
  2. package/dist/{chunk-DRCPDOW3.js → chunk-CZ3YXGK5.js} +59 -0
  3. package/dist/{chunk-NEDOJHHR.js → chunk-J75XGXYD.js} +2 -2
  4. package/dist/{chunk-SK6GGTTO.js → chunk-L2MAJKKC.js} +3 -3
  5. package/dist/{chunk-H2FENAQH.js → chunk-MVX4ULYE.js} +6 -6
  6. package/dist/{chunk-EO7K45GV.js → chunk-NV4R6VHN.js} +1 -1
  7. package/dist/{chunk-XDG2K6UT.js → chunk-QFV5TSPO.js} +1 -1
  8. package/dist/{chunk-OEL57NYV.js → chunk-VK5KNH73.js} +25 -1
  9. package/dist/{chunk-XPUBUR64.js → chunk-WCBYXNAG.js} +27 -2
  10. package/dist/{chunk-WA3HFN54.js → chunk-Y24T75HT.js} +1 -1
  11. package/dist/components/chat/ChatPanel.d.ts +20 -3
  12. package/dist/components/chat/ChatPanel.d.ts.map +1 -1
  13. package/dist/components/chat/ChatWidget.d.ts +7 -1
  14. package/dist/components/chat/ChatWidget.d.ts.map +1 -1
  15. package/dist/components/chat/chat-history.d.ts +24 -0
  16. package/dist/components/chat/chat-history.d.ts.map +1 -0
  17. package/dist/components/editor/index.js +4 -4
  18. package/dist/components/primitives/index.js +5 -5
  19. package/dist/components/sections/brand-guide.js +5 -5
  20. package/dist/components/sections/register-schemas.js +8 -8
  21. package/dist/components/sections/register.js +8 -8
  22. package/dist/components/shared/Navigation.d.ts +6 -1
  23. package/dist/components/shared/Navigation.d.ts.map +1 -1
  24. package/dist/components/shell/EditorShell.d.ts.map +1 -1
  25. package/dist/components/shell/MediaLibraryContext.d.ts +3 -1
  26. package/dist/components/shell/MediaLibraryContext.d.ts.map +1 -1
  27. package/dist/components/shell/SiteSettingsChatbot.d.ts.map +1 -1
  28. package/dist/hooks/useMediaPipeline.d.ts +5 -1
  29. package/dist/hooks/useMediaPipeline.d.ts.map +1 -1
  30. package/dist/index.js +14 -4
  31. package/dist/lib/chatbot.d.ts +10 -0
  32. package/dist/lib/chatbot.d.ts.map +1 -0
  33. package/dist/lib/contrast.d.ts +5 -0
  34. package/dist/lib/contrast.d.ts.map +1 -1
  35. package/dist/lib/index.d.ts +2 -1
  36. package/dist/lib/index.d.ts.map +1 -1
  37. package/dist/lib/index.js +10 -2
  38. package/dist/media/compose-preview.d.ts +23 -0
  39. package/dist/media/compose-preview.d.ts.map +1 -0
  40. package/dist/media/index.d.ts +1 -0
  41. package/dist/media/index.d.ts.map +1 -1
  42. package/dist/media/index.js +4 -2
  43. package/dist/media/preview-inputs.d.ts +31 -0
  44. package/dist/media/preview-inputs.d.ts.map +1 -0
  45. package/dist/schemas/index.js +2 -2
  46. package/dist/schemas/media.d.ts +2 -0
  47. package/dist/schemas/media.d.ts.map +1 -1
  48. package/dist/schemas/site-config.d.ts +12 -0
  49. package/dist/schemas/site-config.d.ts.map +1 -1
  50. package/package.json +1 -1
  51. package/src/components/chat/ChatPanel.tsx +437 -65
  52. package/src/components/chat/ChatWidget.tsx +90 -32
  53. package/src/components/chat/chat-history.ts +105 -0
  54. package/src/components/shared/Navigation.tsx +18 -5
  55. package/src/components/shell/EditorShell.tsx +71 -1
  56. package/src/components/shell/MediaLibraryContext.tsx +1 -1
  57. package/src/components/shell/SiteSettingsChatbot.tsx +47 -0
  58. package/src/hooks/useMediaPipeline.ts +7 -3
  59. package/src/lib/chatbot.ts +30 -0
  60. package/src/lib/contrast.ts +12 -0
  61. package/src/lib/index.ts +2 -1
  62. package/src/media/compose-preview.ts +90 -0
  63. package/src/media/index.ts +1 -0
  64. package/src/media/preview-inputs.ts +77 -0
  65. package/src/schemas/media.ts +3 -0
  66. package/src/schemas/site-config.ts +26 -1
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EditablePlainText
3
- } from "./chunk-NEDOJHHR.js";
3
+ } from "./chunk-J75XGXYD.js";
4
4
  import {
5
5
  Button,
6
6
  usePages
@@ -308,6 +308,64 @@ function generateVideoPoster(blob, quality) {
308
308
  });
309
309
  }
310
310
 
311
+ // src/media/compose-preview.ts
312
+ var WIDTH = 1200;
313
+ var HEIGHT = 630;
314
+ async function composePreviewImage(inputs) {
315
+ const canvas = document.createElement("canvas");
316
+ canvas.width = WIDTH;
317
+ canvas.height = HEIGHT;
318
+ const ctx = canvas.getContext("2d");
319
+ if (!ctx) throw new Error("2D canvas context unavailable");
320
+ ctx.fillStyle = inputs.background;
321
+ ctx.fillRect(0, 0, WIDTH, HEIGHT);
322
+ let drewLogo = false;
323
+ if (inputs.mode === "logo" && inputs.logoUrl) {
324
+ try {
325
+ const img = await loadImage(inputs.logoUrl);
326
+ if (!(img.width > 0 && img.height > 0)) {
327
+ throw new Error("Logo image has no intrinsic size");
328
+ }
329
+ const maxW = WIDTH * 0.6;
330
+ const maxH = HEIGHT * 0.5;
331
+ const scale = Math.min(maxW / img.width, maxH / img.height);
332
+ const w = img.width * scale;
333
+ const h = img.height * scale;
334
+ ctx.filter = inputs.invertLogo ? "invert(1)" : "none";
335
+ ctx.drawImage(img, (WIDTH - w) / 2, (HEIGHT - h) / 2, w, h);
336
+ ctx.filter = "none";
337
+ drewLogo = true;
338
+ } catch {
339
+ }
340
+ }
341
+ if (!drewLogo) {
342
+ if (document.fonts?.ready) await document.fonts.ready;
343
+ await document.fonts.load(`600 84px ${inputs.headingFont}`).catch(() => {
344
+ });
345
+ ctx.fillStyle = inputs.textColor;
346
+ ctx.textAlign = "center";
347
+ ctx.textBaseline = "middle";
348
+ ctx.font = `600 84px ${inputs.headingFont}, system-ui, sans-serif`;
349
+ ctx.fillText(inputs.siteName, WIDTH / 2, HEIGHT / 2, WIDTH * 0.86);
350
+ }
351
+ return await new Promise((resolve, reject) => {
352
+ canvas.toBlob(
353
+ (blob) => blob ? resolve(blob) : reject(new Error("toBlob returned null")),
354
+ "image/webp",
355
+ 0.9
356
+ );
357
+ });
358
+ }
359
+ function loadImage(url) {
360
+ return new Promise((resolve, reject) => {
361
+ const img = new Image();
362
+ img.crossOrigin = "anonymous";
363
+ img.onload = () => resolve(img);
364
+ img.onerror = () => reject(new Error(`failed to load ${url}`));
365
+ img.src = url;
366
+ });
367
+ }
368
+
311
369
  // src/media/index.ts
312
370
  var MEDIA_KEY = /* @__PURE__ */ Symbol.for("@drawnagency/primitives/media");
313
371
  var _g = globalThis;
@@ -339,6 +397,7 @@ export {
339
397
  rebindImageRef,
340
398
  resolveLogo,
341
399
  generateVideoPoster,
400
+ composePreviewImage,
342
401
  setMediaProvider,
343
402
  getMediaProvider
344
403
  };
@@ -6,10 +6,10 @@ import {
6
6
  SettingsIcon,
7
7
  useMediaLibrary,
8
8
  useResolvedMedia
9
- } from "./chunk-EO7K45GV.js";
9
+ } from "./chunk-NV4R6VHN.js";
10
10
  import {
11
11
  rebindImageRef
12
- } from "./chunk-DRCPDOW3.js";
12
+ } from "./chunk-CZ3YXGK5.js";
13
13
  import {
14
14
  cn
15
15
  } from "./chunk-7EOSDFS3.js";
@@ -9,13 +9,13 @@ import {
9
9
  MediaBlock,
10
10
  containerGridClass,
11
11
  useEditableCollection
12
- } from "./chunk-NEDOJHHR.js";
12
+ } from "./chunk-J75XGXYD.js";
13
13
  import {
14
14
  AddIcon,
15
15
  DeleteIcon,
16
16
  DragHandle,
17
17
  IconButton
18
- } from "./chunk-EO7K45GV.js";
18
+ } from "./chunk-NV4R6VHN.js";
19
19
  import {
20
20
  DEFAULT_LINK,
21
21
  LinkValueSchema
@@ -30,7 +30,7 @@ import {
30
30
  import {
31
31
  HexColorSchema,
32
32
  SingleMediaReferenceSchema
33
- } from "./chunk-XPUBUR64.js";
33
+ } from "./chunk-WCBYXNAG.js";
34
34
  import {
35
35
  defineSection
36
36
  } from "./chunk-VKAGMEKE.js";
@@ -3,7 +3,7 @@ import {
3
3
  pluralize,
4
4
  stripHtmlToPlainText,
5
5
  truncate
6
- } from "./chunk-SK6GGTTO.js";
6
+ } from "./chunk-L2MAJKKC.js";
7
7
  import {
8
8
  DeleteButton,
9
9
  DragHandle,
@@ -15,11 +15,11 @@ import {
15
15
  buildBlockDropData,
16
16
  canDropBlock,
17
17
  isBlockDragData
18
- } from "./chunk-XDG2K6UT.js";
18
+ } from "./chunk-QFV5TSPO.js";
19
19
  import {
20
20
  EditableRichText,
21
21
  defineHeadingSection
22
- } from "./chunk-PTVY3Q7P.js";
22
+ } from "./chunk-2QXJ2KGB.js";
23
23
  import {
24
24
  EditablePlainText,
25
25
  ImageDropZone,
@@ -28,11 +28,11 @@ import {
28
28
  colSpanClass,
29
29
  containerGridClass,
30
30
  spacerHiddenClass
31
- } from "./chunk-NEDOJHHR.js";
31
+ } from "./chunk-J75XGXYD.js";
32
32
  import {
33
33
  useMediaLibrary,
34
34
  useResolvedMedia
35
- } from "./chunk-EO7K45GV.js";
35
+ } from "./chunk-NV4R6VHN.js";
36
36
  import {
37
37
  embedUrl
38
38
  } from "./chunk-Y4JQGO6G.js";
@@ -51,7 +51,7 @@ import {
51
51
  } from "./chunk-TZQPOR5A.js";
52
52
  import {
53
53
  SingleMediaReferenceSchema
54
- } from "./chunk-XPUBUR64.js";
54
+ } from "./chunk-WCBYXNAG.js";
55
55
  import {
56
56
  defineSection,
57
57
  getSection
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getMediaProvider
3
- } from "./chunk-DRCPDOW3.js";
3
+ } from "./chunk-CZ3YXGK5.js";
4
4
  import {
5
5
  cn
6
6
  } from "./chunk-7EOSDFS3.js";
@@ -14,7 +14,7 @@ import {
14
14
  SettingsIcon,
15
15
  useMediaLibrary,
16
16
  useResolvedMedia
17
- } from "./chunk-EO7K45GV.js";
17
+ } from "./chunk-NV4R6VHN.js";
18
18
  import {
19
19
  cn
20
20
  } from "./chunk-7EOSDFS3.js";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-TZQPOR5A.js";
10
10
  import {
11
11
  IndexSchema
12
- } from "./chunk-XPUBUR64.js";
12
+ } from "./chunk-WCBYXNAG.js";
13
13
  import {
14
14
  getAllSchemas
15
15
  } from "./chunk-VKAGMEKE.js";
@@ -18,6 +18,19 @@ import {
18
18
  blockDepth
19
19
  } from "./chunk-NSCT3AMV.js";
20
20
 
21
+ // src/lib/chatbot.ts
22
+ var DEFAULT_CHATBOT_NAME = "Portal Assistant";
23
+ function resolveChatbotName(chatbot, audience) {
24
+ const perAudience = audience !== null ? chatbot.audienceNames?.[audience] : void 0;
25
+ if (typeof perAudience === "string" && perAudience.trim()) return perAudience.trim();
26
+ if (typeof chatbot.name === "string" && chatbot.name.trim()) return chatbot.name.trim();
27
+ return DEFAULT_CHATBOT_NAME;
28
+ }
29
+ function resolveThinkingPhrases(phrases) {
30
+ const list = (phrases ?? []).filter((p) => typeof p === "string").map((p) => p.trim()).filter(Boolean).map((p) => `${p}\u2026`);
31
+ return list.length > 0 ? list : ["Thinking\u2026"];
32
+ }
33
+
21
34
  // src/lib/contrast.ts
22
35
  function deriveContrast(hex) {
23
36
  const h = hex.replace("#", "");
@@ -28,6 +41,13 @@ function deriveContrast(hex) {
28
41
  const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
29
42
  return luminance >= 0.5 ? "#1a1a1a" : "#f0f0f0";
30
43
  }
44
+ function contrastColor(hex) {
45
+ const h = hex.replace("#", "");
46
+ const r = parseInt(h.slice(0, 2), 16);
47
+ const g = parseInt(h.slice(2, 4), 16);
48
+ const b = parseInt(h.slice(4, 6), 16);
49
+ return (r * 299 + g * 587 + b * 114) / 1e3 > 150 ? "#1a1a1a" : "#ffffff";
50
+ }
31
51
 
32
52
  // src/lib/grid.ts
33
53
  var gridColsClass = {
@@ -139,7 +159,11 @@ async function loadSiteContent(contentDir) {
139
159
  }
140
160
 
141
161
  export {
162
+ DEFAULT_CHATBOT_NAME,
163
+ resolveChatbotName,
164
+ resolveThinkingPhrases,
142
165
  deriveContrast,
166
+ contrastColor,
143
167
  gridColsClass,
144
168
  buildGoogleFontsUrl,
145
169
  formatTimestamp,
@@ -100,7 +100,10 @@ var MediaItemSchema = z2.object({
100
100
  duration: z2.number().positive().optional(),
101
101
  // Display folder (MediaFolderSchema key). Absent = root/unfiled. NOT the
102
102
  // git storage dir — that's `folder` above, which never changes.
103
- folderId: z2.string().optional()
103
+ folderId: z2.string().optional(),
104
+ // System-generated assets (e.g. the Phase 3 social-preview raster) set this
105
+ // so the media-library UI can exclude them. Absent on all user uploads.
106
+ hidden: z2.boolean().optional()
104
107
  });
105
108
  var ImageManifestSchema = z2.object({
106
109
  images: z2.record(z2.string(), MediaItemSchema),
@@ -239,6 +242,15 @@ var ChatbotTaskSchema = z3.object({
239
242
  });
240
243
  var ChatbotConfigSchema = z3.object({
241
244
  enabled: z3.boolean().default(false),
245
+ // Assistant display name shown in the widget header and used in the system
246
+ // prompt. Blank falls back to "Portal Assistant" (resolveChatbotName).
247
+ name: z3.string().max(60).default("Portal Assistant"),
248
+ // Per-audience name overrides, keyed by audience name — same inert-when-
249
+ // deselected semantics as audiencePrompts.
250
+ audienceNames: z3.record(z3.string(), z3.string().max(60)).default({}),
251
+ // Brand-flavored waiting phrases, shown (with "…" appended) while the
252
+ // assistant streams no text yet. Empty = the widget's "Thinking…" default.
253
+ thinkingPhrases: z3.array(z3.string().max(80)).max(30).default([]),
242
254
  systemPrompt: z3.string().max(8e3).default(""),
243
255
  // Audience names the widget is shown to — strict opt-in: [] = no viewer
244
256
  // sees it (editors always can via /edit). Gates: [...slug].astro + /api/chat.
@@ -288,10 +300,23 @@ var SiteConfigSchema = z3.object({
288
300
  showInNav: z3.boolean().default(true)
289
301
  }).nullable().default(null),
290
302
  media: MediaConfigSchema.default(MediaConfigSchema.parse({})),
303
+ // Composed social-preview raster, stored as a media-library reference so it
304
+ // participates in usage tracking + GC protection. Composed client-side at
305
+ // save time (Phase 3). `width`/`height` are the ACTUAL served variant size
306
+ // (the /api/media route only serves exact generated-variant widths), so the
307
+ // og:image URL + dimensions are correct. Defaults null so pre-existing
308
+ // configs keep parsing and sites without a preview emit no og:image tags.
309
+ previewImage: z3.object({
310
+ imageId: z3.string(),
311
+ width: z3.number().int().positive(),
312
+ height: z3.number().int().positive()
313
+ }).nullable().default(null),
314
+ // Optional site description → og:description + <meta name="description">.
315
+ description: z3.string().max(300).nullable().default(null),
291
316
  // Brand chatbot config (editor-owned; the platform kill switch lives in the
292
317
  // sites table, not here). Every field defaults so pre-existing
293
318
  // site-config.json files keep parsing.
294
- chatbot: ChatbotConfigSchema.default({ enabled: false, systemPrompt: "", audiences: [], tasks: [], audiencePrompts: {} })
319
+ chatbot: ChatbotConfigSchema.default({ enabled: false, name: "Portal Assistant", audienceNames: {}, thinkingPhrases: [], systemPrompt: "", audiences: [], tasks: [], audiencePrompts: {} })
295
320
  });
296
321
 
297
322
  export {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  HexColorSchema
3
- } from "./chunk-XPUBUR64.js";
3
+ } from "./chunk-WCBYXNAG.js";
4
4
 
5
5
  // src/schemas/audience.ts
6
6
  import { z } from "zod";
@@ -2,6 +2,11 @@ export interface ChatMessage {
2
2
  role: "user" | "assistant";
3
3
  content: string;
4
4
  }
5
+ /** How the conversation is framed on screen:
6
+ * - "floating": the compact anchored panel (/edit FAB + settings test chat)
7
+ * - "docked": full-height right sidebar (viewer, >=768px)
8
+ * - "sheet": bottom sheet (viewer, phones) */
9
+ export type ChatPanelMode = "floating" | "docked" | "sheet";
5
10
  /** Assistant markdown → sanitized HTML. Callers MUST gate on the sanitizer
6
11
  * having loaded (`mdReady`) — before then sanitizeHtml passes raw HTML
7
12
  * through, and model output is untrusted. Exported for tests. */
@@ -13,7 +18,7 @@ export declare function streamChat(body: {
13
18
  taskId?: string;
14
19
  draftChatbot?: unknown;
15
20
  simulateAudience?: string;
16
- }, onText: (text: string) => void): Promise<{
21
+ }, onText: (text: string) => void, signal?: AbortSignal): Promise<{
17
22
  ok: true;
18
23
  truncated: boolean;
19
24
  } | {
@@ -21,10 +26,14 @@ export declare function streamChat(body: {
21
26
  error: string;
22
27
  retryAfterMs?: number;
23
28
  }>;
24
- export default function ChatPanel({ open, onClose, siteName, tasks, isEditor, draftChatbot, simulateAudience, variant }: {
29
+ export default function ChatPanel({ open, onClose, siteName, botName, thinkingPhrases, tasks, isEditor, draftChatbot, simulateAudience, variant, mode, focusComposer, audience }: {
25
30
  open: boolean;
26
31
  onClose: () => void;
27
32
  siteName: string;
33
+ /** Resolved assistant display name (per-audience, server-side). */
34
+ botName: string;
35
+ /** Raw configured phrases; "…" appending + fallback happen here. */
36
+ thinkingPhrases?: string[];
28
37
  tasks: {
29
38
  id: string;
30
39
  label: string;
@@ -34,7 +43,15 @@ export default function ChatPanel({ open, onClose, siteName, tasks, isEditor, dr
34
43
  draftChatbot?: unknown;
35
44
  /** Configurator test panel only: preview this audience's prompt overlay. */
36
45
  simulateAudience?: string;
37
- /** Anchors the panel above its launcher: viewer corner FAB vs /edit FAB column. */
46
+ /** Floating mode only — anchors the panel above its launcher: viewer corner
47
+ * FAB vs /edit FAB column. */
38
48
  variant?: "viewer" | "editor";
49
+ mode?: ChatPanelMode;
50
+ /** Focus the composer when opened (explicit user open on desktop). Never
51
+ * used for the sheet — autofocusing there pops the keyboard over content. */
52
+ focusComposer?: boolean;
53
+ /** Viewer's audience (null for editor sessions) — tags history entries so
54
+ * the list never shows another audience's transcripts. */
55
+ audience?: string | null;
39
56
  }): import("react/jsx-runtime").JSX.Element | null;
40
57
  //# sourceMappingURL=ChatPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatPanel.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAoB5E;;kEAEkE;AAClE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEhD;AAcD,8EAA8E;AAC9E,wBAAsB,UAAU,CAC9B,IAAI,EAAE;IAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,EACxH,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC7B,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyCjG;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAkB,EAAE,EAAE;IAClI,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mFAAmF;IACnF,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC/B,kDA8JA"}
1
+ {"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatPanel.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAE5E;;;kDAGkD;AAClD,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AA8C5D;;kEAEkE;AAClE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEhD;AAcD,8EAA8E;AAC9E,wBAAsB,UAAU,CAC9B,IAAI,EAAE;IAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,EACxH,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA6CjG;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAkB,EAAE,IAAiB,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE;IACxM,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;mCAC+B;IAC/B,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;kFAC8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;+DAC2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,kDA8dA"}
@@ -1,5 +1,9 @@
1
1
  export interface ChatWidgetProps {
2
2
  siteName: string;
3
+ /** Resolved assistant display name (per-audience, resolved server-side). */
4
+ botName: string;
5
+ /** Configured waiting phrases ("…" appended in the panel). */
6
+ thinkingPhrases?: string[];
3
7
  /** Already audience-filtered server-side — never pass unfiltered config tasks. */
4
8
  tasks: {
5
9
  id: string;
@@ -9,6 +13,8 @@ export interface ChatWidgetProps {
9
13
  /** Editor-only: chat against the current (unsaved) chatbot config. */
10
14
  draftChatbot?: unknown;
11
15
  variant?: "viewer" | "editor";
16
+ /** Viewer's audience (null for editor sessions) — tags local chat history. */
17
+ audience?: string | null;
12
18
  }
13
- export default function ChatWidget({ siteName, tasks, isEditor, draftChatbot, variant }: ChatWidgetProps): import("react/jsx-runtime").JSX.Element;
19
+ export default function ChatWidget({ siteName, botName, thinkingPhrases, tasks, isEditor, draftChatbot, variant, audience }: ChatWidgetProps): import("react/jsx-runtime").JSX.Element;
14
20
  //# sourceMappingURL=ChatWidget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatWidget.tsx"],"names":[],"mappings":"AAcA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC/B;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAkB,EAAE,EAAE,eAAe,2CA2ClH"}
1
+ {"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatWidget.tsx"],"names":[],"mappings":"AAoBA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,kFAAkF;IAClF,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAkB,EAAE,QAAQ,EAAE,EAAE,eAAe,2CAyFtJ"}
@@ -0,0 +1,24 @@
1
+ import type { ChatMessage } from "./ChatPanel";
2
+ export declare const HISTORY_RETENTION_DAYS = 30;
3
+ export declare const HISTORY_MAX_UNPINNED = 20;
4
+ export interface StoredConversation {
5
+ id: string;
6
+ title: string;
7
+ /** Audience tag ("editor" for editor sessions on viewer pages). */
8
+ audience: string;
9
+ pinned: boolean;
10
+ updatedAt: number;
11
+ messages: ChatMessage[];
12
+ }
13
+ /** Current audience's conversations: pinned first, then newest first. */
14
+ export declare function loadHistory(audience: string, now?: number): StoredConversation[];
15
+ /** Create/refresh a conversation's archive entry (preserves its pinned flag)
16
+ * and apply retention. No-ops on empty transcripts. */
17
+ export declare function upsertConversation(input: {
18
+ id: string;
19
+ audience: string;
20
+ messages: ChatMessage[];
21
+ }, now?: number): void;
22
+ export declare function setConversationPinned(id: string, pinned: boolean): void;
23
+ export declare function removeConversation(id: string): void;
24
+ //# sourceMappingURL=chat-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-history.d.ts","sourceRoot":"","sources":["../../../src/components/chat/chat-history.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAIvC,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAyCD,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,kBAAkB,EAAE,CAKpF;AAED;wDACwD;AACxD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,WAAW,EAAE,CAAA;CAAE,EAChE,GAAG,SAAa,GACf,IAAI,CAeN;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAEvE;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEnD"}
@@ -11,20 +11,20 @@ import {
11
11
  buildBlockDropData,
12
12
  canDropBlock,
13
13
  isBlockDragData
14
- } from "../../chunk-XDG2K6UT.js";
14
+ } from "../../chunk-QFV5TSPO.js";
15
15
  import "../../chunk-5THS4K5D.js";
16
16
  import "../../chunk-ZSPCE6MZ.js";
17
17
  import {
18
18
  AddIcon,
19
19
  IconButton
20
- } from "../../chunk-EO7K45GV.js";
21
- import "../../chunk-DRCPDOW3.js";
20
+ } from "../../chunk-NV4R6VHN.js";
21
+ import "../../chunk-CZ3YXGK5.js";
22
22
  import "../../chunk-677NTHAZ.js";
23
23
  import {
24
24
  cn
25
25
  } from "../../chunk-7EOSDFS3.js";
26
26
  import "../../chunk-YBVK254P.js";
27
- import "../../chunk-XPUBUR64.js";
27
+ import "../../chunk-WCBYXNAG.js";
28
28
  import "../../chunk-FM4M4Q2W.js";
29
29
  import "../../chunk-JSBRDJBE.js";
30
30
 
@@ -2,7 +2,7 @@ import {
2
2
  EditableRichText,
3
3
  LinkPopover,
4
4
  defineHeadingSection
5
- } from "../../chunk-PTVY3Q7P.js";
5
+ } from "../../chunk-2QXJ2KGB.js";
6
6
  import {
7
7
  EditableGrid,
8
8
  EditablePlainText,
@@ -10,20 +10,20 @@ import {
10
10
  MediaBlock,
11
11
  ResolvedMedia,
12
12
  useEditableCollection
13
- } from "../../chunk-NEDOJHHR.js";
13
+ } from "../../chunk-J75XGXYD.js";
14
14
  import "../../chunk-ZSPCE6MZ.js";
15
15
  import {
16
16
  DeleteIcon,
17
17
  DragHandle,
18
18
  IconButton
19
- } from "../../chunk-EO7K45GV.js";
20
- import "../../chunk-DRCPDOW3.js";
19
+ } from "../../chunk-NV4R6VHN.js";
20
+ import "../../chunk-CZ3YXGK5.js";
21
21
  import "../../chunk-53DKVAB6.js";
22
22
  import {
23
23
  cn
24
24
  } from "../../chunk-7EOSDFS3.js";
25
25
  import "../../chunk-YBVK254P.js";
26
- import "../../chunk-XPUBUR64.js";
26
+ import "../../chunk-WCBYXNAG.js";
27
27
  import "../../chunk-VKAGMEKE.js";
28
28
  import "../../chunk-FM4M4Q2W.js";
29
29
  import "../../chunk-JSBRDJBE.js";
@@ -2,16 +2,16 @@ import {
2
2
  ColorItemSchema,
3
3
  ColorSpaceSchema,
4
4
  brandGuideSectionDefs
5
- } from "../../chunk-SK6GGTTO.js";
5
+ } from "../../chunk-L2MAJKKC.js";
6
6
  import "../../chunk-5THS4K5D.js";
7
- import "../../chunk-NEDOJHHR.js";
8
- import "../../chunk-EO7K45GV.js";
9
- import "../../chunk-DRCPDOW3.js";
7
+ import "../../chunk-J75XGXYD.js";
8
+ import "../../chunk-NV4R6VHN.js";
9
+ import "../../chunk-CZ3YXGK5.js";
10
10
  import "../../chunk-PZJL2S3Z.js";
11
11
  import "../../chunk-WDSVHKAH.js";
12
12
  import "../../chunk-7EOSDFS3.js";
13
13
  import "../../chunk-YBVK254P.js";
14
- import "../../chunk-XPUBUR64.js";
14
+ import "../../chunk-WCBYXNAG.js";
15
15
  import "../../chunk-VKAGMEKE.js";
16
16
  import "../../chunk-FM4M4Q2W.js";
17
17
  import "../../chunk-JSBRDJBE.js";
@@ -1,22 +1,22 @@
1
1
  import {
2
2
  allSectionDefs
3
- } from "../../chunk-H2FENAQH.js";
4
- import "../../chunk-SK6GGTTO.js";
5
- import "../../chunk-XDG2K6UT.js";
3
+ } from "../../chunk-MVX4ULYE.js";
4
+ import "../../chunk-L2MAJKKC.js";
5
+ import "../../chunk-QFV5TSPO.js";
6
6
  import "../../chunk-5THS4K5D.js";
7
- import "../../chunk-PTVY3Q7P.js";
8
- import "../../chunk-NEDOJHHR.js";
7
+ import "../../chunk-2QXJ2KGB.js";
8
+ import "../../chunk-J75XGXYD.js";
9
9
  import "../../chunk-ZSPCE6MZ.js";
10
- import "../../chunk-EO7K45GV.js";
10
+ import "../../chunk-NV4R6VHN.js";
11
11
  import "../../chunk-Y4JQGO6G.js";
12
- import "../../chunk-DRCPDOW3.js";
12
+ import "../../chunk-CZ3YXGK5.js";
13
13
  import "../../chunk-PZJL2S3Z.js";
14
14
  import "../../chunk-WDSVHKAH.js";
15
15
  import "../../chunk-53DKVAB6.js";
16
16
  import "../../chunk-7EOSDFS3.js";
17
17
  import "../../chunk-YBVK254P.js";
18
18
  import "../../chunk-TZQPOR5A.js";
19
- import "../../chunk-XPUBUR64.js";
19
+ import "../../chunk-WCBYXNAG.js";
20
20
  import {
21
21
  registerRichText,
22
22
  registerSchema
@@ -1,22 +1,22 @@
1
1
  import {
2
2
  allSectionDefs
3
- } from "../../chunk-H2FENAQH.js";
4
- import "../../chunk-SK6GGTTO.js";
5
- import "../../chunk-XDG2K6UT.js";
3
+ } from "../../chunk-MVX4ULYE.js";
4
+ import "../../chunk-L2MAJKKC.js";
5
+ import "../../chunk-QFV5TSPO.js";
6
6
  import "../../chunk-5THS4K5D.js";
7
- import "../../chunk-PTVY3Q7P.js";
8
- import "../../chunk-NEDOJHHR.js";
7
+ import "../../chunk-2QXJ2KGB.js";
8
+ import "../../chunk-J75XGXYD.js";
9
9
  import "../../chunk-ZSPCE6MZ.js";
10
- import "../../chunk-EO7K45GV.js";
10
+ import "../../chunk-NV4R6VHN.js";
11
11
  import "../../chunk-Y4JQGO6G.js";
12
- import "../../chunk-DRCPDOW3.js";
12
+ import "../../chunk-CZ3YXGK5.js";
13
13
  import "../../chunk-PZJL2S3Z.js";
14
14
  import "../../chunk-WDSVHKAH.js";
15
15
  import "../../chunk-53DKVAB6.js";
16
16
  import "../../chunk-7EOSDFS3.js";
17
17
  import "../../chunk-YBVK254P.js";
18
18
  import "../../chunk-TZQPOR5A.js";
19
- import "../../chunk-XPUBUR64.js";
19
+ import "../../chunk-WCBYXNAG.js";
20
20
  import {
21
21
  registerSection
22
22
  } from "../../chunk-VKAGMEKE.js";
@@ -10,7 +10,12 @@ interface Props {
10
10
  invertInDark: boolean;
11
11
  } | null;
12
12
  onPageSelect?: (pageId: string) => void;
13
+ /** Viewport width where the drawer becomes a fixed sidebar. Pages that dock
14
+ * the chat sidebar pass "xl" so tablet widths keep the hamburger and give
15
+ * the freed column to chat. Static per page render — deliberately keyed to
16
+ * chat being ENABLED, not open, so the nav never flaps when chat toggles. */
17
+ desktopBreakpoint?: "lg" | "xl";
13
18
  }
14
- export default function Navigation({ siteNav: initialNav, siteName, darkMode, lastUpdated, logo, onPageSelect }: Props): import("react/jsx-runtime").JSX.Element;
19
+ export default function Navigation({ siteNav: initialNav, siteName, darkMode, lastUpdated, logo, onPageSelect, desktopBreakpoint }: Props): import("react/jsx-runtime").JSX.Element;
15
20
  export {};
16
21
  //# sourceMappingURL=Navigation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Navigation.d.ts","sourceRoot":"","sources":["../../../src/components/shared/Navigation.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAW,MAAM,eAAe,CAAC;AAOtD,UAAU,KAAK;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;IACxC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAGlF,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,KAAK,2CAyPrH"}
1
+ {"version":3,"file":"Navigation.d.ts","sourceRoot":"","sources":["../../../src/components/shared/Navigation.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAW,MAAM,eAAe,CAAC;AAOtD,UAAU,KAAK;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;IACxC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAGlF,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;kFAG8E;IAC9E,iBAAiB,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACjC;AAQD,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,iBAAwB,EAAE,EAAE,KAAK,2CA2P/I"}
@@ -1 +1 @@
1
- {"version":3,"file":"EditorShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/EditorShell.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AASjD,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAuDtF,OAAO,KAAK,EAAE,eAAe,EAA2D,MAAM,oBAAoB,CAAC;AAmCnH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAoBxD,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;IAIhB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,YAAY,EAAE;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;IAIhE,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAKjC,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,OAAO,EACP,YAAY,EACZ,MAAM,EACN,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EACZ,WAAW,EACX,sBAA8B,EAC9B,eAAe,GAChB,EAAE,KAAK,2CA0hDP;AAuED;6EAC6E;AAC7E,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,EACvC,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,eAAe,EAAE,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK/B"}
1
+ {"version":3,"file":"EditorShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/EditorShell.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAcjD,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAuDtF,OAAO,KAAK,EAAE,eAAe,EAA2D,MAAM,oBAAoB,CAAC;AAmCnH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAoBxD,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;IAIhB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,YAAY,EAAE;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;IAIhE,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAKjC,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,OAAO,EACP,YAAY,EACZ,MAAM,EACN,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EACZ,WAAW,EACX,sBAA8B,EAC9B,eAAe,GAChB,EAAE,KAAK,2CA2lDP;AAuED;6EAC6E;AAC7E,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,EACvC,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,eAAe,EAAE,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK/B"}
@@ -3,7 +3,9 @@ import type { SiteConfig } from "../../schemas/site-config";
3
3
  export interface MediaLibraryContextValue {
4
4
  openSelectModal: (onSelect: (imageId: string) => void) => void;
5
5
  uploadFile: (file: File) => void;
6
- uploadFileWithCallback: (file: File, onComplete: (imageId: string) => void) => string;
6
+ uploadFileWithCallback: (file: File, onComplete: (imageId: string) => void, opts?: {
7
+ hidden?: boolean;
8
+ }) => string;
7
9
  reportRejectedUploads: (files: {
8
10
  name: string;
9
11
  reason: "size" | "type";
@@ -1 +1 @@
1
- {"version":3,"file":"MediaLibraryContext.d.ts","sourceRoot":"","sources":["../../../src/components/shell/MediaLibraryContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC;IAC/D,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACjC,sBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,KAAK,MAAM,CAAC;IACtF,qBAAqB,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,KAAK,IAAI,CAAC;IACpF,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,EAAE,SAAS,EAAE,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B;AAED,eAAO,MAAM,mBAAmB,0DAAuD,CAAC;AAExF,wBAAgB,eAAe,IAAI,wBAAwB,GAAG,IAAI,CAEjE"}
1
+ {"version":3,"file":"MediaLibraryContext.d.ts","sourceRoot":"","sources":["../../../src/components/shell/MediaLibraryContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC;IAC/D,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACjC,sBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,CAAC;IACnH,qBAAqB,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,KAAK,IAAI,CAAC;IACpF,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,EAAE,SAAS,EAAE,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B;AAED,eAAO,MAAM,mBAAmB,0DAAuD,CAAC;AAExF,wBAAgB,eAAe,IAAI,wBAAwB,GAAG,IAAI,CAEjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"SiteSettingsChatbot.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SiteSettingsChatbot.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAA8B,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,UAAU,KAAK;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACjD,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAsBD,wBAAgB,mBAAmB,CAAC,EAAE,UAAU,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,KAAK,2CAwJxG"}
1
+ {"version":3,"file":"SiteSettingsChatbot.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SiteSettingsChatbot.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAA8B,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAcjD,UAAU,KAAK;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACjD,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAsBD,wBAAgB,mBAAmB,CAAC,EAAE,UAAU,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,KAAK,2CA4LxG"}