@drawnagency/primitives 0.1.77 → 0.1.79

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 (78) hide show
  1. package/dist/{chunk-B2DLHZKC.js → chunk-2DDWWTRX.js} +1 -1
  2. package/dist/{chunk-S55OZ7F2.js → chunk-3LNKOLZP.js} +4 -0
  3. package/dist/{chunk-63BQQNZO.js → chunk-4XXLH5CL.js} +5 -5
  4. package/dist/{chunk-YP7IHMC3.js → chunk-DR22HM44.js} +1 -1
  5. package/dist/{chunk-IFHRHV7S.js → chunk-EMGLZQCM.js} +1 -1
  6. package/dist/{chunk-RO4E5UJI.js → chunk-FRTJNS5F.js} +7 -7
  7. package/dist/{chunk-SFKYUKVN.js → chunk-QB5Q23G2.js} +1 -1
  8. package/dist/{chunk-SWIHUIFT.js → chunk-RSITF24B.js} +20 -2
  9. package/dist/{chunk-UUCOJL7O.js → chunk-RWMSDDQM.js} +4 -4
  10. package/dist/{chunk-XFDEUK37.js → chunk-UNUJPLZV.js} +1 -1
  11. package/dist/components/editor/index.js +4 -4
  12. package/dist/components/primitives/index.js +5 -5
  13. package/dist/components/sections/brand-guide.js +5 -5
  14. package/dist/components/sections/register-schemas.js +8 -8
  15. package/dist/components/sections/register.js +8 -8
  16. package/dist/components/shell/EditorShell.d.ts.map +1 -1
  17. package/dist/components/shell/MediaBreadcrumb.d.ts +10 -0
  18. package/dist/components/shell/MediaBreadcrumb.d.ts.map +1 -0
  19. package/dist/components/shell/MediaFolderTile.d.ts +15 -0
  20. package/dist/components/shell/MediaFolderTile.d.ts.map +1 -0
  21. package/dist/components/shell/MediaFolderTree.d.ts +20 -0
  22. package/dist/components/shell/MediaFolderTree.d.ts.map +1 -0
  23. package/dist/components/shell/MediaLibraryModal.d.ts +15 -3
  24. package/dist/components/shell/MediaLibraryModal.d.ts.map +1 -1
  25. package/dist/components/shell/MoveToFolderDialog.d.ts +16 -0
  26. package/dist/components/shell/MoveToFolderDialog.d.ts.map +1 -0
  27. package/dist/components/shell/SiteSettingsDisplay.d.ts.map +1 -1
  28. package/dist/hooks/useEditorPublish.d.ts.map +1 -1
  29. package/dist/hooks/useMediaFolderDnd.d.ts +27 -0
  30. package/dist/hooks/useMediaFolderDnd.d.ts.map +1 -0
  31. package/dist/hooks/useMediaPipeline.d.ts +14 -2
  32. package/dist/hooks/useMediaPipeline.d.ts.map +1 -1
  33. package/dist/index.js +8 -4
  34. package/dist/lib/corner-radius.d.ts +6 -0
  35. package/dist/lib/corner-radius.d.ts.map +1 -0
  36. package/dist/lib/index.js +2 -2
  37. package/dist/lib/media-dnd.d.ts +26 -0
  38. package/dist/lib/media-dnd.d.ts.map +1 -0
  39. package/dist/lib/media-folders.d.ts +59 -0
  40. package/dist/lib/media-folders.d.ts.map +1 -0
  41. package/dist/media/folder-drop.d.ts +22 -0
  42. package/dist/media/folder-drop.d.ts.map +1 -0
  43. package/dist/media/index.js +6 -2
  44. package/dist/media/types.d.ts +1 -1
  45. package/dist/media/types.d.ts.map +1 -1
  46. package/dist/media/utils.d.ts +7 -0
  47. package/dist/media/utils.d.ts.map +1 -1
  48. package/dist/schemas/index.js +4 -2
  49. package/dist/schemas/media.d.ts +11 -0
  50. package/dist/schemas/media.d.ts.map +1 -1
  51. package/dist/schemas/site-config.d.ts +6 -0
  52. package/dist/schemas/site-config.d.ts.map +1 -1
  53. package/package.json +1 -1
  54. package/src/components/brandguide/Colors.tsx +2 -2
  55. package/src/components/chat/ChatPanel.tsx +8 -8
  56. package/src/components/primitives/ResolvedMedia.tsx +1 -1
  57. package/src/components/sections/Button/CTAButton.tsx +1 -1
  58. package/src/components/sections/Media/MediaBlock.tsx +1 -1
  59. package/src/components/shared/Navigation.tsx +5 -5
  60. package/src/components/shell/EditorModal.tsx +7 -7
  61. package/src/components/shell/EditorShell.tsx +23 -4
  62. package/src/components/shell/MediaBreadcrumb.tsx +77 -0
  63. package/src/components/shell/MediaFolderTile.tsx +141 -0
  64. package/src/components/shell/MediaFolderTree.tsx +127 -0
  65. package/src/components/shell/MediaLibraryModal.tsx +611 -229
  66. package/src/components/shell/MoveToFolderDialog.tsx +78 -0
  67. package/src/components/shell/SiteSettingsDisplay.tsx +19 -0
  68. package/src/hooks/useEditorPublish.ts +14 -11
  69. package/src/hooks/useMediaFolderDnd.ts +129 -0
  70. package/src/hooks/useMediaPipeline.ts +162 -6
  71. package/src/lib/corner-radius.ts +22 -0
  72. package/src/lib/media-dnd.ts +62 -0
  73. package/src/lib/media-folders.ts +232 -0
  74. package/src/media/folder-drop.ts +62 -0
  75. package/src/media/types.ts +2 -0
  76. package/src/media/utils.ts +10 -0
  77. package/src/schemas/media.ts +13 -0
  78. package/src/schemas/site-config.ts +4 -0
@@ -14,7 +14,7 @@ import {
14
14
  SettingsIcon,
15
15
  useMediaLibrary,
16
16
  useResolvedMedia
17
- } from "./chunk-IFHRHV7S.js";
17
+ } from "./chunk-EMGLZQCM.js";
18
18
  import {
19
19
  cn
20
20
  } from "./chunk-7EOSDFS3.js";
@@ -60,6 +60,9 @@ function formatFileSize(bytes) {
60
60
  if (bytes >= 1024) return `${Math.round(bytes / 1024)}KB`;
61
61
  return `${bytes}B`;
62
62
  }
63
+ function displayName(item) {
64
+ return item.originalName;
65
+ }
63
66
 
64
67
  // src/media/queue.ts
65
68
  var ProcessingQueue = class {
@@ -315,6 +318,7 @@ export {
315
318
  displayFilenameExt,
316
319
  displayFilename,
317
320
  formatFileSize,
321
+ displayName,
318
322
  ProcessingQueue,
319
323
  resolveMedia,
320
324
  resolveManifestReferences,
@@ -9,13 +9,13 @@ import {
9
9
  MediaBlock,
10
10
  containerGridClass,
11
11
  useEditableCollection
12
- } from "./chunk-UUCOJL7O.js";
12
+ } from "./chunk-RWMSDDQM.js";
13
13
  import {
14
14
  AddIcon,
15
15
  DeleteIcon,
16
16
  DragHandle,
17
17
  IconButton
18
- } from "./chunk-IFHRHV7S.js";
18
+ } from "./chunk-EMGLZQCM.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-SWIHUIFT.js";
33
+ } from "./chunk-RSITF24B.js";
34
34
  import {
35
35
  defineSection
36
36
  } from "./chunk-VKAGMEKE.js";
@@ -184,7 +184,7 @@ function ColorsView({
184
184
  /* @__PURE__ */ jsx2("div", { className: "@container", children: /* @__PURE__ */ jsx2("div", { className: cn("grid gap-4", containerGridClass[columns] || containerGridClass[3]), children: colors.map((color, i) => {
185
185
  const hex = color.spaces[0]?.hex;
186
186
  const contrast = getContrastClass(hex);
187
- return /* @__PURE__ */ jsxs2("div", { className: "overflow-hidden rounded-md border border-base-200", children: [
187
+ return /* @__PURE__ */ jsxs2("div", { className: "overflow-hidden rounded-outer border border-base-200", children: [
188
188
  /* @__PURE__ */ jsxs2("div", { className: cn("relative flex min-h-[80px] items-end p-3", contrast), style: { backgroundColor: hex || "#ccc" }, children: [
189
189
  color.name && /* @__PURE__ */ jsx2("span", { className: "text-sm font-bold", children: color.name }),
190
190
  copiedIndex === i && /* @__PURE__ */ jsx2("span", { className: cn(
@@ -290,7 +290,7 @@ function ColorSwatchEditable({
290
290
  const newColors = colors.map((c, i) => i === index ? updated : c);
291
291
  onChange(buildContent(newColors, options));
292
292
  };
293
- return /* @__PURE__ */ jsxs2("div", { className: "overflow-hidden rounded-md border border-base-200", children: [
293
+ return /* @__PURE__ */ jsxs2("div", { className: "overflow-hidden rounded-outer border border-base-200", children: [
294
294
  /* @__PURE__ */ jsx2("div", { className: cn("flex min-h-[80px] items-end p-3", contrast), style: { backgroundColor: hex || "#ccc" }, children: /* @__PURE__ */ jsx2(
295
295
  EditablePlainText,
296
296
  {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EditablePlainText
3
- } from "./chunk-UUCOJL7O.js";
3
+ } from "./chunk-RWMSDDQM.js";
4
4
  import {
5
5
  Button,
6
6
  usePages
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getMediaProvider
3
- } from "./chunk-S55OZ7F2.js";
3
+ } from "./chunk-3LNKOLZP.js";
4
4
  import {
5
5
  cn
6
6
  } from "./chunk-7EOSDFS3.js";
@@ -3,7 +3,7 @@ import {
3
3
  pluralize,
4
4
  stripHtmlToPlainText,
5
5
  truncate
6
- } from "./chunk-63BQQNZO.js";
6
+ } from "./chunk-4XXLH5CL.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-B2DLHZKC.js";
18
+ } from "./chunk-2DDWWTRX.js";
19
19
  import {
20
20
  EditableRichText,
21
21
  defineHeadingSection
22
- } from "./chunk-YP7IHMC3.js";
22
+ } from "./chunk-DR22HM44.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-UUCOJL7O.js";
31
+ } from "./chunk-RWMSDDQM.js";
32
32
  import {
33
33
  useMediaLibrary,
34
34
  useResolvedMedia
35
- } from "./chunk-IFHRHV7S.js";
35
+ } from "./chunk-EMGLZQCM.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-SWIHUIFT.js";
54
+ } from "./chunk-RSITF24B.js";
55
55
  import {
56
56
  defineSection,
57
57
  getSection
@@ -397,7 +397,7 @@ import { RectangleHorizontal } from "lucide-react";
397
397
  import { Download } from "lucide-react";
398
398
  import { jsx as jsx9, jsxs as jsxs2 } from "react/jsx-runtime";
399
399
  function Button({ text, link, download, onChange }) {
400
- const base = "inline-block rounded-md px-6 py-3 font-bold transition-colors";
400
+ const base = "inline-block rounded-outer px-6 py-3 font-bold transition-colors";
401
401
  const variant = "border-2 border-primary text-primary hover:bg-primary hover:text-primary-contrast";
402
402
  if (onChange) {
403
403
  return /* @__PURE__ */ jsxs2("span", { className: cn(base, variant, "inline-flex items-center gap-2"), children: [
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  HexColorSchema
3
- } from "./chunk-SWIHUIFT.js";
3
+ } from "./chunk-RSITF24B.js";
4
4
 
5
5
  // src/schemas/audience.ts
6
6
  import { z } from "zod";
@@ -68,6 +68,11 @@ var VariantSchema = z2.object({
68
68
  height: z2.number().int().positive(),
69
69
  size: z2.number().int().nonnegative()
70
70
  });
71
+ var MediaFolderSchema = z2.object({
72
+ name: z2.string().min(1),
73
+ parentId: z2.string().nullable()
74
+ // null = root
75
+ });
71
76
  var MediaItemSchema = z2.object({
72
77
  id: z2.string(),
73
78
  hash: z2.string(),
@@ -88,10 +93,14 @@ var MediaItemSchema = z2.object({
88
93
  // resolution needs no env access in the browser or at SSR.
89
94
  url: z2.string().optional(),
90
95
  // Seconds; videos only. Informational (library UI).
91
- duration: z2.number().positive().optional()
96
+ duration: z2.number().positive().optional(),
97
+ // Display folder (MediaFolderSchema key). Absent = root/unfiled. NOT the
98
+ // git storage dir — that's `folder` above, which never changes.
99
+ folderId: z2.string().optional()
92
100
  });
93
101
  var ImageManifestSchema = z2.object({
94
- images: z2.record(z2.string(), MediaItemSchema)
102
+ images: z2.record(z2.string(), MediaItemSchema),
103
+ folders: z2.record(z2.string(), MediaFolderSchema).default({})
95
104
  });
96
105
  var MediaConfigSchema = z2.object({
97
106
  sizes: z2.array(z2.number()).default([640, 1080, 1920]),
@@ -104,6 +113,11 @@ var MediaConfigSchema = z2.object({
104
113
 
105
114
  // src/schemas/site-config.ts
106
115
  import { z as z3 } from "zod";
116
+
117
+ // src/lib/corner-radius.ts
118
+ var CORNER_RADIUS_OPTIONS = ["none", "small", "medium", "large"];
119
+
120
+ // src/schemas/site-config.ts
107
121
  var StatusSchema = z3.enum(["draft", "live", "archived", "published"]).transform(
108
122
  (val) => val === "published" ? "live" : val
109
123
  );
@@ -245,6 +259,9 @@ var SiteConfigSchema = z3.object({
245
259
  primaryColor: HexColorSchema.default("#009ca6"),
246
260
  primaryContrast: HexColorSchema.default("#f0f0f0"),
247
261
  darkMode: z3.enum(["light", "dark", "optional"]).default("light"),
262
+ // Maps to the --radius-outer design token (see lib/corner-radius.ts);
263
+ // defaults so pre-existing site-config.json files keep parsing.
264
+ cornerRadius: z3.enum(CORNER_RADIUS_OPTIONS).default("medium"),
248
265
  headingFont: FontNameSchema.default("system-ui"),
249
266
  bodyFont: FontNameSchema.default("system-ui"),
250
267
  uppercaseHeadings: z3.boolean().default(true),
@@ -268,6 +285,7 @@ export {
268
285
  HexColorSchema,
269
286
  FontNameSchema,
270
287
  VariantSchema,
288
+ MediaFolderSchema,
271
289
  MediaItemSchema,
272
290
  ImageManifestSchema,
273
291
  MediaConfigSchema,
@@ -6,10 +6,10 @@ import {
6
6
  SettingsIcon,
7
7
  useMediaLibrary,
8
8
  useResolvedMedia
9
- } from "./chunk-IFHRHV7S.js";
9
+ } from "./chunk-EMGLZQCM.js";
10
10
  import {
11
11
  rebindImageRef
12
- } from "./chunk-S55OZ7F2.js";
12
+ } from "./chunk-3LNKOLZP.js";
13
13
  import {
14
14
  cn
15
15
  } from "./chunk-7EOSDFS3.js";
@@ -195,7 +195,7 @@ function ResolvedMedia({
195
195
  onError: () => setLoaded(true)
196
196
  }
197
197
  )
198
- ] }) : /* @__PURE__ */ jsxs("div", { className: "flex aspect-video h-full w-full flex-col items-center justify-center gap-1 rounded bg-base-accent text-base-contrast-light/50", children: [
198
+ ] }) : /* @__PURE__ */ jsxs("div", { className: "flex aspect-video h-full w-full flex-col items-center justify-center gap-1 rounded-outer bg-base-accent text-base-contrast-light/50", children: [
199
199
  /* @__PURE__ */ jsx(ImageIcon, { size: 24 }),
200
200
  /* @__PURE__ */ jsx("span", { className: "text-sm", children: "No Image" })
201
201
  ] }) });
@@ -293,7 +293,7 @@ function MediaBlock({ refValue, options, link, isEditMode, onRefChange }) {
293
293
  {
294
294
  "data-testid": "media-open-surface",
295
295
  className: cn(
296
- "overflow-hidden rounded-md",
296
+ "overflow-hidden rounded-outer",
297
297
  showBorder && "border border-base-200",
298
298
  options.square && "aspect-square",
299
299
  onImageClick && "cursor-pointer"
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-TZQPOR5A.js";
10
10
  import {
11
11
  IndexSchema
12
- } from "./chunk-SWIHUIFT.js";
12
+ } from "./chunk-RSITF24B.js";
13
13
  import {
14
14
  getAllSchemas
15
15
  } from "./chunk-VKAGMEKE.js";
@@ -11,20 +11,20 @@ import {
11
11
  buildBlockDropData,
12
12
  canDropBlock,
13
13
  isBlockDragData
14
- } from "../../chunk-B2DLHZKC.js";
14
+ } from "../../chunk-2DDWWTRX.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-IFHRHV7S.js";
21
- import "../../chunk-S55OZ7F2.js";
20
+ } from "../../chunk-EMGLZQCM.js";
21
+ import "../../chunk-3LNKOLZP.js";
22
22
  import "../../chunk-677NTHAZ.js";
23
23
  import {
24
24
  cn
25
25
  } from "../../chunk-7EOSDFS3.js";
26
26
  import "../../chunk-4YEOTFVU.js";
27
- import "../../chunk-SWIHUIFT.js";
27
+ import "../../chunk-RSITF24B.js";
28
28
  import "../../chunk-JSBRDJBE.js";
29
29
 
30
30
  // src/components/editor/InsertButton.tsx
@@ -2,7 +2,7 @@ import {
2
2
  EditableRichText,
3
3
  LinkPopover,
4
4
  defineHeadingSection
5
- } from "../../chunk-YP7IHMC3.js";
5
+ } from "../../chunk-DR22HM44.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-UUCOJL7O.js";
13
+ } from "../../chunk-RWMSDDQM.js";
14
14
  import "../../chunk-ZSPCE6MZ.js";
15
15
  import {
16
16
  DeleteIcon,
17
17
  DragHandle,
18
18
  IconButton
19
- } from "../../chunk-IFHRHV7S.js";
20
- import "../../chunk-S55OZ7F2.js";
19
+ } from "../../chunk-EMGLZQCM.js";
20
+ import "../../chunk-3LNKOLZP.js";
21
21
  import "../../chunk-53DKVAB6.js";
22
22
  import {
23
23
  cn
24
24
  } from "../../chunk-7EOSDFS3.js";
25
25
  import "../../chunk-4YEOTFVU.js";
26
- import "../../chunk-SWIHUIFT.js";
26
+ import "../../chunk-RSITF24B.js";
27
27
  import "../../chunk-VKAGMEKE.js";
28
28
  import "../../chunk-JSBRDJBE.js";
29
29
 
@@ -2,16 +2,16 @@ import {
2
2
  ColorItemSchema,
3
3
  ColorSpaceSchema,
4
4
  brandGuideSectionDefs
5
- } from "../../chunk-63BQQNZO.js";
5
+ } from "../../chunk-4XXLH5CL.js";
6
6
  import "../../chunk-5THS4K5D.js";
7
- import "../../chunk-UUCOJL7O.js";
8
- import "../../chunk-IFHRHV7S.js";
9
- import "../../chunk-S55OZ7F2.js";
7
+ import "../../chunk-RWMSDDQM.js";
8
+ import "../../chunk-EMGLZQCM.js";
9
+ import "../../chunk-3LNKOLZP.js";
10
10
  import "../../chunk-PZJL2S3Z.js";
11
11
  import "../../chunk-WDSVHKAH.js";
12
12
  import "../../chunk-7EOSDFS3.js";
13
13
  import "../../chunk-4YEOTFVU.js";
14
- import "../../chunk-SWIHUIFT.js";
14
+ import "../../chunk-RSITF24B.js";
15
15
  import "../../chunk-VKAGMEKE.js";
16
16
  import "../../chunk-JSBRDJBE.js";
17
17
  export {
@@ -1,22 +1,22 @@
1
1
  import {
2
2
  allSectionDefs
3
- } from "../../chunk-RO4E5UJI.js";
4
- import "../../chunk-63BQQNZO.js";
5
- import "../../chunk-B2DLHZKC.js";
3
+ } from "../../chunk-FRTJNS5F.js";
4
+ import "../../chunk-4XXLH5CL.js";
5
+ import "../../chunk-2DDWWTRX.js";
6
6
  import "../../chunk-5THS4K5D.js";
7
- import "../../chunk-YP7IHMC3.js";
8
- import "../../chunk-UUCOJL7O.js";
7
+ import "../../chunk-DR22HM44.js";
8
+ import "../../chunk-RWMSDDQM.js";
9
9
  import "../../chunk-ZSPCE6MZ.js";
10
- import "../../chunk-IFHRHV7S.js";
10
+ import "../../chunk-EMGLZQCM.js";
11
11
  import "../../chunk-Y4JQGO6G.js";
12
- import "../../chunk-S55OZ7F2.js";
12
+ import "../../chunk-3LNKOLZP.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-4YEOTFVU.js";
18
18
  import "../../chunk-TZQPOR5A.js";
19
- import "../../chunk-SWIHUIFT.js";
19
+ import "../../chunk-RSITF24B.js";
20
20
  import {
21
21
  registerRichText,
22
22
  registerSchema
@@ -1,22 +1,22 @@
1
1
  import {
2
2
  allSectionDefs
3
- } from "../../chunk-RO4E5UJI.js";
4
- import "../../chunk-63BQQNZO.js";
5
- import "../../chunk-B2DLHZKC.js";
3
+ } from "../../chunk-FRTJNS5F.js";
4
+ import "../../chunk-4XXLH5CL.js";
5
+ import "../../chunk-2DDWWTRX.js";
6
6
  import "../../chunk-5THS4K5D.js";
7
- import "../../chunk-YP7IHMC3.js";
8
- import "../../chunk-UUCOJL7O.js";
7
+ import "../../chunk-DR22HM44.js";
8
+ import "../../chunk-RWMSDDQM.js";
9
9
  import "../../chunk-ZSPCE6MZ.js";
10
- import "../../chunk-IFHRHV7S.js";
10
+ import "../../chunk-EMGLZQCM.js";
11
11
  import "../../chunk-Y4JQGO6G.js";
12
- import "../../chunk-S55OZ7F2.js";
12
+ import "../../chunk-3LNKOLZP.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-4YEOTFVU.js";
18
18
  import "../../chunk-TZQPOR5A.js";
19
- import "../../chunk-SWIHUIFT.js";
19
+ import "../../chunk-RSITF24B.js";
20
20
  import {
21
21
  registerSection
22
22
  } from "../../chunk-VKAGMEKE.js";
@@ -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;AAiDjD,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,2CA27CP"}
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;AAkDjD,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,2CA68CP"}
@@ -0,0 +1,10 @@
1
+ import type { MediaFolder } from "../../media/types";
2
+ import type { MediaFolderDndBindings } from "./MediaFolderTree";
3
+ export interface MediaBreadcrumbProps {
4
+ folders: Record<string, MediaFolder>;
5
+ currentFolderId: string | null;
6
+ onNavigate: (id: string | null) => void;
7
+ dnd?: MediaFolderDndBindings;
8
+ }
9
+ export declare function MediaBreadcrumb({ folders, currentFolderId, onNavigate, dnd }: MediaBreadcrumbProps): import("react/jsx-runtime").JSX.Element | null;
10
+ //# sourceMappingURL=MediaBreadcrumb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaBreadcrumb.d.ts","sourceRoot":"","sources":["../../../src/components/shell/MediaBreadcrumb.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,mBAAmB,CAAC;AAGhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACxC,GAAG,CAAC,EAAE,sBAAsB,CAAC;CAC9B;AA0CD,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,oBAAoB,kDAqBlG"}
@@ -0,0 +1,15 @@
1
+ import type { MediaFolderDndBindings } from "./MediaFolderTree";
2
+ export interface MediaFolderTileProps {
3
+ id: string;
4
+ name: string;
5
+ count: number;
6
+ onOpen: (id: string) => void;
7
+ manage: boolean;
8
+ onRename?: (id: string, name: string) => void;
9
+ onDeleteRequest?: (id: string) => void;
10
+ dnd?: MediaFolderDndBindings;
11
+ /** Optional accessible label override for the root element (e.g. "Open folder Logos"). */
12
+ ariaLabel?: string;
13
+ }
14
+ export declare function MediaFolderTile({ id, name, count, onOpen, manage, onRename, onDeleteRequest, dnd, ariaLabel, }: MediaFolderTileProps): import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=MediaFolderTile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaFolderTile.d.ts","sourceRoot":"","sources":["../../../src/components/shell/MediaFolderTile.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,GAAG,CAAC,EAAE,sBAAsB,CAAC;IAC7B,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAGD,wBAAgB,eAAe,CAAC,EAC9B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,EAAE,SAAS,GAC3E,EAAE,oBAAoB,2CAoHtB"}
@@ -0,0 +1,20 @@
1
+ import type { MediaFolder, MediaItem } from "../../media/types";
2
+ export interface MediaFolderDndBindings {
3
+ foldersRef: React.RefObject<Record<string, MediaFolder>>;
4
+ itemsByIdRef: React.RefObject<Record<string, MediaItem>>;
5
+ onMoveMedia: (ids: string[], target: string | null) => void;
6
+ onMoveFolder: (id: string, target: string | null) => void;
7
+ }
8
+ export interface MediaFolderTreeProps {
9
+ folders: Record<string, MediaFolder>;
10
+ counts: Record<string, number>;
11
+ totalCount: number;
12
+ currentFolderId: string | null;
13
+ onNavigate: (id: string | null) => void;
14
+ expandedIds: Set<string>;
15
+ onExpand: (id: string) => void;
16
+ onToggleExpand: (id: string) => void;
17
+ dnd?: MediaFolderDndBindings;
18
+ }
19
+ export declare function MediaFolderTree(props: MediaFolderTreeProps): import("react/jsx-runtime").JSX.Element;
20
+ //# sourceMappingURL=MediaFolderTree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaFolderTree.d.ts","sourceRoot":"","sources":["../../../src/components/shell/MediaFolderTree.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAIhE,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IACzD,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACzD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5D,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3D;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,GAAG,CAAC,EAAE,sBAAsB,CAAC;CAC9B;AA4ED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CA0B1D"}
@@ -1,9 +1,9 @@
1
- import type { MediaItem } from "../../media/types";
1
+ import type { MediaFolder, MediaItem } from "../../media/types";
2
2
  export interface MediaLibraryModalProps {
3
3
  mode: "select" | "manage";
4
4
  items: MediaItem[];
5
5
  onSelect: (id: string) => void;
6
- onUpload: (files: File[]) => void;
6
+ onUpload: (files: File[], targetFolderId?: string | null) => void;
7
7
  onDelete: (ids: string[]) => void;
8
8
  onAltChange?: (id: string, alt: string) => void;
9
9
  referenceCountMap: Record<string, number>;
@@ -12,6 +12,18 @@ export interface MediaLibraryModalProps {
12
12
  uploadProgress?: Record<string, number>;
13
13
  uploadError?: string | null;
14
14
  onDismissUploadError?: () => void;
15
+ folders?: Record<string, MediaFolder>;
16
+ onCreateFolder?: (name: string, parentId: string | null) => string;
17
+ onRenameFolder?: (id: string, name: string) => void;
18
+ onMoveFolder?: (id: string, parentId: string | null) => void;
19
+ onDeleteFolder?: (id: string, contents: "move" | "delete") => void;
20
+ onMoveMedia?: (ids: string[], folderId: string | null) => void;
21
+ onFolderUpload?: (entries: {
22
+ file: File;
23
+ relativePath: string;
24
+ }[], currentFolderId: string | null) => void;
25
+ uploadNotice?: string | null;
26
+ onDismissUploadNotice?: () => void;
15
27
  }
16
- export declare function MediaLibraryModal({ mode, items, onSelect, onUpload, onDelete, onAltChange, referenceCountMap, localUrlMap, maxFileSize, uploadProgress, uploadError, onDismissUploadError, }: MediaLibraryModalProps): import("react/jsx-runtime").JSX.Element;
28
+ export declare function MediaLibraryModal({ mode, items, onSelect, onUpload, onDelete, onAltChange, referenceCountMap, localUrlMap, maxFileSize, uploadProgress, uploadError, onDismissUploadError, folders, onCreateFolder, onRenameFolder, onMoveFolder, onDeleteFolder, onMoveMedia, onFolderUpload, uploadNotice, onDismissUploadNotice, }: MediaLibraryModalProps): import("react/jsx-runtime").JSX.Element;
17
29
  //# sourceMappingURL=MediaLibraryModal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MediaLibraryModal.d.ts","sourceRoot":"","sources":["../../../src/components/shell/MediaLibraryModal.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,mBAAmB,CAAC;AAG9D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAIxC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;CACnC;AAsED,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,WAAgB,EAChB,WAAW,EACX,cAAmB,EACnB,WAAkB,EAClB,oBAAoB,GACrB,EAAE,sBAAsB,2CAuSxB"}
1
+ {"version":3,"file":"MediaLibraryModal.d.ts","sourceRoot":"","sources":["../../../src/components/shell/MediaLibraryModal.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAa,MAAM,mBAAmB,CAAC;AAa3E,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAClE,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAIxC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;IACnE,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7D,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,KAAK,IAAI,CAAC;IACnE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/D,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EAAE,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3G,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;CACpC;AA2ID,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,WAAgB,EAChB,WAAW,EACX,cAAmB,EACnB,WAAkB,EAClB,oBAAoB,EACpB,OAAY,EACZ,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,WAAW,EACX,cAAc,EACd,YAAmB,EACnB,qBAAqB,GACtB,EAAE,sBAAsB,2CAokBxB"}
@@ -0,0 +1,16 @@
1
+ import type { MediaFolder } from "../../media/types";
2
+ export interface MoveToFolderDialogProps {
3
+ folders: Record<string, MediaFolder>;
4
+ /** Targets to disable (moving a folder: its own descendant set). */
5
+ disabledIds?: Set<string>;
6
+ /**
7
+ * Target that is a no-op (the items' current folder), disabled too.
8
+ * Omit (undefined) when there is no single no-op target — e.g. a
9
+ * heterogeneous selection — and nothing is disabled on that account.
10
+ */
11
+ currentTarget?: string | null;
12
+ onMove: (targetFolderId: string | null) => void;
13
+ onClose: () => void;
14
+ }
15
+ export declare function MoveToFolderDialog({ folders, disabledIds, currentTarget, onMove, onClose, }: MoveToFolderDialogProps): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=MoveToFolderDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MoveToFolderDialog.d.ts","sourceRoot":"","sources":["../../../src/components/shell/MoveToFolderDialog.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,oEAAoE;IACpE,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAKD,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,GACrD,EAAE,uBAAuB,2CAmDzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"SiteSettingsDisplay.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SiteSettingsDisplay.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,UAAU,KAAK;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACxC;AAWD,wBAAgB,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,2CAiKlE"}
1
+ {"version":3,"file":"SiteSettingsDisplay.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SiteSettingsDisplay.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,UAAU,KAAK;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACxC;AAkBD,wBAAgB,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,2CA6KlE"}
@@ -1 +1 @@
1
- {"version":3,"file":"useEditorPublish.d.ts","sourceRoot":"","sources":["../../src/hooks/useEditorPublish.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAiD/D,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;;;;mFAM+E;IAC/E,SAAS,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,IAAI,CAAC;IACtG,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,iBAAiB,EAAE,SAAS,EAAE,CAAC;IAC/B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACtF,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzE,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAI/B,cAAc,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACpC;;;;qDAIiD;IACjD,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC;;;;;sDAKkD;IAClD,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,aAAa,EAAE,CAAC;QAAC,KAAK,EAAE,SAAS,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChI,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;+EAE2E;IAC3E,SAAS,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5C;;;+EAG2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAC;CAClC;AAQD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE7D,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,iBAAiB,GAClB,EAAE,WAAW;;;;;;;EA+db"}
1
+ {"version":3,"file":"useEditorPublish.d.ts","sourceRoot":"","sources":["../../src/hooks/useEditorPublish.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAkD/D,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;;;;mFAM+E;IAC/E,SAAS,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,IAAI,CAAC;IACtG,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,iBAAiB,EAAE,SAAS,EAAE,CAAC;IAC/B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACtF,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzE,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAI/B,cAAc,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACpC;;;;qDAIiD;IACjD,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC;;;;;sDAKkD;IAClD,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,aAAa,EAAE,CAAC;QAAC,KAAK,EAAE,SAAS,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChI,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;+EAE2E;IAC3E,SAAS,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5C;;;+EAG2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAC;CAClC;AAQD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE7D,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,iBAAiB,GAClB,EAAE,WAAW;;;;;;;EAieb"}
@@ -0,0 +1,27 @@
1
+ import type { MediaFolder, MediaItem } from "../media/types";
2
+ import { type MediaDragData, type MediaFolderDragData } from "../lib/media-dnd";
3
+ interface UseFolderDropTargetArgs {
4
+ targetFolderId: string | null;
5
+ enabled: boolean;
6
+ /** Refs (not values) so drops read fresh state without re-registering targets. */
7
+ foldersRef: React.RefObject<Record<string, MediaFolder>>;
8
+ itemsByIdRef: React.RefObject<Record<string, MediaItem>>;
9
+ onMoveMedia: (ids: string[], target: string | null) => void;
10
+ onMoveFolder: (id: string, target: string | null) => void;
11
+ /** Fired after a sustained drag hover (tree hover-to-expand). */
12
+ onDragHover?: () => void;
13
+ }
14
+ export declare function useFolderDropTarget<E extends HTMLElement>({ targetFolderId, enabled, foldersRef, itemsByIdRef, onMoveMedia, onMoveFolder, onDragHover, }: UseFolderDropTargetArgs): {
15
+ ref: import("react").RefObject<E | null>;
16
+ isDropTarget: boolean;
17
+ };
18
+ interface UseMediaDraggableArgs {
19
+ enabled: boolean;
20
+ getDragData: () => MediaDragData | MediaFolderDragData;
21
+ }
22
+ export declare function useMediaDraggable<E extends HTMLElement>({ enabled, getDragData }: UseMediaDraggableArgs): {
23
+ ref: import("react").RefObject<E | null>;
24
+ isDragging: boolean;
25
+ };
26
+ export {};
27
+ //# sourceMappingURL=useMediaFolderDnd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMediaFolderDnd.d.ts","sourceRoot":"","sources":["../../src/hooks/useMediaFolderDnd.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAGL,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAC7C,MAAM,kBAAkB,CAAC;AAK1B,UAAU,uBAAuB;IAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,kFAAkF;IAClF,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IACzD,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACzD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5D,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1D,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,WAAW,EAAE,EACzD,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,GAC1F,EAAE,uBAAuB;;;EAiEzB;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,aAAa,GAAG,mBAAmB,CAAC;CACxD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,qBAAqB;;;EA+BvG"}
@@ -14,8 +14,9 @@ interface UseMediaPipelineInput {
14
14
  setDirtySectionIds: React.Dispatch<React.SetStateAction<Set<string>>>;
15
15
  markSectionDirty: (sectionId: string, content: SectionContent) => void;
16
16
  onUploadError?: (message: string) => void;
17
+ onUploadNotice?: (message: string) => void;
17
18
  }
18
- export declare function useMediaPipeline({ siteConfig, mediaManifest, setMediaManifest, sections, setSections, setLocalChangesExist, setDirtySectionIds, markSectionDirty, onUploadError, }: UseMediaPipelineInput): {
19
+ export declare function useMediaPipeline({ siteConfig, mediaManifest, setMediaManifest, sections, setSections, setLocalChangesExist, setDirtySectionIds, markSectionDirty, onUploadError, onUploadNotice, }: UseMediaPipelineInput): {
19
20
  processingItems: QueueItem[];
20
21
  pendingMediaItems: {
21
22
  id: string;
@@ -36,6 +37,7 @@ export declare function useMediaPipeline({ siteConfig, mediaManifest, setMediaMa
36
37
  storage: "github" | "assets";
37
38
  url?: string | undefined;
38
39
  duration?: number | undefined;
40
+ folderId?: string | undefined;
39
41
  }[];
40
42
  setPendingMediaItems: import("react").Dispatch<import("react").SetStateAction<{
41
43
  id: string;
@@ -56,6 +58,7 @@ export declare function useMediaPipeline({ siteConfig, mediaManifest, setMediaMa
56
58
  storage: "github" | "assets";
57
59
  url?: string | undefined;
58
60
  duration?: number | undefined;
61
+ folderId?: string | undefined;
59
62
  }[]>>;
60
63
  pendingLocalUrls: Record<string, string>;
61
64
  setPendingLocalUrls: import("react").Dispatch<import("react").SetStateAction<Record<string, string>>>;
@@ -64,9 +67,18 @@ export declare function useMediaPipeline({ siteConfig, mediaManifest, setMediaMa
64
67
  manifestDirty: boolean;
65
68
  setManifestDirty: import("react").Dispatch<import("react").SetStateAction<boolean>>;
66
69
  uploadProgress: Record<string, number>;
67
- handleMediaUpload: (files: File[]) => Promise<void>;
70
+ handleMediaUpload: (files: File[], targetFolderId?: string | null) => Promise<void>;
68
71
  handleMediaDelete: (ids: string[]) => Promise<void>;
69
72
  handleMediaAltChange: (id: string, alt: string) => void;
73
+ handleFolderCreate: (name: string, parentId: string | null) => string;
74
+ handleFolderRename: (id: string, name: string) => void;
75
+ handleFolderMove: (id: string, parentId: string | null) => void;
76
+ handleFolderDelete: (id: string, contents: "move" | "delete") => Promise<void>;
77
+ handleMediaMove: (ids: string[], folderId: string | null) => void;
78
+ handleFolderUpload: (entries: {
79
+ file: File;
80
+ relativePath: string;
81
+ }[], currentFolderId: string | null) => Promise<void>;
70
82
  referenceCountMap: Record<string, number>;
71
83
  contextValue: MediaLibraryContextValue;
72
84
  enqueueFile: (file: File, onComplete?: (imageId: string) => void) => void;