@opensite/ui 2.8.6 → 2.8.8

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 (143) hide show
  1. package/dist/about-developer-profile.cjs +17 -10
  2. package/dist/about-developer-profile.js +17 -10
  3. package/dist/article-chapters-author.cjs +17 -10
  4. package/dist/article-chapters-author.js +17 -10
  5. package/dist/carousel-animated-sections.cjs +79 -25
  6. package/dist/carousel-animated-sections.d.cts +7 -2
  7. package/dist/carousel-animated-sections.d.ts +7 -2
  8. package/dist/carousel-animated-sections.js +79 -25
  9. package/dist/carousel-gallery-thumbnails.cjs +79 -25
  10. package/dist/carousel-gallery-thumbnails.d.cts +7 -2
  11. package/dist/carousel-gallery-thumbnails.d.ts +7 -2
  12. package/dist/carousel-gallery-thumbnails.js +79 -25
  13. package/dist/carousel-icon-sidebar.cjs +5 -4
  14. package/dist/carousel-icon-sidebar.js +5 -4
  15. package/dist/carousel-portfolio-hero.cjs +79 -25
  16. package/dist/carousel-portfolio-hero.d.cts +7 -2
  17. package/dist/carousel-portfolio-hero.d.ts +7 -2
  18. package/dist/carousel-portfolio-hero.js +79 -25
  19. package/dist/components.cjs +81 -42
  20. package/dist/components.d.cts +29 -2
  21. package/dist/components.d.ts +29 -2
  22. package/dist/components.js +81 -43
  23. package/dist/contact-map.cjs +46 -32
  24. package/dist/contact-map.js +46 -32
  25. package/dist/footer-accordion-social.cjs +17 -10
  26. package/dist/footer-accordion-social.js +17 -10
  27. package/dist/footer-animated-social.cjs +17 -10
  28. package/dist/footer-animated-social.js +17 -10
  29. package/dist/footer-brand-description.cjs +17 -10
  30. package/dist/footer-brand-description.js +17 -10
  31. package/dist/footer-brand-links-contact.cjs +17 -10
  32. package/dist/footer-brand-links-contact.js +17 -10
  33. package/dist/footer-comprehensive-links.cjs +17 -10
  34. package/dist/footer-comprehensive-links.js +17 -10
  35. package/dist/footer-contact-card.cjs +17 -10
  36. package/dist/footer-contact-card.js +17 -10
  37. package/dist/footer-cta-banner.cjs +17 -10
  38. package/dist/footer-cta-banner.js +17 -10
  39. package/dist/footer-cta-social.cjs +17 -10
  40. package/dist/footer-cta-social.js +17 -10
  41. package/dist/footer-info-cards-accordion.cjs +17 -10
  42. package/dist/footer-info-cards-accordion.js +17 -10
  43. package/dist/footer-nav-social.cjs +17 -10
  44. package/dist/footer-nav-social.js +17 -10
  45. package/dist/footer-newsletter-contact.cjs +17 -10
  46. package/dist/footer-newsletter-contact.js +17 -10
  47. package/dist/footer-newsletter-grid.cjs +17 -10
  48. package/dist/footer-newsletter-grid.js +17 -10
  49. package/dist/footer-newsletter-minimal.cjs +17 -10
  50. package/dist/footer-newsletter-minimal.js +17 -10
  51. package/dist/footer-social-apps.cjs +17 -10
  52. package/dist/footer-social-apps.js +17 -10
  53. package/dist/footer-social-newsletter.cjs +17 -10
  54. package/dist/footer-social-newsletter.js +17 -10
  55. package/dist/footer-split-image-accordion.cjs +17 -10
  56. package/dist/footer-split-image-accordion.js +17 -10
  57. package/dist/geo-map.cjs +46 -32
  58. package/dist/geo-map.js +46 -32
  59. package/dist/hero-coming-soon-countdown.cjs +17 -10
  60. package/dist/hero-coming-soon-countdown.js +17 -10
  61. package/dist/hero-video-background-dark.cjs +78 -16
  62. package/dist/hero-video-background-dark.d.cts +7 -2
  63. package/dist/hero-video-background-dark.d.ts +7 -2
  64. package/dist/hero-video-background-dark.js +78 -16
  65. package/dist/index.cjs +81 -42
  66. package/dist/index.d.cts +1 -0
  67. package/dist/index.d.ts +1 -0
  68. package/dist/index.js +81 -43
  69. package/dist/link-page-bento-layout.cjs +17 -10
  70. package/dist/link-page-bento-layout.js +17 -10
  71. package/dist/link-page-grid-cards.cjs +17 -10
  72. package/dist/link-page-grid-cards.js +17 -10
  73. package/dist/link-page-minimal-profile.cjs +17 -10
  74. package/dist/link-page-minimal-profile.js +17 -10
  75. package/dist/link-page-newsletter-social.cjs +17 -10
  76. package/dist/link-page-newsletter-social.js +17 -10
  77. package/dist/link-tree-block.cjs +17 -10
  78. package/dist/link-tree-block.js +17 -10
  79. package/dist/navbar-fullscreen-menu.cjs +17 -10
  80. package/dist/navbar-fullscreen-menu.js +17 -10
  81. package/dist/navbar-transparent-overlay.cjs +17 -10
  82. package/dist/navbar-transparent-overlay.js +17 -10
  83. package/dist/registry.cjs +967 -620
  84. package/dist/registry.js +967 -620
  85. package/dist/social-link-icon.cjs +17 -10
  86. package/dist/social-link-icon.d.cts +5 -0
  87. package/dist/social-link-icon.d.ts +5 -0
  88. package/dist/social-link-icon.js +17 -10
  89. package/dist/testimonials-bento-grid.cjs +1 -1
  90. package/dist/testimonials-bento-grid.js +1 -1
  91. package/dist/testimonials-carousel-image.cjs +16 -2
  92. package/dist/testimonials-carousel-image.d.cts +5 -1
  93. package/dist/testimonials-carousel-image.d.ts +5 -1
  94. package/dist/testimonials-carousel-image.js +16 -2
  95. package/dist/testimonials-centered-avatars.cjs +1 -1
  96. package/dist/testimonials-centered-avatars.js +1 -1
  97. package/dist/testimonials-grid-add-review.cjs +51 -29
  98. package/dist/testimonials-grid-add-review.js +51 -29
  99. package/dist/testimonials-images-helpful.cjs +181 -160
  100. package/dist/testimonials-images-helpful.d.cts +9 -1
  101. package/dist/testimonials-images-helpful.d.ts +9 -1
  102. package/dist/testimonials-images-helpful.js +181 -159
  103. package/dist/testimonials-large-quote.cjs +74 -43
  104. package/dist/testimonials-large-quote.d.cts +5 -1
  105. package/dist/testimonials-large-quote.d.ts +5 -1
  106. package/dist/testimonials-large-quote.js +74 -43
  107. package/dist/testimonials-list-verified.cjs +63 -44
  108. package/dist/testimonials-list-verified.d.cts +5 -1
  109. package/dist/testimonials-list-verified.d.ts +5 -1
  110. package/dist/testimonials-list-verified.js +64 -45
  111. package/dist/testimonials-logo-cards.cjs +55 -25
  112. package/dist/testimonials-logo-cards.d.cts +5 -1
  113. package/dist/testimonials-logo-cards.d.ts +5 -1
  114. package/dist/testimonials-logo-cards.js +55 -25
  115. package/dist/testimonials-marquee.cjs +440 -28
  116. package/dist/testimonials-marquee.js +441 -26
  117. package/dist/testimonials-masonry-grid.cjs +486 -69
  118. package/dist/testimonials-masonry-grid.d.cts +5 -1
  119. package/dist/testimonials-masonry-grid.d.ts +5 -1
  120. package/dist/testimonials-masonry-grid.js +483 -63
  121. package/dist/testimonials-mini-dividers.cjs +119 -83
  122. package/dist/testimonials-mini-dividers.d.cts +10 -6
  123. package/dist/testimonials-mini-dividers.d.ts +10 -6
  124. package/dist/testimonials-mini-dividers.js +119 -83
  125. package/dist/testimonials-minimal-numbered.cjs +9 -7
  126. package/dist/testimonials-minimal-numbered.d.cts +5 -1
  127. package/dist/testimonials-minimal-numbered.d.ts +5 -1
  128. package/dist/testimonials-minimal-numbered.js +9 -7
  129. package/dist/testimonials-parallax-number.cjs +14 -9
  130. package/dist/testimonials-parallax-number.js +14 -9
  131. package/dist/testimonials-scrolling-columns.cjs +100 -21
  132. package/dist/testimonials-scrolling-columns.js +100 -21
  133. package/dist/testimonials-simple-grid.cjs +22 -5
  134. package/dist/testimonials-simple-grid.js +22 -5
  135. package/dist/testimonials-slider-minimal.cjs +1 -1
  136. package/dist/testimonials-slider-minimal.js +1 -1
  137. package/dist/testimonials-stats-header.cjs +528 -87
  138. package/dist/testimonials-stats-header.d.cts +39 -3
  139. package/dist/testimonials-stats-header.d.ts +39 -3
  140. package/dist/testimonials-stats-header.js +523 -82
  141. package/dist/testimonials-twitter-cards.cjs +20 -12
  142. package/dist/testimonials-twitter-cards.js +20 -12
  143. package/package.json +11 -1
package/dist/index.cjs CHANGED
@@ -1041,41 +1041,55 @@ function MarkerMediaCarousel({
1041
1041
  React6__namespace.useEffect(() => {
1042
1042
  setActiveIndex(0);
1043
1043
  }, [mediaResetKey]);
1044
- const activeMediaItem = mediaItems[activeItemIndex];
1045
- const mediaType = resolveMediaType(activeMediaItem);
1046
1044
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative border-b border-border/60 bg-muted/40", children: [
1047
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-44 w-full overflow-hidden", children: mediaType === "video" ? /* @__PURE__ */ jsxRuntime.jsx(
1048
- "video",
1049
- {
1050
- className: "h-full w-full object-cover",
1051
- controls: true,
1052
- preload: "metadata",
1053
- poster: activeMediaItem.poster,
1054
- children: /* @__PURE__ */ jsxRuntime.jsx("source", { src: activeMediaItem.src })
1055
- }
1056
- ) : /* @__PURE__ */ jsxRuntime.jsx(
1057
- img.Img,
1058
- {
1059
- src: activeMediaItem.src,
1060
- alt: activeMediaItem.alt ?? "Map marker media",
1061
- className: "h-full w-full object-cover",
1062
- loading: "eager",
1063
- optixFlowConfig
1064
- }
1065
- ) }),
1045
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative aspect-video w-full overflow-hidden", children: mediaItems.map((item, index) => {
1046
+ const isActive = index === activeItemIndex;
1047
+ const mediaType = resolveMediaType(item);
1048
+ return /* @__PURE__ */ jsxRuntime.jsx(
1049
+ "div",
1050
+ {
1051
+ "aria-hidden": !isActive,
1052
+ className: cn(
1053
+ "absolute inset-0 transition-opacity duration-500 ease-in-out",
1054
+ isActive ? "opacity-100 z-[1]" : "opacity-0 z-0 pointer-events-none"
1055
+ ),
1056
+ children: mediaType === "video" ? /* @__PURE__ */ jsxRuntime.jsx(
1057
+ "video",
1058
+ {
1059
+ className: "h-full w-full object-cover",
1060
+ controls: isActive,
1061
+ preload: "metadata",
1062
+ poster: item.poster,
1063
+ tabIndex: isActive ? 0 : -1,
1064
+ children: /* @__PURE__ */ jsxRuntime.jsx("source", { src: item.src })
1065
+ }
1066
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1067
+ img.Img,
1068
+ {
1069
+ src: item.src,
1070
+ alt: item.alt ?? "Map marker media",
1071
+ className: "h-full w-full object-cover",
1072
+ loading: "eager",
1073
+ optixFlowConfig
1074
+ }
1075
+ )
1076
+ },
1077
+ normalizeId(item.id, `media-slide-${index}`)
1078
+ );
1079
+ }) }),
1066
1080
  totalItems > 1 ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1067
1081
  /* @__PURE__ */ jsxRuntime.jsx(
1068
1082
  "button",
1069
1083
  {
1070
1084
  type: "button",
1071
1085
  "aria-label": "Show previous media",
1072
- className: "absolute left-2 top-1/2 inline-flex size-8 -translate-y-1/2 items-center justify-center rounded-full bg-card text-card-foreground shadow-sm transition hover:bg-muted hover:text-muted-foreground",
1086
+ className: "absolute left-4 top-1/2 inline-flex size-10 -translate-y-1/2 items-center justify-center rounded-2xl bg-card text-card-foreground shadow-lg border-4 border-black hover:border-white hover:bg-black hover:text-white transition-all duration-500 z-[2]",
1073
1087
  onClick: () => {
1074
1088
  setActiveIndex(
1075
1089
  (current) => (current - 1 + totalItems) % totalItems
1076
1090
  );
1077
1091
  },
1078
- children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-left", size: 16 })
1092
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-left", size: 18 })
1079
1093
  }
1080
1094
  ),
1081
1095
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -1083,20 +1097,20 @@ function MarkerMediaCarousel({
1083
1097
  {
1084
1098
  type: "button",
1085
1099
  "aria-label": "Show next media",
1086
- className: "absolute right-2 top-1/2 inline-flex h-8 w-8 -translate-y-1/2 items-center justify-center rounded-full bg-card text-card-foreground shadow-sm transition hover:bg-muted hover:text-muted-foreground",
1100
+ className: "absolute right-4 top-1/2 inline-flex size-10 -translate-y-1/2 items-center justify-center rounded-2xl bg-card text-card-foreground shadow-lg border-4 border-black hover:border-white hover:bg-black hover:text-white transition-all duration-500 z-[2]",
1087
1101
  onClick: () => {
1088
1102
  setActiveIndex((current) => (current + 1) % totalItems);
1089
1103
  },
1090
- children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-right", size: 16 })
1104
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-right", size: 18 })
1091
1105
  }
1092
1106
  ),
1093
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-2 left-1/2 flex -translate-x-1/2 items-center gap-1.5", children: mediaItems.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx(
1107
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-2 left-1/2 flex -translate-x-1/2 items-center gap-1.5 z-[2]", children: mediaItems.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx(
1094
1108
  "button",
1095
1109
  {
1096
1110
  type: "button",
1097
1111
  "aria-label": `Show media item ${index + 1}`,
1098
1112
  className: cn(
1099
- "h-2 rounded-full transition-all",
1113
+ "h-2 rounded-full transition-all duration-300",
1100
1114
  index === activeItemIndex ? "w-6 bg-card" : "w-2 bg-card opacity-50 hover:opacity-100"
1101
1115
  ),
1102
1116
  onClick: () => setActiveIndex(index)
@@ -1427,9 +1441,9 @@ function GeoMap({
1427
1441
  {
1428
1442
  type: "button",
1429
1443
  "aria-label": "Close marker details",
1430
- className: "flex size-8 items-center justify-center rounded-full border border-border bg-card text-card-foreground transition hover:bg-muted hover:text-foreground absolute top-2 right-2 z-10",
1444
+ className: "\n flex size-12 items-center justify-center rounded-bl-lg rounded-br-0 rounded-t-0 bg-black text-white transition-all duration-500 absolute top-0 right-0 z-10 cursor-pointer ring-4 ring-white\n",
1431
1445
  onClick: clearSelection,
1432
- children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", size: 16 })
1446
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", size: 20 })
1433
1447
  }
1434
1448
  ),
1435
1449
  markerMediaItems.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -1451,7 +1465,7 @@ function GeoMap({
1451
1465
  {
1452
1466
  name: "lucide:map-pin",
1453
1467
  className: "opacity-50",
1454
- size: 14
1468
+ size: 18
1455
1469
  }
1456
1470
  ),
1457
1471
  typeof selectedMarker.locationLine === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -1473,7 +1487,7 @@ function GeoMap({
1473
1487
  {
1474
1488
  name: "lucide:clock",
1475
1489
  className: "opacity-50",
1476
- size: 14
1490
+ size: 18
1477
1491
  }
1478
1492
  ),
1479
1493
  typeof selectedMarker.hoursLine === "string" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium", children: selectedMarker.hoursLine }) : selectedMarker.hoursLine
@@ -1501,7 +1515,7 @@ function GeoMap({
1501
1515
  "aria-label": "Close cluster details",
1502
1516
  className: "flex size-8 items-center justify-center rounded-full border border-border bg-card text-card-foreground transition hover:bg-muted hover:text-foreground absolute top-2 right-2 z-10",
1503
1517
  onClick: clearSelection,
1504
- children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", size: 16 })
1518
+ children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", size: 20 })
1505
1519
  }
1506
1520
  ),
1507
1521
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-3 flex items-start justify-between gap-3", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
@@ -2190,6 +2204,23 @@ function PopoverContent({
2190
2204
  }
2191
2205
  ) });
2192
2206
  }
2207
+ function StarRating({
2208
+ rating,
2209
+ size = 18,
2210
+ className
2211
+ }) {
2212
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center gap-0.5", className), children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsxRuntime.jsx(
2213
+ DynamicIcon,
2214
+ {
2215
+ name: "icon-park-solid/star",
2216
+ size,
2217
+ className: cn(
2218
+ star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
2219
+ )
2220
+ },
2221
+ star
2222
+ )) });
2223
+ }
2193
2224
  var BUTTON_SIZES = {
2194
2225
  sm: { buttonSize: "size-8", iconSize: 16 },
2195
2226
  md: { buttonSize: "size-10", iconSize: 20 },
@@ -2291,6 +2322,7 @@ var SocialLinkIcon = React6__namespace.forwardRef(
2291
2322
  iconClassName,
2292
2323
  className,
2293
2324
  iconNameOverride,
2325
+ iconOnly = false,
2294
2326
  ...pressableProps
2295
2327
  }, ref) => {
2296
2328
  const platform = usePlatformFromUrl.usePlatformFromUrl(href);
@@ -2303,6 +2335,21 @@ var SocialLinkIcon = React6__namespace.forwardRef(
2303
2335
  const accessibleLabel = React6__namespace.useMemo(() => {
2304
2336
  return label || platformName;
2305
2337
  }, [label, platformName]);
2338
+ const icon = React6__namespace.useMemo(() => {
2339
+ return /* @__PURE__ */ jsxRuntime.jsx(
2340
+ DynamicIcon,
2341
+ {
2342
+ name: iconName,
2343
+ size: iconSize,
2344
+ color: iconColor,
2345
+ className: iconClassName,
2346
+ alt: accessibleLabel
2347
+ }
2348
+ );
2349
+ }, [iconName, iconSize, iconColor, iconClassName, accessibleLabel]);
2350
+ if (iconOnly) {
2351
+ return icon;
2352
+ }
2306
2353
  return /* @__PURE__ */ jsxRuntime.jsx(
2307
2354
  Pressable,
2308
2355
  {
@@ -2314,16 +2361,7 @@ var SocialLinkIcon = React6__namespace.forwardRef(
2314
2361
  className
2315
2362
  ),
2316
2363
  ...pressableProps,
2317
- children: /* @__PURE__ */ jsxRuntime.jsx(
2318
- DynamicIcon,
2319
- {
2320
- name: iconName,
2321
- size: iconSize,
2322
- color: iconColor,
2323
- className: iconClassName,
2324
- alt: accessibleLabel
2325
- }
2326
- )
2364
+ children: icon
2327
2365
  }
2328
2366
  );
2329
2367
  }
@@ -7666,6 +7704,7 @@ exports.PopoverTrigger = PopoverTrigger;
7666
7704
  exports.Pressable = Pressable;
7667
7705
  exports.Section = Section;
7668
7706
  exports.SocialLinkIcon = SocialLinkIcon;
7707
+ exports.StarRating = StarRating;
7669
7708
  exports.cn = cn;
7670
7709
  exports.getAccentColor = getAccentColor;
7671
7710
  exports.getBorderColor = getBorderColor;
package/dist/index.d.cts CHANGED
@@ -9,6 +9,7 @@ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle }
9
9
  export { Badge } from './badge.cjs';
10
10
  export { Popover, PopoverContent, PopoverTrigger } from './popover.cjs';
11
11
  export { DynamicIcon } from './dynamic-icon.cjs';
12
+ export { StarRating, StarRatingProps } from './components.cjs';
12
13
  export { CarouselPagination, CarouselPaginationProps } from './carousel-pagination.cjs';
13
14
  export { SocialLinkIcon, SocialLinkIconDynamicIconProps, SocialLinkIconProps } from './social-link-icon.cjs';
14
15
  export { PaymentPlatformIcon, PaymentPlatformIconProps, PaymentPlatformName } from './payment-platform-icon.cjs';
package/dist/index.d.ts CHANGED
@@ -9,6 +9,7 @@ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle }
9
9
  export { Badge } from './badge.js';
10
10
  export { Popover, PopoverContent, PopoverTrigger } from './popover.js';
11
11
  export { DynamicIcon } from './dynamic-icon.js';
12
+ export { StarRating, StarRatingProps } from './components.js';
12
13
  export { CarouselPagination, CarouselPaginationProps } from './carousel-pagination.js';
13
14
  export { SocialLinkIcon, SocialLinkIconDynamicIconProps, SocialLinkIconProps } from './social-link-icon.js';
14
15
  export { PaymentPlatformIcon, PaymentPlatformIconProps, PaymentPlatformName } from './payment-platform-icon.js';
package/dist/index.js CHANGED
@@ -1019,41 +1019,55 @@ function MarkerMediaCarousel({
1019
1019
  React6.useEffect(() => {
1020
1020
  setActiveIndex(0);
1021
1021
  }, [mediaResetKey]);
1022
- const activeMediaItem = mediaItems[activeItemIndex];
1023
- const mediaType = resolveMediaType(activeMediaItem);
1024
1022
  return /* @__PURE__ */ jsxs("div", { className: "relative border-b border-border/60 bg-muted/40", children: [
1025
- /* @__PURE__ */ jsx("div", { className: "relative h-44 w-full overflow-hidden", children: mediaType === "video" ? /* @__PURE__ */ jsx(
1026
- "video",
1027
- {
1028
- className: "h-full w-full object-cover",
1029
- controls: true,
1030
- preload: "metadata",
1031
- poster: activeMediaItem.poster,
1032
- children: /* @__PURE__ */ jsx("source", { src: activeMediaItem.src })
1033
- }
1034
- ) : /* @__PURE__ */ jsx(
1035
- Img,
1036
- {
1037
- src: activeMediaItem.src,
1038
- alt: activeMediaItem.alt ?? "Map marker media",
1039
- className: "h-full w-full object-cover",
1040
- loading: "eager",
1041
- optixFlowConfig
1042
- }
1043
- ) }),
1023
+ /* @__PURE__ */ jsx("div", { className: "relative aspect-video w-full overflow-hidden", children: mediaItems.map((item, index) => {
1024
+ const isActive = index === activeItemIndex;
1025
+ const mediaType = resolveMediaType(item);
1026
+ return /* @__PURE__ */ jsx(
1027
+ "div",
1028
+ {
1029
+ "aria-hidden": !isActive,
1030
+ className: cn(
1031
+ "absolute inset-0 transition-opacity duration-500 ease-in-out",
1032
+ isActive ? "opacity-100 z-[1]" : "opacity-0 z-0 pointer-events-none"
1033
+ ),
1034
+ children: mediaType === "video" ? /* @__PURE__ */ jsx(
1035
+ "video",
1036
+ {
1037
+ className: "h-full w-full object-cover",
1038
+ controls: isActive,
1039
+ preload: "metadata",
1040
+ poster: item.poster,
1041
+ tabIndex: isActive ? 0 : -1,
1042
+ children: /* @__PURE__ */ jsx("source", { src: item.src })
1043
+ }
1044
+ ) : /* @__PURE__ */ jsx(
1045
+ Img,
1046
+ {
1047
+ src: item.src,
1048
+ alt: item.alt ?? "Map marker media",
1049
+ className: "h-full w-full object-cover",
1050
+ loading: "eager",
1051
+ optixFlowConfig
1052
+ }
1053
+ )
1054
+ },
1055
+ normalizeId(item.id, `media-slide-${index}`)
1056
+ );
1057
+ }) }),
1044
1058
  totalItems > 1 ? /* @__PURE__ */ jsxs(Fragment, { children: [
1045
1059
  /* @__PURE__ */ jsx(
1046
1060
  "button",
1047
1061
  {
1048
1062
  type: "button",
1049
1063
  "aria-label": "Show previous media",
1050
- className: "absolute left-2 top-1/2 inline-flex size-8 -translate-y-1/2 items-center justify-center rounded-full bg-card text-card-foreground shadow-sm transition hover:bg-muted hover:text-muted-foreground",
1064
+ className: "absolute left-4 top-1/2 inline-flex size-10 -translate-y-1/2 items-center justify-center rounded-2xl bg-card text-card-foreground shadow-lg border-4 border-black hover:border-white hover:bg-black hover:text-white transition-all duration-500 z-[2]",
1051
1065
  onClick: () => {
1052
1066
  setActiveIndex(
1053
1067
  (current) => (current - 1 + totalItems) % totalItems
1054
1068
  );
1055
1069
  },
1056
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-left", size: 16 })
1070
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-left", size: 18 })
1057
1071
  }
1058
1072
  ),
1059
1073
  /* @__PURE__ */ jsx(
@@ -1061,20 +1075,20 @@ function MarkerMediaCarousel({
1061
1075
  {
1062
1076
  type: "button",
1063
1077
  "aria-label": "Show next media",
1064
- className: "absolute right-2 top-1/2 inline-flex h-8 w-8 -translate-y-1/2 items-center justify-center rounded-full bg-card text-card-foreground shadow-sm transition hover:bg-muted hover:text-muted-foreground",
1078
+ className: "absolute right-4 top-1/2 inline-flex size-10 -translate-y-1/2 items-center justify-center rounded-2xl bg-card text-card-foreground shadow-lg border-4 border-black hover:border-white hover:bg-black hover:text-white transition-all duration-500 z-[2]",
1065
1079
  onClick: () => {
1066
1080
  setActiveIndex((current) => (current + 1) % totalItems);
1067
1081
  },
1068
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-right", size: 16 })
1082
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-right", size: 18 })
1069
1083
  }
1070
1084
  ),
1071
- /* @__PURE__ */ jsx("div", { className: "absolute bottom-2 left-1/2 flex -translate-x-1/2 items-center gap-1.5", children: mediaItems.map((item, index) => /* @__PURE__ */ jsx(
1085
+ /* @__PURE__ */ jsx("div", { className: "absolute bottom-2 left-1/2 flex -translate-x-1/2 items-center gap-1.5 z-[2]", children: mediaItems.map((item, index) => /* @__PURE__ */ jsx(
1072
1086
  "button",
1073
1087
  {
1074
1088
  type: "button",
1075
1089
  "aria-label": `Show media item ${index + 1}`,
1076
1090
  className: cn(
1077
- "h-2 rounded-full transition-all",
1091
+ "h-2 rounded-full transition-all duration-300",
1078
1092
  index === activeItemIndex ? "w-6 bg-card" : "w-2 bg-card opacity-50 hover:opacity-100"
1079
1093
  ),
1080
1094
  onClick: () => setActiveIndex(index)
@@ -1405,9 +1419,9 @@ function GeoMap({
1405
1419
  {
1406
1420
  type: "button",
1407
1421
  "aria-label": "Close marker details",
1408
- className: "flex size-8 items-center justify-center rounded-full border border-border bg-card text-card-foreground transition hover:bg-muted hover:text-foreground absolute top-2 right-2 z-10",
1422
+ className: "\n flex size-12 items-center justify-center rounded-bl-lg rounded-br-0 rounded-t-0 bg-black text-white transition-all duration-500 absolute top-0 right-0 z-10 cursor-pointer ring-4 ring-white\n",
1409
1423
  onClick: clearSelection,
1410
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 16 })
1424
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 20 })
1411
1425
  }
1412
1426
  ),
1413
1427
  markerMediaItems.length > 0 ? /* @__PURE__ */ jsx(
@@ -1429,7 +1443,7 @@ function GeoMap({
1429
1443
  {
1430
1444
  name: "lucide:map-pin",
1431
1445
  className: "opacity-50",
1432
- size: 14
1446
+ size: 18
1433
1447
  }
1434
1448
  ),
1435
1449
  typeof selectedMarker.locationLine === "string" ? /* @__PURE__ */ jsx(
@@ -1451,7 +1465,7 @@ function GeoMap({
1451
1465
  {
1452
1466
  name: "lucide:clock",
1453
1467
  className: "opacity-50",
1454
- size: 14
1468
+ size: 18
1455
1469
  }
1456
1470
  ),
1457
1471
  typeof selectedMarker.hoursLine === "string" ? /* @__PURE__ */ jsx("div", { className: "font-medium", children: selectedMarker.hoursLine }) : selectedMarker.hoursLine
@@ -1479,7 +1493,7 @@ function GeoMap({
1479
1493
  "aria-label": "Close cluster details",
1480
1494
  className: "flex size-8 items-center justify-center rounded-full border border-border bg-card text-card-foreground transition hover:bg-muted hover:text-foreground absolute top-2 right-2 z-10",
1481
1495
  onClick: clearSelection,
1482
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 16 })
1496
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 20 })
1483
1497
  }
1484
1498
  ),
1485
1499
  /* @__PURE__ */ jsx("div", { className: "mb-3 flex items-start justify-between gap-3", children: /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
@@ -2168,6 +2182,23 @@ function PopoverContent({
2168
2182
  }
2169
2183
  ) });
2170
2184
  }
2185
+ function StarRating({
2186
+ rating,
2187
+ size = 18,
2188
+ className
2189
+ }) {
2190
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center gap-0.5", className), children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsx(
2191
+ DynamicIcon,
2192
+ {
2193
+ name: "icon-park-solid/star",
2194
+ size,
2195
+ className: cn(
2196
+ star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
2197
+ )
2198
+ },
2199
+ star
2200
+ )) });
2201
+ }
2171
2202
  var BUTTON_SIZES = {
2172
2203
  sm: { buttonSize: "size-8", iconSize: 16 },
2173
2204
  md: { buttonSize: "size-10", iconSize: 20 },
@@ -2269,6 +2300,7 @@ var SocialLinkIcon = React6.forwardRef(
2269
2300
  iconClassName,
2270
2301
  className,
2271
2302
  iconNameOverride,
2303
+ iconOnly = false,
2272
2304
  ...pressableProps
2273
2305
  }, ref) => {
2274
2306
  const platform = usePlatformFromUrl(href);
@@ -2281,6 +2313,21 @@ var SocialLinkIcon = React6.forwardRef(
2281
2313
  const accessibleLabel = React6.useMemo(() => {
2282
2314
  return label || platformName;
2283
2315
  }, [label, platformName]);
2316
+ const icon = React6.useMemo(() => {
2317
+ return /* @__PURE__ */ jsx(
2318
+ DynamicIcon,
2319
+ {
2320
+ name: iconName,
2321
+ size: iconSize,
2322
+ color: iconColor,
2323
+ className: iconClassName,
2324
+ alt: accessibleLabel
2325
+ }
2326
+ );
2327
+ }, [iconName, iconSize, iconColor, iconClassName, accessibleLabel]);
2328
+ if (iconOnly) {
2329
+ return icon;
2330
+ }
2284
2331
  return /* @__PURE__ */ jsx(
2285
2332
  Pressable,
2286
2333
  {
@@ -2292,16 +2339,7 @@ var SocialLinkIcon = React6.forwardRef(
2292
2339
  className
2293
2340
  ),
2294
2341
  ...pressableProps,
2295
- children: /* @__PURE__ */ jsx(
2296
- DynamicIcon,
2297
- {
2298
- name: iconName,
2299
- size: iconSize,
2300
- color: iconColor,
2301
- className: iconClassName,
2302
- alt: accessibleLabel
2303
- }
2304
- )
2342
+ children: icon
2305
2343
  }
2306
2344
  );
2307
2345
  }
@@ -7560,4 +7598,4 @@ var useResponsiveLayout = ({
7560
7598
  return { responsiveClassName };
7561
7599
  };
7562
7600
 
7563
- export { AboutCultureTabs, AboutExpandableValues, AboutMissionPrinciples, AboutSplitHero, AlternatingBlocks, AnimatedDialog, Badge, BannerAnnouncementDismissible, BannerCountdownSale, BannerDeliveryCountdown, BannerEventPromo, BannerFloatingOffer, BannerGdprRights, BannerPrivacyNotice, BannerPromoCta, BannerSocialFollow, BannerSurveyIncentive, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CarouselPagination, CommunityInitiatives, Container, DynamicIcon, FooterAnimatedSocial, FooterBackgroundCard, FooterBrandDescription, FooterContactCard, FooterCtaBanner, FooterCtaSocial, FooterLinksGrid, FooterNavSocial, FooterNewsletterGrid, FooterNewsletterMinimal, FooterSimpleCentered, FooterSocialApps, FooterSocialNewsletter, GeoMap, ImageSlider, MediaHoverCtas, PageHeroBanner, PaymentPlatformIcon, Popover, PopoverContent, PopoverTrigger, Pressable, Section, SocialLinkIcon, cn, getAccentColor, getBorderColor, getNestedCardBg, getNestedCardTextColor, getTextColor, useNavigation, useResponsiveLayout };
7601
+ export { AboutCultureTabs, AboutExpandableValues, AboutMissionPrinciples, AboutSplitHero, AlternatingBlocks, AnimatedDialog, Badge, BannerAnnouncementDismissible, BannerCountdownSale, BannerDeliveryCountdown, BannerEventPromo, BannerFloatingOffer, BannerGdprRights, BannerPrivacyNotice, BannerPromoCta, BannerSocialFollow, BannerSurveyIncentive, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CarouselPagination, CommunityInitiatives, Container, DynamicIcon, FooterAnimatedSocial, FooterBackgroundCard, FooterBrandDescription, FooterContactCard, FooterCtaBanner, FooterCtaSocial, FooterLinksGrid, FooterNavSocial, FooterNewsletterGrid, FooterNewsletterMinimal, FooterSimpleCentered, FooterSocialApps, FooterSocialNewsletter, GeoMap, ImageSlider, MediaHoverCtas, PageHeroBanner, PaymentPlatformIcon, Popover, PopoverContent, PopoverTrigger, Pressable, Section, SocialLinkIcon, StarRating, cn, getAccentColor, getBorderColor, getNestedCardBg, getNestedCardTextColor, getTextColor, useNavigation, useResponsiveLayout };
@@ -879,6 +879,7 @@ var SocialLinkIcon = React__namespace.forwardRef(
879
879
  iconClassName,
880
880
  className,
881
881
  iconNameOverride,
882
+ iconOnly = false,
882
883
  ...pressableProps
883
884
  }, ref) => {
884
885
  const platform = usePlatformFromUrl.usePlatformFromUrl(href);
@@ -891,6 +892,21 @@ var SocialLinkIcon = React__namespace.forwardRef(
891
892
  const accessibleLabel = React__namespace.useMemo(() => {
892
893
  return label || platformName;
893
894
  }, [label, platformName]);
895
+ const icon = React__namespace.useMemo(() => {
896
+ return /* @__PURE__ */ jsxRuntime.jsx(
897
+ DynamicIcon,
898
+ {
899
+ name: iconName,
900
+ size: iconSize,
901
+ color: iconColor,
902
+ className: iconClassName,
903
+ alt: accessibleLabel
904
+ }
905
+ );
906
+ }, [iconName, iconSize, iconColor, iconClassName, accessibleLabel]);
907
+ if (iconOnly) {
908
+ return icon;
909
+ }
894
910
  return /* @__PURE__ */ jsxRuntime.jsx(
895
911
  Pressable,
896
912
  {
@@ -902,16 +918,7 @@ var SocialLinkIcon = React__namespace.forwardRef(
902
918
  className
903
919
  ),
904
920
  ...pressableProps,
905
- children: /* @__PURE__ */ jsxRuntime.jsx(
906
- DynamicIcon,
907
- {
908
- name: iconName,
909
- size: iconSize,
910
- color: iconColor,
911
- className: iconClassName,
912
- alt: accessibleLabel
913
- }
914
- )
921
+ children: icon
915
922
  }
916
923
  );
917
924
  }
@@ -858,6 +858,7 @@ var SocialLinkIcon = React.forwardRef(
858
858
  iconClassName,
859
859
  className,
860
860
  iconNameOverride,
861
+ iconOnly = false,
861
862
  ...pressableProps
862
863
  }, ref) => {
863
864
  const platform = usePlatformFromUrl(href);
@@ -870,6 +871,21 @@ var SocialLinkIcon = React.forwardRef(
870
871
  const accessibleLabel = React.useMemo(() => {
871
872
  return label || platformName;
872
873
  }, [label, platformName]);
874
+ const icon = React.useMemo(() => {
875
+ return /* @__PURE__ */ jsx(
876
+ DynamicIcon,
877
+ {
878
+ name: iconName,
879
+ size: iconSize,
880
+ color: iconColor,
881
+ className: iconClassName,
882
+ alt: accessibleLabel
883
+ }
884
+ );
885
+ }, [iconName, iconSize, iconColor, iconClassName, accessibleLabel]);
886
+ if (iconOnly) {
887
+ return icon;
888
+ }
873
889
  return /* @__PURE__ */ jsx(
874
890
  Pressable,
875
891
  {
@@ -881,16 +897,7 @@ var SocialLinkIcon = React.forwardRef(
881
897
  className
882
898
  ),
883
899
  ...pressableProps,
884
- children: /* @__PURE__ */ jsx(
885
- DynamicIcon,
886
- {
887
- name: iconName,
888
- size: iconSize,
889
- color: iconColor,
890
- className: iconClassName,
891
- alt: accessibleLabel
892
- }
893
- )
900
+ children: icon
894
901
  }
895
902
  );
896
903
  }
@@ -879,6 +879,7 @@ var SocialLinkIcon = React__namespace.forwardRef(
879
879
  iconClassName,
880
880
  className,
881
881
  iconNameOverride,
882
+ iconOnly = false,
882
883
  ...pressableProps
883
884
  }, ref) => {
884
885
  const platform = usePlatformFromUrl.usePlatformFromUrl(href);
@@ -891,6 +892,21 @@ var SocialLinkIcon = React__namespace.forwardRef(
891
892
  const accessibleLabel = React__namespace.useMemo(() => {
892
893
  return label || platformName;
893
894
  }, [label, platformName]);
895
+ const icon = React__namespace.useMemo(() => {
896
+ return /* @__PURE__ */ jsxRuntime.jsx(
897
+ DynamicIcon,
898
+ {
899
+ name: iconName,
900
+ size: iconSize,
901
+ color: iconColor,
902
+ className: iconClassName,
903
+ alt: accessibleLabel
904
+ }
905
+ );
906
+ }, [iconName, iconSize, iconColor, iconClassName, accessibleLabel]);
907
+ if (iconOnly) {
908
+ return icon;
909
+ }
894
910
  return /* @__PURE__ */ jsxRuntime.jsx(
895
911
  Pressable,
896
912
  {
@@ -902,16 +918,7 @@ var SocialLinkIcon = React__namespace.forwardRef(
902
918
  className
903
919
  ),
904
920
  ...pressableProps,
905
- children: /* @__PURE__ */ jsxRuntime.jsx(
906
- DynamicIcon,
907
- {
908
- name: iconName,
909
- size: iconSize,
910
- color: iconColor,
911
- className: iconClassName,
912
- alt: accessibleLabel
913
- }
914
- )
921
+ children: icon
915
922
  }
916
923
  );
917
924
  }
@@ -858,6 +858,7 @@ var SocialLinkIcon = React.forwardRef(
858
858
  iconClassName,
859
859
  className,
860
860
  iconNameOverride,
861
+ iconOnly = false,
861
862
  ...pressableProps
862
863
  }, ref) => {
863
864
  const platform = usePlatformFromUrl(href);
@@ -870,6 +871,21 @@ var SocialLinkIcon = React.forwardRef(
870
871
  const accessibleLabel = React.useMemo(() => {
871
872
  return label || platformName;
872
873
  }, [label, platformName]);
874
+ const icon = React.useMemo(() => {
875
+ return /* @__PURE__ */ jsx(
876
+ DynamicIcon,
877
+ {
878
+ name: iconName,
879
+ size: iconSize,
880
+ color: iconColor,
881
+ className: iconClassName,
882
+ alt: accessibleLabel
883
+ }
884
+ );
885
+ }, [iconName, iconSize, iconColor, iconClassName, accessibleLabel]);
886
+ if (iconOnly) {
887
+ return icon;
888
+ }
873
889
  return /* @__PURE__ */ jsx(
874
890
  Pressable,
875
891
  {
@@ -881,16 +897,7 @@ var SocialLinkIcon = React.forwardRef(
881
897
  className
882
898
  ),
883
899
  ...pressableProps,
884
- children: /* @__PURE__ */ jsx(
885
- DynamicIcon,
886
- {
887
- name: iconName,
888
- size: iconSize,
889
- color: iconColor,
890
- className: iconClassName,
891
- alt: accessibleLabel
892
- }
893
- )
900
+ children: icon
894
901
  }
895
902
  );
896
903
  }