dune-react 0.0.8 → 0.0.9

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 (107) hide show
  1. package/dist/components/puck-base/article-card.js +1 -1
  2. package/dist/components/puck-base/container.d.ts +7 -1
  3. package/dist/components/puck-base/container.js +2 -1
  4. package/dist/components/puck-base/content.d.ts +1 -4
  5. package/dist/components/puck-base/content.js +15 -17
  6. package/dist/components/puck-base/core/types.d.ts +2 -2
  7. package/dist/components/puck-base/editor-context.d.ts +8 -0
  8. package/dist/components/puck-base/fields/auto-field.d.ts +1 -0
  9. package/dist/components/puck-base/fields/auto-field.js +131 -49
  10. package/dist/components/puck-base/gradient-text.js +12 -3
  11. package/dist/components/puck-block/banner-sections/announcement-banner-1/announcement-banner.js +1 -1
  12. package/dist/components/puck-block/contact-sections/api/form-leads.d.ts +16 -0
  13. package/dist/components/puck-block/contact-sections/api/form-leads.js +25 -0
  14. package/dist/components/puck-block/contact-sections/contact-us-1/contact-us.js +8 -16
  15. package/dist/components/puck-block/contact-sections/contact-us-2/contact-us-2.d.ts +26 -0
  16. package/dist/components/puck-block/contact-sections/contact-us-2/contact-us-2.js +229 -0
  17. package/dist/components/puck-block/contact-sections/contact-us-2/index.d.ts +5 -0
  18. package/dist/components/puck-block/contact-sections/contact-us-2/index.js +72 -0
  19. package/dist/components/puck-block/contact-sections/contact-us-3/contact-us-3.d.ts +29 -0
  20. package/dist/components/puck-block/contact-sections/contact-us-3/contact-us-3.js +245 -0
  21. package/dist/components/puck-block/contact-sections/contact-us-3/index.d.ts +5 -0
  22. package/dist/components/puck-block/contact-sections/contact-us-3/index.js +101 -0
  23. package/dist/components/puck-block/cta-sections/banner-cta-1/banner-cta.js +9 -8
  24. package/dist/components/puck-block/cta-sections/gradient-cta-1/gradient-cta.js +3 -3
  25. package/dist/components/puck-block/cta-sections/gradient-cta-1/index.js +4 -4
  26. package/dist/components/puck-block/cta-sections/newsletter-signup-1/newsletter-signup.js +5 -4
  27. package/dist/components/puck-block/cta-sections/promo-section-1/promo-section.js +6 -5
  28. package/dist/components/puck-block/faq-sections/faq-2/faq-2.d.ts +16 -0
  29. package/dist/components/puck-block/faq-sections/faq-2/faq-2.js +56 -0
  30. package/dist/components/puck-block/faq-sections/faq-2/index.d.ts +5 -0
  31. package/dist/components/puck-block/faq-sections/faq-2/index.js +62 -0
  32. package/dist/components/puck-block/feature-sections/feature-cards-1/feature-cards.d.ts +3 -4
  33. package/dist/components/puck-block/feature-sections/feature-cards-1/feature-cards.js +13 -3
  34. package/dist/components/puck-block/feature-sections/feature-cards-1/index.js +34 -14
  35. package/dist/components/puck-block/feature-sections/feature-showcase-1/feature-showcase.js +2 -8
  36. package/dist/components/puck-block/feature-sections/product-features-1/product-features.js +5 -25
  37. package/dist/components/puck-block/gallery-sections/gallery-1/gallery.js +3 -2
  38. package/dist/components/puck-block/gallery-sections/gallery-2/gallery-2.d.ts +14 -0
  39. package/dist/components/puck-block/gallery-sections/gallery-2/gallery-2.js +88 -0
  40. package/dist/components/puck-block/gallery-sections/gallery-2/index.d.ts +5 -0
  41. package/dist/components/puck-block/gallery-sections/gallery-2/index.js +44 -0
  42. package/dist/components/puck-block/gallery-sections/gallery-3/gallery-3.d.ts +17 -0
  43. package/dist/components/puck-block/gallery-sections/gallery-3/gallery-3.js +121 -0
  44. package/dist/components/puck-block/gallery-sections/gallery-3/index.d.ts +5 -0
  45. package/dist/components/puck-block/gallery-sections/gallery-3/index.js +60 -0
  46. package/dist/components/puck-block/hero-sections/fullscreen-hero-1/fullscreen-hero.d.ts +6 -1
  47. package/dist/components/puck-block/hero-sections/fullscreen-hero-1/fullscreen-hero.js +56 -20
  48. package/dist/components/puck-block/hero-sections/fullscreen-hero-1/index.js +12 -1
  49. package/dist/components/puck-block/hero-sections/gradient-hero-1/gradient-hero.d.ts +1 -1
  50. package/dist/components/puck-block/hero-sections/gradient-hero-1/gradient-hero.js +9 -6
  51. package/dist/components/puck-block/hero-sections/gradient-hero-1/index.js +4 -4
  52. package/dist/components/puck-block/hero-sections/image-hero-1/image-hero.d.ts +4 -1
  53. package/dist/components/puck-block/hero-sections/image-hero-1/image-hero.js +60 -62
  54. package/dist/components/puck-block/index.d.ts +15 -0
  55. package/dist/components/puck-block/location-sections/location-1/index.d.ts +5 -0
  56. package/dist/components/puck-block/location-sections/location-1/index.js +103 -0
  57. package/dist/components/puck-block/location-sections/location-1/location.d.ts +27 -0
  58. package/dist/components/puck-block/location-sections/location-1/location.js +143 -0
  59. package/dist/components/puck-block/location-sections/location-2/index.d.ts +5 -0
  60. package/dist/components/puck-block/location-sections/location-2/index.js +111 -0
  61. package/dist/components/puck-block/location-sections/location-2/location.d.ts +25 -0
  62. package/dist/components/puck-block/location-sections/location-2/location.js +136 -0
  63. package/dist/components/puck-block/location-sections/location-3/index.d.ts +5 -0
  64. package/dist/components/puck-block/location-sections/location-3/index.js +83 -0
  65. package/dist/components/puck-block/location-sections/location-3/location.d.ts +22 -0
  66. package/dist/components/puck-block/location-sections/location-3/location.js +129 -0
  67. package/dist/components/puck-block/metrics-sections/stats-2/index.d.ts +5 -0
  68. package/dist/components/puck-block/metrics-sections/stats-2/index.js +77 -0
  69. package/dist/components/puck-block/metrics-sections/stats-2/stats-2.d.ts +16 -0
  70. package/dist/components/puck-block/metrics-sections/stats-2/stats-2.js +59 -0
  71. package/dist/components/puck-block/metrics-sections/stats-3/index.d.ts +5 -0
  72. package/dist/components/puck-block/metrics-sections/stats-3/index.js +94 -0
  73. package/dist/components/puck-block/metrics-sections/stats-3/stats-3.d.ts +17 -0
  74. package/dist/components/puck-block/metrics-sections/stats-3/stats-3.js +60 -0
  75. package/dist/components/puck-block/pricing-sections/pricing-2/index.d.ts +5 -0
  76. package/dist/components/puck-block/pricing-sections/pricing-2/index.js +152 -0
  77. package/dist/components/puck-block/pricing-sections/pricing-2/pricing-2.d.ts +24 -0
  78. package/dist/components/puck-block/pricing-sections/pricing-2/pricing-2.js +68 -0
  79. package/dist/components/puck-block/showcase-sections/before-after-1/before-after.d.ts +20 -0
  80. package/dist/components/puck-block/showcase-sections/before-after-1/before-after.js +73 -0
  81. package/dist/components/puck-block/showcase-sections/before-after-1/index.d.ts +5 -0
  82. package/dist/components/puck-block/showcase-sections/before-after-1/index.js +74 -0
  83. package/dist/components/puck-block/showcase-sections/case-study-1/case-study.js +2 -8
  84. package/dist/components/puck-block/team-sections/team-grid-1/team-grid.js +4 -24
  85. package/dist/components/puck-block/team-sections/team-grid-2/index.d.ts +5 -0
  86. package/dist/components/puck-block/team-sections/team-grid-2/index.js +63 -0
  87. package/dist/components/puck-block/team-sections/team-grid-2/team-grid-2.d.ts +21 -0
  88. package/dist/components/puck-block/team-sections/team-grid-2/team-grid-2.js +46 -0
  89. package/dist/components/puck-block/team-sections/team-profiles-1/index.d.ts +5 -0
  90. package/dist/components/puck-block/team-sections/team-profiles-1/index.js +54 -0
  91. package/dist/components/puck-block/team-sections/team-profiles-1/team-profiles.d.ts +21 -0
  92. package/dist/components/puck-block/team-sections/team-profiles-1/team-profiles.js +107 -0
  93. package/dist/components/puck-block/testimonial-sections/logo-marquee-1/logo-marquee.js +2 -1
  94. package/dist/components/puck-block/testimonial-sections/logo-wall-1/index.d.ts +5 -0
  95. package/dist/components/puck-block/testimonial-sections/logo-wall-1/index.js +50 -0
  96. package/dist/components/puck-block/testimonial-sections/logo-wall-1/logo-wall.d.ts +15 -0
  97. package/dist/components/puck-block/testimonial-sections/logo-wall-1/logo-wall.js +57 -0
  98. package/dist/components/puck-block/testimonial-sections/review-section-1/review-section.js +3 -2
  99. package/dist/components/puck-block/text-sections/articles-1/articles.d.ts +1 -0
  100. package/dist/components/puck-block/text-sections/articles-1/articles.js +19 -6
  101. package/dist/components/puck-block/text-sections/articles-1/index.js +16 -4
  102. package/dist/components/puck-block/text-sections/content-section-1/content-section.js +5 -4
  103. package/dist/components/puck-block/text-sections/tab-section-1/tab-section.js +3 -2
  104. package/dist/components/shadcn/navigation-menu.d.ts +1 -1
  105. package/dist/components/shadcn/navigation-menu.js +33 -0
  106. package/dist/index.js +104 -74
  107. package/package.json +1 -1
@@ -0,0 +1,54 @@
1
+ import { paddingDefaults, image1x1Placeholder, backgroundColor, sectionStyle, padding, image } from "../../../puck-base/core/fields.js";
2
+ import { TeamProfiles } from "./team-profiles.js";
3
+ const defaultMember = {
4
+ name: "Jane Smith",
5
+ role: "CEO & Co-founder",
6
+ image: image1x1Placeholder,
7
+ description: "Leads the team with a passion for innovation and a commitment to excellence.",
8
+ instagramUrl: "",
9
+ linkedinUrl: ""
10
+ };
11
+ const conf = {
12
+ fields: {
13
+ heading: { type: "text", contentEditable: true },
14
+ description: { type: "textarea", contentEditable: true },
15
+ members: {
16
+ type: "array",
17
+ max: 8,
18
+ getItemSummary: (item, index = 0) => item.name || `Member ${index + 1}`,
19
+ arrayFields: {
20
+ name: { type: "text", contentEditable: true },
21
+ role: { type: "text", contentEditable: true },
22
+ image,
23
+ description: { type: "textarea", contentEditable: true },
24
+ instagramUrl: { type: "text", label: "Instagram URL" },
25
+ linkedinUrl: { type: "text", label: "LinkedIn URL" }
26
+ },
27
+ defaultItemProps: defaultMember
28
+ },
29
+ padding,
30
+ sectionStyle,
31
+ backgroundColor
32
+ },
33
+ defaultProps: {
34
+ heading: "Your Personal\ntraining partner",
35
+ description: "Our team brings focused expertise and personalized coaching to help you reach your goals.",
36
+ members: [
37
+ {
38
+ ...defaultMember,
39
+ name: "Jane Smith",
40
+ role: "Founder & Head Coach"
41
+ },
42
+ {
43
+ ...defaultMember,
44
+ name: "Alex Johnson",
45
+ role: "Strength & Conditioning Coach"
46
+ }
47
+ ],
48
+ padding: paddingDefaults
49
+ },
50
+ render: TeamProfiles
51
+ };
52
+ export {
53
+ conf
54
+ };
@@ -0,0 +1,21 @@
1
+ import { CompoundContainerProps } from "@/components/puck-base/container";
2
+ export interface TeamMemberProfile {
3
+ name: string;
4
+ role: string;
5
+ image?: {
6
+ src: string;
7
+ alt?: string;
8
+ };
9
+ description?: string;
10
+ instagramUrl?: string;
11
+ linkedinUrl?: string;
12
+ }
13
+ export interface TeamProfilesProps {
14
+ padding?: CompoundContainerProps["padding"];
15
+ sectionStyle?: CompoundContainerProps["sectionStyle"];
16
+ backgroundColor?: string;
17
+ heading?: string;
18
+ description?: string;
19
+ members?: TeamMemberProfile[];
20
+ }
21
+ export declare const TeamProfiles: ({ padding, sectionStyle, backgroundColor, heading, description, members, }: TeamProfilesProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,107 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { CompoundContainer } from "../../../puck-base/container.js";
3
+ import { CompoundImage } from "../../../puck-base/image.js";
4
+ const InstagramIcon = () => /* @__PURE__ */ jsx(
5
+ "svg",
6
+ {
7
+ xmlns: "http://www.w3.org/2000/svg",
8
+ fill: "none",
9
+ viewBox: "0 0 24 24",
10
+ width: "20",
11
+ height: "20",
12
+ className: "size-5",
13
+ children: /* @__PURE__ */ jsx(
14
+ "path",
15
+ {
16
+ fill: "currentColor",
17
+ fillRule: "evenodd",
18
+ d: "M12 2c5.52 0 10 4.48 10 10s-4.48 10-10 10S2 17.52 2 12 6.48 2 12 2m0 3.75c-1.697 0-1.91.007-2.577.038-.665.03-1.12.136-1.517.29-.411.16-.76.374-1.107.721a3.1 3.1 0 0 0-.72 1.107c-.155.398-.261.852-.291 1.517-.03.667-.038.88-.038 2.577s.007 1.91.038 2.577c.03.665.136 1.12.29 1.517.16.411.374.76.721 1.107.347.348.696.561 1.107.72.398.155.852.261 1.517.291.667.03.88.038 2.577.038s1.91-.007 2.577-.038c.665-.03 1.12-.136 1.517-.29.411-.16.76-.373 1.107-.721.348-.348.561-.696.72-1.107.155-.398.261-.852.291-1.517.03-.667.038-.88.038-2.577s-.007-1.91-.038-2.577c-.03-.665-.136-1.12-.29-1.517a3.1 3.1 0 0 0-.721-1.107 3.1 3.1 0 0 0-1.107-.72c-.398-.155-.852-.261-1.517-.291-.667-.03-.88-.038-2.577-.038m0 1.126c1.669 0 1.867.006 2.525.037.61.027.94.13 1.161.215.292.113.5.249.719.467s.354.427.467.719c.086.22.188.551.215 1.16.03.66.037.857.037 2.526s-.006 1.867-.037 2.525c-.027.61-.13.94-.215 1.161-.113.292-.249.5-.467.719a1.9 1.9 0 0 1-.719.467c-.22.086-.551.188-1.16.215-.66.03-.857.037-2.526.037s-1.867-.006-2.526-.037c-.609-.027-.94-.13-1.16-.215a1.9 1.9 0 0 1-.719-.467 1.9 1.9 0 0 1-.467-.719c-.086-.22-.188-.551-.215-1.16-.03-.66-.037-.857-.037-2.526s.006-1.867.037-2.526c.027-.609.13-.94.215-1.16.113-.292.249-.5.467-.719s.427-.354.719-.467c.22-.086.551-.188 1.16-.215.66-.03.857-.037 2.526-.037m0 1.915a3.21 3.21 0 1 0 0 6.419 3.21 3.21 0 0 0 0-6.42m0 5.292a2.083 2.083 0 1 1 0-4.166 2.083 2.083 0 0 1 0 4.166m4.086-5.42a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0",
19
+ clipRule: "evenodd"
20
+ }
21
+ )
22
+ }
23
+ );
24
+ const LinkedInIcon = () => /* @__PURE__ */ jsx(
25
+ "svg",
26
+ {
27
+ xmlns: "http://www.w3.org/2000/svg",
28
+ fill: "none",
29
+ viewBox: "0 0 24 24",
30
+ width: "20",
31
+ height: "20",
32
+ className: "size-5",
33
+ children: /* @__PURE__ */ jsx(
34
+ "path",
35
+ {
36
+ fill: "currentColor",
37
+ fillRule: "evenodd",
38
+ d: "M19.557 2A2.445 2.445 0 0 1 22 4.444v15.113A2.445 2.445 0 0 1 19.557 22H4.444A2.445 2.445 0 0 1 2 19.557V4.444A2.445 2.445 0 0 1 4.444 2zM8.268 18.534V9.717H5.337v8.817zm10.568 0v-5.056c0-2.708-1.446-3.968-3.374-3.968-1.555 0-2.252.855-2.642 1.456V9.717H9.89c.039.828 0 8.817 0 8.817h2.93V13.61c0-.263.02-.527.097-.715.212-.527.694-1.072 1.504-1.072 1.06 0 1.484.809 1.484 1.994v4.717zM6.822 5.466c-1.003 0-1.658.659-1.658 1.523 0 .846.635 1.524 1.62 1.524 1.021 0 1.677-.678 1.677-1.524-.02-.863-.635-1.521-1.639-1.523",
39
+ clipRule: "evenodd"
40
+ }
41
+ )
42
+ }
43
+ );
44
+ const TeamProfiles = ({
45
+ padding,
46
+ sectionStyle,
47
+ backgroundColor,
48
+ heading,
49
+ description,
50
+ members = []
51
+ }) => /* @__PURE__ */ jsx(
52
+ CompoundContainer,
53
+ {
54
+ padding,
55
+ sectionStyle,
56
+ backgroundColor,
57
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-8 md:gap-16", children: [
58
+ (heading || description) && /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 md:gap-8 lg:flex-row lg:justify-between", children: [
59
+ heading && /* @__PURE__ */ jsx("div", { className: "w-full lg:basis-1/2", children: /* @__PURE__ */ jsx("h2", { className: "text-foreground max-w-xl text-4xl font-bold leading-tight tracking-tight md:text-5xl", children: heading }) }),
60
+ description && /* @__PURE__ */ jsx("div", { className: "flex w-full flex-col gap-8 lg:basis-1/2", children: /* @__PURE__ */ jsx("p", { className: "text-muted-foreground max-w-xl text-base leading-relaxed", children: description }) })
61
+ ] }) }),
62
+ members.length > 0 && /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-10 md:gap-8 lg:grid-cols-2", children: members.map((member, index) => /* @__PURE__ */ jsx(MemberProfileCard, { member }, index)) })
63
+ ] })
64
+ }
65
+ );
66
+ const MemberProfileCard = ({ member }) => {
67
+ var _a;
68
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6 md:flex-row md:gap-8", children: [
69
+ /* @__PURE__ */ jsx("div", { className: "shrink-0 md:w-48", children: /* @__PURE__ */ jsx("div", { className: "bg-muted relative h-72 w-full overflow-hidden rounded-3xl md:h-48 md:w-48 [&>span]:h-full [&>span]:w-full", children: ((_a = member.image) == null ? void 0 : _a.src) && /* @__PURE__ */ jsx(CompoundImage, { src: member.image.src, alt: member.image.alt ?? member.name, className: "h-full w-full object-cover" }) }) }),
70
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-1 flex-col gap-4", children: [
71
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
72
+ /* @__PURE__ */ jsx("h3", { className: "text-foreground text-lg font-semibold leading-snug", children: member.name }),
73
+ /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-sm", children: member.role })
74
+ ] }),
75
+ /* @__PURE__ */ jsxs("div", { className: "border-border flex flex-col gap-2 border-t pt-4", children: [
76
+ member.description && /* @__PURE__ */ jsx("p", { className: "text-foreground text-sm leading-relaxed whitespace-pre-line", children: member.description }),
77
+ (member.instagramUrl || member.linkedinUrl) && /* @__PURE__ */ jsxs("div", { className: "mt-2 flex items-center gap-3", children: [
78
+ member.instagramUrl && /* @__PURE__ */ jsx(
79
+ "a",
80
+ {
81
+ href: member.instagramUrl,
82
+ target: "_blank",
83
+ rel: "noopener noreferrer",
84
+ className: "text-foreground hover:text-muted-foreground transition-colors",
85
+ "aria-label": `${member.name} on Instagram`,
86
+ children: /* @__PURE__ */ jsx(InstagramIcon, {})
87
+ }
88
+ ),
89
+ member.linkedinUrl && /* @__PURE__ */ jsx(
90
+ "a",
91
+ {
92
+ href: member.linkedinUrl,
93
+ target: "_blank",
94
+ rel: "noopener noreferrer",
95
+ className: "text-foreground hover:text-muted-foreground transition-colors",
96
+ "aria-label": `${member.name} on LinkedIn`,
97
+ children: /* @__PURE__ */ jsx(LinkedInIcon, {})
98
+ }
99
+ )
100
+ ] })
101
+ ] })
102
+ ] })
103
+ ] });
104
+ };
105
+ export {
106
+ TeamProfiles
107
+ };
@@ -1,5 +1,6 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { CompoundContainer } from "../../../puck-base/container.js";
3
+ import { CompoundImage } from "../../../puck-base/image.js";
3
4
  const SPEED_DURATION = {
4
5
  slow: "40s",
5
6
  normal: "25s",
@@ -22,7 +23,7 @@ const LogoMarquee = ({
22
23
  {
23
24
  className: "h-8 flex-shrink-0 opacity-60 transition-opacity hover:opacity-100 md:h-10",
24
25
  children: logo.src ? /* @__PURE__ */ jsx(
25
- "img",
26
+ CompoundImage,
26
27
  {
27
28
  src: logo.src,
28
29
  alt: logo.alt || "",
@@ -0,0 +1,5 @@
1
+ import { ComponentConfig } from "@puckeditor/core";
2
+ import { LogoWall1Props } from "./logo-wall";
3
+ export type { LogoWall1Props };
4
+ export declare const conf: ComponentConfig<LogoWall1Props>;
5
+ export default conf;
@@ -0,0 +1,50 @@
1
+ import { paddingDefaults, backgroundColor, sectionStyle, padding, image, getPlaceholderImageUrl } from "../../../puck-base/core/fields.js";
2
+ import { LogoWall1 } from "./logo-wall.js";
3
+ const logoPlaceholder = (name) => ({
4
+ src: getPlaceholderImageUrl("200x200", name),
5
+ alt: name
6
+ });
7
+ const conf = {
8
+ fields: {
9
+ heading: { type: "text", contentEditable: true },
10
+ description: { type: "textarea", contentEditable: true },
11
+ logos: {
12
+ type: "array",
13
+ max: 20,
14
+ getItemSummary: (item, index = 0) => item.alt || `Logo ${index + 1}`,
15
+ arrayFields: {
16
+ ...image.objectFields
17
+ },
18
+ defaultItemProps: logoPlaceholder("Brand")
19
+ },
20
+ columns: {
21
+ type: "radio",
22
+ options: [
23
+ { label: "3", value: 3 },
24
+ { label: "4", value: 4 },
25
+ { label: "5", value: 5 },
26
+ { label: "6", value: 6 }
27
+ ]
28
+ },
29
+ padding,
30
+ sectionStyle,
31
+ backgroundColor
32
+ },
33
+ defaultProps: {
34
+ padding: paddingDefaults,
35
+ heading: "Brands and tools we use",
36
+ description: "We partner with industry-leading platforms and manufacturers to deliver the best experience.",
37
+ columns: 5,
38
+ logos: [
39
+ logoPlaceholder("Partner 1"),
40
+ logoPlaceholder("Partner 2"),
41
+ logoPlaceholder("Partner 3"),
42
+ logoPlaceholder("Partner 4"),
43
+ logoPlaceholder("Partner 5")
44
+ ]
45
+ },
46
+ render: LogoWall1
47
+ };
48
+ export {
49
+ conf
50
+ };
@@ -0,0 +1,15 @@
1
+ import { CompoundContainerProps } from "@/components/puck-base/container";
2
+ import { PuckComponent } from "@puckeditor/core";
3
+ export interface LogoWall1Props {
4
+ heading?: string;
5
+ description?: string;
6
+ columns?: 3 | 4 | 5 | 6;
7
+ logos?: {
8
+ src: string;
9
+ alt: string;
10
+ }[];
11
+ padding?: CompoundContainerProps["padding"];
12
+ sectionStyle?: CompoundContainerProps["sectionStyle"];
13
+ backgroundColor?: string;
14
+ }
15
+ export declare const LogoWall1: PuckComponent<LogoWall1Props>;
@@ -0,0 +1,57 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { CompoundContainer } from "../../../puck-base/container.js";
3
+ import { CompoundImage } from "../../../puck-base/image.js";
4
+ import { cn } from "../../../../utils/css-utils.js";
5
+ const LogoWall1 = ({
6
+ heading,
7
+ description,
8
+ columns = 5,
9
+ logos = [],
10
+ padding,
11
+ sectionStyle,
12
+ backgroundColor
13
+ }) => {
14
+ return /* @__PURE__ */ jsx(
15
+ CompoundContainer,
16
+ {
17
+ padding,
18
+ sectionStyle,
19
+ backgroundColor,
20
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-8 md:gap-16", children: [
21
+ /* @__PURE__ */ jsx("div", { className: "flex max-w-3xl flex-col gap-4", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
22
+ heading && /* @__PURE__ */ jsx("h2", { className: "font-serif font-regular max-w-xl text-3xl tracking-tighter md:text-4xl", children: heading }),
23
+ description && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground max-w-xl text-base leading-relaxed", children: description })
24
+ ] }) }),
25
+ logos && logos.length > 0 && /* @__PURE__ */ jsx(
26
+ "div",
27
+ {
28
+ className: cn("grid grid-cols-2 gap-4", {
29
+ "md:grid-cols-3": columns === 3,
30
+ "sm:grid-cols-2 md:grid-cols-4": columns === 4,
31
+ "sm:grid-cols-3 lg:grid-cols-5": columns === 5,
32
+ "sm:grid-cols-3 lg:grid-cols-6": columns === 6
33
+ }),
34
+ children: logos.map((logo, i) => /* @__PURE__ */ jsx(
35
+ "div",
36
+ {
37
+ className: "flex aspect-square items-center justify-center rounded-3xl bg-foreground/5 p-8 transition-colors duration-200 hover:bg-foreground/40",
38
+ children: logo.src && /* @__PURE__ */ jsx(
39
+ CompoundImage,
40
+ {
41
+ src: logo.src,
42
+ alt: logo.alt || "",
43
+ className: "h-full w-full object-contain"
44
+ }
45
+ )
46
+ },
47
+ i
48
+ ))
49
+ }
50
+ )
51
+ ] })
52
+ }
53
+ );
54
+ };
55
+ export {
56
+ LogoWall1
57
+ };
@@ -1,5 +1,6 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { CompoundContainer } from "../../../puck-base/container.js";
3
+ import { CompoundImage } from "../../../puck-base/image.js";
3
4
  import { cn } from "../../../../utils/css-utils.js";
4
5
  import { Star } from "lucide-react";
5
6
  const ReviewSection = ({
@@ -36,8 +37,8 @@ const ReviewCard = ({ review }) => {
36
37
  )) }),
37
38
  /* @__PURE__ */ jsx("p", { className: "text-sm leading-relaxed", children: review.content }),
38
39
  /* @__PURE__ */ jsxs("div", { className: "mt-auto flex items-center gap-3", children: [
39
- ((_a = review.avatar) == null ? void 0 : _a.src) && /* @__PURE__ */ jsx("div", { className: "bg-muted h-10 w-10 overflow-hidden rounded-full", children: /* @__PURE__ */ jsx(
40
- "img",
40
+ ((_a = review.avatar) == null ? void 0 : _a.src) && /* @__PURE__ */ jsx("div", { className: "bg-muted h-10 w-10 overflow-hidden rounded-full [&>span]:h-full [&>span]:w-full", children: /* @__PURE__ */ jsx(
41
+ CompoundImage,
41
42
  {
42
43
  src: review.avatar.src,
43
44
  alt: review.avatar.alt ?? review.author,
@@ -8,6 +8,7 @@ export interface ArticlesProps {
8
8
  eyebrow?: string;
9
9
  heading?: string;
10
10
  button?: CompoundButtonProps;
11
+ columns?: 2 | 3 | 4;
11
12
  cards?: Slot;
12
13
  }
13
14
  export declare const Articles: PuckComponent<ArticlesProps>;
@@ -1,6 +1,7 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { CompoundContainer } from "../../../puck-base/container.js";
3
3
  import { CompoundButton } from "../../../puck-base/button.js";
4
+ import { cn } from "../../../../utils/css-utils.js";
4
5
  const Articles = ({
5
6
  padding,
6
7
  sectionStyle,
@@ -8,13 +9,16 @@ const Articles = ({
8
9
  eyebrow,
9
10
  heading,
10
11
  button,
12
+ columns = 3,
11
13
  cards: Cards
12
14
  }) => {
13
15
  return /* @__PURE__ */ jsxs(CompoundContainer, { padding, sectionStyle, backgroundColor, children: [
14
- eyebrow && /* @__PURE__ */ jsx("p", { className: "text-primary mb-3 text-sm font-semibold tracking-wider uppercase", children: eyebrow }),
15
- /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col gap-8 pb-10 sm:flex-row sm:items-center sm:justify-between", children: [
16
- /* @__PURE__ */ jsx("h2", { className: "font-serif font-regular max-w-xl text-3xl tracking-tighter md:text-5xl", children: heading }),
17
- (button == null ? void 0 : button.label) ? /* @__PURE__ */ jsx(
16
+ /* @__PURE__ */ jsxs("div", { className: "mb-10 flex w-full flex-col gap-6 sm:flex-row sm:items-end sm:justify-between", children: [
17
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
18
+ eyebrow && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-sm font-medium tracking-wide uppercase", children: eyebrow }),
19
+ heading && /* @__PURE__ */ jsx("h2", { className: "font-serif font-regular max-w-xl text-3xl tracking-tighter md:text-4xl", children: heading })
20
+ ] }),
21
+ (button == null ? void 0 : button.label) ? /* @__PURE__ */ jsx("div", { className: "shrink-0", children: /* @__PURE__ */ jsx(
18
22
  CompoundButton,
19
23
  {
20
24
  label: button.label,
@@ -23,9 +27,18 @@ const Articles = ({
23
27
  size: button.size,
24
28
  icon: button.icon
25
29
  }
26
- ) : null
30
+ ) }) : null
27
31
  ] }),
28
- Cards && /* @__PURE__ */ jsx(Cards, { className: "grid grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-4" })
32
+ Cards && /* @__PURE__ */ jsx(
33
+ Cards,
34
+ {
35
+ className: cn("grid grid-cols-1 gap-8", {
36
+ "sm:grid-cols-2": columns === 2,
37
+ "sm:grid-cols-2 lg:grid-cols-3": columns === 3,
38
+ "sm:grid-cols-2 lg:grid-cols-4": columns === 4
39
+ })
40
+ }
41
+ )
29
42
  ] });
30
43
  };
31
44
  export {
@@ -14,9 +14,17 @@ const defaultCard = {
14
14
  };
15
15
  const conf = {
16
16
  fields: {
17
- eyebrow: { type: "text" },
17
+ eyebrow: { type: "text", contentEditable: true },
18
18
  heading,
19
19
  button,
20
+ columns: {
21
+ type: "radio",
22
+ options: [
23
+ { label: "2", value: 2 },
24
+ { label: "3", value: 3 },
25
+ { label: "4", value: 4 }
26
+ ]
27
+ },
20
28
  cards: {
21
29
  type: "slot",
22
30
  allow: ["ArticleCard"]
@@ -27,13 +35,17 @@ const conf = {
27
35
  },
28
36
  defaultProps: {
29
37
  padding: paddingDefaults,
30
- heading: "Something new!",
38
+ eyebrow: "Latest News",
39
+ heading: "Stories worth reading",
31
40
  button: defaultButton,
32
- cards: Array.from({ length: 1 }).map((_, index) => ({
41
+ columns: 3,
42
+ cards: Array.from({ length: 3 }).map((_, index) => ({
33
43
  type: "ArticleCard",
34
44
  props: {
35
45
  ...defaultCard,
36
- heading: `Card ${index + 1}`
46
+ heading: `Article ${index + 1}`,
47
+ description: "A short summary of this article goes here.",
48
+ button: { label: "", url: "", variant: "link", size: "default", icon: "move-right" }
37
49
  }
38
50
  }))
39
51
  },
@@ -2,6 +2,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { cn } from "../../../../utils/css-utils.js";
3
3
  import { CompoundContainer } from "../../../puck-base/container.js";
4
4
  import { CompoundButton } from "../../../puck-base/button.js";
5
+ import { CompoundImage } from "../../../puck-base/image.js";
5
6
  const TextBlock = ({
6
7
  eyebrow,
7
8
  heading,
@@ -38,8 +39,8 @@ const TextBlock = ({
38
39
  }
39
40
  )
40
41
  ] });
41
- const ImageBlock = ({ image }) => /* @__PURE__ */ jsx("div", { className: "bg-muted overflow-hidden rounded-xl", children: (image == null ? void 0 : image.src) ? /* @__PURE__ */ jsx(
42
- "img",
42
+ const ImageBlock = ({ image }) => /* @__PURE__ */ jsx("div", { className: "bg-muted overflow-hidden rounded-xl [&>span]:w-full", children: (image == null ? void 0 : image.src) ? /* @__PURE__ */ jsx(
43
+ CompoundImage,
43
44
  {
44
45
  src: image.src,
45
46
  alt: (image == null ? void 0 : image.alt) || "",
@@ -73,7 +74,7 @@ const ContentSection = ({
73
74
  }
74
75
  ) }) });
75
76
  }
76
- if (layout === "split") {
77
+ if (layout === "split" || imagePosition === "left" || imagePosition === "right") {
77
78
  const showImage2 = imagePosition !== "none" && (image == null ? void 0 : image.src);
78
79
  return /* @__PURE__ */ jsx(CompoundContainer, { padding, sectionStyle, backgroundColor, children: /* @__PURE__ */ jsxs(
79
80
  "div",
@@ -98,7 +99,7 @@ const ContentSection = ({
98
99
  }
99
100
  ) });
100
101
  }
101
- const showImage = imagePosition !== "none" && imagePosition !== "left" && imagePosition !== "right" && (image == null ? void 0 : image.src);
102
+ const showImage = imagePosition !== "none" && (image == null ? void 0 : image.src);
102
103
  return /* @__PURE__ */ jsxs(CompoundContainer, { padding, sectionStyle, backgroundColor, children: [
103
104
  (dividers === "both" || dividers === "top") && /* @__PURE__ */ jsx("hr", { className: "mb-12 border-foreground/15" }),
104
105
  /* @__PURE__ */ jsx("div", { className: "mx-auto max-w-3xl", children: /* @__PURE__ */ jsx(
@@ -3,6 +3,7 @@ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
3
3
  import { useState } from "react";
4
4
  import { cn } from "../../../../utils/css-utils.js";
5
5
  import { CompoundContainer } from "../../../puck-base/container.js";
6
+ import { CompoundImage } from "../../../puck-base/image.js";
6
7
  const TabSection = ({
7
8
  padding,
8
9
  sectionStyle,
@@ -33,8 +34,8 @@ const TabSection = ({
33
34
  )) }),
34
35
  /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 items-center gap-8 lg:grid-cols-2", children: [
35
36
  /* @__PURE__ */ jsx("p", { className: "text-muted-foreground leading-relaxed", children: (_a = tabs[active]) == null ? void 0 : _a.content }),
36
- /* @__PURE__ */ jsx("div", { className: "border-border/50 bg-muted overflow-hidden rounded-xl border", children: ((_c = (_b = tabs[active]) == null ? void 0 : _b.image) == null ? void 0 : _c.src) ? /* @__PURE__ */ jsx(
37
- "img",
37
+ /* @__PURE__ */ jsx("div", { className: "border-border/50 bg-muted [&>span]:w-full overflow-hidden rounded-xl border", children: ((_c = (_b = tabs[active]) == null ? void 0 : _b.image) == null ? void 0 : _c.src) ? /* @__PURE__ */ jsx(
38
+ CompoundImage,
38
39
  {
39
40
  src: tabs[active].image.src,
40
41
  alt: ((_d = tabs[active].image) == null ? void 0 : _d.alt) || "",
@@ -1,5 +1,5 @@
1
1
  import { NavigationMenu as NavigationMenuPrimitive } from "@base-ui/react/navigation-menu";
2
- declare function NavigationMenu({ align, className, children, ...props }: NavigationMenuPrimitive.Root.Props & Pick<NavigationMenuPrimitive.Positioner.Props, "align">): import("react/jsx-runtime").JSX.Element;
2
+ declare function NavigationMenu({ align, className, children, onValueChange, ...props }: NavigationMenuPrimitive.Root.Props & Pick<NavigationMenuPrimitive.Positioner.Props, "align">): import("react/jsx-runtime").JSX.Element;
3
3
  declare function NavigationMenuList({ className, ...props }: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.List>): import("react/jsx-runtime").JSX.Element;
4
4
  declare function NavigationMenuItem({ className, ...props }: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Item>): import("react/jsx-runtime").JSX.Element;
5
5
  declare const navigationMenuTriggerStyle: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
@@ -1,14 +1,45 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useState, useCallback } from "react";
2
3
  import { NavigationMenu as NavigationMenu$1 } from "@base-ui/react/navigation-menu";
3
4
  import { cva } from "class-variance-authority";
4
5
  import { cn } from "../../utils/css-utils.js";
5
6
  import { ChevronDownIcon } from "lucide-react";
7
+ import { useEditorContext } from "../puck-base/editor-context.js";
6
8
  function NavigationMenu({
7
9
  align = "start",
8
10
  className,
9
11
  children,
12
+ onValueChange,
10
13
  ...props
11
14
  }) {
15
+ const { isEditor } = useEditorContext();
16
+ const [value, setValue] = useState(props.defaultValue ?? null);
17
+ const handleValueChange = useCallback(
18
+ (newValue, details) => {
19
+ if (newValue === null && details.reason === "focus-out") return;
20
+ setValue(newValue);
21
+ onValueChange == null ? void 0 : onValueChange(newValue, details);
22
+ },
23
+ [onValueChange]
24
+ );
25
+ if (!isEditor) {
26
+ return /* @__PURE__ */ jsxs(
27
+ NavigationMenu$1.Root,
28
+ {
29
+ "data-slot": "navigation-menu",
30
+ className: cn(
31
+ "group/navigation-menu relative flex max-w-max flex-1 items-center justify-center",
32
+ className
33
+ ),
34
+ onValueChange,
35
+ ...props,
36
+ children: [
37
+ children,
38
+ /* @__PURE__ */ jsx(NavigationMenuPositioner, { align })
39
+ ]
40
+ }
41
+ );
42
+ }
12
43
  return /* @__PURE__ */ jsxs(
13
44
  NavigationMenu$1.Root,
14
45
  {
@@ -17,6 +48,8 @@ function NavigationMenu({
17
48
  "group/navigation-menu relative flex max-w-max flex-1 items-center justify-center",
18
49
  className
19
50
  ),
51
+ value,
52
+ onValueChange: handleValueChange,
20
53
  ...props,
21
54
  children: [
22
55
  children,