@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.
- package/dist/about-developer-profile.cjs +17 -10
- package/dist/about-developer-profile.js +17 -10
- package/dist/article-chapters-author.cjs +17 -10
- package/dist/article-chapters-author.js +17 -10
- package/dist/carousel-animated-sections.cjs +79 -25
- package/dist/carousel-animated-sections.d.cts +7 -2
- package/dist/carousel-animated-sections.d.ts +7 -2
- package/dist/carousel-animated-sections.js +79 -25
- package/dist/carousel-gallery-thumbnails.cjs +79 -25
- package/dist/carousel-gallery-thumbnails.d.cts +7 -2
- package/dist/carousel-gallery-thumbnails.d.ts +7 -2
- package/dist/carousel-gallery-thumbnails.js +79 -25
- package/dist/carousel-icon-sidebar.cjs +5 -4
- package/dist/carousel-icon-sidebar.js +5 -4
- package/dist/carousel-portfolio-hero.cjs +79 -25
- package/dist/carousel-portfolio-hero.d.cts +7 -2
- package/dist/carousel-portfolio-hero.d.ts +7 -2
- package/dist/carousel-portfolio-hero.js +79 -25
- package/dist/components.cjs +81 -42
- package/dist/components.d.cts +29 -2
- package/dist/components.d.ts +29 -2
- package/dist/components.js +81 -43
- package/dist/contact-map.cjs +46 -32
- package/dist/contact-map.js +46 -32
- package/dist/footer-accordion-social.cjs +17 -10
- package/dist/footer-accordion-social.js +17 -10
- package/dist/footer-animated-social.cjs +17 -10
- package/dist/footer-animated-social.js +17 -10
- package/dist/footer-brand-description.cjs +17 -10
- package/dist/footer-brand-description.js +17 -10
- package/dist/footer-brand-links-contact.cjs +17 -10
- package/dist/footer-brand-links-contact.js +17 -10
- package/dist/footer-comprehensive-links.cjs +17 -10
- package/dist/footer-comprehensive-links.js +17 -10
- package/dist/footer-contact-card.cjs +17 -10
- package/dist/footer-contact-card.js +17 -10
- package/dist/footer-cta-banner.cjs +17 -10
- package/dist/footer-cta-banner.js +17 -10
- package/dist/footer-cta-social.cjs +17 -10
- package/dist/footer-cta-social.js +17 -10
- package/dist/footer-info-cards-accordion.cjs +17 -10
- package/dist/footer-info-cards-accordion.js +17 -10
- package/dist/footer-nav-social.cjs +17 -10
- package/dist/footer-nav-social.js +17 -10
- package/dist/footer-newsletter-contact.cjs +17 -10
- package/dist/footer-newsletter-contact.js +17 -10
- package/dist/footer-newsletter-grid.cjs +17 -10
- package/dist/footer-newsletter-grid.js +17 -10
- package/dist/footer-newsletter-minimal.cjs +17 -10
- package/dist/footer-newsletter-minimal.js +17 -10
- package/dist/footer-social-apps.cjs +17 -10
- package/dist/footer-social-apps.js +17 -10
- package/dist/footer-social-newsletter.cjs +17 -10
- package/dist/footer-social-newsletter.js +17 -10
- package/dist/footer-split-image-accordion.cjs +17 -10
- package/dist/footer-split-image-accordion.js +17 -10
- package/dist/geo-map.cjs +46 -32
- package/dist/geo-map.js +46 -32
- package/dist/hero-coming-soon-countdown.cjs +17 -10
- package/dist/hero-coming-soon-countdown.js +17 -10
- package/dist/hero-video-background-dark.cjs +78 -16
- package/dist/hero-video-background-dark.d.cts +7 -2
- package/dist/hero-video-background-dark.d.ts +7 -2
- package/dist/hero-video-background-dark.js +78 -16
- package/dist/index.cjs +81 -42
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +81 -43
- package/dist/link-page-bento-layout.cjs +17 -10
- package/dist/link-page-bento-layout.js +17 -10
- package/dist/link-page-grid-cards.cjs +17 -10
- package/dist/link-page-grid-cards.js +17 -10
- package/dist/link-page-minimal-profile.cjs +17 -10
- package/dist/link-page-minimal-profile.js +17 -10
- package/dist/link-page-newsletter-social.cjs +17 -10
- package/dist/link-page-newsletter-social.js +17 -10
- package/dist/link-tree-block.cjs +17 -10
- package/dist/link-tree-block.js +17 -10
- package/dist/navbar-fullscreen-menu.cjs +17 -10
- package/dist/navbar-fullscreen-menu.js +17 -10
- package/dist/navbar-transparent-overlay.cjs +17 -10
- package/dist/navbar-transparent-overlay.js +17 -10
- package/dist/registry.cjs +967 -620
- package/dist/registry.js +967 -620
- package/dist/social-link-icon.cjs +17 -10
- package/dist/social-link-icon.d.cts +5 -0
- package/dist/social-link-icon.d.ts +5 -0
- package/dist/social-link-icon.js +17 -10
- package/dist/testimonials-bento-grid.cjs +1 -1
- package/dist/testimonials-bento-grid.js +1 -1
- package/dist/testimonials-carousel-image.cjs +16 -2
- package/dist/testimonials-carousel-image.d.cts +5 -1
- package/dist/testimonials-carousel-image.d.ts +5 -1
- package/dist/testimonials-carousel-image.js +16 -2
- package/dist/testimonials-centered-avatars.cjs +1 -1
- package/dist/testimonials-centered-avatars.js +1 -1
- package/dist/testimonials-grid-add-review.cjs +51 -29
- package/dist/testimonials-grid-add-review.js +51 -29
- package/dist/testimonials-images-helpful.cjs +181 -160
- package/dist/testimonials-images-helpful.d.cts +9 -1
- package/dist/testimonials-images-helpful.d.ts +9 -1
- package/dist/testimonials-images-helpful.js +181 -159
- package/dist/testimonials-large-quote.cjs +74 -43
- package/dist/testimonials-large-quote.d.cts +5 -1
- package/dist/testimonials-large-quote.d.ts +5 -1
- package/dist/testimonials-large-quote.js +74 -43
- package/dist/testimonials-list-verified.cjs +63 -44
- package/dist/testimonials-list-verified.d.cts +5 -1
- package/dist/testimonials-list-verified.d.ts +5 -1
- package/dist/testimonials-list-verified.js +64 -45
- package/dist/testimonials-logo-cards.cjs +55 -25
- package/dist/testimonials-logo-cards.d.cts +5 -1
- package/dist/testimonials-logo-cards.d.ts +5 -1
- package/dist/testimonials-logo-cards.js +55 -25
- package/dist/testimonials-marquee.cjs +440 -28
- package/dist/testimonials-marquee.js +441 -26
- package/dist/testimonials-masonry-grid.cjs +486 -69
- package/dist/testimonials-masonry-grid.d.cts +5 -1
- package/dist/testimonials-masonry-grid.d.ts +5 -1
- package/dist/testimonials-masonry-grid.js +483 -63
- package/dist/testimonials-mini-dividers.cjs +119 -83
- package/dist/testimonials-mini-dividers.d.cts +10 -6
- package/dist/testimonials-mini-dividers.d.ts +10 -6
- package/dist/testimonials-mini-dividers.js +119 -83
- package/dist/testimonials-minimal-numbered.cjs +9 -7
- package/dist/testimonials-minimal-numbered.d.cts +5 -1
- package/dist/testimonials-minimal-numbered.d.ts +5 -1
- package/dist/testimonials-minimal-numbered.js +9 -7
- package/dist/testimonials-parallax-number.cjs +14 -9
- package/dist/testimonials-parallax-number.js +14 -9
- package/dist/testimonials-scrolling-columns.cjs +100 -21
- package/dist/testimonials-scrolling-columns.js +100 -21
- package/dist/testimonials-simple-grid.cjs +22 -5
- package/dist/testimonials-simple-grid.js +22 -5
- package/dist/testimonials-slider-minimal.cjs +1 -1
- package/dist/testimonials-slider-minimal.js +1 -1
- package/dist/testimonials-stats-header.cjs +528 -87
- package/dist/testimonials-stats-header.d.cts +39 -3
- package/dist/testimonials-stats-header.d.ts +39 -3
- package/dist/testimonials-stats-header.js +523 -82
- package/dist/testimonials-twitter-cards.cjs +20 -12
- package/dist/testimonials-twitter-cards.js +20 -12
- package/package.json +11 -1
package/dist/components.cjs
CHANGED
|
@@ -980,41 +980,55 @@ function MarkerMediaCarousel({
|
|
|
980
980
|
React6__namespace.useEffect(() => {
|
|
981
981
|
setActiveIndex(0);
|
|
982
982
|
}, [mediaResetKey]);
|
|
983
|
-
const activeMediaItem = mediaItems[activeItemIndex];
|
|
984
|
-
const mediaType = resolveMediaType(activeMediaItem);
|
|
985
983
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative border-b border-border/60 bg-muted/40", children: [
|
|
986
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
984
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative aspect-video w-full overflow-hidden", children: mediaItems.map((item, index) => {
|
|
985
|
+
const isActive = index === activeItemIndex;
|
|
986
|
+
const mediaType = resolveMediaType(item);
|
|
987
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
988
|
+
"div",
|
|
989
|
+
{
|
|
990
|
+
"aria-hidden": !isActive,
|
|
991
|
+
className: cn(
|
|
992
|
+
"absolute inset-0 transition-opacity duration-500 ease-in-out",
|
|
993
|
+
isActive ? "opacity-100 z-[1]" : "opacity-0 z-0 pointer-events-none"
|
|
994
|
+
),
|
|
995
|
+
children: mediaType === "video" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
996
|
+
"video",
|
|
997
|
+
{
|
|
998
|
+
className: "h-full w-full object-cover",
|
|
999
|
+
controls: isActive,
|
|
1000
|
+
preload: "metadata",
|
|
1001
|
+
poster: item.poster,
|
|
1002
|
+
tabIndex: isActive ? 0 : -1,
|
|
1003
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("source", { src: item.src })
|
|
1004
|
+
}
|
|
1005
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1006
|
+
img.Img,
|
|
1007
|
+
{
|
|
1008
|
+
src: item.src,
|
|
1009
|
+
alt: item.alt ?? "Map marker media",
|
|
1010
|
+
className: "h-full w-full object-cover",
|
|
1011
|
+
loading: "eager",
|
|
1012
|
+
optixFlowConfig
|
|
1013
|
+
}
|
|
1014
|
+
)
|
|
1015
|
+
},
|
|
1016
|
+
normalizeId(item.id, `media-slide-${index}`)
|
|
1017
|
+
);
|
|
1018
|
+
}) }),
|
|
1005
1019
|
totalItems > 1 ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1006
1020
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1007
1021
|
"button",
|
|
1008
1022
|
{
|
|
1009
1023
|
type: "button",
|
|
1010
1024
|
"aria-label": "Show previous media",
|
|
1011
|
-
className: "absolute left-
|
|
1025
|
+
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]",
|
|
1012
1026
|
onClick: () => {
|
|
1013
1027
|
setActiveIndex(
|
|
1014
1028
|
(current) => (current - 1 + totalItems) % totalItems
|
|
1015
1029
|
);
|
|
1016
1030
|
},
|
|
1017
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-left", size:
|
|
1031
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-left", size: 18 })
|
|
1018
1032
|
}
|
|
1019
1033
|
),
|
|
1020
1034
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1022,20 +1036,20 @@ function MarkerMediaCarousel({
|
|
|
1022
1036
|
{
|
|
1023
1037
|
type: "button",
|
|
1024
1038
|
"aria-label": "Show next media",
|
|
1025
|
-
className: "absolute right-
|
|
1039
|
+
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]",
|
|
1026
1040
|
onClick: () => {
|
|
1027
1041
|
setActiveIndex((current) => (current + 1) % totalItems);
|
|
1028
1042
|
},
|
|
1029
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-right", size:
|
|
1043
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-right", size: 18 })
|
|
1030
1044
|
}
|
|
1031
1045
|
),
|
|
1032
|
-
/* @__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(
|
|
1046
|
+
/* @__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(
|
|
1033
1047
|
"button",
|
|
1034
1048
|
{
|
|
1035
1049
|
type: "button",
|
|
1036
1050
|
"aria-label": `Show media item ${index + 1}`,
|
|
1037
1051
|
className: cn(
|
|
1038
|
-
"h-2 rounded-full transition-all",
|
|
1052
|
+
"h-2 rounded-full transition-all duration-300",
|
|
1039
1053
|
index === activeItemIndex ? "w-6 bg-card" : "w-2 bg-card opacity-50 hover:opacity-100"
|
|
1040
1054
|
),
|
|
1041
1055
|
onClick: () => setActiveIndex(index)
|
|
@@ -1366,9 +1380,9 @@ function GeoMap({
|
|
|
1366
1380
|
{
|
|
1367
1381
|
type: "button",
|
|
1368
1382
|
"aria-label": "Close marker details",
|
|
1369
|
-
className: "flex size-
|
|
1383
|
+
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",
|
|
1370
1384
|
onClick: clearSelection,
|
|
1371
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", size:
|
|
1385
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", size: 20 })
|
|
1372
1386
|
}
|
|
1373
1387
|
),
|
|
1374
1388
|
markerMediaItems.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1390,7 +1404,7 @@ function GeoMap({
|
|
|
1390
1404
|
{
|
|
1391
1405
|
name: "lucide:map-pin",
|
|
1392
1406
|
className: "opacity-50",
|
|
1393
|
-
size:
|
|
1407
|
+
size: 18
|
|
1394
1408
|
}
|
|
1395
1409
|
),
|
|
1396
1410
|
typeof selectedMarker.locationLine === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1412,7 +1426,7 @@ function GeoMap({
|
|
|
1412
1426
|
{
|
|
1413
1427
|
name: "lucide:clock",
|
|
1414
1428
|
className: "opacity-50",
|
|
1415
|
-
size:
|
|
1429
|
+
size: 18
|
|
1416
1430
|
}
|
|
1417
1431
|
),
|
|
1418
1432
|
typeof selectedMarker.hoursLine === "string" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium", children: selectedMarker.hoursLine }) : selectedMarker.hoursLine
|
|
@@ -1440,7 +1454,7 @@ function GeoMap({
|
|
|
1440
1454
|
"aria-label": "Close cluster details",
|
|
1441
1455
|
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",
|
|
1442
1456
|
onClick: clearSelection,
|
|
1443
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", size:
|
|
1457
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", size: 20 })
|
|
1444
1458
|
}
|
|
1445
1459
|
),
|
|
1446
1460
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-3 flex items-start justify-between gap-3", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
|
|
@@ -2129,6 +2143,23 @@ function PopoverContent({
|
|
|
2129
2143
|
}
|
|
2130
2144
|
) });
|
|
2131
2145
|
}
|
|
2146
|
+
function StarRating({
|
|
2147
|
+
rating,
|
|
2148
|
+
size = 18,
|
|
2149
|
+
className
|
|
2150
|
+
}) {
|
|
2151
|
+
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(
|
|
2152
|
+
DynamicIcon,
|
|
2153
|
+
{
|
|
2154
|
+
name: "icon-park-solid/star",
|
|
2155
|
+
size,
|
|
2156
|
+
className: cn(
|
|
2157
|
+
star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
|
|
2158
|
+
)
|
|
2159
|
+
},
|
|
2160
|
+
star
|
|
2161
|
+
)) });
|
|
2162
|
+
}
|
|
2132
2163
|
var BUTTON_SIZES = {
|
|
2133
2164
|
sm: { buttonSize: "size-8", iconSize: 16 },
|
|
2134
2165
|
md: { buttonSize: "size-10", iconSize: 20 },
|
|
@@ -2230,6 +2261,7 @@ var SocialLinkIcon = React6__namespace.forwardRef(
|
|
|
2230
2261
|
iconClassName,
|
|
2231
2262
|
className,
|
|
2232
2263
|
iconNameOverride,
|
|
2264
|
+
iconOnly = false,
|
|
2233
2265
|
...pressableProps
|
|
2234
2266
|
}, ref) => {
|
|
2235
2267
|
const platform = usePlatformFromUrl.usePlatformFromUrl(href);
|
|
@@ -2242,6 +2274,21 @@ var SocialLinkIcon = React6__namespace.forwardRef(
|
|
|
2242
2274
|
const accessibleLabel = React6__namespace.useMemo(() => {
|
|
2243
2275
|
return label || platformName;
|
|
2244
2276
|
}, [label, platformName]);
|
|
2277
|
+
const icon = React6__namespace.useMemo(() => {
|
|
2278
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2279
|
+
DynamicIcon,
|
|
2280
|
+
{
|
|
2281
|
+
name: iconName,
|
|
2282
|
+
size: iconSize,
|
|
2283
|
+
color: iconColor,
|
|
2284
|
+
className: iconClassName,
|
|
2285
|
+
alt: accessibleLabel
|
|
2286
|
+
}
|
|
2287
|
+
);
|
|
2288
|
+
}, [iconName, iconSize, iconColor, iconClassName, accessibleLabel]);
|
|
2289
|
+
if (iconOnly) {
|
|
2290
|
+
return icon;
|
|
2291
|
+
}
|
|
2245
2292
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2246
2293
|
Pressable,
|
|
2247
2294
|
{
|
|
@@ -2253,16 +2300,7 @@ var SocialLinkIcon = React6__namespace.forwardRef(
|
|
|
2253
2300
|
className
|
|
2254
2301
|
),
|
|
2255
2302
|
...pressableProps,
|
|
2256
|
-
children:
|
|
2257
|
-
DynamicIcon,
|
|
2258
|
-
{
|
|
2259
|
-
name: iconName,
|
|
2260
|
-
size: iconSize,
|
|
2261
|
-
color: iconColor,
|
|
2262
|
-
className: iconClassName,
|
|
2263
|
-
alt: accessibleLabel
|
|
2264
|
-
}
|
|
2265
|
-
)
|
|
2303
|
+
children: icon
|
|
2266
2304
|
}
|
|
2267
2305
|
);
|
|
2268
2306
|
}
|
|
@@ -7563,3 +7601,4 @@ exports.PopoverTrigger = PopoverTrigger;
|
|
|
7563
7601
|
exports.Pressable = Pressable;
|
|
7564
7602
|
exports.Section = Section;
|
|
7565
7603
|
exports.SocialLinkIcon = SocialLinkIcon;
|
|
7604
|
+
exports.StarRating = StarRating;
|
package/dist/components.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
|
+
import * as React from 'react';
|
|
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';
|
|
@@ -40,14 +41,40 @@ export { FooterNewsletterMinimal } from './footer-newsletter-minimal.cjs';
|
|
|
40
41
|
export { FooterCtaSocial } from './footer-cta-social.cjs';
|
|
41
42
|
export { FooterNavSocial } from './footer-nav-social.cjs';
|
|
42
43
|
export { SocialPlatformName } from '@opensite/hooks/usePlatformFromUrl';
|
|
43
|
-
import 'react';
|
|
44
|
-
import '@page-speed/maps';
|
|
45
44
|
import './blocks-BtDAbw8d.cjs';
|
|
46
45
|
import 'class-variance-authority';
|
|
47
46
|
import './button-variants-8mtEHxev.cjs';
|
|
48
47
|
import 'class-variance-authority/types';
|
|
49
48
|
import 'react/jsx-runtime';
|
|
49
|
+
import '@page-speed/maps';
|
|
50
50
|
import '@radix-ui/react-popover';
|
|
51
51
|
import '@page-speed/icon';
|
|
52
52
|
import './types-Cs1jk79n.cjs';
|
|
53
53
|
import '@page-speed/forms/integration';
|
|
54
|
+
|
|
55
|
+
interface StarRatingProps {
|
|
56
|
+
/**
|
|
57
|
+
* Star rating value (1-5)
|
|
58
|
+
*/
|
|
59
|
+
rating: number;
|
|
60
|
+
/**
|
|
61
|
+
* Icon size in pixels
|
|
62
|
+
*/
|
|
63
|
+
size?: number;
|
|
64
|
+
/**
|
|
65
|
+
* Additional CSS classes for the container
|
|
66
|
+
*/
|
|
67
|
+
className?: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* StarRating - Displays a 1-5 star rating using filled/muted star icons.
|
|
71
|
+
* Uses CSS variable-based colors (primary/muted) for theme compatibility.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```tsx
|
|
75
|
+
* <StarRating rating={4} size={18} />
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
declare function StarRating({ rating, size, className, }: StarRatingProps): React.JSX.Element;
|
|
79
|
+
|
|
80
|
+
export { StarRating, type StarRatingProps };
|
package/dist/components.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
|
+
import * as React from 'react';
|
|
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';
|
|
@@ -40,14 +41,40 @@ export { FooterNewsletterMinimal } from './footer-newsletter-minimal.js';
|
|
|
40
41
|
export { FooterCtaSocial } from './footer-cta-social.js';
|
|
41
42
|
export { FooterNavSocial } from './footer-nav-social.js';
|
|
42
43
|
export { SocialPlatformName } from '@opensite/hooks/usePlatformFromUrl';
|
|
43
|
-
import 'react';
|
|
44
|
-
import '@page-speed/maps';
|
|
45
44
|
import './blocks-BlWXj9GI.js';
|
|
46
45
|
import 'class-variance-authority';
|
|
47
46
|
import './button-variants-8mtEHxev.js';
|
|
48
47
|
import 'class-variance-authority/types';
|
|
49
48
|
import 'react/jsx-runtime';
|
|
49
|
+
import '@page-speed/maps';
|
|
50
50
|
import '@radix-ui/react-popover';
|
|
51
51
|
import '@page-speed/icon';
|
|
52
52
|
import './types-Cs1jk79n.js';
|
|
53
53
|
import '@page-speed/forms/integration';
|
|
54
|
+
|
|
55
|
+
interface StarRatingProps {
|
|
56
|
+
/**
|
|
57
|
+
* Star rating value (1-5)
|
|
58
|
+
*/
|
|
59
|
+
rating: number;
|
|
60
|
+
/**
|
|
61
|
+
* Icon size in pixels
|
|
62
|
+
*/
|
|
63
|
+
size?: number;
|
|
64
|
+
/**
|
|
65
|
+
* Additional CSS classes for the container
|
|
66
|
+
*/
|
|
67
|
+
className?: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* StarRating - Displays a 1-5 star rating using filled/muted star icons.
|
|
71
|
+
* Uses CSS variable-based colors (primary/muted) for theme compatibility.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```tsx
|
|
75
|
+
* <StarRating rating={4} size={18} />
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
declare function StarRating({ rating, size, className, }: StarRatingProps): React.JSX.Element;
|
|
79
|
+
|
|
80
|
+
export { StarRating, type StarRatingProps };
|
package/dist/components.js
CHANGED
|
@@ -957,41 +957,55 @@ function MarkerMediaCarousel({
|
|
|
957
957
|
React6.useEffect(() => {
|
|
958
958
|
setActiveIndex(0);
|
|
959
959
|
}, [mediaResetKey]);
|
|
960
|
-
const activeMediaItem = mediaItems[activeItemIndex];
|
|
961
|
-
const mediaType = resolveMediaType(activeMediaItem);
|
|
962
960
|
return /* @__PURE__ */ jsxs("div", { className: "relative border-b border-border/60 bg-muted/40", children: [
|
|
963
|
-
/* @__PURE__ */ jsx("div", { className: "relative
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
961
|
+
/* @__PURE__ */ jsx("div", { className: "relative aspect-video w-full overflow-hidden", children: mediaItems.map((item, index) => {
|
|
962
|
+
const isActive = index === activeItemIndex;
|
|
963
|
+
const mediaType = resolveMediaType(item);
|
|
964
|
+
return /* @__PURE__ */ jsx(
|
|
965
|
+
"div",
|
|
966
|
+
{
|
|
967
|
+
"aria-hidden": !isActive,
|
|
968
|
+
className: cn(
|
|
969
|
+
"absolute inset-0 transition-opacity duration-500 ease-in-out",
|
|
970
|
+
isActive ? "opacity-100 z-[1]" : "opacity-0 z-0 pointer-events-none"
|
|
971
|
+
),
|
|
972
|
+
children: mediaType === "video" ? /* @__PURE__ */ jsx(
|
|
973
|
+
"video",
|
|
974
|
+
{
|
|
975
|
+
className: "h-full w-full object-cover",
|
|
976
|
+
controls: isActive,
|
|
977
|
+
preload: "metadata",
|
|
978
|
+
poster: item.poster,
|
|
979
|
+
tabIndex: isActive ? 0 : -1,
|
|
980
|
+
children: /* @__PURE__ */ jsx("source", { src: item.src })
|
|
981
|
+
}
|
|
982
|
+
) : /* @__PURE__ */ jsx(
|
|
983
|
+
Img,
|
|
984
|
+
{
|
|
985
|
+
src: item.src,
|
|
986
|
+
alt: item.alt ?? "Map marker media",
|
|
987
|
+
className: "h-full w-full object-cover",
|
|
988
|
+
loading: "eager",
|
|
989
|
+
optixFlowConfig
|
|
990
|
+
}
|
|
991
|
+
)
|
|
992
|
+
},
|
|
993
|
+
normalizeId(item.id, `media-slide-${index}`)
|
|
994
|
+
);
|
|
995
|
+
}) }),
|
|
982
996
|
totalItems > 1 ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
983
997
|
/* @__PURE__ */ jsx(
|
|
984
998
|
"button",
|
|
985
999
|
{
|
|
986
1000
|
type: "button",
|
|
987
1001
|
"aria-label": "Show previous media",
|
|
988
|
-
className: "absolute left-
|
|
1002
|
+
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]",
|
|
989
1003
|
onClick: () => {
|
|
990
1004
|
setActiveIndex(
|
|
991
1005
|
(current) => (current - 1 + totalItems) % totalItems
|
|
992
1006
|
);
|
|
993
1007
|
},
|
|
994
|
-
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-left", size:
|
|
1008
|
+
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-left", size: 18 })
|
|
995
1009
|
}
|
|
996
1010
|
),
|
|
997
1011
|
/* @__PURE__ */ jsx(
|
|
@@ -999,20 +1013,20 @@ function MarkerMediaCarousel({
|
|
|
999
1013
|
{
|
|
1000
1014
|
type: "button",
|
|
1001
1015
|
"aria-label": "Show next media",
|
|
1002
|
-
className: "absolute right-
|
|
1016
|
+
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]",
|
|
1003
1017
|
onClick: () => {
|
|
1004
1018
|
setActiveIndex((current) => (current + 1) % totalItems);
|
|
1005
1019
|
},
|
|
1006
|
-
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-right", size:
|
|
1020
|
+
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-right", size: 18 })
|
|
1007
1021
|
}
|
|
1008
1022
|
),
|
|
1009
|
-
/* @__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(
|
|
1023
|
+
/* @__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(
|
|
1010
1024
|
"button",
|
|
1011
1025
|
{
|
|
1012
1026
|
type: "button",
|
|
1013
1027
|
"aria-label": `Show media item ${index + 1}`,
|
|
1014
1028
|
className: cn(
|
|
1015
|
-
"h-2 rounded-full transition-all",
|
|
1029
|
+
"h-2 rounded-full transition-all duration-300",
|
|
1016
1030
|
index === activeItemIndex ? "w-6 bg-card" : "w-2 bg-card opacity-50 hover:opacity-100"
|
|
1017
1031
|
),
|
|
1018
1032
|
onClick: () => setActiveIndex(index)
|
|
@@ -1343,9 +1357,9 @@ function GeoMap({
|
|
|
1343
1357
|
{
|
|
1344
1358
|
type: "button",
|
|
1345
1359
|
"aria-label": "Close marker details",
|
|
1346
|
-
className: "flex size-
|
|
1360
|
+
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",
|
|
1347
1361
|
onClick: clearSelection,
|
|
1348
|
-
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size:
|
|
1362
|
+
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 20 })
|
|
1349
1363
|
}
|
|
1350
1364
|
),
|
|
1351
1365
|
markerMediaItems.length > 0 ? /* @__PURE__ */ jsx(
|
|
@@ -1367,7 +1381,7 @@ function GeoMap({
|
|
|
1367
1381
|
{
|
|
1368
1382
|
name: "lucide:map-pin",
|
|
1369
1383
|
className: "opacity-50",
|
|
1370
|
-
size:
|
|
1384
|
+
size: 18
|
|
1371
1385
|
}
|
|
1372
1386
|
),
|
|
1373
1387
|
typeof selectedMarker.locationLine === "string" ? /* @__PURE__ */ jsx(
|
|
@@ -1389,7 +1403,7 @@ function GeoMap({
|
|
|
1389
1403
|
{
|
|
1390
1404
|
name: "lucide:clock",
|
|
1391
1405
|
className: "opacity-50",
|
|
1392
|
-
size:
|
|
1406
|
+
size: 18
|
|
1393
1407
|
}
|
|
1394
1408
|
),
|
|
1395
1409
|
typeof selectedMarker.hoursLine === "string" ? /* @__PURE__ */ jsx("div", { className: "font-medium", children: selectedMarker.hoursLine }) : selectedMarker.hoursLine
|
|
@@ -1417,7 +1431,7 @@ function GeoMap({
|
|
|
1417
1431
|
"aria-label": "Close cluster details",
|
|
1418
1432
|
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",
|
|
1419
1433
|
onClick: clearSelection,
|
|
1420
|
-
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size:
|
|
1434
|
+
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 20 })
|
|
1421
1435
|
}
|
|
1422
1436
|
),
|
|
1423
1437
|
/* @__PURE__ */ jsx("div", { className: "mb-3 flex items-start justify-between gap-3", children: /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
@@ -2106,6 +2120,23 @@ function PopoverContent({
|
|
|
2106
2120
|
}
|
|
2107
2121
|
) });
|
|
2108
2122
|
}
|
|
2123
|
+
function StarRating({
|
|
2124
|
+
rating,
|
|
2125
|
+
size = 18,
|
|
2126
|
+
className
|
|
2127
|
+
}) {
|
|
2128
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex items-center gap-0.5", className), children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsx(
|
|
2129
|
+
DynamicIcon,
|
|
2130
|
+
{
|
|
2131
|
+
name: "icon-park-solid/star",
|
|
2132
|
+
size,
|
|
2133
|
+
className: cn(
|
|
2134
|
+
star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
|
|
2135
|
+
)
|
|
2136
|
+
},
|
|
2137
|
+
star
|
|
2138
|
+
)) });
|
|
2139
|
+
}
|
|
2109
2140
|
var BUTTON_SIZES = {
|
|
2110
2141
|
sm: { buttonSize: "size-8", iconSize: 16 },
|
|
2111
2142
|
md: { buttonSize: "size-10", iconSize: 20 },
|
|
@@ -2207,6 +2238,7 @@ var SocialLinkIcon = React6.forwardRef(
|
|
|
2207
2238
|
iconClassName,
|
|
2208
2239
|
className,
|
|
2209
2240
|
iconNameOverride,
|
|
2241
|
+
iconOnly = false,
|
|
2210
2242
|
...pressableProps
|
|
2211
2243
|
}, ref) => {
|
|
2212
2244
|
const platform = usePlatformFromUrl(href);
|
|
@@ -2219,6 +2251,21 @@ var SocialLinkIcon = React6.forwardRef(
|
|
|
2219
2251
|
const accessibleLabel = React6.useMemo(() => {
|
|
2220
2252
|
return label || platformName;
|
|
2221
2253
|
}, [label, platformName]);
|
|
2254
|
+
const icon = React6.useMemo(() => {
|
|
2255
|
+
return /* @__PURE__ */ jsx(
|
|
2256
|
+
DynamicIcon,
|
|
2257
|
+
{
|
|
2258
|
+
name: iconName,
|
|
2259
|
+
size: iconSize,
|
|
2260
|
+
color: iconColor,
|
|
2261
|
+
className: iconClassName,
|
|
2262
|
+
alt: accessibleLabel
|
|
2263
|
+
}
|
|
2264
|
+
);
|
|
2265
|
+
}, [iconName, iconSize, iconColor, iconClassName, accessibleLabel]);
|
|
2266
|
+
if (iconOnly) {
|
|
2267
|
+
return icon;
|
|
2268
|
+
}
|
|
2222
2269
|
return /* @__PURE__ */ jsx(
|
|
2223
2270
|
Pressable,
|
|
2224
2271
|
{
|
|
@@ -2230,16 +2277,7 @@ var SocialLinkIcon = React6.forwardRef(
|
|
|
2230
2277
|
className
|
|
2231
2278
|
),
|
|
2232
2279
|
...pressableProps,
|
|
2233
|
-
children:
|
|
2234
|
-
DynamicIcon,
|
|
2235
|
-
{
|
|
2236
|
-
name: iconName,
|
|
2237
|
-
size: iconSize,
|
|
2238
|
-
color: iconColor,
|
|
2239
|
-
className: iconClassName,
|
|
2240
|
-
alt: accessibleLabel
|
|
2241
|
-
}
|
|
2242
|
-
)
|
|
2280
|
+
children: icon
|
|
2243
2281
|
}
|
|
2244
2282
|
);
|
|
2245
2283
|
}
|
|
@@ -7488,4 +7526,4 @@ function FooterNavSocial({
|
|
|
7488
7526
|
);
|
|
7489
7527
|
}
|
|
7490
7528
|
|
|
7491
|
-
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 };
|
|
7529
|
+
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 };
|