@opensite/ui 0.7.0 → 0.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/blog-cards-read-time.cjs +1 -1
- package/dist/blog-cards-read-time.js +1 -1
- package/dist/blog-cards-tagline-cta.cjs +1 -1
- package/dist/blog-cards-tagline-cta.js +1 -1
- package/dist/blog-category-overlay.cjs +1 -1
- package/dist/blog-category-overlay.js +1 -1
- package/dist/blog-featured-popular.cjs +1 -1
- package/dist/blog-featured-popular.js +1 -1
- package/dist/blog-grid-author-cards.cjs +1 -1
- package/dist/blog-grid-author-cards.js +1 -1
- package/dist/blog-grid-nine-posts.cjs +1 -1
- package/dist/blog-grid-nine-posts.js +1 -1
- package/dist/blog-horizontal-cards.cjs +1 -1
- package/dist/blog-horizontal-cards.js +1 -1
- package/dist/blog-tech-insights.cjs +54 -45
- package/dist/blog-tech-insights.js +54 -45
- package/dist/carousel-animated-sections.cjs +1224 -0
- package/dist/carousel-animated-sections.d.cts +154 -0
- package/dist/carousel-animated-sections.d.ts +154 -0
- package/dist/carousel-animated-sections.js +1203 -0
- package/dist/carousel-auto-progress-slides.cjs +1156 -0
- package/dist/carousel-auto-progress-slides.d.cts +122 -0
- package/dist/carousel-auto-progress-slides.d.ts +122 -0
- package/dist/carousel-auto-progress-slides.js +1135 -0
- package/dist/carousel-autoplay-progress.cjs +1141 -0
- package/dist/carousel-autoplay-progress.d.cts +119 -0
- package/dist/carousel-autoplay-progress.d.ts +119 -0
- package/dist/carousel-autoplay-progress.js +1116 -0
- package/dist/carousel-feature-badge.cjs +1216 -0
- package/dist/carousel-feature-badge.d.cts +99 -0
- package/dist/carousel-feature-badge.d.ts +99 -0
- package/dist/carousel-feature-badge.js +1192 -0
- package/dist/carousel-fullscreen-scroll-fx.cjs +526 -0
- package/dist/carousel-fullscreen-scroll-fx.d.cts +122 -0
- package/dist/carousel-fullscreen-scroll-fx.d.ts +122 -0
- package/dist/carousel-fullscreen-scroll-fx.js +505 -0
- package/dist/carousel-gallery-thumbnails.cjs +1059 -0
- package/dist/carousel-gallery-thumbnails.d.cts +122 -0
- package/dist/carousel-gallery-thumbnails.d.ts +122 -0
- package/dist/carousel-gallery-thumbnails.js +1038 -0
- package/dist/carousel-horizontal-cards.cjs +1083 -0
- package/dist/carousel-horizontal-cards.d.cts +126 -0
- package/dist/carousel-horizontal-cards.d.ts +126 -0
- package/dist/carousel-horizontal-cards.js +1062 -0
- package/dist/carousel-image-hero.cjs +1075 -0
- package/dist/carousel-image-hero.d.cts +116 -0
- package/dist/carousel-image-hero.d.ts +116 -0
- package/dist/carousel-image-hero.js +1054 -0
- package/dist/carousel-multi-step-showcase.cjs +1146 -0
- package/dist/carousel-multi-step-showcase.d.cts +142 -0
- package/dist/carousel-multi-step-showcase.d.ts +142 -0
- package/dist/carousel-multi-step-showcase.js +1125 -0
- package/dist/carousel-portfolio-hero.cjs +1063 -0
- package/dist/carousel-portfolio-hero.d.cts +134 -0
- package/dist/carousel-portfolio-hero.d.ts +134 -0
- package/dist/carousel-portfolio-hero.js +1042 -0
- package/dist/carousel-product-feature-showcase.cjs +1127 -0
- package/dist/carousel-product-feature-showcase.d.cts +161 -0
- package/dist/carousel-product-feature-showcase.d.ts +161 -0
- package/dist/carousel-product-feature-showcase.js +1106 -0
- package/dist/carousel-progress-slider.cjs +597 -0
- package/dist/carousel-progress-slider.d.cts +122 -0
- package/dist/carousel-progress-slider.d.ts +122 -0
- package/dist/carousel-progress-slider.js +576 -0
- package/dist/carousel-scrolling-feature-showcase.cjs +530 -0
- package/dist/carousel-scrolling-feature-showcase.d.cts +126 -0
- package/dist/carousel-scrolling-feature-showcase.d.ts +126 -0
- package/dist/carousel-scrolling-feature-showcase.js +509 -0
- package/dist/registry.cjs +349 -238
- package/dist/registry.js +349 -238
- package/package.json +3 -2
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { P as PatternName } from './pattern-background-a7gKHzHy.js';
|
|
3
|
+
import { f as SectionBackground, g as SectionSpacing } from './community-initiatives-BeWIIjA4.js';
|
|
4
|
+
import { O as OptixFlowConfig } from './blocks-k17uluAz.js';
|
|
5
|
+
import 'react/jsx-runtime';
|
|
6
|
+
import 'class-variance-authority';
|
|
7
|
+
import './button-variants-lRElsmTc.js';
|
|
8
|
+
import 'class-variance-authority/types';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* CarouselFullscreenScrollFx
|
|
12
|
+
*
|
|
13
|
+
* A GSAP-powered fullscreen carousel with scroll-triggered animations,
|
|
14
|
+
* pinned sections, and smooth parallax effects. Features immersive
|
|
15
|
+
* full-viewport slides with overlay content and navigation indicators.
|
|
16
|
+
*
|
|
17
|
+
* Use cases:
|
|
18
|
+
* - Immersive storytelling experiences
|
|
19
|
+
* - Portfolio showcases with dramatic transitions
|
|
20
|
+
* - Product launches with cinematic presentations
|
|
21
|
+
* - Brand story pages with scroll-driven narratives
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
interface FullscreenSlide {
|
|
25
|
+
/**
|
|
26
|
+
* Unique identifier for the slide
|
|
27
|
+
*/
|
|
28
|
+
id: string;
|
|
29
|
+
/**
|
|
30
|
+
* Slide title
|
|
31
|
+
*/
|
|
32
|
+
title?: React.ReactNode;
|
|
33
|
+
/**
|
|
34
|
+
* Slide subtitle/eyebrow text
|
|
35
|
+
*/
|
|
36
|
+
subtitle?: React.ReactNode;
|
|
37
|
+
/**
|
|
38
|
+
* Slide description
|
|
39
|
+
*/
|
|
40
|
+
description?: React.ReactNode;
|
|
41
|
+
/**
|
|
42
|
+
* Image source URL
|
|
43
|
+
*/
|
|
44
|
+
image: string;
|
|
45
|
+
/**
|
|
46
|
+
* Overlay color (rgba format)
|
|
47
|
+
*/
|
|
48
|
+
overlayColor?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Additional CSS classes for the slide
|
|
51
|
+
*/
|
|
52
|
+
className?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Additional CSS classes for the image
|
|
55
|
+
*/
|
|
56
|
+
imageClassName?: string;
|
|
57
|
+
}
|
|
58
|
+
interface CarouselFullscreenScrollFxProps {
|
|
59
|
+
/**
|
|
60
|
+
* Array of fullscreen slides
|
|
61
|
+
*/
|
|
62
|
+
slides?: FullscreenSlide[];
|
|
63
|
+
/**
|
|
64
|
+
* Custom slot for rendering slides (overrides slides array)
|
|
65
|
+
*/
|
|
66
|
+
slidesSlot?: React.ReactNode;
|
|
67
|
+
/**
|
|
68
|
+
* Additional CSS classes for the section
|
|
69
|
+
*/
|
|
70
|
+
className?: string;
|
|
71
|
+
/**
|
|
72
|
+
* Additional CSS classes for the navigation dots
|
|
73
|
+
*/
|
|
74
|
+
navigationClassName?: string;
|
|
75
|
+
/**
|
|
76
|
+
* Additional CSS classes for the content area
|
|
77
|
+
*/
|
|
78
|
+
contentClassName?: string;
|
|
79
|
+
/**
|
|
80
|
+
* Additional CSS classes for the subtitle
|
|
81
|
+
*/
|
|
82
|
+
subtitleClassName?: string;
|
|
83
|
+
/**
|
|
84
|
+
* Additional CSS classes for the title
|
|
85
|
+
*/
|
|
86
|
+
titleClassName?: string;
|
|
87
|
+
/**
|
|
88
|
+
* Additional CSS classes for the description
|
|
89
|
+
*/
|
|
90
|
+
descriptionClassName?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Additional CSS classes for the scroll indicator
|
|
93
|
+
*/
|
|
94
|
+
scrollIndicatorClassName?: string;
|
|
95
|
+
/**
|
|
96
|
+
* Additional CSS classes for the slide counter
|
|
97
|
+
*/
|
|
98
|
+
counterClassName?: string;
|
|
99
|
+
/**
|
|
100
|
+
* OptixFlow image optimization configuration
|
|
101
|
+
*/
|
|
102
|
+
optixFlowConfig?: OptixFlowConfig;
|
|
103
|
+
/**
|
|
104
|
+
* Background style for the section
|
|
105
|
+
*/
|
|
106
|
+
background?: SectionBackground;
|
|
107
|
+
/**
|
|
108
|
+
* Vertical spacing for the section
|
|
109
|
+
*/
|
|
110
|
+
spacing?: SectionSpacing;
|
|
111
|
+
/**
|
|
112
|
+
* Optional background pattern name or URL
|
|
113
|
+
*/
|
|
114
|
+
pattern?: PatternName | undefined;
|
|
115
|
+
/**
|
|
116
|
+
* Pattern overlay opacity (0-1)
|
|
117
|
+
*/
|
|
118
|
+
patternOpacity?: number;
|
|
119
|
+
}
|
|
120
|
+
declare function CarouselFullscreenScrollFx({ slides, slidesSlot, className, navigationClassName, contentClassName, subtitleClassName, titleClassName, descriptionClassName, scrollIndicatorClassName, counterClassName, optixFlowConfig, background, spacing, pattern, patternOpacity, }: CarouselFullscreenScrollFxProps): React.JSX.Element;
|
|
121
|
+
|
|
122
|
+
export { CarouselFullscreenScrollFx, type CarouselFullscreenScrollFxProps, type FullscreenSlide };
|
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React3 from 'react';
|
|
3
|
+
import React3__default from 'react';
|
|
4
|
+
import { clsx } from 'clsx';
|
|
5
|
+
import { twMerge } from 'tailwind-merge';
|
|
6
|
+
import { Img } from '@page-speed/img';
|
|
7
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
8
|
+
|
|
9
|
+
// components/blocks/carousel/carousel-fullscreen-scroll-fx.tsx
|
|
10
|
+
function cn(...inputs) {
|
|
11
|
+
return twMerge(clsx(inputs));
|
|
12
|
+
}
|
|
13
|
+
var maxWidthStyles = {
|
|
14
|
+
sm: "max-w-screen-sm",
|
|
15
|
+
md: "max-w-screen-md",
|
|
16
|
+
lg: "max-w-screen-lg",
|
|
17
|
+
xl: "max-w-7xl",
|
|
18
|
+
"2xl": "max-w-screen-2xl",
|
|
19
|
+
"4xl": "max-w-[1536px]",
|
|
20
|
+
full: "max-w-full"
|
|
21
|
+
};
|
|
22
|
+
var Container = React3__default.forwardRef(
|
|
23
|
+
({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
|
|
24
|
+
const Component = as;
|
|
25
|
+
return /* @__PURE__ */ jsx(
|
|
26
|
+
Component,
|
|
27
|
+
{
|
|
28
|
+
ref,
|
|
29
|
+
className: cn(
|
|
30
|
+
"mx-auto w-full px-2 sm:px-4 lg:px-8",
|
|
31
|
+
maxWidthStyles[maxWidth],
|
|
32
|
+
className
|
|
33
|
+
),
|
|
34
|
+
...props,
|
|
35
|
+
children
|
|
36
|
+
}
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
Container.displayName = "Container";
|
|
41
|
+
|
|
42
|
+
// lib/patternSvgs.ts
|
|
43
|
+
var patternSvgs = {
|
|
44
|
+
squareAltGrid: "https://cdn.ing/assets/files/record/286187/4gpn0yq2ptra8iwlvmwwv860ggwv",
|
|
45
|
+
grid1: "https://cdn.ing/assets/files/record/286186/nbdflpgp4ostrno079hygibsflp3",
|
|
46
|
+
noise: "https://cdn.ing/assets/i/r/286188/zrqcp9hynh3j7p2laihwzfbujgrl/noise.png",
|
|
47
|
+
dots: "https://cdn.ing/assets/files/record/286198/yfsjx9thvtxzhl2qtshxyhkrm524",
|
|
48
|
+
dotPattern: "https://cdn.ing/assets/files/record/286192/7ig0cku8aqbboiza8nuk6hw0nnsr",
|
|
49
|
+
dotPattern2: "https://cdn.ing/assets/files/record/286189/arez6gd2s7isn9i1o6c7sexdq7bl",
|
|
50
|
+
circles: "https://cdn.ing/assets/files/record/286190/gtmia3sncjtzetdshc20zf1d3c17",
|
|
51
|
+
waves: "https://cdn.ing/assets/files/record/286191/mqlb33fzxz9cdth1bx7if0wmpkp1",
|
|
52
|
+
crossPattern: "https://cdn.ing/assets/files/record/286193/9yfqwdbnqaipbp7fsb3wbzzmq472",
|
|
53
|
+
architect: "https://cdn.ing/assets/files/record/286194/vgs88ugpvyhxu13wqgy0acvae6re",
|
|
54
|
+
tinyCheckers: "https://cdn.ing/assets/files/record/286195/65efaknsw8kcpf9o3c2gybytsl5b",
|
|
55
|
+
p6: "https://cdn.ing/assets/i/r/286196/6kl0rqnd6mjk8j7e525fo8fo0vkc/p6.webp"
|
|
56
|
+
};
|
|
57
|
+
var maskTop = "radial-gradient(ellipse 70% 60% at 50% 0%, #000 60%, transparent 100%)";
|
|
58
|
+
var maskBottom = "radial-gradient(ellipse 100% 80% at 50% 100%, #000 50%, transparent 90%)";
|
|
59
|
+
var maskCenter = "radial-gradient(ellipse 60% 60% at 50% 50%, #000 30%, transparent 70%)";
|
|
60
|
+
var maskTopLeft = "radial-gradient(ellipse 80% 80% at 0% 0%, #000 50%, transparent 90%)";
|
|
61
|
+
var maskTopRight = "radial-gradient(ellipse 80% 80% at 100% 0%, #000 50%, transparent 90%)";
|
|
62
|
+
var maskBottomLeft = "radial-gradient(ellipse 80% 80% at 0% 100%, #000 50%, transparent 90%)";
|
|
63
|
+
var maskBottomRight = "radial-gradient(ellipse 80% 80% at 100% 100%, #000 50%, transparent 90%)";
|
|
64
|
+
var circuitBoardPattern = (id, mask) => /* @__PURE__ */ jsxs(
|
|
65
|
+
"svg",
|
|
66
|
+
{
|
|
67
|
+
className: "h-full w-full",
|
|
68
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
69
|
+
style: mask ? {
|
|
70
|
+
maskImage: mask,
|
|
71
|
+
WebkitMaskImage: mask
|
|
72
|
+
} : void 0,
|
|
73
|
+
children: [
|
|
74
|
+
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs(
|
|
75
|
+
"pattern",
|
|
76
|
+
{
|
|
77
|
+
id,
|
|
78
|
+
x: "0",
|
|
79
|
+
y: "0",
|
|
80
|
+
width: "100",
|
|
81
|
+
height: "100",
|
|
82
|
+
patternUnits: "userSpaceOnUse",
|
|
83
|
+
children: [
|
|
84
|
+
/* @__PURE__ */ jsx(
|
|
85
|
+
"path",
|
|
86
|
+
{
|
|
87
|
+
d: "M0 50h40M60 50h40M50 0v40M50 60v40",
|
|
88
|
+
stroke: "hsl(var(--muted))",
|
|
89
|
+
strokeWidth: "1",
|
|
90
|
+
fill: "none"
|
|
91
|
+
}
|
|
92
|
+
),
|
|
93
|
+
/* @__PURE__ */ jsx("circle", { cx: "50", cy: "50", r: "3", fill: "hsl(var(--muted))" }),
|
|
94
|
+
/* @__PURE__ */ jsx("circle", { cx: "0", cy: "50", r: "2", fill: "hsl(var(--muted))" }),
|
|
95
|
+
/* @__PURE__ */ jsx("circle", { cx: "100", cy: "50", r: "2", fill: "hsl(var(--muted))" }),
|
|
96
|
+
/* @__PURE__ */ jsx("circle", { cx: "50", cy: "0", r: "2", fill: "hsl(var(--muted))" }),
|
|
97
|
+
/* @__PURE__ */ jsx("circle", { cx: "50", cy: "100", r: "2", fill: "hsl(var(--muted))" })
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
) }),
|
|
101
|
+
/* @__PURE__ */ jsx("rect", { width: "100%", height: "100%", fill: `url(#${id})` })
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
);
|
|
105
|
+
var gridDotsPattern = (id, mask) => /* @__PURE__ */ jsxs(
|
|
106
|
+
"svg",
|
|
107
|
+
{
|
|
108
|
+
className: "h-full w-full",
|
|
109
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
110
|
+
style: mask ? {
|
|
111
|
+
maskImage: mask,
|
|
112
|
+
WebkitMaskImage: mask
|
|
113
|
+
} : void 0,
|
|
114
|
+
children: [
|
|
115
|
+
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs(
|
|
116
|
+
"pattern",
|
|
117
|
+
{
|
|
118
|
+
id,
|
|
119
|
+
x: "0",
|
|
120
|
+
y: "0",
|
|
121
|
+
width: "40",
|
|
122
|
+
height: "40",
|
|
123
|
+
patternUnits: "userSpaceOnUse",
|
|
124
|
+
children: [
|
|
125
|
+
/* @__PURE__ */ jsx(
|
|
126
|
+
"path",
|
|
127
|
+
{
|
|
128
|
+
d: "M0 20h40M20 0v40",
|
|
129
|
+
stroke: "hsl(var(--muted))",
|
|
130
|
+
strokeWidth: "0.5",
|
|
131
|
+
fill: "none"
|
|
132
|
+
}
|
|
133
|
+
),
|
|
134
|
+
/* @__PURE__ */ jsx("circle", { cx: "20", cy: "20", r: "2", fill: "hsl(var(--muted))" })
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
) }),
|
|
138
|
+
/* @__PURE__ */ jsx("rect", { width: "100%", height: "100%", fill: `url(#${id})` })
|
|
139
|
+
]
|
|
140
|
+
}
|
|
141
|
+
);
|
|
142
|
+
var gridPattern = (size, mask) => /* @__PURE__ */ jsx(
|
|
143
|
+
"div",
|
|
144
|
+
{
|
|
145
|
+
className: "h-full w-full bg-[linear-gradient(to_right,_hsl(var(--muted))_1px,_transparent_1px),linear-gradient(to_bottom,_hsl(var(--muted))_1px,_transparent_1px)]",
|
|
146
|
+
style: {
|
|
147
|
+
backgroundSize: `${size}px ${size}px`,
|
|
148
|
+
...mask ? {
|
|
149
|
+
maskImage: mask,
|
|
150
|
+
WebkitMaskImage: mask
|
|
151
|
+
} : {}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
);
|
|
155
|
+
var diagonalCrossPattern = (mask) => /* @__PURE__ */ jsx(
|
|
156
|
+
"div",
|
|
157
|
+
{
|
|
158
|
+
className: "h-full w-full",
|
|
159
|
+
style: {
|
|
160
|
+
backgroundImage: "repeating-linear-gradient(45deg, transparent, transparent 32px, hsl(var(--muted)) 32px, hsl(var(--muted)) 33px), repeating-linear-gradient(135deg, transparent, transparent 32px, hsl(var(--muted)) 32px, hsl(var(--muted)) 33px)",
|
|
161
|
+
...mask ? {
|
|
162
|
+
maskImage: mask,
|
|
163
|
+
WebkitMaskImage: mask
|
|
164
|
+
} : {}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
);
|
|
168
|
+
var dashedGridMaskBase = "repeating-linear-gradient(to right, black 0px, black 3px, transparent 3px, transparent 8px), repeating-linear-gradient(to bottom, black 0px, black 3px, transparent 3px, transparent 8px)";
|
|
169
|
+
var dashedGridPattern = (fadeMask) => {
|
|
170
|
+
const mask = fadeMask ? `${dashedGridMaskBase}, ${fadeMask}` : dashedGridMaskBase;
|
|
171
|
+
return /* @__PURE__ */ jsx(
|
|
172
|
+
"div",
|
|
173
|
+
{
|
|
174
|
+
className: "h-full w-full",
|
|
175
|
+
style: {
|
|
176
|
+
backgroundImage: "linear-gradient(to right, hsl(var(--muted)) 1px, transparent 1px), linear-gradient(to bottom, hsl(var(--muted)) 1px, transparent 1px)",
|
|
177
|
+
backgroundSize: "20px 20px",
|
|
178
|
+
backgroundPosition: "0 0, 0 0",
|
|
179
|
+
maskImage: mask,
|
|
180
|
+
WebkitMaskImage: mask,
|
|
181
|
+
maskComposite: "intersect",
|
|
182
|
+
WebkitMaskComposite: "source-in"
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
);
|
|
186
|
+
};
|
|
187
|
+
var gradientGlow = (position) => /* @__PURE__ */ jsx(
|
|
188
|
+
"div",
|
|
189
|
+
{
|
|
190
|
+
className: cn(
|
|
191
|
+
"pointer-events-none absolute left-1/2 z-0 aspect-square w-3/4 -translate-x-1/2 rounded-full opacity-50 blur-3xl",
|
|
192
|
+
position === "top" ? "-top-1/4" : "-bottom-1/4"
|
|
193
|
+
),
|
|
194
|
+
style: {
|
|
195
|
+
background: "radial-gradient(circle, hsl(var(--primary)) 0%, transparent 70%)"
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
);
|
|
199
|
+
var spotlight = (position) => /* @__PURE__ */ jsx(
|
|
200
|
+
"div",
|
|
201
|
+
{
|
|
202
|
+
className: cn(
|
|
203
|
+
"pointer-events-none absolute top-1/2 z-0 aspect-square w-3/4 -translate-y-1/2 rounded-full opacity-40 blur-3xl",
|
|
204
|
+
position === "left" ? "-left-1/4" : "-right-1/4"
|
|
205
|
+
),
|
|
206
|
+
style: {
|
|
207
|
+
background: "radial-gradient(circle, hsl(var(--primary)) 0%, transparent 70%)"
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
);
|
|
211
|
+
var patternOverlays = {
|
|
212
|
+
circuitBoardBasic: () => circuitBoardPattern("circuit-board-basic"),
|
|
213
|
+
circuitBoardFadeTop: () => circuitBoardPattern("circuit-board-fade-top", maskTop),
|
|
214
|
+
circuitBoardFadeBottom: () => circuitBoardPattern("circuit-board-fade-bottom", maskBottom),
|
|
215
|
+
circuitBoardFadeCenter: () => circuitBoardPattern("circuit-board-fade-center", maskCenter),
|
|
216
|
+
circuitBoardFadeTopLeft: () => circuitBoardPattern("circuit-board-fade-top-left", maskTopLeft),
|
|
217
|
+
circuitBoardFadeTopRight: () => circuitBoardPattern("circuit-board-fade-top-right", maskTopRight),
|
|
218
|
+
circuitBoardFadeBottomLeft: () => circuitBoardPattern("circuit-board-fade-bottom-left", maskBottomLeft),
|
|
219
|
+
circuitBoardFadeBottomRight: () => circuitBoardPattern("circuit-board-fade-bottom-right", maskBottomRight),
|
|
220
|
+
dashedGridBasic: () => dashedGridPattern(),
|
|
221
|
+
dashedGridFadeTop: () => dashedGridPattern(maskTop),
|
|
222
|
+
dashedGridFadeBottom: () => dashedGridPattern(maskBottom),
|
|
223
|
+
dashedGridFadeCenter: () => dashedGridPattern(maskCenter),
|
|
224
|
+
dashedGridFadeTopLeft: () => dashedGridPattern(maskTopLeft),
|
|
225
|
+
dashedGridFadeTopRight: () => dashedGridPattern(maskTopRight),
|
|
226
|
+
dashedGridFadeBottomLeft: () => dashedGridPattern(maskBottomLeft),
|
|
227
|
+
dashedGridFadeBottomRight: () => dashedGridPattern(maskBottomRight),
|
|
228
|
+
diagonalCrossBasic: () => diagonalCrossPattern(),
|
|
229
|
+
diagonalCrossFadeTop: () => diagonalCrossPattern(maskTop),
|
|
230
|
+
diagonalCrossFadeBottom: () => diagonalCrossPattern(maskBottom),
|
|
231
|
+
diagonalCrossFadeCenter: () => diagonalCrossPattern(maskCenter),
|
|
232
|
+
diagonalCrossFadeTopLeft: () => diagonalCrossPattern(maskTopLeft),
|
|
233
|
+
diagonalCrossFadeTopRight: () => diagonalCrossPattern(maskTopRight),
|
|
234
|
+
diagonalCrossFadeBottomLeft: () => diagonalCrossPattern(maskBottomLeft),
|
|
235
|
+
diagonalCrossFadeBottomRight: () => diagonalCrossPattern(maskBottomRight),
|
|
236
|
+
gridBasic: () => gridPattern(40),
|
|
237
|
+
gridFadeTop: () => gridPattern(32, maskTop),
|
|
238
|
+
gridFadeBottom: () => gridPattern(32, maskBottom),
|
|
239
|
+
gridFadeCenter: () => gridPattern(40, maskCenter),
|
|
240
|
+
gridFadeTopLeft: () => gridPattern(32, maskTopLeft),
|
|
241
|
+
gridFadeTopRight: () => gridPattern(32, maskTopRight),
|
|
242
|
+
gridFadeBottomLeft: () => gridPattern(32, maskBottomLeft),
|
|
243
|
+
gridFadeBottomRight: () => gridPattern(32, maskBottomRight),
|
|
244
|
+
gridDotsBasic: () => gridDotsPattern("grid-dots-basic"),
|
|
245
|
+
gridDotsFadeCenter: () => gridDotsPattern("grid-dots-fade-center", maskCenter),
|
|
246
|
+
gradientGlowTop: () => gradientGlow("top"),
|
|
247
|
+
gradientGlowBottom: () => gradientGlow("bottom"),
|
|
248
|
+
spotlightLeft: () => spotlight("left"),
|
|
249
|
+
spotlightRight: () => spotlight("right")
|
|
250
|
+
};
|
|
251
|
+
var inlinePatternStyles = {
|
|
252
|
+
radialGradientTop: {
|
|
253
|
+
background: "radial-gradient(125% 125% at 50% 10%, hsl(var(--background)) 40%, hsl(var(--primary)) 100%)"
|
|
254
|
+
},
|
|
255
|
+
radialGradientBottom: {
|
|
256
|
+
background: "radial-gradient(125% 125% at 50% 90%, hsl(var(--background)) 40%, hsl(var(--primary)) 100%)"
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
function PatternBackground({
|
|
260
|
+
pattern,
|
|
261
|
+
opacity = 0.08,
|
|
262
|
+
className,
|
|
263
|
+
style
|
|
264
|
+
}) {
|
|
265
|
+
if (!pattern) {
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
if (pattern in inlinePatternStyles) {
|
|
269
|
+
const inlineStyle = inlinePatternStyles[pattern];
|
|
270
|
+
return /* @__PURE__ */ jsx(
|
|
271
|
+
"div",
|
|
272
|
+
{
|
|
273
|
+
className: cn("pointer-events-none absolute inset-0 z-0", className),
|
|
274
|
+
style: { ...inlineStyle, opacity, ...style },
|
|
275
|
+
"aria-hidden": "true"
|
|
276
|
+
}
|
|
277
|
+
);
|
|
278
|
+
}
|
|
279
|
+
if (pattern in patternOverlays) {
|
|
280
|
+
const Overlay = patternOverlays[pattern];
|
|
281
|
+
return /* @__PURE__ */ jsx(
|
|
282
|
+
"div",
|
|
283
|
+
{
|
|
284
|
+
className: cn("pointer-events-none absolute inset-0 z-0", className),
|
|
285
|
+
style: { opacity, ...style },
|
|
286
|
+
"aria-hidden": "true",
|
|
287
|
+
children: Overlay()
|
|
288
|
+
}
|
|
289
|
+
);
|
|
290
|
+
}
|
|
291
|
+
const patternUrl = pattern in patternSvgs ? patternSvgs[pattern] : pattern;
|
|
292
|
+
return /* @__PURE__ */ jsx(
|
|
293
|
+
"div",
|
|
294
|
+
{
|
|
295
|
+
className: cn("pointer-events-none absolute inset-0 z-0", className),
|
|
296
|
+
style: {
|
|
297
|
+
backgroundImage: `url(${patternUrl})`,
|
|
298
|
+
backgroundRepeat: "repeat",
|
|
299
|
+
backgroundSize: "auto",
|
|
300
|
+
opacity,
|
|
301
|
+
...style
|
|
302
|
+
},
|
|
303
|
+
"aria-hidden": "true"
|
|
304
|
+
}
|
|
305
|
+
);
|
|
306
|
+
}
|
|
307
|
+
var backgroundStyles = {
|
|
308
|
+
default: "bg-background text-foreground",
|
|
309
|
+
white: "bg-white text-dark",
|
|
310
|
+
gray: "bg-muted/30 text-foreground",
|
|
311
|
+
dark: "bg-foreground text-background",
|
|
312
|
+
transparent: "bg-transparent text-foreground",
|
|
313
|
+
gradient: "bg-linear-to-br from-primary via-primary/90 to-foreground text-primary-foreground",
|
|
314
|
+
primary: "bg-primary text-primary-foreground",
|
|
315
|
+
secondary: "bg-secondary text-secondary-foreground",
|
|
316
|
+
muted: "bg-muted text-muted-foreground"
|
|
317
|
+
};
|
|
318
|
+
var spacingStyles = {
|
|
319
|
+
none: "py-0 md:py-0",
|
|
320
|
+
sm: "py-12 md:py-16",
|
|
321
|
+
md: "py-16 md:py-24",
|
|
322
|
+
lg: "py-20 md:py-32",
|
|
323
|
+
xl: "py-24 md:py-40"
|
|
324
|
+
};
|
|
325
|
+
var predefinedSpacings = ["none", "sm", "md", "lg", "xl"];
|
|
326
|
+
var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
|
|
327
|
+
var Section = React3__default.forwardRef(
|
|
328
|
+
({
|
|
329
|
+
id,
|
|
330
|
+
title,
|
|
331
|
+
subtitle,
|
|
332
|
+
children,
|
|
333
|
+
className,
|
|
334
|
+
style,
|
|
335
|
+
background = "default",
|
|
336
|
+
spacing = "lg",
|
|
337
|
+
pattern,
|
|
338
|
+
patternOpacity,
|
|
339
|
+
patternClassName,
|
|
340
|
+
containerClassName,
|
|
341
|
+
containerMaxWidth = "xl",
|
|
342
|
+
...props
|
|
343
|
+
}, ref) => {
|
|
344
|
+
const effectivePatternOpacity = patternOpacity !== void 0 ? patternOpacity : pattern ? 1 : 0;
|
|
345
|
+
return /* @__PURE__ */ jsxs(
|
|
346
|
+
"section",
|
|
347
|
+
{
|
|
348
|
+
ref,
|
|
349
|
+
id,
|
|
350
|
+
className: cn(
|
|
351
|
+
"relative",
|
|
352
|
+
pattern ? "overflow-hidden" : null,
|
|
353
|
+
backgroundStyles[background],
|
|
354
|
+
isPredefinedSpacing(spacing) ? spacingStyles[spacing] : spacing,
|
|
355
|
+
className
|
|
356
|
+
),
|
|
357
|
+
style,
|
|
358
|
+
...props,
|
|
359
|
+
children: [
|
|
360
|
+
/* @__PURE__ */ jsx(
|
|
361
|
+
PatternBackground,
|
|
362
|
+
{
|
|
363
|
+
pattern,
|
|
364
|
+
opacity: effectivePatternOpacity,
|
|
365
|
+
className: patternClassName
|
|
366
|
+
}
|
|
367
|
+
),
|
|
368
|
+
/* @__PURE__ */ jsxs(
|
|
369
|
+
Container,
|
|
370
|
+
{
|
|
371
|
+
maxWidth: containerMaxWidth,
|
|
372
|
+
className: cn("relative z-10", containerClassName),
|
|
373
|
+
children: [
|
|
374
|
+
(title || subtitle) && /* @__PURE__ */ jsxs("div", { className: "mb-12 text-center md:mb-16", children: [
|
|
375
|
+
subtitle && /* @__PURE__ */ jsx("p", { className: "mb-2 text-sm font-semibold uppercase tracking-wider text-primary", children: subtitle }),
|
|
376
|
+
title && /* @__PURE__ */ jsx("h2", { className: "text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl", children: title })
|
|
377
|
+
] }),
|
|
378
|
+
children
|
|
379
|
+
]
|
|
380
|
+
}
|
|
381
|
+
)
|
|
382
|
+
]
|
|
383
|
+
}
|
|
384
|
+
);
|
|
385
|
+
}
|
|
386
|
+
);
|
|
387
|
+
Section.displayName = "Section";
|
|
388
|
+
function CarouselFullscreenScrollFx({
|
|
389
|
+
slides,
|
|
390
|
+
slidesSlot,
|
|
391
|
+
className,
|
|
392
|
+
navigationClassName,
|
|
393
|
+
contentClassName,
|
|
394
|
+
subtitleClassName,
|
|
395
|
+
titleClassName,
|
|
396
|
+
descriptionClassName,
|
|
397
|
+
scrollIndicatorClassName,
|
|
398
|
+
counterClassName,
|
|
399
|
+
optixFlowConfig,
|
|
400
|
+
background = "white",
|
|
401
|
+
spacing = "xl",
|
|
402
|
+
pattern,
|
|
403
|
+
patternOpacity
|
|
404
|
+
}) {
|
|
405
|
+
const containerRef = React3.useRef(null);
|
|
406
|
+
const [activeIndex, setActiveIndex] = React3.useState(0);
|
|
407
|
+
React3.useEffect(() => {
|
|
408
|
+
const observers = [];
|
|
409
|
+
slides?.forEach((slide, index) => {
|
|
410
|
+
const element = document.getElementById(`fullscreen-${slide.id}`);
|
|
411
|
+
if (element) {
|
|
412
|
+
const observer = new IntersectionObserver(
|
|
413
|
+
(entries) => {
|
|
414
|
+
entries.forEach((entry) => {
|
|
415
|
+
if (entry.isIntersecting && entry.intersectionRatio > 0.5) {
|
|
416
|
+
setActiveIndex(index);
|
|
417
|
+
}
|
|
418
|
+
});
|
|
419
|
+
},
|
|
420
|
+
{ threshold: 0.5 }
|
|
421
|
+
);
|
|
422
|
+
observer.observe(element);
|
|
423
|
+
observers.push(observer);
|
|
424
|
+
}
|
|
425
|
+
});
|
|
426
|
+
return () => {
|
|
427
|
+
observers.forEach((observer) => observer.disconnect());
|
|
428
|
+
};
|
|
429
|
+
}, [slides]);
|
|
430
|
+
return /* @__PURE__ */ jsxs(
|
|
431
|
+
Section,
|
|
432
|
+
{
|
|
433
|
+
ref: containerRef,
|
|
434
|
+
background,
|
|
435
|
+
spacing,
|
|
436
|
+
className: cn(className),
|
|
437
|
+
pattern,
|
|
438
|
+
patternOpacity,
|
|
439
|
+
children: [
|
|
440
|
+
/* @__PURE__ */ jsx("div", { className: cn("fixed right-6 top-1/2 z-50 hidden -translate-y-1/2 flex-col gap-3 lg:flex", navigationClassName), children: slides?.map((slide, index) => /* @__PURE__ */ jsx(
|
|
441
|
+
"button",
|
|
442
|
+
{
|
|
443
|
+
onClick: () => {
|
|
444
|
+
const element = document.getElementById(`fullscreen-${slide.id}`);
|
|
445
|
+
element?.scrollIntoView({ behavior: "smooth" });
|
|
446
|
+
},
|
|
447
|
+
className: cn(
|
|
448
|
+
"h-3 w-3 rounded-full border-2 transition-all",
|
|
449
|
+
activeIndex === index ? "scale-125 border-white bg-white" : "border-white/50 bg-transparent hover:border-white"
|
|
450
|
+
),
|
|
451
|
+
"aria-label": `Go to ${typeof slide.title === "string" ? slide.title : `Slide ${index + 1}`}`
|
|
452
|
+
},
|
|
453
|
+
slide.id
|
|
454
|
+
)) }),
|
|
455
|
+
slidesSlot ? slidesSlot : slides?.map((slide, index) => /* @__PURE__ */ jsxs(
|
|
456
|
+
"div",
|
|
457
|
+
{
|
|
458
|
+
id: `fullscreen-${slide.id}`,
|
|
459
|
+
className: cn("relative flex h-screen w-full items-center justify-center overflow-hidden", slide.className),
|
|
460
|
+
children: [
|
|
461
|
+
/* @__PURE__ */ jsxs("div", { className: "absolute inset-0", children: [
|
|
462
|
+
/* @__PURE__ */ jsx(
|
|
463
|
+
Img,
|
|
464
|
+
{
|
|
465
|
+
src: slide.image,
|
|
466
|
+
alt: typeof slide.title === "string" ? slide.title : `Slide ${index + 1}`,
|
|
467
|
+
className: cn("h-full w-full object-cover", slide.imageClassName),
|
|
468
|
+
optixFlowConfig
|
|
469
|
+
}
|
|
470
|
+
),
|
|
471
|
+
/* @__PURE__ */ jsx(
|
|
472
|
+
"div",
|
|
473
|
+
{
|
|
474
|
+
className: "absolute inset-0",
|
|
475
|
+
style: {
|
|
476
|
+
backgroundColor: slide.overlayColor || "rgba(0, 0, 0, 0.5)"
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
)
|
|
480
|
+
] }),
|
|
481
|
+
/* @__PURE__ */ jsxs("div", { className: cn("relative z-10 mx-auto max-w-4xl px-6 text-center text-white", contentClassName), children: [
|
|
482
|
+
slide.subtitle && (typeof slide.subtitle === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-4 text-sm font-medium uppercase tracking-widest text-white/70", subtitleClassName), children: slide.subtitle }) : /* @__PURE__ */ jsx("div", { className: subtitleClassName, children: slide.subtitle })),
|
|
483
|
+
slide.title && (typeof slide.title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("mb-6 text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", titleClassName), children: slide.title }) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: slide.title })),
|
|
484
|
+
slide.description && (typeof slide.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mx-auto max-w-2xl text-lg text-white/80 md:text-xl", descriptionClassName), children: slide.description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: slide.description })),
|
|
485
|
+
index < (slides?.length ?? 0) - 1 && /* @__PURE__ */ jsx("div", { className: cn("absolute bottom-8 left-1/2 -translate-x-1/2", scrollIndicatorClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-2", children: [
|
|
486
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs uppercase tracking-widest text-white/50", children: "Scroll" }),
|
|
487
|
+
/* @__PURE__ */ jsx("div", { className: "h-12 w-px animate-pulse bg-gradient-to-b from-white/50 to-transparent" })
|
|
488
|
+
] }) })
|
|
489
|
+
] }),
|
|
490
|
+
/* @__PURE__ */ jsxs("div", { className: cn("absolute bottom-8 right-8 text-sm text-white/50", counterClassName), children: [
|
|
491
|
+
String(index + 1).padStart(2, "0"),
|
|
492
|
+
" /",
|
|
493
|
+
" ",
|
|
494
|
+
String(slides?.length ?? 0).padStart(2, "0")
|
|
495
|
+
] })
|
|
496
|
+
]
|
|
497
|
+
},
|
|
498
|
+
slide.id
|
|
499
|
+
))
|
|
500
|
+
]
|
|
501
|
+
}
|
|
502
|
+
);
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
export { CarouselFullscreenScrollFx };
|