@opensite/ui 3.7.0 → 3.7.2
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/hero-logo-centered-screenshot.cjs +2 -2
- package/dist/hero-logo-centered-screenshot.js +2 -2
- package/dist/hero-platform-features-grid.cjs +60 -27
- package/dist/hero-platform-features-grid.d.cts +12 -4
- package/dist/hero-platform-features-grid.d.ts +12 -4
- package/dist/hero-platform-features-grid.js +60 -27
- package/dist/hero-tech-carousel.cjs +55 -22
- package/dist/hero-tech-carousel.d.cts +12 -10
- package/dist/hero-tech-carousel.d.ts +12 -10
- package/dist/hero-tech-carousel.js +55 -22
- package/dist/registry.cjs +33 -51
- package/dist/registry.js +33 -51
- package/dist/social-link-icon.d.cts +1 -1
- package/dist/social-link-icon.d.ts +1 -1
- package/package.json +1 -1
|
@@ -447,7 +447,7 @@ function HeroLogoCenteredScreenshot({
|
|
|
447
447
|
imageSlot,
|
|
448
448
|
background,
|
|
449
449
|
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
450
|
-
spacing = "
|
|
450
|
+
spacing = "hero",
|
|
451
451
|
pattern,
|
|
452
452
|
patternOpacity,
|
|
453
453
|
className,
|
|
@@ -483,7 +483,7 @@ function HeroLogoCenteredScreenshot({
|
|
|
483
483
|
src: image.src,
|
|
484
484
|
alt: image.alt,
|
|
485
485
|
className: cn(
|
|
486
|
-
"mt-20 w-full rounded-xl object-cover h-auto shadow-xl",
|
|
486
|
+
"mt-10 md:mt-20 w-full rounded-xl object-cover h-auto shadow-xl",
|
|
487
487
|
imageClassName,
|
|
488
488
|
image.className
|
|
489
489
|
),
|
|
@@ -441,7 +441,7 @@ function HeroLogoCenteredScreenshot({
|
|
|
441
441
|
imageSlot,
|
|
442
442
|
background,
|
|
443
443
|
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
444
|
-
spacing = "
|
|
444
|
+
spacing = "hero",
|
|
445
445
|
pattern,
|
|
446
446
|
patternOpacity,
|
|
447
447
|
className,
|
|
@@ -477,7 +477,7 @@ function HeroLogoCenteredScreenshot({
|
|
|
477
477
|
src: image.src,
|
|
478
478
|
alt: image.alt,
|
|
479
479
|
className: cn(
|
|
480
|
-
"mt-20 w-full rounded-xl object-cover h-auto shadow-xl",
|
|
480
|
+
"mt-10 md:mt-20 w-full rounded-xl object-cover h-auto shadow-xl",
|
|
481
481
|
imageClassName,
|
|
482
482
|
image.className
|
|
483
483
|
),
|
|
@@ -422,10 +422,53 @@ var Section = React__namespace.default.forwardRef(
|
|
|
422
422
|
}
|
|
423
423
|
);
|
|
424
424
|
Section.displayName = "Section";
|
|
425
|
+
var SIZE_CLASSES = {
|
|
426
|
+
sm: "max-h-6 sm:max-h-7",
|
|
427
|
+
md: "max-h-8 sm:max-h-9 lg:max-h-10",
|
|
428
|
+
lg: "max-h-10 sm:max-h-12 lg:max-h-14",
|
|
429
|
+
xl: "max-h-12 sm:max-h-14 lg:max-h-16"
|
|
430
|
+
};
|
|
431
|
+
var BrandLogo = ({
|
|
432
|
+
logo,
|
|
433
|
+
logoSlot,
|
|
434
|
+
logoClassName,
|
|
435
|
+
size = "md",
|
|
436
|
+
optixFlowConfig
|
|
437
|
+
}) => {
|
|
438
|
+
if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
|
|
439
|
+
if (!logo || !logo.src) return null;
|
|
440
|
+
const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
|
|
441
|
+
img.Img,
|
|
442
|
+
{
|
|
443
|
+
src: logo.src,
|
|
444
|
+
className: cn(
|
|
445
|
+
"w-auto object-contain",
|
|
446
|
+
SIZE_CLASSES[size],
|
|
447
|
+
logo.className
|
|
448
|
+
),
|
|
449
|
+
alt: logo.alt || "Logo",
|
|
450
|
+
optixFlowConfig,
|
|
451
|
+
loading: "eager"
|
|
452
|
+
}
|
|
453
|
+
);
|
|
454
|
+
if (logo.url) {
|
|
455
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
456
|
+
pressable.Pressable,
|
|
457
|
+
{
|
|
458
|
+
href: logo.url,
|
|
459
|
+
className: cn("flex items-center", logoClassName),
|
|
460
|
+
children: imgElement
|
|
461
|
+
}
|
|
462
|
+
);
|
|
463
|
+
}
|
|
464
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
|
|
465
|
+
};
|
|
466
|
+
var brand_logo_default = BrandLogo;
|
|
425
467
|
function HeroPlatformFeaturesGrid({
|
|
426
468
|
sectionId = "hero-platform-features-grid",
|
|
427
469
|
logo,
|
|
428
470
|
logoSlot,
|
|
471
|
+
logoClassName,
|
|
429
472
|
subtitle,
|
|
430
473
|
description,
|
|
431
474
|
heading,
|
|
@@ -444,23 +487,6 @@ function HeroPlatformFeaturesGrid({
|
|
|
444
487
|
featuresClassName,
|
|
445
488
|
optixFlowConfig
|
|
446
489
|
}) {
|
|
447
|
-
const renderLogo = React.useMemo(() => {
|
|
448
|
-
if (logoSlot) return logoSlot;
|
|
449
|
-
if (!logo) return null;
|
|
450
|
-
const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
|
|
451
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
452
|
-
img.Img,
|
|
453
|
-
{
|
|
454
|
-
src: logoSrc,
|
|
455
|
-
alt: logo.alt,
|
|
456
|
-
className: cn(
|
|
457
|
-
"mx-auto mb-5 w-24 md:mb-6 md:w-28 lg:mb-7 lg:w-32",
|
|
458
|
-
logo.imgClassName
|
|
459
|
-
),
|
|
460
|
-
optixFlowConfig
|
|
461
|
-
}
|
|
462
|
-
);
|
|
463
|
-
}, [logoSlot, logo, optixFlowConfig]);
|
|
464
490
|
const renderAction = React.useMemo(() => {
|
|
465
491
|
if (actionSlot) return actionSlot;
|
|
466
492
|
if (!action) return null;
|
|
@@ -525,28 +551,35 @@ function HeroPlatformFeaturesGrid({
|
|
|
525
551
|
headerClassName
|
|
526
552
|
),
|
|
527
553
|
children: [
|
|
528
|
-
|
|
529
|
-
subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
554
|
+
logo || logoSlot ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex justify-center", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(brand_logo_default, { logo, logoSlot, size: "lg" }) }) : null,
|
|
555
|
+
subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
556
|
+
"span",
|
|
557
|
+
{
|
|
558
|
+
className: cn(
|
|
559
|
+
"text-sm tracking-widest md:text-base opacity-50"
|
|
560
|
+
),
|
|
561
|
+
children: subtitle
|
|
562
|
+
}
|
|
563
|
+
) : subtitle),
|
|
530
564
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
531
565
|
"h1",
|
|
532
566
|
{
|
|
533
567
|
className: cn(
|
|
534
|
-
"
|
|
568
|
+
"text-4xl font-semibold text-balance lg:text-6xl",
|
|
535
569
|
headingClassName
|
|
536
570
|
),
|
|
537
571
|
children: heading
|
|
538
572
|
}
|
|
539
|
-
) :
|
|
540
|
-
|
|
573
|
+
) : heading),
|
|
574
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
575
|
+
"p",
|
|
541
576
|
{
|
|
542
577
|
className: cn(
|
|
543
|
-
"
|
|
544
|
-
headingClassName
|
|
578
|
+
"mb-6 max-w-full md:max-w-md text-base md:text-lg text-balance"
|
|
545
579
|
),
|
|
546
|
-
children:
|
|
580
|
+
children: description
|
|
547
581
|
}
|
|
548
|
-
)),
|
|
549
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-6 max-w-2xl md:text-lg text-balance"), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("max-w-2xl md:text-lg text-balance"), children: description })),
|
|
582
|
+
) : description),
|
|
550
583
|
renderAction
|
|
551
584
|
]
|
|
552
585
|
}
|
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { S as SectionBackground, s as SectionSpacing, t as PatternName } from './community-initiatives-Cgd-IXlI.cjs';
|
|
3
|
-
import { L as
|
|
3
|
+
import { L as LogoConfig } from './types-mWZcgKth.cjs';
|
|
4
|
+
import { A as ActionConfig, F as FeatureItem, O as OptixFlowConfig } from './blocks-DyouPohq.cjs';
|
|
4
5
|
import 'react/jsx-runtime';
|
|
6
|
+
import './dynamic-icon.cjs';
|
|
7
|
+
import '@page-speed/icon';
|
|
5
8
|
import 'class-variance-authority';
|
|
6
9
|
import '@page-speed/pressable';
|
|
7
10
|
import '@opensite/hooks/usePlatformFromUrl';
|
|
8
11
|
|
|
9
12
|
interface HeroPlatformFeaturesGridProps {
|
|
10
13
|
/**
|
|
11
|
-
*
|
|
14
|
+
* Brand logo configuration — renders above the announcement badge.
|
|
15
|
+
* LOGO MEDIA ONLY. Do not use photos, hero images, or video assets.
|
|
12
16
|
*/
|
|
13
|
-
logo?:
|
|
17
|
+
logo?: LogoConfig;
|
|
14
18
|
/**
|
|
15
19
|
* Custom slot for logo (overrides logo prop)
|
|
16
20
|
*/
|
|
17
21
|
logoSlot?: React.ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* Additional CSS classes for the logo container
|
|
24
|
+
*/
|
|
25
|
+
logoClassName?: string;
|
|
18
26
|
/**
|
|
19
27
|
* Subtitle/label text above heading
|
|
20
28
|
*/
|
|
@@ -87,6 +95,6 @@ interface HeroPlatformFeaturesGridProps {
|
|
|
87
95
|
/** Optional Section ID */
|
|
88
96
|
sectionId?: string;
|
|
89
97
|
}
|
|
90
|
-
declare function HeroPlatformFeaturesGrid({ sectionId, logo, logoSlot, subtitle, description, heading, action, actionSlot, features, featuresSlot, background, containerClassName, spacing, pattern, patternOpacity, className, headerClassName, headingClassName, featuresClassName, optixFlowConfig, }: HeroPlatformFeaturesGridProps): React.JSX.Element;
|
|
98
|
+
declare function HeroPlatformFeaturesGrid({ sectionId, logo, logoSlot, logoClassName, subtitle, description, heading, action, actionSlot, features, featuresSlot, background, containerClassName, spacing, pattern, patternOpacity, className, headerClassName, headingClassName, featuresClassName, optixFlowConfig, }: HeroPlatformFeaturesGridProps): React.JSX.Element;
|
|
91
99
|
|
|
92
100
|
export { HeroPlatformFeaturesGrid, type HeroPlatformFeaturesGridProps };
|
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { S as SectionBackground, s as SectionSpacing, t as PatternName } from './community-initiatives-Dud0DKXB.js';
|
|
3
|
-
import { L as
|
|
3
|
+
import { L as LogoConfig } from './types-hJ2R0GoH.js';
|
|
4
|
+
import { A as ActionConfig, F as FeatureItem, O as OptixFlowConfig } from './blocks-DyouPohq.js';
|
|
4
5
|
import 'react/jsx-runtime';
|
|
6
|
+
import './dynamic-icon.js';
|
|
7
|
+
import '@page-speed/icon';
|
|
5
8
|
import 'class-variance-authority';
|
|
6
9
|
import '@page-speed/pressable';
|
|
7
10
|
import '@opensite/hooks/usePlatformFromUrl';
|
|
8
11
|
|
|
9
12
|
interface HeroPlatformFeaturesGridProps {
|
|
10
13
|
/**
|
|
11
|
-
*
|
|
14
|
+
* Brand logo configuration — renders above the announcement badge.
|
|
15
|
+
* LOGO MEDIA ONLY. Do not use photos, hero images, or video assets.
|
|
12
16
|
*/
|
|
13
|
-
logo?:
|
|
17
|
+
logo?: LogoConfig;
|
|
14
18
|
/**
|
|
15
19
|
* Custom slot for logo (overrides logo prop)
|
|
16
20
|
*/
|
|
17
21
|
logoSlot?: React.ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* Additional CSS classes for the logo container
|
|
24
|
+
*/
|
|
25
|
+
logoClassName?: string;
|
|
18
26
|
/**
|
|
19
27
|
* Subtitle/label text above heading
|
|
20
28
|
*/
|
|
@@ -87,6 +95,6 @@ interface HeroPlatformFeaturesGridProps {
|
|
|
87
95
|
/** Optional Section ID */
|
|
88
96
|
sectionId?: string;
|
|
89
97
|
}
|
|
90
|
-
declare function HeroPlatformFeaturesGrid({ sectionId, logo, logoSlot, subtitle, description, heading, action, actionSlot, features, featuresSlot, background, containerClassName, spacing, pattern, patternOpacity, className, headerClassName, headingClassName, featuresClassName, optixFlowConfig, }: HeroPlatformFeaturesGridProps): React.JSX.Element;
|
|
98
|
+
declare function HeroPlatformFeaturesGrid({ sectionId, logo, logoSlot, logoClassName, subtitle, description, heading, action, actionSlot, features, featuresSlot, background, containerClassName, spacing, pattern, patternOpacity, className, headerClassName, headingClassName, featuresClassName, optixFlowConfig, }: HeroPlatformFeaturesGridProps): React.JSX.Element;
|
|
91
99
|
|
|
92
100
|
export { HeroPlatformFeaturesGrid, type HeroPlatformFeaturesGridProps };
|
|
@@ -401,10 +401,53 @@ var Section = React__default.forwardRef(
|
|
|
401
401
|
}
|
|
402
402
|
);
|
|
403
403
|
Section.displayName = "Section";
|
|
404
|
+
var SIZE_CLASSES = {
|
|
405
|
+
sm: "max-h-6 sm:max-h-7",
|
|
406
|
+
md: "max-h-8 sm:max-h-9 lg:max-h-10",
|
|
407
|
+
lg: "max-h-10 sm:max-h-12 lg:max-h-14",
|
|
408
|
+
xl: "max-h-12 sm:max-h-14 lg:max-h-16"
|
|
409
|
+
};
|
|
410
|
+
var BrandLogo = ({
|
|
411
|
+
logo,
|
|
412
|
+
logoSlot,
|
|
413
|
+
logoClassName,
|
|
414
|
+
size = "md",
|
|
415
|
+
optixFlowConfig
|
|
416
|
+
}) => {
|
|
417
|
+
if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
|
|
418
|
+
if (!logo || !logo.src) return null;
|
|
419
|
+
const imgElement = /* @__PURE__ */ jsx(
|
|
420
|
+
Img,
|
|
421
|
+
{
|
|
422
|
+
src: logo.src,
|
|
423
|
+
className: cn(
|
|
424
|
+
"w-auto object-contain",
|
|
425
|
+
SIZE_CLASSES[size],
|
|
426
|
+
logo.className
|
|
427
|
+
),
|
|
428
|
+
alt: logo.alt || "Logo",
|
|
429
|
+
optixFlowConfig,
|
|
430
|
+
loading: "eager"
|
|
431
|
+
}
|
|
432
|
+
);
|
|
433
|
+
if (logo.url) {
|
|
434
|
+
return /* @__PURE__ */ jsx(
|
|
435
|
+
Pressable,
|
|
436
|
+
{
|
|
437
|
+
href: logo.url,
|
|
438
|
+
className: cn("flex items-center", logoClassName),
|
|
439
|
+
children: imgElement
|
|
440
|
+
}
|
|
441
|
+
);
|
|
442
|
+
}
|
|
443
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
|
|
444
|
+
};
|
|
445
|
+
var brand_logo_default = BrandLogo;
|
|
404
446
|
function HeroPlatformFeaturesGrid({
|
|
405
447
|
sectionId = "hero-platform-features-grid",
|
|
406
448
|
logo,
|
|
407
449
|
logoSlot,
|
|
450
|
+
logoClassName,
|
|
408
451
|
subtitle,
|
|
409
452
|
description,
|
|
410
453
|
heading,
|
|
@@ -423,23 +466,6 @@ function HeroPlatformFeaturesGrid({
|
|
|
423
466
|
featuresClassName,
|
|
424
467
|
optixFlowConfig
|
|
425
468
|
}) {
|
|
426
|
-
const renderLogo = useMemo(() => {
|
|
427
|
-
if (logoSlot) return logoSlot;
|
|
428
|
-
if (!logo) return null;
|
|
429
|
-
const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
|
|
430
|
-
return /* @__PURE__ */ jsx(
|
|
431
|
-
Img,
|
|
432
|
-
{
|
|
433
|
-
src: logoSrc,
|
|
434
|
-
alt: logo.alt,
|
|
435
|
-
className: cn(
|
|
436
|
-
"mx-auto mb-5 w-24 md:mb-6 md:w-28 lg:mb-7 lg:w-32",
|
|
437
|
-
logo.imgClassName
|
|
438
|
-
),
|
|
439
|
-
optixFlowConfig
|
|
440
|
-
}
|
|
441
|
-
);
|
|
442
|
-
}, [logoSlot, logo, optixFlowConfig]);
|
|
443
469
|
const renderAction = useMemo(() => {
|
|
444
470
|
if (actionSlot) return actionSlot;
|
|
445
471
|
if (!action) return null;
|
|
@@ -504,28 +530,35 @@ function HeroPlatformFeaturesGrid({
|
|
|
504
530
|
headerClassName
|
|
505
531
|
),
|
|
506
532
|
children: [
|
|
507
|
-
|
|
508
|
-
subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsx(
|
|
533
|
+
logo || logoSlot ? /* @__PURE__ */ jsx("div", { className: cn("flex justify-center", logoClassName), children: /* @__PURE__ */ jsx(brand_logo_default, { logo, logoSlot, size: "lg" }) }) : null,
|
|
534
|
+
subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsx(
|
|
535
|
+
"span",
|
|
536
|
+
{
|
|
537
|
+
className: cn(
|
|
538
|
+
"text-sm tracking-widest md:text-base opacity-50"
|
|
539
|
+
),
|
|
540
|
+
children: subtitle
|
|
541
|
+
}
|
|
542
|
+
) : subtitle),
|
|
509
543
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
510
544
|
"h1",
|
|
511
545
|
{
|
|
512
546
|
className: cn(
|
|
513
|
-
"
|
|
547
|
+
"text-4xl font-semibold text-balance lg:text-6xl",
|
|
514
548
|
headingClassName
|
|
515
549
|
),
|
|
516
550
|
children: heading
|
|
517
551
|
}
|
|
518
|
-
) :
|
|
519
|
-
|
|
552
|
+
) : heading),
|
|
553
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx(
|
|
554
|
+
"p",
|
|
520
555
|
{
|
|
521
556
|
className: cn(
|
|
522
|
-
"
|
|
523
|
-
headingClassName
|
|
557
|
+
"mb-6 max-w-full md:max-w-md text-base md:text-lg text-balance"
|
|
524
558
|
),
|
|
525
|
-
children:
|
|
559
|
+
children: description
|
|
526
560
|
}
|
|
527
|
-
)),
|
|
528
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-6 max-w-2xl md:text-lg text-balance"), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("max-w-2xl md:text-lg text-balance"), children: description })),
|
|
561
|
+
) : description),
|
|
529
562
|
renderAction
|
|
530
563
|
]
|
|
531
564
|
}
|
|
@@ -668,11 +668,49 @@ function ActionComponent({ action }) {
|
|
|
668
668
|
}
|
|
669
669
|
);
|
|
670
670
|
}
|
|
671
|
+
var SIZE_CLASSES = {
|
|
672
|
+
sm: "max-h-6 sm:max-h-7",
|
|
673
|
+
md: "max-h-8 sm:max-h-9 lg:max-h-10",
|
|
674
|
+
lg: "max-h-10 sm:max-h-12 lg:max-h-14",
|
|
675
|
+
xl: "max-h-12 sm:max-h-14 lg:max-h-16"
|
|
676
|
+
};
|
|
677
|
+
var BrandLogo = ({
|
|
678
|
+
logo,
|
|
679
|
+
logoSlot,
|
|
680
|
+
logoClassName,
|
|
681
|
+
size = "md",
|
|
682
|
+
optixFlowConfig
|
|
683
|
+
}) => {
|
|
684
|
+
if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
|
|
685
|
+
if (!logo || !logo.src) return null;
|
|
686
|
+
const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
|
|
687
|
+
img.Img,
|
|
688
|
+
{
|
|
689
|
+
src: logo.src,
|
|
690
|
+
className: cn(
|
|
691
|
+
"w-auto object-contain",
|
|
692
|
+
SIZE_CLASSES[size],
|
|
693
|
+
logo.className
|
|
694
|
+
),
|
|
695
|
+
alt: logo.alt || "Logo",
|
|
696
|
+
optixFlowConfig,
|
|
697
|
+
loading: "eager"
|
|
698
|
+
}
|
|
699
|
+
);
|
|
700
|
+
if (logo.url) {
|
|
701
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
702
|
+
pressable.Pressable,
|
|
703
|
+
{
|
|
704
|
+
href: logo.url,
|
|
705
|
+
className: cn("flex items-center", logoClassName),
|
|
706
|
+
children: imgElement
|
|
707
|
+
}
|
|
708
|
+
);
|
|
709
|
+
}
|
|
710
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
|
|
711
|
+
};
|
|
712
|
+
var brand_logo_default = BrandLogo;
|
|
671
713
|
var HERO_TECH_CAROUSEL_MAX_ITEMS = 4;
|
|
672
|
-
function resolveLogoSrc(logo) {
|
|
673
|
-
if (typeof logo.src === "string") return logo.src;
|
|
674
|
-
return logo.src?.light;
|
|
675
|
-
}
|
|
676
714
|
function HeroPanel({
|
|
677
715
|
item,
|
|
678
716
|
defaultAutoplayIntervalMs,
|
|
@@ -682,6 +720,7 @@ function HeroPanel({
|
|
|
682
720
|
const {
|
|
683
721
|
logo,
|
|
684
722
|
logoSlot,
|
|
723
|
+
logoClassName,
|
|
685
724
|
title,
|
|
686
725
|
content,
|
|
687
726
|
actions,
|
|
@@ -690,7 +729,6 @@ function HeroPanel({
|
|
|
690
729
|
id,
|
|
691
730
|
className,
|
|
692
731
|
contentClassName,
|
|
693
|
-
logoClassName,
|
|
694
732
|
titleClassName,
|
|
695
733
|
textClassName,
|
|
696
734
|
actionsClassName,
|
|
@@ -762,24 +800,18 @@ function HeroPanel({
|
|
|
762
800
|
]);
|
|
763
801
|
const hasBackground = !!backgroundMedia && backgroundMedia.length > 0;
|
|
764
802
|
const renderLogo = React3.useMemo(() => {
|
|
765
|
-
if (logoSlot) return
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
if (!src) return null;
|
|
769
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
770
|
-
img.Img,
|
|
803
|
+
if (!logoSlot && !logo?.src) return null;
|
|
804
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex justify-center", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
805
|
+
brand_logo_default,
|
|
771
806
|
{
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
"h-10 md:h-12 lg:h-14 w-auto object-contain",
|
|
776
|
-
logo.imgClassName,
|
|
777
|
-
logoClassName
|
|
778
|
-
),
|
|
807
|
+
logo,
|
|
808
|
+
logoSlot,
|
|
809
|
+
size: "md",
|
|
779
810
|
optixFlowConfig: resolvedOptixFlow
|
|
780
811
|
}
|
|
781
|
-
);
|
|
812
|
+
) });
|
|
782
813
|
}, [logoSlot, logo, logoClassName, resolvedOptixFlow]);
|
|
814
|
+
const hasLogo = !!renderLogo;
|
|
783
815
|
const renderTitle = React3.useMemo(() => {
|
|
784
816
|
if (title === void 0 || title === null || title === "") return null;
|
|
785
817
|
if (typeof title === "string") {
|
|
@@ -787,7 +819,8 @@ function HeroPanel({
|
|
|
787
819
|
"h2",
|
|
788
820
|
{
|
|
789
821
|
className: cn(
|
|
790
|
-
"
|
|
822
|
+
"font-semibold text-balance",
|
|
823
|
+
hasLogo ? "text-lg lg:text-xl" : "text-xl md:text-2xl lg:text-3xl",
|
|
791
824
|
hasBackground && "text-white text-shadow-lg",
|
|
792
825
|
titleClassName
|
|
793
826
|
),
|
|
@@ -796,7 +829,7 @@ function HeroPanel({
|
|
|
796
829
|
);
|
|
797
830
|
}
|
|
798
831
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title });
|
|
799
|
-
}, [title, titleClassName, hasBackground]);
|
|
832
|
+
}, [title, titleClassName, hasBackground, hasLogo]);
|
|
800
833
|
const renderContent = React3.useMemo(() => {
|
|
801
834
|
if (content === void 0 || content === null || content === "")
|
|
802
835
|
return null;
|
|
@@ -836,7 +869,7 @@ function HeroPanel({
|
|
|
836
869
|
"div",
|
|
837
870
|
{
|
|
838
871
|
className: cn(
|
|
839
|
-
"relative z-10 flex h-full w-full flex-col items-center justify-center gap-4
|
|
872
|
+
"relative z-10 flex h-full w-full flex-col items-center justify-center gap-4",
|
|
840
873
|
// Mobile padding keeps content readable when stacked.
|
|
841
874
|
"px-6 py-12 md:px-8 md:py-12 lg:px-10",
|
|
842
875
|
// Center content vertically; on desktop columns can be quite tall.
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { ImageSliderImage } from './image-slider.cjs';
|
|
3
3
|
import { S as SectionBackground, s as SectionSpacing, t as PatternName } from './community-initiatives-Cgd-IXlI.cjs';
|
|
4
|
-
import { L as
|
|
4
|
+
import { L as LogoConfig } from './types-mWZcgKth.cjs';
|
|
5
|
+
import { A as ActionConfig, O as OptixFlowConfig } from './blocks-DyouPohq.cjs';
|
|
5
6
|
import 'react/jsx-runtime';
|
|
6
7
|
import 'class-variance-authority';
|
|
7
8
|
import '@page-speed/pressable';
|
|
8
9
|
import '@opensite/hooks/usePlatformFromUrl';
|
|
10
|
+
import './dynamic-icon.cjs';
|
|
11
|
+
import '@page-speed/icon';
|
|
9
12
|
|
|
10
13
|
/**
|
|
11
14
|
* Configuration for a single panel in the {@link HeroTechCarousel} block.
|
|
@@ -31,15 +34,18 @@ import '@opensite/hooks/usePlatformFromUrl';
|
|
|
31
34
|
*/
|
|
32
35
|
interface HeroPanelItem {
|
|
33
36
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* Default styling applies `object-contain` so SVG/PNG logos preserve aspect ratio.
|
|
37
|
+
* Brand logo configuration — renders above the announcement badge.
|
|
38
|
+
* LOGO MEDIA ONLY. Do not use photos, hero images, or video assets.
|
|
37
39
|
*/
|
|
38
|
-
logo?:
|
|
40
|
+
logo?: LogoConfig;
|
|
39
41
|
/**
|
|
40
|
-
* Custom slot for
|
|
42
|
+
* Custom slot for logo (overrides logo prop)
|
|
41
43
|
*/
|
|
42
44
|
logoSlot?: React.ReactNode;
|
|
45
|
+
/**
|
|
46
|
+
* Additional CSS classes for the logo container
|
|
47
|
+
*/
|
|
48
|
+
logoClassName?: string;
|
|
43
49
|
/**
|
|
44
50
|
* Optional panel title.
|
|
45
51
|
*/
|
|
@@ -77,10 +83,6 @@ interface HeroPanelItem {
|
|
|
77
83
|
* Additional CSS classes for the panel's content layer (above the background).
|
|
78
84
|
*/
|
|
79
85
|
contentClassName?: string;
|
|
80
|
-
/**
|
|
81
|
-
* Additional CSS classes for the panel's logo element.
|
|
82
|
-
*/
|
|
83
|
-
logoClassName?: string;
|
|
84
86
|
/**
|
|
85
87
|
* Additional CSS classes for the panel's title element.
|
|
86
88
|
*/
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { ImageSliderImage } from './image-slider.js';
|
|
3
3
|
import { S as SectionBackground, s as SectionSpacing, t as PatternName } from './community-initiatives-Dud0DKXB.js';
|
|
4
|
-
import { L as
|
|
4
|
+
import { L as LogoConfig } from './types-hJ2R0GoH.js';
|
|
5
|
+
import { A as ActionConfig, O as OptixFlowConfig } from './blocks-DyouPohq.js';
|
|
5
6
|
import 'react/jsx-runtime';
|
|
6
7
|
import 'class-variance-authority';
|
|
7
8
|
import '@page-speed/pressable';
|
|
8
9
|
import '@opensite/hooks/usePlatformFromUrl';
|
|
10
|
+
import './dynamic-icon.js';
|
|
11
|
+
import '@page-speed/icon';
|
|
9
12
|
|
|
10
13
|
/**
|
|
11
14
|
* Configuration for a single panel in the {@link HeroTechCarousel} block.
|
|
@@ -31,15 +34,18 @@ import '@opensite/hooks/usePlatformFromUrl';
|
|
|
31
34
|
*/
|
|
32
35
|
interface HeroPanelItem {
|
|
33
36
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* Default styling applies `object-contain` so SVG/PNG logos preserve aspect ratio.
|
|
37
|
+
* Brand logo configuration — renders above the announcement badge.
|
|
38
|
+
* LOGO MEDIA ONLY. Do not use photos, hero images, or video assets.
|
|
37
39
|
*/
|
|
38
|
-
logo?:
|
|
40
|
+
logo?: LogoConfig;
|
|
39
41
|
/**
|
|
40
|
-
* Custom slot for
|
|
42
|
+
* Custom slot for logo (overrides logo prop)
|
|
41
43
|
*/
|
|
42
44
|
logoSlot?: React.ReactNode;
|
|
45
|
+
/**
|
|
46
|
+
* Additional CSS classes for the logo container
|
|
47
|
+
*/
|
|
48
|
+
logoClassName?: string;
|
|
43
49
|
/**
|
|
44
50
|
* Optional panel title.
|
|
45
51
|
*/
|
|
@@ -77,10 +83,6 @@ interface HeroPanelItem {
|
|
|
77
83
|
* Additional CSS classes for the panel's content layer (above the background).
|
|
78
84
|
*/
|
|
79
85
|
contentClassName?: string;
|
|
80
|
-
/**
|
|
81
|
-
* Additional CSS classes for the panel's logo element.
|
|
82
|
-
*/
|
|
83
|
-
logoClassName?: string;
|
|
84
86
|
/**
|
|
85
87
|
* Additional CSS classes for the panel's title element.
|
|
86
88
|
*/
|
|
@@ -647,11 +647,49 @@ function ActionComponent({ action }) {
|
|
|
647
647
|
}
|
|
648
648
|
);
|
|
649
649
|
}
|
|
650
|
+
var SIZE_CLASSES = {
|
|
651
|
+
sm: "max-h-6 sm:max-h-7",
|
|
652
|
+
md: "max-h-8 sm:max-h-9 lg:max-h-10",
|
|
653
|
+
lg: "max-h-10 sm:max-h-12 lg:max-h-14",
|
|
654
|
+
xl: "max-h-12 sm:max-h-14 lg:max-h-16"
|
|
655
|
+
};
|
|
656
|
+
var BrandLogo = ({
|
|
657
|
+
logo,
|
|
658
|
+
logoSlot,
|
|
659
|
+
logoClassName,
|
|
660
|
+
size = "md",
|
|
661
|
+
optixFlowConfig
|
|
662
|
+
}) => {
|
|
663
|
+
if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
|
|
664
|
+
if (!logo || !logo.src) return null;
|
|
665
|
+
const imgElement = /* @__PURE__ */ jsx(
|
|
666
|
+
Img,
|
|
667
|
+
{
|
|
668
|
+
src: logo.src,
|
|
669
|
+
className: cn(
|
|
670
|
+
"w-auto object-contain",
|
|
671
|
+
SIZE_CLASSES[size],
|
|
672
|
+
logo.className
|
|
673
|
+
),
|
|
674
|
+
alt: logo.alt || "Logo",
|
|
675
|
+
optixFlowConfig,
|
|
676
|
+
loading: "eager"
|
|
677
|
+
}
|
|
678
|
+
);
|
|
679
|
+
if (logo.url) {
|
|
680
|
+
return /* @__PURE__ */ jsx(
|
|
681
|
+
Pressable,
|
|
682
|
+
{
|
|
683
|
+
href: logo.url,
|
|
684
|
+
className: cn("flex items-center", logoClassName),
|
|
685
|
+
children: imgElement
|
|
686
|
+
}
|
|
687
|
+
);
|
|
688
|
+
}
|
|
689
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
|
|
690
|
+
};
|
|
691
|
+
var brand_logo_default = BrandLogo;
|
|
650
692
|
var HERO_TECH_CAROUSEL_MAX_ITEMS = 4;
|
|
651
|
-
function resolveLogoSrc(logo) {
|
|
652
|
-
if (typeof logo.src === "string") return logo.src;
|
|
653
|
-
return logo.src?.light;
|
|
654
|
-
}
|
|
655
693
|
function HeroPanel({
|
|
656
694
|
item,
|
|
657
695
|
defaultAutoplayIntervalMs,
|
|
@@ -661,6 +699,7 @@ function HeroPanel({
|
|
|
661
699
|
const {
|
|
662
700
|
logo,
|
|
663
701
|
logoSlot,
|
|
702
|
+
logoClassName,
|
|
664
703
|
title,
|
|
665
704
|
content,
|
|
666
705
|
actions,
|
|
@@ -669,7 +708,6 @@ function HeroPanel({
|
|
|
669
708
|
id,
|
|
670
709
|
className,
|
|
671
710
|
contentClassName,
|
|
672
|
-
logoClassName,
|
|
673
711
|
titleClassName,
|
|
674
712
|
textClassName,
|
|
675
713
|
actionsClassName,
|
|
@@ -741,24 +779,18 @@ function HeroPanel({
|
|
|
741
779
|
]);
|
|
742
780
|
const hasBackground = !!backgroundMedia && backgroundMedia.length > 0;
|
|
743
781
|
const renderLogo = useMemo(() => {
|
|
744
|
-
if (logoSlot) return
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
if (!src) return null;
|
|
748
|
-
return /* @__PURE__ */ jsx(
|
|
749
|
-
Img,
|
|
782
|
+
if (!logoSlot && !logo?.src) return null;
|
|
783
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex justify-center", logoClassName), children: /* @__PURE__ */ jsx(
|
|
784
|
+
brand_logo_default,
|
|
750
785
|
{
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
"h-10 md:h-12 lg:h-14 w-auto object-contain",
|
|
755
|
-
logo.imgClassName,
|
|
756
|
-
logoClassName
|
|
757
|
-
),
|
|
786
|
+
logo,
|
|
787
|
+
logoSlot,
|
|
788
|
+
size: "md",
|
|
758
789
|
optixFlowConfig: resolvedOptixFlow
|
|
759
790
|
}
|
|
760
|
-
);
|
|
791
|
+
) });
|
|
761
792
|
}, [logoSlot, logo, logoClassName, resolvedOptixFlow]);
|
|
793
|
+
const hasLogo = !!renderLogo;
|
|
762
794
|
const renderTitle = useMemo(() => {
|
|
763
795
|
if (title === void 0 || title === null || title === "") return null;
|
|
764
796
|
if (typeof title === "string") {
|
|
@@ -766,7 +798,8 @@ function HeroPanel({
|
|
|
766
798
|
"h2",
|
|
767
799
|
{
|
|
768
800
|
className: cn(
|
|
769
|
-
"
|
|
801
|
+
"font-semibold text-balance",
|
|
802
|
+
hasLogo ? "text-lg lg:text-xl" : "text-xl md:text-2xl lg:text-3xl",
|
|
770
803
|
hasBackground && "text-white text-shadow-lg",
|
|
771
804
|
titleClassName
|
|
772
805
|
),
|
|
@@ -775,7 +808,7 @@ function HeroPanel({
|
|
|
775
808
|
);
|
|
776
809
|
}
|
|
777
810
|
return /* @__PURE__ */ jsx("div", { className: titleClassName, children: title });
|
|
778
|
-
}, [title, titleClassName, hasBackground]);
|
|
811
|
+
}, [title, titleClassName, hasBackground, hasLogo]);
|
|
779
812
|
const renderContent = useMemo(() => {
|
|
780
813
|
if (content === void 0 || content === null || content === "")
|
|
781
814
|
return null;
|
|
@@ -815,7 +848,7 @@ function HeroPanel({
|
|
|
815
848
|
"div",
|
|
816
849
|
{
|
|
817
850
|
className: cn(
|
|
818
|
-
"relative z-10 flex h-full w-full flex-col items-center justify-center gap-4
|
|
851
|
+
"relative z-10 flex h-full w-full flex-col items-center justify-center gap-4",
|
|
819
852
|
// Mobile padding keeps content readable when stacked.
|
|
820
853
|
"px-6 py-12 md:px-8 md:py-12 lg:px-10",
|
|
821
854
|
// Center content vertically; on desktop columns can be quite tall.
|
package/dist/registry.cjs
CHANGED
|
@@ -50995,7 +50995,7 @@ function HeroLogoCenteredScreenshot({
|
|
|
50995
50995
|
imageSlot: imageSlot2,
|
|
50996
50996
|
background,
|
|
50997
50997
|
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
50998
|
-
spacing = "
|
|
50998
|
+
spacing = "hero",
|
|
50999
50999
|
pattern,
|
|
51000
51000
|
patternOpacity,
|
|
51001
51001
|
className,
|
|
@@ -51031,7 +51031,7 @@ function HeroLogoCenteredScreenshot({
|
|
|
51031
51031
|
src: image.src,
|
|
51032
51032
|
alt: image.alt,
|
|
51033
51033
|
className: cn(
|
|
51034
|
-
"mt-20 w-full rounded-xl object-cover h-auto shadow-xl",
|
|
51034
|
+
"mt-10 md:mt-20 w-full rounded-xl object-cover h-auto shadow-xl",
|
|
51035
51035
|
imageClassName,
|
|
51036
51036
|
image.className
|
|
51037
51037
|
),
|
|
@@ -51351,10 +51351,6 @@ function HeroAnnouncementBadge({
|
|
|
51351
51351
|
);
|
|
51352
51352
|
}
|
|
51353
51353
|
var HERO_TECH_CAROUSEL_MAX_ITEMS = 4;
|
|
51354
|
-
function resolveLogoSrc(logo) {
|
|
51355
|
-
if (typeof logo.src === "string") return logo.src;
|
|
51356
|
-
return logo.src?.light;
|
|
51357
|
-
}
|
|
51358
51354
|
function HeroPanel({
|
|
51359
51355
|
item,
|
|
51360
51356
|
defaultAutoplayIntervalMs,
|
|
@@ -51364,6 +51360,7 @@ function HeroPanel({
|
|
|
51364
51360
|
const {
|
|
51365
51361
|
logo,
|
|
51366
51362
|
logoSlot: logoSlot2,
|
|
51363
|
+
logoClassName,
|
|
51367
51364
|
title,
|
|
51368
51365
|
content,
|
|
51369
51366
|
actions,
|
|
@@ -51372,7 +51369,6 @@ function HeroPanel({
|
|
|
51372
51369
|
id,
|
|
51373
51370
|
className,
|
|
51374
51371
|
contentClassName,
|
|
51375
|
-
logoClassName,
|
|
51376
51372
|
titleClassName,
|
|
51377
51373
|
textClassName,
|
|
51378
51374
|
actionsClassName,
|
|
@@ -51444,24 +51440,18 @@ function HeroPanel({
|
|
|
51444
51440
|
]);
|
|
51445
51441
|
const hasBackground = !!backgroundMedia && backgroundMedia.length > 0;
|
|
51446
51442
|
const renderLogo = React30.useMemo(() => {
|
|
51447
|
-
if (logoSlot2) return
|
|
51448
|
-
|
|
51449
|
-
|
|
51450
|
-
if (!src) return null;
|
|
51451
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
51452
|
-
img$1.Img,
|
|
51443
|
+
if (!logoSlot2 && !logo?.src) return null;
|
|
51444
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex justify-center", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
51445
|
+
brand_logo_default,
|
|
51453
51446
|
{
|
|
51454
|
-
|
|
51455
|
-
|
|
51456
|
-
|
|
51457
|
-
"h-10 md:h-12 lg:h-14 w-auto object-contain",
|
|
51458
|
-
logo.imgClassName,
|
|
51459
|
-
logoClassName
|
|
51460
|
-
),
|
|
51447
|
+
logo,
|
|
51448
|
+
logoSlot: logoSlot2,
|
|
51449
|
+
size: "md",
|
|
51461
51450
|
optixFlowConfig: resolvedOptixFlow
|
|
51462
51451
|
}
|
|
51463
|
-
);
|
|
51452
|
+
) });
|
|
51464
51453
|
}, [logoSlot2, logo, logoClassName, resolvedOptixFlow]);
|
|
51454
|
+
const hasLogo = !!renderLogo;
|
|
51465
51455
|
const renderTitle = React30.useMemo(() => {
|
|
51466
51456
|
if (title === void 0 || title === null || title === "") return null;
|
|
51467
51457
|
if (typeof title === "string") {
|
|
@@ -51469,7 +51459,8 @@ function HeroPanel({
|
|
|
51469
51459
|
"h2",
|
|
51470
51460
|
{
|
|
51471
51461
|
className: cn(
|
|
51472
|
-
"
|
|
51462
|
+
"font-semibold text-balance",
|
|
51463
|
+
hasLogo ? "text-lg lg:text-xl" : "text-xl md:text-2xl lg:text-3xl",
|
|
51473
51464
|
hasBackground && "text-white text-shadow-lg",
|
|
51474
51465
|
titleClassName
|
|
51475
51466
|
),
|
|
@@ -51478,7 +51469,7 @@ function HeroPanel({
|
|
|
51478
51469
|
);
|
|
51479
51470
|
}
|
|
51480
51471
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title });
|
|
51481
|
-
}, [title, titleClassName, hasBackground]);
|
|
51472
|
+
}, [title, titleClassName, hasBackground, hasLogo]);
|
|
51482
51473
|
const renderContent = React30.useMemo(() => {
|
|
51483
51474
|
if (content === void 0 || content === null || content === "")
|
|
51484
51475
|
return null;
|
|
@@ -51518,7 +51509,7 @@ function HeroPanel({
|
|
|
51518
51509
|
"div",
|
|
51519
51510
|
{
|
|
51520
51511
|
className: cn(
|
|
51521
|
-
"relative z-10 flex h-full w-full flex-col items-center justify-center gap-4
|
|
51512
|
+
"relative z-10 flex h-full w-full flex-col items-center justify-center gap-4",
|
|
51522
51513
|
// Mobile padding keeps content readable when stacked.
|
|
51523
51514
|
"px-6 py-12 md:px-8 md:py-12 lg:px-10",
|
|
51524
51515
|
// Center content vertically; on desktop columns can be quite tall.
|
|
@@ -51736,6 +51727,7 @@ function HeroPlatformFeaturesGrid({
|
|
|
51736
51727
|
sectionId = "hero-platform-features-grid",
|
|
51737
51728
|
logo,
|
|
51738
51729
|
logoSlot: logoSlot2,
|
|
51730
|
+
logoClassName,
|
|
51739
51731
|
subtitle,
|
|
51740
51732
|
description,
|
|
51741
51733
|
heading,
|
|
@@ -51754,23 +51746,6 @@ function HeroPlatformFeaturesGrid({
|
|
|
51754
51746
|
featuresClassName,
|
|
51755
51747
|
optixFlowConfig
|
|
51756
51748
|
}) {
|
|
51757
|
-
const renderLogo = React30.useMemo(() => {
|
|
51758
|
-
if (logoSlot2) return logoSlot2;
|
|
51759
|
-
if (!logo) return null;
|
|
51760
|
-
const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
|
|
51761
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
51762
|
-
img$1.Img,
|
|
51763
|
-
{
|
|
51764
|
-
src: logoSrc,
|
|
51765
|
-
alt: logo.alt,
|
|
51766
|
-
className: cn(
|
|
51767
|
-
"mx-auto mb-5 w-24 md:mb-6 md:w-28 lg:mb-7 lg:w-32",
|
|
51768
|
-
logo.imgClassName
|
|
51769
|
-
),
|
|
51770
|
-
optixFlowConfig
|
|
51771
|
-
}
|
|
51772
|
-
);
|
|
51773
|
-
}, [logoSlot2, logo, optixFlowConfig]);
|
|
51774
51749
|
const renderAction = React30.useMemo(() => {
|
|
51775
51750
|
if (actionSlot) return actionSlot;
|
|
51776
51751
|
if (!action) return null;
|
|
@@ -51835,28 +51810,35 @@ function HeroPlatformFeaturesGrid({
|
|
|
51835
51810
|
headerClassName
|
|
51836
51811
|
),
|
|
51837
51812
|
children: [
|
|
51838
|
-
|
|
51839
|
-
subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
51813
|
+
logo || logoSlot2 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex justify-center", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(brand_logo_default, { logo, logoSlot: logoSlot2, size: "lg" }) }) : null,
|
|
51814
|
+
subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
51815
|
+
"span",
|
|
51816
|
+
{
|
|
51817
|
+
className: cn(
|
|
51818
|
+
"text-sm tracking-widest md:text-base opacity-50"
|
|
51819
|
+
),
|
|
51820
|
+
children: subtitle
|
|
51821
|
+
}
|
|
51822
|
+
) : subtitle),
|
|
51840
51823
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
51841
51824
|
"h1",
|
|
51842
51825
|
{
|
|
51843
51826
|
className: cn(
|
|
51844
|
-
"
|
|
51827
|
+
"text-4xl font-semibold text-balance lg:text-6xl",
|
|
51845
51828
|
headingClassName
|
|
51846
51829
|
),
|
|
51847
51830
|
children: heading
|
|
51848
51831
|
}
|
|
51849
|
-
) :
|
|
51850
|
-
|
|
51832
|
+
) : heading),
|
|
51833
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
51834
|
+
"p",
|
|
51851
51835
|
{
|
|
51852
51836
|
className: cn(
|
|
51853
|
-
"
|
|
51854
|
-
headingClassName
|
|
51837
|
+
"mb-6 max-w-full md:max-w-md text-base md:text-lg text-balance"
|
|
51855
51838
|
),
|
|
51856
|
-
children:
|
|
51839
|
+
children: description
|
|
51857
51840
|
}
|
|
51858
|
-
)),
|
|
51859
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-6 max-w-2xl md:text-lg text-balance"), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("max-w-2xl md:text-lg text-balance"), children: description })),
|
|
51841
|
+
) : description),
|
|
51860
51842
|
renderAction
|
|
51861
51843
|
]
|
|
51862
51844
|
}
|
package/dist/registry.js
CHANGED
|
@@ -50955,7 +50955,7 @@ function HeroLogoCenteredScreenshot({
|
|
|
50955
50955
|
imageSlot: imageSlot2,
|
|
50956
50956
|
background,
|
|
50957
50957
|
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
50958
|
-
spacing = "
|
|
50958
|
+
spacing = "hero",
|
|
50959
50959
|
pattern,
|
|
50960
50960
|
patternOpacity,
|
|
50961
50961
|
className,
|
|
@@ -50991,7 +50991,7 @@ function HeroLogoCenteredScreenshot({
|
|
|
50991
50991
|
src: image.src,
|
|
50992
50992
|
alt: image.alt,
|
|
50993
50993
|
className: cn(
|
|
50994
|
-
"mt-20 w-full rounded-xl object-cover h-auto shadow-xl",
|
|
50994
|
+
"mt-10 md:mt-20 w-full rounded-xl object-cover h-auto shadow-xl",
|
|
50995
50995
|
imageClassName,
|
|
50996
50996
|
image.className
|
|
50997
50997
|
),
|
|
@@ -51311,10 +51311,6 @@ function HeroAnnouncementBadge({
|
|
|
51311
51311
|
);
|
|
51312
51312
|
}
|
|
51313
51313
|
var HERO_TECH_CAROUSEL_MAX_ITEMS = 4;
|
|
51314
|
-
function resolveLogoSrc(logo) {
|
|
51315
|
-
if (typeof logo.src === "string") return logo.src;
|
|
51316
|
-
return logo.src?.light;
|
|
51317
|
-
}
|
|
51318
51314
|
function HeroPanel({
|
|
51319
51315
|
item,
|
|
51320
51316
|
defaultAutoplayIntervalMs,
|
|
@@ -51324,6 +51320,7 @@ function HeroPanel({
|
|
|
51324
51320
|
const {
|
|
51325
51321
|
logo,
|
|
51326
51322
|
logoSlot: logoSlot2,
|
|
51323
|
+
logoClassName,
|
|
51327
51324
|
title,
|
|
51328
51325
|
content,
|
|
51329
51326
|
actions,
|
|
@@ -51332,7 +51329,6 @@ function HeroPanel({
|
|
|
51332
51329
|
id,
|
|
51333
51330
|
className,
|
|
51334
51331
|
contentClassName,
|
|
51335
|
-
logoClassName,
|
|
51336
51332
|
titleClassName,
|
|
51337
51333
|
textClassName,
|
|
51338
51334
|
actionsClassName,
|
|
@@ -51404,24 +51400,18 @@ function HeroPanel({
|
|
|
51404
51400
|
]);
|
|
51405
51401
|
const hasBackground = !!backgroundMedia && backgroundMedia.length > 0;
|
|
51406
51402
|
const renderLogo = useMemo(() => {
|
|
51407
|
-
if (logoSlot2) return
|
|
51408
|
-
|
|
51409
|
-
|
|
51410
|
-
if (!src) return null;
|
|
51411
|
-
return /* @__PURE__ */ jsx(
|
|
51412
|
-
Img,
|
|
51403
|
+
if (!logoSlot2 && !logo?.src) return null;
|
|
51404
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex justify-center", logoClassName), children: /* @__PURE__ */ jsx(
|
|
51405
|
+
brand_logo_default,
|
|
51413
51406
|
{
|
|
51414
|
-
|
|
51415
|
-
|
|
51416
|
-
|
|
51417
|
-
"h-10 md:h-12 lg:h-14 w-auto object-contain",
|
|
51418
|
-
logo.imgClassName,
|
|
51419
|
-
logoClassName
|
|
51420
|
-
),
|
|
51407
|
+
logo,
|
|
51408
|
+
logoSlot: logoSlot2,
|
|
51409
|
+
size: "md",
|
|
51421
51410
|
optixFlowConfig: resolvedOptixFlow
|
|
51422
51411
|
}
|
|
51423
|
-
);
|
|
51412
|
+
) });
|
|
51424
51413
|
}, [logoSlot2, logo, logoClassName, resolvedOptixFlow]);
|
|
51414
|
+
const hasLogo = !!renderLogo;
|
|
51425
51415
|
const renderTitle = useMemo(() => {
|
|
51426
51416
|
if (title === void 0 || title === null || title === "") return null;
|
|
51427
51417
|
if (typeof title === "string") {
|
|
@@ -51429,7 +51419,8 @@ function HeroPanel({
|
|
|
51429
51419
|
"h2",
|
|
51430
51420
|
{
|
|
51431
51421
|
className: cn(
|
|
51432
|
-
"
|
|
51422
|
+
"font-semibold text-balance",
|
|
51423
|
+
hasLogo ? "text-lg lg:text-xl" : "text-xl md:text-2xl lg:text-3xl",
|
|
51433
51424
|
hasBackground && "text-white text-shadow-lg",
|
|
51434
51425
|
titleClassName
|
|
51435
51426
|
),
|
|
@@ -51438,7 +51429,7 @@ function HeroPanel({
|
|
|
51438
51429
|
);
|
|
51439
51430
|
}
|
|
51440
51431
|
return /* @__PURE__ */ jsx("div", { className: titleClassName, children: title });
|
|
51441
|
-
}, [title, titleClassName, hasBackground]);
|
|
51432
|
+
}, [title, titleClassName, hasBackground, hasLogo]);
|
|
51442
51433
|
const renderContent = useMemo(() => {
|
|
51443
51434
|
if (content === void 0 || content === null || content === "")
|
|
51444
51435
|
return null;
|
|
@@ -51478,7 +51469,7 @@ function HeroPanel({
|
|
|
51478
51469
|
"div",
|
|
51479
51470
|
{
|
|
51480
51471
|
className: cn(
|
|
51481
|
-
"relative z-10 flex h-full w-full flex-col items-center justify-center gap-4
|
|
51472
|
+
"relative z-10 flex h-full w-full flex-col items-center justify-center gap-4",
|
|
51482
51473
|
// Mobile padding keeps content readable when stacked.
|
|
51483
51474
|
"px-6 py-12 md:px-8 md:py-12 lg:px-10",
|
|
51484
51475
|
// Center content vertically; on desktop columns can be quite tall.
|
|
@@ -51696,6 +51687,7 @@ function HeroPlatformFeaturesGrid({
|
|
|
51696
51687
|
sectionId = "hero-platform-features-grid",
|
|
51697
51688
|
logo,
|
|
51698
51689
|
logoSlot: logoSlot2,
|
|
51690
|
+
logoClassName,
|
|
51699
51691
|
subtitle,
|
|
51700
51692
|
description,
|
|
51701
51693
|
heading,
|
|
@@ -51714,23 +51706,6 @@ function HeroPlatformFeaturesGrid({
|
|
|
51714
51706
|
featuresClassName,
|
|
51715
51707
|
optixFlowConfig
|
|
51716
51708
|
}) {
|
|
51717
|
-
const renderLogo = useMemo(() => {
|
|
51718
|
-
if (logoSlot2) return logoSlot2;
|
|
51719
|
-
if (!logo) return null;
|
|
51720
|
-
const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
|
|
51721
|
-
return /* @__PURE__ */ jsx(
|
|
51722
|
-
Img,
|
|
51723
|
-
{
|
|
51724
|
-
src: logoSrc,
|
|
51725
|
-
alt: logo.alt,
|
|
51726
|
-
className: cn(
|
|
51727
|
-
"mx-auto mb-5 w-24 md:mb-6 md:w-28 lg:mb-7 lg:w-32",
|
|
51728
|
-
logo.imgClassName
|
|
51729
|
-
),
|
|
51730
|
-
optixFlowConfig
|
|
51731
|
-
}
|
|
51732
|
-
);
|
|
51733
|
-
}, [logoSlot2, logo, optixFlowConfig]);
|
|
51734
51709
|
const renderAction = useMemo(() => {
|
|
51735
51710
|
if (actionSlot) return actionSlot;
|
|
51736
51711
|
if (!action) return null;
|
|
@@ -51795,28 +51770,35 @@ function HeroPlatformFeaturesGrid({
|
|
|
51795
51770
|
headerClassName
|
|
51796
51771
|
),
|
|
51797
51772
|
children: [
|
|
51798
|
-
|
|
51799
|
-
subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsx(
|
|
51773
|
+
logo || logoSlot2 ? /* @__PURE__ */ jsx("div", { className: cn("flex justify-center", logoClassName), children: /* @__PURE__ */ jsx(brand_logo_default, { logo, logoSlot: logoSlot2, size: "lg" }) }) : null,
|
|
51774
|
+
subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsx(
|
|
51775
|
+
"span",
|
|
51776
|
+
{
|
|
51777
|
+
className: cn(
|
|
51778
|
+
"text-sm tracking-widest md:text-base opacity-50"
|
|
51779
|
+
),
|
|
51780
|
+
children: subtitle
|
|
51781
|
+
}
|
|
51782
|
+
) : subtitle),
|
|
51800
51783
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
|
|
51801
51784
|
"h1",
|
|
51802
51785
|
{
|
|
51803
51786
|
className: cn(
|
|
51804
|
-
"
|
|
51787
|
+
"text-4xl font-semibold text-balance lg:text-6xl",
|
|
51805
51788
|
headingClassName
|
|
51806
51789
|
),
|
|
51807
51790
|
children: heading
|
|
51808
51791
|
}
|
|
51809
|
-
) :
|
|
51810
|
-
|
|
51792
|
+
) : heading),
|
|
51793
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx(
|
|
51794
|
+
"p",
|
|
51811
51795
|
{
|
|
51812
51796
|
className: cn(
|
|
51813
|
-
"
|
|
51814
|
-
headingClassName
|
|
51797
|
+
"mb-6 max-w-full md:max-w-md text-base md:text-lg text-balance"
|
|
51815
51798
|
),
|
|
51816
|
-
children:
|
|
51799
|
+
children: description
|
|
51817
51800
|
}
|
|
51818
|
-
)),
|
|
51819
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-6 max-w-2xl md:text-lg text-balance"), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("max-w-2xl md:text-lg text-balance"), children: description })),
|
|
51801
|
+
) : description),
|
|
51820
51802
|
renderAction
|
|
51821
51803
|
]
|
|
51822
51804
|
}
|
|
@@ -77,6 +77,6 @@ interface SocialLinkIconProps extends Omit<PressableProps, "children">, SocialLi
|
|
|
77
77
|
* />
|
|
78
78
|
* ```
|
|
79
79
|
*/
|
|
80
|
-
declare const SocialLinkIcon: React.ForwardRefExoticComponent<SocialLinkIconProps & React.RefAttributes<
|
|
80
|
+
declare const SocialLinkIcon: React.ForwardRefExoticComponent<SocialLinkIconProps & React.RefAttributes<HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement>>;
|
|
81
81
|
|
|
82
82
|
export { SocialLinkIcon, type SocialLinkIconDynamicIconProps, type SocialLinkIconProps };
|
|
@@ -77,6 +77,6 @@ interface SocialLinkIconProps extends Omit<PressableProps, "children">, SocialLi
|
|
|
77
77
|
* />
|
|
78
78
|
* ```
|
|
79
79
|
*/
|
|
80
|
-
declare const SocialLinkIcon: React.ForwardRefExoticComponent<SocialLinkIconProps & React.RefAttributes<
|
|
80
|
+
declare const SocialLinkIcon: React.ForwardRefExoticComponent<SocialLinkIconProps & React.RefAttributes<HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement>>;
|
|
81
81
|
|
|
82
82
|
export { SocialLinkIcon, type SocialLinkIconDynamicIconProps, type SocialLinkIconProps };
|