@opensite/ui 2.8.5 → 2.8.7
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-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 +35 -10
- package/dist/components.d.cts +29 -2
- package/dist/components.d.ts +29 -2
- package/dist/components.js +35 -11
- 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/hero-badge-shadow-overlay.cjs +1 -1
- package/dist/hero-badge-shadow-overlay.js +1 -1
- 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 +35 -10
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +35 -11
- 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 +1398 -851
- package/dist/registry.js +1398 -851
- 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-animated-split.cjs +5 -5
- package/dist/testimonials-animated-split.js +5 -5
- package/dist/testimonials-bento-grid.cjs +48 -56
- package/dist/testimonials-bento-grid.js +48 -56
- package/dist/testimonials-carousel-image.cjs +608 -96
- package/dist/testimonials-carousel-image.d.cts +26 -2
- package/dist/testimonials-carousel-image.d.ts +26 -2
- package/dist/testimonials-carousel-image.js +609 -97
- package/dist/testimonials-centered-avatars.cjs +89 -62
- package/dist/testimonials-centered-avatars.d.cts +5 -1
- package/dist/testimonials-centered-avatars.d.ts +5 -1
- package/dist/testimonials-centered-avatars.js +89 -62
- package/dist/testimonials-company-logo.cjs +6 -6
- package/dist/testimonials-company-logo.js +6 -6
- 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-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 +53 -29
- package/dist/testimonials-logo-cards.d.cts +5 -1
- package/dist/testimonials-logo-cards.d.ts +5 -1
- package/dist/testimonials-logo-cards.js +53 -29
- package/dist/testimonials-marquee.cjs +524 -102
- package/dist/testimonials-marquee.d.cts +5 -1
- package/dist/testimonials-marquee.d.ts +5 -1
- package/dist/testimonials-marquee.js +525 -100
- package/dist/testimonials-mini-dividers.cjs +120 -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 +120 -83
- package/dist/testimonials-minimal-numbered.cjs +7 -6
- package/dist/testimonials-minimal-numbered.d.cts +5 -1
- package/dist/testimonials-minimal-numbered.d.ts +5 -1
- package/dist/testimonials-minimal-numbered.js +7 -6
- package/dist/testimonials-parallax-number.cjs +14 -8
- package/dist/testimonials-parallax-number.js +14 -8
- package/dist/testimonials-scrolling-columns.cjs +97 -13
- package/dist/testimonials-scrolling-columns.js +97 -13
- package/dist/testimonials-simple-grid.cjs +513 -68
- package/dist/testimonials-simple-grid.d.cts +9 -5
- package/dist/testimonials-simple-grid.d.ts +9 -5
- package/dist/testimonials-simple-grid.js +510 -62
- package/dist/testimonials-slider-minimal.cjs +604 -90
- package/dist/testimonials-slider-minimal.d.cts +17 -1
- package/dist/testimonials-slider-minimal.d.ts +17 -1
- package/dist/testimonials-slider-minimal.js +598 -81
- package/dist/testimonials-split-image.cjs +452 -17
- package/dist/testimonials-split-image.js +448 -13
- package/dist/testimonials-twitter-cards.cjs +26 -14
- package/dist/testimonials-twitter-cards.js +26 -14
- package/package.json +11 -1
|
@@ -117,10 +117,15 @@ interface CarouselGalleryThumbnailsProps {
|
|
|
117
117
|
*/
|
|
118
118
|
patternOpacity?: number;
|
|
119
119
|
/**
|
|
120
|
-
*
|
|
120
|
+
* Intensity of the gradient overlay on slide images
|
|
121
|
+
* @default "default"
|
|
122
|
+
*/
|
|
123
|
+
slideMediaOverlayIntensity?: "low" | "default" | "high" | "very-high";
|
|
124
|
+
/**
|
|
125
|
+
* Brightness level for slide images (deprecated - prefer slideMediaOverlayIntensity)
|
|
121
126
|
*/
|
|
122
127
|
slideMediaBrightness?: "10" | "20" | "25" | "30" | "40" | "50" | "75" | "100";
|
|
123
128
|
}
|
|
124
|
-
declare function CarouselGalleryThumbnails({ images, imagesSlot, autoPlay, autoPlayInterval, showThumbnails, className, containerClassName, slideClassName, navigationClassName, captionClassName, thumbnailsClassName, thumbnailClassName, optixFlowConfig, background, spacing, pattern, patternOpacity, slideMediaBrightness, }: CarouselGalleryThumbnailsProps): React.JSX.Element;
|
|
129
|
+
declare function CarouselGalleryThumbnails({ images, imagesSlot, autoPlay, autoPlayInterval, showThumbnails, className, containerClassName, slideClassName, navigationClassName, captionClassName, thumbnailsClassName, thumbnailClassName, optixFlowConfig, background, spacing, pattern, patternOpacity, slideMediaBrightness, slideMediaOverlayIntensity, }: CarouselGalleryThumbnailsProps): React.JSX.Element;
|
|
125
130
|
|
|
126
131
|
export { CarouselGalleryThumbnails, type CarouselGalleryThumbnailsProps, type GalleryImage };
|
|
@@ -12,16 +12,6 @@ import { Img } from '@page-speed/img';
|
|
|
12
12
|
function cn(...inputs) {
|
|
13
13
|
return twMerge(clsx(inputs));
|
|
14
14
|
}
|
|
15
|
-
var BRIGHTNESS_CLASS_MAP = {
|
|
16
|
-
"10": "brightness-[.1]",
|
|
17
|
-
"20": "brightness-[.2]",
|
|
18
|
-
"25": "brightness-[.25]",
|
|
19
|
-
"30": "brightness-[.3]",
|
|
20
|
-
"40": "brightness-[.4]",
|
|
21
|
-
"50": "brightness-50",
|
|
22
|
-
"75": "brightness-75",
|
|
23
|
-
"100": "brightness-100"
|
|
24
|
-
};
|
|
25
15
|
function normalizePhoneNumber(input) {
|
|
26
16
|
const trimmed = input.trim();
|
|
27
17
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -448,6 +438,67 @@ var DynamicIcon = React.memo(function DynamicIcon2({
|
|
|
448
438
|
return /* @__PURE__ */ jsx(Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
449
439
|
});
|
|
450
440
|
DynamicIcon.displayName = "DynamicIcon";
|
|
441
|
+
var DIRECTION_STYLES = {
|
|
442
|
+
"bottom-to-top": "bg-linear-to-t",
|
|
443
|
+
"top-to-bottom": "bg-linear-to-b",
|
|
444
|
+
"left-to-right": "bg-linear-to-r",
|
|
445
|
+
"right-to-left": "bg-linear-to-l",
|
|
446
|
+
"bottom-left-to-top-right": "bg-linear-to-tr",
|
|
447
|
+
"bottom-right-to-top-left": "bg-linear-to-tl",
|
|
448
|
+
"top-left-to-bottom-right": "bg-linear-to-br",
|
|
449
|
+
"top-right-to-bottom-left": "bg-linear-to-bl"
|
|
450
|
+
};
|
|
451
|
+
var INTENSITY_STOPS = {
|
|
452
|
+
low: "from-black/40 via-black/20 to-transparent",
|
|
453
|
+
default: "from-black/70 via-black/35 to-transparent",
|
|
454
|
+
high: "from-black/85 via-black/50 to-transparent",
|
|
455
|
+
"very-high": "from-black/95 via-black/60 to-black/20"
|
|
456
|
+
};
|
|
457
|
+
var RADIAL_INTENSITY = {
|
|
458
|
+
low: {
|
|
459
|
+
background: "radial-gradient(ellipse at center, rgba(0,0,0,0.40) 0%, rgba(0,0,0,0.20) 50%, transparent 100%)"
|
|
460
|
+
},
|
|
461
|
+
default: {
|
|
462
|
+
background: "radial-gradient(ellipse at center, rgba(0,0,0,0.70) 0%, rgba(0,0,0,0.35) 50%, transparent 100%)"
|
|
463
|
+
},
|
|
464
|
+
high: {
|
|
465
|
+
background: "radial-gradient(ellipse at center, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.50) 50%, transparent 100%)"
|
|
466
|
+
},
|
|
467
|
+
"very-high": {
|
|
468
|
+
background: "radial-gradient(ellipse at center, rgba(0,0,0,0.95) 0%, rgba(0,0,0,0.60) 50%, rgba(0,0,0,0.20) 100%)"
|
|
469
|
+
}
|
|
470
|
+
};
|
|
471
|
+
function GradientOverlay({
|
|
472
|
+
direction = "bottom-to-top",
|
|
473
|
+
intensity = "default",
|
|
474
|
+
className,
|
|
475
|
+
style,
|
|
476
|
+
...props
|
|
477
|
+
}) {
|
|
478
|
+
if (direction === "radial-center") {
|
|
479
|
+
return /* @__PURE__ */ jsx(
|
|
480
|
+
"div",
|
|
481
|
+
{
|
|
482
|
+
className: cn("absolute inset-0", className),
|
|
483
|
+
style: { ...RADIAL_INTENSITY[intensity], ...style },
|
|
484
|
+
...props
|
|
485
|
+
}
|
|
486
|
+
);
|
|
487
|
+
}
|
|
488
|
+
return /* @__PURE__ */ jsx(
|
|
489
|
+
"div",
|
|
490
|
+
{
|
|
491
|
+
className: cn(
|
|
492
|
+
"absolute inset-0",
|
|
493
|
+
DIRECTION_STYLES[direction],
|
|
494
|
+
INTENSITY_STOPS[intensity],
|
|
495
|
+
className
|
|
496
|
+
),
|
|
497
|
+
style,
|
|
498
|
+
...props
|
|
499
|
+
}
|
|
500
|
+
);
|
|
501
|
+
}
|
|
451
502
|
var maxWidthStyles = {
|
|
452
503
|
sm: "max-w-screen-sm",
|
|
453
504
|
md: "max-w-screen-md",
|
|
@@ -842,7 +893,8 @@ function CarouselGalleryThumbnails({
|
|
|
842
893
|
spacing = "sm",
|
|
843
894
|
pattern,
|
|
844
895
|
patternOpacity,
|
|
845
|
-
slideMediaBrightness
|
|
896
|
+
slideMediaBrightness,
|
|
897
|
+
slideMediaOverlayIntensity = "default"
|
|
846
898
|
}) {
|
|
847
899
|
const [currentIndex, setCurrentIndex] = React.useState(0);
|
|
848
900
|
const prevSlide = React.useCallback(() => {
|
|
@@ -891,7 +943,7 @@ function CarouselGalleryThumbnails({
|
|
|
891
943
|
"relative aspect-video w-full overflow-hidden",
|
|
892
944
|
slideClassName
|
|
893
945
|
),
|
|
894
|
-
children: imagesSlot ? imagesSlot : images?.map((image, index) => /* @__PURE__ */
|
|
946
|
+
children: imagesSlot ? imagesSlot : images?.map((image, index) => /* @__PURE__ */ jsxs(
|
|
895
947
|
"div",
|
|
896
948
|
{
|
|
897
949
|
className: cn(
|
|
@@ -899,19 +951,21 @@ function CarouselGalleryThumbnails({
|
|
|
899
951
|
index === currentIndex ? "translate-x-0 opacity-100" : index < currentIndex ? "-translate-x-full opacity-0" : "translate-x-full opacity-0",
|
|
900
952
|
image.className
|
|
901
953
|
),
|
|
902
|
-
children:
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
954
|
+
children: [
|
|
955
|
+
/* @__PURE__ */ jsx(
|
|
956
|
+
Img,
|
|
957
|
+
{
|
|
958
|
+
src: image.src,
|
|
959
|
+
alt: typeof image.alt === "string" ? image.alt : `Image ${index + 1}`,
|
|
960
|
+
className: cn(
|
|
961
|
+
"h-full w-full object-cover",
|
|
962
|
+
image.imageClassName
|
|
963
|
+
),
|
|
964
|
+
optixFlowConfig
|
|
965
|
+
}
|
|
966
|
+
),
|
|
967
|
+
/* @__PURE__ */ jsx(GradientOverlay, { intensity: slideMediaOverlayIntensity })
|
|
968
|
+
]
|
|
915
969
|
},
|
|
916
970
|
`slide-${index}`
|
|
917
971
|
))
|
|
@@ -34,16 +34,6 @@ var React6__namespace = /*#__PURE__*/_interopNamespace(React6);
|
|
|
34
34
|
function cn(...inputs) {
|
|
35
35
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
36
36
|
}
|
|
37
|
-
var BRIGHTNESS_CLASS_MAP = {
|
|
38
|
-
"10": "brightness-[.1]",
|
|
39
|
-
"20": "brightness-[.2]",
|
|
40
|
-
"25": "brightness-[.25]",
|
|
41
|
-
"30": "brightness-[.3]",
|
|
42
|
-
"40": "brightness-[.4]",
|
|
43
|
-
"50": "brightness-50",
|
|
44
|
-
"75": "brightness-75",
|
|
45
|
-
"100": "brightness-100"
|
|
46
|
-
};
|
|
47
37
|
function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
48
38
|
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
49
39
|
if (isDark) {
|
|
@@ -500,6 +490,67 @@ var DynamicIcon = React6__namespace.memo(function DynamicIcon2({
|
|
|
500
490
|
return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
501
491
|
});
|
|
502
492
|
DynamicIcon.displayName = "DynamicIcon";
|
|
493
|
+
var DIRECTION_STYLES = {
|
|
494
|
+
"bottom-to-top": "bg-linear-to-t",
|
|
495
|
+
"top-to-bottom": "bg-linear-to-b",
|
|
496
|
+
"left-to-right": "bg-linear-to-r",
|
|
497
|
+
"right-to-left": "bg-linear-to-l",
|
|
498
|
+
"bottom-left-to-top-right": "bg-linear-to-tr",
|
|
499
|
+
"bottom-right-to-top-left": "bg-linear-to-tl",
|
|
500
|
+
"top-left-to-bottom-right": "bg-linear-to-br",
|
|
501
|
+
"top-right-to-bottom-left": "bg-linear-to-bl"
|
|
502
|
+
};
|
|
503
|
+
var INTENSITY_STOPS = {
|
|
504
|
+
low: "from-black/40 via-black/20 to-transparent",
|
|
505
|
+
default: "from-black/70 via-black/35 to-transparent",
|
|
506
|
+
high: "from-black/85 via-black/50 to-transparent",
|
|
507
|
+
"very-high": "from-black/95 via-black/60 to-black/20"
|
|
508
|
+
};
|
|
509
|
+
var RADIAL_INTENSITY = {
|
|
510
|
+
low: {
|
|
511
|
+
background: "radial-gradient(ellipse at center, rgba(0,0,0,0.40) 0%, rgba(0,0,0,0.20) 50%, transparent 100%)"
|
|
512
|
+
},
|
|
513
|
+
default: {
|
|
514
|
+
background: "radial-gradient(ellipse at center, rgba(0,0,0,0.70) 0%, rgba(0,0,0,0.35) 50%, transparent 100%)"
|
|
515
|
+
},
|
|
516
|
+
high: {
|
|
517
|
+
background: "radial-gradient(ellipse at center, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.50) 50%, transparent 100%)"
|
|
518
|
+
},
|
|
519
|
+
"very-high": {
|
|
520
|
+
background: "radial-gradient(ellipse at center, rgba(0,0,0,0.95) 0%, rgba(0,0,0,0.60) 50%, rgba(0,0,0,0.20) 100%)"
|
|
521
|
+
}
|
|
522
|
+
};
|
|
523
|
+
function GradientOverlay({
|
|
524
|
+
direction = "bottom-to-top",
|
|
525
|
+
intensity = "default",
|
|
526
|
+
className,
|
|
527
|
+
style,
|
|
528
|
+
...props
|
|
529
|
+
}) {
|
|
530
|
+
if (direction === "radial-center") {
|
|
531
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
532
|
+
"div",
|
|
533
|
+
{
|
|
534
|
+
className: cn("absolute inset-0", className),
|
|
535
|
+
style: { ...RADIAL_INTENSITY[intensity], ...style },
|
|
536
|
+
...props
|
|
537
|
+
}
|
|
538
|
+
);
|
|
539
|
+
}
|
|
540
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
541
|
+
"div",
|
|
542
|
+
{
|
|
543
|
+
className: cn(
|
|
544
|
+
"absolute inset-0",
|
|
545
|
+
DIRECTION_STYLES[direction],
|
|
546
|
+
INTENSITY_STOPS[intensity],
|
|
547
|
+
className
|
|
548
|
+
),
|
|
549
|
+
style,
|
|
550
|
+
...props
|
|
551
|
+
}
|
|
552
|
+
);
|
|
553
|
+
}
|
|
503
554
|
var maxWidthStyles = {
|
|
504
555
|
sm: "max-w-screen-sm",
|
|
505
556
|
md: "max-w-screen-md",
|
|
@@ -992,7 +1043,8 @@ function CarouselPortfolioHero({
|
|
|
992
1043
|
spacing = "none",
|
|
993
1044
|
pattern,
|
|
994
1045
|
patternOpacity,
|
|
995
|
-
slideMediaBrightness
|
|
1046
|
+
slideMediaBrightness,
|
|
1047
|
+
slideMediaOverlayIntensity = "high"
|
|
996
1048
|
}) {
|
|
997
1049
|
const [currentIndex, setCurrentIndex] = React6__namespace.useState(0);
|
|
998
1050
|
const intervalRef = React6__namespace.useRef(null);
|
|
@@ -1033,7 +1085,7 @@ function CarouselPortfolioHero({
|
|
|
1033
1085
|
patternOpacity,
|
|
1034
1086
|
containerClassName,
|
|
1035
1087
|
children: [
|
|
1036
|
-
slidesSlot ? slidesSlot : slides?.map((slide, index) => /* @__PURE__ */ jsxRuntime.
|
|
1088
|
+
slidesSlot ? slidesSlot : slides?.map((slide, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1037
1089
|
"div",
|
|
1038
1090
|
{
|
|
1039
1091
|
className: cn(
|
|
@@ -1041,19 +1093,21 @@ function CarouselPortfolioHero({
|
|
|
1041
1093
|
index === currentIndex ? "opacity-100" : "opacity-0",
|
|
1042
1094
|
slide.className
|
|
1043
1095
|
),
|
|
1044
|
-
children:
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1096
|
+
children: [
|
|
1097
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1098
|
+
img.Img,
|
|
1099
|
+
{
|
|
1100
|
+
src: slide.image,
|
|
1101
|
+
alt: typeof slide.title === "string" ? slide.title : `Slide ${index + 1}`,
|
|
1102
|
+
className: cn(
|
|
1103
|
+
"h-full w-full object-cover",
|
|
1104
|
+
slide.imageClassName
|
|
1105
|
+
),
|
|
1106
|
+
optixFlowConfig
|
|
1107
|
+
}
|
|
1108
|
+
),
|
|
1109
|
+
/* @__PURE__ */ jsxRuntime.jsx(GradientOverlay, { intensity: slideMediaOverlayIntensity })
|
|
1110
|
+
]
|
|
1057
1111
|
},
|
|
1058
1112
|
slide.id
|
|
1059
1113
|
)),
|
|
@@ -129,10 +129,15 @@ interface CarouselPortfolioHeroProps {
|
|
|
129
129
|
*/
|
|
130
130
|
patternOpacity?: number;
|
|
131
131
|
/**
|
|
132
|
-
*
|
|
132
|
+
* Intensity of the gradient overlay on slide images
|
|
133
|
+
* @default "high"
|
|
134
|
+
*/
|
|
135
|
+
slideMediaOverlayIntensity?: "low" | "default" | "high" | "very-high";
|
|
136
|
+
/**
|
|
137
|
+
* Brightness level for slide images (deprecated - prefer slideMediaOverlayIntensity)
|
|
133
138
|
*/
|
|
134
139
|
slideMediaBrightness?: "10" | "20" | "25" | "30" | "40" | "50" | "75" | "100";
|
|
135
140
|
}
|
|
136
|
-
declare function CarouselPortfolioHero({ slides, slidesSlot, actions, actionsSlot, autoPlayInterval, className, containerClassName, contentClassName, tagClassName, titleClassName, descriptionClassName, actionsClassName, navigationClassName, counterClassName, optixFlowConfig, background, spacing, pattern, patternOpacity, slideMediaBrightness, }: CarouselPortfolioHeroProps): React.JSX.Element;
|
|
141
|
+
declare function CarouselPortfolioHero({ slides, slidesSlot, actions, actionsSlot, autoPlayInterval, className, containerClassName, contentClassName, tagClassName, titleClassName, descriptionClassName, actionsClassName, navigationClassName, counterClassName, optixFlowConfig, background, spacing, pattern, patternOpacity, slideMediaBrightness, slideMediaOverlayIntensity, }: CarouselPortfolioHeroProps): React.JSX.Element;
|
|
137
142
|
|
|
138
143
|
export { CarouselPortfolioHero, type CarouselPortfolioHeroProps, type PortfolioSlide };
|
|
@@ -129,10 +129,15 @@ interface CarouselPortfolioHeroProps {
|
|
|
129
129
|
*/
|
|
130
130
|
patternOpacity?: number;
|
|
131
131
|
/**
|
|
132
|
-
*
|
|
132
|
+
* Intensity of the gradient overlay on slide images
|
|
133
|
+
* @default "high"
|
|
134
|
+
*/
|
|
135
|
+
slideMediaOverlayIntensity?: "low" | "default" | "high" | "very-high";
|
|
136
|
+
/**
|
|
137
|
+
* Brightness level for slide images (deprecated - prefer slideMediaOverlayIntensity)
|
|
133
138
|
*/
|
|
134
139
|
slideMediaBrightness?: "10" | "20" | "25" | "30" | "40" | "50" | "75" | "100";
|
|
135
140
|
}
|
|
136
|
-
declare function CarouselPortfolioHero({ slides, slidesSlot, actions, actionsSlot, autoPlayInterval, className, containerClassName, contentClassName, tagClassName, titleClassName, descriptionClassName, actionsClassName, navigationClassName, counterClassName, optixFlowConfig, background, spacing, pattern, patternOpacity, slideMediaBrightness, }: CarouselPortfolioHeroProps): React.JSX.Element;
|
|
141
|
+
declare function CarouselPortfolioHero({ slides, slidesSlot, actions, actionsSlot, autoPlayInterval, className, containerClassName, contentClassName, tagClassName, titleClassName, descriptionClassName, actionsClassName, navigationClassName, counterClassName, optixFlowConfig, background, spacing, pattern, patternOpacity, slideMediaBrightness, slideMediaOverlayIntensity, }: CarouselPortfolioHeroProps): React.JSX.Element;
|
|
137
142
|
|
|
138
143
|
export { CarouselPortfolioHero, type CarouselPortfolioHeroProps, type PortfolioSlide };
|
|
@@ -13,16 +13,6 @@ import { Slot } from '@radix-ui/react-slot';
|
|
|
13
13
|
function cn(...inputs) {
|
|
14
14
|
return twMerge(clsx(inputs));
|
|
15
15
|
}
|
|
16
|
-
var BRIGHTNESS_CLASS_MAP = {
|
|
17
|
-
"10": "brightness-[.1]",
|
|
18
|
-
"20": "brightness-[.2]",
|
|
19
|
-
"25": "brightness-[.25]",
|
|
20
|
-
"30": "brightness-[.3]",
|
|
21
|
-
"40": "brightness-[.4]",
|
|
22
|
-
"50": "brightness-50",
|
|
23
|
-
"75": "brightness-75",
|
|
24
|
-
"100": "brightness-100"
|
|
25
|
-
};
|
|
26
16
|
function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
27
17
|
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
28
18
|
if (isDark) {
|
|
@@ -479,6 +469,67 @@ var DynamicIcon = React6.memo(function DynamicIcon2({
|
|
|
479
469
|
return /* @__PURE__ */ jsx(Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
480
470
|
});
|
|
481
471
|
DynamicIcon.displayName = "DynamicIcon";
|
|
472
|
+
var DIRECTION_STYLES = {
|
|
473
|
+
"bottom-to-top": "bg-linear-to-t",
|
|
474
|
+
"top-to-bottom": "bg-linear-to-b",
|
|
475
|
+
"left-to-right": "bg-linear-to-r",
|
|
476
|
+
"right-to-left": "bg-linear-to-l",
|
|
477
|
+
"bottom-left-to-top-right": "bg-linear-to-tr",
|
|
478
|
+
"bottom-right-to-top-left": "bg-linear-to-tl",
|
|
479
|
+
"top-left-to-bottom-right": "bg-linear-to-br",
|
|
480
|
+
"top-right-to-bottom-left": "bg-linear-to-bl"
|
|
481
|
+
};
|
|
482
|
+
var INTENSITY_STOPS = {
|
|
483
|
+
low: "from-black/40 via-black/20 to-transparent",
|
|
484
|
+
default: "from-black/70 via-black/35 to-transparent",
|
|
485
|
+
high: "from-black/85 via-black/50 to-transparent",
|
|
486
|
+
"very-high": "from-black/95 via-black/60 to-black/20"
|
|
487
|
+
};
|
|
488
|
+
var RADIAL_INTENSITY = {
|
|
489
|
+
low: {
|
|
490
|
+
background: "radial-gradient(ellipse at center, rgba(0,0,0,0.40) 0%, rgba(0,0,0,0.20) 50%, transparent 100%)"
|
|
491
|
+
},
|
|
492
|
+
default: {
|
|
493
|
+
background: "radial-gradient(ellipse at center, rgba(0,0,0,0.70) 0%, rgba(0,0,0,0.35) 50%, transparent 100%)"
|
|
494
|
+
},
|
|
495
|
+
high: {
|
|
496
|
+
background: "radial-gradient(ellipse at center, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.50) 50%, transparent 100%)"
|
|
497
|
+
},
|
|
498
|
+
"very-high": {
|
|
499
|
+
background: "radial-gradient(ellipse at center, rgba(0,0,0,0.95) 0%, rgba(0,0,0,0.60) 50%, rgba(0,0,0,0.20) 100%)"
|
|
500
|
+
}
|
|
501
|
+
};
|
|
502
|
+
function GradientOverlay({
|
|
503
|
+
direction = "bottom-to-top",
|
|
504
|
+
intensity = "default",
|
|
505
|
+
className,
|
|
506
|
+
style,
|
|
507
|
+
...props
|
|
508
|
+
}) {
|
|
509
|
+
if (direction === "radial-center") {
|
|
510
|
+
return /* @__PURE__ */ jsx(
|
|
511
|
+
"div",
|
|
512
|
+
{
|
|
513
|
+
className: cn("absolute inset-0", className),
|
|
514
|
+
style: { ...RADIAL_INTENSITY[intensity], ...style },
|
|
515
|
+
...props
|
|
516
|
+
}
|
|
517
|
+
);
|
|
518
|
+
}
|
|
519
|
+
return /* @__PURE__ */ jsx(
|
|
520
|
+
"div",
|
|
521
|
+
{
|
|
522
|
+
className: cn(
|
|
523
|
+
"absolute inset-0",
|
|
524
|
+
DIRECTION_STYLES[direction],
|
|
525
|
+
INTENSITY_STOPS[intensity],
|
|
526
|
+
className
|
|
527
|
+
),
|
|
528
|
+
style,
|
|
529
|
+
...props
|
|
530
|
+
}
|
|
531
|
+
);
|
|
532
|
+
}
|
|
482
533
|
var maxWidthStyles = {
|
|
483
534
|
sm: "max-w-screen-sm",
|
|
484
535
|
md: "max-w-screen-md",
|
|
@@ -971,7 +1022,8 @@ function CarouselPortfolioHero({
|
|
|
971
1022
|
spacing = "none",
|
|
972
1023
|
pattern,
|
|
973
1024
|
patternOpacity,
|
|
974
|
-
slideMediaBrightness
|
|
1025
|
+
slideMediaBrightness,
|
|
1026
|
+
slideMediaOverlayIntensity = "high"
|
|
975
1027
|
}) {
|
|
976
1028
|
const [currentIndex, setCurrentIndex] = React6.useState(0);
|
|
977
1029
|
const intervalRef = React6.useRef(null);
|
|
@@ -1012,7 +1064,7 @@ function CarouselPortfolioHero({
|
|
|
1012
1064
|
patternOpacity,
|
|
1013
1065
|
containerClassName,
|
|
1014
1066
|
children: [
|
|
1015
|
-
slidesSlot ? slidesSlot : slides?.map((slide, index) => /* @__PURE__ */
|
|
1067
|
+
slidesSlot ? slidesSlot : slides?.map((slide, index) => /* @__PURE__ */ jsxs(
|
|
1016
1068
|
"div",
|
|
1017
1069
|
{
|
|
1018
1070
|
className: cn(
|
|
@@ -1020,19 +1072,21 @@ function CarouselPortfolioHero({
|
|
|
1020
1072
|
index === currentIndex ? "opacity-100" : "opacity-0",
|
|
1021
1073
|
slide.className
|
|
1022
1074
|
),
|
|
1023
|
-
children:
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1075
|
+
children: [
|
|
1076
|
+
/* @__PURE__ */ jsx(
|
|
1077
|
+
Img,
|
|
1078
|
+
{
|
|
1079
|
+
src: slide.image,
|
|
1080
|
+
alt: typeof slide.title === "string" ? slide.title : `Slide ${index + 1}`,
|
|
1081
|
+
className: cn(
|
|
1082
|
+
"h-full w-full object-cover",
|
|
1083
|
+
slide.imageClassName
|
|
1084
|
+
),
|
|
1085
|
+
optixFlowConfig
|
|
1086
|
+
}
|
|
1087
|
+
),
|
|
1088
|
+
/* @__PURE__ */ jsx(GradientOverlay, { intensity: slideMediaOverlayIntensity })
|
|
1089
|
+
]
|
|
1036
1090
|
},
|
|
1037
1091
|
slide.id
|
|
1038
1092
|
)),
|
package/dist/components.cjs
CHANGED
|
@@ -2129,6 +2129,23 @@ function PopoverContent({
|
|
|
2129
2129
|
}
|
|
2130
2130
|
) });
|
|
2131
2131
|
}
|
|
2132
|
+
function StarRating({
|
|
2133
|
+
rating,
|
|
2134
|
+
size = 18,
|
|
2135
|
+
className
|
|
2136
|
+
}) {
|
|
2137
|
+
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(
|
|
2138
|
+
DynamicIcon,
|
|
2139
|
+
{
|
|
2140
|
+
name: "icon-park-solid/star",
|
|
2141
|
+
size,
|
|
2142
|
+
className: cn(
|
|
2143
|
+
star <= rating ? "fill-primary text-primary" : "fill-muted text-muted"
|
|
2144
|
+
)
|
|
2145
|
+
},
|
|
2146
|
+
star
|
|
2147
|
+
)) });
|
|
2148
|
+
}
|
|
2132
2149
|
var BUTTON_SIZES = {
|
|
2133
2150
|
sm: { buttonSize: "size-8", iconSize: 16 },
|
|
2134
2151
|
md: { buttonSize: "size-10", iconSize: 20 },
|
|
@@ -2230,6 +2247,7 @@ var SocialLinkIcon = React6__namespace.forwardRef(
|
|
|
2230
2247
|
iconClassName,
|
|
2231
2248
|
className,
|
|
2232
2249
|
iconNameOverride,
|
|
2250
|
+
iconOnly = false,
|
|
2233
2251
|
...pressableProps
|
|
2234
2252
|
}, ref) => {
|
|
2235
2253
|
const platform = usePlatformFromUrl.usePlatformFromUrl(href);
|
|
@@ -2242,6 +2260,21 @@ var SocialLinkIcon = React6__namespace.forwardRef(
|
|
|
2242
2260
|
const accessibleLabel = React6__namespace.useMemo(() => {
|
|
2243
2261
|
return label || platformName;
|
|
2244
2262
|
}, [label, platformName]);
|
|
2263
|
+
const icon = React6__namespace.useMemo(() => {
|
|
2264
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2265
|
+
DynamicIcon,
|
|
2266
|
+
{
|
|
2267
|
+
name: iconName,
|
|
2268
|
+
size: iconSize,
|
|
2269
|
+
color: iconColor,
|
|
2270
|
+
className: iconClassName,
|
|
2271
|
+
alt: accessibleLabel
|
|
2272
|
+
}
|
|
2273
|
+
);
|
|
2274
|
+
}, [iconName, iconSize, iconColor, iconClassName, accessibleLabel]);
|
|
2275
|
+
if (iconOnly) {
|
|
2276
|
+
return icon;
|
|
2277
|
+
}
|
|
2245
2278
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2246
2279
|
Pressable,
|
|
2247
2280
|
{
|
|
@@ -2253,16 +2286,7 @@ var SocialLinkIcon = React6__namespace.forwardRef(
|
|
|
2253
2286
|
className
|
|
2254
2287
|
),
|
|
2255
2288
|
...pressableProps,
|
|
2256
|
-
children:
|
|
2257
|
-
DynamicIcon,
|
|
2258
|
-
{
|
|
2259
|
-
name: iconName,
|
|
2260
|
-
size: iconSize,
|
|
2261
|
-
color: iconColor,
|
|
2262
|
-
className: iconClassName,
|
|
2263
|
-
alt: accessibleLabel
|
|
2264
|
-
}
|
|
2265
|
-
)
|
|
2289
|
+
children: icon
|
|
2266
2290
|
}
|
|
2267
2291
|
);
|
|
2268
2292
|
}
|
|
@@ -7563,3 +7587,4 @@ exports.PopoverTrigger = PopoverTrigger;
|
|
|
7563
7587
|
exports.Pressable = Pressable;
|
|
7564
7588
|
exports.Section = Section;
|
|
7565
7589
|
exports.SocialLinkIcon = SocialLinkIcon;
|
|
7590
|
+
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-D1hqLk46.cjs';
|
|
46
45
|
import 'class-variance-authority';
|
|
47
46
|
import './button-variants-lRElsmTc.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-kcru1Ogu.js';
|
|
46
45
|
import 'class-variance-authority';
|
|
47
46
|
import './button-variants-lRElsmTc.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 };
|