@drawnagency/primitives 0.1.77 → 0.1.78

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 (63) 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-SWIHUIFT.js → chunk-4SIWBWKZ.js} +12 -2
  4. package/dist/{chunk-RO4E5UJI.js → chunk-BAQYZSFF.js} +6 -6
  5. package/dist/{chunk-IFHRHV7S.js → chunk-EMGLZQCM.js} +1 -1
  6. package/dist/{chunk-YP7IHMC3.js → chunk-K4JD6FD3.js} +1 -1
  7. package/dist/{chunk-SFKYUKVN.js → chunk-MK4POMLZ.js} +1 -1
  8. package/dist/{chunk-63BQQNZO.js → chunk-NS3UTJ3E.js} +3 -3
  9. package/dist/{chunk-UUCOJL7O.js → chunk-UA6OCJJK.js} +2 -2
  10. package/dist/{chunk-XFDEUK37.js → chunk-Z5IYWUW3.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/hooks/useEditorPublish.d.ts.map +1 -1
  28. package/dist/hooks/useMediaFolderDnd.d.ts +27 -0
  29. package/dist/hooks/useMediaFolderDnd.d.ts.map +1 -0
  30. package/dist/hooks/useMediaPipeline.d.ts +14 -2
  31. package/dist/hooks/useMediaPipeline.d.ts.map +1 -1
  32. package/dist/index.js +8 -4
  33. package/dist/lib/index.js +2 -2
  34. package/dist/lib/media-dnd.d.ts +26 -0
  35. package/dist/lib/media-dnd.d.ts.map +1 -0
  36. package/dist/lib/media-folders.d.ts +59 -0
  37. package/dist/lib/media-folders.d.ts.map +1 -0
  38. package/dist/media/folder-drop.d.ts +22 -0
  39. package/dist/media/folder-drop.d.ts.map +1 -0
  40. package/dist/media/index.js +6 -2
  41. package/dist/media/types.d.ts +1 -1
  42. package/dist/media/types.d.ts.map +1 -1
  43. package/dist/media/utils.d.ts +7 -0
  44. package/dist/media/utils.d.ts.map +1 -1
  45. package/dist/schemas/index.js +4 -2
  46. package/dist/schemas/media.d.ts +11 -0
  47. package/dist/schemas/media.d.ts.map +1 -1
  48. package/package.json +1 -1
  49. package/src/components/shell/EditorShell.tsx +20 -4
  50. package/src/components/shell/MediaBreadcrumb.tsx +77 -0
  51. package/src/components/shell/MediaFolderTile.tsx +141 -0
  52. package/src/components/shell/MediaFolderTree.tsx +127 -0
  53. package/src/components/shell/MediaLibraryModal.tsx +611 -229
  54. package/src/components/shell/MoveToFolderDialog.tsx +78 -0
  55. package/src/hooks/useEditorPublish.ts +14 -11
  56. package/src/hooks/useMediaFolderDnd.ts +129 -0
  57. package/src/hooks/useMediaPipeline.ts +162 -6
  58. package/src/lib/media-dnd.ts +62 -0
  59. package/src/lib/media-folders.ts +232 -0
  60. package/src/media/folder-drop.ts +62 -0
  61. package/src/media/types.ts +2 -0
  62. package/src/media/utils.ts +10 -0
  63. package/src/schemas/media.ts +13 -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,
@@ -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]),
@@ -268,6 +277,7 @@ export {
268
277
  HexColorSchema,
269
278
  FontNameSchema,
270
279
  VariantSchema,
280
+ MediaFolderSchema,
271
281
  MediaItemSchema,
272
282
  ImageManifestSchema,
273
283
  MediaConfigSchema,
@@ -3,7 +3,7 @@ import {
3
3
  pluralize,
4
4
  stripHtmlToPlainText,
5
5
  truncate
6
- } from "./chunk-63BQQNZO.js";
6
+ } from "./chunk-NS3UTJ3E.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-K4JD6FD3.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-UA6OCJJK.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-4SIWBWKZ.js";
55
55
  import {
56
56
  defineSection,
57
57
  getSection
@@ -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";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EditablePlainText
3
- } from "./chunk-UUCOJL7O.js";
3
+ } from "./chunk-UA6OCJJK.js";
4
4
  import {
5
5
  Button,
6
6
  usePages
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  HexColorSchema
3
- } from "./chunk-SWIHUIFT.js";
3
+ } from "./chunk-4SIWBWKZ.js";
4
4
 
5
5
  // src/schemas/audience.ts
6
6
  import { z } from "zod";
@@ -9,13 +9,13 @@ import {
9
9
  MediaBlock,
10
10
  containerGridClass,
11
11
  useEditableCollection
12
- } from "./chunk-UUCOJL7O.js";
12
+ } from "./chunk-UA6OCJJK.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-4SIWBWKZ.js";
34
34
  import {
35
35
  defineSection
36
36
  } from "./chunk-VKAGMEKE.js";
@@ -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";
@@ -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-4SIWBWKZ.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-4SIWBWKZ.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-K4JD6FD3.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-UA6OCJJK.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-4SIWBWKZ.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-NS3UTJ3E.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-UA6OCJJK.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-4SIWBWKZ.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-BAQYZSFF.js";
4
+ import "../../chunk-NS3UTJ3E.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-K4JD6FD3.js";
8
+ import "../../chunk-UA6OCJJK.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-4SIWBWKZ.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-BAQYZSFF.js";
4
+ import "../../chunk-NS3UTJ3E.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-K4JD6FD3.js";
8
+ import "../../chunk-UA6OCJJK.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-4SIWBWKZ.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;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,2CA28CP"}
@@ -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":"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;
@@ -1 +1 @@
1
- {"version":3,"file":"useMediaPipeline.d.ts","sourceRoot":"","sources":["../../src/hooks/useMediaPipeline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,SAAS,EAAmB,MAAM,gBAAgB,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAiC,MAAM,gBAAgB,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AAUxF,UAAU,qBAAqB;IAC7B,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;IACtE,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACnE,oBAAoB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACpE,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtE,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAIvE,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,GACd,EAAE,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BA0R8B,IAAI,EAAE;6BA4CR,MAAM,EAAE;+BA+CZ,MAAM,OAAO,MAAM;;;wBA2B1B,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;EA8EpF"}
1
+ {"version":3,"file":"useMediaPipeline.d.ts","sourceRoot":"","sources":["../../src/hooks/useMediaPipeline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,SAAS,EAAmB,MAAM,gBAAgB,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAiC,MAAM,gBAAgB,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AAexF,UAAU,qBAAqB;IAC7B,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;IACtE,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACnE,oBAAoB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACpE,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtE,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAIvE,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAG1C,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,cAAc,GACf,EAAE,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAkS8B,IAAI,EAAE,mBAAkB,MAAM,GAAG,IAAI;6BAyDvC,MAAM,EAAE;+BA+CZ,MAAM,OAAO,MAAM;+BAiBnB,MAAM,YAAY,MAAM,GAAG,IAAI,KAAG,MAAM;6BAW1C,MAAM,QAAQ,MAAM;2BAWtB,MAAM,YAAY,MAAM,GAAG,IAAI;6BA4BvB,MAAM,YAAY,MAAM,GAAG,QAAQ;2BAd3C,MAAM,EAAE,YAAY,MAAM,GAAG,IAAI;kCA4DhE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EAAE,mBAC9B,MAAM,GAAG,IAAI;;;wBAiCO,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;EAoFpF"}
package/dist/index.js CHANGED
@@ -32,6 +32,7 @@ import {
32
32
  ProcessingQueue,
33
33
  displayFilename,
34
34
  displayFilenameExt,
35
+ displayName,
35
36
  formatFileSize,
36
37
  generateVideoPoster,
37
38
  getMediaProvider,
@@ -42,13 +43,13 @@ import {
42
43
  resolveMedia,
43
44
  sanitizeMediaName,
44
45
  setMediaProvider
45
- } from "./chunk-S55OZ7F2.js";
46
+ } from "./chunk-3LNKOLZP.js";
46
47
  import {
47
48
  AudienceColorSchema,
48
49
  AudienceNameSchema,
49
50
  MediaGridOptionsSchema,
50
51
  slugifyAudienceName
51
- } from "./chunk-SFKYUKVN.js";
52
+ } from "./chunk-MK4POMLZ.js";
52
53
  import {
53
54
  AudienceSchema,
54
55
  RoleSchema,
@@ -70,7 +71,7 @@ import {
70
71
  loadStaticSiteContent,
71
72
  mergeSiteContent,
72
73
  safeRedirect
73
- } from "./chunk-XFDEUK37.js";
74
+ } from "./chunk-Z5IYWUW3.js";
74
75
  import {
75
76
  createEvent,
76
77
  darkModeEvent,
@@ -111,6 +112,7 @@ import {
111
112
  ImageManifestSchema,
112
113
  IndexSchema,
113
114
  MediaConfigSchema,
115
+ MediaFolderSchema,
114
116
  MediaItemSchema,
115
117
  MediaReferenceSchema,
116
118
  PageSchema,
@@ -122,7 +124,7 @@ import {
122
124
  TextLineSchema,
123
125
  VariantSchema,
124
126
  normalizeSiteIndex
125
- } from "./chunk-SWIHUIFT.js";
127
+ } from "./chunk-4SIWBWKZ.js";
126
128
  import {
127
129
  clearRegistry,
128
130
  createRegistry,
@@ -173,6 +175,7 @@ export {
173
175
  LinkValueSchema,
174
176
  MIME_TO_EXT,
175
177
  MediaConfigSchema,
178
+ MediaFolderSchema,
176
179
  MediaGridOptionsSchema,
177
180
  MediaItemSchema,
178
181
  MediaReferenceSchema,
@@ -208,6 +211,7 @@ export {
208
211
  deriveUiCapabilities,
209
212
  displayFilename,
210
213
  displayFilenameExt,
214
+ displayName,
211
215
  editModeEvent,
212
216
  ensureSanitizer,
213
217
  env,