@opensite/ui 3.2.6 → 3.2.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-story.cjs +7 -1
- package/dist/about-developer-story.js +7 -1
- package/dist/hero-overlay-cta-grid.cjs +82 -19
- package/dist/hero-overlay-cta-grid.d.cts +8 -13
- package/dist/hero-overlay-cta-grid.d.ts +8 -13
- package/dist/hero-overlay-cta-grid.js +83 -20
- package/dist/process-expandable-timeline.cjs +1 -2
- package/dist/process-expandable-timeline.js +1 -2
- package/dist/process-icon-timeline.cjs +9 -99
- package/dist/process-icon-timeline.d.cts +3 -3
- package/dist/process-icon-timeline.d.ts +3 -3
- package/dist/process-icon-timeline.js +9 -99
- package/dist/process-mission-principles.cjs +5 -67
- package/dist/process-mission-principles.d.cts +3 -3
- package/dist/process-mission-principles.d.ts +3 -3
- package/dist/process-mission-principles.js +5 -67
- package/dist/process-numbered-services.cjs +22 -116
- package/dist/process-numbered-services.d.cts +3 -3
- package/dist/process-numbered-services.d.ts +3 -3
- package/dist/process-numbered-services.js +22 -116
- package/dist/process-scroll-image.cjs +20 -85
- package/dist/process-scroll-image.d.cts +3 -11
- package/dist/process-scroll-image.d.ts +3 -11
- package/dist/process-scroll-image.js +18 -83
- package/dist/process-steps-grid.cjs +31 -99
- package/dist/process-steps-grid.d.cts +3 -3
- package/dist/process-steps-grid.d.ts +3 -3
- package/dist/process-steps-grid.js +31 -99
- package/dist/process-sticky-steps.cjs +6 -35
- package/dist/process-sticky-steps.d.cts +5 -1
- package/dist/process-sticky-steps.d.ts +5 -1
- package/dist/process-sticky-steps.js +6 -35
- package/dist/registry.cjs +107 -140
- package/dist/registry.js +107 -140
- package/package.json +1 -1
|
@@ -11,88 +11,6 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
11
11
|
function cn(...inputs) {
|
|
12
12
|
return twMerge(clsx(inputs));
|
|
13
13
|
}
|
|
14
|
-
function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
15
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
16
|
-
if (isDark) {
|
|
17
|
-
switch (variant) {
|
|
18
|
-
case "muted":
|
|
19
|
-
return "bg-background";
|
|
20
|
-
case "card":
|
|
21
|
-
return "bg-card";
|
|
22
|
-
case "accent":
|
|
23
|
-
return "bg-accent";
|
|
24
|
-
case "subtle":
|
|
25
|
-
return "bg-background/50";
|
|
26
|
-
}
|
|
27
|
-
} else {
|
|
28
|
-
switch (variant) {
|
|
29
|
-
case "muted":
|
|
30
|
-
return "bg-muted";
|
|
31
|
-
case "card":
|
|
32
|
-
return "bg-card";
|
|
33
|
-
case "accent":
|
|
34
|
-
return "bg-accent";
|
|
35
|
-
case "subtle":
|
|
36
|
-
return "bg-muted/50";
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
function getNestedCardTextColor(parentBg, options) {
|
|
41
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
42
|
-
return isDark ? "text-foreground" : "";
|
|
43
|
-
}
|
|
44
|
-
function getTextColor(parentBg, variant = "default", options) {
|
|
45
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
46
|
-
if (isDark) {
|
|
47
|
-
switch (variant) {
|
|
48
|
-
case "default":
|
|
49
|
-
return "text-foreground";
|
|
50
|
-
case "muted":
|
|
51
|
-
return "text-foreground/80";
|
|
52
|
-
case "subtle":
|
|
53
|
-
return "text-foreground/60";
|
|
54
|
-
case "accent":
|
|
55
|
-
return "text-accent-foreground";
|
|
56
|
-
}
|
|
57
|
-
} else {
|
|
58
|
-
switch (variant) {
|
|
59
|
-
case "default":
|
|
60
|
-
return "text-foreground";
|
|
61
|
-
case "muted":
|
|
62
|
-
return "text-muted-foreground";
|
|
63
|
-
case "subtle":
|
|
64
|
-
return "text-muted-foreground/70";
|
|
65
|
-
case "accent":
|
|
66
|
-
return "text-primary";
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
function getAccentColor(parentBg, options) {
|
|
71
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
72
|
-
return isDark ? "text-accent-foreground" : "text-primary";
|
|
73
|
-
}
|
|
74
|
-
function getBorderColor(parentBg, variant = "default", options) {
|
|
75
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
76
|
-
if (isDark) {
|
|
77
|
-
switch (variant) {
|
|
78
|
-
case "default":
|
|
79
|
-
return "border-foreground/20";
|
|
80
|
-
case "muted":
|
|
81
|
-
return "border-foreground/10";
|
|
82
|
-
case "accent":
|
|
83
|
-
return "border-accent-foreground";
|
|
84
|
-
}
|
|
85
|
-
} else {
|
|
86
|
-
switch (variant) {
|
|
87
|
-
case "default":
|
|
88
|
-
return "border-border";
|
|
89
|
-
case "muted":
|
|
90
|
-
return "border-muted";
|
|
91
|
-
case "accent":
|
|
92
|
-
return "border-primary";
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
14
|
var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
|
|
97
15
|
var DynamicIcon = React.memo(function DynamicIcon2({
|
|
98
16
|
apiKey,
|
|
@@ -496,10 +414,9 @@ function ProcessNumberedServices({
|
|
|
496
414
|
spacing = "py-6 md:py-32",
|
|
497
415
|
pattern,
|
|
498
416
|
patternOpacity,
|
|
499
|
-
|
|
500
|
-
title
|
|
417
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
|
|
501
418
|
}) {
|
|
502
|
-
const resolvedHeading =
|
|
419
|
+
const resolvedHeading = heading;
|
|
503
420
|
const renderServiceAction = useMemo(() => {
|
|
504
421
|
return (service) => {
|
|
505
422
|
if (service.actionSlot) return service.actionSlot;
|
|
@@ -517,11 +434,19 @@ function ProcessNumberedServices({
|
|
|
517
434
|
className: actionClassName,
|
|
518
435
|
...pressableProps
|
|
519
436
|
} = action;
|
|
520
|
-
return /* @__PURE__ */ jsx(
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
437
|
+
return /* @__PURE__ */ jsx(
|
|
438
|
+
Pressable,
|
|
439
|
+
{
|
|
440
|
+
asButton: true,
|
|
441
|
+
className: cn(actionClassName, "mt-4"),
|
|
442
|
+
...pressableProps,
|
|
443
|
+
children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
444
|
+
icon,
|
|
445
|
+
label,
|
|
446
|
+
iconAfter && iconAfter
|
|
447
|
+
] })
|
|
448
|
+
}
|
|
449
|
+
);
|
|
525
450
|
};
|
|
526
451
|
}, []);
|
|
527
452
|
const renderServices = useMemo(() => {
|
|
@@ -540,9 +465,7 @@ function ProcessNumberedServices({
|
|
|
540
465
|
"div",
|
|
541
466
|
{
|
|
542
467
|
className: cn(
|
|
543
|
-
"flex size-16 items-center justify-center rounded-full border-2 text-xl font-bold transition-colors",
|
|
544
|
-
getBorderColor(background, "accent"),
|
|
545
|
-
getAccentColor(background),
|
|
468
|
+
"flex size-16 items-center justify-center rounded-full border-2 border-primary text-primary text-xl font-bold transition-colors",
|
|
546
469
|
"bg-primary/5 group-hover:bg-primary group-hover:text-primary-foreground",
|
|
547
470
|
serviceBadgeClassName
|
|
548
471
|
),
|
|
@@ -550,8 +473,8 @@ function ProcessNumberedServices({
|
|
|
550
473
|
}
|
|
551
474
|
) }),
|
|
552
475
|
/* @__PURE__ */ jsxs("div", { className: "lg:col-span-4", children: [
|
|
553
|
-
service.title && (typeof service.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "mb-3 text-2xl font-semibold tracking-tight", children: service.title }) :
|
|
554
|
-
service.description && (typeof service.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("leading-relaxed"
|
|
476
|
+
service.title && (typeof service.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "mb-3 text-2xl font-semibold tracking-tight", children: service.title }) : service.title),
|
|
477
|
+
service.description && (typeof service.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("leading-relaxed"), children: service.description }) : service.description),
|
|
555
478
|
renderServiceAction(service)
|
|
556
479
|
] }),
|
|
557
480
|
/* @__PURE__ */ jsx("div", { className: "lg:col-span-7", children: service.capabilities?.length ? /* @__PURE__ */ jsx(
|
|
@@ -566,18 +489,10 @@ function ProcessNumberedServices({
|
|
|
566
489
|
{
|
|
567
490
|
className: cn(
|
|
568
491
|
"flex items-center gap-3 rounded-lg px-4 py-3",
|
|
569
|
-
|
|
570
|
-
getNestedCardTextColor(background)
|
|
492
|
+
"bg-muted text-muted-foreground"
|
|
571
493
|
),
|
|
572
494
|
children: [
|
|
573
|
-
/* @__PURE__ */ jsx(
|
|
574
|
-
DynamicIcon,
|
|
575
|
-
{
|
|
576
|
-
name: "lucide/check-circle-2",
|
|
577
|
-
size: 18,
|
|
578
|
-
className: getAccentColor(background)
|
|
579
|
-
}
|
|
580
|
-
),
|
|
495
|
+
/* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/check-circle-2", size: 18 }),
|
|
581
496
|
/* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: capability })
|
|
582
497
|
]
|
|
583
498
|
},
|
|
@@ -608,6 +523,7 @@ function ProcessNumberedServices({
|
|
|
608
523
|
className,
|
|
609
524
|
pattern,
|
|
610
525
|
patternOpacity,
|
|
526
|
+
containerClassName,
|
|
611
527
|
children: /* @__PURE__ */ jsxs("div", { className: contentClassName, children: [
|
|
612
528
|
/* @__PURE__ */ jsxs("div", { className: cn("mb-16 max-w-2xl", headerClassName), children: [
|
|
613
529
|
resolvedHeading && (typeof resolvedHeading === "string" ? /* @__PURE__ */ jsx(
|
|
@@ -620,17 +536,7 @@ function ProcessNumberedServices({
|
|
|
620
536
|
children: resolvedHeading
|
|
621
537
|
}
|
|
622
538
|
) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: resolvedHeading })),
|
|
623
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx(
|
|
624
|
-
"p",
|
|
625
|
-
{
|
|
626
|
-
className: cn(
|
|
627
|
-
"text-lg",
|
|
628
|
-
getTextColor(background, "muted"),
|
|
629
|
-
descriptionClassName
|
|
630
|
-
),
|
|
631
|
-
children: description
|
|
632
|
-
}
|
|
633
|
-
) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
|
|
539
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-lg", descriptionClassName), children: description }) : description)
|
|
634
540
|
] }),
|
|
635
541
|
renderServices
|
|
636
542
|
] })
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var React3 = require('react');
|
|
5
5
|
var framerMotion = require('framer-motion');
|
|
6
6
|
var clsx = require('clsx');
|
|
7
7
|
var tailwindMerge = require('tailwind-merge');
|
|
8
8
|
var img = require('@page-speed/img');
|
|
9
9
|
var pressable = require('@page-speed/pressable');
|
|
10
|
-
var icon = require('@page-speed/icon');
|
|
11
10
|
var jsxRuntime = require('react/jsx-runtime');
|
|
12
11
|
|
|
13
12
|
function _interopNamespace(e) {
|
|
@@ -28,50 +27,12 @@ function _interopNamespace(e) {
|
|
|
28
27
|
return Object.freeze(n);
|
|
29
28
|
}
|
|
30
29
|
|
|
31
|
-
var
|
|
30
|
+
var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
|
|
32
31
|
|
|
33
32
|
// components/blocks/process/process-scroll-image.tsx
|
|
34
33
|
function cn(...inputs) {
|
|
35
34
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
36
35
|
}
|
|
37
|
-
function getTextColor(parentBg, variant = "default", options) {
|
|
38
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
39
|
-
if (isDark) {
|
|
40
|
-
switch (variant) {
|
|
41
|
-
case "default":
|
|
42
|
-
return "text-foreground";
|
|
43
|
-
case "muted":
|
|
44
|
-
return "text-foreground/80";
|
|
45
|
-
case "subtle":
|
|
46
|
-
return "text-foreground/60";
|
|
47
|
-
case "accent":
|
|
48
|
-
return "text-accent-foreground";
|
|
49
|
-
}
|
|
50
|
-
} else {
|
|
51
|
-
switch (variant) {
|
|
52
|
-
case "default":
|
|
53
|
-
return "text-foreground";
|
|
54
|
-
case "muted":
|
|
55
|
-
return "text-muted-foreground";
|
|
56
|
-
case "subtle":
|
|
57
|
-
return "text-muted-foreground/70";
|
|
58
|
-
case "accent":
|
|
59
|
-
return "text-primary";
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
function getAccentColor(parentBg, options) {
|
|
64
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
65
|
-
return isDark ? "text-accent-foreground" : "text-primary";
|
|
66
|
-
}
|
|
67
|
-
var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
|
|
68
|
-
var DynamicIcon = React4__namespace.memo(function DynamicIcon2({
|
|
69
|
-
apiKey,
|
|
70
|
-
...props
|
|
71
|
-
}) {
|
|
72
|
-
return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
73
|
-
});
|
|
74
|
-
DynamicIcon.displayName = "DynamicIcon";
|
|
75
36
|
var maxWidthStyles = {
|
|
76
37
|
sm: "max-w-screen-sm",
|
|
77
38
|
md: "max-w-screen-md",
|
|
@@ -81,7 +42,7 @@ var maxWidthStyles = {
|
|
|
81
42
|
"4xl": "max-w-[1536px]",
|
|
82
43
|
full: "max-w-full"
|
|
83
44
|
};
|
|
84
|
-
var Container =
|
|
45
|
+
var Container = React3__namespace.default.forwardRef(
|
|
85
46
|
({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
|
|
86
47
|
const Component = as;
|
|
87
48
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -387,7 +348,7 @@ var spacingStyles = {
|
|
|
387
348
|
};
|
|
388
349
|
var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
|
|
389
350
|
var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
|
|
390
|
-
var Section =
|
|
351
|
+
var Section = React3__namespace.default.forwardRef(
|
|
391
352
|
({
|
|
392
353
|
id,
|
|
393
354
|
title,
|
|
@@ -449,9 +410,9 @@ var Section = React4__namespace.default.forwardRef(
|
|
|
449
410
|
);
|
|
450
411
|
Section.displayName = "Section";
|
|
451
412
|
var usePrevious = (value) => {
|
|
452
|
-
const [prev, setPrev] =
|
|
453
|
-
const ref =
|
|
454
|
-
|
|
413
|
+
const [prev, setPrev] = React3__namespace.useState(void 0);
|
|
414
|
+
const ref = React3__namespace.useRef(value);
|
|
415
|
+
React3__namespace.useEffect(() => {
|
|
455
416
|
setPrev(ref.current);
|
|
456
417
|
ref.current = value;
|
|
457
418
|
}, [value]);
|
|
@@ -464,12 +425,12 @@ var ProcessCard = ({
|
|
|
464
425
|
itemClassName,
|
|
465
426
|
background
|
|
466
427
|
}) => {
|
|
467
|
-
const ref =
|
|
428
|
+
const ref = React3__namespace.useRef(null);
|
|
468
429
|
const itemInView = framerMotion.useInView(ref, {
|
|
469
430
|
amount: 0,
|
|
470
431
|
margin: "0px 0px -60% 0px"
|
|
471
432
|
});
|
|
472
|
-
|
|
433
|
+
React3__namespace.useEffect(() => {
|
|
473
434
|
if (itemInView) {
|
|
474
435
|
setActive(index);
|
|
475
436
|
}
|
|
@@ -484,10 +445,10 @@ var ProcessCard = ({
|
|
|
484
445
|
step.className
|
|
485
446
|
),
|
|
486
447
|
children: [
|
|
487
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex w-fit items-center justify-center px-4 py-1 text-
|
|
448
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex w-fit items-center justify-center px-4 py-1 text-5xl md:text-7xl tracking-tighter", children: step.step ?? `0${index + 1}` }),
|
|
488
449
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
489
450
|
step.title && (typeof step.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 text-2xl font-semibold tracking-tighter lg:text-3xl", children: step.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4", children: step.title })),
|
|
490
|
-
step.description && (typeof step.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", {
|
|
451
|
+
step.description && (typeof step.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: step.description }) : step.description)
|
|
491
452
|
] })
|
|
492
453
|
]
|
|
493
454
|
}
|
|
@@ -515,30 +476,13 @@ function ProcessScrollImage({
|
|
|
515
476
|
pattern,
|
|
516
477
|
patternOpacity,
|
|
517
478
|
optixFlowConfig,
|
|
518
|
-
|
|
519
|
-
title,
|
|
520
|
-
ctaText,
|
|
521
|
-
ctaUrl
|
|
479
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
|
|
522
480
|
}) {
|
|
523
|
-
const [active, setActive] =
|
|
481
|
+
const [active, setActive] = React3__namespace.useState(0);
|
|
524
482
|
const previousActive = usePrevious(active);
|
|
525
|
-
const resolvedHeading =
|
|
526
|
-
const resolvedActions = actions
|
|
527
|
-
|
|
528
|
-
label: ctaText,
|
|
529
|
-
href: ctaUrl,
|
|
530
|
-
variant: "ghost",
|
|
531
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
532
|
-
DynamicIcon,
|
|
533
|
-
{
|
|
534
|
-
name: "lucide/corner-down-right",
|
|
535
|
-
size: 20,
|
|
536
|
-
className: getAccentColor(background)
|
|
537
|
-
}
|
|
538
|
-
)
|
|
539
|
-
}
|
|
540
|
-
] : []);
|
|
541
|
-
const renderActions = React4.useMemo(() => {
|
|
483
|
+
const resolvedHeading = heading;
|
|
484
|
+
const resolvedActions = actions || [];
|
|
485
|
+
const renderActions = React3.useMemo(() => {
|
|
542
486
|
return () => {
|
|
543
487
|
if (actionsSlot) return actionsSlot;
|
|
544
488
|
if (!resolvedActions?.length) return null;
|
|
@@ -577,7 +521,7 @@ function ProcessScrollImage({
|
|
|
577
521
|
);
|
|
578
522
|
};
|
|
579
523
|
}, [actionsSlot, resolvedActions, actionsClassName]);
|
|
580
|
-
const renderSteps =
|
|
524
|
+
const renderSteps = React3.useMemo(() => {
|
|
581
525
|
if (stepsSlot) return stepsSlot;
|
|
582
526
|
if (!steps?.length) return null;
|
|
583
527
|
return /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("relative w-full lg:pl-22", stepsClassName), children: steps.map((step, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -606,6 +550,7 @@ function ProcessScrollImage({
|
|
|
606
550
|
className,
|
|
607
551
|
pattern,
|
|
608
552
|
patternOpacity,
|
|
553
|
+
containerClassName,
|
|
609
554
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
610
555
|
"div",
|
|
611
556
|
{
|
|
@@ -631,18 +576,8 @@ function ProcessScrollImage({
|
|
|
631
576
|
),
|
|
632
577
|
children: resolvedHeading
|
|
633
578
|
}
|
|
634
|
-
) :
|
|
635
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
636
|
-
"p",
|
|
637
|
-
{
|
|
638
|
-
className: cn(
|
|
639
|
-
"text-base",
|
|
640
|
-
getTextColor(background, "muted"),
|
|
641
|
-
descriptionClassName
|
|
642
|
-
),
|
|
643
|
-
children: description
|
|
644
|
-
}
|
|
645
|
-
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
|
|
579
|
+
) : resolvedHeading),
|
|
580
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-base", descriptionClassName), children: description }) : description),
|
|
646
581
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
647
582
|
"div",
|
|
648
583
|
{
|
|
@@ -113,23 +113,15 @@ interface ProcessScrollImageProps {
|
|
|
113
113
|
*/
|
|
114
114
|
optixFlowConfig?: OptixFlowConfig;
|
|
115
115
|
/**
|
|
116
|
-
*
|
|
116
|
+
* Additional CSS classes for the container
|
|
117
117
|
*/
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* @deprecated Use `actions` instead
|
|
121
|
-
*/
|
|
122
|
-
ctaText?: string;
|
|
123
|
-
/**
|
|
124
|
-
* @deprecated Use `actions` instead
|
|
125
|
-
*/
|
|
126
|
-
ctaUrl?: string;
|
|
118
|
+
containerClassName?: string;
|
|
127
119
|
/** Optional Section ID */
|
|
128
120
|
sectionId?: string;
|
|
129
121
|
}
|
|
130
122
|
/**
|
|
131
123
|
* ProcessScrollImage - A process section with scroll-triggered image transitions.
|
|
132
124
|
*/
|
|
133
|
-
declare function ProcessScrollImage({ sectionId, heading, description, actions, actionsSlot, steps, stepsSlot, className, contentClassName, sidebarClassName, headingClassName, descriptionClassName, imageContainerClassName, actionsClassName, stepsClassName, stepItemClassName, background, spacing, pattern, patternOpacity, optixFlowConfig,
|
|
125
|
+
declare function ProcessScrollImage({ sectionId, heading, description, actions, actionsSlot, steps, stepsSlot, className, contentClassName, sidebarClassName, headingClassName, descriptionClassName, imageContainerClassName, actionsClassName, stepsClassName, stepItemClassName, background, spacing, pattern, patternOpacity, optixFlowConfig, containerClassName, }: ProcessScrollImageProps): React.JSX.Element;
|
|
134
126
|
|
|
135
127
|
export { ProcessScrollImage, type ProcessScrollImageProps };
|
|
@@ -113,23 +113,15 @@ interface ProcessScrollImageProps {
|
|
|
113
113
|
*/
|
|
114
114
|
optixFlowConfig?: OptixFlowConfig;
|
|
115
115
|
/**
|
|
116
|
-
*
|
|
116
|
+
* Additional CSS classes for the container
|
|
117
117
|
*/
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* @deprecated Use `actions` instead
|
|
121
|
-
*/
|
|
122
|
-
ctaText?: string;
|
|
123
|
-
/**
|
|
124
|
-
* @deprecated Use `actions` instead
|
|
125
|
-
*/
|
|
126
|
-
ctaUrl?: string;
|
|
118
|
+
containerClassName?: string;
|
|
127
119
|
/** Optional Section ID */
|
|
128
120
|
sectionId?: string;
|
|
129
121
|
}
|
|
130
122
|
/**
|
|
131
123
|
* ProcessScrollImage - A process section with scroll-triggered image transitions.
|
|
132
124
|
*/
|
|
133
|
-
declare function ProcessScrollImage({ sectionId, heading, description, actions, actionsSlot, steps, stepsSlot, className, contentClassName, sidebarClassName, headingClassName, descriptionClassName, imageContainerClassName, actionsClassName, stepsClassName, stepItemClassName, background, spacing, pattern, patternOpacity, optixFlowConfig,
|
|
125
|
+
declare function ProcessScrollImage({ sectionId, heading, description, actions, actionsSlot, steps, stepsSlot, className, contentClassName, sidebarClassName, headingClassName, descriptionClassName, imageContainerClassName, actionsClassName, stepsClassName, stepItemClassName, background, spacing, pattern, patternOpacity, optixFlowConfig, containerClassName, }: ProcessScrollImageProps): React.JSX.Element;
|
|
134
126
|
|
|
135
127
|
export { ProcessScrollImage, type ProcessScrollImageProps };
|
|
@@ -1,56 +1,17 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import * as
|
|
3
|
-
import
|
|
2
|
+
import * as React3 from 'react';
|
|
3
|
+
import React3__default, { useMemo } from 'react';
|
|
4
4
|
import { motion, useInView } from 'framer-motion';
|
|
5
5
|
import { clsx } from 'clsx';
|
|
6
6
|
import { twMerge } from 'tailwind-merge';
|
|
7
7
|
import { Img } from '@page-speed/img';
|
|
8
8
|
import { Pressable } from '@page-speed/pressable';
|
|
9
|
-
import { Icon } from '@page-speed/icon';
|
|
10
9
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
11
10
|
|
|
12
11
|
// components/blocks/process/process-scroll-image.tsx
|
|
13
12
|
function cn(...inputs) {
|
|
14
13
|
return twMerge(clsx(inputs));
|
|
15
14
|
}
|
|
16
|
-
function getTextColor(parentBg, variant = "default", options) {
|
|
17
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
18
|
-
if (isDark) {
|
|
19
|
-
switch (variant) {
|
|
20
|
-
case "default":
|
|
21
|
-
return "text-foreground";
|
|
22
|
-
case "muted":
|
|
23
|
-
return "text-foreground/80";
|
|
24
|
-
case "subtle":
|
|
25
|
-
return "text-foreground/60";
|
|
26
|
-
case "accent":
|
|
27
|
-
return "text-accent-foreground";
|
|
28
|
-
}
|
|
29
|
-
} else {
|
|
30
|
-
switch (variant) {
|
|
31
|
-
case "default":
|
|
32
|
-
return "text-foreground";
|
|
33
|
-
case "muted":
|
|
34
|
-
return "text-muted-foreground";
|
|
35
|
-
case "subtle":
|
|
36
|
-
return "text-muted-foreground/70";
|
|
37
|
-
case "accent":
|
|
38
|
-
return "text-primary";
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
function getAccentColor(parentBg, options) {
|
|
43
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
44
|
-
return isDark ? "text-accent-foreground" : "text-primary";
|
|
45
|
-
}
|
|
46
|
-
var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
|
|
47
|
-
var DynamicIcon = React4.memo(function DynamicIcon2({
|
|
48
|
-
apiKey,
|
|
49
|
-
...props
|
|
50
|
-
}) {
|
|
51
|
-
return /* @__PURE__ */ jsx(Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
52
|
-
});
|
|
53
|
-
DynamicIcon.displayName = "DynamicIcon";
|
|
54
15
|
var maxWidthStyles = {
|
|
55
16
|
sm: "max-w-screen-sm",
|
|
56
17
|
md: "max-w-screen-md",
|
|
@@ -60,7 +21,7 @@ var maxWidthStyles = {
|
|
|
60
21
|
"4xl": "max-w-[1536px]",
|
|
61
22
|
full: "max-w-full"
|
|
62
23
|
};
|
|
63
|
-
var Container =
|
|
24
|
+
var Container = React3__default.forwardRef(
|
|
64
25
|
({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
|
|
65
26
|
const Component = as;
|
|
66
27
|
return /* @__PURE__ */ jsx(
|
|
@@ -366,7 +327,7 @@ var spacingStyles = {
|
|
|
366
327
|
};
|
|
367
328
|
var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
|
|
368
329
|
var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
|
|
369
|
-
var Section =
|
|
330
|
+
var Section = React3__default.forwardRef(
|
|
370
331
|
({
|
|
371
332
|
id,
|
|
372
333
|
title,
|
|
@@ -428,9 +389,9 @@ var Section = React4__default.forwardRef(
|
|
|
428
389
|
);
|
|
429
390
|
Section.displayName = "Section";
|
|
430
391
|
var usePrevious = (value) => {
|
|
431
|
-
const [prev, setPrev] =
|
|
432
|
-
const ref =
|
|
433
|
-
|
|
392
|
+
const [prev, setPrev] = React3.useState(void 0);
|
|
393
|
+
const ref = React3.useRef(value);
|
|
394
|
+
React3.useEffect(() => {
|
|
434
395
|
setPrev(ref.current);
|
|
435
396
|
ref.current = value;
|
|
436
397
|
}, [value]);
|
|
@@ -443,12 +404,12 @@ var ProcessCard = ({
|
|
|
443
404
|
itemClassName,
|
|
444
405
|
background
|
|
445
406
|
}) => {
|
|
446
|
-
const ref =
|
|
407
|
+
const ref = React3.useRef(null);
|
|
447
408
|
const itemInView = useInView(ref, {
|
|
448
409
|
amount: 0,
|
|
449
410
|
margin: "0px 0px -60% 0px"
|
|
450
411
|
});
|
|
451
|
-
|
|
412
|
+
React3.useEffect(() => {
|
|
452
413
|
if (itemInView) {
|
|
453
414
|
setActive(index);
|
|
454
415
|
}
|
|
@@ -463,10 +424,10 @@ var ProcessCard = ({
|
|
|
463
424
|
step.className
|
|
464
425
|
),
|
|
465
426
|
children: [
|
|
466
|
-
/* @__PURE__ */ jsx("div", { className: "flex w-fit items-center justify-center px-4 py-1 text-
|
|
427
|
+
/* @__PURE__ */ jsx("div", { className: "flex w-fit items-center justify-center px-4 py-1 text-5xl md:text-7xl tracking-tighter", children: step.step ?? `0${index + 1}` }),
|
|
467
428
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
468
429
|
step.title && (typeof step.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "mb-4 text-2xl font-semibold tracking-tighter lg:text-3xl", children: step.title }) : /* @__PURE__ */ jsx("div", { className: "mb-4", children: step.title })),
|
|
469
|
-
step.description && (typeof step.description === "string" ? /* @__PURE__ */ jsx("p", {
|
|
430
|
+
step.description && (typeof step.description === "string" ? /* @__PURE__ */ jsx("p", { children: step.description }) : step.description)
|
|
470
431
|
] })
|
|
471
432
|
]
|
|
472
433
|
}
|
|
@@ -494,29 +455,12 @@ function ProcessScrollImage({
|
|
|
494
455
|
pattern,
|
|
495
456
|
patternOpacity,
|
|
496
457
|
optixFlowConfig,
|
|
497
|
-
|
|
498
|
-
title,
|
|
499
|
-
ctaText,
|
|
500
|
-
ctaUrl
|
|
458
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
|
|
501
459
|
}) {
|
|
502
|
-
const [active, setActive] =
|
|
460
|
+
const [active, setActive] = React3.useState(0);
|
|
503
461
|
const previousActive = usePrevious(active);
|
|
504
|
-
const resolvedHeading =
|
|
505
|
-
const resolvedActions = actions
|
|
506
|
-
{
|
|
507
|
-
label: ctaText,
|
|
508
|
-
href: ctaUrl,
|
|
509
|
-
variant: "ghost",
|
|
510
|
-
icon: /* @__PURE__ */ jsx(
|
|
511
|
-
DynamicIcon,
|
|
512
|
-
{
|
|
513
|
-
name: "lucide/corner-down-right",
|
|
514
|
-
size: 20,
|
|
515
|
-
className: getAccentColor(background)
|
|
516
|
-
}
|
|
517
|
-
)
|
|
518
|
-
}
|
|
519
|
-
] : []);
|
|
462
|
+
const resolvedHeading = heading;
|
|
463
|
+
const resolvedActions = actions || [];
|
|
520
464
|
const renderActions = useMemo(() => {
|
|
521
465
|
return () => {
|
|
522
466
|
if (actionsSlot) return actionsSlot;
|
|
@@ -585,6 +529,7 @@ function ProcessScrollImage({
|
|
|
585
529
|
className,
|
|
586
530
|
pattern,
|
|
587
531
|
patternOpacity,
|
|
532
|
+
containerClassName,
|
|
588
533
|
children: /* @__PURE__ */ jsxs(
|
|
589
534
|
"div",
|
|
590
535
|
{
|
|
@@ -610,18 +555,8 @@ function ProcessScrollImage({
|
|
|
610
555
|
),
|
|
611
556
|
children: resolvedHeading
|
|
612
557
|
}
|
|
613
|
-
) :
|
|
614
|
-
description && (typeof description === "string" ? /* @__PURE__ */ jsx(
|
|
615
|
-
"p",
|
|
616
|
-
{
|
|
617
|
-
className: cn(
|
|
618
|
-
"text-base",
|
|
619
|
-
getTextColor(background, "muted"),
|
|
620
|
-
descriptionClassName
|
|
621
|
-
),
|
|
622
|
-
children: description
|
|
623
|
-
}
|
|
624
|
-
) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
|
|
558
|
+
) : resolvedHeading),
|
|
559
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-base", descriptionClassName), children: description }) : description),
|
|
625
560
|
/* @__PURE__ */ jsxs(
|
|
626
561
|
"div",
|
|
627
562
|
{
|