dune-react 0.0.10 → 0.0.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.
- package/dist/components/puck-base/article-card.js +1 -1
- package/dist/components/puck-base/button.d.ts +0 -1
- package/dist/components/puck-base/button.js +3 -3
- package/dist/components/puck-base/card.js +0 -1
- package/dist/components/puck-base/content.js +0 -1
- package/dist/components/puck-base/core/fields.d.ts +1 -23
- package/dist/components/puck-base/core/fields.js +6 -7
- package/dist/components/puck-base/core/styles.d.ts +102 -33
- package/dist/components/puck-base/core/styles.js +45 -81
- package/dist/components/puck-base/core/with-editable.d.ts +4 -9
- package/dist/components/puck-base/core/with-editable.js +43 -62
- package/dist/components/puck-base/{action-field.d.ts → fields/action-field.d.ts} +1 -1
- package/dist/components/puck-base/{action-field.js → fields/action-field.js} +91 -16
- package/dist/components/puck-base/fields/auto-field.d.ts +0 -1
- package/dist/components/puck-base/fields/auto-field.js +2 -90
- package/dist/components/puck-base/form.js +0 -1
- package/dist/components/puck-base/index.d.ts +1 -1
- package/dist/components/puck-base/navigation-menu.d.ts +18 -0
- package/dist/components/puck-base/navigation-menu.js +202 -0
- package/dist/components/puck-block/cta-sections/banner-cta-1/banner-cta.d.ts +2 -1
- package/dist/components/puck-block/cta-sections/banner-cta-1/banner-cta.js +6 -5
- package/dist/components/puck-block/cta-sections/banner-cta-1/index.js +2 -2
- package/dist/components/puck-block/cta-sections/gradient-cta-1/gradient-cta.js +34 -12
- package/dist/components/puck-block/cta-sections/promo-section-1/index.js +1 -2
- package/dist/components/puck-block/cta-sections/promo-section-1/promo-section.js +2 -2
- package/dist/components/puck-block/faq-sections/accordion-1/accordion.js +8 -3
- package/dist/components/puck-block/feature-sections/feature-cards-1/index.js +0 -2
- package/dist/components/puck-block/feature-sections/icon-grid-1/icon-grid.js +1 -1
- package/dist/components/puck-block/gallery-sections/gallery-1/index.js +1 -1
- package/dist/components/puck-block/gallery-sections/gallery-2/gallery-2.js +14 -6
- package/dist/components/puck-block/gallery-sections/gallery-2/index.js +1 -1
- package/dist/components/puck-block/header-sections/header-1/header.d.ts +4 -1
- package/dist/components/puck-block/header-sections/header-1/header.js +26 -19
- package/dist/components/puck-block/header-sections/header-1/index.js +13 -18
- package/dist/components/puck-block/hero-sections/fullscreen-hero-1/fullscreen-hero.js +15 -2
- package/dist/components/puck-block/hero-sections/fullscreen-hero-1/index.js +0 -1
- package/dist/components/puck-block/hero-sections/gradient-hero-1/gradient-hero.js +2 -2
- package/dist/components/puck-block/hero-sections/gradient-hero-1/index.js +1 -0
- package/dist/components/puck-block/hero-sections/grid-hero-1/grid-hero.js +1 -1
- package/dist/components/puck-block/hero-sections/hero-1/hero.js +1 -1
- package/dist/components/puck-block/hero-sections/image-hero-1/image-hero.d.ts +0 -1
- package/dist/components/puck-block/hero-sections/image-hero-1/image-hero.js +1 -1
- package/dist/components/puck-block/hero-sections/image-hero-1/index.js +21 -4
- package/dist/components/puck-block/hero-sections/video-hero-1/video-hero.js +1 -1
- package/dist/components/puck-block/location-sections/location-1/index.js +0 -3
- package/dist/components/puck-block/location-sections/location-1/location.d.ts +1 -0
- package/dist/components/puck-block/location-sections/location-1/location.js +1 -2
- package/dist/components/puck-block/location-sections/location-2/index.js +0 -3
- package/dist/components/puck-block/location-sections/location-2/location.d.ts +1 -0
- package/dist/components/puck-block/location-sections/location-2/location.js +1 -2
- package/dist/components/puck-block/location-sections/location-3/location.d.ts +2 -0
- package/dist/components/puck-block/location-sections/location-3/location.js +5 -2
- package/dist/components/puck-block/metrics-sections/stats-2/index.js +0 -2
- package/dist/components/puck-block/metrics-sections/stats-2/stats-2.js +0 -1
- package/dist/components/puck-block/metrics-sections/stats-3/index.js +0 -2
- package/dist/components/puck-block/metrics-sections/stats-3/stats-3.js +14 -1
- package/dist/components/puck-block/pricing-sections/pricing-1/index.js +0 -2
- package/dist/components/puck-block/pricing-sections/pricing-2/index.js +0 -4
- package/dist/components/puck-block/showcase-sections/before-after-1/index.js +0 -1
- package/dist/components/puck-block/showcase-sections/case-study-1/case-study.js +1 -1
- package/dist/components/puck-block/showcase-sections/case-study-1/index.js +1 -1
- package/dist/components/puck-block/team-sections/team-grid-1/index.js +1 -1
- package/dist/components/puck-block/team-sections/team-grid-2/index.js +0 -2
- package/dist/components/puck-block/testimonial-sections/logo-marquee-1/index.js +1 -1
- package/dist/components/puck-block/testimonial-sections/logo-marquee-1/logo-marquee.js +1 -1
- package/dist/components/puck-block/testimonial-sections/review-section-1/index.js +1 -1
- package/dist/components/puck-block/testimonial-sections/testimonials-1/testimonials.js +30 -10
- package/dist/components/puck-block/text-sections/articles-1/articles.js +1 -1
- package/dist/components/puck-block/text-sections/articles-1/index.js +1 -2
- package/dist/components/puck-block/text-sections/content-section-1/content-section.js +0 -1
- package/dist/components/puck-block/text-sections/content-section-1/index.js +0 -2
- package/dist/components/puck-block/text-sections/tab-section-1/tab-section.js +7 -3
- package/dist/components/shadcn/navigation-menu.js +8 -33
- package/dist/index.js +1 -1
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { memo,
|
|
2
|
+
import { memo, useState, useRef, useMemo, useCallback, useEffect } from "react";
|
|
3
3
|
import { Input } from "../../shadcn/input.js";
|
|
4
4
|
import { Textarea } from "../../shadcn/textarea.js";
|
|
5
5
|
import { Label } from "../../shadcn/label.js";
|
|
@@ -8,8 +8,7 @@ import { Button } from "../../shadcn/button.js";
|
|
|
8
8
|
import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from "../../shadcn/select.js";
|
|
9
9
|
import { Popover, PopoverTrigger, PopoverContent } from "../../shadcn/popover.js";
|
|
10
10
|
import { ToggleGroup, ToggleGroupItem } from "../../shadcn/toggle-group.js";
|
|
11
|
-
import {
|
|
12
|
-
import { useEditorContext } from "../editor-context.js";
|
|
11
|
+
import { ChevronDownIcon, CheckIcon } from "lucide-react";
|
|
13
12
|
const LARGE_SELECT_THRESHOLD = 200;
|
|
14
13
|
const VIRTUAL_ITEM_HEIGHT = 32;
|
|
15
14
|
const VIRTUAL_VIEWPORT_HEIGHT = 256;
|
|
@@ -213,81 +212,6 @@ const VirtualizedSelectField = memo(function VirtualizedSelectField2({
|
|
|
213
212
|
] })
|
|
214
213
|
] });
|
|
215
214
|
});
|
|
216
|
-
const UrlField = memo(function UrlField2({
|
|
217
|
-
label,
|
|
218
|
-
value,
|
|
219
|
-
onChange,
|
|
220
|
-
sitePages
|
|
221
|
-
}) {
|
|
222
|
-
const currentValue = value ?? "";
|
|
223
|
-
const selectedSlug = currentValue.startsWith("/") ? currentValue.slice(1) : null;
|
|
224
|
-
const handlePaste = useCallback(async () => {
|
|
225
|
-
try {
|
|
226
|
-
const text = await navigator.clipboard.readText();
|
|
227
|
-
if (text) onChange(text.trim());
|
|
228
|
-
} catch {
|
|
229
|
-
}
|
|
230
|
-
}, [onChange]);
|
|
231
|
-
return /* @__PURE__ */ jsxs("div", { className: "mb-4 space-y-3", children: [
|
|
232
|
-
/* @__PURE__ */ jsx(Label, { children: label }),
|
|
233
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
234
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-1 items-center gap-2 rounded-lg border px-3 py-2", children: [
|
|
235
|
-
/* @__PURE__ */ jsx(LinkIcon, { className: "text-muted-foreground size-4 shrink-0" }),
|
|
236
|
-
/* @__PURE__ */ jsx(
|
|
237
|
-
"input",
|
|
238
|
-
{
|
|
239
|
-
className: "w-full bg-transparent text-sm outline-none placeholder:text-muted-foreground",
|
|
240
|
-
placeholder: "https:// or /page-slug",
|
|
241
|
-
value: currentValue,
|
|
242
|
-
onChange: (e) => onChange(e.target.value)
|
|
243
|
-
}
|
|
244
|
-
),
|
|
245
|
-
currentValue && /* @__PURE__ */ jsx(
|
|
246
|
-
"button",
|
|
247
|
-
{
|
|
248
|
-
type: "button",
|
|
249
|
-
className: "text-muted-foreground hover:text-foreground shrink-0",
|
|
250
|
-
onClick: () => onChange(""),
|
|
251
|
-
children: /* @__PURE__ */ jsx(XIcon, { className: "size-3.5" })
|
|
252
|
-
}
|
|
253
|
-
)
|
|
254
|
-
] }),
|
|
255
|
-
/* @__PURE__ */ jsxs(
|
|
256
|
-
Button,
|
|
257
|
-
{
|
|
258
|
-
type: "button",
|
|
259
|
-
variant: "outline",
|
|
260
|
-
size: "sm",
|
|
261
|
-
className: "shrink-0 gap-1.5",
|
|
262
|
-
onClick: handlePaste,
|
|
263
|
-
children: [
|
|
264
|
-
/* @__PURE__ */ jsx(ClipboardIcon, { className: "size-3.5" }),
|
|
265
|
-
"Paste"
|
|
266
|
-
]
|
|
267
|
-
}
|
|
268
|
-
)
|
|
269
|
-
] }),
|
|
270
|
-
sitePages.length > 0 && /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
271
|
-
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-xs font-medium", children: "Site pages" }),
|
|
272
|
-
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: sitePages.map((page) => {
|
|
273
|
-
const isSelected = selectedSlug === page.slug;
|
|
274
|
-
return /* @__PURE__ */ jsxs(
|
|
275
|
-
"button",
|
|
276
|
-
{
|
|
277
|
-
type: "button",
|
|
278
|
-
className: `inline-flex items-center gap-1.5 rounded-full border px-3 py-1 text-xs font-medium transition-colors ${isSelected ? "border-primary bg-primary text-primary-foreground" : "border-border bg-background text-foreground hover:bg-accent"}`,
|
|
279
|
-
onClick: () => onChange(isSelected ? "" : `${page.slug}`),
|
|
280
|
-
children: [
|
|
281
|
-
/* @__PURE__ */ jsx(GlobeIcon, { className: "size-3" }),
|
|
282
|
-
page.label
|
|
283
|
-
]
|
|
284
|
-
},
|
|
285
|
-
page.slug
|
|
286
|
-
);
|
|
287
|
-
}) })
|
|
288
|
-
] })
|
|
289
|
-
] });
|
|
290
|
-
});
|
|
291
215
|
const AutoField = memo(function AutoField2({
|
|
292
216
|
field,
|
|
293
217
|
name,
|
|
@@ -296,18 +220,6 @@ const AutoField = memo(function AutoField2({
|
|
|
296
220
|
}) {
|
|
297
221
|
var _a, _b;
|
|
298
222
|
const label = field.label || name;
|
|
299
|
-
const { sitePages } = useEditorContext();
|
|
300
|
-
if (name === "url" && field.type === "text") {
|
|
301
|
-
return /* @__PURE__ */ jsx(
|
|
302
|
-
UrlField,
|
|
303
|
-
{
|
|
304
|
-
label,
|
|
305
|
-
value,
|
|
306
|
-
onChange,
|
|
307
|
-
sitePages: sitePages ?? []
|
|
308
|
-
}
|
|
309
|
-
);
|
|
310
|
-
}
|
|
311
223
|
switch (field.type) {
|
|
312
224
|
case "text":
|
|
313
225
|
return /* @__PURE__ */ jsxs("div", { className: "mb-4 space-y-1.5", children: [
|
|
@@ -8,7 +8,7 @@ export { CompoundForm, type CompoundFormProps, formMethods, type FormMethods } f
|
|
|
8
8
|
export { CompoundImage, type CompoundImageProps } from "./image";
|
|
9
9
|
export { CompoundArticleCard, type CompoundArticleCardProps } from "./article-card";
|
|
10
10
|
export { ImageUploadField } from "./image-upload-field";
|
|
11
|
-
export { ActionField } from "./action-field";
|
|
11
|
+
export { ActionField } from "./fields/action-field";
|
|
12
12
|
export { ErrorBoundary } from "./error-boundary";
|
|
13
13
|
export { GradientText, type GradientTextProps } from "./gradient-text";
|
|
14
14
|
export { InlineEditable } from "./inline-editable";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NavigationMenu as NavigationMenuPrimitive } from "@base-ui/react/navigation-menu";
|
|
2
|
+
declare function NavigationMenu({ align, portalContainer, className, children, onValueChange, ...props }: NavigationMenuPrimitive.Root.Props & Pick<NavigationMenuPrimitive.Positioner.Props, "align"> & {
|
|
3
|
+
portalContainer?: HTMLElement | null | React.RefObject<HTMLElement | null>;
|
|
4
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare function NavigationMenuList({ className, ...props }: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.List>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
declare function NavigationMenuItem({ className, ...props }: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Item>): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare const navigationMenuTriggerStyle: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
|
|
8
|
+
declare function NavigationMenuTrigger({ className, children, ...props }: NavigationMenuPrimitive.Trigger.Props): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
declare function NavigationMenuContent({ className, ...props }: NavigationMenuPrimitive.Content.Props): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
declare function NavigationMenuPositioner({ className, side, sideOffset, align, alignOffset, portalContainer, ...props }: NavigationMenuPrimitive.Positioner.Props & {
|
|
11
|
+
portalContainer?: HTMLElement | null | React.RefObject<HTMLElement | null>;
|
|
12
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
declare function NavigationMenuLink({ className, asChild, children, active, ...props }: NavigationMenuPrimitive.Link.Props & {
|
|
14
|
+
asChild?: boolean;
|
|
15
|
+
active?: boolean;
|
|
16
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
declare function NavigationMenuIndicator({ className, ...props }: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Icon>): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, navigationMenuTriggerStyle, NavigationMenuPositioner, };
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useRef, useState, useCallback } from "react";
|
|
3
|
+
import { NavigationMenu as NavigationMenu$1 } from "@base-ui/react/navigation-menu";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
5
|
+
import { cn } from "../../utils/css-utils.js";
|
|
6
|
+
import { ChevronDownIcon } from "lucide-react";
|
|
7
|
+
import { useEditorContext } from "./editor-context.js";
|
|
8
|
+
function NavigationMenu({
|
|
9
|
+
align = "start",
|
|
10
|
+
portalContainer,
|
|
11
|
+
className,
|
|
12
|
+
children,
|
|
13
|
+
onValueChange,
|
|
14
|
+
...props
|
|
15
|
+
}) {
|
|
16
|
+
const { isEditor } = useEditorContext();
|
|
17
|
+
const rootRef = useRef(null);
|
|
18
|
+
const [value, setValue] = useState(props.defaultValue ?? null);
|
|
19
|
+
const handleValueChange = useCallback(
|
|
20
|
+
(newValue, details) => {
|
|
21
|
+
if (newValue === null && details.reason === "focus-out") return;
|
|
22
|
+
setValue(newValue);
|
|
23
|
+
onValueChange == null ? void 0 : onValueChange(newValue, details);
|
|
24
|
+
},
|
|
25
|
+
[onValueChange]
|
|
26
|
+
);
|
|
27
|
+
if (!isEditor) {
|
|
28
|
+
return /* @__PURE__ */ jsxs(
|
|
29
|
+
NavigationMenu$1.Root,
|
|
30
|
+
{
|
|
31
|
+
ref: rootRef,
|
|
32
|
+
"data-slot": "navigation-menu",
|
|
33
|
+
className: cn(
|
|
34
|
+
"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center",
|
|
35
|
+
className
|
|
36
|
+
),
|
|
37
|
+
onValueChange,
|
|
38
|
+
...props,
|
|
39
|
+
children: [
|
|
40
|
+
children,
|
|
41
|
+
/* @__PURE__ */ jsx(NavigationMenuPositioner, { align, portalContainer: portalContainer ?? rootRef })
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
return /* @__PURE__ */ jsxs(
|
|
47
|
+
NavigationMenu$1.Root,
|
|
48
|
+
{
|
|
49
|
+
ref: rootRef,
|
|
50
|
+
"data-slot": "navigation-menu",
|
|
51
|
+
className: cn(
|
|
52
|
+
"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center",
|
|
53
|
+
className
|
|
54
|
+
),
|
|
55
|
+
value,
|
|
56
|
+
onValueChange: handleValueChange,
|
|
57
|
+
...props,
|
|
58
|
+
children: [
|
|
59
|
+
children,
|
|
60
|
+
/* @__PURE__ */ jsx(NavigationMenuPositioner, { align, portalContainer: portalContainer ?? rootRef })
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
function NavigationMenuList({
|
|
66
|
+
className,
|
|
67
|
+
...props
|
|
68
|
+
}) {
|
|
69
|
+
return /* @__PURE__ */ jsx(
|
|
70
|
+
NavigationMenu$1.List,
|
|
71
|
+
{
|
|
72
|
+
"data-slot": "navigation-menu-list",
|
|
73
|
+
className: cn(
|
|
74
|
+
"group flex flex-1 list-none items-center justify-center gap-1",
|
|
75
|
+
className
|
|
76
|
+
),
|
|
77
|
+
...props
|
|
78
|
+
}
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
function NavigationMenuItem({
|
|
82
|
+
className,
|
|
83
|
+
...props
|
|
84
|
+
}) {
|
|
85
|
+
return /* @__PURE__ */ jsx(
|
|
86
|
+
NavigationMenu$1.Item,
|
|
87
|
+
{
|
|
88
|
+
"data-slot": "navigation-menu-item",
|
|
89
|
+
className: cn("relative", className),
|
|
90
|
+
...props
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
const navigationMenuTriggerStyle = cva(
|
|
95
|
+
"group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-1.5 text-sm font-medium transition-all outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-accent/50 data-popup-open:hover:bg-accent data-open:bg-accent/50 data-open:hover:bg-accent data-open:focus:bg-accent"
|
|
96
|
+
);
|
|
97
|
+
function NavigationMenuTrigger({
|
|
98
|
+
className,
|
|
99
|
+
children,
|
|
100
|
+
...props
|
|
101
|
+
}) {
|
|
102
|
+
return /* @__PURE__ */ jsxs(
|
|
103
|
+
NavigationMenu$1.Trigger,
|
|
104
|
+
{
|
|
105
|
+
"data-slot": "navigation-menu-trigger",
|
|
106
|
+
className: cn(navigationMenuTriggerStyle(), "group", className),
|
|
107
|
+
...props,
|
|
108
|
+
children: [
|
|
109
|
+
children,
|
|
110
|
+
" ",
|
|
111
|
+
/* @__PURE__ */ jsx(ChevronDownIcon, { className: "relative top-px ml-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180", "aria-hidden": "true" })
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
function NavigationMenuContent({
|
|
117
|
+
className,
|
|
118
|
+
...props
|
|
119
|
+
}) {
|
|
120
|
+
return /* @__PURE__ */ jsx(
|
|
121
|
+
NavigationMenu$1.Content,
|
|
122
|
+
{
|
|
123
|
+
"data-slot": "navigation-menu-content",
|
|
124
|
+
className: cn(
|
|
125
|
+
"data-ending-style:data-activation-direction=left:translate-x-[50%] data-ending-style:data-activation-direction=right:translate-x-[-50%] data-starting-style:data-activation-direction=left:translate-x-[-50%] data-starting-style:data-activation-direction=right:translate-x-[50%] h-full w-auto p-2 pr-2.5 transition-[opacity,transform,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-lg group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/10 group-data-[viewport=false]/navigation-menu:duration-300 data-ending-style:opacity-0 data-starting-style:opacity-0 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95",
|
|
126
|
+
className
|
|
127
|
+
),
|
|
128
|
+
...props
|
|
129
|
+
}
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
function NavigationMenuPositioner({
|
|
133
|
+
className,
|
|
134
|
+
side = "bottom",
|
|
135
|
+
sideOffset = 8,
|
|
136
|
+
align = "start",
|
|
137
|
+
alignOffset = 0,
|
|
138
|
+
portalContainer,
|
|
139
|
+
...props
|
|
140
|
+
}) {
|
|
141
|
+
return /* @__PURE__ */ jsx(NavigationMenu$1.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx(
|
|
142
|
+
NavigationMenu$1.Positioner,
|
|
143
|
+
{
|
|
144
|
+
side,
|
|
145
|
+
sideOffset,
|
|
146
|
+
align,
|
|
147
|
+
alignOffset,
|
|
148
|
+
className: cn(
|
|
149
|
+
"isolate z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0",
|
|
150
|
+
className
|
|
151
|
+
),
|
|
152
|
+
...props,
|
|
153
|
+
children: /* @__PURE__ */ jsx(NavigationMenu$1.Popup, { className: "data-[ending-style]:easing-[ease] xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) rounded-lg bg-popover text-popover-foreground shadow ring-1 ring-foreground/10 transition-[opacity,transform,width,height,scale,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0", children: /* @__PURE__ */ jsx(NavigationMenu$1.Viewport, { className: "relative size-full overflow-hidden" }) })
|
|
154
|
+
}
|
|
155
|
+
) });
|
|
156
|
+
}
|
|
157
|
+
function NavigationMenuLink({
|
|
158
|
+
className,
|
|
159
|
+
asChild,
|
|
160
|
+
children,
|
|
161
|
+
active,
|
|
162
|
+
...props
|
|
163
|
+
}) {
|
|
164
|
+
if (asChild) {
|
|
165
|
+
return /* @__PURE__ */ jsx(
|
|
166
|
+
NavigationMenu$1.Link,
|
|
167
|
+
{
|
|
168
|
+
"data-slot": "navigation-menu-link",
|
|
169
|
+
"data-active": active || void 0,
|
|
170
|
+
className: cn(
|
|
171
|
+
"flex items-center gap-1 rounded-sm p-2 text-sm transition-all outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-md data-active:bg-accent/50 data-active:hover:bg-accent data-active:focus:bg-accent [&_svg:not([class*='size-'])]:size-4",
|
|
172
|
+
className
|
|
173
|
+
),
|
|
174
|
+
render: children,
|
|
175
|
+
...props
|
|
176
|
+
}
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
return /* @__PURE__ */ jsx(
|
|
180
|
+
NavigationMenu$1.Link,
|
|
181
|
+
{
|
|
182
|
+
"data-slot": "navigation-menu-link",
|
|
183
|
+
"data-active": active || void 0,
|
|
184
|
+
className: cn(
|
|
185
|
+
"flex items-center gap-1 rounded-sm p-2 text-sm transition-all outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-md data-active:bg-accent/50 data-active:hover:bg-accent data-active:focus:bg-accent [&_svg:not([class*='size-'])]:size-4",
|
|
186
|
+
className
|
|
187
|
+
),
|
|
188
|
+
...props,
|
|
189
|
+
children
|
|
190
|
+
}
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
export {
|
|
194
|
+
NavigationMenu,
|
|
195
|
+
NavigationMenuContent,
|
|
196
|
+
NavigationMenuItem,
|
|
197
|
+
NavigationMenuLink,
|
|
198
|
+
NavigationMenuList,
|
|
199
|
+
NavigationMenuPositioner,
|
|
200
|
+
NavigationMenuTrigger,
|
|
201
|
+
navigationMenuTriggerStyle
|
|
202
|
+
};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { CompoundContainerProps } from "@/components/puck-base/container";
|
|
2
|
+
import { type CompoundButtonProps } from "@/components/puck-base/button";
|
|
2
3
|
export interface BannerCtaProps {
|
|
3
4
|
heading?: string;
|
|
4
5
|
description?: string;
|
|
5
6
|
buttons?: Array<{
|
|
6
7
|
label: string;
|
|
7
|
-
|
|
8
|
+
action?: CompoundButtonProps["action"];
|
|
8
9
|
variant?: string;
|
|
9
10
|
}>;
|
|
10
11
|
styles?: {
|
|
@@ -12,7 +12,7 @@ const BannerCta = ({
|
|
|
12
12
|
buttons = [],
|
|
13
13
|
styles
|
|
14
14
|
}) => {
|
|
15
|
-
var _a, _b, _c, _d
|
|
15
|
+
var _a, _b, _c, _d;
|
|
16
16
|
return /* @__PURE__ */ jsx(CompoundContainer, { padding: styles == null ? void 0 : styles.padding, sectionStyle: styles == null ? void 0 : styles.sectionStyle, backgroundColor: styles == null ? void 0 : styles.backgroundColor, children: /* @__PURE__ */ jsxs("div", { className: `rounded-2xl px-8 py-14 text-center ${variantStyles[(styles == null ? void 0 : styles.visualVariant) ?? "primary"] ?? variantStyles.primary}`, children: [
|
|
17
17
|
heading && /* @__PURE__ */ jsx("h2", { className: "text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl", children: heading }),
|
|
18
18
|
description && /* @__PURE__ */ jsx("p", { className: "mt-4 text-lg opacity-90 max-w-2xl mx-auto", children: description }),
|
|
@@ -21,16 +21,17 @@ const BannerCta = ({
|
|
|
21
21
|
CompoundButton,
|
|
22
22
|
{
|
|
23
23
|
label: ((_a = buttons[0]) == null ? void 0 : _a.label) ?? "Get started",
|
|
24
|
-
|
|
24
|
+
action: (_b = buttons[0]) == null ? void 0 : _b.action,
|
|
25
25
|
variant: ((_c = buttons[0]) == null ? void 0 : _c.variant) ?? "secondary"
|
|
26
26
|
}
|
|
27
27
|
),
|
|
28
|
-
((_d = buttons[1]) == null ? void 0 : _d.label) &&
|
|
28
|
+
((_d = buttons[1]) == null ? void 0 : _d.label) && /* @__PURE__ */ jsx(
|
|
29
29
|
CompoundButton,
|
|
30
30
|
{
|
|
31
31
|
label: buttons[1].label,
|
|
32
|
-
|
|
33
|
-
variant: buttons[1].variant ?? "outline"
|
|
32
|
+
action: buttons[1].action,
|
|
33
|
+
variant: buttons[1].variant ?? "outline",
|
|
34
|
+
className: "border-current text-foreground"
|
|
34
35
|
}
|
|
35
36
|
)
|
|
36
37
|
] })
|
|
@@ -21,8 +21,8 @@ const conf = {
|
|
|
21
21
|
heading: "Ready to transform your workflow?",
|
|
22
22
|
description: "Join thousands of teams already using our platform to ship faster and smarter.",
|
|
23
23
|
buttons: [
|
|
24
|
-
{ label: "Get started free",
|
|
25
|
-
{ label: "Talk to sales",
|
|
24
|
+
{ label: "Get started free", variant: "secondary" },
|
|
25
|
+
{ label: "Talk to sales", variant: "outline" }
|
|
26
26
|
],
|
|
27
27
|
styles: {
|
|
28
28
|
...createStylesDefaults(),
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { CompoundContainer } from "../../../puck-base/container.js";
|
|
3
|
-
import {
|
|
3
|
+
import { CompoundBadge } from "../../../puck-base/badge.js";
|
|
4
|
+
import { CompoundButton } from "../../../puck-base/button.js";
|
|
4
5
|
const GradientCta = ({
|
|
5
6
|
badge,
|
|
6
7
|
heading,
|
|
@@ -23,16 +24,37 @@ const GradientCta = ({
|
|
|
23
24
|
{
|
|
24
25
|
className: "rounded-2xl p-8 text-center md:p-14",
|
|
25
26
|
style: { background: bg, color },
|
|
26
|
-
children: /* @__PURE__ */
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center text-center gap-8", children: [
|
|
28
|
+
(!!heading || !!description || !!badge) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center text-center gap-4", children: [
|
|
29
|
+
(badge == null ? void 0 : badge.label) && /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
30
|
+
CompoundBadge,
|
|
31
|
+
{
|
|
32
|
+
label: badge.label,
|
|
33
|
+
variant: badge.variant,
|
|
34
|
+
url: badge.url
|
|
35
|
+
}
|
|
36
|
+
) }),
|
|
37
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center text-center gap-4", children: [
|
|
38
|
+
!!heading && /* @__PURE__ */ jsx("h2", { className: "font-serif font-regular text-3xl tracking-tighter text-center md:text-5xl lg:max-w-xl", children: heading }),
|
|
39
|
+
!!description && /* @__PURE__ */ jsx("p", { className: "text text-lg leading-relaxed tracking-tight text-center lg:max-w-xl", children: description })
|
|
40
|
+
] })
|
|
41
|
+
] }),
|
|
42
|
+
Array.isArray(buttons) && buttons.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-row justify-center flex-wrap gap-4", children: buttons.filter((button) => !!button.label).map((button, index) => {
|
|
43
|
+
const needsContrast = !button.variant || button.variant === "default";
|
|
44
|
+
return /* @__PURE__ */ jsx(
|
|
45
|
+
CompoundButton,
|
|
46
|
+
{
|
|
47
|
+
label: button.label,
|
|
48
|
+
action: button.action,
|
|
49
|
+
variant: button.variant,
|
|
50
|
+
size: button.size,
|
|
51
|
+
icon: button.icon,
|
|
52
|
+
className: needsContrast ? "bg-background text-foreground hover:bg-background/90" : void 0
|
|
53
|
+
},
|
|
54
|
+
index
|
|
55
|
+
);
|
|
56
|
+
}) })
|
|
57
|
+
] })
|
|
36
58
|
}
|
|
37
59
|
)
|
|
38
60
|
}
|
|
@@ -23,14 +23,13 @@ const conf = {
|
|
|
23
23
|
heading: "Summer Sale — Up to 50% Off",
|
|
24
24
|
description: "Don't miss our biggest sale of the year. Shop now and save on your favorite items.",
|
|
25
25
|
image: {
|
|
26
|
-
src: "https://
|
|
26
|
+
src: "https://picsum.photos/seed/Promo%20Image/800/600",
|
|
27
27
|
alt: "Promotional image"
|
|
28
28
|
},
|
|
29
29
|
imagePosition: "right",
|
|
30
30
|
buttons: [
|
|
31
31
|
{
|
|
32
32
|
label: "Shop Now",
|
|
33
|
-
url: "#",
|
|
34
33
|
variant: "default",
|
|
35
34
|
size: "lg",
|
|
36
35
|
icon: "none"
|
|
@@ -46,7 +46,7 @@ const PromoSection = ({
|
|
|
46
46
|
CompoundButton,
|
|
47
47
|
{
|
|
48
48
|
label: button.label,
|
|
49
|
-
|
|
49
|
+
action: button.action,
|
|
50
50
|
variant: button.variant,
|
|
51
51
|
size: button.size,
|
|
52
52
|
icon: button.icon
|
|
@@ -89,7 +89,7 @@ const PromoSection = ({
|
|
|
89
89
|
CompoundButton,
|
|
90
90
|
{
|
|
91
91
|
label: button.label,
|
|
92
|
-
|
|
92
|
+
action: button.action,
|
|
93
93
|
variant: button.variant,
|
|
94
94
|
size: button.size,
|
|
95
95
|
icon: button.icon
|
|
@@ -25,10 +25,14 @@ const Accordion = ({
|
|
|
25
25
|
/* @__PURE__ */ jsxs(
|
|
26
26
|
"button",
|
|
27
27
|
{
|
|
28
|
-
onClick: () =>
|
|
29
|
-
|
|
28
|
+
onClick: (e) => {
|
|
29
|
+
e.stopPropagation();
|
|
30
|
+
setOpenIndex(openIndex === i ? null : i);
|
|
31
|
+
},
|
|
32
|
+
style: { pointerEvents: "auto" },
|
|
33
|
+
className: "flex w-full items-center justify-between py-4 text-left cursor-pointer",
|
|
30
34
|
children: [
|
|
31
|
-
/* @__PURE__ */ jsx("span", { className: "text-foreground font-medium", children: item.title }),
|
|
35
|
+
/* @__PURE__ */ jsx("span", { className: "text-foreground font-medium", style: { pointerEvents: "none" }, children: item.title }),
|
|
32
36
|
/* @__PURE__ */ jsx(
|
|
33
37
|
"span",
|
|
34
38
|
{
|
|
@@ -36,6 +40,7 @@ const Accordion = ({
|
|
|
36
40
|
"text-muted-foreground transition-transform",
|
|
37
41
|
openIndex === i && "rotate-45"
|
|
38
42
|
),
|
|
43
|
+
style: { pointerEvents: "none" },
|
|
39
44
|
children: "+"
|
|
40
45
|
}
|
|
41
46
|
)
|
|
@@ -36,7 +36,6 @@ const conf = {
|
|
|
36
36
|
description: "Card description goes here.",
|
|
37
37
|
button: {
|
|
38
38
|
label: "",
|
|
39
|
-
url: "",
|
|
40
39
|
variant: "link",
|
|
41
40
|
size: "default",
|
|
42
41
|
icon: "move-right"
|
|
@@ -63,7 +62,6 @@ const conf = {
|
|
|
63
62
|
description: "Card description goes here.",
|
|
64
63
|
button: {
|
|
65
64
|
label: "",
|
|
66
|
-
url: "",
|
|
67
65
|
variant: "link",
|
|
68
66
|
size: "default",
|
|
69
67
|
icon: "move-right"
|
|
@@ -2,7 +2,7 @@ import { description, heading } from "../../../puck-base/core/fields.js";
|
|
|
2
2
|
import { Gallery } from "./gallery.js";
|
|
3
3
|
import { createStylesDefaults, createStylesField } from "../../../puck-base/core/styles.js";
|
|
4
4
|
const defaultImage = {
|
|
5
|
-
src: "https://
|
|
5
|
+
src: "https://picsum.photos/seed/Gallery%20Image/800/600",
|
|
6
6
|
alt: "Gallery image",
|
|
7
7
|
caption: ""
|
|
8
8
|
};
|
|
@@ -59,21 +59,29 @@ const Gallery2 = ({
|
|
|
59
59
|
/* @__PURE__ */ jsx(
|
|
60
60
|
"button",
|
|
61
61
|
{
|
|
62
|
-
onClick: () =>
|
|
62
|
+
onClick: (e) => {
|
|
63
|
+
e.stopPropagation();
|
|
64
|
+
emblaApi == null ? void 0 : emblaApi.scrollPrev();
|
|
65
|
+
},
|
|
66
|
+
style: { pointerEvents: "auto" },
|
|
63
67
|
disabled: !canScrollPrev,
|
|
64
|
-
className: "absolute left-4 top-1/2 -translate-y-1/2 z-10 flex h-10 w-10 items-center justify-center rounded-full bg-background/90 shadow-md transition hover:bg-background disabled:opacity-30",
|
|
68
|
+
className: "absolute left-4 top-1/2 -translate-y-1/2 z-10 flex h-10 w-10 items-center justify-center rounded-full bg-background/90 shadow-md transition hover:bg-background disabled:opacity-30 cursor-pointer",
|
|
65
69
|
"aria-label": "Previous image",
|
|
66
|
-
children: /* @__PURE__ */ jsx(ChevronLeft, { className: "h-5 w-5 text-foreground" })
|
|
70
|
+
children: /* @__PURE__ */ jsx(ChevronLeft, { className: "h-5 w-5 text-foreground", style: { pointerEvents: "none" } })
|
|
67
71
|
}
|
|
68
72
|
),
|
|
69
73
|
/* @__PURE__ */ jsx(
|
|
70
74
|
"button",
|
|
71
75
|
{
|
|
72
|
-
onClick: () =>
|
|
76
|
+
onClick: (e) => {
|
|
77
|
+
e.stopPropagation();
|
|
78
|
+
emblaApi == null ? void 0 : emblaApi.scrollNext();
|
|
79
|
+
},
|
|
80
|
+
style: { pointerEvents: "auto" },
|
|
73
81
|
disabled: !canScrollNext,
|
|
74
|
-
className: "absolute right-4 top-1/2 -translate-y-1/2 z-10 flex h-10 w-10 items-center justify-center rounded-full bg-background/90 shadow-md transition hover:bg-background disabled:opacity-30",
|
|
82
|
+
className: "absolute right-4 top-1/2 -translate-y-1/2 z-10 flex h-10 w-10 items-center justify-center rounded-full bg-background/90 shadow-md transition hover:bg-background disabled:opacity-30 cursor-pointer",
|
|
75
83
|
"aria-label": "Next image",
|
|
76
|
-
children: /* @__PURE__ */ jsx(ChevronRight, { className: "h-5 w-5 text-foreground" })
|
|
84
|
+
children: /* @__PURE__ */ jsx(ChevronRight, { className: "h-5 w-5 text-foreground", style: { pointerEvents: "none" } })
|
|
77
85
|
}
|
|
78
86
|
)
|
|
79
87
|
] })
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Gallery2 } from "./gallery-2.js";
|
|
2
2
|
import { createStylesDefaults, createStylesField } from "../../../puck-base/core/styles.js";
|
|
3
3
|
const defaultImage = {
|
|
4
|
-
src: "https://
|
|
4
|
+
src: "https://picsum.photos/seed/Gallery%20Image/1400/700",
|
|
5
5
|
alt: "Gallery image"
|
|
6
6
|
};
|
|
7
7
|
const conf = {
|
|
@@ -18,8 +18,11 @@ type SecondaryNavigationItem = NavigationLink & {
|
|
|
18
18
|
};
|
|
19
19
|
type NavigationItem = NavigationLink & {
|
|
20
20
|
url?: string;
|
|
21
|
+
action?: Action;
|
|
21
22
|
description?: string;
|
|
22
|
-
cta?: CompoundButtonProps
|
|
23
|
+
cta?: CompoundButtonProps & {
|
|
24
|
+
url?: string;
|
|
25
|
+
};
|
|
23
26
|
items?: SubmenuLink[];
|
|
24
27
|
};
|
|
25
28
|
export interface HeaderProps extends ILayoutProps {
|