@tampadevs/react 0.1.0
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/components/Avatar.d.ts +16 -0
- package/dist/components/Avatar.d.ts.map +1 -0
- package/dist/components/AvatarGroup.d.ts +14 -0
- package/dist/components/AvatarGroup.d.ts.map +1 -0
- package/dist/components/Button.d.ts +13 -0
- package/dist/components/Button.d.ts.map +1 -0
- package/dist/components/Button.test.d.ts +2 -0
- package/dist/components/Button.test.d.ts.map +1 -0
- package/dist/components/Calendar.d.ts +27 -0
- package/dist/components/Calendar.d.ts.map +1 -0
- package/dist/components/Carousel.d.ts +11 -0
- package/dist/components/Carousel.d.ts.map +1 -0
- package/dist/components/CtaSection.d.ts +13 -0
- package/dist/components/CtaSection.d.ts.map +1 -0
- package/dist/components/EventCard.d.ts +19 -0
- package/dist/components/EventCard.d.ts.map +1 -0
- package/dist/components/Footer.d.ts +25 -0
- package/dist/components/Footer.d.ts.map +1 -0
- package/dist/components/Header.d.ts +17 -0
- package/dist/components/Header.d.ts.map +1 -0
- package/dist/components/Icon.d.ts +8 -0
- package/dist/components/Icon.d.ts.map +1 -0
- package/dist/components/Image.d.ts +17 -0
- package/dist/components/Image.d.ts.map +1 -0
- package/dist/components/ImageCarousel.d.ts +18 -0
- package/dist/components/ImageCarousel.d.ts.map +1 -0
- package/dist/components/ImageText.d.ts +16 -0
- package/dist/components/ImageText.d.ts.map +1 -0
- package/dist/components/Logo.d.ts +15 -0
- package/dist/components/Logo.d.ts.map +1 -0
- package/dist/components/Logo3d.d.ts +28 -0
- package/dist/components/Logo3d.d.ts.map +1 -0
- package/dist/components/LogoMarquee.d.ts +18 -0
- package/dist/components/LogoMarquee.d.ts.map +1 -0
- package/dist/components/NewsletterSignup.d.ts +11 -0
- package/dist/components/NewsletterSignup.d.ts.map +1 -0
- package/dist/components/OpenCollective.d.ts +16 -0
- package/dist/components/OpenCollective.d.ts.map +1 -0
- package/dist/components/PersonCard.d.ts +20 -0
- package/dist/components/PersonCard.d.ts.map +1 -0
- package/dist/components/PersonTable.d.ts +28 -0
- package/dist/components/PersonTable.d.ts.map +1 -0
- package/dist/components/PromoSection.d.ts +20 -0
- package/dist/components/PromoSection.d.ts.map +1 -0
- package/dist/components/SponsorCard.d.ts +10 -0
- package/dist/components/SponsorCard.d.ts.map +1 -0
- package/dist/components/SponsorGrid.d.ts +21 -0
- package/dist/components/SponsorGrid.d.ts.map +1 -0
- package/dist/components/Table.d.ts +30 -0
- package/dist/components/Table.d.ts.map +1 -0
- package/dist/components/VideoEmbed.d.ts +14 -0
- package/dist/components/VideoEmbed.d.ts.map +1 -0
- package/dist/components/VideoHero.d.ts +16 -0
- package/dist/components/VideoHero.d.ts.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/index10.js +185 -0
- package/dist/index10.js.map +1 -0
- package/dist/index11.js +268 -0
- package/dist/index11.js.map +1 -0
- package/dist/index12.js +133 -0
- package/dist/index12.js.map +1 -0
- package/dist/index13.js +112 -0
- package/dist/index13.js.map +1 -0
- package/dist/index14.js +286 -0
- package/dist/index14.js.map +1 -0
- package/dist/index15.js +325 -0
- package/dist/index15.js.map +1 -0
- package/dist/index16.js +204 -0
- package/dist/index16.js.map +1 -0
- package/dist/index17.js +269 -0
- package/dist/index17.js.map +1 -0
- package/dist/index18.js +147 -0
- package/dist/index18.js.map +1 -0
- package/dist/index19.js +697 -0
- package/dist/index19.js.map +1 -0
- package/dist/index2.js +181 -0
- package/dist/index2.js.map +1 -0
- package/dist/index20.js +492 -0
- package/dist/index20.js.map +1 -0
- package/dist/index21.js +277 -0
- package/dist/index21.js.map +1 -0
- package/dist/index22.js +331 -0
- package/dist/index22.js.map +1 -0
- package/dist/index23.js +98 -0
- package/dist/index23.js.map +1 -0
- package/dist/index24.js +406 -0
- package/dist/index24.js.map +1 -0
- package/dist/index25.js +464 -0
- package/dist/index25.js.map +1 -0
- package/dist/index26.js +280 -0
- package/dist/index26.js.map +1 -0
- package/dist/index27.js +234 -0
- package/dist/index27.js.map +1 -0
- package/dist/index28.js +18 -0
- package/dist/index28.js.map +1 -0
- package/dist/index29.js +10779 -0
- package/dist/index29.js.map +1 -0
- package/dist/index3.js +39 -0
- package/dist/index3.js.map +1 -0
- package/dist/index30.js +358 -0
- package/dist/index30.js.map +1 -0
- package/dist/index31.js +199 -0
- package/dist/index31.js.map +1 -0
- package/dist/index32.js +22762 -0
- package/dist/index32.js.map +1 -0
- package/dist/index4.js +142 -0
- package/dist/index4.js.map +1 -0
- package/dist/index5.js +128 -0
- package/dist/index5.js.map +1 -0
- package/dist/index6.js +109 -0
- package/dist/index6.js.map +1 -0
- package/dist/index7.js +254 -0
- package/dist/index7.js.map +1 -0
- package/dist/index8.js +237 -0
- package/dist/index8.js.map +1 -0
- package/dist/index9.js +142 -0
- package/dist/index9.js.map +1 -0
- package/dist/test/setup.d.ts +2 -0
- package/dist/test/setup.d.ts.map +1 -0
- package/package.json +58 -0
package/dist/index17.js
ADDED
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { jsxs as n, Fragment as g, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { useState as u } from "react";
|
|
3
|
+
import { clsx as N } from "./index28.js";
|
|
4
|
+
function j(i, e, d, r, a) {
|
|
5
|
+
if (i) return i;
|
|
6
|
+
if (e)
|
|
7
|
+
switch (d) {
|
|
8
|
+
case "youtube": {
|
|
9
|
+
const o = new URLSearchParams({
|
|
10
|
+
autoplay: r || a ? "1" : "0",
|
|
11
|
+
rel: "0",
|
|
12
|
+
modestbranding: "1"
|
|
13
|
+
});
|
|
14
|
+
return `https://www.youtube.com/embed/${e}?${o}`;
|
|
15
|
+
}
|
|
16
|
+
case "vimeo": {
|
|
17
|
+
const o = new URLSearchParams({
|
|
18
|
+
autoplay: r || a ? "1" : "0"
|
|
19
|
+
});
|
|
20
|
+
return `https://player.vimeo.com/video/${e}?${o}`;
|
|
21
|
+
}
|
|
22
|
+
default:
|
|
23
|
+
return "";
|
|
24
|
+
}
|
|
25
|
+
return "";
|
|
26
|
+
}
|
|
27
|
+
function $(i, e, d) {
|
|
28
|
+
return i || (e && d === "youtube" ? `https://img.youtube.com/vi/${e}/maxresdefault.jpg` : "");
|
|
29
|
+
}
|
|
30
|
+
function z(i) {
|
|
31
|
+
const [e, d] = i.split("/").map(Number);
|
|
32
|
+
return e && d ? `${d / e * 100}%` : "56.25%";
|
|
33
|
+
}
|
|
34
|
+
function S({
|
|
35
|
+
src: i = "",
|
|
36
|
+
videoId: e = "",
|
|
37
|
+
provider: d = "youtube",
|
|
38
|
+
title: r = "Video",
|
|
39
|
+
thumbnail: a = "",
|
|
40
|
+
aspectRatio: o = "16/9",
|
|
41
|
+
autoplay: h = !1,
|
|
42
|
+
lazyLoad: b = !0,
|
|
43
|
+
className: v
|
|
44
|
+
}) {
|
|
45
|
+
const [s, x] = u(!1), [_, m] = u(!1), f = j(i, e, d, h, s), p = $(a, e, d), w = b && !s && p, c = () => {
|
|
46
|
+
m(!0), x(!0);
|
|
47
|
+
}, y = () => {
|
|
48
|
+
m(!1);
|
|
49
|
+
}, k = (l) => {
|
|
50
|
+
(l.key === "Enter" || l.key === " ") && (l.preventDefault(), c());
|
|
51
|
+
};
|
|
52
|
+
return /* @__PURE__ */ n(g, { children: [
|
|
53
|
+
/* @__PURE__ */ t("div", { className: N("td-video-embed", v), children: /* @__PURE__ */ n(
|
|
54
|
+
"div",
|
|
55
|
+
{
|
|
56
|
+
className: "td-video-embed__aspect",
|
|
57
|
+
style: { paddingBottom: z(o) },
|
|
58
|
+
children: [
|
|
59
|
+
(s || !b) && /* @__PURE__ */ n(g, { children: [
|
|
60
|
+
/* @__PURE__ */ t(
|
|
61
|
+
"iframe",
|
|
62
|
+
{
|
|
63
|
+
className: "td-video-embed__iframe",
|
|
64
|
+
src: f,
|
|
65
|
+
title: r,
|
|
66
|
+
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
|
|
67
|
+
allowFullScreen: !0,
|
|
68
|
+
onLoad: y
|
|
69
|
+
}
|
|
70
|
+
),
|
|
71
|
+
_ && /* @__PURE__ */ t("div", { className: "td-video-embed__loading", children: /* @__PURE__ */ t("div", { className: "td-video-embed__spinner" }) })
|
|
72
|
+
] }),
|
|
73
|
+
w && /* @__PURE__ */ n(
|
|
74
|
+
"div",
|
|
75
|
+
{
|
|
76
|
+
className: "td-video-embed__thumbnail",
|
|
77
|
+
onClick: c,
|
|
78
|
+
onKeyDown: k,
|
|
79
|
+
role: "button",
|
|
80
|
+
tabIndex: 0,
|
|
81
|
+
"aria-label": `Play video: ${r}`,
|
|
82
|
+
children: [
|
|
83
|
+
/* @__PURE__ */ t(
|
|
84
|
+
"img",
|
|
85
|
+
{
|
|
86
|
+
className: "td-video-embed__thumbnail-img",
|
|
87
|
+
src: p,
|
|
88
|
+
alt: "",
|
|
89
|
+
loading: "lazy"
|
|
90
|
+
}
|
|
91
|
+
),
|
|
92
|
+
/* @__PURE__ */ t("div", { className: "td-video-embed__gradient" }),
|
|
93
|
+
/* @__PURE__ */ t("div", { className: "td-video-embed__play-btn", children: /* @__PURE__ */ t("svg", { fill: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ t("path", { d: "M8 5v14l11-7z" }) }) }),
|
|
94
|
+
r && /* @__PURE__ */ t("div", { className: "td-video-embed__title", children: r })
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
)
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
) }),
|
|
101
|
+
/* @__PURE__ */ t(L, {})
|
|
102
|
+
] });
|
|
103
|
+
}
|
|
104
|
+
function L() {
|
|
105
|
+
return /* @__PURE__ */ t("style", { children: `
|
|
106
|
+
.td-video-embed {
|
|
107
|
+
position: relative;
|
|
108
|
+
width: 100%;
|
|
109
|
+
background: #000;
|
|
110
|
+
border-radius: 0.875rem;
|
|
111
|
+
overflow: hidden;
|
|
112
|
+
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.td-video-embed__aspect {
|
|
116
|
+
position: relative;
|
|
117
|
+
width: 100%;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.td-video-embed__iframe {
|
|
121
|
+
position: absolute;
|
|
122
|
+
top: 0;
|
|
123
|
+
left: 0;
|
|
124
|
+
width: 100%;
|
|
125
|
+
height: 100%;
|
|
126
|
+
border: none;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.td-video-embed__thumbnail {
|
|
130
|
+
position: absolute;
|
|
131
|
+
inset: 0;
|
|
132
|
+
display: flex;
|
|
133
|
+
align-items: center;
|
|
134
|
+
justify-content: center;
|
|
135
|
+
cursor: pointer;
|
|
136
|
+
background: #000;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.td-video-embed__thumbnail-img {
|
|
140
|
+
position: absolute;
|
|
141
|
+
inset: 0;
|
|
142
|
+
width: 100%;
|
|
143
|
+
height: 100%;
|
|
144
|
+
object-fit: cover;
|
|
145
|
+
transition: transform 0.2s ease;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.td-video-embed__thumbnail:hover .td-video-embed__thumbnail-img {
|
|
149
|
+
transform: scale(1.05);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.td-video-embed__gradient {
|
|
153
|
+
position: absolute;
|
|
154
|
+
inset: 0;
|
|
155
|
+
background: linear-gradient(
|
|
156
|
+
to bottom,
|
|
157
|
+
rgba(0, 0, 0, 0.1) 0%,
|
|
158
|
+
rgba(0, 0, 0, 0.3) 50%,
|
|
159
|
+
rgba(0, 0, 0, 0.5) 100%
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.td-video-embed__play-btn {
|
|
164
|
+
position: relative;
|
|
165
|
+
z-index: 1;
|
|
166
|
+
width: 80px;
|
|
167
|
+
height: 80px;
|
|
168
|
+
display: flex;
|
|
169
|
+
align-items: center;
|
|
170
|
+
justify-content: center;
|
|
171
|
+
background: linear-gradient(
|
|
172
|
+
135deg,
|
|
173
|
+
rgba(255, 255, 255, 0.2) 0%,
|
|
174
|
+
rgba(255, 255, 255, 0.08) 50%,
|
|
175
|
+
rgba(255, 255, 255, 0.05) 100%
|
|
176
|
+
);
|
|
177
|
+
backdrop-filter: blur(16px);
|
|
178
|
+
-webkit-backdrop-filter: blur(16px);
|
|
179
|
+
border-radius: 50%;
|
|
180
|
+
border: 1.5px solid rgba(255, 255, 255, 0.25);
|
|
181
|
+
transition: all 0.15s ease;
|
|
182
|
+
box-shadow:
|
|
183
|
+
0 8px 32px rgba(0, 0, 0, 0.2),
|
|
184
|
+
0 4px 12px rgba(0, 0, 0, 0.1),
|
|
185
|
+
inset 0 1px 2px rgba(255, 255, 255, 0.2),
|
|
186
|
+
inset 0 -2px 6px rgba(0, 0, 0, 0.1);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.td-video-embed__thumbnail:hover .td-video-embed__play-btn {
|
|
190
|
+
transform: scale(1.1);
|
|
191
|
+
border-color: rgba(255, 255, 255, 0.4);
|
|
192
|
+
background: linear-gradient(
|
|
193
|
+
135deg,
|
|
194
|
+
rgba(255, 255, 255, 0.3) 0%,
|
|
195
|
+
rgba(255, 255, 255, 0.12) 50%,
|
|
196
|
+
rgba(255, 255, 255, 0.08) 100%
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.td-video-embed__play-btn svg {
|
|
201
|
+
position: relative;
|
|
202
|
+
z-index: 1;
|
|
203
|
+
width: 32px;
|
|
204
|
+
height: 32px;
|
|
205
|
+
color: white;
|
|
206
|
+
margin-left: 4px;
|
|
207
|
+
filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.4));
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.td-video-embed__title {
|
|
211
|
+
position: absolute;
|
|
212
|
+
bottom: 0;
|
|
213
|
+
left: 0;
|
|
214
|
+
right: 0;
|
|
215
|
+
padding: 1.5rem;
|
|
216
|
+
color: white;
|
|
217
|
+
font-weight: 600;
|
|
218
|
+
font-size: 1.125rem;
|
|
219
|
+
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
|
|
220
|
+
z-index: 1;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.td-video-embed__loading {
|
|
224
|
+
position: absolute;
|
|
225
|
+
inset: 0;
|
|
226
|
+
display: flex;
|
|
227
|
+
align-items: center;
|
|
228
|
+
justify-content: center;
|
|
229
|
+
background: rgba(28, 36, 56, 0.9);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.td-video-embed__spinner {
|
|
233
|
+
width: 48px;
|
|
234
|
+
height: 48px;
|
|
235
|
+
border: 3px solid rgba(255, 255, 255, 0.1);
|
|
236
|
+
border-top-color: #E85A4F;
|
|
237
|
+
border-radius: 50%;
|
|
238
|
+
animation: td-video-embed-spin 1s linear infinite;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
@keyframes td-video-embed-spin {
|
|
242
|
+
to {
|
|
243
|
+
transform: rotate(360deg);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
@media (max-width: 640px) {
|
|
248
|
+
.td-video-embed__play-btn {
|
|
249
|
+
width: 60px;
|
|
250
|
+
height: 60px;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.td-video-embed__play-btn svg {
|
|
254
|
+
width: 24px;
|
|
255
|
+
height: 24px;
|
|
256
|
+
margin-left: 3px;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
.td-video-embed__title {
|
|
260
|
+
font-size: 1rem;
|
|
261
|
+
padding: 1rem;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
` });
|
|
265
|
+
}
|
|
266
|
+
export {
|
|
267
|
+
S as VideoEmbed
|
|
268
|
+
};
|
|
269
|
+
//# sourceMappingURL=index17.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index17.js","sources":["../src/components/VideoEmbed.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\nimport { clsx } from 'clsx';\n\nexport type VideoProvider = 'youtube' | 'vimeo' | 'custom';\n\nexport interface VideoEmbedProps {\n src?: string;\n videoId?: string;\n provider?: VideoProvider;\n title?: string;\n thumbnail?: string;\n aspectRatio?: string;\n autoplay?: boolean;\n lazyLoad?: boolean;\n className?: string;\n}\n\nfunction getEmbedUrl(\n src: string,\n videoId: string,\n provider: VideoProvider,\n autoplay: boolean,\n isLoaded: boolean\n): string {\n if (src) return src;\n\n if (videoId) {\n switch (provider) {\n case 'youtube': {\n const params = new URLSearchParams({\n autoplay: autoplay || isLoaded ? '1' : '0',\n rel: '0',\n modestbranding: '1',\n });\n return `https://www.youtube.com/embed/${videoId}?${params}`;\n }\n case 'vimeo': {\n const params = new URLSearchParams({\n autoplay: autoplay || isLoaded ? '1' : '0',\n });\n return `https://player.vimeo.com/video/${videoId}?${params}`;\n }\n default:\n return '';\n }\n }\n\n return '';\n}\n\nfunction getThumbnailUrl(thumbnail: string, videoId: string, provider: VideoProvider): string {\n if (thumbnail) return thumbnail;\n if (videoId && provider === 'youtube') {\n return `https://img.youtube.com/vi/${videoId}/maxresdefault.jpg`;\n }\n return '';\n}\n\nfunction getAspectPadding(aspectRatio: string): string {\n const [width, height] = aspectRatio.split('/').map(Number);\n if (width && height) {\n return `${(height / width) * 100}%`;\n }\n return '56.25%';\n}\n\nexport function VideoEmbed({\n src = '',\n videoId = '',\n provider = 'youtube',\n title = 'Video',\n thumbnail = '',\n aspectRatio = '16/9',\n autoplay = false,\n lazyLoad = true,\n className,\n}: VideoEmbedProps) {\n const [isLoaded, setIsLoaded] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n const embedUrl = getEmbedUrl(src, videoId, provider, autoplay, isLoaded);\n const thumbnailUrl = getThumbnailUrl(thumbnail, videoId, provider);\n const showThumbnail = lazyLoad && !isLoaded && thumbnailUrl;\n\n const handlePlayClick = () => {\n setIsLoading(true);\n setIsLoaded(true);\n };\n\n const handleIframeLoad = () => {\n setIsLoading(false);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handlePlayClick();\n }\n };\n\n return (\n <>\n <div className={clsx('td-video-embed', className)}>\n <div\n className=\"td-video-embed__aspect\"\n style={{ paddingBottom: getAspectPadding(aspectRatio) }}\n >\n {(isLoaded || !lazyLoad) && (\n <>\n <iframe\n className=\"td-video-embed__iframe\"\n src={embedUrl}\n title={title}\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n allowFullScreen\n onLoad={handleIframeLoad}\n />\n {isLoading && (\n <div className=\"td-video-embed__loading\">\n <div className=\"td-video-embed__spinner\" />\n </div>\n )}\n </>\n )}\n\n {showThumbnail && (\n <div\n className=\"td-video-embed__thumbnail\"\n onClick={handlePlayClick}\n onKeyDown={handleKeyDown}\n role=\"button\"\n tabIndex={0}\n aria-label={`Play video: ${title}`}\n >\n <img\n className=\"td-video-embed__thumbnail-img\"\n src={thumbnailUrl}\n alt=\"\"\n loading=\"lazy\"\n />\n <div className=\"td-video-embed__gradient\" />\n <div className=\"td-video-embed__play-btn\">\n <svg fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M8 5v14l11-7z\" />\n </svg>\n </div>\n {title && <div className=\"td-video-embed__title\">{title}</div>}\n </div>\n )}\n </div>\n </div>\n <VideoEmbedStyles />\n </>\n );\n}\n\nfunction VideoEmbedStyles() {\n return (\n <style>{`\n .td-video-embed {\n position: relative;\n width: 100%;\n background: #000;\n border-radius: 0.875rem;\n overflow: hidden;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n }\n\n .td-video-embed__aspect {\n position: relative;\n width: 100%;\n }\n\n .td-video-embed__iframe {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: none;\n }\n\n .td-video-embed__thumbnail {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n background: #000;\n }\n\n .td-video-embed__thumbnail-img {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n transition: transform 0.2s ease;\n }\n\n .td-video-embed__thumbnail:hover .td-video-embed__thumbnail-img {\n transform: scale(1.05);\n }\n\n .td-video-embed__gradient {\n position: absolute;\n inset: 0;\n background: linear-gradient(\n to bottom,\n rgba(0, 0, 0, 0.1) 0%,\n rgba(0, 0, 0, 0.3) 50%,\n rgba(0, 0, 0, 0.5) 100%\n );\n }\n\n .td-video-embed__play-btn {\n position: relative;\n z-index: 1;\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(\n 135deg,\n rgba(255, 255, 255, 0.2) 0%,\n rgba(255, 255, 255, 0.08) 50%,\n rgba(255, 255, 255, 0.05) 100%\n );\n backdrop-filter: blur(16px);\n -webkit-backdrop-filter: blur(16px);\n border-radius: 50%;\n border: 1.5px solid rgba(255, 255, 255, 0.25);\n transition: all 0.15s ease;\n box-shadow:\n 0 8px 32px rgba(0, 0, 0, 0.2),\n 0 4px 12px rgba(0, 0, 0, 0.1),\n inset 0 1px 2px rgba(255, 255, 255, 0.2),\n inset 0 -2px 6px rgba(0, 0, 0, 0.1);\n }\n\n .td-video-embed__thumbnail:hover .td-video-embed__play-btn {\n transform: scale(1.1);\n border-color: rgba(255, 255, 255, 0.4);\n background: linear-gradient(\n 135deg,\n rgba(255, 255, 255, 0.3) 0%,\n rgba(255, 255, 255, 0.12) 50%,\n rgba(255, 255, 255, 0.08) 100%\n );\n }\n\n .td-video-embed__play-btn svg {\n position: relative;\n z-index: 1;\n width: 32px;\n height: 32px;\n color: white;\n margin-left: 4px;\n filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.4));\n }\n\n .td-video-embed__title {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n padding: 1.5rem;\n color: white;\n font-weight: 600;\n font-size: 1.125rem;\n text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);\n z-index: 1;\n }\n\n .td-video-embed__loading {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(28, 36, 56, 0.9);\n }\n\n .td-video-embed__spinner {\n width: 48px;\n height: 48px;\n border: 3px solid rgba(255, 255, 255, 0.1);\n border-top-color: #E85A4F;\n border-radius: 50%;\n animation: td-video-embed-spin 1s linear infinite;\n }\n\n @keyframes td-video-embed-spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n @media (max-width: 640px) {\n .td-video-embed__play-btn {\n width: 60px;\n height: 60px;\n }\n\n .td-video-embed__play-btn svg {\n width: 24px;\n height: 24px;\n margin-left: 3px;\n }\n\n .td-video-embed__title {\n font-size: 1rem;\n padding: 1rem;\n }\n }\n `}</style>\n );\n}\n"],"names":["getEmbedUrl","src","videoId","provider","autoplay","isLoaded","params","getThumbnailUrl","thumbnail","getAspectPadding","aspectRatio","width","height","VideoEmbed","title","lazyLoad","className","setIsLoaded","useState","isLoading","setIsLoading","embedUrl","thumbnailUrl","showThumbnail","handlePlayClick","handleIframeLoad","handleKeyDown","e","jsxs","Fragment","jsx","clsx","VideoEmbedStyles"],"mappings":"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"}
|
package/dist/index18.js
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { jsxs as n, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { clsx as _ } from "./index28.js";
|
|
3
|
+
function f({
|
|
4
|
+
logos: t,
|
|
5
|
+
title: o,
|
|
6
|
+
speed: m = 40,
|
|
7
|
+
direction: s = "left",
|
|
8
|
+
logoHeight: d = "50px",
|
|
9
|
+
gap: g = "3rem",
|
|
10
|
+
pauseOnHover: c = !0,
|
|
11
|
+
color: u = !1,
|
|
12
|
+
className: p
|
|
13
|
+
}) {
|
|
14
|
+
const l = (e, a) => {
|
|
15
|
+
const i = /* @__PURE__ */ r(
|
|
16
|
+
"img",
|
|
17
|
+
{
|
|
18
|
+
src: e.src,
|
|
19
|
+
alt: e.alt,
|
|
20
|
+
className: "td-logo-marquee__logo",
|
|
21
|
+
style: { height: d }
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
return e.href ? /* @__PURE__ */ r(
|
|
25
|
+
"a",
|
|
26
|
+
{
|
|
27
|
+
href: e.href,
|
|
28
|
+
target: "_blank",
|
|
29
|
+
rel: "noopener noreferrer",
|
|
30
|
+
className: "td-logo-marquee__item",
|
|
31
|
+
children: i
|
|
32
|
+
},
|
|
33
|
+
`${e.src}-${a}`
|
|
34
|
+
) : /* @__PURE__ */ r("div", { className: "td-logo-marquee__item", children: i }, `${e.src}-${a}`);
|
|
35
|
+
};
|
|
36
|
+
return /* @__PURE__ */ n(
|
|
37
|
+
"div",
|
|
38
|
+
{
|
|
39
|
+
className: _(
|
|
40
|
+
"td-logo-marquee",
|
|
41
|
+
c && "td-logo-marquee--pause-on-hover",
|
|
42
|
+
u && "td-logo-marquee--color",
|
|
43
|
+
s === "right" && "td-logo-marquee--reverse",
|
|
44
|
+
p
|
|
45
|
+
),
|
|
46
|
+
style: {
|
|
47
|
+
"--marquee-speed": `${m}s`,
|
|
48
|
+
"--marquee-gap": g
|
|
49
|
+
},
|
|
50
|
+
children: [
|
|
51
|
+
o && /* @__PURE__ */ r("h3", { className: "td-logo-marquee__title", children: o }),
|
|
52
|
+
/* @__PURE__ */ n("div", { className: "td-logo-marquee__wrapper", children: [
|
|
53
|
+
/* @__PURE__ */ r("div", { className: "td-logo-marquee__track", children: t.map(l) }),
|
|
54
|
+
/* @__PURE__ */ r("div", { className: "td-logo-marquee__track", "aria-hidden": "true", children: t.map((e, a) => l(e, a + t.length)) })
|
|
55
|
+
] }),
|
|
56
|
+
/* @__PURE__ */ r("style", { children: `
|
|
57
|
+
.td-logo-marquee {
|
|
58
|
+
overflow: hidden;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.td-logo-marquee__title {
|
|
62
|
+
font-size: 0.875rem;
|
|
63
|
+
font-weight: 600;
|
|
64
|
+
text-transform: uppercase;
|
|
65
|
+
letter-spacing: 0.1em;
|
|
66
|
+
color: rgba(255, 255, 255, 0.6);
|
|
67
|
+
text-align: center;
|
|
68
|
+
margin: 0 0 1.5rem 0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.td-logo-marquee__wrapper {
|
|
72
|
+
display: flex;
|
|
73
|
+
width: max-content;
|
|
74
|
+
animation: td-marquee var(--marquee-speed, 40s) linear infinite;
|
|
75
|
+
mask-image: linear-gradient(
|
|
76
|
+
to right,
|
|
77
|
+
transparent,
|
|
78
|
+
black 5%,
|
|
79
|
+
black 95%,
|
|
80
|
+
transparent
|
|
81
|
+
);
|
|
82
|
+
-webkit-mask-image: linear-gradient(
|
|
83
|
+
to right,
|
|
84
|
+
transparent,
|
|
85
|
+
black 5%,
|
|
86
|
+
black 95%,
|
|
87
|
+
transparent
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.td-logo-marquee__track {
|
|
92
|
+
display: flex;
|
|
93
|
+
gap: var(--marquee-gap, 3rem);
|
|
94
|
+
padding-right: var(--marquee-gap, 3rem);
|
|
95
|
+
flex-shrink: 0;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.td-logo-marquee--reverse .td-logo-marquee__wrapper {
|
|
99
|
+
animation-direction: reverse;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.td-logo-marquee--pause-on-hover:hover .td-logo-marquee__wrapper {
|
|
103
|
+
animation-play-state: paused;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
@keyframes td-marquee {
|
|
107
|
+
from {
|
|
108
|
+
transform: translateX(0);
|
|
109
|
+
}
|
|
110
|
+
to {
|
|
111
|
+
transform: translateX(-50%);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.td-logo-marquee__item {
|
|
116
|
+
flex-shrink: 0;
|
|
117
|
+
display: flex;
|
|
118
|
+
align-items: center;
|
|
119
|
+
justify-content: center;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.td-logo-marquee__logo {
|
|
123
|
+
width: auto;
|
|
124
|
+
object-fit: contain;
|
|
125
|
+
filter: grayscale(100%) brightness(2);
|
|
126
|
+
opacity: 0.7;
|
|
127
|
+
transition: all 0.2s ease;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.td-logo-marquee--color .td-logo-marquee__logo {
|
|
131
|
+
filter: none;
|
|
132
|
+
opacity: 1;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.td-logo-marquee__item:hover .td-logo-marquee__logo {
|
|
136
|
+
filter: grayscale(0%) brightness(1);
|
|
137
|
+
opacity: 1;
|
|
138
|
+
}
|
|
139
|
+
` })
|
|
140
|
+
]
|
|
141
|
+
}
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
export {
|
|
145
|
+
f as LogoMarquee
|
|
146
|
+
};
|
|
147
|
+
//# sourceMappingURL=index18.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index18.js","sources":["../src/components/LogoMarquee.tsx"],"sourcesContent":["'use client';\n\nimport { clsx } from 'clsx';\n\nexport interface MarqueeLogo {\n src: string;\n alt: string;\n href?: string;\n}\n\nexport interface LogoMarqueeProps {\n logos: MarqueeLogo[];\n title?: string;\n speed?: number;\n direction?: 'left' | 'right';\n logoHeight?: string;\n gap?: string;\n pauseOnHover?: boolean;\n color?: boolean;\n className?: string;\n}\n\nexport function LogoMarquee({\n logos,\n title,\n speed = 40,\n direction = 'left',\n logoHeight = '50px',\n gap = '3rem',\n pauseOnHover = true,\n color = false,\n className,\n}: LogoMarqueeProps) {\n const renderLogo = (logo: MarqueeLogo, index: number) => {\n const img = (\n <img\n src={logo.src}\n alt={logo.alt}\n className=\"td-logo-marquee__logo\"\n style={{ height: logoHeight }}\n />\n );\n\n if (logo.href) {\n return (\n <a\n key={`${logo.src}-${index}`}\n href={logo.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"td-logo-marquee__item\"\n >\n {img}\n </a>\n );\n }\n\n return (\n <div key={`${logo.src}-${index}`} className=\"td-logo-marquee__item\">\n {img}\n </div>\n );\n };\n\n return (\n <div\n className={clsx(\n 'td-logo-marquee',\n pauseOnHover && 'td-logo-marquee--pause-on-hover',\n color && 'td-logo-marquee--color',\n direction === 'right' && 'td-logo-marquee--reverse',\n className\n )}\n style={{\n '--marquee-speed': `${speed}s`,\n '--marquee-gap': gap,\n } as React.CSSProperties}\n >\n {title && <h3 className=\"td-logo-marquee__title\">{title}</h3>}\n <div className=\"td-logo-marquee__wrapper\">\n <div className=\"td-logo-marquee__track\">\n {logos.map(renderLogo)}\n </div>\n <div className=\"td-logo-marquee__track\" aria-hidden=\"true\">\n {logos.map((logo, i) => renderLogo(logo, i + logos.length))}\n </div>\n </div>\n\n <style>{`\n .td-logo-marquee {\n overflow: hidden;\n }\n\n .td-logo-marquee__title {\n font-size: 0.875rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: rgba(255, 255, 255, 0.6);\n text-align: center;\n margin: 0 0 1.5rem 0;\n }\n\n .td-logo-marquee__wrapper {\n display: flex;\n width: max-content;\n animation: td-marquee var(--marquee-speed, 40s) linear infinite;\n mask-image: linear-gradient(\n to right,\n transparent,\n black 5%,\n black 95%,\n transparent\n );\n -webkit-mask-image: linear-gradient(\n to right,\n transparent,\n black 5%,\n black 95%,\n transparent\n );\n }\n\n .td-logo-marquee__track {\n display: flex;\n gap: var(--marquee-gap, 3rem);\n padding-right: var(--marquee-gap, 3rem);\n flex-shrink: 0;\n }\n\n .td-logo-marquee--reverse .td-logo-marquee__wrapper {\n animation-direction: reverse;\n }\n\n .td-logo-marquee--pause-on-hover:hover .td-logo-marquee__wrapper {\n animation-play-state: paused;\n }\n\n @keyframes td-marquee {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(-50%);\n }\n }\n\n .td-logo-marquee__item {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .td-logo-marquee__logo {\n width: auto;\n object-fit: contain;\n filter: grayscale(100%) brightness(2);\n opacity: 0.7;\n transition: all 0.2s ease;\n }\n\n .td-logo-marquee--color .td-logo-marquee__logo {\n filter: none;\n opacity: 1;\n }\n\n .td-logo-marquee__item:hover .td-logo-marquee__logo {\n filter: grayscale(0%) brightness(1);\n opacity: 1;\n }\n `}</style>\n </div>\n );\n}\n"],"names":["LogoMarquee","logos","title","speed","direction","logoHeight","gap","pauseOnHover","color","className","renderLogo","logo","index","img","jsx","jsxs","clsx","i"],"mappings":";;AAsBO,SAASA,EAAY;AAAA,EAC1B,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,WAAAC,IAAY;AAAA,EACZ,YAAAC,IAAa;AAAA,EACb,KAAAC,IAAM;AAAA,EACN,cAAAC,IAAe;AAAA,EACf,OAAAC,IAAQ;AAAA,EACR,WAAAC;AACF,GAAqB;AACnB,QAAMC,IAAa,CAACC,GAAmBC,MAAkB;AACvD,UAAMC,IACJ,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKH,EAAK;AAAA,QACV,KAAKA,EAAK;AAAA,QACV,WAAU;AAAA,QACV,OAAO,EAAE,QAAQN,EAAA;AAAA,MAAW;AAAA,IAAA;AAIhC,WAAIM,EAAK,OAEL,gBAAAG;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,MAAMH,EAAK;AAAA,QACX,QAAO;AAAA,QACP,KAAI;AAAA,QACJ,WAAU;AAAA,QAET,UAAAE;AAAA,MAAA;AAAA,MANI,GAAGF,EAAK,GAAG,IAAIC,CAAK;AAAA,IAAA,IAY7B,gBAAAE,EAAC,OAAA,EAAiC,WAAU,yBACzC,UAAAD,KADO,GAAGF,EAAK,GAAG,IAAIC,CAAK,EAE9B;AAAA,EAEJ;AAEA,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAT,KAAgB;AAAA,QAChBC,KAAS;AAAA,QACTJ,MAAc,WAAW;AAAA,QACzBK;AAAA,MAAA;AAAA,MAEF,OAAO;AAAA,QACL,mBAAmB,GAAGN,CAAK;AAAA,QAC3B,iBAAiBG;AAAA,MAAA;AAAA,MAGlB,UAAA;AAAA,QAAAJ,KAAS,gBAAAY,EAAC,MAAA,EAAG,WAAU,0BAA0B,UAAAZ,GAAM;AAAA,QACxD,gBAAAa,EAAC,OAAA,EAAI,WAAU,4BACb,UAAA;AAAA,UAAA,gBAAAD,EAAC,SAAI,WAAU,0BACZ,UAAAb,EAAM,IAAIS,CAAU,GACvB;AAAA,4BACC,OAAA,EAAI,WAAU,0BAAyB,eAAY,QACjD,UAAAT,EAAM,IAAI,CAACU,GAAMM,MAAMP,EAAWC,GAAMM,IAAIhB,EAAM,MAAM,CAAC,EAAA,CAC5D;AAAA,QAAA,GACF;AAAA,0BAEC,SAAA,EAAO,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAmFN;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGR;"}
|