dune-react 0.0.10 → 0.0.12

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 (120) hide show
  1. package/dist/components/puck-base/article-card.js +1 -1
  2. package/dist/components/puck-base/button.d.ts +0 -1
  3. package/dist/components/puck-base/button.js +3 -3
  4. package/dist/components/puck-base/card.js +0 -1
  5. package/dist/components/puck-base/content.js +0 -1
  6. package/dist/components/puck-base/core/fields.d.ts +26 -119
  7. package/dist/components/puck-base/core/fields.js +10 -17
  8. package/dist/components/puck-base/core/icon-catalog.d.ts +14 -0
  9. package/dist/components/puck-base/core/icon-catalog.js +193 -0
  10. package/dist/components/puck-base/core/styles.d.ts +102 -33
  11. package/dist/components/puck-base/core/styles.js +45 -81
  12. package/dist/components/puck-base/core/with-editable.d.ts +4 -9
  13. package/dist/components/puck-base/core/with-editable.js +43 -62
  14. package/dist/components/puck-base/fields/action-field.d.ts +30 -0
  15. package/dist/components/puck-base/fields/action-field.js +289 -0
  16. package/dist/components/puck-base/fields/auto-field.d.ts +0 -1
  17. package/dist/components/puck-base/fields/auto-field.js +2 -90
  18. package/dist/components/puck-base/form.js +0 -1
  19. package/dist/components/puck-base/gradient-text.js +1 -1
  20. package/dist/components/puck-base/icon-picker-field.d.ts +8 -0
  21. package/dist/components/puck-base/icon-picker-field.js +153 -0
  22. package/dist/components/puck-base/index.d.ts +1 -1
  23. package/dist/components/puck-base/navigation-menu.d.ts +18 -0
  24. package/dist/components/puck-base/navigation-menu.js +202 -0
  25. package/dist/components/puck-block/banner-sections/announcement-banner-1/index.js +1 -1
  26. package/dist/components/puck-block/banner-sections/marquee-1/index.js +6 -4
  27. package/dist/components/puck-block/contact-sections/contact-us-1/index.js +18 -8
  28. package/dist/components/puck-block/contact-sections/contact-us-2/contact-us-2.js +1 -1
  29. package/dist/components/puck-block/contact-sections/contact-us-2/index.js +7 -7
  30. package/dist/components/puck-block/contact-sections/contact-us-3/index.js +2 -2
  31. package/dist/components/puck-block/cta-sections/banner-cta-1/banner-cta.d.ts +2 -1
  32. package/dist/components/puck-block/cta-sections/banner-cta-1/banner-cta.js +6 -5
  33. package/dist/components/puck-block/cta-sections/banner-cta-1/index.js +4 -4
  34. package/dist/components/puck-block/cta-sections/cta-1/index.js +9 -9
  35. package/dist/components/puck-block/cta-sections/gradient-cta-1/gradient-cta.js +34 -12
  36. package/dist/components/puck-block/cta-sections/gradient-cta-1/index.js +3 -3
  37. package/dist/components/puck-block/cta-sections/newsletter-signup-1/index.js +1 -1
  38. package/dist/components/puck-block/cta-sections/promo-section-1/index.js +5 -6
  39. package/dist/components/puck-block/cta-sections/promo-section-1/promo-section.js +2 -2
  40. package/dist/components/puck-block/faq-sections/accordion-1/accordion.js +8 -3
  41. package/dist/components/puck-block/faq-sections/accordion-1/index.js +7 -3
  42. package/dist/components/puck-block/faq-sections/faq-1/index.js +16 -4
  43. package/dist/components/puck-block/faq-sections/faq-2/index.js +11 -11
  44. package/dist/components/puck-block/feature-sections/bento-1/bento.js +16 -7
  45. package/dist/components/puck-block/feature-sections/bento-1/index.js +19 -6
  46. package/dist/components/puck-block/feature-sections/feature-cards-1/index.js +11 -12
  47. package/dist/components/puck-block/feature-sections/feature-showcase-1/index.js +10 -10
  48. package/dist/components/puck-block/feature-sections/icon-grid-1/icon-grid.js +1 -1
  49. package/dist/components/puck-block/feature-sections/icon-grid-1/index.js +13 -18
  50. package/dist/components/puck-block/feature-sections/product-features-1/index.js +18 -23
  51. package/dist/components/puck-block/footer-sections/footer-1/index.js +17 -22
  52. package/dist/components/puck-block/gallery-sections/gallery-1/index.js +12 -8
  53. package/dist/components/puck-block/gallery-sections/gallery-2/gallery-2.js +14 -6
  54. package/dist/components/puck-block/gallery-sections/gallery-2/index.js +10 -9
  55. package/dist/components/puck-block/gallery-sections/gallery-3/index.js +17 -14
  56. package/dist/components/puck-block/header-sections/header-1/header.d.ts +4 -1
  57. package/dist/components/puck-block/header-sections/header-1/header.js +26 -19
  58. package/dist/components/puck-block/header-sections/header-1/index.js +61 -50
  59. package/dist/components/puck-block/header-sections/sticky-nav-1/index.js +4 -3
  60. package/dist/components/puck-block/hero-sections/fullscreen-hero-1/fullscreen-hero.js +15 -2
  61. package/dist/components/puck-block/hero-sections/fullscreen-hero-1/index.js +4 -4
  62. package/dist/components/puck-block/hero-sections/gradient-hero-1/gradient-hero.js +2 -2
  63. package/dist/components/puck-block/hero-sections/gradient-hero-1/index.js +5 -4
  64. package/dist/components/puck-block/hero-sections/grid-hero-1/grid-hero.js +1 -1
  65. package/dist/components/puck-block/hero-sections/grid-hero-1/index.js +8 -8
  66. package/dist/components/puck-block/hero-sections/hero-1/hero.js +1 -1
  67. package/dist/components/puck-block/hero-sections/hero-1/index.js +16 -12
  68. package/dist/components/puck-block/hero-sections/image-hero-1/image-hero.d.ts +0 -1
  69. package/dist/components/puck-block/hero-sections/image-hero-1/image-hero.js +1 -1
  70. package/dist/components/puck-block/hero-sections/image-hero-1/index.js +23 -6
  71. package/dist/components/puck-block/hero-sections/split-hero-1/index.js +7 -7
  72. package/dist/components/puck-block/hero-sections/video-hero-1/index.js +5 -5
  73. package/dist/components/puck-block/hero-sections/video-hero-1/video-hero.js +1 -1
  74. package/dist/components/puck-block/location-sections/location-1/index.js +4 -7
  75. package/dist/components/puck-block/location-sections/location-1/location.d.ts +1 -0
  76. package/dist/components/puck-block/location-sections/location-1/location.js +2 -3
  77. package/dist/components/puck-block/location-sections/location-2/index.js +4 -7
  78. package/dist/components/puck-block/location-sections/location-2/location.d.ts +1 -0
  79. package/dist/components/puck-block/location-sections/location-2/location.js +2 -3
  80. package/dist/components/puck-block/location-sections/location-3/index.js +15 -14
  81. package/dist/components/puck-block/location-sections/location-3/location.d.ts +3 -0
  82. package/dist/components/puck-block/location-sections/location-3/location.js +7 -4
  83. package/dist/components/puck-block/metrics-sections/stats-1/index.js +13 -13
  84. package/dist/components/puck-block/metrics-sections/stats-2/index.js +8 -10
  85. package/dist/components/puck-block/metrics-sections/stats-2/stats-2.js +0 -1
  86. package/dist/components/puck-block/metrics-sections/stats-3/index.js +13 -15
  87. package/dist/components/puck-block/metrics-sections/stats-3/stats-3.js +14 -1
  88. package/dist/components/puck-block/pricing-sections/comparison-1/index.js +2 -2
  89. package/dist/components/puck-block/pricing-sections/pricing-1/index.js +39 -21
  90. package/dist/components/puck-block/pricing-sections/pricing-2/index.js +30 -34
  91. package/dist/components/puck-block/showcase-sections/before-after-1/index.js +12 -13
  92. package/dist/components/puck-block/showcase-sections/case-study-1/case-study.js +1 -1
  93. package/dist/components/puck-block/showcase-sections/case-study-1/index.js +8 -8
  94. package/dist/components/puck-block/showcase-sections/step-by-step-1/index.js +8 -8
  95. package/dist/components/puck-block/team-sections/team-grid-1/index.js +9 -9
  96. package/dist/components/puck-block/team-sections/team-grid-2/index.js +12 -14
  97. package/dist/components/puck-block/team-sections/team-profiles-1/index.js +11 -9
  98. package/dist/components/puck-block/testimonial-sections/customers-1/index.js +18 -7
  99. package/dist/components/puck-block/testimonial-sections/logo-marquee-1/index.js +2 -2
  100. package/dist/components/puck-block/testimonial-sections/logo-marquee-1/logo-marquee.js +1 -1
  101. package/dist/components/puck-block/testimonial-sections/logo-wall-1/index.js +7 -7
  102. package/dist/components/puck-block/testimonial-sections/review-section-1/index.js +27 -12
  103. package/dist/components/puck-block/testimonial-sections/testimonials-1/index.js +17 -7
  104. package/dist/components/puck-block/testimonial-sections/testimonials-1/testimonials.js +30 -10
  105. package/dist/components/puck-block/text-sections/articles-1/articles.js +1 -1
  106. package/dist/components/puck-block/text-sections/articles-1/index.js +12 -8
  107. package/dist/components/puck-block/text-sections/content-section-1/content-section.js +0 -1
  108. package/dist/components/puck-block/text-sections/content-section-1/index.js +6 -8
  109. package/dist/components/puck-block/text-sections/rich-text-1/index.js +1 -1
  110. package/dist/components/puck-block/text-sections/rich-text-1/rich-text.js +6 -1
  111. package/dist/components/puck-block/text-sections/tab-section-1/index.js +12 -12
  112. package/dist/components/puck-block/text-sections/tab-section-1/tab-section.js +7 -3
  113. package/dist/components/puck-block/text-sections/timeline-1/index.js +17 -7
  114. package/dist/components/puck-block/text-sections/two-column-1/index.js +10 -10
  115. package/dist/components/shadcn/navigation-menu.js +8 -33
  116. package/dist/index.js +9 -1
  117. package/dist/node_modules/.pnpm/lucide-react@0.540.0_react@19.2.4/node_modules/lucide-react/dist/esm/DynamicIcon.js +1 -3
  118. package/package.json +3 -2
  119. package/dist/components/puck-base/action-field.d.ts +0 -8
  120. package/dist/components/puck-base/action-field.js +0 -170
@@ -1,22 +1,22 @@
1
- import { image1x1Placeholder, image } from "../../../puck-base/core/fields.js";
1
+ import { image } from "../../../puck-base/core/fields.js";
2
2
  import { Faq2 } from "./faq-2.js";
3
3
  import { createStylesDefaults, createStylesField } from "../../../puck-base/core/styles.js";
4
4
  const defaultItems = [
5
5
  {
6
- question: "What's included in a session?",
7
- answer: "Each session includes a personalized warm-up, structured training tailored to your goals, form coaching, and a cool-down. You'll also receive guidance on next steps to keep progressing."
6
+ question: "How long does setup take?",
7
+ answer: "Most teams are up and running in under 5 minutes. Just connect your repo and you're good to go."
8
8
  },
9
9
  {
10
- question: "How do I know if this is right for me?",
11
- answer: "If you have a goal whether it's losing weight, building strength, improving mobility, or just feeling better we can help. We offer a free consultation to assess your needs and build a plan."
10
+ question: "Do you integrate with my existing tools?",
11
+ answer: "Yeswe integrate with GitHub, GitLab, Slack, Jira, Linear, and 50+ other tools out of the box."
12
12
  },
13
13
  {
14
- question: "How often should I train to see results?",
15
- answer: "Most clients see meaningful results training 2–3 times per week. We'll work with your schedule and lifestyle to find the right frequency for your goals."
14
+ question: "What kind of support do you offer?",
15
+ answer: "Free plans get community support. Pro and Enterprise plans include priority email and live chat support."
16
16
  },
17
17
  {
18
- question: "Do you offer programs for specific goals?",
19
- answer: "Yes we tailor every program to your specific objectives, whether that's weight loss, muscle gain, athletic performance, or general wellness."
18
+ question: "Can I migrate from another platform?",
19
+ answer: "We offer free migration assistance for teams on Pro and Enterprise plans. Most migrations take less than a day."
20
20
  }
21
21
  ];
22
22
  const conf = {
@@ -48,9 +48,9 @@ const conf = {
48
48
  styles: createStylesField()
49
49
  },
50
50
  defaultProps: {
51
- heading: "Questions about getting started",
51
+ heading: "Common questions about getting started",
52
52
  items: defaultItems,
53
- image: image1x1Placeholder,
53
+ image: { src: "https://images.pexels.com/photos/3183150/pexels-photo-3183150.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Tech team collaborating at a modern office workspace" },
54
54
  imagePosition: "right",
55
55
  styles: createStylesDefaults()
56
56
  },
@@ -23,7 +23,13 @@ const Bento = ({
23
23
  spacing: "tight"
24
24
  }
25
25
  ),
26
- /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 grid-rows-2 gap-8 sm:grid-cols-2 lg:grid-cols-3", children: cards == null ? void 0 : cards.map((card, index) => /* @__PURE__ */ jsx(
26
+ /* @__PURE__ */ jsx("div", { className: cn(
27
+ "grid gap-8",
28
+ cards.length === 1 && "grid-cols-1",
29
+ cards.length === 2 && "grid-cols-1 sm:grid-cols-2",
30
+ cards.length === 3 && "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
31
+ cards.length >= 4 && "grid-cols-1 grid-rows-2 sm:grid-cols-2 lg:grid-cols-3"
32
+ ), children: cards == null ? void 0 : cards.map((card, index) => /* @__PURE__ */ jsx(
27
33
  CompoundCard,
28
34
  {
29
35
  image: card.image,
@@ -31,12 +37,15 @@ const Bento = ({
31
37
  heading: card.heading,
32
38
  description: card.description,
33
39
  button: card.button,
34
- className: cn({
35
- "[grid-area:1/1/2/3]": index === 0,
36
- "aspect-square [grid-area:1/3/2/4]": index === 1,
37
- "aspect-square [grid-area:2/1/3/2]": index === 2,
38
- "[grid-area:2/2/3/4]": index === 3
39
- })
40
+ className: cn(
41
+ cards.length >= 4 && {
42
+ "[grid-area:1/1/2/3]": index === 0,
43
+ "aspect-square [grid-area:1/3/2/4]": index === 1,
44
+ "aspect-square [grid-area:2/1/3/2]": index === 2,
45
+ "[grid-area:2/2/3/4]": index === 3
46
+ },
47
+ cards.length === 3 && index === 0 && "sm:col-span-2 lg:col-span-1"
48
+ )
40
49
  },
41
50
  index
42
51
  )) })
@@ -17,13 +17,26 @@ const conf = {
17
17
  url: "",
18
18
  variant: "default"
19
19
  },
20
- heading: "Something new!",
21
- description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
20
+ heading: "Everything you need to ship faster",
21
+ description: "Powerful features designed for modern teams.",
22
22
  buttons: [],
23
- cards: Array.from({ length: 1 }).map((_, index) => ({
24
- ...cards.defaultItemProps,
25
- heading: `Card ${index + 1}`
26
- })),
23
+ cards: [
24
+ {
25
+ ...cards.defaultItemProps,
26
+ heading: "Real-time Collaboration",
27
+ description: "Edit together with your team — no conflicts, no waiting."
28
+ },
29
+ {
30
+ ...cards.defaultItemProps,
31
+ heading: "Smart Automation",
32
+ description: "Automate repetitive tasks and focus on what matters."
33
+ },
34
+ {
35
+ ...cards.defaultItemProps,
36
+ heading: "Built-in Analytics",
37
+ description: "Track performance with dashboards that update in real time."
38
+ }
39
+ ],
27
40
  styles: createStylesDefaults()
28
41
  },
29
42
  render: Bento
@@ -1,4 +1,4 @@
1
- import { image16x9Placeholder, button, image, contentFields } from "../../../puck-base/core/fields.js";
1
+ import { button, image, contentFields } from "../../../puck-base/core/fields.js";
2
2
  import { FeatureCards } from "./feature-cards.js";
3
3
  import { createStylesDefaults, createStylesField } from "../../../puck-base/core/styles.js";
4
4
  const conf = {
@@ -23,6 +23,7 @@ const conf = {
23
23
  },
24
24
  cards: {
25
25
  type: "array",
26
+ max: 9,
26
27
  getItemSummary: (item, index = 0) => item.heading || `Card ${index + 1}`,
27
28
  arrayFields: {
28
29
  image,
@@ -31,12 +32,11 @@ const conf = {
31
32
  button
32
33
  },
33
34
  defaultItemProps: {
34
- image: image16x9Placeholder,
35
- heading: "Card heading",
36
- description: "Card description goes here.",
35
+ image: { src: "https://images.pexels.com/photos/546819/pexels-photo-546819.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Developer screen showing lines of code with syntax highlighting" },
36
+ heading: "Feature highlight",
37
+ description: "A brief explanation of this feature and why it matters.",
37
38
  button: {
38
39
  label: "",
39
- url: "",
40
40
  variant: "link",
41
41
  size: "default",
42
42
  icon: "move-right"
@@ -46,10 +46,10 @@ const conf = {
46
46
  styles: createStylesField()
47
47
  },
48
48
  defaultProps: {
49
- heading: "Something new!",
50
- description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
49
+ heading: "Why teams choose us",
50
+ description: "Simple tools that solve complex problems so you can focus on building great products.",
51
51
  badge: {
52
- label: "Platform",
52
+ label: "Features",
53
53
  url: "",
54
54
  variant: "default"
55
55
  },
@@ -58,12 +58,11 @@ const conf = {
58
58
  columns: 3,
59
59
  cards: [
60
60
  {
61
- image: image16x9Placeholder,
62
- heading: "Card 1",
63
- description: "Card description goes here.",
61
+ image: { src: "https://images.pexels.com/photos/546819/pexels-photo-546819.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Developer screen showing lines of code with syntax highlighting" },
62
+ heading: "Lightning-fast deploys",
63
+ description: "Push to production in seconds with zero-downtime deployments.",
64
64
  button: {
65
65
  label: "",
66
- url: "",
67
66
  variant: "link",
68
67
  size: "default",
69
68
  icon: "move-right"
@@ -1,4 +1,4 @@
1
- import { image16x9Placeholder, image } from "../../../puck-base/core/fields.js";
1
+ import { image } from "../../../puck-base/core/fields.js";
2
2
  import { FeatureShowcase } from "./feature-showcase.js";
3
3
  import { createStylesDefaults, createStylesField } from "../../../puck-base/core/styles.js";
4
4
  const conf = {
@@ -29,21 +29,21 @@ const conf = {
29
29
  styles: createStylesField()
30
30
  },
31
31
  defaultProps: {
32
- heading: "Everything you need",
33
- description: "Powerful features designed to help you build, ship, and grow faster.",
34
- image: image16x9Placeholder,
32
+ heading: "Designed for speed and clarity",
33
+ description: "Every detail is crafted to help your team move faster without sacrificing quality.",
34
+ image: { src: "https://images.pexels.com/photos/577210/pexels-photo-577210.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Sleek laptop showcasing data analytics and graphs on the screen in a bright room." },
35
35
  features: [
36
36
  {
37
- title: "Lightning fast",
38
- description: "Built for speed from the ground up."
37
+ title: "Instant preview",
38
+ description: "See changes in real time before they go live."
39
39
  },
40
40
  {
41
- title: "Secure by default",
42
- description: "Enterprise-grade security built in."
41
+ title: "Version control",
42
+ description: "Roll back to any previous version with one click."
43
43
  },
44
44
  {
45
- title: "Easy integration",
46
- description: "Connect with your favorite tools."
45
+ title: "Team permissions",
46
+ description: "Fine-grained access control for every project."
47
47
  }
48
48
  ],
49
49
  layout: "image-right",
@@ -36,7 +36,7 @@ const IconGrid = (allProps) => {
36
36
  CompoundButton,
37
37
  {
38
38
  label: button.label,
39
- url: button.url,
39
+ action: button.action,
40
40
  variant: button.variant,
41
41
  size: button.size,
42
42
  icon: button.icon
@@ -1,4 +1,4 @@
1
- import { buttons } from "../../../puck-base/core/fields.js";
1
+ import { icon, buttons } from "../../../puck-base/core/fields.js";
2
2
  import { IconGrid } from "./icon-grid.js";
3
3
  import { createStylesDefaults, createStylesField } from "../../../puck-base/core/styles.js";
4
4
  const conf = {
@@ -19,12 +19,7 @@ const conf = {
19
19
  max: 12,
20
20
  getItemSummary: (item, i = 0) => item.title || `Feature ${i + 1}`,
21
21
  arrayFields: {
22
- icon: {
23
- type: "text",
24
- ai: {
25
- instructions: "Use a Lucide icon name in kebab-case (e.g. book-open, target, compass, zap, shield, globe, heart, star, rocket, lock, clock, check, sparkles, pen-tool, layers, users, message-circle). Any valid Lucide icon name works."
26
- }
27
- },
22
+ icon,
28
23
  title: { type: "text" },
29
24
  description: { type: "textarea" }
30
25
  },
@@ -37,27 +32,27 @@ const conf = {
37
32
  styles: createStylesField()
38
33
  },
39
34
  defaultProps: {
40
- heading: "Why choose us",
41
- description: "Features that set us apart.",
35
+ heading: "Built for every workflow",
36
+ description: "From planning to launch, we've got you covered.",
42
37
  columns: 3,
43
38
  features: [
44
39
  {
45
40
  icon: "zap",
46
- title: "Fast",
47
- description: "Lightning-fast performance."
41
+ title: "API First",
42
+ description: "Build on a robust, well-documented API."
48
43
  },
49
44
  {
50
45
  icon: "shield",
51
- title: "Secure",
52
- description: "Enterprise-grade security."
46
+ title: "Enterprise Security",
47
+ description: "SOC 2 compliant with end-to-end encryption."
53
48
  },
54
- { icon: "globe", title: "Global", description: "Available worldwide." },
55
- { icon: "heart", title: "Loved", description: "Trusted by thousands." },
56
- { icon: "rocket", title: "Scalable", description: "Grows with you." },
49
+ { icon: "globe", title: "Global CDN", description: "Sub-50ms response times worldwide." },
50
+ { icon: "heart", title: "24/7 Support", description: "Expert help whenever you need it." },
51
+ { icon: "rocket", title: "Cloud Native", description: "Serverless infrastructure that scales automatically." },
57
52
  {
58
53
  icon: "sparkles",
59
- title: "Modern",
60
- description: "Built with latest tech."
54
+ title: "Custom Integrations",
55
+ description: "Connect with the tools your team already uses."
61
56
  }
62
57
  ],
63
58
  styles: createStylesDefaults()
@@ -42,45 +42,40 @@ const conf = {
42
42
  styles: createStylesField()
43
43
  },
44
44
  defaultProps: {
45
- heading: "Built for the Trail",
46
- description: "Every detail of the Summit 32L is engineered for performance and comfort on long-distance hikes.",
45
+ heading: "Powerful under the hood",
46
+ description: "Advanced capabilities that scale with your business.",
47
47
  layout: "grid",
48
48
  columns: 3,
49
49
  features: [
50
50
  {
51
- icon: "mountain",
52
- title: "Weather-Resistant Shell",
53
- description: "Ripstop nylon exterior with DWR coating sheds rain and resists abrasion on rugged terrain."
51
+ icon: "test-tube-diagonal",
52
+ title: "Automated Testing",
53
+ description: "Run your test suite on every push with parallel execution and smart retries."
54
54
  },
55
55
  {
56
- icon: "wind",
57
- title: "Ventilated Back Panel",
58
- description: "Suspended mesh back panel promotes airflow, keeping you cool during steep climbs."
56
+ icon: "git-branch",
57
+ title: "CI/CD Pipeline",
58
+ description: "Fully managed continuous integration and deployment with zero configuration."
59
59
  },
60
60
  {
61
- icon: "lock",
62
- title: "Lockable Zippers",
63
- description: "YKK zippers with locking pulls keep your gear secure on crowded trails and transit."
61
+ icon: "scroll-text",
62
+ title: "Real-time Logs",
63
+ description: "Stream logs from any environment with powerful search and filtering."
64
64
  },
65
65
  {
66
- icon: "droplets",
67
- title: "Hydration Compatible",
68
- description: "Dedicated sleeve and port for up to a 3L hydration reservoir, accessible without removing the pack."
66
+ icon: "globe",
67
+ title: "Custom Domains",
68
+ description: "Connect your own domains with automatic SSL provisioning and renewal."
69
69
  },
70
70
  {
71
- icon: "ruler",
72
- title: "Adjustable Torso Fit",
73
- description: "Sliding harness system fits torso lengths from 15 to 22 inches for a custom, load-bearing fit."
74
- },
75
- {
76
- icon: "moon",
77
- title: "Reflective Accents",
78
- description: "360° reflective details and a blinker attachment loop for visibility during dawn and dusk hikes."
71
+ icon: "webhook",
72
+ title: "Webhooks",
73
+ description: "Trigger external services and workflows with configurable webhook events."
79
74
  }
80
75
  ],
81
76
  image: {
82
77
  src: getPlaceholderImageUrl("1200x800", "Product Image"),
83
- alt: "Summit 32L hiking backpack"
78
+ alt: "Platform features overview"
84
79
  },
85
80
  styles: createStylesDefaults()
86
81
  },
@@ -61,33 +61,28 @@ const conf = {
61
61
  styles: createStylesField()
62
62
  },
63
63
  defaultProps: {
64
- companyName: "Puck Visual Editor",
65
- tagLine: "Build visually. Launch instantly.",
66
- address: "1 Puck Avenue\nVisual Park\nCA 123123\n© 2024 Puck, Inc.",
64
+ companyName: "Acme Inc",
65
+ tagLine: "Build faster. Ship with confidence.",
66
+ address: "123 Market St\nSan Francisco, CA 94105\n© 2024 Acme, Inc.",
67
67
  navigation: [
68
- {
69
- label: "Home",
70
- url: "/",
71
- items: []
72
- },
73
68
  {
74
69
  label: "Product",
75
70
  items: [
76
71
  {
77
- label: "Reports",
78
- url: "/reports"
72
+ label: "Features",
73
+ url: "/features"
79
74
  },
80
75
  {
81
- label: "Statistics",
82
- url: "/statistics"
76
+ label: "Pricing",
77
+ url: "/pricing"
83
78
  },
84
79
  {
85
- label: "Dashboards",
86
- url: "/dashboards"
80
+ label: "Changelog",
81
+ url: "/changelog"
87
82
  },
88
83
  {
89
- label: "Recordings",
90
- url: "/recordings"
84
+ label: "Docs",
85
+ url: "/docs"
91
86
  }
92
87
  ]
93
88
  },
@@ -95,19 +90,19 @@ const conf = {
95
90
  label: "Company",
96
91
  items: [
97
92
  {
98
- label: "About us",
93
+ label: "About",
99
94
  url: "/about"
100
95
  },
101
96
  {
102
- label: "Fundraising",
103
- url: "/fundraising"
97
+ label: "Blog",
98
+ url: "/blog"
104
99
  },
105
100
  {
106
- label: "Investors",
107
- url: "/investors"
101
+ label: "Careers",
102
+ url: "/careers"
108
103
  },
109
104
  {
110
- label: "Contact us",
105
+ label: "Contact",
111
106
  url: "/contact"
112
107
  }
113
108
  ]
@@ -2,8 +2,8 @@ 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://dummyimage.com/800x600/f5f4f4/101010.png&text=Gallery+Image",
6
- alt: "Gallery image",
5
+ src: "https://images.pexels.com/photos/3888151/pexels-photo-3888151.jpeg?auto=compress&cs=tinysrgb&w=1200",
6
+ alt: "Developer workspace with laptop showing code",
7
7
  caption: ""
8
8
  };
9
9
  const conf = {
@@ -52,12 +52,16 @@ const conf = {
52
52
  })
53
53
  },
54
54
  defaultProps: {
55
- heading: "Our Gallery",
56
- description: "A showcase of our finest work and moments.",
57
- images: Array.from({ length: 6 }).map((_, i) => ({
58
- ...defaultImage,
59
- alt: `Gallery image ${i + 1}`
60
- })),
55
+ heading: "Product Showcase",
56
+ description: "A visual tour of our platform's key features and interfaces.",
57
+ images: [
58
+ { src: "https://images.pexels.com/photos/3888151/pexels-photo-3888151.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Developer workspace with laptop showing program code on screen", caption: "" },
59
+ { src: "https://images.pexels.com/photos/546819/pexels-photo-546819.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "MacBook Pro displaying lines of code with colorful syntax highlighting", caption: "" },
60
+ { src: "https://images.pexels.com/photos/574071/pexels-photo-574071.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Computer monitor showing colorful code on dark background", caption: "" },
61
+ { src: "https://images.pexels.com/photos/4218883/pexels-photo-4218883.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Clean workspace with computer displaying code editor", caption: "" },
62
+ { src: "https://images.pexels.com/photos/270404/pexels-photo-270404.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Source code displayed on computer screen in developer office", caption: "" },
63
+ { src: "https://images.pexels.com/photos/577585/pexels-photo-577585.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Minimalist developer desk setup with laptop and coffee", caption: "" }
64
+ ],
61
65
  styles: createStylesDefaults({ columns: 3, gap: "md", aspectRatio: "auto" })
62
66
  },
63
67
  render: Gallery
@@ -59,21 +59,29 @@ const Gallery2 = ({
59
59
  /* @__PURE__ */ jsx(
60
60
  "button",
61
61
  {
62
- onClick: () => emblaApi == null ? void 0 : emblaApi.scrollPrev(),
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: () => emblaApi == null ? void 0 : emblaApi.scrollNext(),
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,8 +1,8 @@
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://dummyimage.com/1400x700/f5f4f4/101010.png&text=Gallery+Image",
5
- alt: "Gallery image"
4
+ src: "https://images.pexels.com/photos/3861969/pexels-photo-3861969.jpeg?auto=compress&cs=tinysrgb&w=1200",
5
+ alt: "Developer working at desk with multiple monitors showing code"
6
6
  };
7
7
  const conf = {
8
8
  fields: {
@@ -19,7 +19,7 @@ const conf = {
19
19
  max: 10,
20
20
  getItemSummary: (item, index = 0) => item.alt || `Image ${index + 1}`,
21
21
  arrayFields: {
22
- src: { type: "image", label: "图片" },
22
+ src: { type: "image", label: "Image" },
23
23
  alt: { type: "text", label: "Alt Text" }
24
24
  },
25
25
  defaultItemProps: defaultImage
@@ -27,12 +27,13 @@ const conf = {
27
27
  styles: createStylesField()
28
28
  },
29
29
  defaultProps: {
30
- heading: "Real transformations from real training",
31
- description: "Watch how customized programs and one-on-one coaching help clients reach their fitness goals. Every session is built around your needs.",
32
- images: Array.from({ length: 3 }).map((_, i) => ({
33
- ...defaultImage,
34
- alt: `Gallery image ${i + 1}`
35
- })),
30
+ heading: "Built by developers, for developers",
31
+ description: "Explore how teams use our tools to design, build, and ship products that make an impact.",
32
+ images: [
33
+ { src: "https://images.pexels.com/photos/3861969/pexels-photo-3861969.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Developer working at desk with multiple monitors showing code" },
34
+ { src: "https://images.pexels.com/photos/1181677/pexels-photo-1181677.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Two developers collaborating on code at a shared workspace" },
35
+ { src: "https://images.pexels.com/photos/3183150/pexels-photo-3183150.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Tech team collaborating around laptops at a modern office table" }
36
+ ],
36
37
  styles: createStylesDefaults()
37
38
  },
38
39
  render: Gallery2
@@ -1,11 +1,14 @@
1
- import { getPlaceholderImageUrl } from "../../../puck-base/core/fields.js";
2
1
  import { Gallery3 } from "./gallery-3.js";
3
2
  import { createStylesDefaults, createStylesField } from "../../../puck-base/core/styles.js";
4
- const makeDefaultImage = (i) => ({
5
- src: getPlaceholderImageUrl("1200x800", `Gallery Image ${i + 1}`),
6
- alt: `Gallery image ${i + 1}`,
7
- caption: ""
8
- });
3
+ const pexelsImages = [
4
+ { src: "https://images.pexels.com/photos/113850/pexels-photo-113850.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Technology desktop showing colorful source code on screen", caption: "" },
5
+ { src: "https://images.pexels.com/photos/196644/pexels-photo-196644.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Top-down view of laptop displaying code in a modern workspace", caption: "" },
6
+ { src: "https://images.pexels.com/photos/6424590/pexels-photo-6424590.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Close-up of laptop screen showing programming code", caption: "" },
7
+ { src: "https://images.pexels.com/photos/1181671/pexels-photo-1181671.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Developer focused on coding at laptop in a bright workspace", caption: "" },
8
+ { src: "https://images.pexels.com/photos/3888151/pexels-photo-3888151.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Modern laptop with program code on screen at workplace", caption: "" },
9
+ { src: "https://images.pexels.com/photos/3183150/pexels-photo-3183150.jpeg?auto=compress&cs=tinysrgb&w=1200", alt: "Tech team working together at a collaborative desk setup", caption: "" }
10
+ ];
11
+ const makeDefaultImage = (i) => pexelsImages[i % pexelsImages.length];
9
12
  const conf = {
10
13
  fields: {
11
14
  heading: {
@@ -21,7 +24,7 @@ const conf = {
21
24
  max: 9,
22
25
  getItemSummary: (item, index = 0) => item.alt || `Image ${index + 1}`,
23
26
  arrayFields: {
24
- src: { type: "image", label: "图片" },
27
+ src: { type: "image", label: "Image" },
25
28
  alt: { type: "text", label: "Alt Text" },
26
29
  caption: { type: "text", label: "Caption" }
27
30
  },
@@ -30,24 +33,24 @@ const conf = {
30
33
  showCaptions: {
31
34
  type: "radio",
32
35
  options: [
33
- { label: "显示", value: true },
34
- { label: "隐藏", value: false }
36
+ { label: "Show", value: true },
37
+ { label: "Hide", value: false }
35
38
  ]
36
39
  },
37
40
  styles: createStylesField({
38
41
  gap: {
39
42
  type: "radio",
40
43
  options: [
41
- { label: "紧凑", value: "sm" },
42
- { label: "默认", value: "md" },
43
- { label: "宽松", value: "lg" }
44
+ { label: "Compact", value: "sm" },
45
+ { label: "Default", value: "md" },
46
+ { label: "Spacious", value: "lg" }
44
47
  ]
45
48
  }
46
49
  })
47
50
  },
48
51
  defaultProps: {
49
- heading: "Crafted with intention",
50
- description: "A curated selection of moments that define our work and vision.",
52
+ heading: "Design that speaks for itself",
53
+ description: "A curated look at the interfaces and experiences our platform helps bring to life.",
51
54
  images: Array.from({ length: 6 }, (_, i) => makeDefaultImage(i)),
52
55
  showCaptions: true,
53
56
  styles: createStylesDefaults({ gap: "md" })
@@ -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 {