dune-react 0.0.22 → 0.0.23

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 (95) hide show
  1. package/dist/components/puck-block/banner-sections/css-marquee-banner/css-marquee-banner.js +13 -13
  2. package/dist/components/puck-block/banner-sections/dual-row-marquee/dual-row-marquee.js +8 -8
  3. package/dist/components/puck-block/banner-sections/scroll-driven-marquee/scroll-driven-marquee.js +8 -6
  4. package/dist/components/puck-block/banner-sections/scroll-parallax-text/scroll-parallax-text.js +3 -1
  5. package/dist/components/puck-block/contact-sections/contact-cards-grid/contact-cards-grid.js +1 -1
  6. package/dist/components/puck-block/contact-sections/form-with-media/form-with-media.js +1 -1
  7. package/dist/components/puck-block/contact-sections/header-form-cards/header-form-cards.js +1 -1
  8. package/dist/components/puck-block/contact-sections/header-info-fullwidth/header-info-fullwidth.js +2 -2
  9. package/dist/components/puck-block/contact-sections/info-cards-media/info-cards-media.js +2 -2
  10. package/dist/components/puck-block/contact-sections/split-info-form/split-info-form.js +1 -1
  11. package/dist/components/puck-block/cta-sections/mouse-track-cta/mouse-track-cta.js +4 -4
  12. package/dist/components/puck-block/cta-sections/side-media-cta/side-media-cta.js +1 -1
  13. package/dist/components/puck-block/cta-sections/text-block-cta/text-block-cta.js +2 -2
  14. package/dist/components/puck-block/feature-sections/feature-cards-grid/component.js +1 -1
  15. package/dist/components/puck-block/feature-sections/feature-list-split/component.js +1 -1
  16. package/dist/components/puck-block/feature-sections/tab-feature/component.js +3 -3
  17. package/dist/components/puck-block/feature-sections/text-media-split/component.js +1 -1
  18. package/dist/components/puck-block/footer-sections/centered-minimal-footer/centered-minimal-footer.js +72 -18
  19. package/dist/components/puck-block/footer-sections/centered-minimal-footer/index.d.ts +79 -0
  20. package/dist/components/puck-block/footer-sections/centered-minimal-footer/index.js +43 -1
  21. package/dist/components/puck-block/footer-sections/compact-newsletter-footer/index.d.ts +41 -0
  22. package/dist/components/puck-block/footer-sections/contact-links-footer/contact-links-footer.js +4 -3
  23. package/dist/components/puck-block/footer-sections/contact-links-footer/index.d.ts +86 -0
  24. package/dist/components/puck-block/footer-sections/contact-links-footer/index.js +1 -1
  25. package/dist/components/puck-block/footer-sections/cta-links-footer/cta-links-footer.js +3 -2
  26. package/dist/components/puck-block/footer-sections/cta-links-footer/index.d.ts +37 -0
  27. package/dist/components/puck-block/footer-sections/cta-links-footer/index.js +1 -1
  28. package/dist/components/puck-block/footer-sections/links-newsletter-footer/index.d.ts +54 -0
  29. package/dist/components/puck-block/footer-sections/newsletter-links-footer/index.d.ts +41 -0
  30. package/dist/components/puck-block/footer-sections/newsletter-top-links-footer/index.d.ts +54 -0
  31. package/dist/components/puck-block/footer-sections/props.d.ts +3 -0
  32. package/dist/components/puck-block/gallery-sections/fullscreen-portfolio/fullscreen-portfolio.js +1 -1
  33. package/dist/components/puck-block/gallery-sections/interactive-portfolio/interactive-portfolio.js +1 -1
  34. package/dist/components/puck-block/gallery-sections/portfolio-cards/portfolio-cards.js +1 -1
  35. package/dist/components/puck-block/gallery-sections/portfolio-divider/portfolio-divider.js +1 -1
  36. package/dist/components/puck-block/gallery-sections/props.d.ts +11 -1
  37. package/dist/components/puck-block/gallery-sections/props.js +7 -2
  38. package/dist/components/puck-block/gallery-sections/scroll-parallax/scroll-parallax.js +18 -0
  39. package/dist/components/puck-block/gallery-sections/scroll-parallax-portfolio/scroll-parallax-portfolio.js +25 -22
  40. package/dist/components/puck-block/gallery-sections/split-carousel/index.d.ts +11 -1
  41. package/dist/components/puck-block/header-sections/centered-navbar/centered-navbar.js +3 -2
  42. package/dist/components/puck-block/header-sections/drawer-navbar/drawer-navbar.js +4 -3
  43. package/dist/components/puck-block/header-sections/floating-bordered-navbar/floating-bordered-navbar.js +5 -4
  44. package/dist/components/puck-block/header-sections/fullscreen-overlay-navbar/fullscreen-overlay-navbar.js +4 -3
  45. package/dist/components/puck-block/header-sections/mega-menu-navbar/mega-menu-navbar.js +3 -2
  46. package/dist/components/puck-block/header-sections/props.d.ts +3 -0
  47. package/dist/components/puck-block/header-sections/standard-navbar/standard-navbar.js +3 -2
  48. package/dist/components/puck-block/hero-sections/carousel-hero/component.js +3 -3
  49. package/dist/components/puck-block/hero-sections/column-scroll-hero/component.js +8 -8
  50. package/dist/components/puck-block/hero-sections/dual-marquee-hero/component.js +6 -6
  51. package/dist/components/puck-block/hero-sections/fullscreen-video-hero/component.js +1 -1
  52. package/dist/components/puck-block/hero-sections/grid-expand-hero/component.js +26 -17
  53. package/dist/components/puck-block/hero-sections/horizontal-marquee-hero/component.js +3 -3
  54. package/dist/components/puck-block/hero-sections/mouse-track-hero/component.js +60 -19
  55. package/dist/components/puck-block/hero-sections/multi-image-grid-hero/multi-image-grid-hero.js +2 -2
  56. package/dist/components/puck-block/hero-sections/overlapping-image-hero/overlapping-image-hero.js +3 -3
  57. package/dist/components/puck-block/hero-sections/parallax-images-hero/component.js +18 -6
  58. package/dist/components/puck-block/hero-sections/scatter-parallax-hero/component.js +9 -7
  59. package/dist/components/puck-block/hero-sections/scroll-expand-video-hero/component.js +7 -5
  60. package/dist/components/puck-block/hero-sections/scroll-zoom-hero/component.js +5 -3
  61. package/dist/components/puck-block/hero-sections/sticky-expand-hero/component.js +1 -1
  62. package/dist/components/puck-block/hero-sections/sticky-expand-hero/index.d.ts +13 -5
  63. package/dist/components/puck-block/hero-sections/sticky-expand-hero/index.js +2 -2
  64. package/dist/components/puck-block/hero-sections/sticky-video-hero/component.js +2 -2
  65. package/dist/components/puck-block/hero-sections/tab-hero/component.js +4 -4
  66. package/dist/components/puck-block/hero-sections/three-image-parallax-hero/component.js +3 -3
  67. package/dist/components/puck-block/hero-sections/vertical-gallery-hero/component.js +6 -6
  68. package/dist/components/puck-block/hero-sections/zoom-grid-hero/component.js +14 -12
  69. package/dist/components/puck-block/metrics-sections/center-media-stats/center-media-stats.js +1 -1
  70. package/dist/components/puck-block/metrics-sections/header-stats-row/header-stats-row.js +1 -1
  71. package/dist/components/puck-block/metrics-sections/mixed-grid-stats/mixed-grid-stats.js +2 -2
  72. package/dist/components/puck-block/metrics-sections/split-stats/split-stats.js +1 -1
  73. package/dist/components/puck-block/metrics-sections/tab-stats/tab-stats.js +3 -3
  74. package/dist/components/puck-block/pricing-sections/pricing-comparison-table/index.d.ts +47 -0
  75. package/dist/components/puck-block/pricing-sections/pricing-comparison-table/index.js +34 -0
  76. package/dist/components/puck-block/pricing-sections/split-pricing/component.js +3 -3
  77. package/dist/components/puck-block/registry.generated.d.ts +273 -6
  78. package/dist/components/puck-block/showcase-sections/tab-timeline/component.js +1 -1
  79. package/dist/components/puck-block/testimonial-sections/bento-testimonial/component.js +2 -2
  80. package/dist/components/puck-block/testimonial-sections/tab-testimonial/component.js +2 -2
  81. package/dist/components/puck-block/text-sections/prose-content/component.js +1 -1
  82. package/dist/components/puck-block/text-sections/side-media-content/component.js +1 -1
  83. package/dist/components/puck-block/text-sections/sticky-text-multi-image/component.js +3 -3
  84. package/dist/components/puck-core/core/props/media.js +6 -1
  85. package/dist/components/puck-core/fields/array-field.d.ts +7 -0
  86. package/dist/components/puck-core/fields/array-field.js +229 -0
  87. package/dist/components/puck-core/fields/auto-field.js +11 -0
  88. package/dist/components/puck-core/fields/image-upload-field.js +1 -1
  89. package/dist/components/puck-core/fields/index.d.ts +1 -0
  90. package/dist/components/puck-core/fields/object-field.js +1 -1
  91. 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
  92. 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
  93. 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
  94. 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
  95. package/package.json +4 -1
@@ -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";
@@ -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,
@@ -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
+ };