@drawnagency/primitives 0.1.9 → 0.1.11

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 (167) hide show
  1. package/dist/{chunk-MCUIFRXW.js → chunk-32H6Q6CX.js} +1 -1
  2. package/dist/{chunk-W7IA6TVD.js → chunk-6SK5BLG3.js} +1 -1
  3. package/dist/{chunk-VJV4Q4TM.js → chunk-XQXZHDNR.js} +0 -3
  4. package/dist/components/editor/SectionWrapper.d.ts.map +1 -1
  5. package/dist/components/primitives/EditableGrid.d.ts.map +1 -1
  6. package/dist/components/primitives/EditableList.d.ts.map +1 -1
  7. package/dist/components/primitives/EditableRichText.d.ts +2 -1
  8. package/dist/components/primitives/EditableRichText.d.ts.map +1 -1
  9. package/dist/components/primitives/ResolvedMedia.d.ts +4 -1
  10. package/dist/components/primitives/ResolvedMedia.d.ts.map +1 -1
  11. package/dist/components/primitives/useEditableRichText.d.ts +2 -1
  12. package/dist/components/primitives/useEditableRichText.d.ts.map +1 -1
  13. package/dist/components/sections/IconList/IconList.d.ts.map +1 -1
  14. package/dist/components/sections/Prose/Prose.d.ts.map +1 -1
  15. package/dist/components/sections/SplitContent/SplitContent.d.ts +4 -1
  16. package/dist/components/sections/SplitContent/SplitContent.d.ts.map +1 -1
  17. package/dist/components/sections/SplitContent/index.d.ts.map +1 -1
  18. package/dist/index.js +3 -3
  19. package/dist/lib/index.js +2 -2
  20. package/dist/lib/registry.d.ts.map +1 -1
  21. package/dist/schemas/index.js +2 -2
  22. package/package.json +11 -10
  23. package/src/components/brandguide/ColorSwatchSettings.d.ts +8 -0
  24. package/src/components/brandguide/ColorSwatchSettings.d.ts.map +1 -0
  25. package/src/components/brandguide/Colors.d.ts +15 -0
  26. package/src/components/brandguide/Colors.d.ts.map +1 -0
  27. package/src/components/brandguide/DoDontList.d.ts +16 -0
  28. package/src/components/brandguide/DoDontList.d.ts.map +1 -0
  29. package/src/components/brandguide/DoDontList.tsx +1 -1
  30. package/src/components/brandguide/DoDontMediaGrid.d.ts +16 -0
  31. package/src/components/brandguide/DoDontMediaGrid.d.ts.map +1 -0
  32. package/src/components/editor/SectionWrapper.tsx +65 -58
  33. package/src/components/primitives/CustomParagraph.d.ts +2 -0
  34. package/src/components/primitives/CustomParagraph.d.ts.map +1 -0
  35. package/src/components/primitives/EditableGrid.d.ts +19 -0
  36. package/src/components/primitives/EditableGrid.d.ts.map +1 -0
  37. package/src/components/primitives/EditableGrid.tsx +70 -47
  38. package/src/components/primitives/EditableList.tsx +32 -21
  39. package/src/components/primitives/EditablePlainText.d.ts +12 -0
  40. package/src/components/primitives/EditablePlainText.d.ts.map +1 -0
  41. package/src/components/primitives/EditableRichText.d.ts +12 -0
  42. package/src/components/primitives/EditableRichText.d.ts.map +1 -0
  43. package/src/components/primitives/EditableRichText.tsx +19 -3
  44. package/src/components/primitives/HeadingSection.d.ts +10 -0
  45. package/src/components/primitives/HeadingSection.d.ts.map +1 -0
  46. package/src/components/primitives/IconPicker.d.ts +9 -0
  47. package/src/components/primitives/IconPicker.d.ts.map +1 -0
  48. package/src/components/primitives/LinkPopover.d.ts +8 -0
  49. package/src/components/primitives/LinkPopover.d.ts.map +1 -0
  50. package/src/components/primitives/MediaSettingsForms.d.ts +19 -0
  51. package/src/components/primitives/MediaSettingsForms.d.ts.map +1 -0
  52. package/src/components/primitives/ResolvedMedia.d.ts +8 -0
  53. package/src/components/primitives/ResolvedMedia.d.ts.map +1 -0
  54. package/src/components/primitives/ResolvedMedia.tsx +12 -1
  55. package/src/components/primitives/RichTextToolbar.d.ts +9 -0
  56. package/src/components/primitives/RichTextToolbar.d.ts.map +1 -0
  57. package/src/components/primitives/tiptap-presets.d.ts +4 -0
  58. package/src/components/primitives/tiptap-presets.d.ts.map +1 -0
  59. package/src/components/primitives/useEditableCollection.d.ts +19 -0
  60. package/src/components/primitives/useEditableCollection.d.ts.map +1 -0
  61. package/src/components/primitives/useEditablePlainText.d.ts +14 -0
  62. package/src/components/primitives/useEditablePlainText.d.ts.map +1 -0
  63. package/src/components/primitives/useEditableRichText.d.ts +17 -0
  64. package/src/components/primitives/useEditableRichText.d.ts.map +1 -0
  65. package/src/components/primitives/useEditableRichText.ts +8 -2
  66. package/src/components/sections/Button/CTAButton.d.ts +11 -0
  67. package/src/components/sections/Button/CTAButton.d.ts.map +1 -0
  68. package/src/components/sections/Button/index.d.ts +11 -0
  69. package/src/components/sections/Button/index.d.ts.map +1 -0
  70. package/src/components/sections/Colors/index.d.ts +22 -0
  71. package/src/components/sections/Colors/index.d.ts.map +1 -0
  72. package/src/components/sections/DoDontList/index.d.ts +21 -0
  73. package/src/components/sections/DoDontList/index.d.ts.map +1 -0
  74. package/src/components/sections/DoDontMediaGrid/index.d.ts +55 -0
  75. package/src/components/sections/DoDontMediaGrid/index.d.ts.map +1 -0
  76. package/src/components/sections/IconList/IconList.d.ts +20 -0
  77. package/src/components/sections/IconList/IconList.d.ts.map +1 -0
  78. package/src/components/sections/IconList/IconList.tsx +57 -36
  79. package/src/components/sections/IconList/IconListSettings.d.ts +11 -0
  80. package/src/components/sections/IconList/IconListSettings.d.ts.map +1 -0
  81. package/src/components/sections/IconList/index.d.ts +17 -0
  82. package/src/components/sections/IconList/index.d.ts.map +1 -0
  83. package/src/components/sections/LinkHeading/index.d.ts +8 -0
  84. package/src/components/sections/LinkHeading/index.d.ts.map +1 -0
  85. package/src/components/sections/MediaGrid/MediaGrid.d.ts +17 -0
  86. package/src/components/sections/MediaGrid/MediaGrid.d.ts.map +1 -0
  87. package/src/components/sections/MediaGrid/MediaGrid.tsx +4 -0
  88. package/src/components/sections/MediaGrid/index.d.ts +55 -0
  89. package/src/components/sections/MediaGrid/index.d.ts.map +1 -0
  90. package/src/components/sections/Prose/Prose.d.ts +8 -0
  91. package/src/components/sections/Prose/Prose.d.ts.map +1 -0
  92. package/src/components/sections/Prose/Prose.tsx +1 -0
  93. package/src/components/sections/Prose/index.d.ts +8 -0
  94. package/src/components/sections/Prose/index.d.ts.map +1 -0
  95. package/src/components/sections/SplitContent/SplitContent.d.ts +11 -0
  96. package/src/components/sections/SplitContent/SplitContent.d.ts.map +1 -0
  97. package/src/components/sections/SplitContent/SplitContent.tsx +7 -1
  98. package/src/components/sections/SplitContent/SplitContentSettings.d.ts +9 -0
  99. package/src/components/sections/SplitContent/SplitContentSettings.d.ts.map +1 -0
  100. package/src/components/sections/SplitContent/index.d.ts +13 -0
  101. package/src/components/sections/SplitContent/index.d.ts.map +1 -0
  102. package/src/components/sections/SplitContent/index.tsx +3 -0
  103. package/src/components/sections/SubHeading/index.d.ts +9 -0
  104. package/src/components/sections/SubHeading/index.d.ts.map +1 -0
  105. package/src/components/sections/SubSubHeading/index.d.ts +9 -0
  106. package/src/components/sections/SubSubHeading/index.d.ts.map +1 -0
  107. package/src/components/sections/register-schemas.d.ts +2 -0
  108. package/src/components/sections/register-schemas.d.ts.map +1 -0
  109. package/src/components/shared/Button.d.ts +15 -0
  110. package/src/components/shared/Button.d.ts.map +1 -0
  111. package/src/components/shared/Checkbox.d.ts +14 -0
  112. package/src/components/shared/Checkbox.d.ts.map +1 -0
  113. package/src/components/shared/FormLabel.d.ts +8 -0
  114. package/src/components/shared/FormLabel.d.ts.map +1 -0
  115. package/src/components/shared/IconButton.d.ts +12 -0
  116. package/src/components/shared/IconButton.d.ts.map +1 -0
  117. package/src/components/shared/Input.d.ts +8 -0
  118. package/src/components/shared/Input.d.ts.map +1 -0
  119. package/src/components/shared/Select.d.ts +16 -0
  120. package/src/components/shared/Select.d.ts.map +1 -0
  121. package/src/components/shared/icons.d.ts +17 -0
  122. package/src/components/shared/icons.d.ts.map +1 -0
  123. package/src/components/shell/MediaLibraryContext.d.ts +14 -0
  124. package/src/components/shell/MediaLibraryContext.d.ts.map +1 -0
  125. package/src/hooks/useResolvedMedia.d.ts +9 -0
  126. package/src/hooks/useResolvedMedia.d.ts.map +1 -0
  127. package/src/lib/cn.d.ts +3 -0
  128. package/src/lib/cn.d.ts.map +1 -0
  129. package/src/lib/grid.d.ts +2 -0
  130. package/src/lib/grid.d.ts.map +1 -0
  131. package/src/lib/icons.d.ts +9 -0
  132. package/src/lib/icons.d.ts.map +1 -0
  133. package/src/lib/loader.d.ts +28 -0
  134. package/src/lib/loader.d.ts.map +1 -0
  135. package/src/lib/nav.d.ts +15 -0
  136. package/src/lib/nav.d.ts.map +1 -0
  137. package/src/lib/registry.d.ts +110 -0
  138. package/src/lib/registry.d.ts.map +1 -0
  139. package/src/lib/registry.ts +0 -3
  140. package/src/lib/sanitize.d.ts +2 -0
  141. package/src/lib/sanitize.d.ts.map +1 -0
  142. package/src/media/github.d.ts +3 -0
  143. package/src/media/github.d.ts.map +1 -0
  144. package/src/media/index.d.ts +8 -0
  145. package/src/media/index.d.ts.map +1 -0
  146. package/src/media/queue.d.ts +74 -0
  147. package/src/media/queue.d.ts.map +1 -0
  148. package/src/media/resolve.d.ts +14 -0
  149. package/src/media/resolve.d.ts.map +1 -0
  150. package/src/media/types.d.ts +42 -0
  151. package/src/media/types.d.ts.map +1 -0
  152. package/src/media/utils.d.ts +7 -0
  153. package/src/media/utils.d.ts.map +1 -0
  154. package/src/media/videoPoster.d.ts +6 -0
  155. package/src/media/videoPoster.d.ts.map +1 -0
  156. package/src/schemas/auth.d.ts +36 -0
  157. package/src/schemas/auth.d.ts.map +1 -0
  158. package/src/schemas/media-grid-options.d.ts +8 -0
  159. package/src/schemas/media-grid-options.d.ts.map +1 -0
  160. package/src/schemas/media.d.ts +63 -0
  161. package/src/schemas/media.d.ts.map +1 -0
  162. package/src/schemas/sections.d.ts +12 -0
  163. package/src/schemas/sections.d.ts.map +1 -0
  164. package/src/schemas/shared.d.ts +98 -0
  165. package/src/schemas/shared.d.ts.map +1 -0
  166. package/src/schemas/site-config.d.ts +48 -0
  167. package/src/schemas/site-config.d.ts.map +1 -0
@@ -0,0 +1,55 @@
1
+ declare const _default: import("../../../lib/registry").SectionDefinition<{
2
+ type: "do_dont_grid";
3
+ content: {
4
+ columns: number;
5
+ media: ({
6
+ imageId: string;
7
+ type: "image";
8
+ caption?: string | string[] | undefined;
9
+ background?: string | undefined;
10
+ invertFrom?: string | undefined;
11
+ border?: boolean | undefined;
12
+ objectFit?: "cover" | "contain" | undefined;
13
+ } | {
14
+ imageId: string;
15
+ type: "video";
16
+ caption?: string | string[] | undefined;
17
+ background?: string | undefined;
18
+ invertFrom?: string | undefined;
19
+ border?: boolean | undefined;
20
+ objectFit?: "cover" | "contain" | undefined;
21
+ poster?: string | undefined;
22
+ autoplay?: boolean | undefined;
23
+ loop?: boolean | undefined;
24
+ muted?: boolean | undefined;
25
+ } | {
26
+ imageId: string;
27
+ type: "doDontImage";
28
+ doDont: "do" | "dont";
29
+ caption?: string | string[] | undefined;
30
+ background?: string | undefined;
31
+ invertFrom?: string | undefined;
32
+ border?: boolean | undefined;
33
+ objectFit?: "cover" | "contain" | undefined;
34
+ } | {
35
+ imageId: string;
36
+ type: "linkedImage";
37
+ href: string;
38
+ caption?: string | string[] | undefined;
39
+ background?: string | undefined;
40
+ invertFrom?: string | undefined;
41
+ border?: boolean | undefined;
42
+ objectFit?: "cover" | "contain" | undefined;
43
+ target?: string | undefined;
44
+ linkText?: string | undefined;
45
+ })[];
46
+ };
47
+ options: {
48
+ square?: boolean | undefined;
49
+ border?: boolean | undefined;
50
+ crop?: boolean | undefined;
51
+ showCaptions?: boolean | undefined;
52
+ };
53
+ }>;
54
+ export default _default;
55
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,wBAqCG"}
@@ -0,0 +1,20 @@
1
+ import type { SectionContent } from "../../../schemas/sections";
2
+ interface IconListItem {
3
+ label: string;
4
+ text: string;
5
+ icon?: string;
6
+ }
7
+ interface Props {
8
+ items: IconListItem[];
9
+ icon?: string | null;
10
+ showLabel?: boolean;
11
+ stackText?: boolean;
12
+ labelClassName?: string;
13
+ textClassName?: string;
14
+ iconClassName?: string;
15
+ onChange?: (content: SectionContent) => void;
16
+ onItemsChange?: (items: IconListItem[]) => void;
17
+ }
18
+ export default function IconList({ items, icon, showLabel, stackText, labelClassName, textClassName, iconClassName, onChange, onItemsChange, }: Props): import("react/jsx-runtime").JSX.Element;
19
+ export {};
20
+ //# sourceMappingURL=IconList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconList.d.ts","sourceRoot":"","sources":["IconList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAShE,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,KAAK;IACb,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,KAAK,EACL,IAAW,EACX,SAAgB,EAChB,SAAiB,EACjB,cAA+C,EAC/C,aAA0C,EAC1C,aAA8B,EAC9B,QAAQ,EACR,aAAa,GACd,EAAE,KAAK,2CAyCP"}
@@ -1,5 +1,4 @@
1
1
  import { useRef, useEffect, useState, useCallback } from "react";
2
- import { draggable, dropTargetForElements } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
3
2
  import type { SectionContent } from "../../../schemas/sections";
4
3
  import { cn } from "../../../lib/cn";
5
4
  import { getIcon } from "../../../lib/icons";
@@ -283,31 +282,43 @@ function EditableRow({
283
282
  const handle = handleRef.current;
284
283
  if (!row || !handle) return;
285
284
 
286
- const cleanupDraggable = draggable({
287
- element: handle,
288
- getInitialData: () => ({ dragType: "icon-list-row", id, index }),
289
- onDragStart: () => setDragState({ sourceId: id, targetId: null }),
290
- onDrop: () => setDragState({ sourceId: null, targetId: null }),
291
- });
285
+ let cleanup: (() => void) | undefined;
286
+ let cancelled = false;
287
+
288
+ import("@atlaskit/pragmatic-drag-and-drop/element/adapter").then(({ draggable, dropTargetForElements }) => {
289
+ if (cancelled) return;
292
290
 
293
- const cleanupDropTarget = dropTargetForElements({
294
- element: row,
295
- canDrop: ({ source }) => source.data.dragType === "icon-list-row",
296
- getData: () => ({ id, index }),
297
- onDragEnter: () => setDragState((prev) => ({ ...prev, targetId: id })),
298
- onDragLeave: () =>
299
- setDragState((prev) =>
300
- prev.targetId === id ? { ...prev, targetId: null } : prev,
301
- ),
302
- onDrop: ({ source }) => {
303
- const fromIndex = source.data.index as number;
304
- if (fromIndex !== index) onReorder(fromIndex, index);
305
- },
291
+ const cleanupDraggable = draggable({
292
+ element: handle,
293
+ getInitialData: () => ({ dragType: "icon-list-row", id, index }),
294
+ onDragStart: () => setDragState({ sourceId: id, targetId: null }),
295
+ onDrop: () => setDragState({ sourceId: null, targetId: null }),
296
+ });
297
+
298
+ const cleanupDropTarget = dropTargetForElements({
299
+ element: row,
300
+ canDrop: ({ source }) => source.data.dragType === "icon-list-row",
301
+ getData: () => ({ id, index }),
302
+ onDragEnter: () => setDragState((prev) => ({ ...prev, targetId: id })),
303
+ onDragLeave: () =>
304
+ setDragState((prev) =>
305
+ prev.targetId === id ? { ...prev, targetId: null } : prev,
306
+ ),
307
+ onDrop: ({ source }) => {
308
+ const fromIndex = source.data.index as number;
309
+ if (fromIndex !== index) onReorder(fromIndex, index);
310
+ },
311
+ });
312
+
313
+ cleanup = () => {
314
+ cleanupDraggable();
315
+ cleanupDropTarget();
316
+ };
306
317
  });
307
318
 
308
319
  return () => {
309
- cleanupDraggable();
310
- cleanupDropTarget();
320
+ cancelled = true;
321
+ cleanup?.();
311
322
  };
312
323
  }, [id, index, onReorder, setDragState]);
313
324
 
@@ -433,22 +444,32 @@ function TrailingDropZone({
433
444
  const el = ref.current;
434
445
  if (!el) return;
435
446
 
436
- const cleanup = dropTargetForElements({
437
- element: el,
438
- canDrop: ({ source }) => source.data.dragType === "icon-list-row",
439
- getData: () => ({ id: trailingId, index }),
440
- onDragEnter: () => setDragState((prev) => ({ ...prev, targetId: trailingId })),
441
- onDragLeave: () =>
442
- setDragState((prev) =>
443
- prev.targetId === trailingId ? { ...prev, targetId: null } : prev,
444
- ),
445
- onDrop: ({ source }) => {
446
- const fromIndex = source.data.index as number;
447
- if (fromIndex !== index - 1) onReorder(fromIndex, index - 1);
448
- },
447
+ let cleanup: (() => void) | undefined;
448
+ let cancelled = false;
449
+
450
+ import("@atlaskit/pragmatic-drag-and-drop/element/adapter").then(({ dropTargetForElements }) => {
451
+ if (cancelled) return;
452
+
453
+ cleanup = dropTargetForElements({
454
+ element: el,
455
+ canDrop: ({ source }) => source.data.dragType === "icon-list-row",
456
+ getData: () => ({ id: trailingId, index }),
457
+ onDragEnter: () => setDragState((prev) => ({ ...prev, targetId: trailingId })),
458
+ onDragLeave: () =>
459
+ setDragState((prev) =>
460
+ prev.targetId === trailingId ? { ...prev, targetId: null } : prev,
461
+ ),
462
+ onDrop: ({ source }) => {
463
+ const fromIndex = source.data.index as number;
464
+ if (fromIndex !== index - 1) onReorder(fromIndex, index - 1);
465
+ },
466
+ });
449
467
  });
450
468
 
451
- return cleanup;
469
+ return () => {
470
+ cancelled = true;
471
+ cleanup?.();
472
+ };
452
473
  }, [index, onReorder, setDragState]);
453
474
 
454
475
  const isDropTarget = dragState.targetId === trailingId && dragState.sourceId !== null;
@@ -0,0 +1,11 @@
1
+ export declare function IconListSettings({ icon: initialIcon, showLabel: initialShowLabel, stackText: initialStackText, onChange, }: {
2
+ icon: string | null;
3
+ showLabel: boolean;
4
+ stackText: boolean;
5
+ onChange: (values: {
6
+ icon: string | null;
7
+ showLabel: boolean;
8
+ stackText: boolean;
9
+ }) => void;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=IconListSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconListSettings.d.ts","sourceRoot":"","sources":["IconListSettings.tsx"],"names":[],"mappings":"AAMA,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,gBAAgB,EAC3B,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAC7F,2CAgEA"}
@@ -0,0 +1,17 @@
1
+ declare const _default: import("../../../lib/registry").SectionDefinition<{
2
+ type: "icon_list";
3
+ content: {
4
+ items: {
5
+ label: string;
6
+ text: string;
7
+ icon?: string | undefined;
8
+ }[];
9
+ };
10
+ options?: {
11
+ icon?: string | null | undefined;
12
+ showLabel?: boolean | undefined;
13
+ stackText?: boolean | undefined;
14
+ } | undefined;
15
+ }>;
16
+ export default _default;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAiBA,wBAkBG"}
@@ -0,0 +1,8 @@
1
+ declare const _default: import("../../../lib/registry").SectionDefinition<{
2
+ type: "link_heading";
3
+ content: {
4
+ heading: string;
5
+ };
6
+ }>;
7
+ export default _default;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":";;;;;;AASA,wBAcG"}
@@ -0,0 +1,17 @@
1
+ import type { MediaReference } from "../../../schemas/shared";
2
+ import type { SectionContent } from "../../../schemas/sections";
3
+ import type { ReactNode } from "react";
4
+ interface Props {
5
+ media: MediaReference[];
6
+ columns: number;
7
+ square?: boolean;
8
+ border?: boolean;
9
+ crop?: boolean;
10
+ showCaptions?: boolean;
11
+ sectionType?: string;
12
+ onChange?: (content: SectionContent) => void;
13
+ openModal?: (title: string, content: ReactNode) => void;
14
+ }
15
+ export default function MediaGrid({ media, columns, square, border, crop, showCaptions, sectionType, onChange, openModal }: Props): import("react/jsx-runtime").JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=MediaGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaGrid.d.ts","sourceRoot":"","sources":["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"}
@@ -164,9 +164,13 @@ function MediaGridItem({
164
164
  ? (Array.isArray(item.caption) ? item.caption.join("\n") : item.caption)
165
165
  : "";
166
166
 
167
+ const itemAny = item as Record<string, unknown>;
167
168
  const media = (
168
169
  <ResolvedMedia
169
170
  imageId={item.imageId || undefined}
171
+ src={itemAny.src as string | undefined}
172
+ srcset={itemAny.srcset as string | undefined}
173
+ alt={itemAny.alt as string | undefined}
170
174
  className="h-full w-full"
171
175
  imgClassName={fitClass}
172
176
  />
@@ -0,0 +1,55 @@
1
+ declare const _default: import("../../../lib/registry").SectionDefinition<{
2
+ type: "media_grid";
3
+ content: {
4
+ columns: number;
5
+ media: ({
6
+ imageId: string;
7
+ type: "image";
8
+ caption?: string | string[] | undefined;
9
+ background?: string | undefined;
10
+ invertFrom?: string | undefined;
11
+ border?: boolean | undefined;
12
+ objectFit?: "cover" | "contain" | undefined;
13
+ } | {
14
+ imageId: string;
15
+ type: "video";
16
+ caption?: string | string[] | undefined;
17
+ background?: string | undefined;
18
+ invertFrom?: string | undefined;
19
+ border?: boolean | undefined;
20
+ objectFit?: "cover" | "contain" | undefined;
21
+ poster?: string | undefined;
22
+ autoplay?: boolean | undefined;
23
+ loop?: boolean | undefined;
24
+ muted?: boolean | undefined;
25
+ } | {
26
+ imageId: string;
27
+ type: "doDontImage";
28
+ doDont: "do" | "dont";
29
+ caption?: string | string[] | undefined;
30
+ background?: string | undefined;
31
+ invertFrom?: string | undefined;
32
+ border?: boolean | undefined;
33
+ objectFit?: "cover" | "contain" | undefined;
34
+ } | {
35
+ imageId: string;
36
+ type: "linkedImage";
37
+ href: string;
38
+ caption?: string | string[] | undefined;
39
+ background?: string | undefined;
40
+ invertFrom?: string | undefined;
41
+ border?: boolean | undefined;
42
+ objectFit?: "cover" | "contain" | undefined;
43
+ target?: string | undefined;
44
+ linkText?: string | undefined;
45
+ })[];
46
+ };
47
+ options: {
48
+ square?: boolean | undefined;
49
+ border?: boolean | undefined;
50
+ crop?: boolean | undefined;
51
+ showCaptions?: boolean | undefined;
52
+ };
53
+ }>;
54
+ export default _default;
55
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,wBA+BG"}
@@ -0,0 +1,8 @@
1
+ import type { SectionContent } from "../../../schemas/sections";
2
+ interface Props {
3
+ body: string;
4
+ onChange?: (content: SectionContent) => void;
5
+ }
6
+ export default function Prose({ body, onChange }: Props): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=Prose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Prose.d.ts","sourceRoot":"","sources":["Prose.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CAC9C;AAED,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,2CAyBtD"}
@@ -18,6 +18,7 @@ export default function Prose({ body, onChange }: Props) {
18
18
  }
19
19
  isEditMode={true}
20
20
  preset="rich"
21
+ placeholder="Start writing..."
21
22
  />
22
23
  </div>
23
24
  );
@@ -0,0 +1,8 @@
1
+ declare const _default: import("../../../lib/registry").SectionDefinition<{
2
+ type: "prose";
3
+ content: {
4
+ body: string;
5
+ };
6
+ }>;
7
+ export default _default;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":";;;;;;AASA,wBAQG"}
@@ -0,0 +1,11 @@
1
+ import type { SectionContent } from "../../../schemas/sections";
2
+ interface Props {
3
+ imageId: string | undefined;
4
+ body: string;
5
+ border?: boolean;
6
+ imagePosition?: "left" | "right";
7
+ onChange?: (content: SectionContent) => void;
8
+ }
9
+ export default function SplitContent({ imageId, body, border, imagePosition, onChange }: Props): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=SplitContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplitContent.d.ts","sourceRoot":"","sources":["SplitContent.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIhE,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,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,IAAI,EAAE,MAAM,EAAE,aAAsB,EAAE,QAAQ,EAAE,EAAE,KAAK,2CA2DtG"}
@@ -9,13 +9,16 @@ import { ImageIcon } from "lucide-react";
9
9
 
10
10
  interface Props {
11
11
  imageId: string | undefined;
12
+ src?: string;
13
+ srcset?: string;
14
+ alt?: string;
12
15
  body: string;
13
16
  border?: boolean;
14
17
  imagePosition?: "left" | "right";
15
18
  onChange?: (content: SectionContent) => void;
16
19
  }
17
20
 
18
- export default function SplitContent({ imageId, body, border, imagePosition = "left", onChange }: Props) {
21
+ export default function SplitContent({ imageId, src, srcset, alt, body, border, imagePosition = "left", onChange }: Props) {
19
22
  const mediaLibrary = useMediaLibrary();
20
23
 
21
24
  const handleImageChange = (newImageId: string) => {
@@ -46,6 +49,9 @@ export default function SplitContent({ imageId, body, border, imagePosition = "l
46
49
  <div className={cn("group/img relative flex-shrink-0 lg:w-1/2", border && "overflow-hidden rounded-md border border-base-200")}>
47
50
  <ResolvedMedia
48
51
  imageId={imageId}
52
+ src={src}
53
+ srcset={srcset}
54
+ alt={alt}
49
55
  className="w-full"
50
56
  />
51
57
  {onChange && mediaLibrary && (
@@ -0,0 +1,9 @@
1
+ export declare function SplitContentSettings({ imagePosition: initialPos, border: initialBorder, onChange, }: {
2
+ imagePosition: "left" | "right";
3
+ border: boolean;
4
+ onChange: (values: {
5
+ imagePosition: "left" | "right";
6
+ border: boolean;
7
+ }) => void;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=SplitContentSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplitContentSettings.d.ts","sourceRoot":"","sources":["SplitContentSettings.tsx"],"names":[],"mappings":"AAIA,wBAAgB,oBAAoB,CAAC,EACnC,aAAa,EAAE,UAAU,EACzB,MAAM,EAAE,aAAa,EACrB,QAAQ,GACT,EAAE;IACD,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAClF,2CA6BA"}
@@ -0,0 +1,13 @@
1
+ declare const _default: import("../../../lib/registry").SectionDefinition<{
2
+ type: "split_content";
3
+ content: {
4
+ body: string;
5
+ imageId?: string | undefined;
6
+ };
7
+ options?: {
8
+ border?: boolean | undefined;
9
+ imagePosition?: "left" | "right" | undefined;
10
+ } | undefined;
11
+ }>;
12
+ export default _default;
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":";;;;;;;;;;;AAiBA,wBAkBG"}
@@ -22,6 +22,9 @@ export default defineSection({
22
22
  component: ({ content, options, onChange }) => (
23
23
  <SplitContent
24
24
  imageId={content.content.imageId as string | undefined}
25
+ src={(content.content as Record<string, unknown>).src as string | undefined}
26
+ srcset={(content.content as Record<string, unknown>).srcset as string | undefined}
27
+ alt={(content.content as Record<string, unknown>).alt as string | undefined}
25
28
  body={content.content.body as string}
26
29
  border={options?.border as boolean}
27
30
  imagePosition={options?.imagePosition as "left" | "right"}
@@ -0,0 +1,9 @@
1
+ declare const _default: import("../../../lib/registry").SectionDefinition<{
2
+ type: "sub_heading";
3
+ content: {
4
+ heading: string;
5
+ excludeFromNav?: boolean | undefined;
6
+ };
7
+ }>;
8
+ export default _default;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":";;;;;;;AASA,wBAiBG"}
@@ -0,0 +1,9 @@
1
+ declare const _default: import("../../../lib/registry").SectionDefinition<{
2
+ type: "sub_sub_heading";
3
+ content: {
4
+ heading: string;
5
+ excludeFromNav?: boolean | undefined;
6
+ };
7
+ }>;
8
+ export default _default;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":";;;;;;;AASA,wBAiBG"}
@@ -0,0 +1,2 @@
1
+ export declare const schemaCount: number;
2
+ //# sourceMappingURL=register-schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-schemas.d.ts","sourceRoot":"","sources":["register-schemas.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,WAAW,QAAiB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { type ButtonHTMLAttributes, type ReactNode } from "react";
2
+ export type ButtonVariant = "primary" | "brand" | "secondary" | "destructive" | "ghost";
3
+ export type ButtonSize = "sm" | "md";
4
+ export type ButtonTone = "neutral" | "destructive";
5
+ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
6
+ variant?: ButtonVariant;
7
+ size?: ButtonSize;
8
+ tone?: ButtonTone;
9
+ fullWidth?: boolean;
10
+ isLoading?: boolean;
11
+ loadingLabel?: string;
12
+ children?: ReactNode;
13
+ }
14
+ export declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
15
+ //# sourceMappingURL=Button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["Button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,oBAAoB,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG9E,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,GAAG,OAAO,CAAC;AACxF,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;AACrC,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC;AAEnD,MAAM,WAAW,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAyBD,eAAO,MAAM,MAAM,2GAoCjB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type ReactNode } from "react";
2
+ interface CheckboxProps {
3
+ checked: boolean;
4
+ onChange: (checked: boolean) => void;
5
+ label: string;
6
+ description?: string;
7
+ disabled?: boolean;
8
+ className?: string;
9
+ startAdornment?: ReactNode;
10
+ align?: "start" | "center";
11
+ }
12
+ export declare function Checkbox({ checked, onChange, label, description, disabled, className, startAdornment, align, }: CheckboxProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=Checkbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI9C,UAAU,aAAa;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC5B;AAED,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,QAAQ,EACR,KAAK,EACL,WAAW,EACX,QAAQ,EACR,SAAS,EACT,cAAc,EACd,KAAe,GAChB,EAAE,aAAa,2CAgDf"}
@@ -0,0 +1,8 @@
1
+ interface FormLabelProps {
2
+ htmlFor?: string;
3
+ children: React.ReactNode;
4
+ className?: string;
5
+ }
6
+ export declare function FormLabel({ htmlFor, children, className }: FormLabelProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=FormLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormLabel.d.ts","sourceRoot":"","sources":["FormLabel.tsx"],"names":[],"mappings":"AAEA,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,cAAc,2CASzE"}
@@ -0,0 +1,12 @@
1
+ import { type ButtonHTMLAttributes, type ReactNode } from "react";
2
+ type Size = "sm" | "md" | "lg";
3
+ type Intent = "default" | "destructive" | "primary";
4
+ interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
5
+ icon: ReactNode;
6
+ label: string;
7
+ size?: Size;
8
+ intent?: Intent;
9
+ }
10
+ export declare const IconButton: import("react").ForwardRefExoticComponent<IconButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
11
+ export {};
12
+ //# sourceMappingURL=IconButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconButton.d.ts","sourceRoot":"","sources":["IconButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,oBAAoB,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG9E,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC/B,KAAK,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;AAEpD,UAAU,eAAgB,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IACvE,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAcD,eAAO,MAAM,UAAU,+GAmBtB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type InputHTMLAttributes } from "react";
2
+ interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "onChange"> {
3
+ label: string;
4
+ onChange: (value: string) => void;
5
+ }
6
+ export declare const Input: import("react").ForwardRefExoticComponent<InputProps & import("react").RefAttributes<HTMLInputElement>>;
7
+ export {};
8
+ //# sourceMappingURL=Input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["Input.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAIpE,UAAU,UAAW,SAAQ,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAClF,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,eAAO,MAAM,KAAK,yGAwBhB,CAAC"}
@@ -0,0 +1,16 @@
1
+ interface SelectOption {
2
+ value: string;
3
+ label: string;
4
+ }
5
+ interface SelectProps {
6
+ label?: string;
7
+ value: string;
8
+ onChange: (value: string) => void;
9
+ options: SelectOption[];
10
+ disabled?: boolean;
11
+ className?: string;
12
+ selectClassName?: string;
13
+ }
14
+ export declare function Select({ label, value, onChange, options, disabled, className, selectClassName, }: SelectProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=Select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["Select.tsx"],"names":[],"mappings":"AAKA,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,KAAK,EACL,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,SAAS,EACT,eAAe,GAChB,EAAE,WAAW,2CA+Bb"}