dune-react 0.0.22 → 0.0.24

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 (131) hide show
  1. package/dist/components/puck-base/image.js +1 -1
  2. package/dist/components/puck-block/banner-sections/css-marquee-banner/css-marquee-banner.js +13 -13
  3. package/dist/components/puck-block/banner-sections/dual-row-marquee/dual-row-marquee.js +77 -53
  4. package/dist/components/puck-block/banner-sections/scroll-driven-marquee/scroll-driven-marquee.js +8 -6
  5. package/dist/components/puck-block/banner-sections/scroll-parallax-text/scroll-parallax-text.js +3 -1
  6. package/dist/components/puck-block/contact-sections/contact-cards-grid/contact-cards-grid.js +1 -1
  7. package/dist/components/puck-block/contact-sections/form-with-media/form-with-media.js +1 -1
  8. package/dist/components/puck-block/contact-sections/header-form-cards/header-form-cards.js +1 -1
  9. package/dist/components/puck-block/contact-sections/header-info-fullwidth/header-info-fullwidth.js +2 -2
  10. package/dist/components/puck-block/contact-sections/info-cards-media/info-cards-media.js +2 -2
  11. package/dist/components/puck-block/contact-sections/split-info-form/split-info-form.js +1 -1
  12. package/dist/components/puck-block/contact-sections/tab-locations/tab-locations.js +71 -55
  13. package/dist/components/puck-block/cta-sections/mouse-track-cta/mouse-track-cta.js +4 -4
  14. package/dist/components/puck-block/cta-sections/side-media-cta/side-media-cta.js +1 -1
  15. package/dist/components/puck-block/cta-sections/text-block-cta/text-block-cta.js +2 -2
  16. package/dist/components/puck-block/feature-sections/feature-cards-grid/component.js +1 -1
  17. package/dist/components/puck-block/feature-sections/feature-list-split/component.js +1 -1
  18. package/dist/components/puck-block/feature-sections/tab-feature/component.js +4 -4
  19. package/dist/components/puck-block/feature-sections/text-media-split/component.js +1 -1
  20. package/dist/components/puck-block/footer-sections/centered-minimal-footer/centered-minimal-footer.js +72 -18
  21. package/dist/components/puck-block/footer-sections/centered-minimal-footer/index.d.ts +79 -0
  22. package/dist/components/puck-block/footer-sections/centered-minimal-footer/index.js +43 -1
  23. package/dist/components/puck-block/footer-sections/compact-newsletter-footer/index.d.ts +41 -0
  24. package/dist/components/puck-block/footer-sections/contact-links-footer/contact-links-footer.js +4 -3
  25. package/dist/components/puck-block/footer-sections/contact-links-footer/index.d.ts +86 -0
  26. package/dist/components/puck-block/footer-sections/contact-links-footer/index.js +1 -1
  27. package/dist/components/puck-block/footer-sections/cta-links-footer/cta-links-footer.js +3 -2
  28. package/dist/components/puck-block/footer-sections/cta-links-footer/index.d.ts +37 -0
  29. package/dist/components/puck-block/footer-sections/cta-links-footer/index.js +1 -1
  30. package/dist/components/puck-block/footer-sections/links-newsletter-footer/index.d.ts +54 -0
  31. package/dist/components/puck-block/footer-sections/newsletter-links-footer/index.d.ts +41 -0
  32. package/dist/components/puck-block/footer-sections/newsletter-top-links-footer/index.d.ts +54 -0
  33. package/dist/components/puck-block/footer-sections/props.d.ts +3 -0
  34. package/dist/components/puck-block/gallery-sections/fullscreen-portfolio/fullscreen-portfolio.js +1 -1
  35. package/dist/components/puck-block/gallery-sections/image-carousel/index.d.ts +14 -1
  36. package/dist/components/puck-block/gallery-sections/interactive-portfolio/interactive-portfolio.js +166 -105
  37. package/dist/components/puck-block/gallery-sections/masonry-grid/index.d.ts +17 -1
  38. package/dist/components/puck-block/gallery-sections/masonry-grid/masonry-grid.js +56 -31
  39. package/dist/components/puck-block/gallery-sections/portfolio-cards/index.d.ts +17 -1
  40. package/dist/components/puck-block/gallery-sections/portfolio-cards/portfolio-cards.js +41 -13
  41. package/dist/components/puck-block/gallery-sections/portfolio-divider/portfolio-divider.js +1 -1
  42. package/dist/components/puck-block/gallery-sections/props.d.ts +42 -3
  43. package/dist/components/puck-block/gallery-sections/props.js +24 -6
  44. package/dist/components/puck-block/gallery-sections/scroll-parallax/scroll-parallax.js +71 -22
  45. package/dist/components/puck-block/gallery-sections/scroll-parallax-portfolio/scroll-parallax-portfolio.js +284 -159
  46. package/dist/components/puck-block/gallery-sections/split-carousel/index.d.ts +11 -1
  47. package/dist/components/puck-block/gallery-sections/static-grid/index.d.ts +17 -1
  48. package/dist/components/puck-block/header-sections/centered-navbar/centered-navbar.js +95 -14
  49. package/dist/components/puck-block/header-sections/drawer-navbar/drawer-navbar.js +4 -3
  50. package/dist/components/puck-block/header-sections/floating-bordered-navbar/floating-bordered-navbar.js +5 -4
  51. package/dist/components/puck-block/header-sections/fullscreen-overlay-navbar/fullscreen-overlay-navbar.js +4 -3
  52. package/dist/components/puck-block/header-sections/mega-menu-navbar/mega-menu-navbar.js +3 -2
  53. package/dist/components/puck-block/header-sections/props.d.ts +3 -0
  54. package/dist/components/puck-block/header-sections/standard-navbar/standard-navbar.js +3 -2
  55. package/dist/components/puck-block/hero-sections/carousel-hero/component.js +3 -3
  56. package/dist/components/puck-block/hero-sections/column-scroll-hero/component.js +8 -8
  57. package/dist/components/puck-block/hero-sections/dual-marquee-hero/component.js +6 -6
  58. package/dist/components/puck-block/hero-sections/fullscreen-video-hero/component.js +1 -1
  59. package/dist/components/puck-block/hero-sections/grid-expand-hero/component.js +26 -17
  60. package/dist/components/puck-block/hero-sections/grid-expand-hero/index.d.ts +17 -1
  61. package/dist/components/puck-block/hero-sections/horizontal-marquee-hero/component.js +3 -3
  62. package/dist/components/puck-block/hero-sections/inline-image-hero/inline-image-hero.js +59 -28
  63. package/dist/components/puck-block/hero-sections/mouse-track-hero/component.js +60 -19
  64. package/dist/components/puck-block/hero-sections/multi-image-grid-hero/index.d.ts +17 -1
  65. package/dist/components/puck-block/hero-sections/multi-image-grid-hero/multi-image-grid-hero.js +2 -2
  66. package/dist/components/puck-block/hero-sections/overlapping-image-hero/overlapping-image-hero.js +3 -3
  67. package/dist/components/puck-block/hero-sections/parallax-images-hero/component.js +18 -6
  68. package/dist/components/puck-block/hero-sections/props.d.ts +34 -2
  69. package/dist/components/puck-block/hero-sections/props.js +18 -4
  70. package/dist/components/puck-block/hero-sections/scatter-parallax-hero/component.js +9 -7
  71. package/dist/components/puck-block/hero-sections/scroll-expand-video-hero/component.js +7 -5
  72. package/dist/components/puck-block/hero-sections/scroll-zoom-hero/component.js +5 -3
  73. package/dist/components/puck-block/hero-sections/sticky-expand-hero/component.js +1 -1
  74. package/dist/components/puck-block/hero-sections/sticky-expand-hero/index.d.ts +13 -5
  75. package/dist/components/puck-block/hero-sections/sticky-expand-hero/index.js +2 -2
  76. package/dist/components/puck-block/hero-sections/sticky-video-hero/component.js +2 -2
  77. package/dist/components/puck-block/hero-sections/tab-hero/component.js +5 -5
  78. package/dist/components/puck-block/hero-sections/three-image-parallax-hero/component.js +3 -3
  79. package/dist/components/puck-block/hero-sections/vertical-gallery-hero/component.js +6 -6
  80. package/dist/components/puck-block/hero-sections/zoom-grid-hero/component.js +14 -12
  81. package/dist/components/puck-block/index.d.ts +1 -0
  82. package/dist/components/puck-block/location-sections/index.d.ts +3 -0
  83. package/dist/components/puck-block/location-sections/location-1/index.js +102 -0
  84. package/dist/components/puck-block/location-sections/location-1/location.d.ts +0 -3
  85. package/dist/components/puck-block/location-sections/location-1/location.js +139 -0
  86. package/dist/components/puck-block/location-sections/location-2/index.js +126 -0
  87. package/dist/components/puck-block/location-sections/location-2/location.d.ts +0 -3
  88. package/dist/components/puck-block/location-sections/location-2/location.js +133 -0
  89. package/dist/components/puck-block/location-sections/location-3/index.js +109 -0
  90. package/dist/components/puck-block/location-sections/location-3/location.d.ts +0 -3
  91. package/dist/components/puck-block/location-sections/location-3/location.js +140 -0
  92. package/dist/components/puck-block/location-sections/props.d.ts +0 -3
  93. package/dist/components/puck-block/metrics-sections/center-media-stats/center-media-stats.js +1 -1
  94. package/dist/components/puck-block/metrics-sections/header-stats-row/header-stats-row.js +1 -1
  95. package/dist/components/puck-block/metrics-sections/mixed-grid-stats/mixed-grid-stats.js +2 -2
  96. package/dist/components/puck-block/metrics-sections/split-stats/split-stats.js +1 -1
  97. package/dist/components/puck-block/metrics-sections/tab-stats/tab-stats.js +4 -4
  98. package/dist/components/puck-block/pricing-sections/pricing-comparison-table/component.js +134 -33
  99. package/dist/components/puck-block/pricing-sections/pricing-comparison-table/index.d.ts +47 -0
  100. package/dist/components/puck-block/pricing-sections/pricing-comparison-table/index.js +34 -0
  101. package/dist/components/puck-block/pricing-sections/split-pricing/component.js +3 -3
  102. package/dist/components/puck-block/pricing-sections/tab-pricing-grid/component.js +86 -40
  103. package/dist/components/puck-block/pricing-sections/tab-single-pricing/component.js +1 -1
  104. package/dist/components/puck-block/registry.generated.d.ts +501 -12
  105. package/dist/components/puck-block/registry.generated.js +157 -138
  106. package/dist/components/puck-block/showcase-sections/tab-timeline/component.js +2 -2
  107. package/dist/components/puck-block/testimonial-sections/bento-testimonial/component.js +157 -83
  108. package/dist/components/puck-block/testimonial-sections/centered-testimonial/component.js +71 -28
  109. package/dist/components/puck-block/testimonial-sections/image-testimonial/component.js +66 -29
  110. package/dist/components/puck-block/testimonial-sections/image-testimonial-carousel/component.js +1 -1
  111. package/dist/components/puck-block/testimonial-sections/tab-testimonial/component.js +6 -6
  112. package/dist/components/puck-block/testimonial-sections/testimonial-card-grid/component.js +2 -2
  113. package/dist/components/puck-block/testimonial-sections/testimonial-carousel/component.js +1 -1
  114. package/dist/components/puck-block/text-sections/prose-content/component.js +1 -1
  115. package/dist/components/puck-block/text-sections/side-media-content/component.js +1 -1
  116. package/dist/components/puck-block/text-sections/sticky-text-multi-image/component.js +3 -3
  117. package/dist/components/puck-core/core/props/form.js +25 -1
  118. package/dist/components/puck-core/core/props/media.js +6 -1
  119. package/dist/components/puck-core/fields/array-field.d.ts +7 -0
  120. package/dist/components/puck-core/fields/array-field.js +229 -0
  121. package/dist/components/puck-core/fields/auto-field.js +11 -0
  122. package/dist/components/puck-core/fields/image-upload-field.js +1 -1
  123. package/dist/components/puck-core/fields/index.d.ts +1 -0
  124. package/dist/components/puck-core/fields/location-field.js +4 -1
  125. package/dist/components/puck-core/fields/object-field.js +1 -1
  126. package/dist/index.js +6 -0
  127. package/dist/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.2.4/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js +59 -0
  128. package/dist/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@dnd-kit/core/dist/core.esm.js +3093 -0
  129. package/dist/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/dist/sortable.esm.js +592 -0
  130. package/dist/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/dist/utilities.esm.js +301 -0
  131. package/package.json +7 -1
@@ -71,7 +71,7 @@ const SideMediaContentDefaults = {
71
71
  prose: `<p>Morbi sed imperdiet in ipsum, adipiscing elit dui lectus. Tellus id scelerisque est ultricies ultricies. Duis est sit sed leo nisl, blandit elit sagittis. Quisque tristique consequat quam sed. Nisl at scelerisque amet nulla purus habitasse.</p><p>Nunc sed faucibus bibendum feugiat sed interdum. Ipsum egestas condimentum mi massa. In tincidunt pharetra consectetur sed duis facilisis metus. Etiam egestas in nec sed et. Quis lobortis at sit dictum eget nibh tortor commodo cursus.</p>`,
72
72
  image: {
73
73
  src: "https://picsum.photos/seed/side-media/800/600",
74
- alt: "Relume placeholder image"
74
+ alt: "Placeholder image"
75
75
  },
76
76
  video: "https://www.youtube.com/embed/8DKLYsikxTs?si=Ch9W0KrDWWUiCMMW",
77
77
  styles: {
@@ -35,9 +35,9 @@ const StickyTextMultiImageDefaults = {
35
35
  heading: "Short heading goes here",
36
36
  prose: `<p>Morbi sed imperdiet in ipsum, adipiscing elit dui lectus. Tellus id scelerisque est ultricies ultricies. Duis est sit sed leo nisl, blandit elit sagittis. Quisque tristique consequat quam sed. Nisl at scelerisque amet nulla purus habitasse.</p><p>Nunc sed faucibus bibendum feugiat sed interdum. Ipsum egestas condimentum mi massa. In tincidunt pharetra consectetur sed duis facilisis metus.</p>`,
37
37
  images: [
38
- { src: "https://picsum.photos/seed/sticky-img1/800/600", alt: "Relume placeholder image 1" },
39
- { src: "https://picsum.photos/seed/sticky-img2/800/600", alt: "Relume placeholder image 2" },
40
- { src: "https://picsum.photos/seed/sticky-img3/800/600", alt: "Relume placeholder image 3" }
38
+ { src: "https://picsum.photos/seed/sticky-img1/800/600", alt: "Placeholder image 1" },
39
+ { src: "https://picsum.photos/seed/sticky-img2/800/600", alt: "Placeholder image 2" },
40
+ { src: "https://picsum.photos/seed/sticky-img3/800/600", alt: "Placeholder image 3" }
41
41
  ],
42
42
  styles: {
43
43
  contentPosition: "left"
@@ -1,3 +1,4 @@
1
+ import { LocationField } from "../../fields/location-field.js";
1
2
  import { buttonField } from "./interactive.js";
2
3
  const fieldTypes = [
3
4
  "text",
@@ -66,11 +67,34 @@ const formDefaults = {
66
67
  icon: "move-right"
67
68
  }
68
69
  };
70
+ function getMapEmbedUrl(loc) {
71
+ const { lat, lng, zoom = 14 } = loc;
72
+ return `https://maps.google.com/maps?q=${lat},${lng}&z=${zoom}&output=embed`;
73
+ }
74
+ function getDirectionsUrl(loc) {
75
+ return `https://www.google.com/maps/dir/?api=1&destination=${loc.lat},${loc.lng}`;
76
+ }
77
+ const locationDefaults = {
78
+ address: "San Francisco, CA, USA",
79
+ lat: 37.7749,
80
+ lng: -122.4194,
81
+ zoom: 13
82
+ };
83
+ const locationField = {
84
+ type: "custom",
85
+ label: "Location",
86
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
87
+ render: LocationField
88
+ };
69
89
  export {
70
90
  fieldTypes,
71
91
  formDefaults,
72
92
  formField,
73
93
  formFieldDefaults,
74
94
  formFieldField,
75
- formMethods
95
+ formMethods,
96
+ getDirectionsUrl,
97
+ getMapEmbedUrl,
98
+ locationDefaults,
99
+ locationField
76
100
  };
@@ -1,7 +1,12 @@
1
+ import { ImageUploadField } from "../../fields/image-upload-field.js";
1
2
  const imageField = {
2
3
  type: "object",
3
4
  objectFields: {
4
- src: { type: "image", label: "Image" },
5
+ src: {
6
+ type: "custom",
7
+ label: "Image",
8
+ render: ImageUploadField
9
+ },
5
10
  alt: { type: "text" }
6
11
  }
7
12
  };
@@ -0,0 +1,7 @@
1
+ import type { FieldDef } from "./types";
2
+ export declare const ArrayField: import("react").NamedExoticComponent<{
3
+ field: FieldDef;
4
+ name: string;
5
+ value: any;
6
+ onChange: (value: any) => void;
7
+ }>;
@@ -0,0 +1,229 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { memo, useState, useRef, useMemo, useCallback } from "react";
3
+ import { ChevronLeft, Plus, GripVertical, Pencil, Trash2 } from "lucide-react";
4
+ import { useSensors, useSensor, DndContext, closestCenter, KeyboardSensor, PointerSensor } from "../../../node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@dnd-kit/core/dist/core.esm.js";
5
+ import { arrayMove, SortableContext, verticalListSortingStrategy, sortableKeyboardCoordinates, useSortable } from "../../../node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/dist/sortable.esm.js";
6
+ import { CSS } from "../../../node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/dist/utilities.esm.js";
7
+ import { Label } from "../../shadcn/label.js";
8
+ import { Button } from "../../shadcn/button.js";
9
+ import { AutoField } from "./auto-field.js";
10
+ const POINTER_SENSOR_OPTIONS = { activationConstraint: { distance: 5 } };
11
+ const KEYBOARD_SENSOR_OPTIONS = {
12
+ coordinateGetter: sortableKeyboardCoordinates
13
+ };
14
+ const SortableItem = memo(function SortableItem2({
15
+ id,
16
+ summary,
17
+ canDelete,
18
+ onEdit,
19
+ onDelete
20
+ }) {
21
+ const {
22
+ attributes,
23
+ listeners,
24
+ setNodeRef,
25
+ transform,
26
+ transition,
27
+ isDragging
28
+ } = useSortable({ id });
29
+ const style = {
30
+ transform: CSS.Transform.toString(transform),
31
+ transition,
32
+ opacity: isDragging ? 0.5 : 1
33
+ };
34
+ return /* @__PURE__ */ jsxs(
35
+ "div",
36
+ {
37
+ ref: setNodeRef,
38
+ style,
39
+ className: "bg-muted/50 group flex items-center gap-2 rounded-xl p-3",
40
+ children: [
41
+ /* @__PURE__ */ jsx(
42
+ "div",
43
+ {
44
+ className: "text-muted-foreground/40 hover:text-muted-foreground cursor-grab active:cursor-grabbing",
45
+ ...attributes,
46
+ ...listeners,
47
+ children: /* @__PURE__ */ jsx(GripVertical, { className: "h-4 w-4" })
48
+ }
49
+ ),
50
+ /* @__PURE__ */ jsx("span", { className: "text-foreground flex-1 truncate text-sm", children: summary }),
51
+ /* @__PURE__ */ jsxs(
52
+ Button,
53
+ {
54
+ type: "button",
55
+ variant: "ghost",
56
+ size: "sm",
57
+ className: "h-7 gap-1 px-2",
58
+ onClick: onEdit,
59
+ children: [
60
+ /* @__PURE__ */ jsx(Pencil, { className: "h-3.5 w-3.5" }),
61
+ "Edit"
62
+ ]
63
+ }
64
+ ),
65
+ canDelete && /* @__PURE__ */ jsx(
66
+ Button,
67
+ {
68
+ type: "button",
69
+ variant: "ghost",
70
+ size: "icon",
71
+ className: "text-muted-foreground hover:text-destructive h-7 w-7",
72
+ onClick: onDelete,
73
+ children: /* @__PURE__ */ jsx(Trash2, { className: "h-4 w-4" })
74
+ }
75
+ )
76
+ ]
77
+ }
78
+ );
79
+ });
80
+ const ArrayField = memo(function ArrayField2({
81
+ field,
82
+ name,
83
+ value,
84
+ onChange
85
+ }) {
86
+ const arrayFields = field.arrayFields || {};
87
+ const label = field.label || name;
88
+ const items = Array.isArray(value) ? value : [];
89
+ const [editingIndex, setEditingIndex] = useState(null);
90
+ const idCounterRef = useRef(0);
91
+ const itemIdMapRef = useRef(/* @__PURE__ */ new WeakMap());
92
+ const itemIds = useMemo(() => {
93
+ return items.map((item) => {
94
+ if (item && typeof item === "object") {
95
+ let id = itemIdMapRef.current.get(item);
96
+ if (!id) {
97
+ id = `${name}-${idCounterRef.current++}`;
98
+ itemIdMapRef.current.set(item, id);
99
+ }
100
+ return id;
101
+ }
102
+ return `${name}-${idCounterRef.current++}`;
103
+ });
104
+ }, [items, name]);
105
+ const sensors = useSensors(
106
+ useSensor(PointerSensor, POINTER_SENSOR_OPTIONS),
107
+ useSensor(KeyboardSensor, KEYBOARD_SENSOR_OPTIONS)
108
+ );
109
+ const handleDragEnd = useCallback(
110
+ (event) => {
111
+ const { active, over } = event;
112
+ if (!over || active.id === over.id) return;
113
+ const oldIndex = itemIds.indexOf(String(active.id));
114
+ const newIndex = itemIds.indexOf(String(over.id));
115
+ if (oldIndex !== -1 && newIndex !== -1) {
116
+ onChange(arrayMove(items, oldIndex, newIndex));
117
+ }
118
+ },
119
+ [itemIds, items, onChange]
120
+ );
121
+ const handleAdd = useCallback(() => {
122
+ if (field.defaultItemProps) {
123
+ onChange([...items, { ...field.defaultItemProps }]);
124
+ return;
125
+ }
126
+ const newItem = {};
127
+ for (const key of Object.keys(arrayFields)) {
128
+ newItem[key] = "";
129
+ }
130
+ onChange([...items, newItem]);
131
+ }, [items, onChange, field.defaultItemProps, arrayFields]);
132
+ const handleDelete = useCallback(
133
+ (index) => {
134
+ onChange(items.filter((_, i) => i !== index));
135
+ if (editingIndex === index) setEditingIndex(null);
136
+ },
137
+ [items, onChange, editingIndex]
138
+ );
139
+ const handleItemFieldChange = useCallback(
140
+ (index, key, val) => {
141
+ const newItems = items.map(
142
+ (item, i) => i === index ? { ...item, [key]: val } : item
143
+ );
144
+ onChange(newItems);
145
+ },
146
+ [items, onChange]
147
+ );
148
+ const canAdd = field.max == null || items.length < field.max;
149
+ const canDelete = field.min == null || items.length > field.min;
150
+ const getSummary = useCallback(
151
+ (item, index) => {
152
+ if (field.getItemSummary) return field.getItemSummary(item, index);
153
+ return item.label || item.heading || item.name || item.title || `Item ${index + 1}`;
154
+ },
155
+ [field]
156
+ );
157
+ if (editingIndex !== null && items[editingIndex]) {
158
+ const item = items[editingIndex];
159
+ return /* @__PURE__ */ jsxs("div", { className: "mb-4 space-y-1.5", children: [
160
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
161
+ /* @__PURE__ */ jsx(
162
+ Button,
163
+ {
164
+ type: "button",
165
+ variant: "ghost",
166
+ size: "icon-sm",
167
+ onClick: () => setEditingIndex(null),
168
+ children: /* @__PURE__ */ jsx(ChevronLeft, { className: "h-4 w-4" })
169
+ }
170
+ ),
171
+ /* @__PURE__ */ jsxs(Label, { children: [
172
+ label,
173
+ " / ",
174
+ getSummary(item, editingIndex)
175
+ ] })
176
+ ] }),
177
+ /* @__PURE__ */ jsx("div", { className: "rounded-lg bg-muted/30 p-3", children: Object.entries(arrayFields).map(([key, subField]) => /* @__PURE__ */ jsx(
178
+ AutoField,
179
+ {
180
+ field: subField,
181
+ name: key,
182
+ value: item[key],
183
+ onChange: (val) => handleItemFieldChange(editingIndex, key, val)
184
+ },
185
+ key
186
+ )) })
187
+ ] });
188
+ }
189
+ return /* @__PURE__ */ jsxs("div", { className: "mb-4 space-y-1.5", children: [
190
+ /* @__PURE__ */ jsx(Label, { children: label }),
191
+ /* @__PURE__ */ jsx(
192
+ DndContext,
193
+ {
194
+ sensors,
195
+ collisionDetection: closestCenter,
196
+ onDragEnd: handleDragEnd,
197
+ children: /* @__PURE__ */ jsx(SortableContext, { items: itemIds, strategy: verticalListSortingStrategy, children: /* @__PURE__ */ jsx("div", { className: "space-y-2", children: items.map((item, i) => /* @__PURE__ */ jsx(
198
+ SortableItem,
199
+ {
200
+ id: itemIds[i],
201
+ summary: getSummary(item, i),
202
+ canDelete,
203
+ onEdit: () => setEditingIndex(i),
204
+ onDelete: () => handleDelete(i)
205
+ },
206
+ itemIds[i]
207
+ )) }) })
208
+ }
209
+ ),
210
+ canAdd && /* @__PURE__ */ jsxs(
211
+ Button,
212
+ {
213
+ type: "button",
214
+ variant: "ghost",
215
+ size: "sm",
216
+ className: "mt-2 gap-1.5 text-primary",
217
+ onClick: handleAdd,
218
+ children: [
219
+ /* @__PURE__ */ jsx(Plus, { className: "h-4 w-4" }),
220
+ "Add ",
221
+ label.replace(/s$/, "").toLowerCase()
222
+ ]
223
+ }
224
+ )
225
+ ] });
226
+ });
227
+ export {
228
+ ArrayField
229
+ };
@@ -7,6 +7,7 @@ import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from ".
7
7
  import { ColorField } from "./color-field.js";
8
8
  import { RadioToggleField } from "./radio-toggle-field.js";
9
9
  import { ObjectField } from "./object-field.js";
10
+ import { ArrayField } from "./array-field.js";
10
11
  import { LARGE_SELECT_THRESHOLD, VirtualizedSelectField } from "./virtualized-select-field.js";
11
12
  const KEY_FIELD_MAP = {
12
13
  color: ColorField,
@@ -119,6 +120,16 @@ const AutoField = memo(function AutoField2({
119
120
  onChange
120
121
  }
121
122
  );
123
+ case "array":
124
+ return /* @__PURE__ */ jsx(
125
+ ArrayField,
126
+ {
127
+ field,
128
+ name,
129
+ value,
130
+ onChange
131
+ }
132
+ );
122
133
  case "custom":
123
134
  if (field.render) {
124
135
  const CustomRender = field.render;
@@ -32,7 +32,7 @@ function ImageUploadField({
32
32
  {
33
33
  src: value,
34
34
  alt: "preview",
35
- className: "block h-32 w-full object-cover"
35
+ className: "block h-32 w-full object-contain"
36
36
  }
37
37
  ),
38
38
  /* @__PURE__ */ jsx(
@@ -3,6 +3,7 @@ export { AutoField } from "./auto-field";
3
3
  export { ColorField } from "./color-field";
4
4
  export { RadioToggleField } from "./radio-toggle-field";
5
5
  export { ObjectField } from "./object-field";
6
+ export { ArrayField } from "./array-field";
6
7
  export { VirtualizedSelectField, LARGE_SELECT_THRESHOLD, } from "./virtualized-select-field";
7
8
  export { LocationField } from "./location-field";
8
9
  export { ActionField, ACTION_TYPE_FIELD_MAP, ACTION_TYPE_OPTIONS, PageActionFields, ExternalActionFields, EmailActionFields, PhoneActionFields, SectionActionFields, DownloadActionFields, type ActionTypeFieldProps, } from "./action-field";
@@ -25,7 +25,7 @@ function loadGooglePlaces(apiKey) {
25
25
  });
26
26
  return googleLoadPromise;
27
27
  }
28
- memo(function LocationField2({
28
+ const LocationField = memo(function LocationField2({
29
29
  value,
30
30
  onChange
31
31
  }) {
@@ -202,3 +202,6 @@ memo(function LocationField2({
202
202
  ] })
203
203
  ] });
204
204
  });
205
+ export {
206
+ LocationField
207
+ };
@@ -13,7 +13,7 @@ const ObjectField = memo(function ObjectField2({
13
13
  const objValue = value && typeof value === "object" ? value : {};
14
14
  return /* @__PURE__ */ jsxs("div", { className: "mb-4 space-y-1.5", children: [
15
15
  /* @__PURE__ */ jsx(Label, { children: label }),
16
- /* @__PURE__ */ jsx("div", { className: "rounded-lg border p-3", children: Object.entries(objectFields).map(([key, subField]) => /* @__PURE__ */ jsx(
16
+ /* @__PURE__ */ jsx("div", { className: "rounded-lg p-3 bg-muted/50", children: Object.entries(objectFields).map(([key, subField]) => /* @__PURE__ */ jsx(
17
17
  AutoField,
18
18
  {
19
19
  field: subField,
package/dist/index.js CHANGED
@@ -42,7 +42,10 @@ import { default as default42 } from "./components/puck-block/testimonial-sectio
42
42
  import { default as default43 } from "./components/puck-block/contact-sections/info-cards-media/index.js";
43
43
  import { default as default44 } from "./components/puck-block/hero-sections/inline-image-hero/index.js";
44
44
  import { default as default45 } from "./components/puck-block/gallery-sections/interactive-portfolio/index.js";
45
+ import { conf } from "./components/puck-block/location-sections/location-2/index.js";
46
+ import { conf as conf2 } from "./components/puck-block/location-sections/location-3/index.js";
45
47
  import { default as default46 } from "./components/puck-block/contact-sections/location-cards-grid/index.js";
48
+ import { conf as conf3 } from "./components/puck-block/location-sections/location-1/index.js";
46
49
  import { default as default47 } from "./components/puck-block/testimonial-sections/marquee-testimonial/index.js";
47
50
  import { default as default48 } from "./components/puck-block/gallery-sections/masonry-grid/index.js";
48
51
  import { default as default49 } from "./components/puck-block/testimonial-sections/masonry-testimonial/index.js";
@@ -465,7 +468,10 @@ export {
465
468
  KbdGroup,
466
469
  Label,
467
470
  LayoutTextFlip,
471
+ conf as Location2Conf,
472
+ conf2 as Location3Conf,
468
473
  default46 as LocationCardsGridConf,
474
+ conf3 as LocationConf,
469
475
  default47 as MarqueeTestimonialConf,
470
476
  default48 as MasonryGridConf,
471
477
  default49 as MasonryTestimonialConf,
@@ -0,0 +1,59 @@
1
+ import React__default, { useState, useCallback } from "react";
2
+ const hiddenStyles = {
3
+ display: "none"
4
+ };
5
+ function HiddenText(_ref) {
6
+ let {
7
+ id,
8
+ value
9
+ } = _ref;
10
+ return React__default.createElement("div", {
11
+ id,
12
+ style: hiddenStyles
13
+ }, value);
14
+ }
15
+ function LiveRegion(_ref) {
16
+ let {
17
+ id,
18
+ announcement,
19
+ ariaLiveType = "assertive"
20
+ } = _ref;
21
+ const visuallyHidden = {
22
+ position: "fixed",
23
+ top: 0,
24
+ left: 0,
25
+ width: 1,
26
+ height: 1,
27
+ margin: -1,
28
+ border: 0,
29
+ padding: 0,
30
+ overflow: "hidden",
31
+ clip: "rect(0 0 0 0)",
32
+ clipPath: "inset(100%)",
33
+ whiteSpace: "nowrap"
34
+ };
35
+ return React__default.createElement("div", {
36
+ id,
37
+ style: visuallyHidden,
38
+ role: "status",
39
+ "aria-live": ariaLiveType,
40
+ "aria-atomic": true
41
+ }, announcement);
42
+ }
43
+ function useAnnouncement() {
44
+ const [announcement, setAnnouncement] = useState("");
45
+ const announce = useCallback((value) => {
46
+ if (value != null) {
47
+ setAnnouncement(value);
48
+ }
49
+ }, []);
50
+ return {
51
+ announce,
52
+ announcement
53
+ };
54
+ }
55
+ export {
56
+ HiddenText,
57
+ LiveRegion,
58
+ useAnnouncement
59
+ };