dune-react 0.0.23 → 0.0.25

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 (52) hide show
  1. package/dist/components/puck-base/image.js +1 -1
  2. package/dist/components/puck-block/banner-sections/dual-row-marquee/dual-row-marquee.js +77 -53
  3. package/dist/components/puck-block/contact-sections/tab-locations/tab-locations.js +71 -55
  4. package/dist/components/puck-block/feature-sections/tab-feature/component.js +1 -1
  5. package/dist/components/puck-block/gallery-sections/image-carousel/index.d.ts +14 -1
  6. package/dist/components/puck-block/gallery-sections/interactive-portfolio/interactive-portfolio.js +165 -104
  7. package/dist/components/puck-block/gallery-sections/masonry-grid/index.d.ts +17 -1
  8. package/dist/components/puck-block/gallery-sections/masonry-grid/masonry-grid.js +56 -31
  9. package/dist/components/puck-block/gallery-sections/portfolio-cards/index.d.ts +17 -1
  10. package/dist/components/puck-block/gallery-sections/portfolio-cards/portfolio-cards.js +40 -12
  11. package/dist/components/puck-block/gallery-sections/props.d.ts +31 -2
  12. package/dist/components/puck-block/gallery-sections/props.js +17 -4
  13. package/dist/components/puck-block/gallery-sections/scroll-parallax/scroll-parallax.js +68 -37
  14. package/dist/components/puck-block/gallery-sections/scroll-parallax-portfolio/scroll-parallax-portfolio.js +308 -151
  15. package/dist/components/puck-block/gallery-sections/static-grid/index.d.ts +17 -1
  16. package/dist/components/puck-block/header-sections/centered-navbar/centered-navbar.js +94 -14
  17. package/dist/components/puck-block/hero-sections/grid-expand-hero/index.d.ts +17 -1
  18. package/dist/components/puck-block/hero-sections/inline-image-hero/inline-image-hero.js +59 -28
  19. package/dist/components/puck-block/hero-sections/multi-image-grid-hero/index.d.ts +17 -1
  20. package/dist/components/puck-block/hero-sections/props.d.ts +34 -2
  21. package/dist/components/puck-block/hero-sections/props.js +18 -4
  22. package/dist/components/puck-block/hero-sections/tab-hero/component.js +1 -1
  23. package/dist/components/puck-block/index.d.ts +1 -0
  24. package/dist/components/puck-block/location-sections/index.d.ts +3 -0
  25. package/dist/components/puck-block/location-sections/location-1/index.js +102 -0
  26. package/dist/components/puck-block/location-sections/location-1/location.d.ts +0 -3
  27. package/dist/components/puck-block/location-sections/location-1/location.js +139 -0
  28. package/dist/components/puck-block/location-sections/location-2/index.js +126 -0
  29. package/dist/components/puck-block/location-sections/location-2/location.d.ts +0 -3
  30. package/dist/components/puck-block/location-sections/location-2/location.js +133 -0
  31. package/dist/components/puck-block/location-sections/location-3/index.js +109 -0
  32. package/dist/components/puck-block/location-sections/location-3/location.d.ts +0 -3
  33. package/dist/components/puck-block/location-sections/location-3/location.js +140 -0
  34. package/dist/components/puck-block/location-sections/props.d.ts +0 -3
  35. package/dist/components/puck-block/metrics-sections/tab-stats/tab-stats.js +1 -1
  36. package/dist/components/puck-block/pricing-sections/pricing-comparison-table/component.js +134 -33
  37. package/dist/components/puck-block/pricing-sections/tab-pricing-grid/component.js +86 -40
  38. package/dist/components/puck-block/pricing-sections/tab-single-pricing/component.js +1 -1
  39. package/dist/components/puck-block/registry.generated.d.ts +228 -6
  40. package/dist/components/puck-block/registry.generated.js +157 -138
  41. package/dist/components/puck-block/showcase-sections/tab-timeline/component.js +1 -1
  42. package/dist/components/puck-block/testimonial-sections/bento-testimonial/component.js +157 -83
  43. package/dist/components/puck-block/testimonial-sections/centered-testimonial/component.js +71 -28
  44. package/dist/components/puck-block/testimonial-sections/image-testimonial/component.js +66 -29
  45. package/dist/components/puck-block/testimonial-sections/image-testimonial-carousel/component.js +1 -1
  46. package/dist/components/puck-block/testimonial-sections/tab-testimonial/component.js +4 -4
  47. package/dist/components/puck-block/testimonial-sections/testimonial-card-grid/component.js +2 -2
  48. package/dist/components/puck-block/testimonial-sections/testimonial-carousel/component.js +1 -1
  49. package/dist/components/puck-core/core/props/form.js +25 -1
  50. package/dist/components/puck-core/fields/location-field.js +4 -1
  51. package/dist/index.js +6 -0
  52. package/package.json +4 -1
@@ -8,18 +8,39 @@ import { useScrollContainer } from "../../../../hooks/use-scroll-container.js";
8
8
  import { useEditorContext } from "../../../puck-core/core/context/editor-context.js";
9
9
  import { CompoundImage } from "../../../puck-base/image.js";
10
10
  const ScrollParallaxPortfolio = (props) => {
11
- const { projects, styles } = {
11
+ const { projects: projects2, styles } = {
12
12
  ...ScrollParallaxPortfolioDefaults,
13
13
  ...props
14
14
  };
15
- const { className: sectionClassName, style: sectionStyle, css, animation = "threeImageParallax" } = styles ?? {};
15
+ const {
16
+ className: sectionClassName,
17
+ style: sectionStyle,
18
+ css,
19
+ animation = "threeImageParallax"
20
+ } = styles ?? {};
16
21
  if (animation === "scaleOpacity") {
17
- return /* @__PURE__ */ jsx(ScaleOpacityVariant, { projects, sectionClassName, sectionStyle, css });
22
+ return /* @__PURE__ */ jsx(
23
+ ScaleOpacityVariant,
24
+ {
25
+ projects: projects2,
26
+ sectionClassName,
27
+ sectionStyle,
28
+ css
29
+ }
30
+ );
18
31
  }
19
- return /* @__PURE__ */ jsx(ThreeImageParallaxVariant, { projects, sectionClassName, sectionStyle, css });
32
+ return /* @__PURE__ */ jsx(
33
+ ThreeImageParallaxVariant,
34
+ {
35
+ projects: projects2,
36
+ sectionClassName,
37
+ sectionStyle,
38
+ css
39
+ }
40
+ );
20
41
  };
21
42
  const ThreeImageParallaxVariant = ({
22
- projects,
43
+ projects: projects2,
23
44
  sectionClassName,
24
45
  sectionStyle,
25
46
  css
@@ -37,19 +58,29 @@ const ThreeImageParallaxVariant = ({
37
58
  restDelta: 1e-3,
38
59
  mass: 0.5
39
60
  });
40
- const computedStyles = projects.map((_, index) => {
41
- const blockOffset = projects.length ? index / projects.length : 0;
61
+ const computedStyles = projects2.map((_, index) => {
62
+ const blockOffset = projects2.length ? index / projects2.length : 0;
42
63
  return {
43
64
  headerStyles: {
44
65
  opacity: useTransform(
45
66
  smoothProgress,
46
- [45e-4 + blockOffset, 0.022 + blockOffset, 0.06 + blockOffset, 0.082 + blockOffset],
67
+ [
68
+ 45e-4 + blockOffset,
69
+ 0.022 + blockOffset,
70
+ 0.06 + blockOffset,
71
+ 0.082 + blockOffset
72
+ ],
47
73
  [0, 1, 1, 0],
48
74
  { ease: easeInOut }
49
75
  ),
50
76
  scale: useTransform(
51
77
  smoothProgress,
52
- [0 + blockOffset, 0.022 + blockOffset, 0.06 + blockOffset, 0.082 + blockOffset],
78
+ [
79
+ 0 + blockOffset,
80
+ 0.022 + blockOffset,
81
+ 0.06 + blockOffset,
82
+ 0.082 + blockOffset
83
+ ],
53
84
  [0.9, 1, 1, 0.9],
54
85
  { ease: easeInOut }
55
86
  )
@@ -72,78 +103,131 @@ const ThreeImageParallaxVariant = ({
72
103
  }
73
104
  };
74
105
  });
75
- return /* @__PURE__ */ jsxs(SectionWrapper, { className: cn("relative px-[5%]", sectionClassName), style: sectionStyle, css, children: [
76
- /* @__PURE__ */ jsx("div", { ref: transformRef, className: "container", children: /* @__PURE__ */ jsx("div", { className: "py-6 md:py-8 lg:py-10", children: projects.map((project, index) => {
77
- var _a, _b, _c, _d, _e, _f;
78
- return /* @__PURE__ */ jsxs(
79
- "div",
80
- {
81
- className: cn("relative flex flex-col", isEditor ? "h-auto mb-12" : "h-[500vh]", {
82
- "mt-[-40vh]": !isEditor && index > 0
83
- }),
84
- children: [
85
- /* @__PURE__ */ jsx(
86
- motion.div,
87
- {
88
- className: cn("flex justify-center", isEditor ? "relative h-auto py-8" : "sticky top-0 h-[150vh]"),
89
- style: isEditor ? { opacity: 1, scale: 1 } : computedStyles[index].headerStyles,
90
- children: /* @__PURE__ */ jsxs("div", { className: cn("-z-10 flex w-full max-w-lg flex-col items-center text-center", isEditor ? "relative" : "absolute top-[50vh]"), children: [
91
- /* @__PURE__ */ jsx("h3", { className: "text-5xl font-bold md:text-7xl lg:text-8xl", children: project.title }),
92
- project.tags && /* @__PURE__ */ jsx("div", { className: "mt-4 flex flex-wrap justify-center gap-2", children: project.tags.map((tag, tagIndex) => /* @__PURE__ */ jsx("li", { className: "flex", children: /* @__PURE__ */ jsx("div", { className: "inline-flex border border-neutral-lightest bg-background-secondary px-2 py-1 text-sm font-semibold text-text-primary", children: tag.label }) }, tagIndex)) })
93
- ] })
94
- }
95
- ),
96
- /* @__PURE__ */ jsxs("div", { className: cn("z-10 flex items-center justify-center overflow-hidden", isEditor ? "relative h-auto" : "sticky top-0 h-screen"), children: [
97
- /* @__PURE__ */ jsx("a", { href: "#", className: "inline-block max-w-full", children: /* @__PURE__ */ jsx("div", { className: cn("flex w-full max-w-lg items-center justify-center overflow-hidden", isEditor ? "h-auto" : "h-screen"), children: /* @__PURE__ */ jsx(
106
+ if (isEditor) {
107
+ return /* @__PURE__ */ jsx(
108
+ SectionWrapper,
109
+ {
110
+ className: cn("relative px-[5%]", sectionClassName),
111
+ style: sectionStyle,
112
+ css,
113
+ children: /* @__PURE__ */ jsx("div", { className: "container", children: /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-20 py-6 md:py-8 lg:py-10", children: projects2.map((project, index) => {
114
+ var _a, _b, _c, _d, _e, _f;
115
+ return /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col items-center", children: [
116
+ /* @__PURE__ */ jsxs("div", { className: "mb-6 flex w-full max-w-lg flex-col items-center text-center", children: [
117
+ /* @__PURE__ */ jsx("h3", { className: "text-5xl font-bold md:text-7xl lg:text-8xl", children: project.title }),
118
+ project.tags && /* @__PURE__ */ jsx("div", { className: "mt-4 flex flex-wrap justify-center gap-2", children: project.tags.map((tag, tagIndex) => /* @__PURE__ */ jsx("li", { className: "flex", children: /* @__PURE__ */ jsx("div", { className: "inline-flex border border-neutral-lightest bg-background-secondary px-2 py-1 text-sm font-semibold text-text-primary", children: tag.label }) }, tagIndex)) })
119
+ ] }),
120
+ /* @__PURE__ */ jsxs("div", { className: "relative flex w-full items-start justify-center", children: [
121
+ /* @__PURE__ */ jsx("div", { className: "hidden w-full max-w-xs shrink-0 lg:block", children: /* @__PURE__ */ jsx(
98
122
  CompoundImage,
99
123
  {
100
- src: ((_a = project.imageCenter) == null ? void 0 : _a.src) ?? project.image.src,
101
- alt: ((_b = project.imageCenter) == null ? void 0 : _b.alt) ?? project.image.alt,
102
- className: "size-full object-contain"
124
+ src: ((_a = project.imageLeft) == null ? void 0 : _a.src) ?? project.image.src,
125
+ alt: ((_b = project.imageLeft) == null ? void 0 : _b.alt) ?? project.image.alt,
126
+ className: "w-full object-contain"
103
127
  }
104
- ) }) }),
105
- /* @__PURE__ */ jsx("div", { className: cn("absolute inset-y-0 left-0 right-auto z-20 hidden w-full max-w-xxs lg:flex", isEditor ? "h-auto" : "h-screen"), children: /* @__PURE__ */ jsx(
106
- motion.div,
128
+ ) }),
129
+ /* @__PURE__ */ jsx("div", { className: "w-full max-w-lg", children: /* @__PURE__ */ jsx(
130
+ CompoundImage,
107
131
  {
108
- className: cn("relative w-full", isEditor ? "pt-0" : "pt-[100vh]"),
109
- style: isEditor ? { y: 0 } : computedStyles[index].imageLeftStyles,
110
- children: /* @__PURE__ */ jsx(
111
- CompoundImage,
112
- {
113
- src: ((_c = project.imageLeft) == null ? void 0 : _c.src) ?? project.image.src,
114
- alt: ((_d = project.imageLeft) == null ? void 0 : _d.alt) ?? project.image.alt,
115
- className: "w-full object-contain"
116
- }
117
- )
132
+ src: ((_c = project.imageCenter) == null ? void 0 : _c.src) ?? project.image.src,
133
+ alt: ((_d = project.imageCenter) == null ? void 0 : _d.alt) ?? project.image.alt,
134
+ className: "w-full object-contain"
118
135
  }
119
136
  ) }),
120
- /* @__PURE__ */ jsx("div", { className: cn("absolute inset-y-0 left-auto right-0 z-20 hidden w-full max-w-xxs lg:flex", isEditor ? "h-auto" : "h-screen"), children: /* @__PURE__ */ jsx(
121
- motion.div,
137
+ /* @__PURE__ */ jsx("div", { className: "hidden w-full max-w-xs shrink-0 lg:block", children: /* @__PURE__ */ jsx(
138
+ CompoundImage,
122
139
  {
123
- className: cn("relative w-full", isEditor ? "pt-0" : "pt-[100vh]"),
124
- style: isEditor ? { y: 0 } : computedStyles[index].imageRightStyles,
125
- children: /* @__PURE__ */ jsx(
140
+ src: ((_e = project.imageRight) == null ? void 0 : _e.src) ?? project.image.src,
141
+ alt: ((_f = project.imageRight) == null ? void 0 : _f.alt) ?? project.image.alt,
142
+ className: "w-full object-contain"
143
+ }
144
+ ) })
145
+ ] })
146
+ ] }, index);
147
+ }) }) })
148
+ }
149
+ );
150
+ }
151
+ return /* @__PURE__ */ jsxs(
152
+ SectionWrapper,
153
+ {
154
+ className: cn("relative px-[5%]", sectionClassName),
155
+ style: sectionStyle,
156
+ css,
157
+ children: [
158
+ /* @__PURE__ */ jsx("div", { ref: transformRef, className: "container", children: /* @__PURE__ */ jsx("div", { className: "py-6 md:py-8 lg:py-10", children: projects2.map((project, index) => {
159
+ var _a, _b, _c, _d, _e, _f;
160
+ return /* @__PURE__ */ jsxs(
161
+ "div",
162
+ {
163
+ className: cn("relative flex h-[500vh] flex-col", {
164
+ "mt-[-40vh]": index > 0
165
+ }),
166
+ children: [
167
+ /* @__PURE__ */ jsx(
168
+ motion.div,
169
+ {
170
+ className: "sticky top-0 flex h-[150vh] justify-center",
171
+ style: computedStyles[index].headerStyles,
172
+ children: /* @__PURE__ */ jsxs("div", { className: "absolute top-[50vh] -z-10 flex w-full max-w-lg flex-col items-center text-center", children: [
173
+ /* @__PURE__ */ jsx("h3", { className: "text-5xl font-bold md:text-7xl lg:text-8xl", children: project.title }),
174
+ project.tags && /* @__PURE__ */ jsx("div", { className: "mt-4 flex flex-wrap justify-center gap-2", children: project.tags.map((tag, tagIndex) => /* @__PURE__ */ jsx("li", { className: "flex", children: /* @__PURE__ */ jsx("div", { className: "inline-flex border border-neutral-lightest bg-background-secondary px-2 py-1 text-sm font-semibold text-text-primary", children: tag.label }) }, tagIndex)) })
175
+ ] })
176
+ }
177
+ ),
178
+ /* @__PURE__ */ jsxs("div", { className: "sticky top-0 z-10 flex h-screen items-center justify-center overflow-hidden", children: [
179
+ /* @__PURE__ */ jsx("a", { href: "#", className: "inline-block max-w-full", children: /* @__PURE__ */ jsx("div", { className: "flex h-screen w-full max-w-5xl items-center justify-center overflow-hidden", children: /* @__PURE__ */ jsx(
126
180
  CompoundImage,
127
181
  {
128
- src: ((_e = project.imageRight) == null ? void 0 : _e.src) ?? project.image.src,
129
- alt: ((_f = project.imageRight) == null ? void 0 : _f.alt) ?? project.image.alt,
130
- className: "w-full object-contain"
182
+ src: ((_a = project.imageCenter) == null ? void 0 : _a.src) ?? project.image.src,
183
+ alt: ((_b = project.imageCenter) == null ? void 0 : _b.alt) ?? project.image.alt,
184
+ className: "size-full object-contain"
131
185
  }
132
- )
133
- }
134
- ) })
135
- ] }),
136
- !isEditor && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 -z-10 mt-[100vh]" })
137
- ]
138
- },
139
- index
140
- );
141
- }) }) }),
142
- !isEditor && /* @__PURE__ */ jsx("div", { className: "h-screen" })
143
- ] });
186
+ ) }) }),
187
+ /* @__PURE__ */ jsx("div", { className: "absolute inset-y-0 left-0 right-auto z-20 hidden h-screen w-full max-w-xs lg:flex", children: /* @__PURE__ */ jsx(
188
+ motion.div,
189
+ {
190
+ className: "relative w-full pt-[100vh]",
191
+ style: computedStyles[index].imageLeftStyles,
192
+ children: /* @__PURE__ */ jsx(
193
+ CompoundImage,
194
+ {
195
+ src: ((_c = project.imageLeft) == null ? void 0 : _c.src) ?? project.image.src,
196
+ alt: ((_d = project.imageLeft) == null ? void 0 : _d.alt) ?? project.image.alt,
197
+ className: "h-auto w-full object-contain"
198
+ }
199
+ )
200
+ }
201
+ ) }),
202
+ /* @__PURE__ */ jsx("div", { className: "absolute inset-y-0 left-auto right-0 z-20 hidden h-screen w-full max-w-xs lg:flex", children: /* @__PURE__ */ jsx(
203
+ motion.div,
204
+ {
205
+ className: "relative w-full pt-[100vh]",
206
+ style: computedStyles[index].imageRightStyles,
207
+ children: /* @__PURE__ */ jsx(
208
+ CompoundImage,
209
+ {
210
+ src: ((_e = project.imageRight) == null ? void 0 : _e.src) ?? project.image.src,
211
+ alt: ((_f = project.imageRight) == null ? void 0 : _f.alt) ?? project.image.alt,
212
+ className: "h-auto w-full object-contain"
213
+ }
214
+ )
215
+ }
216
+ ) })
217
+ ] }),
218
+ /* @__PURE__ */ jsx("div", { className: "absolute inset-0 -z-10 mt-[100vh]" })
219
+ ]
220
+ },
221
+ index
222
+ );
223
+ }) }) }),
224
+ /* @__PURE__ */ jsx("div", { className: "h-screen" })
225
+ ]
226
+ }
227
+ );
144
228
  };
145
229
  const ScaleOpacityVariant = ({
146
- projects,
230
+ projects: projects2,
147
231
  sectionClassName,
148
232
  sectionStyle,
149
233
  css
@@ -155,77 +239,164 @@ const ScaleOpacityVariant = ({
155
239
  target: containerRef,
156
240
  ...scrollContainerRef.current ? { container: scrollContainerRef } : {}
157
241
  });
158
- return /* @__PURE__ */ jsx(SectionWrapper, { ref: containerRef, className: cn("relative px-[5%]", sectionClassName), style: sectionStyle, css, children: /* @__PURE__ */ jsx("div", { className: isEditor ? "h-auto" : "h-[300vh]", children: /* @__PURE__ */ jsx("div", { className: cn("flex items-center justify-center", isEditor ? "relative flex-col gap-8 py-12" : "sticky top-0 h-screen"), children: projects.map((project, index) => {
159
- const segmentSize = 1 / projects.length;
160
- const start = index * segmentSize;
161
- const end = start + segmentSize;
162
- const opacity = useTransform(
163
- scrollYProgress,
164
- [start, start + segmentSize * 0.15, end - segmentSize * 0.15, end],
165
- [0, 1, 1, 0]
166
- );
167
- const scale = useTransform(
168
- scrollYProgress,
169
- [start, start + segmentSize * 0.15, end - segmentSize * 0.15, end],
170
- [0.8, 1, 1, 0.8]
171
- );
172
- return /* @__PURE__ */ jsx(
173
- motion.div,
174
- {
175
- style: isEditor ? { opacity: 1, scale: 1 } : { opacity, scale },
176
- className: cn("flex items-center justify-center", isEditor ? "relative w-full" : "absolute inset-0"),
177
- children: /* @__PURE__ */ jsxs("div", { className: "container max-w-4xl border border-border-primary bg-background-primary p-8 md:p-12", children: [
178
- /* @__PURE__ */ jsx("div", { className: "mb-6", children: /* @__PURE__ */ jsx(
179
- CompoundImage,
180
- {
181
- src: project.image.src,
182
- alt: project.image.alt,
183
- className: "aspect-video w-full object-cover"
184
- }
185
- ) }),
186
- /* @__PURE__ */ jsx("h3", { className: "mb-2 text-2xl font-bold md:text-3xl", children: project.title }),
187
- /* @__PURE__ */ jsx("p", { children: project.description }),
188
- project.tags && /* @__PURE__ */ jsx("div", { className: "mt-4 flex flex-wrap gap-2", children: project.tags.map((tag, tagIndex) => /* @__PURE__ */ jsx(
189
- "span",
190
- {
191
- className: "bg-background-secondary px-2 py-1 text-sm font-semibold",
192
- children: tag.label
193
- },
194
- tagIndex
195
- )) })
196
- ] })
197
- },
198
- index
199
- );
200
- }) }) }) });
242
+ return /* @__PURE__ */ jsx(
243
+ SectionWrapper,
244
+ {
245
+ ref: containerRef,
246
+ className: cn("relative px-[5%]", sectionClassName),
247
+ style: sectionStyle,
248
+ css,
249
+ children: /* @__PURE__ */ jsx("div", { className: isEditor ? "h-auto" : "h-[300vh]", children: /* @__PURE__ */ jsx(
250
+ "div",
251
+ {
252
+ className: cn(
253
+ "flex items-center justify-center",
254
+ isEditor ? "relative flex-col gap-8 py-12" : "sticky top-0 h-screen"
255
+ ),
256
+ children: projects2.map((project, index) => {
257
+ const segmentSize = 1 / projects2.length;
258
+ const start = index * segmentSize;
259
+ const end = start + segmentSize;
260
+ const opacity = useTransform(
261
+ scrollYProgress,
262
+ [
263
+ start,
264
+ start + segmentSize * 0.15,
265
+ end - segmentSize * 0.15,
266
+ end
267
+ ],
268
+ [0, 1, 1, 0]
269
+ );
270
+ const scale = useTransform(
271
+ scrollYProgress,
272
+ [
273
+ start,
274
+ start + segmentSize * 0.15,
275
+ end - segmentSize * 0.15,
276
+ end
277
+ ],
278
+ [0.8, 1, 1, 0.8]
279
+ );
280
+ return /* @__PURE__ */ jsx(
281
+ motion.div,
282
+ {
283
+ style: isEditor ? { opacity: 1, scale: 1 } : { opacity, scale },
284
+ className: cn(
285
+ "flex items-center justify-center",
286
+ isEditor ? "relative w-full" : "absolute inset-0"
287
+ ),
288
+ children: /* @__PURE__ */ jsxs("div", { className: "container max-w-4xl border border-border-primary bg-background-primary p-8 md:p-12", children: [
289
+ /* @__PURE__ */ jsx("div", { className: "mb-6", children: /* @__PURE__ */ jsx(
290
+ CompoundImage,
291
+ {
292
+ src: project.image.src,
293
+ alt: project.image.alt,
294
+ className: "aspect-video w-full object-cover"
295
+ }
296
+ ) }),
297
+ /* @__PURE__ */ jsx("h3", { className: "mb-2 text-2xl font-bold md:text-3xl", children: project.title }),
298
+ /* @__PURE__ */ jsx("p", { children: project.description }),
299
+ project.tags && /* @__PURE__ */ jsx("div", { className: "mt-4 flex flex-wrap gap-2", children: project.tags.map((tag, tagIndex) => /* @__PURE__ */ jsx(
300
+ "span",
301
+ {
302
+ className: "bg-background-secondary px-2 py-1 text-sm font-semibold",
303
+ children: tag.label
304
+ },
305
+ tagIndex
306
+ )) })
307
+ ] })
308
+ },
309
+ index
310
+ );
311
+ })
312
+ }
313
+ ) })
314
+ }
315
+ );
201
316
  };
202
- const defaultProject = {
203
- title: "Project name",
204
- description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique.",
205
- image: {
206
- src: "https://picsum.photos/seed/scroll-port/1200/800",
207
- alt: "Placeholder image"
208
- },
209
- url: "#",
210
- button: { label: "View project" },
211
- tags: [
212
- { label: "Tag one", url: "#" },
213
- { label: "Tag two", url: "#" },
214
- { label: "Tag three", url: "#" }
215
- ],
216
- imageCenter: {
217
- src: "https://picsum.photos/seed/scroll-port-center/800/1000",
218
- alt: "Placeholder center"
317
+ const projects = [
318
+ {
319
+ title: "Project name",
320
+ description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique.",
321
+ image: {
322
+ src: "https://images.unsplash.com/photo-1547658719-da2b51169166?w=1200&h=800&fit=crop",
323
+ alt: "Web design workspace"
324
+ },
325
+ url: "#",
326
+ button: { label: "View project" },
327
+ tags: [
328
+ { label: "Tag one", url: "#" },
329
+ { label: "Tag two", url: "#" },
330
+ { label: "Tag three", url: "#" }
331
+ ],
332
+ imageCenter: {
333
+ src: "https://images.unsplash.com/photo-1559028012-481c04fa702d?w=1000&h=660&fit=crop",
334
+ alt: "Web design process"
335
+ },
336
+ imageLeft: {
337
+ src: "https://images.unsplash.com/photo-1581291518857-4e27b48ff24e?w=600&h=400&fit=crop",
338
+ alt: "Wireframe sketches"
339
+ },
340
+ imageRight: {
341
+ src: "https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=600&h=400&fit=crop",
342
+ alt: "Analytics dashboard"
343
+ }
219
344
  },
220
- imageLeft: {
221
- src: "https://picsum.photos/seed/scroll-port-left/400/600",
222
- alt: "Placeholder left"
345
+ {
346
+ title: "Project name",
347
+ description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique.",
348
+ image: {
349
+ src: "https://images.unsplash.com/photo-1626785774573-4b799315345d?w=1200&h=800&fit=crop",
350
+ alt: "Design studio"
351
+ },
352
+ url: "#",
353
+ button: { label: "View project" },
354
+ tags: [
355
+ { label: "Tag one", url: "#" },
356
+ { label: "Tag two", url: "#" },
357
+ { label: "Tag three", url: "#" }
358
+ ],
359
+ imageCenter: {
360
+ src: "https://images.unsplash.com/photo-1618004912476-29818d81ae2e?w=1000&h=660&fit=crop",
361
+ alt: "Colorful abstract shapes"
362
+ },
363
+ imageLeft: {
364
+ src: "https://images.unsplash.com/photo-1561070791-2526d30994b5?w=600&h=400&fit=crop",
365
+ alt: "Brand color palette"
366
+ },
367
+ imageRight: {
368
+ src: "https://images.unsplash.com/photo-1611532736597-de2d4265fba3?w=600&h=400&fit=crop",
369
+ alt: "Typography design"
370
+ }
223
371
  },
224
- imageRight: {
225
- src: "https://picsum.photos/seed/scroll-port-right/400/600",
226
- alt: "Placeholder right"
372
+ {
373
+ title: "Project name",
374
+ description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique.",
375
+ image: {
376
+ src: "https://images.unsplash.com/photo-1512941937669-90a1b58e7e9c?w=1200&h=800&fit=crop",
377
+ alt: "Mobile device"
378
+ },
379
+ url: "#",
380
+ button: { label: "View project" },
381
+ tags: [
382
+ { label: "Tag one", url: "#" },
383
+ { label: "Tag two", url: "#" },
384
+ { label: "Tag three", url: "#" }
385
+ ],
386
+ imageCenter: {
387
+ src: "https://images.unsplash.com/photo-1551650975-87deedd944c3?w=1000&h=660&fit=crop",
388
+ alt: "App mockup"
389
+ },
390
+ imageLeft: {
391
+ src: "https://images.unsplash.com/photo-1522542550221-31fd19575a2d?w=600&h=400&fit=crop",
392
+ alt: "Wireframe sketches"
393
+ },
394
+ imageRight: {
395
+ src: "https://images.unsplash.com/photo-1586953208448-b95a79798f07?w=600&h=400&fit=crop",
396
+ alt: "Mobile app in use"
397
+ }
227
398
  }
228
- };
399
+ ];
229
400
  const ScrollParallaxPortfolioDefaults = {
230
401
  tagline: "",
231
402
  heading: "",
@@ -233,21 +404,7 @@ const ScrollParallaxPortfolioDefaults = {
233
404
  button: { label: "View all" },
234
405
  buttons: [],
235
406
  images: [],
236
- projects: [
237
- { ...defaultProject },
238
- {
239
- ...defaultProject,
240
- imageCenter: { src: "https://picsum.photos/seed/spp-c2/800/1000", alt: "Center 2" },
241
- imageLeft: { src: "https://picsum.photos/seed/spp-l2/400/600", alt: "Left 2" },
242
- imageRight: { src: "https://picsum.photos/seed/spp-r2/400/600", alt: "Right 2" }
243
- },
244
- {
245
- ...defaultProject,
246
- imageCenter: { src: "https://picsum.photos/seed/spp-c3/800/1000", alt: "Center 3" },
247
- imageLeft: { src: "https://picsum.photos/seed/spp-l3/400/600", alt: "Left 3" },
248
- imageRight: { src: "https://picsum.photos/seed/spp-r3/400/600", alt: "Right 3" }
249
- }
250
- ],
407
+ projects,
251
408
  hoverLinks: [],
252
409
  styles: {
253
410
  animation: "threeImageParallax"
@@ -56,8 +56,24 @@ declare const conf: {
56
56
  };
57
57
  };
58
58
  columns: {
59
- readonly type: "text";
59
+ readonly type: "select";
60
60
  readonly label: "Columns";
61
+ readonly options: readonly [{
62
+ readonly label: "1";
63
+ readonly value: "1";
64
+ }, {
65
+ readonly label: "2";
66
+ readonly value: "2";
67
+ }, {
68
+ readonly label: "3";
69
+ readonly value: "3";
70
+ }, {
71
+ readonly label: "2 → 3 (responsive)";
72
+ readonly value: "2-lg3";
73
+ }, {
74
+ readonly label: "2 → 4 (responsive)";
75
+ readonly value: "2-lg4";
76
+ }];
61
77
  };
62
78
  gap: {
63
79
  readonly type: "radio";