@drawnagency/primitives 0.1.43 → 0.1.45

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 (45) hide show
  1. package/dist/{chunk-VY67DS3O.js → chunk-L2JJFOXD.js} +6 -0
  2. package/dist/components/editor/IndicatorPill.d.ts.map +1 -1
  3. package/dist/components/primitives/EditableRichText.d.ts.map +1 -1
  4. package/dist/components/primitives/ImageDropZone.d.ts +15 -0
  5. package/dist/components/primitives/ImageDropZone.d.ts.map +1 -0
  6. package/dist/components/primitives/RichTextToolbar.d.ts.map +1 -1
  7. package/dist/components/sections/LinkHeading/index.d.ts.map +1 -1
  8. package/dist/components/sections/MediaGrid/MediaGrid.d.ts.map +1 -1
  9. package/dist/components/sections/SplitContent/SplitContent.d.ts.map +1 -1
  10. package/dist/components/sections/SubHeading/index.d.ts.map +1 -1
  11. package/dist/components/sections/SubSubHeading/index.d.ts.map +1 -1
  12. package/dist/components/shared/UploadRejectionAlert.d.ts +15 -0
  13. package/dist/components/shared/UploadRejectionAlert.d.ts.map +1 -0
  14. package/dist/components/shell/BugReportFAB.d.ts +1 -5
  15. package/dist/components/shell/BugReportFAB.d.ts.map +1 -1
  16. package/dist/components/shell/EditorShell.d.ts.map +1 -1
  17. package/dist/components/shell/MediaLibraryContext.d.ts +4 -0
  18. package/dist/components/shell/MediaLibraryContext.d.ts.map +1 -1
  19. package/dist/components/shell/MediaLibraryModal.d.ts.map +1 -1
  20. package/dist/hooks/useMediaPipeline.d.ts.map +1 -1
  21. package/dist/index.js +3 -1
  22. package/dist/media/index.js +3 -1
  23. package/dist/media/utils.d.ts +1 -0
  24. package/dist/media/utils.d.ts.map +1 -1
  25. package/dist/types/database.d.ts +3 -0
  26. package/dist/types/database.d.ts.map +1 -1
  27. package/package.json +1 -1
  28. package/src/components/editor/IndicatorPill.tsx +4 -1
  29. package/src/components/primitives/EditableRichText.tsx +1 -0
  30. package/src/components/primitives/ImageDropZone.tsx +74 -0
  31. package/src/components/primitives/RichTextToolbar.tsx +42 -31
  32. package/src/components/primitives/tiptap-presets.ts +1 -1
  33. package/src/components/sections/LinkHeading/index.tsx +0 -1
  34. package/src/components/sections/MediaGrid/MediaGrid.tsx +18 -5
  35. package/src/components/sections/SplitContent/SplitContent.tsx +8 -7
  36. package/src/components/sections/SubHeading/index.tsx +0 -1
  37. package/src/components/sections/SubSubHeading/index.tsx +0 -1
  38. package/src/components/shared/UploadRejectionAlert.tsx +52 -0
  39. package/src/components/shell/BugReportFAB.tsx +21 -31
  40. package/src/components/shell/EditorShell.tsx +13 -1
  41. package/src/components/shell/MediaLibraryContext.tsx +1 -0
  42. package/src/components/shell/MediaLibraryModal.tsx +10 -19
  43. package/src/hooks/useMediaPipeline.ts +3 -0
  44. package/src/media/utils.ts +6 -0
  45. package/src/types/database.ts +3 -0
@@ -51,6 +51,11 @@ function displayFilename(originalName, mimeType) {
51
51
  if (originalName.endsWith(suffix)) return originalName;
52
52
  return `${originalName}${suffix}`;
53
53
  }
54
+ function formatFileSize(bytes) {
55
+ if (bytes >= 1048576) return `${Math.round(bytes / 1048576)}MB`;
56
+ if (bytes >= 1024) return `${Math.round(bytes / 1024)}KB`;
57
+ return `${bytes}B`;
58
+ }
54
59
 
55
60
  // src/media/queue.ts
56
61
  var ProcessingQueue = class {
@@ -295,6 +300,7 @@ export {
295
300
  mimeToExt,
296
301
  displayFilenameExt,
297
302
  displayFilename,
303
+ formatFileSize,
298
304
  ProcessingQueue,
299
305
  resolveMedia,
300
306
  resolveManifestReferences,
@@ -1 +1 @@
1
- {"version":3,"file":"IndicatorPill.d.ts","sourceRoot":"","sources":["../../../src/components/editor/IndicatorPill.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAItE,UAAU,MAAM;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,0FAA0F;IAC1F,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,SAAS,CAAC,CAAC;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,eAAe,EACf,SAAS,GACV,EAAE,kBAAkB,2CA0FpB"}
1
+ {"version":3,"file":"IndicatorPill.d.ts","sourceRoot":"","sources":["../../../src/components/editor/IndicatorPill.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAItE,UAAU,MAAM;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,0FAA0F;IAC1F,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,SAAS,CAAC,CAAC;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,eAAe,EACf,SAAS,GACV,EAAE,kBAAkB,2CA6FpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"EditableRichText.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/EditableRichText.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,UAAU,qBAAqB;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAQD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,UAAU,EACV,MAAe,EACf,SAAS,EACT,WAAiC,GAClC,EAAE,qBAAqB,2CAuHvB"}
1
+ {"version":3,"file":"EditableRichText.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/EditableRichText.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,UAAU,qBAAqB;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAQD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,UAAU,EACV,MAAe,EACf,SAAS,EACT,WAAiC,GAClC,EAAE,qBAAqB,2CAwHvB"}
@@ -0,0 +1,15 @@
1
+ import { type ReactNode } from "react";
2
+ interface ImageDropZoneProps {
3
+ onImageSelected: (imageId: string) => void;
4
+ className?: string;
5
+ children: ReactNode;
6
+ }
7
+ /**
8
+ * Wraps an image slot and turns it into a native-HTML file drop target.
9
+ * Only reacts to drags carrying files, so it never intercepts the grid's
10
+ * pragmatic drag-and-drop reorder (which carries no `Files`). No media
11
+ * library context (viewer / not edit mode) → renders children unchanged.
12
+ */
13
+ export declare function ImageDropZone({ onImageSelected, className, children }: ImageDropZoneProps): import("react/jsx-runtime").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=ImageDropZone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageDropZone.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/ImageDropZone.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIjE,UAAU,kBAAkB;IAC1B,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAKD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,kBAAkB,2CAsDzF"}
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextToolbar.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/RichTextToolbar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;CACpB;AAoCD,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CAyHvE"}
1
+ {"version":3,"file":"RichTextToolbar.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/RichTextToolbar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;CACpB;AAoCD,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CAmIvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/LinkHeading/index.tsx"],"names":[],"mappings":";;;;;;AAUA,wBAiBG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/LinkHeading/index.tsx"],"names":[],"mappings":";;;;;;AAUA,wBAgBG"}
@@ -1 +1 @@
1
- {"version":3,"file":"MediaGrid.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/MediaGrid/MediaGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAOhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,UAAU,KAAK;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;CACzD;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,2CAgChI"}
1
+ {"version":3,"file":"MediaGrid.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/MediaGrid/MediaGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAOhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,UAAU,KAAK;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;CACzD;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,2CAgChI"}
@@ -1 +1 @@
1
- {"version":3,"file":"SplitContent.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/SplitContent/SplitContent.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIhE,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CAC9C;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,aAAsB,EAAE,QAAQ,EAAE,EAAE,KAAK,2CA8DxH"}
1
+ {"version":3,"file":"SplitContent.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/SplitContent/SplitContent.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIhE,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CAC9C;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,aAAsB,EAAE,QAAQ,EAAE,EAAE,KAAK,2CA8DxH"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/SubHeading/index.tsx"],"names":[],"mappings":";;;;;;;AAUA,wBAoBG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/SubHeading/index.tsx"],"names":[],"mappings":";;;;;;;AAUA,wBAmBG"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/SubSubHeading/index.tsx"],"names":[],"mappings":";;;;;;;AAUA,wBAoBG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/SubSubHeading/index.tsx"],"names":[],"mappings":";;;;;;;AAUA,wBAmBG"}
@@ -0,0 +1,15 @@
1
+ export interface UploadRejection {
2
+ name: string;
3
+ reason: "size" | "type";
4
+ }
5
+ /**
6
+ * Compose a human-readable message from a list of rejected uploads.
7
+ * Inline drops only ever send one file, so the single-file branches are the
8
+ * common path; the multi-file branch keeps the helper reusable by the modal.
9
+ */
10
+ export declare function formatRejections(files: UploadRejection[], maxFileSize?: number): string;
11
+ export declare function UploadRejectionAlert({ message, onDismiss, }: {
12
+ message: string;
13
+ onDismiss: () => void;
14
+ }): import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=UploadRejectionAlert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UploadRejectionAlert.d.ts","sourceRoot":"","sources":["../../../src/components/shared/UploadRejectionAlert.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAiBvF;AAED,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,SAAS,GACV,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,2CAaA"}
@@ -1,6 +1,2 @@
1
- interface Props {
2
- siteId: string;
3
- }
4
- export declare function BugReportFAB({ siteId }: Props): import("react/jsx-runtime").JSX.Element | null;
5
- export {};
1
+ export declare function BugReportFAB(): import("react/jsx-runtime").JSX.Element | null;
6
2
  //# sourceMappingURL=BugReportFAB.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BugReportFAB.d.ts","sourceRoot":"","sources":["../../../src/components/shell/BugReportFAB.tsx"],"names":[],"mappings":"AAOA,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AA0BD,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,kDA0T7C"}
1
+ {"version":3,"file":"BugReportFAB.d.ts","sourceRoot":"","sources":["../../../src/components/shell/BugReportFAB.tsx"],"names":[],"mappings":"AA4BA,wBAAgB,YAAY,mDAuT3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"EditorShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/EditorShell.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAsDjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAQxD,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,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;CACjE;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,OAAO,EACP,MAAM,EACN,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EACZ,WAAW,GACZ,EAAE,KAAK,2CA0oBP"}
1
+ {"version":3,"file":"EditorShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/EditorShell.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAuDjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAQxD,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,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;CACjE;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,OAAO,EACP,MAAM,EACN,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EACZ,WAAW,GACZ,EAAE,KAAK,2CAqpBP"}
@@ -4,6 +4,10 @@ export interface MediaLibraryContextValue {
4
4
  openSelectModal: (onSelect: (imageId: string) => void) => void;
5
5
  uploadFile: (file: File) => void;
6
6
  uploadFileWithCallback: (file: File, onComplete: (imageId: string) => void) => string;
7
+ reportRejectedUploads: (files: {
8
+ name: string;
9
+ reason: "size" | "type";
10
+ }[]) => void;
7
11
  manifest: MediaManifest;
8
12
  pendingItems: MediaItem[];
9
13
  pendingLocalUrls: Record<string, string>;
@@ -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,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,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 +1 @@
1
- {"version":3,"file":"MediaLibraryModal.d.ts","sourceRoot":"","sources":["../../../src/components/shell/MediaLibraryModal.tsx"],"names":[],"mappings":"AAKA,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;CACtB;AA4ED,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,WAAgB,EAChB,WAAW,GACZ,EAAE,sBAAsB,2CAuQxB"}
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;CACtB;AAsED,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,WAAgB,EAChB,WAAW,GACZ,EAAE,sBAAsB,2CAmQxB"}
@@ -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;AA0BxF,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;CACxE;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,GACjB,EAAE,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BA6H8B,IAAI,EAAE;6BAyBR,MAAM,EAAE;+BA+CZ,MAAM,OAAO,MAAM;;;wBA+B1B,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;EAwEpF"}
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;AA0BxF,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;CACxE;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,GACjB,EAAE,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BA6H8B,IAAI,EAAE;6BAyBR,MAAM,EAAE;+BA+CZ,MAAM,OAAO,MAAM;;;wBA+B1B,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;EA2EpF"}
package/dist/index.js CHANGED
@@ -75,6 +75,7 @@ import {
75
75
  ProcessingQueue,
76
76
  displayFilename,
77
77
  displayFilenameExt,
78
+ formatFileSize,
78
79
  generateVideoPoster,
79
80
  getMediaProvider,
80
81
  hashFileBuffer,
@@ -83,7 +84,7 @@ import {
83
84
  resolveMedia,
84
85
  sanitizeMediaName,
85
86
  setMediaProvider
86
- } from "./chunk-VY67DS3O.js";
87
+ } from "./chunk-L2JJFOXD.js";
87
88
  import {
88
89
  ImageManifestSchema,
89
90
  MediaConfigSchema,
@@ -131,6 +132,7 @@ export {
131
132
  editModeEvent,
132
133
  ensureSanitizer,
133
134
  env,
135
+ formatFileSize,
134
136
  formatTimestamp,
135
137
  generateNavLinks,
136
138
  generateVideoPoster,
@@ -4,6 +4,7 @@ import {
4
4
  ProcessingQueue,
5
5
  displayFilename,
6
6
  displayFilenameExt,
7
+ formatFileSize,
7
8
  generateVideoPoster,
8
9
  getMediaProvider,
9
10
  hashFileBuffer,
@@ -12,7 +13,7 @@ import {
12
13
  resolveMedia,
13
14
  sanitizeMediaName,
14
15
  setMediaProvider
15
- } from "../chunk-VY67DS3O.js";
16
+ } from "../chunk-L2JJFOXD.js";
16
17
  import {
17
18
  ImageManifestSchema,
18
19
  MediaConfigSchema,
@@ -29,6 +30,7 @@ export {
29
30
  VariantSchema,
30
31
  displayFilename,
31
32
  displayFilenameExt,
33
+ formatFileSize,
32
34
  generateVideoPoster,
33
35
  getMediaProvider,
34
36
  hashFileBuffer,
@@ -5,4 +5,5 @@ export declare const EXT_TO_MIME: Record<string, string>;
5
5
  export declare function mimeToExt(mime: string): string;
6
6
  export declare function displayFilenameExt(mime: string): string;
7
7
  export declare function displayFilename(originalName: string, mimeType: string): string;
8
+ export declare function formatFileSize(bytes: number): string;
8
9
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/media/utils.ts"],"names":[],"mappings":"AAAA,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBzE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI9C,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK9C,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM9E"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/media/utils.ts"],"names":[],"mappings":"AAAA,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBzE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI9C,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK9C,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM9E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIpD"}
@@ -71,6 +71,7 @@ export type Database = {
71
71
  images: Json;
72
72
  is_critical: boolean;
73
73
  site_id: string;
74
+ status: string;
74
75
  user_id: string;
75
76
  };
76
77
  Insert: {
@@ -82,6 +83,7 @@ export type Database = {
82
83
  images?: Json;
83
84
  is_critical?: boolean;
84
85
  site_id: string;
86
+ status?: string;
85
87
  user_id: string;
86
88
  };
87
89
  Update: {
@@ -93,6 +95,7 @@ export type Database = {
93
95
  images?: Json;
94
96
  is_critical?: boolean;
95
97
  site_id?: string;
98
+ status?: string;
96
99
  user_id?: string;
97
100
  };
98
101
  Relationships: [
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/types/database.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GACZ,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GACnC,IAAI,EAAE,CAAA;AAEV,MAAM,MAAM,QAAQ,GAAG;IAGrB,kBAAkB,EAAE;QAClB,gBAAgB,EAAE,MAAM,CAAA;KACzB,CAAA;IACD,cAAc,EAAE;QACd,MAAM,EAAE;aACL,CAAC,IAAI,KAAK,GAAG,KAAK;SACpB,CAAA;QACD,KAAK,EAAE;aACJ,CAAC,IAAI,KAAK,GAAG,KAAK;SACpB,CAAA;QACD,SAAS,EAAE;YACT,OAAO,EAAE;gBACP,IAAI,EAAE;oBACJ,UAAU,CAAC,EAAE,IAAI,CAAA;oBACjB,aAAa,CAAC,EAAE,MAAM,CAAA;oBACtB,KAAK,CAAC,EAAE,MAAM,CAAA;oBACd,SAAS,CAAC,EAAE,IAAI,CAAA;iBACjB,CAAA;gBACD,OAAO,EAAE,IAAI,CAAA;aACd,CAAA;SACF,CAAA;QACD,KAAK,EAAE;aACJ,CAAC,IAAI,KAAK,GAAG,KAAK;SACpB,CAAA;QACD,cAAc,EAAE;aACb,CAAC,IAAI,KAAK,GAAG,KAAK;SACpB,CAAA;KACF,CAAA;IACD,MAAM,EAAE;QACN,MAAM,EAAE;YACN,eAAe,EAAE;gBACf,GAAG,EAAE;oBACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAA;oBACrC,EAAE,EAAE,MAAM,CAAA;oBACV,OAAO,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBACtC,EAAE,CAAC,EAAE,MAAM,CAAA;oBACX,OAAO,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBACtC,EAAE,CAAC,EAAE,MAAM,CAAA;oBACX,OAAO,CAAC,EAAE,MAAM,CAAA;iBACjB,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,6CAA6C,CAAA;wBAC7D,OAAO,EAAE,CAAC,wBAAwB,CAAC,CAAA;wBACnC,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,sBAAsB,CAAA;wBAC1C,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAA;qBAC1B;iBACF,CAAA;aACF,CAAA;YACD,WAAW,EAAE;gBACX,GAAG,EAAE;oBACH,QAAQ,EAAE,MAAM,CAAA;oBAChB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAA;oBACpB,UAAU,EAAE,MAAM,CAAA;oBAClB,WAAW,EAAE,MAAM,CAAA;oBACnB,EAAE,EAAE,MAAM,CAAA;oBACV,MAAM,EAAE,IAAI,CAAA;oBACZ,WAAW,EAAE,OAAO,CAAA;oBACpB,OAAO,EAAE,MAAM,CAAA;oBACf,OAAO,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,MAAM,EAAE;oBACN,QAAQ,EAAE,MAAM,CAAA;oBAChB,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;oBACrB,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,WAAW,EAAE,MAAM,CAAA;oBACnB,EAAE,CAAC,EAAE,MAAM,CAAA;oBACX,MAAM,CAAC,EAAE,IAAI,CAAA;oBACb,WAAW,CAAC,EAAE,OAAO,CAAA;oBACrB,OAAO,EAAE,MAAM,CAAA;oBACf,OAAO,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,MAAM,EAAE;oBACN,QAAQ,CAAC,EAAE,MAAM,CAAA;oBACjB,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;oBACrB,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,WAAW,CAAC,EAAE,MAAM,CAAA;oBACpB,EAAE,CAAC,EAAE,MAAM,CAAA;oBACX,MAAM,CAAC,EAAE,IAAI,CAAA;oBACb,WAAW,CAAC,EAAE,OAAO,CAAA;oBACrB,OAAO,CAAC,EAAE,MAAM,CAAA;oBAChB,OAAO,CAAC,EAAE,MAAM,CAAA;iBACjB,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,0BAA0B,CAAA;wBAC1C,OAAO,EAAE,CAAC,SAAS,CAAC,CAAA;wBACpB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAA;qBAC1B;iBACF,CAAA;aACF,CAAA;YACD,aAAa,EAAE;gBACb,GAAG,EAAE;oBACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,UAAU,EAAE,MAAM,CAAA;oBAClB,SAAS,EAAE,MAAM,CAAA;oBACjB,UAAU,EAAE,MAAM,CAAA;oBAClB,OAAO,EAAE,MAAM,CAAA;oBACf,KAAK,EAAE,MAAM,CAAA;oBACb,UAAU,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,SAAS,EAAE,MAAM,CAAA;oBACjB,UAAU,EAAE,MAAM,CAAA;oBAClB,OAAO,EAAE,MAAM,CAAA;oBACf,KAAK,EAAE,MAAM,CAAA;oBACb,UAAU,CAAC,EAAE,MAAM,CAAA;iBACpB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,OAAO,CAAC,EAAE,MAAM,CAAA;oBAChB,KAAK,CAAC,EAAE,MAAM,CAAA;oBACd,UAAU,CAAC,EAAE,MAAM,CAAA;iBACpB,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,4BAA4B,CAAA;wBAC5C,OAAO,EAAE,CAAC,SAAS,CAAC,CAAA;wBACpB,UAAU,EAAE,IAAI,CAAA;wBAChB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAA;qBAC1B;iBACF,CAAA;aACF,CAAA;YACD,oBAAoB,EAAE;gBACpB,GAAG,EAAE;oBACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,oBAAoB,EAAE,MAAM,CAAA;oBAC5B,mBAAmB,EAAE,MAAM,CAAA;oBAC3B,sBAAsB,EAAE,MAAM,CAAA;oBAC9B,EAAE,EAAE,MAAM,CAAA;oBACV,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC3B,MAAM,EAAE,MAAM,CAAA;iBACf,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,oBAAoB,EAAE,MAAM,CAAA;oBAC5B,mBAAmB,EAAE,MAAM,CAAA;oBAC3B,sBAAsB,EAAE,MAAM,CAAA;oBAC9B,EAAE,CAAC,EAAE,MAAM,CAAA;oBACX,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAA;oBAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAA;oBAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAA;oBAC/B,EAAE,CAAC,EAAE,MAAM,CAAA;oBACX,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,wCAAwC,CAAA;wBACxD,OAAO,EAAE,CAAC,cAAc,CAAC,CAAA;wBACzB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,gBAAgB,CAAA;wBACpC,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAA;qBAC1B;iBACF,CAAA;aACF,CAAA;YACD,oBAAoB,EAAE;gBACpB,GAAG,EAAE;oBACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,eAAe,EAAE,MAAM,CAAA;oBACvB,gBAAgB,EAAE,MAAM,CAAA;oBACxB,IAAI,EAAE,MAAM,CAAA;iBACb,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,eAAe,EAAE,MAAM,CAAA;oBACvB,gBAAgB,EAAE,MAAM,CAAA;oBACxB,IAAI,CAAC,EAAE,MAAM,CAAA;iBACd,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,eAAe,CAAC,EAAE,MAAM,CAAA;oBACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;oBACzB,IAAI,CAAC,EAAE,MAAM,CAAA;iBACd,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,2CAA2C,CAAA;wBAC3D,OAAO,EAAE,CAAC,iBAAiB,CAAC,CAAA;wBAC5B,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,sBAAsB,CAAA;wBAC1C,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAA;qBAC1B;oBACD;wBACE,cAAc,EAAE,4CAA4C,CAAA;wBAC5D,OAAO,EAAE,CAAC,kBAAkB,CAAC,CAAA;wBAC7B,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,gBAAgB,CAAA;wBACpC,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAA;qBAC1B;iBACF,CAAA;aACF,CAAA;YACD,cAAc,EAAE;gBACd,GAAG,EAAE;oBACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,KAAK,EAAE,MAAM,CAAA;oBACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,EAAE,EAAE,MAAM,CAAA;oBACV,IAAI,EAAE,MAAM,CAAA;oBACZ,OAAO,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,KAAK,EAAE,MAAM,CAAA;oBACb,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,EAAE,CAAC,EAAE,MAAM,CAAA;oBACX,IAAI,EAAE,MAAM,CAAA;oBACZ,OAAO,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;oBACd,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,EAAE,CAAC,EAAE,MAAM,CAAA;oBACX,IAAI,CAAC,EAAE,MAAM,CAAA;oBACb,OAAO,CAAC,EAAE,MAAM,CAAA;iBACjB,CAAA;gBACD,aAAa,EAAE,EAAE,CAAA;aAClB,CAAA;YACD,aAAa,EAAE;gBACb,GAAG,EAAE;oBACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,EAAE,EAAE,MAAM,CAAA;oBACV,QAAQ,EAAE,MAAM,CAAA;oBAChB,OAAO,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,EAAE,CAAC,EAAE,MAAM,CAAA;oBACX,QAAQ,EAAE,MAAM,CAAA;oBAChB,OAAO,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,EAAE,CAAC,EAAE,MAAM,CAAA;oBACX,QAAQ,CAAC,EAAE,MAAM,CAAA;oBACjB,OAAO,CAAC,EAAE,MAAM,CAAA;iBACjB,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,4BAA4B,CAAA;wBAC5C,OAAO,EAAE,CAAC,SAAS,CAAC,CAAA;wBACpB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAA;qBAC1B;iBACF,CAAA;aACF,CAAA;YACD,UAAU,EAAE;gBACV,GAAG,EAAE;oBACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,KAAK,EAAE,MAAM,CAAA;oBACb,EAAE,EAAE,MAAM,CAAA;oBACV,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,IAAI,EAAE,MAAM,CAAA;oBACZ,OAAO,EAAE,MAAM,CAAA;oBACf,OAAO,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,KAAK,EAAE,MAAM,CAAA;oBACb,EAAE,CAAC,EAAE,MAAM,CAAA;oBACX,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,IAAI,EAAE,MAAM,CAAA;oBACZ,OAAO,EAAE,MAAM,CAAA;oBACf,OAAO,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;oBACd,EAAE,CAAC,EAAE,MAAM,CAAA;oBACX,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;oBACb,OAAO,CAAC,EAAE,MAAM,CAAA;oBAChB,OAAO,CAAC,EAAE,MAAM,CAAA;iBACjB,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,yBAAyB,CAAA;wBACzC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAA;wBACpB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAA;qBAC1B;iBACF,CAAA;aACF,CAAA;YACD,KAAK,EAAE;gBACL,GAAG,EAAE;oBACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,YAAY,EAAE,MAAM,CAAA;oBACpB,WAAW,EAAE,MAAM,CAAA;oBACnB,EAAE,EAAE,MAAM,CAAA;oBACV,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,IAAI,EAAE,MAAM,CAAA;oBACZ,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,gBAAgB,EAAE,OAAO,CAAA;oBACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,mBAAmB,EAAE,MAAM,CAAA;iBAC5B,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,YAAY,EAAE,MAAM,CAAA;oBACpB,WAAW,EAAE,MAAM,CAAA;oBACnB,EAAE,CAAC,EAAE,MAAM,CAAA;oBACX,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC/B,IAAI,EAAE,MAAM,CAAA;oBACZ,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAA;oBAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAA;iBAC7B,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,YAAY,CAAC,EAAE,MAAM,CAAA;oBACrB,WAAW,CAAC,EAAE,MAAM,CAAA;oBACpB,EAAE,CAAC,EAAE,MAAM,CAAA;oBACX,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;oBACb,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAA;oBAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAA;iBAC7B,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,4BAA4B,CAAA;wBAC5C,OAAO,EAAE,CAAC,iBAAiB,CAAC,CAAA;wBAC5B,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,sBAAsB,CAAA;wBAC1C,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAA;qBAC1B;oBACD;wBACE,cAAc,EAAE,2BAA2B,CAAA;wBAC3C,OAAO,EAAE,CAAC,gBAAgB,CAAC,CAAA;wBAC3B,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,gBAAgB,CAAA;wBACpC,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAA;qBAC1B;iBACF,CAAA;aACF,CAAA;YACD,gBAAgB,EAAE;gBAChB,GAAG,EAAE;oBACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;oBACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,YAAY,EAAE,MAAM,CAAA;oBACpB,EAAE,EAAE,MAAM,CAAA;oBACV,UAAU,EAAE,OAAO,CAAA;oBACnB,IAAI,EAAE,MAAM,CAAA;oBACZ,aAAa,EAAE,MAAM,CAAA;oBACrB,OAAO,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,MAAM,EAAE;oBACN,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,YAAY,EAAE,MAAM,CAAA;oBACpB,EAAE,CAAC,EAAE,MAAM,CAAA;oBACX,UAAU,CAAC,EAAE,OAAO,CAAA;oBACpB,IAAI,EAAE,MAAM,CAAA;oBACZ,aAAa,EAAE,MAAM,CAAA;oBACrB,OAAO,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,MAAM,EAAE;oBACN,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;oBACrB,EAAE,CAAC,EAAE,MAAM,CAAA;oBACX,UAAU,CAAC,EAAE,OAAO,CAAA;oBACpB,IAAI,CAAC,EAAE,MAAM,CAAA;oBACb,aAAa,CAAC,EAAE,MAAM,CAAA;oBACtB,OAAO,CAAC,EAAE,MAAM,CAAA;iBACjB,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,2BAA2B,CAAA;wBAC3C,OAAO,EAAE,CAAC,SAAS,CAAC,CAAA;wBACpB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAA;qBAC1B;iBACF,CAAA;aACF,CAAA;SACF,CAAA;QACD,KAAK,EAAE;aACJ,CAAC,IAAI,KAAK,GAAG,KAAK;SACpB,CAAA;QACD,SAAS,EAAE;YACT,oBAAoB,EAAE;gBAAE,IAAI,EAAE;oBAAE,YAAY,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAA;YACzE,cAAc,EAAE;gBAAE,IAAI,EAAE;oBAAE,SAAS,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,OAAO,CAAA;aAAE,CAAA;YACjE,aAAa,EAAE;gBAAE,IAAI,EAAE;oBAAE,SAAS,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,OAAO,CAAA;aAAE,CAAA;YAChE,gBAAgB,EAAE;gBAChB,IAAI,EAAE;oBAAE,SAAS,EAAE,MAAM,CAAC;oBAAC,SAAS,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC9C,OAAO,EAAE,SAAS,CAAA;aACnB,CAAA;SACF,CAAA;QACD,KAAK,EAAE;aACJ,CAAC,IAAI,KAAK,GAAG,KAAK;SACpB,CAAA;QACD,cAAc,EAAE;aACb,CAAC,IAAI,KAAK,GAAG,KAAK;SACpB,CAAA;KACF,CAAA;CACF,CAAA;AAED,KAAK,wBAAwB,GAAG,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAA;AAEpE,KAAK,aAAa,GAAG,wBAAwB,CAAC,OAAO,CAAC,MAAM,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AAEhF,MAAM,MAAM,MAAM,CAChB,+BAA+B,SAC3B,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,GACxD;IAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;CAAE,EAC9C,SAAS,SAAS,+BAA+B,SAAS;IACxD,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,MAAM,CAAC,wBAAwB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAClF,wBAAwB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAC/E,KAAK,GAAG,KAAK,IACf,+BAA+B,SAAS;IAC1C,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,CAAC,wBAAwB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAC5E,wBAAwB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS;IACjG,GAAG,EAAE,MAAM,CAAC,CAAA;CACb,GACC,CAAC,GACD,KAAK,GACP,+BAA+B,SAAS,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,GAClE,aAAa,CAAC,OAAO,CAAC,CAAC,GACzB,CAAC,aAAa,CAAC,QAAQ,CAAC,GACtB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC,SAAS;IACjE,GAAG,EAAE,MAAM,CAAC,CAAA;CACb,GACC,CAAC,GACD,KAAK,GACP,KAAK,CAAA;AAEX,MAAM,MAAM,YAAY,CACtB,+BAA+B,SAC3B,MAAM,aAAa,CAAC,QAAQ,CAAC,GAC7B;IAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;CAAE,EAC9C,SAAS,SAAS,+BAA+B,SAAS;IACxD,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,MAAM,wBAAwB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GACnF,KAAK,GAAG,KAAK,IACf,+BAA+B,SAAS;IAC1C,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,wBAAwB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS;IAC/F,MAAM,EAAE,MAAM,CAAC,CAAA;CAChB,GACC,CAAC,GACD,KAAK,GACP,+BAA+B,SAAS,MAAM,aAAa,CAAC,QAAQ,CAAC,GACnE,aAAa,CAAC,QAAQ,CAAC,CAAC,+BAA+B,CAAC,SAAS;IAC/D,MAAM,EAAE,MAAM,CAAC,CAAA;CAChB,GACC,CAAC,GACD,KAAK,GACP,KAAK,CAAA;AAEX,MAAM,MAAM,YAAY,CACtB,+BAA+B,SAC3B,MAAM,aAAa,CAAC,QAAQ,CAAC,GAC7B;IAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;CAAE,EAC9C,SAAS,SAAS,+BAA+B,SAAS;IACxD,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,MAAM,wBAAwB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GACnF,KAAK,GAAG,KAAK,IACf,+BAA+B,SAAS;IAC1C,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,wBAAwB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS;IAC/F,MAAM,EAAE,MAAM,CAAC,CAAA;CAChB,GACC,CAAC,GACD,KAAK,GACP,+BAA+B,SAAS,MAAM,aAAa,CAAC,QAAQ,CAAC,GACnE,aAAa,CAAC,QAAQ,CAAC,CAAC,+BAA+B,CAAC,SAAS;IAC/D,MAAM,EAAE,MAAM,CAAC,CAAA;CAChB,GACC,CAAC,GACD,KAAK,GACP,KAAK,CAAA;AAEX,MAAM,MAAM,KAAK,CACf,8BAA8B,SAC1B,MAAM,aAAa,CAAC,OAAO,CAAC,GAC5B;IAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;CAAE,EAC9C,QAAQ,SAAS,8BAA8B,SAAS;IACtD,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,MAAM,wBAAwB,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GACjF,KAAK,GAAG,KAAK,IACf,8BAA8B,SAAS;IACzC,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,wBAAwB,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GACrF,8BAA8B,SAAS,MAAM,aAAa,CAAC,OAAO,CAAC,GACjE,aAAa,CAAC,OAAO,CAAC,CAAC,8BAA8B,CAAC,GACtD,KAAK,CAAA;AAEX,MAAM,MAAM,cAAc,CACxB,gCAAgC,SAC5B,MAAM,aAAa,CAAC,gBAAgB,CAAC,GACrC;IAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;CAAE,EAC9C,iBAAiB,SAAS,gCAAgC,SAAS;IACjE,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,MAAM,wBAAwB,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAC5F,KAAK,GAAG,KAAK,IACf,gCAAgC,SAAS;IAC3C,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,wBAAwB,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,iBAAiB,CAAC,GACzG,gCAAgC,SAAS,MAAM,aAAa,CAAC,gBAAgB,CAAC,GAC5E,aAAa,CAAC,gBAAgB,CAAC,CAAC,gCAAgC,CAAC,GACjE,KAAK,CAAA;AAEX,eAAO,MAAM,SAAS;;;;;;;CAOZ,CAAA"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/types/database.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drawnagency/primitives",
3
- "version": "0.1.43",
3
+ "version": "0.1.45",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./package.json": "./package.json",
@@ -76,7 +76,10 @@ export function IndicatorPill({
76
76
  aria-expanded={clickContent ? clickOpen : undefined}
77
77
  aria-label={ariaLabel}
78
78
  className={cn(
79
- "cursor-pointer inline-flex items-center gap-1.5 rounded-full px-2 py-0.5 text-xs font-medium",
79
+ // align-middle keeps the inline-flex pill centred in its line box regardless of
80
+ // whether it leads with a status/audience dot — without it, the dot-less variant's
81
+ // text baseline sits ~2px lower than the dotted variant, misaligning the two pills.
82
+ "cursor-pointer inline-flex items-center gap-1.5 rounded-full px-2 py-0.5 text-xs font-medium align-middle",
80
83
  "border border-base-200 hover:bg-base-accent",
81
84
  buttonClassName,
82
85
  )}
@@ -137,6 +137,7 @@ export function EditableRichText({
137
137
  >
138
138
  <BubbleMenu
139
139
  editor={editor}
140
+ className="z-50"
140
141
  shouldShow={({ editor: ed, state }) => {
141
142
  const { from, to } = state.selection;
142
143
  return ed.isFocused && from !== to;
@@ -0,0 +1,74 @@
1
+ import { useState, type DragEvent, type ReactNode } from "react";
2
+ import { cn } from "../../lib/cn";
3
+ import { useMediaLibrary } from "../shell/MediaLibraryContext";
4
+
5
+ interface ImageDropZoneProps {
6
+ onImageSelected: (imageId: string) => void;
7
+ className?: string;
8
+ children: ReactNode;
9
+ }
10
+
11
+ // Equivalent to the media library modal's accept="image/*,video/*".
12
+ const ACCEPTED = /^(image|video)\//;
13
+
14
+ /**
15
+ * Wraps an image slot and turns it into a native-HTML file drop target.
16
+ * Only reacts to drags carrying files, so it never intercepts the grid's
17
+ * pragmatic drag-and-drop reorder (which carries no `Files`). No media
18
+ * library context (viewer / not edit mode) → renders children unchanged.
19
+ */
20
+ export function ImageDropZone({ onImageSelected, className, children }: ImageDropZoneProps) {
21
+ const mediaLibrary = useMediaLibrary();
22
+ const [dragging, setDragging] = useState(false);
23
+
24
+ if (!mediaLibrary) return <>{children}</>;
25
+
26
+ const maxFileSize = mediaLibrary.siteConfig?.media.maxFileSize;
27
+ const hasFiles = (e: DragEvent) => e.dataTransfer.types.includes("Files");
28
+
29
+ const handleDragOver = (e: DragEvent) => {
30
+ if (!hasFiles(e)) return;
31
+ e.preventDefault();
32
+ e.dataTransfer.dropEffect = "copy";
33
+ setDragging(true);
34
+ };
35
+
36
+ const handleDragLeave = (e: DragEvent) => {
37
+ if (!hasFiles(e)) return;
38
+ const related = e.relatedTarget as Node | null;
39
+ if (related && e.currentTarget.contains(related)) return;
40
+ setDragging(false);
41
+ };
42
+
43
+ const handleDrop = (e: DragEvent) => {
44
+ if (!hasFiles(e)) return;
45
+ e.preventDefault();
46
+ e.stopPropagation();
47
+ setDragging(false);
48
+ const file = e.dataTransfer.files[0];
49
+ if (!file) return;
50
+ if (!ACCEPTED.test(file.type)) {
51
+ mediaLibrary.reportRejectedUploads([{ name: file.name, reason: "type" }]);
52
+ return;
53
+ }
54
+ if (maxFileSize && file.size > maxFileSize) {
55
+ mediaLibrary.reportRejectedUploads([{ name: file.name, reason: "size" }]);
56
+ return;
57
+ }
58
+ mediaLibrary.uploadFileWithCallback(file, onImageSelected);
59
+ };
60
+
61
+ return (
62
+ <div
63
+ className={cn("relative", className)}
64
+ onDragOver={handleDragOver}
65
+ onDragLeave={handleDragLeave}
66
+ onDrop={handleDrop}
67
+ >
68
+ {children}
69
+ {dragging && (
70
+ <div className="pointer-events-none absolute inset-0 z-10 rounded-md border-2 border-primary bg-primary/5" />
71
+ )}
72
+ </div>
73
+ );
74
+ }
@@ -1,5 +1,6 @@
1
1
  import { useState } from "react";
2
2
  import type { Editor } from "@tiptap/core";
3
+ import { useEditorState } from "@tiptap/react";
3
4
  import { cn } from "../../lib/cn";
4
5
  import { LinkPopover } from "./LinkPopover";
5
6
  import type { PresetName } from "./tiptap-presets";
@@ -46,14 +47,28 @@ function Separator() {
46
47
  export function RichTextToolbar({ editor, preset }: RichTextToolbarProps) {
47
48
  const [showLinkPopover, setShowLinkPopover] = useState(false);
48
49
 
49
- const paragraphClass = editor.getAttributes("paragraph").class as string | undefined;
50
-
51
- const isLargeActive = paragraphClass === "large";
52
- const isLeadInActive = paragraphClass === "lead-in";
53
-
54
- const toggleParagraphClass = (cls: string) => {
55
- const next = paragraphClass === cls ? null : cls;
56
- editor.chain().focus().updateAttributes("paragraph", { class: next }).run();
50
+ const state = useEditorState({
51
+ editor,
52
+ selector: ({ editor: ed }) => ({
53
+ isBold: ed.isActive("bold"),
54
+ isItalic: ed.isActive("italic"),
55
+ isUnderline: ed.isActive("underline"),
56
+ isLink: ed.isActive("link"),
57
+ isBulletList: ed.isActive("bulletList"),
58
+ isOrderedList: ed.isActive("orderedList"),
59
+ isH3: ed.isActive("heading", { level: 3 }),
60
+ isH4: ed.isActive("heading", { level: 4 }),
61
+ isLarge: ed.isActive("paragraph", { class: "large" }),
62
+ isLeadIn: ed.isActive("paragraph", { class: "lead-in" }),
63
+ }),
64
+ });
65
+
66
+ const toggleParagraphVariant = (cls: string, isCurrentlyActive: boolean) => {
67
+ if (isCurrentlyActive) {
68
+ editor.chain().focus().setNode("paragraph").run();
69
+ } else {
70
+ editor.chain().focus().setNode("paragraph", { class: cls }).run();
71
+ }
57
72
  };
58
73
 
59
74
  return (
@@ -63,21 +78,21 @@ export function RichTextToolbar({ editor, preset }: RichTextToolbarProps) {
63
78
  >
64
79
  {/* Inline formatting group */}
65
80
  <ToolbarButton
66
- isActive={editor.isActive("bold")}
81
+ isActive={state.isBold}
67
82
  onClick={() => editor.chain().focus().toggleBold().run()}
68
83
  title="Bold"
69
84
  >
70
85
  <strong>B</strong>
71
86
  </ToolbarButton>
72
87
  <ToolbarButton
73
- isActive={editor.isActive("italic")}
88
+ isActive={state.isItalic}
74
89
  onClick={() => editor.chain().focus().toggleItalic().run()}
75
90
  title="Italic"
76
91
  >
77
92
  <em>I</em>
78
93
  </ToolbarButton>
79
94
  <ToolbarButton
80
- isActive={editor.isActive("underline")}
95
+ isActive={state.isUnderline}
81
96
  onClick={() => editor.chain().focus().toggleUnderline().run()}
82
97
  title="Underline"
83
98
  >
@@ -91,7 +106,7 @@ export function RichTextToolbar({ editor, preset }: RichTextToolbarProps) {
91
106
  {/* Link */}
92
107
  <div className="relative">
93
108
  <ToolbarButton
94
- isActive={editor.isActive("link") || showLinkPopover}
109
+ isActive={state.isLink || showLinkPopover}
95
110
  onClick={() => setShowLinkPopover((prev) => !prev)}
96
111
  title="Link"
97
112
  >
@@ -111,14 +126,14 @@ export function RichTextToolbar({ editor, preset }: RichTextToolbarProps) {
111
126
 
112
127
  {/* Lists */}
113
128
  <ToolbarButton
114
- isActive={editor.isActive("bulletList")}
129
+ isActive={state.isBulletList}
115
130
  onClick={() => editor.chain().focus().toggleBulletList().run()}
116
131
  title="Bullet List"
117
132
  >
118
133
  •≡
119
134
  </ToolbarButton>
120
135
  <ToolbarButton
121
- isActive={editor.isActive("orderedList")}
136
+ isActive={state.isOrderedList}
122
137
  onClick={() => editor.chain().focus().toggleOrderedList().run()}
123
138
  title="Ordered List"
124
139
  >
@@ -127,35 +142,31 @@ export function RichTextToolbar({ editor, preset }: RichTextToolbarProps) {
127
142
 
128
143
  <Separator />
129
144
 
130
- {/* Headings */}
131
- <ToolbarButton
132
- isActive={editor.isActive("heading", { level: 2 })}
133
- onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()}
134
- title="Heading 2"
135
- >
136
- H2
137
- </ToolbarButton>
145
+ {/* Block styles — mutually exclusive */}
138
146
  <ToolbarButton
139
- isActive={editor.isActive("heading", { level: 3 })}
147
+ isActive={state.isH3}
140
148
  onClick={() => editor.chain().focus().toggleHeading({ level: 3 }).run()}
141
149
  title="Heading 3"
142
150
  >
143
151
  H3
144
152
  </ToolbarButton>
145
-
146
- <Separator />
147
-
148
- {/* Paragraph variants */}
149
153
  <ToolbarButton
150
- isActive={isLargeActive}
151
- onClick={() => toggleParagraphClass("large")}
154
+ isActive={state.isH4}
155
+ onClick={() => editor.chain().focus().toggleHeading({ level: 4 }).run()}
156
+ title="Heading 4"
157
+ >
158
+ H4
159
+ </ToolbarButton>
160
+ <ToolbarButton
161
+ isActive={state.isLarge}
162
+ onClick={() => toggleParagraphVariant("large", state.isLarge)}
152
163
  title="Large Paragraph"
153
164
  >
154
165
  Lg
155
166
  </ToolbarButton>
156
167
  <ToolbarButton
157
- isActive={isLeadInActive}
158
- onClick={() => toggleParagraphClass("lead-in")}
168
+ isActive={state.isLeadIn}
169
+ onClick={() => toggleParagraphVariant("lead-in", state.isLeadIn)}
159
170
  title="Lead-In"
160
171
  >
161
172
  Li
@@ -33,7 +33,7 @@ const basic: Extensions = [
33
33
  const rich: Extensions = [
34
34
  StarterKit.configure({
35
35
  paragraph: false,
36
- heading: { levels: [2, 3] },
36
+ heading: { levels: [3, 4] },
37
37
  blockquote: false,
38
38
  codeBlock: false,
39
39
  horizontalRule: false,
@@ -19,7 +19,6 @@ export default defineSection({
19
19
  heading={content.content.heading}
20
20
  tag="h2"
21
21
  placeholder="Section heading"
22
- className="text-primary"
23
22
  onChange={onChange ? (heading: string) => onChange({ type: "link_heading", content: { heading } }) : undefined}
24
23
  />
25
24
  ),
@@ -9,6 +9,7 @@ import { EditablePlainText } from "../../primitives/EditablePlainText";
9
9
  import type { ReactNode } from "react";
10
10
  import { Check, X } from "lucide-react";
11
11
  import { useMediaLibrary } from "../../shell/MediaLibraryContext";
12
+ import { ImageDropZone } from "../../primitives/ImageDropZone";
12
13
 
13
14
  interface Props {
14
15
  media: MediaReference[];
@@ -101,11 +102,13 @@ function MediaGridEditable({ media, columns, square, border, crop, showCaptions,
101
102
  }
102
103
  };
103
104
 
105
+ const setItemImage = (index: number, imageId: string) => {
106
+ const newMedia = media.map((m, i) => i === index ? { ...m, imageId } : m);
107
+ onChange({ type: sectionType, content: { columns, media: newMedia }, ...opts } as SectionContent);
108
+ };
109
+
104
110
  const handleItemImageClick = (index: number) => {
105
- mediaLibrary?.openSelectModal((imageId) => {
106
- const newMedia = media.map((m, i) => i === index ? { ...m, imageId } : m);
107
- onChange({ type: sectionType, content: { columns, media: newMedia }, ...opts } as SectionContent);
108
- });
111
+ mediaLibrary?.openSelectModal((imageId) => setItemImage(index, imageId));
109
112
  };
110
113
 
111
114
  return (
@@ -128,6 +131,7 @@ function MediaGridEditable({ media, columns, square, border, crop, showCaptions,
128
131
  border={border}
129
132
  crop={crop}
130
133
  showCaptions={showCaptions}
134
+ onImageReplace={mediaLibrary ? (imageId) => setItemImage(index, imageId) : undefined}
131
135
  onCaptionChange={(caption) => {
132
136
  const newMedia = media.map((m, i) => i === index ? { ...m, caption: caption || undefined } : m);
133
137
  onChange({ type: sectionType, content: { columns, media: newMedia }, ...opts } as SectionContent);
@@ -146,6 +150,7 @@ function MediaGridItem({
146
150
  crop,
147
151
  showCaptions,
148
152
  onCaptionChange,
153
+ onImageReplace,
149
154
  }: {
150
155
  item: MediaReference;
151
156
  isEditMode: boolean;
@@ -154,6 +159,7 @@ function MediaGridItem({
154
159
  crop?: boolean;
155
160
  showCaptions?: boolean;
156
161
  onCaptionChange?: (caption: string) => void;
162
+ onImageReplace?: (imageId: string) => void;
157
163
  }) {
158
164
  const isDoDont = item.type === "doDontImage";
159
165
 
@@ -167,7 +173,7 @@ function MediaGridItem({
167
173
  : "";
168
174
 
169
175
  const itemAny = item as Record<string, unknown>;
170
- const media = (
176
+ const resolvedMedia = (
171
177
  <ResolvedMedia
172
178
  imageId={item.imageId || undefined}
173
179
  src={itemAny.src as string | undefined}
@@ -178,6 +184,13 @@ function MediaGridItem({
178
184
  invertFrom={item.invertFrom}
179
185
  />
180
186
  );
187
+ const media = onImageReplace ? (
188
+ <ImageDropZone onImageSelected={onImageReplace} className="h-full w-full">
189
+ {resolvedMedia}
190
+ </ImageDropZone>
191
+ ) : (
192
+ resolvedMedia
193
+ );
181
194
 
182
195
  return (
183
196
  <figure>
@@ -3,6 +3,7 @@ import { sanitizeHtml } from "../../../lib/sanitize";
3
3
  import { ResolvedMedia } from "../../primitives/ResolvedMedia";
4
4
  import { EditableRichText } from "../../primitives/EditableRichText";
5
5
  import { IconButton } from "../../shared/IconButton";
6
+ import { ImageDropZone } from "../../primitives/ImageDropZone";
6
7
  import type { SectionContent } from "../../../schemas/sections";
7
8
  import { useMediaLibrary } from "../../shell/MediaLibraryContext";
8
9
  import { ImageIcon } from "lucide-react";
@@ -47,13 +48,13 @@ export default function SplitContent({ imageId, src, srcset, alt, body, border,
47
48
  imagePosition === "right" && "lg:flex-row-reverse",
48
49
  )}>
49
50
  <div className={cn("group/img relative flex-shrink-0 lg:w-1/2", border && "overflow-hidden rounded-md border border-base-200")}>
50
- <ResolvedMedia
51
- imageId={imageId}
52
- src={src}
53
- srcset={srcset}
54
- alt={alt}
55
- className="w-full"
56
- />
51
+ {onChange && mediaLibrary ? (
52
+ <ImageDropZone onImageSelected={handleImageChange}>
53
+ <ResolvedMedia imageId={imageId} src={src} srcset={srcset} alt={alt} className="w-full" />
54
+ </ImageDropZone>
55
+ ) : (
56
+ <ResolvedMedia imageId={imageId} src={src} srcset={srcset} alt={alt} className="w-full" />
57
+ )}
57
58
  {onChange && mediaLibrary && (
58
59
  <div className="absolute top-1.5 right-1.5 z-10 opacity-0 transition-opacity group-hover/img:opacity-100">
59
60
  <IconButton
@@ -19,7 +19,6 @@ export default defineSection({
19
19
  heading={content.content.heading}
20
20
  tag="h3"
21
21
  placeholder="Sub heading"
22
- className="text-base-contrast"
23
22
  onChange={onChange ? (heading: string) => onChange({ ...content, content: { ...content.content, heading } }) : undefined}
24
23
  />
25
24
  ),
@@ -19,7 +19,6 @@ export default defineSection({
19
19
  heading={content.content.heading}
20
20
  tag="h4"
21
21
  placeholder="Sub sub heading"
22
- className="text-lg font-bold text-base-contrast"
23
22
  onChange={onChange ? (heading: string) => onChange({ ...content, content: { ...content.content, heading } }) : undefined}
24
23
  />
25
24
  ),
@@ -0,0 +1,52 @@
1
+ import { Button } from "./Button";
2
+ import { formatFileSize } from "../../media/utils";
3
+
4
+ export interface UploadRejection {
5
+ name: string;
6
+ reason: "size" | "type";
7
+ }
8
+
9
+ /**
10
+ * Compose a human-readable message from a list of rejected uploads.
11
+ * Inline drops only ever send one file, so the single-file branches are the
12
+ * common path; the multi-file branch keeps the helper reusable by the modal.
13
+ */
14
+ export function formatRejections(files: UploadRejection[], maxFileSize?: number): string {
15
+ if (files.length === 0) return "";
16
+ if (files.length === 1) {
17
+ const f = files[0];
18
+ if (f.reason === "size") {
19
+ return maxFileSize
20
+ ? `"${f.name}" exceeds the ${formatFileSize(maxFileSize)} file size limit.`
21
+ : `"${f.name}" exceeds the file size limit.`;
22
+ }
23
+ return `"${f.name}" — images and videos only.`;
24
+ }
25
+ const sizeCount = files.filter((f) => f.reason === "size").length;
26
+ const typeCount = files.length - sizeCount;
27
+ const parts: string[] = [];
28
+ if (sizeCount > 0) parts.push(`${sizeCount} too large`);
29
+ if (typeCount > 0) parts.push(`${typeCount} not an image or video`);
30
+ return `${files.length} files rejected (${parts.join(", ")}).`;
31
+ }
32
+
33
+ export function UploadRejectionAlert({
34
+ message,
35
+ onDismiss,
36
+ }: {
37
+ message: string;
38
+ onDismiss: () => void;
39
+ }) {
40
+ return (
41
+ <div role="alert" className="flex flex-col items-center rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 lg:flex-row lg:justify-between dark:border-amber-900/50 dark:bg-amber-950/30">
42
+ <p className="mb-2 text-center text-sm text-amber-800 lg:mb-0 lg:text-left dark:text-amber-200">
43
+ {message}
44
+ </p>
45
+ <div className="flex shrink-0 items-center">
46
+ <Button variant="secondary" size="sm" type="button" onClick={onDismiss}>
47
+ Dismiss
48
+ </Button>
49
+ </div>
50
+ </div>
51
+ );
52
+ }
@@ -1,13 +1,6 @@
1
1
  import { useState, useCallback, useRef, useEffect } from "react";
2
- import { createClient } from "@supabase/supabase-js";
3
- import type { Database, Json } from "../../types/database";
4
2
  import { EditorModal } from "./EditorModal";
5
3
  import { useEditorContext } from "./EditorContext";
6
- import { env } from "../../lib/env";
7
-
8
- interface Props {
9
- siteId: string;
10
- }
11
4
 
12
5
  type Category = "Visual" | "Unexpected Behavior" | "Media / Media Library" | "Save / Publish" | "Feature Request" | "Other";
13
6
 
@@ -33,7 +26,7 @@ interface ImagePreview {
33
26
  name: string;
34
27
  }
35
28
 
36
- export function BugReportFAB({ siteId }: Props) {
29
+ export function BugReportFAB() {
37
30
  const { isEditMode, historyState } = useEditorContext();
38
31
  const [isOpen, setIsOpen] = useState(false);
39
32
  const [category, setCategory] = useState<Category>("Visual");
@@ -150,30 +143,27 @@ export function BugReportFAB({ siteId }: Props) {
150
143
  setIsSubmitting(true);
151
144
 
152
145
  try {
153
- const supabase = createClient<Database>(
154
- env("SUPABASE_URL"),
155
- env("SUPABASE_ANON_KEY"),
156
- );
157
-
158
- const { data: userData } = await supabase.auth.getUser();
159
- const userId = userData?.user?.id;
160
- if (!userId) {
161
- setSubmitError("You must be signed in to report a bug.");
162
- return;
163
- }
164
-
165
- const { error } = await supabase.from("bug_reports").insert({
166
- site_id: siteId,
167
- user_id: userId,
168
- category,
169
- is_critical: isCritical,
170
- description: description.trim(),
171
- images: images.map((img) => img.dataUri),
172
- context: capturedContextRef.current as Json,
146
+ const response = await fetch("/api/bug-report", {
147
+ method: "POST",
148
+ headers: { "Content-Type": "application/json" },
149
+ body: JSON.stringify({
150
+ category,
151
+ is_critical: isCritical,
152
+ description: description.trim(),
153
+ images: images.map((img) => img.dataUri),
154
+ context: capturedContextRef.current,
155
+ }),
173
156
  });
174
157
 
175
- if (error) {
176
- setSubmitError(error.message);
158
+ if (!response.ok) {
159
+ let message = "Submission failed";
160
+ try {
161
+ const data = await response.json();
162
+ if (data?.error) message = data.error;
163
+ } catch {
164
+ // No JSON body on the error response; keep the default message.
165
+ }
166
+ setSubmitError(message);
177
167
  return;
178
168
  }
179
169
 
@@ -185,7 +175,7 @@ export function BugReportFAB({ siteId }: Props) {
185
175
  } finally {
186
176
  setIsSubmitting(false);
187
177
  }
188
- }, [siteId, category, isCritical, description, images, handleClose]);
178
+ }, [category, isCritical, description, images, handleClose]);
189
179
 
190
180
  const visible = isEditMode && historyState === null;
191
181
 
@@ -47,6 +47,7 @@ import { formatTimestamp } from "../../lib/timestamp";
47
47
  import { generateNavLinks } from "../../lib/nav";
48
48
  import { navChangeEvent, darkModeEvent, historySelectEvent } from "../../lib/events";
49
49
  import { cn } from "../../lib/cn";
50
+ import { UploadRejectionAlert, formatRejections } from "../shared/UploadRejectionAlert";
50
51
  import { Button } from "../shared/Button";
51
52
  import { SplitButton } from "../shared/SplitButton";
52
53
  import { IconButton } from "../shared/IconButton";
@@ -110,6 +111,7 @@ export default function EditorShell({
110
111
  const [showRestoreModal, setShowRestoreModal] = useState(false);
111
112
  const [showOrderingModal, setShowOrderingModal] = useState(false);
112
113
  const [isRestoring, setIsRestoring] = useState(false);
114
+ const [rejectedUploads, setRejectedUploads] = useState<{ name: string; reason: "size" | "type" }[]>([]);
113
115
 
114
116
  const siteIndexRef = useRef<SiteIndex>({ siteId, order: [], sections: {} });
115
117
  const fontLinkRef = useRef<HTMLLinkElement | null>(null);
@@ -612,6 +614,7 @@ export default function EditorShell({
612
614
  setMediaSelectCallback(() => onSelect);
613
615
  setShowMediaLibrary(true);
614
616
  },
617
+ reportRejectedUploads: (files) => setRejectedUploads(files),
615
618
  }}>
616
619
  <div className="editor-shell relative">
617
620
  <EditorToolbar
@@ -636,7 +639,16 @@ export default function EditorShell({
636
639
  onOrderingClick={() => setShowOrderingModal(true)}
637
640
  />
638
641
 
639
- <BugReportFAB siteId={siteId} />
642
+ <BugReportFAB />
643
+
644
+ {rejectedUploads.length > 0 && (
645
+ <div className="sticky top-2 z-30 mx-auto w-full max-w-3xl px-4">
646
+ <UploadRejectionAlert
647
+ message={formatRejections(rejectedUploads, siteConfig?.media.maxFileSize)}
648
+ onDismiss={() => setRejectedUploads([])}
649
+ />
650
+ </div>
651
+ )}
640
652
 
641
653
  <HistoryOrEditorContent sections={sections}>
642
654
  <EditorContent
@@ -6,6 +6,7 @@ export interface MediaLibraryContextValue {
6
6
  openSelectModal: (onSelect: (imageId: string) => void) => void;
7
7
  uploadFile: (file: File) => void;
8
8
  uploadFileWithCallback: (file: File, onComplete: (imageId: string) => void) => string;
9
+ reportRejectedUploads: (files: { name: string; reason: "size" | "type" }[]) => void;
9
10
  manifest: MediaManifest;
10
11
  pendingItems: MediaItem[];
11
12
  pendingLocalUrls: Record<string, string>;
@@ -2,9 +2,10 @@ import { useState, useRef, useCallback } from "react";
2
2
  import { Search, Upload, Trash2 } from "lucide-react";
3
3
  import { cn } from "../../lib/cn";
4
4
  import { Button } from "../shared/Button";
5
+ import { UploadRejectionAlert } from "../shared/UploadRejectionAlert";
5
6
  import { Select } from "../shared/Select";
6
7
  import type { MediaItem, MediaKind } from "../../media/types";
7
- import { displayFilename, mimeToExt } from "../../media/utils";
8
+ import { displayFilename, formatFileSize, mimeToExt } from "../../media/utils";
8
9
 
9
10
  export interface MediaLibraryModalProps {
10
11
  mode: "select" | "manage";
@@ -18,12 +19,6 @@ export interface MediaLibraryModalProps {
18
19
  maxFileSize?: number;
19
20
  }
20
21
 
21
- function formatFileSize(bytes: number): string {
22
- if (bytes >= 1048576) return `${Math.round(bytes / 1048576)}MB`;
23
- if (bytes >= 1024) return `${Math.round(bytes / 1024)}KB`;
24
- return `${bytes}B`;
25
- }
26
-
27
22
  type KindFilter = "all" | MediaKind;
28
23
 
29
24
  function thumbnailSrc(item: MediaItem, localUrls: Record<string, string>): string {
@@ -231,18 +226,14 @@ export function MediaLibraryModal({
231
226
 
232
227
  {/* File size rejection alert */}
233
228
  {rejectedFiles.length > 0 && maxFileSize && (
234
- <div className="flex flex-col items-center rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 lg:flex-row lg:justify-between dark:border-amber-900/50 dark:bg-amber-950/30">
235
- <p className="mb-2 text-center text-sm text-amber-800 lg:mb-0 lg:text-left dark:text-amber-200">
236
- {rejectedFiles.length === 1
237
- ? `"${rejectedFiles[0]}" exceeds`
238
- : `${rejectedFiles.length} files exceed`} the {formatFileSize(maxFileSize)} file size limit.
239
- </p>
240
- <div className="flex shrink-0 items-center">
241
- <Button variant="secondary" size="sm" onClick={() => setRejectedFiles([])}>
242
- Dismiss
243
- </Button>
244
- </div>
245
- </div>
229
+ <UploadRejectionAlert
230
+ message={
231
+ rejectedFiles.length === 1
232
+ ? `"${rejectedFiles[0]}" exceeds the ${formatFileSize(maxFileSize)} file size limit.`
233
+ : `${rejectedFiles.length} files exceed the ${formatFileSize(maxFileSize)} file size limit.`
234
+ }
235
+ onDismiss={() => setRejectedFiles([])}
236
+ />
246
237
  )}
247
238
  </div>
248
239
 
@@ -330,6 +330,9 @@ export function useMediaPipeline({
330
330
  });
331
331
  return blobUrl;
332
332
  },
333
+ reportRejectedUploads: () => {
334
+ // Placeholder — EditorShell overrides this with banner state.
335
+ },
333
336
  manifest: mediaManifest,
334
337
  pendingItems: pendingMediaItems,
335
338
  pendingLocalUrls: pendingLocalUrls,
@@ -54,3 +54,9 @@ export function displayFilename(originalName: string, mimeType: string): string
54
54
  if (originalName.endsWith(suffix)) return originalName;
55
55
  return `${originalName}${suffix}`;
56
56
  }
57
+
58
+ export function formatFileSize(bytes: number): string {
59
+ if (bytes >= 1048576) return `${Math.round(bytes / 1048576)}MB`;
60
+ if (bytes >= 1024) return `${Math.round(bytes / 1024)}KB`;
61
+ return `${bytes}B`;
62
+ }
@@ -78,6 +78,7 @@ export type Database = {
78
78
  images: Json
79
79
  is_critical: boolean
80
80
  site_id: string
81
+ status: string
81
82
  user_id: string
82
83
  }
83
84
  Insert: {
@@ -89,6 +90,7 @@ export type Database = {
89
90
  images?: Json
90
91
  is_critical?: boolean
91
92
  site_id: string
93
+ status?: string
92
94
  user_id: string
93
95
  }
94
96
  Update: {
@@ -100,6 +102,7 @@ export type Database = {
100
102
  images?: Json
101
103
  is_critical?: boolean
102
104
  site_id?: string
105
+ status?: string
103
106
  user_id?: string
104
107
  }
105
108
  Relationships: [