@opensite/ui 3.6.5 → 3.6.6
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/brand-logo.cjs +59 -0
- package/dist/brand-logo.d.cts +21 -0
- package/dist/brand-logo.d.ts +21 -0
- package/dist/brand-logo.js +54 -0
- package/dist/hero-dashed-border-features.cjs +57 -7
- package/dist/hero-dashed-border-features.d.cts +17 -1
- package/dist/hero-dashed-border-features.d.ts +17 -1
- package/dist/hero-dashed-border-features.js +57 -7
- package/dist/hero-design-carousel-portfolio.cjs +51 -6
- package/dist/hero-design-carousel-portfolio.js +51 -6
- package/dist/hero-video-overlay-stars.cjs +46 -0
- package/dist/hero-video-overlay-stars.d.cts +17 -1
- package/dist/hero-video-overlay-stars.d.ts +17 -1
- package/dist/hero-video-overlay-stars.js +46 -0
- package/dist/registry.cjs +107 -33
- package/dist/registry.js +107 -33
- package/package.json +6 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
var clsx = require('clsx');
|
|
7
|
+
var tailwindMerge = require('tailwind-merge');
|
|
8
|
+
var pressable = require('@page-speed/pressable');
|
|
9
|
+
var img = require('@page-speed/img');
|
|
10
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
11
|
+
|
|
12
|
+
function cn(...inputs) {
|
|
13
|
+
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
14
|
+
}
|
|
15
|
+
var SIZE_CLASSES = {
|
|
16
|
+
sm: "max-h-6 sm:max-h-7",
|
|
17
|
+
md: "max-h-8 sm:max-h-9 lg:max-h-10",
|
|
18
|
+
lg: "max-h-10 sm:max-h-12 lg:max-h-14",
|
|
19
|
+
xl: "max-h-12 sm:max-h-14 lg:max-h-16"
|
|
20
|
+
};
|
|
21
|
+
var BrandLogo = ({
|
|
22
|
+
logo,
|
|
23
|
+
logoSlot,
|
|
24
|
+
logoClassName,
|
|
25
|
+
size = "md",
|
|
26
|
+
optixFlowConfig
|
|
27
|
+
}) => {
|
|
28
|
+
if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
|
|
29
|
+
if (!logo || !logo.src) return null;
|
|
30
|
+
const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
|
|
31
|
+
img.Img,
|
|
32
|
+
{
|
|
33
|
+
src: logo.src,
|
|
34
|
+
className: cn(
|
|
35
|
+
"w-auto object-contain",
|
|
36
|
+
SIZE_CLASSES[size],
|
|
37
|
+
logo.className
|
|
38
|
+
),
|
|
39
|
+
alt: logo.alt || "Logo",
|
|
40
|
+
optixFlowConfig,
|
|
41
|
+
loading: "eager"
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
if (logo.url) {
|
|
45
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
46
|
+
pressable.Pressable,
|
|
47
|
+
{
|
|
48
|
+
href: logo.url,
|
|
49
|
+
className: cn("flex items-center", logoClassName),
|
|
50
|
+
children: imgElement
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
|
|
55
|
+
};
|
|
56
|
+
var brand_logo_default = BrandLogo;
|
|
57
|
+
|
|
58
|
+
exports.BrandLogo = BrandLogo;
|
|
59
|
+
exports.default = brand_logo_default;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { L as LogoConfig } from './types-mWZcgKth.cjs';
|
|
4
|
+
import { O as OptixFlowConfig } from './blocks-DyouPohq.cjs';
|
|
5
|
+
import './dynamic-icon.cjs';
|
|
6
|
+
import '@page-speed/icon';
|
|
7
|
+
import 'class-variance-authority';
|
|
8
|
+
import '@page-speed/pressable';
|
|
9
|
+
import '@opensite/hooks/usePlatformFromUrl';
|
|
10
|
+
|
|
11
|
+
type BrandLogoSize = "sm" | "md" | "lg" | "xl";
|
|
12
|
+
interface BrandLogoProps {
|
|
13
|
+
logo?: LogoConfig;
|
|
14
|
+
logoSlot?: React.ReactNode;
|
|
15
|
+
logoClassName?: string;
|
|
16
|
+
size?: BrandLogoSize;
|
|
17
|
+
optixFlowConfig?: OptixFlowConfig;
|
|
18
|
+
}
|
|
19
|
+
declare const BrandLogo: ({ logo, logoSlot, logoClassName, size, optixFlowConfig, }: BrandLogoProps) => react_jsx_runtime.JSX.Element | null;
|
|
20
|
+
|
|
21
|
+
export { BrandLogo, type BrandLogoProps, type BrandLogoSize, BrandLogo as default };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { L as LogoConfig } from './types-hJ2R0GoH.js';
|
|
4
|
+
import { O as OptixFlowConfig } from './blocks-DyouPohq.js';
|
|
5
|
+
import './dynamic-icon.js';
|
|
6
|
+
import '@page-speed/icon';
|
|
7
|
+
import 'class-variance-authority';
|
|
8
|
+
import '@page-speed/pressable';
|
|
9
|
+
import '@opensite/hooks/usePlatformFromUrl';
|
|
10
|
+
|
|
11
|
+
type BrandLogoSize = "sm" | "md" | "lg" | "xl";
|
|
12
|
+
interface BrandLogoProps {
|
|
13
|
+
logo?: LogoConfig;
|
|
14
|
+
logoSlot?: React.ReactNode;
|
|
15
|
+
logoClassName?: string;
|
|
16
|
+
size?: BrandLogoSize;
|
|
17
|
+
optixFlowConfig?: OptixFlowConfig;
|
|
18
|
+
}
|
|
19
|
+
declare const BrandLogo: ({ logo, logoSlot, logoClassName, size, optixFlowConfig, }: BrandLogoProps) => react_jsx_runtime.JSX.Element | null;
|
|
20
|
+
|
|
21
|
+
export { BrandLogo, type BrandLogoProps, type BrandLogoSize, BrandLogo as default };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { clsx } from 'clsx';
|
|
3
|
+
import { twMerge } from 'tailwind-merge';
|
|
4
|
+
import { Pressable } from '@page-speed/pressable';
|
|
5
|
+
import { Img } from '@page-speed/img';
|
|
6
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
function cn(...inputs) {
|
|
9
|
+
return twMerge(clsx(inputs));
|
|
10
|
+
}
|
|
11
|
+
var SIZE_CLASSES = {
|
|
12
|
+
sm: "max-h-6 sm:max-h-7",
|
|
13
|
+
md: "max-h-8 sm:max-h-9 lg:max-h-10",
|
|
14
|
+
lg: "max-h-10 sm:max-h-12 lg:max-h-14",
|
|
15
|
+
xl: "max-h-12 sm:max-h-14 lg:max-h-16"
|
|
16
|
+
};
|
|
17
|
+
var BrandLogo = ({
|
|
18
|
+
logo,
|
|
19
|
+
logoSlot,
|
|
20
|
+
logoClassName,
|
|
21
|
+
size = "md",
|
|
22
|
+
optixFlowConfig
|
|
23
|
+
}) => {
|
|
24
|
+
if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
|
|
25
|
+
if (!logo || !logo.src) return null;
|
|
26
|
+
const imgElement = /* @__PURE__ */ jsx(
|
|
27
|
+
Img,
|
|
28
|
+
{
|
|
29
|
+
src: logo.src,
|
|
30
|
+
className: cn(
|
|
31
|
+
"w-auto object-contain",
|
|
32
|
+
SIZE_CLASSES[size],
|
|
33
|
+
logo.className
|
|
34
|
+
),
|
|
35
|
+
alt: logo.alt || "Logo",
|
|
36
|
+
optixFlowConfig,
|
|
37
|
+
loading: "eager"
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
if (logo.url) {
|
|
41
|
+
return /* @__PURE__ */ jsx(
|
|
42
|
+
Pressable,
|
|
43
|
+
{
|
|
44
|
+
href: logo.url,
|
|
45
|
+
className: cn("flex items-center", logoClassName),
|
|
46
|
+
children: imgElement
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
|
|
51
|
+
};
|
|
52
|
+
var brand_logo_default = BrandLogo;
|
|
53
|
+
|
|
54
|
+
export { BrandLogo, brand_logo_default as default };
|
|
@@ -9,6 +9,7 @@ var classVarianceAuthority = require('class-variance-authority');
|
|
|
9
9
|
var jsxRuntime = require('react/jsx-runtime');
|
|
10
10
|
var pressable = require('@page-speed/pressable');
|
|
11
11
|
var icon = require('@page-speed/icon');
|
|
12
|
+
var img = require('@page-speed/img');
|
|
12
13
|
|
|
13
14
|
function _interopNamespace(e) {
|
|
14
15
|
if (e && e.__esModule) return e;
|
|
@@ -79,6 +80,47 @@ var DynamicIcon = React__namespace.memo(function DynamicIcon2({
|
|
|
79
80
|
return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, name, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
80
81
|
});
|
|
81
82
|
DynamicIcon.displayName = "DynamicIcon";
|
|
83
|
+
var SIZE_CLASSES = {
|
|
84
|
+
sm: "max-h-6 sm:max-h-7",
|
|
85
|
+
md: "max-h-8 sm:max-h-9 lg:max-h-10",
|
|
86
|
+
lg: "max-h-10 sm:max-h-12 lg:max-h-14",
|
|
87
|
+
xl: "max-h-12 sm:max-h-14 lg:max-h-16"
|
|
88
|
+
};
|
|
89
|
+
var BrandLogo = ({
|
|
90
|
+
logo,
|
|
91
|
+
logoSlot,
|
|
92
|
+
logoClassName,
|
|
93
|
+
size = "md",
|
|
94
|
+
optixFlowConfig
|
|
95
|
+
}) => {
|
|
96
|
+
if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
|
|
97
|
+
if (!logo || !logo.src) return null;
|
|
98
|
+
const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
|
|
99
|
+
img.Img,
|
|
100
|
+
{
|
|
101
|
+
src: logo.src,
|
|
102
|
+
className: cn(
|
|
103
|
+
"w-auto object-contain",
|
|
104
|
+
SIZE_CLASSES[size],
|
|
105
|
+
logo.className
|
|
106
|
+
),
|
|
107
|
+
alt: logo.alt || "Logo",
|
|
108
|
+
optixFlowConfig,
|
|
109
|
+
loading: "eager"
|
|
110
|
+
}
|
|
111
|
+
);
|
|
112
|
+
if (logo.url) {
|
|
113
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
114
|
+
pressable.Pressable,
|
|
115
|
+
{
|
|
116
|
+
href: logo.url,
|
|
117
|
+
className: cn("flex items-center", logoClassName),
|
|
118
|
+
children: imgElement
|
|
119
|
+
}
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
|
|
123
|
+
};
|
|
82
124
|
var maxWidthStyles = {
|
|
83
125
|
sm: "max-w-screen-sm",
|
|
84
126
|
md: "max-w-screen-md",
|
|
@@ -457,6 +499,9 @@ var Section = React__namespace.default.forwardRef(
|
|
|
457
499
|
Section.displayName = "Section";
|
|
458
500
|
function HeroDashedBorderFeatures({
|
|
459
501
|
sectionId = "hero-dashed-border-features",
|
|
502
|
+
logo,
|
|
503
|
+
logoSlot,
|
|
504
|
+
logoClassName,
|
|
460
505
|
badgeText,
|
|
461
506
|
announcementText,
|
|
462
507
|
announcementHref,
|
|
@@ -468,7 +513,7 @@ function HeroDashedBorderFeatures({
|
|
|
468
513
|
features,
|
|
469
514
|
featuresSlot,
|
|
470
515
|
background,
|
|
471
|
-
spacing = "
|
|
516
|
+
spacing = "hero",
|
|
472
517
|
pattern,
|
|
473
518
|
patternOpacity,
|
|
474
519
|
className,
|
|
@@ -541,14 +586,18 @@ function HeroDashedBorderFeatures({
|
|
|
541
586
|
pressable.Pressable,
|
|
542
587
|
{
|
|
543
588
|
className: cn(
|
|
544
|
-
"flex items-center gap-6 border-t border-dashed p-4
|
|
589
|
+
"flex items-center gap-6 border-t border-dashed p-4 md:justify-center lg:p-10 ",
|
|
590
|
+
feature.href ? "cursor-pointer bg-transparent transition-colors duration-300 hover:bg-card hover:text-card-foreground" : "",
|
|
545
591
|
index === 1 && "md:border-x",
|
|
546
592
|
index === 2 ? "border-b" : "md:border-b"
|
|
547
593
|
),
|
|
548
594
|
href: feature.href,
|
|
549
595
|
children: [
|
|
550
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-10 shrink-0 items-center justify-center rounded-md text-sm lg:size-12 lg:text-base bg-card text-card-foreground", children:
|
|
551
|
-
feature.title
|
|
596
|
+
feature.icon || feature.iconName ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-10 shrink-0 items-center justify-center rounded-md text-sm lg:size-12 lg:text-base bg-card text-card-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.icon || feature.iconName, size: 20 }) }) : null,
|
|
597
|
+
feature.title || feature.description ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-left flex flex-col gap-1", children: [
|
|
598
|
+
feature.title ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium text-base md:text-lg line-clamp-2", children: feature.title }) : null,
|
|
599
|
+
feature.description ? typeof feature.description === "string" && feature.description?.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm md:text-base opacity-70 text-balance line-clamp-1", children: feature.description }) : feature.description : null
|
|
600
|
+
] }) : null
|
|
552
601
|
]
|
|
553
602
|
},
|
|
554
603
|
index
|
|
@@ -565,6 +614,7 @@ function HeroDashedBorderFeatures({
|
|
|
565
614
|
className: cn("relative flex items-center justify-center", className),
|
|
566
615
|
containerClassName,
|
|
567
616
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
617
|
+
(logo || logoSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-6", logoClassName), children: /* @__PURE__ */ jsxRuntime.jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
|
|
568
618
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
569
619
|
"div",
|
|
570
620
|
{
|
|
@@ -578,12 +628,12 @@ function HeroDashedBorderFeatures({
|
|
|
578
628
|
"h1",
|
|
579
629
|
{
|
|
580
630
|
className: cn(
|
|
581
|
-
"my-4 mb-6 text-center text-3xl font-semibold lg:text-8xl",
|
|
631
|
+
"my-4 mb-6 text-center text-3xl font-semibold lg:text-8xl leading-tight",
|
|
582
632
|
headingClassName
|
|
583
633
|
),
|
|
584
634
|
children: heading
|
|
585
635
|
}
|
|
586
|
-
) :
|
|
636
|
+
) : heading),
|
|
587
637
|
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
588
638
|
"p",
|
|
589
639
|
{
|
|
@@ -593,7 +643,7 @@ function HeroDashedBorderFeatures({
|
|
|
593
643
|
),
|
|
594
644
|
children: description
|
|
595
645
|
}
|
|
596
|
-
) :
|
|
646
|
+
) : description),
|
|
597
647
|
renderActions
|
|
598
648
|
] })
|
|
599
649
|
}
|
|
@@ -1,12 +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 LogoConfig } from './types-mWZcgKth.cjs';
|
|
3
4
|
import { A as ActionConfig, F as FeatureItem } 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 HeroDashedBorderFeaturesProps {
|
|
13
|
+
/**
|
|
14
|
+
* Brand logo configuration — renders above the announcement badge.
|
|
15
|
+
* LOGO MEDIA ONLY. Do not use photos, hero images, or video assets.
|
|
16
|
+
*/
|
|
17
|
+
logo?: LogoConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Custom slot for logo (overrides logo prop)
|
|
20
|
+
*/
|
|
21
|
+
logoSlot?: React.ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* Additional CSS classes for the logo container
|
|
24
|
+
*/
|
|
25
|
+
logoClassName?: string;
|
|
10
26
|
/**
|
|
11
27
|
* Badge text content
|
|
12
28
|
*/
|
|
@@ -96,6 +112,6 @@ interface HeroDashedBorderFeaturesProps {
|
|
|
96
112
|
/** Optional Section ID */
|
|
97
113
|
sectionId?: string;
|
|
98
114
|
}
|
|
99
|
-
declare function HeroDashedBorderFeatures({ sectionId, badgeText, announcementText, announcementHref, announcementSlot, heading, description, actions, actionsSlot, features, featuresSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, featuresClassName, }: HeroDashedBorderFeaturesProps): React.JSX.Element;
|
|
115
|
+
declare function HeroDashedBorderFeatures({ sectionId, logo, logoSlot, logoClassName, badgeText, announcementText, announcementHref, announcementSlot, heading, description, actions, actionsSlot, features, featuresSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, featuresClassName, }: HeroDashedBorderFeaturesProps): React.JSX.Element;
|
|
100
116
|
|
|
101
117
|
export { HeroDashedBorderFeatures, type HeroDashedBorderFeaturesProps };
|
|
@@ -1,12 +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 LogoConfig } from './types-hJ2R0GoH.js';
|
|
3
4
|
import { A as ActionConfig, F as FeatureItem } 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 HeroDashedBorderFeaturesProps {
|
|
13
|
+
/**
|
|
14
|
+
* Brand logo configuration — renders above the announcement badge.
|
|
15
|
+
* LOGO MEDIA ONLY. Do not use photos, hero images, or video assets.
|
|
16
|
+
*/
|
|
17
|
+
logo?: LogoConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Custom slot for logo (overrides logo prop)
|
|
20
|
+
*/
|
|
21
|
+
logoSlot?: React.ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* Additional CSS classes for the logo container
|
|
24
|
+
*/
|
|
25
|
+
logoClassName?: string;
|
|
10
26
|
/**
|
|
11
27
|
* Badge text content
|
|
12
28
|
*/
|
|
@@ -96,6 +112,6 @@ interface HeroDashedBorderFeaturesProps {
|
|
|
96
112
|
/** Optional Section ID */
|
|
97
113
|
sectionId?: string;
|
|
98
114
|
}
|
|
99
|
-
declare function HeroDashedBorderFeatures({ sectionId, badgeText, announcementText, announcementHref, announcementSlot, heading, description, actions, actionsSlot, features, featuresSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, featuresClassName, }: HeroDashedBorderFeaturesProps): React.JSX.Element;
|
|
115
|
+
declare function HeroDashedBorderFeatures({ sectionId, logo, logoSlot, logoClassName, badgeText, announcementText, announcementHref, announcementSlot, heading, description, actions, actionsSlot, features, featuresSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, actionsClassName, featuresClassName, }: HeroDashedBorderFeaturesProps): React.JSX.Element;
|
|
100
116
|
|
|
101
117
|
export { HeroDashedBorderFeatures, type HeroDashedBorderFeaturesProps };
|
|
@@ -8,6 +8,7 @@ import { cva } from 'class-variance-authority';
|
|
|
8
8
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
9
9
|
import { Pressable } from '@page-speed/pressable';
|
|
10
10
|
import { Icon } from '@page-speed/icon';
|
|
11
|
+
import { Img } from '@page-speed/img';
|
|
11
12
|
|
|
12
13
|
// components/blocks/hero/hero-dashed-border-features.tsx
|
|
13
14
|
function cn(...inputs) {
|
|
@@ -58,6 +59,47 @@ var DynamicIcon = React.memo(function DynamicIcon2({
|
|
|
58
59
|
return /* @__PURE__ */ jsx(Icon, { ...props, name, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
59
60
|
});
|
|
60
61
|
DynamicIcon.displayName = "DynamicIcon";
|
|
62
|
+
var SIZE_CLASSES = {
|
|
63
|
+
sm: "max-h-6 sm:max-h-7",
|
|
64
|
+
md: "max-h-8 sm:max-h-9 lg:max-h-10",
|
|
65
|
+
lg: "max-h-10 sm:max-h-12 lg:max-h-14",
|
|
66
|
+
xl: "max-h-12 sm:max-h-14 lg:max-h-16"
|
|
67
|
+
};
|
|
68
|
+
var BrandLogo = ({
|
|
69
|
+
logo,
|
|
70
|
+
logoSlot,
|
|
71
|
+
logoClassName,
|
|
72
|
+
size = "md",
|
|
73
|
+
optixFlowConfig
|
|
74
|
+
}) => {
|
|
75
|
+
if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
|
|
76
|
+
if (!logo || !logo.src) return null;
|
|
77
|
+
const imgElement = /* @__PURE__ */ jsx(
|
|
78
|
+
Img,
|
|
79
|
+
{
|
|
80
|
+
src: logo.src,
|
|
81
|
+
className: cn(
|
|
82
|
+
"w-auto object-contain",
|
|
83
|
+
SIZE_CLASSES[size],
|
|
84
|
+
logo.className
|
|
85
|
+
),
|
|
86
|
+
alt: logo.alt || "Logo",
|
|
87
|
+
optixFlowConfig,
|
|
88
|
+
loading: "eager"
|
|
89
|
+
}
|
|
90
|
+
);
|
|
91
|
+
if (logo.url) {
|
|
92
|
+
return /* @__PURE__ */ jsx(
|
|
93
|
+
Pressable,
|
|
94
|
+
{
|
|
95
|
+
href: logo.url,
|
|
96
|
+
className: cn("flex items-center", logoClassName),
|
|
97
|
+
children: imgElement
|
|
98
|
+
}
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
|
|
102
|
+
};
|
|
61
103
|
var maxWidthStyles = {
|
|
62
104
|
sm: "max-w-screen-sm",
|
|
63
105
|
md: "max-w-screen-md",
|
|
@@ -436,6 +478,9 @@ var Section = React__default.forwardRef(
|
|
|
436
478
|
Section.displayName = "Section";
|
|
437
479
|
function HeroDashedBorderFeatures({
|
|
438
480
|
sectionId = "hero-dashed-border-features",
|
|
481
|
+
logo,
|
|
482
|
+
logoSlot,
|
|
483
|
+
logoClassName,
|
|
439
484
|
badgeText,
|
|
440
485
|
announcementText,
|
|
441
486
|
announcementHref,
|
|
@@ -447,7 +492,7 @@ function HeroDashedBorderFeatures({
|
|
|
447
492
|
features,
|
|
448
493
|
featuresSlot,
|
|
449
494
|
background,
|
|
450
|
-
spacing = "
|
|
495
|
+
spacing = "hero",
|
|
451
496
|
pattern,
|
|
452
497
|
patternOpacity,
|
|
453
498
|
className,
|
|
@@ -520,14 +565,18 @@ function HeroDashedBorderFeatures({
|
|
|
520
565
|
Pressable,
|
|
521
566
|
{
|
|
522
567
|
className: cn(
|
|
523
|
-
"flex items-center gap-6 border-t border-dashed p-4
|
|
568
|
+
"flex items-center gap-6 border-t border-dashed p-4 md:justify-center lg:p-10 ",
|
|
569
|
+
feature.href ? "cursor-pointer bg-transparent transition-colors duration-300 hover:bg-card hover:text-card-foreground" : "",
|
|
524
570
|
index === 1 && "md:border-x",
|
|
525
571
|
index === 2 ? "border-b" : "md:border-b"
|
|
526
572
|
),
|
|
527
573
|
href: feature.href,
|
|
528
574
|
children: [
|
|
529
|
-
/* @__PURE__ */ jsx("span", { className: "flex size-10 shrink-0 items-center justify-center rounded-md text-sm lg:size-12 lg:text-base bg-card text-card-foreground", children:
|
|
530
|
-
feature.title
|
|
575
|
+
feature.icon || feature.iconName ? /* @__PURE__ */ jsx("span", { className: "flex size-10 shrink-0 items-center justify-center rounded-md text-sm lg:size-12 lg:text-base bg-card text-card-foreground", children: /* @__PURE__ */ jsx(DynamicIcon, { name: feature.icon || feature.iconName, size: 20 }) }) : null,
|
|
576
|
+
feature.title || feature.description ? /* @__PURE__ */ jsxs("div", { className: "text-left flex flex-col gap-1", children: [
|
|
577
|
+
feature.title ? /* @__PURE__ */ jsx("div", { className: "font-medium text-base md:text-lg line-clamp-2", children: feature.title }) : null,
|
|
578
|
+
feature.description ? typeof feature.description === "string" && feature.description?.length > 0 ? /* @__PURE__ */ jsx("div", { className: "text-sm md:text-base opacity-70 text-balance line-clamp-1", children: feature.description }) : feature.description : null
|
|
579
|
+
] }) : null
|
|
531
580
|
]
|
|
532
581
|
},
|
|
533
582
|
index
|
|
@@ -544,6 +593,7 @@ function HeroDashedBorderFeatures({
|
|
|
544
593
|
className: cn("relative flex items-center justify-center", className),
|
|
545
594
|
containerClassName,
|
|
546
595
|
children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
596
|
+
(logo || logoSlot) && /* @__PURE__ */ jsx("div", { className: cn("mb-6", logoClassName), children: /* @__PURE__ */ jsx(BrandLogo, { logo, logoSlot, size: "lg" }) }),
|
|
547
597
|
/* @__PURE__ */ jsx(
|
|
548
598
|
"div",
|
|
549
599
|
{
|
|
@@ -557,12 +607,12 @@ function HeroDashedBorderFeatures({
|
|
|
557
607
|
"h1",
|
|
558
608
|
{
|
|
559
609
|
className: cn(
|
|
560
|
-
"my-4 mb-6 text-center text-3xl font-semibold lg:text-8xl",
|
|
610
|
+
"my-4 mb-6 text-center text-3xl font-semibold lg:text-8xl leading-tight",
|
|
561
611
|
headingClassName
|
|
562
612
|
),
|
|
563
613
|
children: heading
|
|
564
614
|
}
|
|
565
|
-
) :
|
|
615
|
+
) : heading),
|
|
566
616
|
description && (typeof description === "string" ? /* @__PURE__ */ jsx(
|
|
567
617
|
"p",
|
|
568
618
|
{
|
|
@@ -572,7 +622,7 @@ function HeroDashedBorderFeatures({
|
|
|
572
622
|
),
|
|
573
623
|
children: description
|
|
574
624
|
}
|
|
575
|
-
) :
|
|
625
|
+
) : description),
|
|
576
626
|
renderActions
|
|
577
627
|
] })
|
|
578
628
|
}
|
|
@@ -8,9 +8,9 @@ var clsx = require('clsx');
|
|
|
8
8
|
var tailwindMerge = require('tailwind-merge');
|
|
9
9
|
var icon = require('@page-speed/icon');
|
|
10
10
|
var jsxRuntime = require('react/jsx-runtime');
|
|
11
|
+
var pressable = require('@page-speed/pressable');
|
|
11
12
|
var img = require('@page-speed/img');
|
|
12
13
|
var useEmblaCarousel = require('embla-carousel-react');
|
|
13
|
-
var pressable = require('@page-speed/pressable');
|
|
14
14
|
|
|
15
15
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
16
|
|
|
@@ -54,6 +54,47 @@ var DynamicIcon = React2__namespace.memo(function DynamicIcon2({
|
|
|
54
54
|
return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, name, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
55
55
|
});
|
|
56
56
|
DynamicIcon.displayName = "DynamicIcon";
|
|
57
|
+
var SIZE_CLASSES = {
|
|
58
|
+
sm: "max-h-6 sm:max-h-7",
|
|
59
|
+
md: "max-h-8 sm:max-h-9 lg:max-h-10",
|
|
60
|
+
lg: "max-h-10 sm:max-h-12 lg:max-h-14",
|
|
61
|
+
xl: "max-h-12 sm:max-h-14 lg:max-h-16"
|
|
62
|
+
};
|
|
63
|
+
var BrandLogo = ({
|
|
64
|
+
logo,
|
|
65
|
+
logoSlot,
|
|
66
|
+
logoClassName,
|
|
67
|
+
size = "md",
|
|
68
|
+
optixFlowConfig
|
|
69
|
+
}) => {
|
|
70
|
+
if (logoSlot) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: logoSlot });
|
|
71
|
+
if (!logo || !logo.src) return null;
|
|
72
|
+
const imgElement = /* @__PURE__ */ jsxRuntime.jsx(
|
|
73
|
+
img.Img,
|
|
74
|
+
{
|
|
75
|
+
src: logo.src,
|
|
76
|
+
className: cn(
|
|
77
|
+
"w-auto object-contain",
|
|
78
|
+
SIZE_CLASSES[size],
|
|
79
|
+
logo.className
|
|
80
|
+
),
|
|
81
|
+
alt: logo.alt || "Logo",
|
|
82
|
+
optixFlowConfig,
|
|
83
|
+
loading: "eager"
|
|
84
|
+
}
|
|
85
|
+
);
|
|
86
|
+
if (logo.url) {
|
|
87
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
88
|
+
pressable.Pressable,
|
|
89
|
+
{
|
|
90
|
+
href: logo.url,
|
|
91
|
+
className: cn("flex items-center", logoClassName),
|
|
92
|
+
children: imgElement
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
|
|
97
|
+
};
|
|
57
98
|
var CarouselContext = React2__namespace.createContext(null);
|
|
58
99
|
function useCarousel() {
|
|
59
100
|
const context = React2__namespace.useContext(CarouselContext);
|
|
@@ -666,13 +707,17 @@ function HeroDesignCarouselPortfolio({
|
|
|
666
707
|
const renderLogo = React2.useMemo(() => {
|
|
667
708
|
if (logoSlot) return logoSlot;
|
|
668
709
|
if (!logo) return null;
|
|
669
|
-
const
|
|
710
|
+
const logoConfig = {
|
|
711
|
+
src: typeof logo.src === "string" ? logo.src : logo.src.light,
|
|
712
|
+
alt: logo.alt,
|
|
713
|
+
className: logo.className,
|
|
714
|
+
url: logo.href
|
|
715
|
+
};
|
|
670
716
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
671
|
-
|
|
717
|
+
BrandLogo,
|
|
672
718
|
{
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
alt: logo.alt,
|
|
719
|
+
logo: logoConfig,
|
|
720
|
+
size: "xl",
|
|
676
721
|
optixFlowConfig
|
|
677
722
|
}
|
|
678
723
|
);
|
|
@@ -7,9 +7,9 @@ import { clsx } from 'clsx';
|
|
|
7
7
|
import { twMerge } from 'tailwind-merge';
|
|
8
8
|
import { Icon } from '@page-speed/icon';
|
|
9
9
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
10
|
+
import { Pressable, buttonVariants } from '@page-speed/pressable';
|
|
10
11
|
import { Img } from '@page-speed/img';
|
|
11
12
|
import useEmblaCarousel from 'embla-carousel-react';
|
|
12
|
-
import { Pressable, buttonVariants } from '@page-speed/pressable';
|
|
13
13
|
|
|
14
14
|
// components/blocks/hero/hero-design-carousel-portfolio.tsx
|
|
15
15
|
function cn(...inputs) {
|
|
@@ -28,6 +28,47 @@ var DynamicIcon = React2.memo(function DynamicIcon2({
|
|
|
28
28
|
return /* @__PURE__ */ jsx(Icon, { ...props, name, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
29
29
|
});
|
|
30
30
|
DynamicIcon.displayName = "DynamicIcon";
|
|
31
|
+
var SIZE_CLASSES = {
|
|
32
|
+
sm: "max-h-6 sm:max-h-7",
|
|
33
|
+
md: "max-h-8 sm:max-h-9 lg:max-h-10",
|
|
34
|
+
lg: "max-h-10 sm:max-h-12 lg:max-h-14",
|
|
35
|
+
xl: "max-h-12 sm:max-h-14 lg:max-h-16"
|
|
36
|
+
};
|
|
37
|
+
var BrandLogo = ({
|
|
38
|
+
logo,
|
|
39
|
+
logoSlot,
|
|
40
|
+
logoClassName,
|
|
41
|
+
size = "md",
|
|
42
|
+
optixFlowConfig
|
|
43
|
+
}) => {
|
|
44
|
+
if (logoSlot) return /* @__PURE__ */ jsx(Fragment, { children: logoSlot });
|
|
45
|
+
if (!logo || !logo.src) return null;
|
|
46
|
+
const imgElement = /* @__PURE__ */ jsx(
|
|
47
|
+
Img,
|
|
48
|
+
{
|
|
49
|
+
src: logo.src,
|
|
50
|
+
className: cn(
|
|
51
|
+
"w-auto object-contain",
|
|
52
|
+
SIZE_CLASSES[size],
|
|
53
|
+
logo.className
|
|
54
|
+
),
|
|
55
|
+
alt: logo.alt || "Logo",
|
|
56
|
+
optixFlowConfig,
|
|
57
|
+
loading: "eager"
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
if (logo.url) {
|
|
61
|
+
return /* @__PURE__ */ jsx(
|
|
62
|
+
Pressable,
|
|
63
|
+
{
|
|
64
|
+
href: logo.url,
|
|
65
|
+
className: cn("flex items-center", logoClassName),
|
|
66
|
+
children: imgElement
|
|
67
|
+
}
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex items-center", logoClassName), children: imgElement });
|
|
71
|
+
};
|
|
31
72
|
var CarouselContext = React2.createContext(null);
|
|
32
73
|
function useCarousel() {
|
|
33
74
|
const context = React2.useContext(CarouselContext);
|
|
@@ -640,13 +681,17 @@ function HeroDesignCarouselPortfolio({
|
|
|
640
681
|
const renderLogo = useMemo(() => {
|
|
641
682
|
if (logoSlot) return logoSlot;
|
|
642
683
|
if (!logo) return null;
|
|
643
|
-
const
|
|
684
|
+
const logoConfig = {
|
|
685
|
+
src: typeof logo.src === "string" ? logo.src : logo.src.light,
|
|
686
|
+
alt: logo.alt,
|
|
687
|
+
className: logo.className,
|
|
688
|
+
url: logo.href
|
|
689
|
+
};
|
|
644
690
|
return /* @__PURE__ */ jsx(
|
|
645
|
-
|
|
691
|
+
BrandLogo,
|
|
646
692
|
{
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
alt: logo.alt,
|
|
693
|
+
logo: logoConfig,
|
|
694
|
+
size: "xl",
|
|
650
695
|
optixFlowConfig
|
|
651
696
|
}
|
|
652
697
|
);
|