dune-react 0.0.8 → 0.0.10

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 (227) hide show
  1. package/dist/components/puck-base/article-card.js +1 -1
  2. package/dist/components/puck-base/button.js +2 -1
  3. package/dist/components/puck-base/container.d.ts +7 -1
  4. package/dist/components/puck-base/container.js +2 -1
  5. package/dist/components/puck-base/content.d.ts +1 -4
  6. package/dist/components/puck-base/content.js +15 -17
  7. package/dist/components/puck-base/core/fields.d.ts +1 -127
  8. package/dist/components/puck-base/core/fields.js +1 -76
  9. package/dist/components/puck-base/core/styles.d.ts +1877 -0
  10. package/dist/components/puck-base/core/styles.js +286 -0
  11. package/dist/components/puck-base/core/types.d.ts +2 -2
  12. package/dist/components/puck-base/core/with-editable.d.ts +4 -1
  13. package/dist/components/puck-base/core/with-editable.js +51 -27
  14. package/dist/components/puck-base/editor-context.d.ts +8 -0
  15. package/dist/components/puck-base/fields/auto-field.d.ts +1 -0
  16. package/dist/components/puck-base/fields/auto-field.js +131 -49
  17. package/dist/components/puck-base/gradient-text.js +12 -3
  18. package/dist/components/puck-block/banner-sections/announcement-banner-1/announcement-banner.d.ts +9 -7
  19. package/dist/components/puck-block/banner-sections/announcement-banner-1/announcement-banner.js +11 -8
  20. package/dist/components/puck-block/banner-sections/announcement-banner-1/index.js +19 -37
  21. package/dist/components/puck-block/banner-sections/marquee-1/index.js +26 -24
  22. package/dist/components/puck-block/banner-sections/marquee-1/marquee.d.ts +9 -9
  23. package/dist/components/puck-block/banner-sections/marquee-1/marquee.js +28 -21
  24. package/dist/components/puck-block/banner-sections/props.d.ts +22 -0
  25. package/dist/components/puck-block/contact-sections/api/form-leads.d.ts +16 -0
  26. package/dist/components/puck-block/contact-sections/api/form-leads.js +25 -0
  27. package/dist/components/puck-block/contact-sections/contact-us-1/contact-us.d.ts +13 -4
  28. package/dist/components/puck-block/contact-sections/contact-us-1/contact-us.js +122 -121
  29. package/dist/components/puck-block/contact-sections/contact-us-1/index.js +87 -7
  30. package/dist/components/puck-block/contact-sections/contact-us-2/contact-us-2.d.ts +30 -0
  31. package/dist/components/puck-block/contact-sections/contact-us-2/contact-us-2.js +234 -0
  32. package/dist/components/puck-block/contact-sections/contact-us-2/index.d.ts +5 -0
  33. package/dist/components/puck-block/contact-sections/contact-us-2/index.js +74 -0
  34. package/dist/components/puck-block/contact-sections/contact-us-3/contact-us-3.d.ts +32 -0
  35. package/dist/components/puck-block/contact-sections/contact-us-3/contact-us-3.js +250 -0
  36. package/dist/components/puck-block/contact-sections/contact-us-3/index.d.ts +5 -0
  37. package/dist/components/puck-block/contact-sections/contact-us-3/index.js +114 -0
  38. package/dist/components/puck-block/contact-sections/props.d.ts +65 -0
  39. package/dist/components/puck-block/cta-sections/banner-cta-1/banner-cta.d.ts +12 -9
  40. package/dist/components/puck-block/cta-sections/banner-cta-1/banner-cta.js +28 -30
  41. package/dist/components/puck-block/cta-sections/banner-cta-1/index.js +23 -25
  42. package/dist/components/puck-block/cta-sections/cta-1/cta.d.ts +6 -4
  43. package/dist/components/puck-block/cta-sections/cta-1/cta.js +5 -7
  44. package/dist/components/puck-block/cta-sections/cta-1/index.js +5 -9
  45. package/dist/components/puck-block/cta-sections/gradient-cta-1/gradient-cta.d.ts +10 -10
  46. package/dist/components/puck-block/cta-sections/gradient-cta-1/gradient-cta.js +24 -20
  47. package/dist/components/puck-block/cta-sections/gradient-cta-1/index.js +36 -29
  48. package/dist/components/puck-block/cta-sections/newsletter-signup-1/index.js +13 -5
  49. package/dist/components/puck-block/cta-sections/newsletter-signup-1/newsletter-signup.d.ts +7 -3
  50. package/dist/components/puck-block/cta-sections/newsletter-signup-1/newsletter-signup.js +36 -32
  51. package/dist/components/puck-block/cta-sections/promo-section-1/index.js +4 -5
  52. package/dist/components/puck-block/cta-sections/promo-section-1/promo-section.d.ts +6 -4
  53. package/dist/components/puck-block/cta-sections/promo-section-1/promo-section.js +94 -79
  54. package/dist/components/puck-block/cta-sections/props.d.ts +47 -0
  55. package/dist/components/puck-block/faq-sections/accordion-1/accordion.d.ts +6 -4
  56. package/dist/components/puck-block/faq-sections/accordion-1/accordion.js +39 -33
  57. package/dist/components/puck-block/faq-sections/accordion-1/index.js +3 -5
  58. package/dist/components/puck-block/faq-sections/faq-1/faq.d.ts +9 -7
  59. package/dist/components/puck-block/faq-sections/faq-1/faq.js +50 -44
  60. package/dist/components/puck-block/faq-sections/faq-1/index.js +12 -14
  61. package/dist/components/puck-block/faq-sections/faq-2/faq-2.d.ts +18 -0
  62. package/dist/components/puck-block/faq-sections/faq-2/faq-2.js +54 -0
  63. package/dist/components/puck-block/faq-sections/faq-2/index.d.ts +5 -0
  64. package/dist/components/puck-block/faq-sections/faq-2/index.js +61 -0
  65. package/dist/components/puck-block/faq-sections/props.d.ts +30 -0
  66. package/dist/components/puck-block/feature-sections/bento-1/bento.d.ts +6 -4
  67. package/dist/components/puck-block/feature-sections/bento-1/bento.js +2 -4
  68. package/dist/components/puck-block/feature-sections/bento-1/index.js +4 -5
  69. package/dist/components/puck-block/feature-sections/feature-cards-1/feature-cards.d.ts +8 -7
  70. package/dist/components/puck-block/feature-sections/feature-cards-1/feature-cards.js +15 -7
  71. package/dist/components/puck-block/feature-sections/feature-cards-1/index.js +37 -18
  72. package/dist/components/puck-block/feature-sections/feature-showcase-1/feature-showcase.d.ts +6 -4
  73. package/dist/components/puck-block/feature-sections/feature-showcase-1/feature-showcase.js +4 -12
  74. package/dist/components/puck-block/feature-sections/feature-showcase-1/index.js +4 -5
  75. package/dist/components/puck-block/feature-sections/icon-grid-1/icon-grid.d.ts +6 -4
  76. package/dist/components/puck-block/feature-sections/icon-grid-1/icon-grid.js +59 -53
  77. package/dist/components/puck-block/feature-sections/icon-grid-1/index.js +7 -8
  78. package/dist/components/puck-block/feature-sections/product-features-1/index.js +4 -5
  79. package/dist/components/puck-block/feature-sections/product-features-1/product-features.d.ts +6 -4
  80. package/dist/components/puck-block/feature-sections/product-features-1/product-features.js +7 -29
  81. package/dist/components/puck-block/feature-sections/props.d.ts +48 -0
  82. package/dist/components/puck-block/footer-sections/footer-1/footer.d.ts +5 -3
  83. package/dist/components/puck-block/footer-sections/footer-1/footer.js +6 -6
  84. package/dist/components/puck-block/footer-sections/footer-1/index.js +3 -5
  85. package/dist/components/puck-block/footer-sections/props.d.ts +31 -0
  86. package/dist/components/puck-block/gallery-sections/gallery-1/gallery.d.ts +9 -7
  87. package/dist/components/puck-block/gallery-sections/gallery-1/gallery.js +49 -40
  88. package/dist/components/puck-block/gallery-sections/gallery-1/index.js +32 -34
  89. package/dist/components/puck-block/gallery-sections/gallery-2/gallery-2.d.ts +16 -0
  90. package/dist/components/puck-block/gallery-sections/gallery-2/gallery-2.js +86 -0
  91. package/dist/components/puck-block/gallery-sections/gallery-2/index.d.ts +5 -0
  92. package/dist/components/puck-block/gallery-sections/gallery-2/index.js +42 -0
  93. package/dist/components/puck-block/gallery-sections/gallery-3/gallery-3.d.ts +19 -0
  94. package/dist/components/puck-block/gallery-sections/gallery-3/gallery-3.js +119 -0
  95. package/dist/components/puck-block/gallery-sections/gallery-3/index.d.ts +5 -0
  96. package/dist/components/puck-block/gallery-sections/gallery-3/index.js +59 -0
  97. package/dist/components/puck-block/gallery-sections/props.d.ts +26 -0
  98. package/dist/components/puck-block/header-sections/header-1/header.d.ts +7 -5
  99. package/dist/components/puck-block/header-sections/header-1/header.js +8 -9
  100. package/dist/components/puck-block/header-sections/header-1/index.d.ts +1 -1
  101. package/dist/components/puck-block/header-sections/header-1/index.js +13 -12
  102. package/dist/components/puck-block/header-sections/props.d.ts +41 -0
  103. package/dist/components/puck-block/header-sections/sticky-nav-1/index.js +12 -12
  104. package/dist/components/puck-block/header-sections/sticky-nav-1/sticky-nav.d.ts +8 -6
  105. package/dist/components/puck-block/header-sections/sticky-nav-1/sticky-nav.js +5 -5
  106. package/dist/components/puck-block/hero-sections/fullscreen-hero-1/fullscreen-hero.d.ts +11 -4
  107. package/dist/components/puck-block/hero-sections/fullscreen-hero-1/fullscreen-hero.js +60 -23
  108. package/dist/components/puck-block/hero-sections/fullscreen-hero-1/index.js +18 -6
  109. package/dist/components/puck-block/hero-sections/gradient-hero-1/gradient-hero.d.ts +9 -5
  110. package/dist/components/puck-block/hero-sections/gradient-hero-1/gradient-hero.js +37 -24
  111. package/dist/components/puck-block/hero-sections/gradient-hero-1/index.js +18 -15
  112. package/dist/components/puck-block/hero-sections/grid-hero-1/grid-hero.d.ts +7 -6
  113. package/dist/components/puck-block/hero-sections/grid-hero-1/grid-hero.js +7 -10
  114. package/dist/components/puck-block/hero-sections/grid-hero-1/index.js +43 -11
  115. package/dist/components/puck-block/hero-sections/hero-1/hero.d.ts +6 -4
  116. package/dist/components/puck-block/hero-sections/hero-1/hero.js +5 -7
  117. package/dist/components/puck-block/hero-sections/hero-1/index.js +4 -4
  118. package/dist/components/puck-block/hero-sections/image-hero-1/image-hero.d.ts +14 -8
  119. package/dist/components/puck-block/hero-sections/image-hero-1/image-hero.js +64 -60
  120. package/dist/components/puck-block/hero-sections/image-hero-1/index.js +16 -34
  121. package/dist/components/puck-block/hero-sections/props.d.ts +71 -0
  122. package/dist/components/puck-block/hero-sections/split-hero-1/index.js +6 -5
  123. package/dist/components/puck-block/hero-sections/split-hero-1/split-hero.d.ts +8 -8
  124. package/dist/components/puck-block/hero-sections/split-hero-1/split-hero.js +48 -47
  125. package/dist/components/puck-block/hero-sections/video-hero-1/index.js +4 -3
  126. package/dist/components/puck-block/hero-sections/video-hero-1/video-hero.d.ts +6 -2
  127. package/dist/components/puck-block/hero-sections/video-hero-1/video-hero.js +30 -22
  128. package/dist/components/puck-block/index.d.ts +15 -0
  129. package/dist/components/puck-block/location-sections/location-1/index.d.ts +5 -0
  130. package/dist/components/puck-block/location-sections/location-1/index.js +108 -0
  131. package/dist/components/puck-block/location-sections/location-1/location.d.ts +28 -0
  132. package/dist/components/puck-block/location-sections/location-1/location.js +137 -0
  133. package/dist/components/puck-block/location-sections/location-2/index.d.ts +5 -0
  134. package/dist/components/puck-block/location-sections/location-2/index.js +123 -0
  135. package/dist/components/puck-block/location-sections/location-2/location.d.ts +30 -0
  136. package/dist/components/puck-block/location-sections/location-2/location.js +131 -0
  137. package/dist/components/puck-block/location-sections/location-3/index.d.ts +5 -0
  138. package/dist/components/puck-block/location-sections/location-3/index.js +84 -0
  139. package/dist/components/puck-block/location-sections/location-3/location.d.ts +24 -0
  140. package/dist/components/puck-block/location-sections/location-3/location.js +127 -0
  141. package/dist/components/puck-block/location-sections/props.d.ts +45 -0
  142. package/dist/components/puck-block/metrics-sections/props.d.ts +43 -0
  143. package/dist/components/puck-block/metrics-sections/stats-1/index.js +6 -7
  144. package/dist/components/puck-block/metrics-sections/stats-1/stats.d.ts +7 -5
  145. package/dist/components/puck-block/metrics-sections/stats-1/stats.js +61 -55
  146. package/dist/components/puck-block/metrics-sections/stats-2/index.d.ts +5 -0
  147. package/dist/components/puck-block/metrics-sections/stats-2/index.js +76 -0
  148. package/dist/components/puck-block/metrics-sections/stats-2/stats-2.d.ts +18 -0
  149. package/dist/components/puck-block/metrics-sections/stats-2/stats-2.js +57 -0
  150. package/dist/components/puck-block/metrics-sections/stats-3/index.d.ts +5 -0
  151. package/dist/components/puck-block/metrics-sections/stats-3/index.js +86 -0
  152. package/dist/components/puck-block/metrics-sections/stats-3/stats-3.d.ts +18 -0
  153. package/dist/components/puck-block/metrics-sections/stats-3/stats-3.js +56 -0
  154. package/dist/components/puck-block/pricing-sections/comparison-1/comparison.d.ts +7 -5
  155. package/dist/components/puck-block/pricing-sections/comparison-1/comparison.js +45 -39
  156. package/dist/components/puck-block/pricing-sections/comparison-1/index.js +5 -7
  157. package/dist/components/puck-block/pricing-sections/pricing-1/index.js +10 -11
  158. package/dist/components/puck-block/pricing-sections/pricing-1/pricing.d.ts +8 -6
  159. package/dist/components/puck-block/pricing-sections/pricing-1/pricing.js +47 -35
  160. package/dist/components/puck-block/pricing-sections/pricing-2/index.d.ts +5 -0
  161. package/dist/components/puck-block/pricing-sections/pricing-2/index.js +151 -0
  162. package/dist/components/puck-block/pricing-sections/pricing-2/pricing-2.d.ts +26 -0
  163. package/dist/components/puck-block/pricing-sections/pricing-2/pricing-2.js +71 -0
  164. package/dist/components/puck-block/pricing-sections/props.d.ts +46 -0
  165. package/dist/components/puck-block/showcase-sections/before-after-1/before-after.d.ts +22 -0
  166. package/dist/components/puck-block/showcase-sections/before-after-1/before-after.js +71 -0
  167. package/dist/components/puck-block/showcase-sections/before-after-1/index.d.ts +5 -0
  168. package/dist/components/puck-block/showcase-sections/before-after-1/index.js +73 -0
  169. package/dist/components/puck-block/showcase-sections/case-study-1/case-study.d.ts +6 -2
  170. package/dist/components/puck-block/showcase-sections/case-study-1/case-study.js +30 -28
  171. package/dist/components/puck-block/showcase-sections/case-study-1/index.js +4 -3
  172. package/dist/components/puck-block/showcase-sections/props.d.ts +48 -0
  173. package/dist/components/puck-block/showcase-sections/step-by-step-1/index.js +3 -5
  174. package/dist/components/puck-block/showcase-sections/step-by-step-1/step-by-step.d.ts +6 -4
  175. package/dist/components/puck-block/showcase-sections/step-by-step-1/step-by-step.js +38 -41
  176. package/dist/components/puck-block/team-sections/props.d.ts +39 -0
  177. package/dist/components/puck-block/team-sections/team-grid-1/index.js +4 -5
  178. package/dist/components/puck-block/team-sections/team-grid-1/team-grid.d.ts +6 -4
  179. package/dist/components/puck-block/team-sections/team-grid-1/team-grid.js +27 -41
  180. package/dist/components/puck-block/team-sections/team-grid-2/index.d.ts +5 -0
  181. package/dist/components/puck-block/team-sections/team-grid-2/index.js +62 -0
  182. package/dist/components/puck-block/team-sections/team-grid-2/team-grid-2.d.ts +23 -0
  183. package/dist/components/puck-block/team-sections/team-grid-2/team-grid-2.js +44 -0
  184. package/dist/components/puck-block/team-sections/team-profiles-1/index.d.ts +5 -0
  185. package/dist/components/puck-block/team-sections/team-profiles-1/index.js +53 -0
  186. package/dist/components/puck-block/team-sections/team-profiles-1/team-profiles.d.ts +23 -0
  187. package/dist/components/puck-block/team-sections/team-profiles-1/team-profiles.js +105 -0
  188. package/dist/components/puck-block/testimonial-sections/customers-1/customers.d.ts +9 -7
  189. package/dist/components/puck-block/testimonial-sections/customers-1/customers.js +8 -11
  190. package/dist/components/puck-block/testimonial-sections/customers-1/index.js +17 -17
  191. package/dist/components/puck-block/testimonial-sections/logo-marquee-1/index.js +15 -12
  192. package/dist/components/puck-block/testimonial-sections/logo-marquee-1/logo-marquee.d.ts +7 -3
  193. package/dist/components/puck-block/testimonial-sections/logo-marquee-1/logo-marquee.js +34 -24
  194. package/dist/components/puck-block/testimonial-sections/logo-wall-1/index.d.ts +5 -0
  195. package/dist/components/puck-block/testimonial-sections/logo-wall-1/index.js +51 -0
  196. package/dist/components/puck-block/testimonial-sections/logo-wall-1/logo-wall.d.ts +17 -0
  197. package/dist/components/puck-block/testimonial-sections/logo-wall-1/logo-wall.js +55 -0
  198. package/dist/components/puck-block/testimonial-sections/props.d.ts +34 -0
  199. package/dist/components/puck-block/testimonial-sections/review-section-1/index.js +16 -15
  200. package/dist/components/puck-block/testimonial-sections/review-section-1/review-section.d.ts +8 -6
  201. package/dist/components/puck-block/testimonial-sections/review-section-1/review-section.js +25 -19
  202. package/dist/components/puck-block/testimonial-sections/testimonials-1/index.js +17 -17
  203. package/dist/components/puck-block/testimonial-sections/testimonials-1/testimonials.d.ts +8 -6
  204. package/dist/components/puck-block/testimonial-sections/testimonials-1/testimonials.js +76 -63
  205. package/dist/components/puck-block/text-sections/articles-1/articles.d.ts +7 -4
  206. package/dist/components/puck-block/text-sections/articles-1/articles.js +42 -22
  207. package/dist/components/puck-block/text-sections/articles-1/index.js +31 -19
  208. package/dist/components/puck-block/text-sections/content-section-1/content-section.d.ts +7 -5
  209. package/dist/components/puck-block/text-sections/content-section-1/content-section.js +11 -12
  210. package/dist/components/puck-block/text-sections/content-section-1/index.js +14 -14
  211. package/dist/components/puck-block/text-sections/props.d.ts +58 -0
  212. package/dist/components/puck-block/text-sections/rich-text-1/index.js +13 -15
  213. package/dist/components/puck-block/text-sections/rich-text-1/rich-text.d.ts +7 -5
  214. package/dist/components/puck-block/text-sections/rich-text-1/rich-text.js +11 -11
  215. package/dist/components/puck-block/text-sections/tab-section-1/index.js +4 -5
  216. package/dist/components/puck-block/text-sections/tab-section-1/tab-section.d.ts +6 -4
  217. package/dist/components/puck-block/text-sections/tab-section-1/tab-section.js +6 -7
  218. package/dist/components/puck-block/text-sections/timeline-1/index.js +3 -5
  219. package/dist/components/puck-block/text-sections/timeline-1/timeline.d.ts +6 -4
  220. package/dist/components/puck-block/text-sections/timeline-1/timeline.js +3 -5
  221. package/dist/components/puck-block/text-sections/two-column-1/index.js +4 -6
  222. package/dist/components/puck-block/text-sections/two-column-1/two-column.d.ts +6 -4
  223. package/dist/components/puck-block/text-sections/two-column-1/two-column.js +5 -7
  224. package/dist/components/shadcn/navigation-menu.d.ts +1 -1
  225. package/dist/components/shadcn/navigation-menu.js +33 -0
  226. package/dist/index.js +106 -75
  227. package/package.json +1 -1
@@ -0,0 +1,137 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { CompoundContainer } from "../../../puck-base/container.js";
3
+ import { CompoundButton } from "../../../puck-base/button.js";
4
+ import { cn } from "../../../../utils/css-utils.js";
5
+ const LocationActionButton = ({
6
+ label,
7
+ url,
8
+ action,
9
+ variant = "default",
10
+ size = "default",
11
+ icon = "none",
12
+ colorMode = "theme",
13
+ backgroundColor,
14
+ textColor
15
+ }) => {
16
+ if (!label) return null;
17
+ const useCustomColors = colorMode === "custom";
18
+ const styleVars = {
19
+ ...useCustomColors && backgroundColor ? { "--location-btn-bg": backgroundColor } : {},
20
+ ...useCustomColors && textColor ? { "--location-btn-text": textColor } : {}
21
+ };
22
+ return /* @__PURE__ */ jsx("span", { style: Object.keys(styleVars).length ? styleVars : void 0, children: /* @__PURE__ */ jsx(
23
+ CompoundButton,
24
+ {
25
+ label,
26
+ url,
27
+ action,
28
+ variant,
29
+ size,
30
+ icon,
31
+ className: cn(
32
+ "rounded-3xl !h-auto !px-5 !py-2.5 !text-sm !font-medium transition-opacity hover:opacity-90",
33
+ useCustomColors && backgroundColor && "!border-[var(--location-btn-bg)] !bg-[var(--location-btn-bg)] hover:!bg-[var(--location-btn-bg)]",
34
+ useCustomColors && textColor && "!text-[var(--location-btn-text)]"
35
+ )
36
+ }
37
+ ) });
38
+ };
39
+ const LocationSection = ({
40
+ heading,
41
+ description,
42
+ contentAlign = "left",
43
+ contentPosition = "left",
44
+ mapEmbedUrl,
45
+ mapTitle = "Google Maps",
46
+ mapFilter,
47
+ mapTintMode = "theme",
48
+ mapTintColor,
49
+ mapTintOpacity = 0.2,
50
+ buttons = [],
51
+ styles
52
+ }) => {
53
+ const isTextRight = contentAlign === "right";
54
+ const isContentRight = contentPosition === "right";
55
+ const showMapTint = mapTintMode !== "none" && mapTintOpacity > 0;
56
+ const mapTintBackgroundColor = mapTintMode === "custom" ? mapTintColor || void 0 : void 0;
57
+ return /* @__PURE__ */ jsx(
58
+ CompoundContainer,
59
+ {
60
+ padding: styles == null ? void 0 : styles.padding,
61
+ sectionStyle: styles == null ? void 0 : styles.sectionStyle,
62
+ backgroundColor: styles == null ? void 0 : styles.backgroundColor,
63
+ className: "relative overflow-hidden",
64
+ children: /* @__PURE__ */ jsxs(
65
+ "div",
66
+ {
67
+ className: cn(
68
+ "grid grid-cols-1 items-center gap-10 lg:grid-cols-2 lg:gap-12",
69
+ isContentRight && "lg:[direction:rtl] lg:[&>*]:[direction:ltr]"
70
+ ),
71
+ children: [
72
+ /* @__PURE__ */ jsx("div", { className: "flex w-full", children: /* @__PURE__ */ jsxs(
73
+ "div",
74
+ {
75
+ className: cn(
76
+ "flex w-full min-w-0 flex-col justify-center gap-6",
77
+ isTextRight ? "items-end text-right" : "items-start text-left"
78
+ ),
79
+ children: [
80
+ heading && /* @__PURE__ */ jsx("div", { className: "flex w-full flex-col gap-3", children: /* @__PURE__ */ jsx("h2", { className: "text-foreground whitespace-pre-line font-serif text-4xl leading-tight tracking-tighter md:text-6xl", children: heading }) }),
81
+ description ? /* @__PURE__ */ jsx(
82
+ "p",
83
+ {
84
+ className: cn(
85
+ "text-muted-foreground max-w-xl text-lg leading-relaxed tracking-tight",
86
+ isTextRight && "ml-auto"
87
+ ),
88
+ children: description
89
+ }
90
+ ) : null,
91
+ buttons.some((button) => button == null ? void 0 : button.label) && /* @__PURE__ */ jsx(
92
+ "div",
93
+ {
94
+ className: cn(
95
+ "grid grid-cols-1 gap-4 sm:flex sm:flex-row",
96
+ isTextRight ? "items-end sm:justify-end" : "items-start sm:justify-start"
97
+ ),
98
+ children: buttons.map((button, index) => /* @__PURE__ */ jsx(LocationActionButton, { ...button }, index))
99
+ }
100
+ )
101
+ ]
102
+ }
103
+ ) }),
104
+ /* @__PURE__ */ jsx("div", { className: "h-[320px] w-full overflow-hidden md:h-[400px] lg:h-[460px]", children: /* @__PURE__ */ jsxs("div", { className: "relative h-full w-full overflow-hidden rounded-3xl", children: [
105
+ mapEmbedUrl ? /* @__PURE__ */ jsx(
106
+ "iframe",
107
+ {
108
+ src: mapEmbedUrl,
109
+ title: mapTitle,
110
+ className: "h-full w-full border-0",
111
+ loading: "lazy",
112
+ referrerPolicy: "no-referrer-when-downgrade",
113
+ allowFullScreen: true,
114
+ style: { filter: mapFilter }
115
+ }
116
+ ) : /* @__PURE__ */ jsx("div", { className: "flex h-full w-full items-center justify-center bg-muted text-muted-foreground", children: "地图地址未配置" }),
117
+ showMapTint ? /* @__PURE__ */ jsx(
118
+ "div",
119
+ {
120
+ className: "bg-primary pointer-events-none absolute inset-0",
121
+ style: {
122
+ backgroundColor: mapTintBackgroundColor,
123
+ opacity: mapTintOpacity,
124
+ mixBlendMode: "color"
125
+ }
126
+ }
127
+ ) : null
128
+ ] }) })
129
+ ]
130
+ }
131
+ )
132
+ }
133
+ );
134
+ };
135
+ export {
136
+ LocationSection
137
+ };
@@ -0,0 +1,5 @@
1
+ import { ComponentConfig } from "@puckeditor/core";
2
+ import { Location2Props } from "./location";
3
+ export type { Location2Props };
4
+ export declare const conf: ComponentConfig<Location2Props>;
5
+ export default conf;
@@ -0,0 +1,123 @@
1
+ import { button } from "../../../puck-base/core/fields.js";
2
+ import { Location2 } from "./location.js";
3
+ import { createStylesDefaults, createStylesField } from "../../../puck-base/core/styles.js";
4
+ const locationButtonFields = {
5
+ ...button.objectFields,
6
+ colorMode: {
7
+ type: "select",
8
+ options: [
9
+ { label: "Theme", value: "theme" },
10
+ { label: "Custom", value: "custom" }
11
+ ]
12
+ },
13
+ backgroundColor: { type: "text" },
14
+ textColor: { type: "text" }
15
+ };
16
+ const locationButtonDefaults = {
17
+ label: "Button",
18
+ url: "",
19
+ variant: "default",
20
+ size: "default",
21
+ icon: "none",
22
+ colorMode: "theme"
23
+ };
24
+ const location2ExtraStyleFields = {
25
+ cardStyle: {
26
+ type: "radio",
27
+ label: "Card Style",
28
+ options: [
29
+ { label: "Solid", value: "solid" },
30
+ { label: "Glass", value: "glass" }
31
+ ]
32
+ },
33
+ sectionHeight: {
34
+ type: "radio",
35
+ label: "Section Height",
36
+ options: [
37
+ { label: "Compact", value: "sm" },
38
+ { label: "Medium", value: "md" },
39
+ { label: "Tall", value: "lg" }
40
+ ]
41
+ }
42
+ };
43
+ const conf = {
44
+ fields: {
45
+ heading: { type: "textarea", contentEditable: true },
46
+ description: { type: "textarea", contentEditable: true },
47
+ address: { type: "textarea", label: "Address", contentEditable: true },
48
+ contentPosition: {
49
+ type: "radio",
50
+ label: "Card Position",
51
+ options: [
52
+ { label: "Left", value: "left" },
53
+ { label: "Right", value: "right" }
54
+ ]
55
+ },
56
+ mapEmbedUrl: { type: "text", label: "Google Map Embed URL" },
57
+ mapTitle: { type: "text", label: "Map Title" },
58
+ mapFilter: { type: "text", label: "Map Filter (CSS)" },
59
+ mapTintMode: {
60
+ type: "select",
61
+ label: "Map Tint",
62
+ options: [
63
+ { label: "None", value: "none" },
64
+ { label: "Theme", value: "theme" },
65
+ { label: "Custom", value: "custom" }
66
+ ]
67
+ },
68
+ mapTintColor: { type: "text", label: "Map Tint Color" },
69
+ mapTintOpacity: {
70
+ type: "number",
71
+ label: "Map Tint Opacity",
72
+ min: 0,
73
+ max: 1,
74
+ step: 0.01
75
+ },
76
+ buttons: {
77
+ type: "array",
78
+ max: 3,
79
+ getItemSummary: (item, index = 0) => item.label || `Button ${index + 1}`,
80
+ arrayFields: locationButtonFields,
81
+ defaultItemProps: locationButtonDefaults
82
+ },
83
+ styles: createStylesField(location2ExtraStyleFields)
84
+ },
85
+ defaultProps: {
86
+ heading: "Come visit\nus today",
87
+ description: "We're in the heart of the city, easy to reach by public transport or car. Drop by any time.",
88
+ address: "123 Main Street\nNew York, NY 10001",
89
+ contentPosition: "left",
90
+ mapEmbedUrl: "https://maps.google.com/maps?q=New%20York%2C%20NY%2C%20United%20States&z=13&t=m&output=embed",
91
+ mapTitle: "Google Maps",
92
+ mapFilter: "grayscale(40%) contrast(1.05) brightness(1.0) saturate(0.85)",
93
+ mapTintMode: "none",
94
+ mapTintColor: "var(--primary)",
95
+ mapTintOpacity: 0.15,
96
+ buttons: [
97
+ {
98
+ label: "Get Directions",
99
+ url: "https://maps.google.com",
100
+ variant: "default",
101
+ size: "default",
102
+ icon: "none",
103
+ colorMode: "theme"
104
+ },
105
+ {
106
+ label: "Call Us",
107
+ url: "tel:+12345678900",
108
+ variant: "outline",
109
+ size: "default",
110
+ icon: "none",
111
+ colorMode: "theme"
112
+ }
113
+ ],
114
+ styles: createStylesDefaults({
115
+ cardStyle: "solid",
116
+ sectionHeight: "md"
117
+ })
118
+ },
119
+ render: Location2
120
+ };
121
+ export {
122
+ conf
123
+ };
@@ -0,0 +1,30 @@
1
+ import { CompoundContainerProps } from "@/components/puck-base/container";
2
+ import { CompoundButtonProps } from "@/components/puck-base/button";
3
+ interface LocationButton extends Omit<CompoundButtonProps, "label"> {
4
+ label?: string;
5
+ colorMode?: "theme" | "custom";
6
+ backgroundColor?: string;
7
+ textColor?: string;
8
+ }
9
+ export interface Location2Props {
10
+ heading?: string;
11
+ description?: string;
12
+ address?: string;
13
+ contentPosition?: "left" | "right";
14
+ mapEmbedUrl?: string;
15
+ mapTitle?: string;
16
+ mapFilter?: string;
17
+ mapTintMode?: "none" | "theme" | "custom";
18
+ mapTintColor?: string;
19
+ mapTintOpacity?: number;
20
+ buttons?: LocationButton[];
21
+ styles?: {
22
+ padding?: CompoundContainerProps["padding"];
23
+ sectionStyle?: CompoundContainerProps["sectionStyle"];
24
+ backgroundColor?: string;
25
+ cardStyle?: "solid" | "glass";
26
+ sectionHeight?: "sm" | "md" | "lg";
27
+ };
28
+ }
29
+ export declare const Location2: ({ heading, description, address, contentPosition, mapEmbedUrl, mapTitle, mapFilter, mapTintMode, mapTintColor, mapTintOpacity, buttons, styles, }: Location2Props) => import("react/jsx-runtime").JSX.Element;
30
+ export {};
@@ -0,0 +1,131 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { CompoundButton } from "../../../puck-base/button.js";
3
+ import { cn } from "../../../../utils/css-utils.js";
4
+ const ActionButton = ({
5
+ label,
6
+ url,
7
+ action,
8
+ variant = "default",
9
+ size = "default",
10
+ icon = "none",
11
+ colorMode = "theme",
12
+ backgroundColor,
13
+ textColor
14
+ }) => {
15
+ if (!label) return null;
16
+ const useCustomColors = colorMode === "custom";
17
+ const styleVars = {
18
+ ...useCustomColors && backgroundColor ? { "--loc2-btn-bg": backgroundColor } : {},
19
+ ...useCustomColors && textColor ? { "--loc2-btn-text": textColor } : {}
20
+ };
21
+ return /* @__PURE__ */ jsx("span", { style: Object.keys(styleVars).length ? styleVars : void 0, children: /* @__PURE__ */ jsx(
22
+ CompoundButton,
23
+ {
24
+ label,
25
+ url,
26
+ action,
27
+ variant,
28
+ size,
29
+ icon,
30
+ className: cn(
31
+ "transition-opacity hover:opacity-90",
32
+ useCustomColors && backgroundColor && "!border-[var(--loc2-btn-bg)] !bg-[var(--loc2-btn-bg)] hover:!bg-[var(--loc2-btn-bg)]",
33
+ useCustomColors && textColor && "!text-[var(--loc2-btn-text)]"
34
+ )
35
+ }
36
+ ) });
37
+ };
38
+ const Location2 = ({
39
+ heading,
40
+ description,
41
+ address,
42
+ contentPosition = "left",
43
+ mapEmbedUrl,
44
+ mapTitle = "Google Maps",
45
+ mapFilter,
46
+ mapTintMode = "none",
47
+ mapTintColor,
48
+ mapTintOpacity = 0.15,
49
+ buttons = [],
50
+ styles
51
+ }) => {
52
+ const isRight = contentPosition === "right";
53
+ const isGlass = (styles == null ? void 0 : styles.cardStyle) === "glass";
54
+ const showMapTint = mapTintMode !== "none" && mapTintOpacity > 0;
55
+ const tintColor = mapTintMode === "custom" ? mapTintColor || void 0 : void 0;
56
+ const heightClass = (styles == null ? void 0 : styles.sectionHeight) === "sm" ? "h-[480px]" : (styles == null ? void 0 : styles.sectionHeight) === "lg" ? "h-[75vh] min-h-[520px]" : "h-[600px]";
57
+ return /* @__PURE__ */ jsxs("div", { className: cn("relative w-full overflow-hidden", heightClass), children: [
58
+ /* @__PURE__ */ jsxs("div", { className: "absolute inset-0", children: [
59
+ mapEmbedUrl ? /* @__PURE__ */ jsx(
60
+ "iframe",
61
+ {
62
+ src: mapEmbedUrl,
63
+ title: mapTitle,
64
+ className: "h-full w-full border-0",
65
+ loading: "lazy",
66
+ referrerPolicy: "no-referrer-when-downgrade",
67
+ allowFullScreen: true,
68
+ style: { filter: mapFilter }
69
+ }
70
+ ) : /* @__PURE__ */ jsx("div", { className: "bg-muted text-muted-foreground flex h-full w-full items-center justify-center text-sm", children: "地图地址未配置" }),
71
+ showMapTint && /* @__PURE__ */ jsx(
72
+ "div",
73
+ {
74
+ className: "bg-primary pointer-events-none absolute inset-0",
75
+ style: {
76
+ backgroundColor: tintColor,
77
+ opacity: mapTintOpacity,
78
+ mixBlendMode: "color"
79
+ }
80
+ }
81
+ )
82
+ ] }),
83
+ /* @__PURE__ */ jsx("div", { className: "relative z-10 flex h-full w-full items-center px-6 md:px-12 lg:px-16", children: /* @__PURE__ */ jsx(
84
+ "div",
85
+ {
86
+ className: cn(
87
+ "w-full max-w-sm lg:max-w-md xl:max-w-lg",
88
+ isRight && "ml-auto"
89
+ ),
90
+ children: /* @__PURE__ */ jsx(
91
+ "div",
92
+ {
93
+ className: cn(
94
+ "rounded-2xl p-8 shadow-xl",
95
+ isGlass ? "border border-white/20 bg-background/75 backdrop-blur-md backdrop-saturate-150" : "bg-background"
96
+ ),
97
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-5", children: [
98
+ heading && /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2", children: /* @__PURE__ */ jsx("h2", { className: "text-foreground whitespace-pre-line font-serif text-3xl leading-tight tracking-tighter md:text-4xl", children: heading }) }),
99
+ description && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-sm leading-relaxed", children: description }),
100
+ address && /* @__PURE__ */ jsxs("div", { className: "text-foreground flex items-start gap-2 text-sm", children: [
101
+ /* @__PURE__ */ jsxs(
102
+ "svg",
103
+ {
104
+ className: "text-primary mt-0.5 shrink-0",
105
+ width: "14",
106
+ height: "14",
107
+ viewBox: "0 0 24 24",
108
+ fill: "none",
109
+ stroke: "currentColor",
110
+ strokeWidth: "2",
111
+ strokeLinecap: "round",
112
+ strokeLinejoin: "round",
113
+ children: [
114
+ /* @__PURE__ */ jsx("path", { d: "M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z" }),
115
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "10", r: "3" })
116
+ ]
117
+ }
118
+ ),
119
+ /* @__PURE__ */ jsx("span", { className: "whitespace-pre-line", children: address })
120
+ ] }),
121
+ buttons.some((button) => button == null ? void 0 : button.label) && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-3 pt-1", children: buttons.map((button, index) => /* @__PURE__ */ jsx(ActionButton, { ...button }, index)) })
122
+ ] })
123
+ }
124
+ )
125
+ }
126
+ ) })
127
+ ] });
128
+ };
129
+ export {
130
+ Location2
131
+ };
@@ -0,0 +1,5 @@
1
+ import { ComponentConfig } from "@puckeditor/core";
2
+ import { Location3Props } from "./location";
3
+ export type { Location3Props };
4
+ export declare const conf: ComponentConfig<Location3Props>;
5
+ export default conf;
@@ -0,0 +1,84 @@
1
+ import { Location3 } from "./location.js";
2
+ import { createStylesDefaults, createStylesField } from "../../../puck-base/core/styles.js";
3
+ const defaultLocation = {
4
+ name: "Downtown",
5
+ address: "123 Main Street\nNew York, NY 10001",
6
+ phone: "+1 (555) 000-0001",
7
+ hours: "Mon–Fri: 9am–6pm\nSat: 10am–4pm",
8
+ directionsUrl: "https://maps.google.com"
9
+ };
10
+ const location3ExtraStyleFields = {
11
+ mapHeight: {
12
+ type: "radio",
13
+ label: "Map Height",
14
+ options: [
15
+ { label: "Compact", value: "sm" },
16
+ { label: "Medium", value: "md" },
17
+ { label: "Tall", value: "lg" }
18
+ ]
19
+ },
20
+ columns: {
21
+ type: "radio",
22
+ label: "Grid Columns",
23
+ options: [
24
+ { label: "2 Columns", value: "2" },
25
+ { label: "3 Columns", value: "3" }
26
+ ]
27
+ }
28
+ };
29
+ const conf = {
30
+ fields: {
31
+ heading: { type: "textarea", contentEditable: true },
32
+ description: { type: "textarea", contentEditable: true },
33
+ mapEmbedUrl: { type: "text", label: "Google Map Embed URL" },
34
+ mapTitle: { type: "text", label: "Map Title" },
35
+ mapFilter: { type: "text", label: "Map Filter (CSS)" },
36
+ locations: {
37
+ type: "array",
38
+ min: 1,
39
+ max: 6,
40
+ getItemSummary: (item, index = 0) => item.name || `Location ${index + 1}`,
41
+ arrayFields: {
42
+ name: { type: "text", contentEditable: true },
43
+ address: { type: "textarea", contentEditable: true },
44
+ phone: { type: "text" },
45
+ hours: { type: "textarea", label: "Business Hours" },
46
+ directionsUrl: { type: "text", label: "Directions URL" }
47
+ },
48
+ defaultItemProps: defaultLocation
49
+ },
50
+ styles: createStylesField(location3ExtraStyleFields)
51
+ },
52
+ defaultProps: {
53
+ heading: "Find us\nnear you",
54
+ description: "Multiple convenient locations across the city to serve you better.",
55
+ mapEmbedUrl: "https://maps.google.com/maps?q=New%20York%2C%20NY%2C%20United%20States&z=11&t=m&output=embed",
56
+ mapTitle: "Google Maps",
57
+ mapFilter: "grayscale(35%) contrast(1.05) brightness(1.0)",
58
+ locations: [
59
+ defaultLocation,
60
+ {
61
+ name: "Midtown",
62
+ address: "456 Park Avenue\nNew York, NY 10022",
63
+ phone: "+1 (555) 000-0002",
64
+ hours: "Mon–Fri: 8am–7pm\nSat–Sun: 10am–5pm",
65
+ directionsUrl: "https://maps.google.com"
66
+ },
67
+ {
68
+ name: "Brooklyn",
69
+ address: "789 Atlantic Ave\nBrooklyn, NY 11217",
70
+ phone: "+1 (555) 000-0003",
71
+ hours: "Mon–Fri: 9am–6pm\nSat: 11am–4pm",
72
+ directionsUrl: "https://maps.google.com"
73
+ }
74
+ ],
75
+ styles: createStylesDefaults({
76
+ mapHeight: "md",
77
+ columns: "3"
78
+ })
79
+ },
80
+ render: Location3
81
+ };
82
+ export {
83
+ conf
84
+ };
@@ -0,0 +1,24 @@
1
+ import { CompoundContainerProps } from "@/components/puck-base/container";
2
+ export interface LocationEntry {
3
+ name: string;
4
+ address?: string;
5
+ phone?: string;
6
+ hours?: string;
7
+ directionsUrl?: string;
8
+ }
9
+ export interface Location3Props {
10
+ heading?: string;
11
+ description?: string;
12
+ mapEmbedUrl?: string;
13
+ mapTitle?: string;
14
+ mapFilter?: string;
15
+ locations: LocationEntry[];
16
+ styles?: {
17
+ padding?: CompoundContainerProps["padding"];
18
+ sectionStyle?: CompoundContainerProps["sectionStyle"];
19
+ backgroundColor?: string;
20
+ mapHeight?: "sm" | "md" | "lg";
21
+ columns?: "2" | "3";
22
+ };
23
+ }
24
+ export declare const Location3: ({ heading, description, mapEmbedUrl, mapTitle, mapFilter, locations, styles, }: Location3Props) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,127 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { CompoundContainer } from "../../../puck-base/container.js";
3
+ import { CompoundButton } from "../../../puck-base/button.js";
4
+ import { cn } from "../../../../utils/css-utils.js";
5
+ const Location3 = ({
6
+ heading,
7
+ description,
8
+ mapEmbedUrl,
9
+ mapTitle = "Google Maps",
10
+ mapFilter,
11
+ locations = [],
12
+ styles
13
+ }) => {
14
+ const mapHeight = (styles == null ? void 0 : styles.mapHeight) ?? "md";
15
+ const columns = (styles == null ? void 0 : styles.columns) ?? "3";
16
+ const mapHeightClass = mapHeight === "sm" ? "h-[220px] md:h-[260px]" : mapHeight === "lg" ? "h-[360px] md:h-[440px]" : "h-[280px] md:h-[340px]";
17
+ const colClass = columns === "2" ? "sm:grid-cols-2" : "sm:grid-cols-2 lg:grid-cols-3";
18
+ return /* @__PURE__ */ jsx(
19
+ CompoundContainer,
20
+ {
21
+ padding: styles == null ? void 0 : styles.padding,
22
+ sectionStyle: styles == null ? void 0 : styles.sectionStyle,
23
+ backgroundColor: styles == null ? void 0 : styles.backgroundColor,
24
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-10", children: [
25
+ (heading || description) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-4 text-center", children: [
26
+ heading && /* @__PURE__ */ jsx("h2", { className: "text-foreground whitespace-pre-line font-serif text-3xl leading-tight tracking-tighter md:text-5xl", children: heading }),
27
+ description && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground max-w-xl text-base leading-relaxed", children: description })
28
+ ] }),
29
+ /* @__PURE__ */ jsx("div", { className: cn("w-full overflow-hidden rounded-2xl", mapHeightClass), children: mapEmbedUrl ? /* @__PURE__ */ jsx(
30
+ "iframe",
31
+ {
32
+ src: mapEmbedUrl,
33
+ title: mapTitle,
34
+ className: "h-full w-full border-0",
35
+ loading: "lazy",
36
+ referrerPolicy: "no-referrer-when-downgrade",
37
+ allowFullScreen: true,
38
+ style: { filter: mapFilter }
39
+ }
40
+ ) : /* @__PURE__ */ jsx("div", { className: "bg-muted text-muted-foreground flex h-full w-full items-center justify-center text-sm", children: "地图地址未配置" }) }),
41
+ locations.length > 0 && /* @__PURE__ */ jsx("div", { className: cn("grid grid-cols-1 gap-5", colClass), children: locations.map((loc, i) => /* @__PURE__ */ jsxs(
42
+ "div",
43
+ {
44
+ className: "bg-card border-border flex flex-col gap-3 rounded-xl border p-6",
45
+ children: [
46
+ /* @__PURE__ */ jsx("h3", { className: "text-foreground text-lg font-semibold", children: loc.name }),
47
+ loc.address && /* @__PURE__ */ jsxs("div", { className: "text-muted-foreground flex items-start gap-2 text-sm", children: [
48
+ /* @__PURE__ */ jsxs(
49
+ "svg",
50
+ {
51
+ className: "text-primary mt-0.5 shrink-0",
52
+ width: "14",
53
+ height: "14",
54
+ viewBox: "0 0 24 24",
55
+ fill: "none",
56
+ stroke: "currentColor",
57
+ strokeWidth: "2",
58
+ strokeLinecap: "round",
59
+ strokeLinejoin: "round",
60
+ children: [
61
+ /* @__PURE__ */ jsx("path", { d: "M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z" }),
62
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "10", r: "3" })
63
+ ]
64
+ }
65
+ ),
66
+ /* @__PURE__ */ jsx("span", { className: "whitespace-pre-line", children: loc.address })
67
+ ] }),
68
+ loc.phone && /* @__PURE__ */ jsxs("div", { className: "text-muted-foreground flex items-center gap-2 text-sm", children: [
69
+ /* @__PURE__ */ jsx(
70
+ "svg",
71
+ {
72
+ className: "text-primary shrink-0",
73
+ width: "14",
74
+ height: "14",
75
+ viewBox: "0 0 24 24",
76
+ fill: "none",
77
+ stroke: "currentColor",
78
+ strokeWidth: "2",
79
+ strokeLinecap: "round",
80
+ strokeLinejoin: "round",
81
+ children: /* @__PURE__ */ jsx("path", { d: "M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07A19.5 19.5 0 0 1 4.69 14a19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 3.62 3h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 10.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 17.92Z" })
82
+ }
83
+ ),
84
+ /* @__PURE__ */ jsx("span", { children: loc.phone })
85
+ ] }),
86
+ loc.hours && /* @__PURE__ */ jsxs("div", { className: "text-muted-foreground flex items-start gap-2 text-sm", children: [
87
+ /* @__PURE__ */ jsxs(
88
+ "svg",
89
+ {
90
+ className: "text-primary mt-0.5 shrink-0",
91
+ width: "14",
92
+ height: "14",
93
+ viewBox: "0 0 24 24",
94
+ fill: "none",
95
+ stroke: "currentColor",
96
+ strokeWidth: "2",
97
+ strokeLinecap: "round",
98
+ strokeLinejoin: "round",
99
+ children: [
100
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10" }),
101
+ /* @__PURE__ */ jsx("polyline", { points: "12 6 12 12 16 14" })
102
+ ]
103
+ }
104
+ ),
105
+ /* @__PURE__ */ jsx("span", { className: "whitespace-pre-line", children: loc.hours })
106
+ ] }),
107
+ loc.directionsUrl && /* @__PURE__ */ jsx("div", { className: "mt-auto pt-2", children: /* @__PURE__ */ jsx(
108
+ CompoundButton,
109
+ {
110
+ label: "Get Directions",
111
+ url: loc.directionsUrl,
112
+ variant: "outline",
113
+ size: "sm",
114
+ icon: "map-pin"
115
+ }
116
+ ) })
117
+ ]
118
+ },
119
+ i
120
+ )) })
121
+ ] })
122
+ }
123
+ );
124
+ };
125
+ export {
126
+ Location3
127
+ };