@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/index7.js
ADDED
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { jsxs as d, Fragment as b, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { useState as u } from "react";
|
|
3
|
+
import { clsx as l } from "./index28.js";
|
|
4
|
+
import { Logo as f } from "./index6.js";
|
|
5
|
+
function N({
|
|
6
|
+
links: i = [],
|
|
7
|
+
actions: n = [],
|
|
8
|
+
homeHref: s = "/",
|
|
9
|
+
sticky: h = !0,
|
|
10
|
+
logo: m,
|
|
11
|
+
className: c
|
|
12
|
+
}) {
|
|
13
|
+
const [a, t] = u(!1), _ = () => {
|
|
14
|
+
t(!a);
|
|
15
|
+
}, o = (e, p = !1) => {
|
|
16
|
+
const g = p ? () => t(!1) : void 0;
|
|
17
|
+
return /* @__PURE__ */ d(
|
|
18
|
+
"a",
|
|
19
|
+
{
|
|
20
|
+
className: "td-header__link",
|
|
21
|
+
href: e.href,
|
|
22
|
+
target: e.external ? "_blank" : void 0,
|
|
23
|
+
rel: e.external ? "noopener noreferrer" : void 0,
|
|
24
|
+
onClick: g,
|
|
25
|
+
children: [
|
|
26
|
+
e.icon,
|
|
27
|
+
e.label
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
e.href + e.label
|
|
31
|
+
);
|
|
32
|
+
};
|
|
33
|
+
return /* @__PURE__ */ d(b, { children: [
|
|
34
|
+
/* @__PURE__ */ r("header", { className: l("td-header", h && "td-header--sticky", c), children: /* @__PURE__ */ d("nav", { className: "td-header__nav", children: [
|
|
35
|
+
/* @__PURE__ */ d("div", { className: "td-header__inner", children: [
|
|
36
|
+
/* @__PURE__ */ d("div", { className: "td-header__left", children: [
|
|
37
|
+
/* @__PURE__ */ r("a", { className: "td-header__brand", href: s, children: m || /* @__PURE__ */ r(f, { variant: "full", size: "sm", textColor: "#1C2438" }) }),
|
|
38
|
+
/* @__PURE__ */ r("div", { className: "td-header__desktop-links", children: i.map((e) => o(e)) })
|
|
39
|
+
] }),
|
|
40
|
+
/* @__PURE__ */ d("div", { className: "td-header__right", children: [
|
|
41
|
+
/* @__PURE__ */ r("div", { className: "td-header__actions", children: n.map((e) => o(e)) }),
|
|
42
|
+
/* @__PURE__ */ r(
|
|
43
|
+
"button",
|
|
44
|
+
{
|
|
45
|
+
className: "td-header__hamburger",
|
|
46
|
+
onClick: _,
|
|
47
|
+
"aria-label": "Toggle menu",
|
|
48
|
+
"aria-expanded": a,
|
|
49
|
+
children: a ? /* @__PURE__ */ r("svg", { fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ r("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) : /* @__PURE__ */ r("svg", { fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ r("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6h16M4 12h16M4 18h16" }) })
|
|
50
|
+
}
|
|
51
|
+
)
|
|
52
|
+
] })
|
|
53
|
+
] }),
|
|
54
|
+
/* @__PURE__ */ r("div", { className: l("td-header__mobile-menu", a && "td-header__mobile-menu--open"), children: /* @__PURE__ */ d("div", { className: "td-header__mobile-inner", children: [
|
|
55
|
+
i.map((e) => o(e, !0)),
|
|
56
|
+
n.map((e) => o(e, !0))
|
|
57
|
+
] }) })
|
|
58
|
+
] }) }),
|
|
59
|
+
/* @__PURE__ */ r(k, {})
|
|
60
|
+
] });
|
|
61
|
+
}
|
|
62
|
+
function k() {
|
|
63
|
+
return /* @__PURE__ */ r("style", { children: `
|
|
64
|
+
.td-header {
|
|
65
|
+
background: rgba(255, 255, 255, 0.7);
|
|
66
|
+
backdrop-filter: blur(24px);
|
|
67
|
+
-webkit-backdrop-filter: blur(24px);
|
|
68
|
+
border-bottom: 1px solid rgba(229, 231, 235, 0.5);
|
|
69
|
+
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.td-header--sticky {
|
|
73
|
+
position: sticky;
|
|
74
|
+
top: 0;
|
|
75
|
+
z-index: 50;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
@media (prefers-color-scheme: dark) {
|
|
79
|
+
.td-header {
|
|
80
|
+
background: rgba(3, 7, 18, 0.7);
|
|
81
|
+
border-bottom-color: rgba(31, 41, 55, 0.5);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.td-header__nav {
|
|
86
|
+
max-width: 80rem;
|
|
87
|
+
margin: 0 auto;
|
|
88
|
+
padding: 0 1rem;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
@media (min-width: 640px) {
|
|
92
|
+
.td-header__nav {
|
|
93
|
+
padding: 0 1.5rem;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@media (min-width: 1024px) {
|
|
98
|
+
.td-header__nav {
|
|
99
|
+
padding: 0 2rem;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.td-header__inner {
|
|
104
|
+
display: flex;
|
|
105
|
+
justify-content: space-between;
|
|
106
|
+
height: 4rem;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.td-header__left {
|
|
110
|
+
display: flex;
|
|
111
|
+
align-items: center;
|
|
112
|
+
gap: 2rem;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.td-header__brand {
|
|
116
|
+
display: flex;
|
|
117
|
+
align-items: center;
|
|
118
|
+
text-decoration: none;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.td-header__desktop-links {
|
|
122
|
+
display: none;
|
|
123
|
+
align-items: center;
|
|
124
|
+
gap: 0.25rem;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
@media (min-width: 768px) {
|
|
128
|
+
.td-header__desktop-links {
|
|
129
|
+
display: flex;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.td-header__link {
|
|
134
|
+
display: flex;
|
|
135
|
+
align-items: center;
|
|
136
|
+
gap: 0.5rem;
|
|
137
|
+
padding: 0.5rem 0.75rem;
|
|
138
|
+
border-radius: 0.5rem;
|
|
139
|
+
font-size: 0.875rem;
|
|
140
|
+
font-weight: 500;
|
|
141
|
+
color: #4B5563;
|
|
142
|
+
text-decoration: none;
|
|
143
|
+
transition: background-color 0.15s ease, color 0.15s ease;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
@media (prefers-color-scheme: dark) {
|
|
147
|
+
.td-header__link {
|
|
148
|
+
color: #9CA3AF;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.td-header__link:hover {
|
|
153
|
+
background-color: rgba(243, 244, 246, 1);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
@media (prefers-color-scheme: dark) {
|
|
157
|
+
.td-header__link:hover {
|
|
158
|
+
background-color: rgba(31, 41, 55, 1);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.td-header__link svg {
|
|
163
|
+
width: 1.25rem;
|
|
164
|
+
height: 1.25rem;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.td-header__right {
|
|
168
|
+
display: flex;
|
|
169
|
+
align-items: center;
|
|
170
|
+
gap: 1rem;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.td-header__actions {
|
|
174
|
+
display: none;
|
|
175
|
+
align-items: center;
|
|
176
|
+
gap: 0.25rem;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
@media (min-width: 768px) {
|
|
180
|
+
.td-header__actions {
|
|
181
|
+
display: flex;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.td-header__hamburger {
|
|
186
|
+
display: flex;
|
|
187
|
+
padding: 0.5rem;
|
|
188
|
+
border-radius: 0.5rem;
|
|
189
|
+
color: #4B5563;
|
|
190
|
+
background: none;
|
|
191
|
+
border: none;
|
|
192
|
+
cursor: pointer;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
@media (prefers-color-scheme: dark) {
|
|
196
|
+
.td-header__hamburger {
|
|
197
|
+
color: #9CA3AF;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.td-header__hamburger:hover {
|
|
202
|
+
background-color: rgba(243, 244, 246, 1);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
@media (prefers-color-scheme: dark) {
|
|
206
|
+
.td-header__hamburger:hover {
|
|
207
|
+
background-color: rgba(31, 41, 55, 1);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
@media (min-width: 768px) {
|
|
212
|
+
.td-header__hamburger {
|
|
213
|
+
display: none;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.td-header__hamburger svg {
|
|
218
|
+
width: 1.5rem;
|
|
219
|
+
height: 1.5rem;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.td-header__mobile-menu {
|
|
223
|
+
display: none;
|
|
224
|
+
padding: 1rem 0;
|
|
225
|
+
border-top: 1px solid rgba(229, 231, 235, 1);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
@media (prefers-color-scheme: dark) {
|
|
229
|
+
.td-header__mobile-menu {
|
|
230
|
+
border-top-color: rgba(31, 41, 55, 1);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.td-header__mobile-menu--open {
|
|
235
|
+
display: block;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
@media (min-width: 768px) {
|
|
239
|
+
.td-header__mobile-menu {
|
|
240
|
+
display: none !important;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.td-header__mobile-inner {
|
|
245
|
+
display: flex;
|
|
246
|
+
flex-direction: column;
|
|
247
|
+
gap: 0.25rem;
|
|
248
|
+
}
|
|
249
|
+
` });
|
|
250
|
+
}
|
|
251
|
+
export {
|
|
252
|
+
N as Header
|
|
253
|
+
};
|
|
254
|
+
//# sourceMappingURL=index7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index7.js","sources":["../src/components/Header.tsx"],"sourcesContent":["'use client';\n\nimport { useState, ReactNode } from 'react';\nimport { clsx } from 'clsx';\nimport { Logo } from './Logo';\n\nexport interface NavLink {\n label: string;\n href: string;\n external?: boolean;\n icon?: ReactNode;\n}\n\nexport interface HeaderProps {\n links?: NavLink[];\n actions?: NavLink[];\n homeHref?: string;\n sticky?: boolean;\n logo?: ReactNode;\n className?: string;\n}\n\nexport function Header({\n links = [],\n actions = [],\n homeHref = '/',\n sticky = true,\n logo,\n className,\n}: HeaderProps) {\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false);\n\n const toggleMobileMenu = () => {\n setMobileMenuOpen(!mobileMenuOpen);\n };\n\n const renderLink = (link: NavLink, closeMobile = false) => {\n const handleClick = closeMobile ? () => setMobileMenuOpen(false) : undefined;\n\n return (\n <a\n key={link.href + link.label}\n className=\"td-header__link\"\n href={link.href}\n target={link.external ? '_blank' : undefined}\n rel={link.external ? 'noopener noreferrer' : undefined}\n onClick={handleClick}\n >\n {link.icon}\n {link.label}\n </a>\n );\n };\n\n return (\n <>\n <header className={clsx('td-header', sticky && 'td-header--sticky', className)}>\n <nav className=\"td-header__nav\">\n <div className=\"td-header__inner\">\n <div className=\"td-header__left\">\n <a className=\"td-header__brand\" href={homeHref}>\n {logo || <Logo variant=\"full\" size=\"sm\" textColor=\"#1C2438\" />}\n </a>\n\n <div className=\"td-header__desktop-links\">\n {links.map(link => renderLink(link))}\n </div>\n </div>\n\n <div className=\"td-header__right\">\n <div className=\"td-header__actions\">\n {actions.map(link => renderLink(link))}\n </div>\n\n <button\n className=\"td-header__hamburger\"\n onClick={toggleMobileMenu}\n aria-label=\"Toggle menu\"\n aria-expanded={mobileMenuOpen}\n >\n {mobileMenuOpen ? (\n <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n ) : (\n <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M4 6h16M4 12h16M4 18h16\" />\n </svg>\n )}\n </button>\n </div>\n </div>\n\n <div className={clsx('td-header__mobile-menu', mobileMenuOpen && 'td-header__mobile-menu--open')}>\n <div className=\"td-header__mobile-inner\">\n {links.map(link => renderLink(link, true))}\n {actions.map(link => renderLink(link, true))}\n </div>\n </div>\n </nav>\n </header>\n <HeaderStyles />\n </>\n );\n}\n\nfunction HeaderStyles() {\n return (\n <style>{`\n .td-header {\n background: rgba(255, 255, 255, 0.7);\n backdrop-filter: blur(24px);\n -webkit-backdrop-filter: blur(24px);\n border-bottom: 1px solid rgba(229, 231, 235, 0.5);\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);\n }\n\n .td-header--sticky {\n position: sticky;\n top: 0;\n z-index: 50;\n }\n\n @media (prefers-color-scheme: dark) {\n .td-header {\n background: rgba(3, 7, 18, 0.7);\n border-bottom-color: rgba(31, 41, 55, 0.5);\n }\n }\n\n .td-header__nav {\n max-width: 80rem;\n margin: 0 auto;\n padding: 0 1rem;\n }\n\n @media (min-width: 640px) {\n .td-header__nav {\n padding: 0 1.5rem;\n }\n }\n\n @media (min-width: 1024px) {\n .td-header__nav {\n padding: 0 2rem;\n }\n }\n\n .td-header__inner {\n display: flex;\n justify-content: space-between;\n height: 4rem;\n }\n\n .td-header__left {\n display: flex;\n align-items: center;\n gap: 2rem;\n }\n\n .td-header__brand {\n display: flex;\n align-items: center;\n text-decoration: none;\n }\n\n .td-header__desktop-links {\n display: none;\n align-items: center;\n gap: 0.25rem;\n }\n\n @media (min-width: 768px) {\n .td-header__desktop-links {\n display: flex;\n }\n }\n\n .td-header__link {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 0.75rem;\n border-radius: 0.5rem;\n font-size: 0.875rem;\n font-weight: 500;\n color: #4B5563;\n text-decoration: none;\n transition: background-color 0.15s ease, color 0.15s ease;\n }\n\n @media (prefers-color-scheme: dark) {\n .td-header__link {\n color: #9CA3AF;\n }\n }\n\n .td-header__link:hover {\n background-color: rgba(243, 244, 246, 1);\n }\n\n @media (prefers-color-scheme: dark) {\n .td-header__link:hover {\n background-color: rgba(31, 41, 55, 1);\n }\n }\n\n .td-header__link svg {\n width: 1.25rem;\n height: 1.25rem;\n }\n\n .td-header__right {\n display: flex;\n align-items: center;\n gap: 1rem;\n }\n\n .td-header__actions {\n display: none;\n align-items: center;\n gap: 0.25rem;\n }\n\n @media (min-width: 768px) {\n .td-header__actions {\n display: flex;\n }\n }\n\n .td-header__hamburger {\n display: flex;\n padding: 0.5rem;\n border-radius: 0.5rem;\n color: #4B5563;\n background: none;\n border: none;\n cursor: pointer;\n }\n\n @media (prefers-color-scheme: dark) {\n .td-header__hamburger {\n color: #9CA3AF;\n }\n }\n\n .td-header__hamburger:hover {\n background-color: rgba(243, 244, 246, 1);\n }\n\n @media (prefers-color-scheme: dark) {\n .td-header__hamburger:hover {\n background-color: rgba(31, 41, 55, 1);\n }\n }\n\n @media (min-width: 768px) {\n .td-header__hamburger {\n display: none;\n }\n }\n\n .td-header__hamburger svg {\n width: 1.5rem;\n height: 1.5rem;\n }\n\n .td-header__mobile-menu {\n display: none;\n padding: 1rem 0;\n border-top: 1px solid rgba(229, 231, 235, 1);\n }\n\n @media (prefers-color-scheme: dark) {\n .td-header__mobile-menu {\n border-top-color: rgba(31, 41, 55, 1);\n }\n }\n\n .td-header__mobile-menu--open {\n display: block;\n }\n\n @media (min-width: 768px) {\n .td-header__mobile-menu {\n display: none !important;\n }\n }\n\n .td-header__mobile-inner {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n `}</style>\n );\n}\n"],"names":["Header","links","actions","homeHref","sticky","logo","className","mobileMenuOpen","setMobileMenuOpen","useState","toggleMobileMenu","renderLink","link","closeMobile","handleClick","jsxs","Fragment","jsx","clsx","Logo","HeaderStyles"],"mappings":"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"}
|
package/dist/index8.js
ADDED
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { jsxs as o, Fragment as p, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { clsx as _ } from "./index28.js";
|
|
3
|
+
import { Logo as h } from "./index6.js";
|
|
4
|
+
import { Icon as g } from "./index3.js";
|
|
5
|
+
function w({
|
|
6
|
+
description: d,
|
|
7
|
+
linkGroups: l = [],
|
|
8
|
+
socials: n = [],
|
|
9
|
+
copyright: a,
|
|
10
|
+
logo: c,
|
|
11
|
+
className: s
|
|
12
|
+
}) {
|
|
13
|
+
const m = a || `© ${(/* @__PURE__ */ new Date()).getFullYear()} Tampa Devs. All rights reserved.`;
|
|
14
|
+
return /* @__PURE__ */ o(p, { children: [
|
|
15
|
+
/* @__PURE__ */ e("footer", { className: _("td-footer", s), children: /* @__PURE__ */ o("div", { className: "td-footer__container", children: [
|
|
16
|
+
/* @__PURE__ */ o("div", { className: "td-footer__grid", children: [
|
|
17
|
+
/* @__PURE__ */ o("div", { className: "td-footer__brand-section", children: [
|
|
18
|
+
/* @__PURE__ */ e("div", { className: "td-footer__brand", children: c || /* @__PURE__ */ e(h, { variant: "full", size: "sm", textColor: "#1C2438" }) }),
|
|
19
|
+
d && /* @__PURE__ */ e("p", { className: "td-footer__description", children: d })
|
|
20
|
+
] }),
|
|
21
|
+
l.map((r, i) => /* @__PURE__ */ o("div", { className: "td-footer__link-group", children: [
|
|
22
|
+
/* @__PURE__ */ e("h3", { children: r.title }),
|
|
23
|
+
/* @__PURE__ */ e("ul", { children: r.links.map((t, f) => /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e(
|
|
24
|
+
"a",
|
|
25
|
+
{
|
|
26
|
+
href: t.href,
|
|
27
|
+
target: t.external ? "_blank" : void 0,
|
|
28
|
+
rel: t.external ? "noopener noreferrer" : void 0,
|
|
29
|
+
children: t.label
|
|
30
|
+
}
|
|
31
|
+
) }, f)) })
|
|
32
|
+
] }, i))
|
|
33
|
+
] }),
|
|
34
|
+
/* @__PURE__ */ o("div", { className: "td-footer__bottom", children: [
|
|
35
|
+
/* @__PURE__ */ e("p", { className: "td-footer__copyright", children: m }),
|
|
36
|
+
n.length > 0 && /* @__PURE__ */ e("div", { className: "td-footer__socials", children: n.map((r, i) => /* @__PURE__ */ o(
|
|
37
|
+
"a",
|
|
38
|
+
{
|
|
39
|
+
className: "td-footer__social-link",
|
|
40
|
+
href: r.href,
|
|
41
|
+
target: "_blank",
|
|
42
|
+
rel: "noopener noreferrer",
|
|
43
|
+
children: [
|
|
44
|
+
/* @__PURE__ */ e("span", { className: "sr-only", children: r.name }),
|
|
45
|
+
/* @__PURE__ */ e(g, { name: r.icon, size: "sm" })
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
i
|
|
49
|
+
)) })
|
|
50
|
+
] })
|
|
51
|
+
] }) }),
|
|
52
|
+
/* @__PURE__ */ e(x, {})
|
|
53
|
+
] });
|
|
54
|
+
}
|
|
55
|
+
function x() {
|
|
56
|
+
return /* @__PURE__ */ e("style", { children: `
|
|
57
|
+
.td-footer {
|
|
58
|
+
background-color: #F9FAFB;
|
|
59
|
+
border-top: 1px solid #E5E7EB;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
@media (prefers-color-scheme: dark) {
|
|
63
|
+
.td-footer {
|
|
64
|
+
background-color: #111827;
|
|
65
|
+
border-top-color: #1F2937;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.td-footer__container {
|
|
70
|
+
max-width: 80rem;
|
|
71
|
+
margin: 0 auto;
|
|
72
|
+
padding: 3rem 1rem;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@media (min-width: 640px) {
|
|
76
|
+
.td-footer__container {
|
|
77
|
+
padding: 3rem 1.5rem;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@media (min-width: 1024px) {
|
|
82
|
+
.td-footer__container {
|
|
83
|
+
padding: 3rem 2rem;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.td-footer__grid {
|
|
88
|
+
display: grid;
|
|
89
|
+
grid-template-columns: 1fr;
|
|
90
|
+
gap: 2rem;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
@media (min-width: 768px) {
|
|
94
|
+
.td-footer__grid {
|
|
95
|
+
grid-template-columns: 2fr 1fr 1fr;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.td-footer__brand-section {
|
|
100
|
+
grid-column: span 1;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.td-footer__brand {
|
|
104
|
+
display: inline-block;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.td-footer__description {
|
|
108
|
+
margin-top: 0.5rem;
|
|
109
|
+
font-size: 0.875rem;
|
|
110
|
+
color: #4B5563;
|
|
111
|
+
max-width: 28rem;
|
|
112
|
+
line-height: 1.5;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
@media (prefers-color-scheme: dark) {
|
|
116
|
+
.td-footer__description {
|
|
117
|
+
color: #9CA3AF;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.td-footer__link-group h3 {
|
|
122
|
+
font-size: 0.875rem;
|
|
123
|
+
font-weight: 600;
|
|
124
|
+
color: #111827;
|
|
125
|
+
text-transform: uppercase;
|
|
126
|
+
letter-spacing: 0.05em;
|
|
127
|
+
margin: 0 0 1rem 0;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
@media (prefers-color-scheme: dark) {
|
|
131
|
+
.td-footer__link-group h3 {
|
|
132
|
+
color: white;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.td-footer__link-group ul {
|
|
137
|
+
list-style: none;
|
|
138
|
+
padding: 0;
|
|
139
|
+
margin: 0;
|
|
140
|
+
display: flex;
|
|
141
|
+
flex-direction: column;
|
|
142
|
+
gap: 0.5rem;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.td-footer__link-group a {
|
|
146
|
+
font-size: 0.875rem;
|
|
147
|
+
color: #4B5563;
|
|
148
|
+
text-decoration: none;
|
|
149
|
+
transition: color 0.15s ease;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
@media (prefers-color-scheme: dark) {
|
|
153
|
+
.td-footer__link-group a {
|
|
154
|
+
color: #9CA3AF;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.td-footer__link-group a:hover {
|
|
159
|
+
color: #1C2438;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
@media (prefers-color-scheme: dark) {
|
|
163
|
+
.td-footer__link-group a:hover {
|
|
164
|
+
color: white;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.td-footer__bottom {
|
|
169
|
+
margin-top: 2rem;
|
|
170
|
+
padding-top: 2rem;
|
|
171
|
+
border-top: 1px solid #E5E7EB;
|
|
172
|
+
display: flex;
|
|
173
|
+
flex-direction: column;
|
|
174
|
+
gap: 1rem;
|
|
175
|
+
align-items: center;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
@media (min-width: 640px) {
|
|
179
|
+
.td-footer__bottom {
|
|
180
|
+
flex-direction: row;
|
|
181
|
+
justify-content: space-between;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
@media (prefers-color-scheme: dark) {
|
|
186
|
+
.td-footer__bottom {
|
|
187
|
+
border-top-color: #1F2937;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.td-footer__copyright {
|
|
192
|
+
font-size: 0.875rem;
|
|
193
|
+
color: #6B7280;
|
|
194
|
+
margin: 0;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.td-footer__socials {
|
|
198
|
+
display: flex;
|
|
199
|
+
align-items: center;
|
|
200
|
+
gap: 1rem;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.td-footer__social-link {
|
|
204
|
+
color: #9CA3AF;
|
|
205
|
+
transition: color 0.15s ease;
|
|
206
|
+
display: flex;
|
|
207
|
+
align-items: center;
|
|
208
|
+
justify-content: center;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.td-footer__social-link:hover {
|
|
212
|
+
color: #4B5563;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
@media (prefers-color-scheme: dark) {
|
|
216
|
+
.td-footer__social-link:hover {
|
|
217
|
+
color: #D1D5DB;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.sr-only {
|
|
222
|
+
position: absolute;
|
|
223
|
+
width: 1px;
|
|
224
|
+
height: 1px;
|
|
225
|
+
padding: 0;
|
|
226
|
+
margin: -1px;
|
|
227
|
+
overflow: hidden;
|
|
228
|
+
clip: rect(0, 0, 0, 0);
|
|
229
|
+
white-space: nowrap;
|
|
230
|
+
border: 0;
|
|
231
|
+
}
|
|
232
|
+
` });
|
|
233
|
+
}
|
|
234
|
+
export {
|
|
235
|
+
w as Footer
|
|
236
|
+
};
|
|
237
|
+
//# sourceMappingURL=index8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index8.js","sources":["../src/components/Footer.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport { clsx } from 'clsx';\nimport { Logo } from './Logo';\nimport { Icon } from './Icon';\n\nexport interface FooterLink {\n label: string;\n href: string;\n external?: boolean;\n}\n\nexport interface FooterLinkGroup {\n title: string;\n links: FooterLink[];\n}\n\nexport interface FooterSocialLink {\n name: string;\n href: string;\n icon: 'github' | 'twitter' | 'linkedin' | 'globe' | 'mail';\n}\n\nexport interface FooterProps {\n description?: string;\n linkGroups?: FooterLinkGroup[];\n socials?: FooterSocialLink[];\n copyright?: string;\n logo?: ReactNode;\n className?: string;\n}\n\nexport function Footer({\n description,\n linkGroups = [],\n socials = [],\n copyright,\n logo,\n className,\n}: FooterProps) {\n const copyrightText = copyright || `© ${new Date().getFullYear()} Tampa Devs. All rights reserved.`;\n\n return (\n <>\n <footer className={clsx('td-footer', className)}>\n <div className=\"td-footer__container\">\n <div className=\"td-footer__grid\">\n <div className=\"td-footer__brand-section\">\n <div className=\"td-footer__brand\">\n {logo || <Logo variant=\"full\" size=\"sm\" textColor=\"#1C2438\" />}\n </div>\n {description && <p className=\"td-footer__description\">{description}</p>}\n </div>\n\n {linkGroups.map((group, i) => (\n <div key={i} className=\"td-footer__link-group\">\n <h3>{group.title}</h3>\n <ul>\n {group.links.map((link, j) => (\n <li key={j}>\n <a\n href={link.href}\n target={link.external ? '_blank' : undefined}\n rel={link.external ? 'noopener noreferrer' : undefined}\n >\n {link.label}\n </a>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n\n <div className=\"td-footer__bottom\">\n <p className=\"td-footer__copyright\">{copyrightText}</p>\n\n {socials.length > 0 && (\n <div className=\"td-footer__socials\">\n {socials.map((social, i) => (\n <a\n key={i}\n className=\"td-footer__social-link\"\n href={social.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span className=\"sr-only\">{social.name}</span>\n <Icon name={social.icon} size=\"sm\" />\n </a>\n ))}\n </div>\n )}\n </div>\n </div>\n </footer>\n <FooterStyles />\n </>\n );\n}\n\nfunction FooterStyles() {\n return (\n <style>{`\n .td-footer {\n background-color: #F9FAFB;\n border-top: 1px solid #E5E7EB;\n }\n\n @media (prefers-color-scheme: dark) {\n .td-footer {\n background-color: #111827;\n border-top-color: #1F2937;\n }\n }\n\n .td-footer__container {\n max-width: 80rem;\n margin: 0 auto;\n padding: 3rem 1rem;\n }\n\n @media (min-width: 640px) {\n .td-footer__container {\n padding: 3rem 1.5rem;\n }\n }\n\n @media (min-width: 1024px) {\n .td-footer__container {\n padding: 3rem 2rem;\n }\n }\n\n .td-footer__grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 2rem;\n }\n\n @media (min-width: 768px) {\n .td-footer__grid {\n grid-template-columns: 2fr 1fr 1fr;\n }\n }\n\n .td-footer__brand-section {\n grid-column: span 1;\n }\n\n .td-footer__brand {\n display: inline-block;\n }\n\n .td-footer__description {\n margin-top: 0.5rem;\n font-size: 0.875rem;\n color: #4B5563;\n max-width: 28rem;\n line-height: 1.5;\n }\n\n @media (prefers-color-scheme: dark) {\n .td-footer__description {\n color: #9CA3AF;\n }\n }\n\n .td-footer__link-group h3 {\n font-size: 0.875rem;\n font-weight: 600;\n color: #111827;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n margin: 0 0 1rem 0;\n }\n\n @media (prefers-color-scheme: dark) {\n .td-footer__link-group h3 {\n color: white;\n }\n }\n\n .td-footer__link-group ul {\n list-style: none;\n padding: 0;\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n }\n\n .td-footer__link-group a {\n font-size: 0.875rem;\n color: #4B5563;\n text-decoration: none;\n transition: color 0.15s ease;\n }\n\n @media (prefers-color-scheme: dark) {\n .td-footer__link-group a {\n color: #9CA3AF;\n }\n }\n\n .td-footer__link-group a:hover {\n color: #1C2438;\n }\n\n @media (prefers-color-scheme: dark) {\n .td-footer__link-group a:hover {\n color: white;\n }\n }\n\n .td-footer__bottom {\n margin-top: 2rem;\n padding-top: 2rem;\n border-top: 1px solid #E5E7EB;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n align-items: center;\n }\n\n @media (min-width: 640px) {\n .td-footer__bottom {\n flex-direction: row;\n justify-content: space-between;\n }\n }\n\n @media (prefers-color-scheme: dark) {\n .td-footer__bottom {\n border-top-color: #1F2937;\n }\n }\n\n .td-footer__copyright {\n font-size: 0.875rem;\n color: #6B7280;\n margin: 0;\n }\n\n .td-footer__socials {\n display: flex;\n align-items: center;\n gap: 1rem;\n }\n\n .td-footer__social-link {\n color: #9CA3AF;\n transition: color 0.15s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .td-footer__social-link:hover {\n color: #4B5563;\n }\n\n @media (prefers-color-scheme: dark) {\n .td-footer__social-link:hover {\n color: #D1D5DB;\n }\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n `}</style>\n );\n}\n"],"names":["Footer","description","linkGroups","socials","copyright","logo","className","copyrightText","jsxs","Fragment","jsx","clsx","Logo","group","link","j","social","Icon","FooterStyles"],"mappings":"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"}
|
package/dist/index9.js
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { jsxs as o, Fragment as _, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as p } from "react";
|
|
3
|
+
import { clsx as h } from "./index28.js";
|
|
4
|
+
function g({
|
|
5
|
+
title: t,
|
|
6
|
+
scrollAmount: a = 400,
|
|
7
|
+
hideControls: l = !1,
|
|
8
|
+
gap: s = "1.5rem",
|
|
9
|
+
children: c,
|
|
10
|
+
className: i
|
|
11
|
+
}) {
|
|
12
|
+
const e = p(null), n = (d) => {
|
|
13
|
+
if (e.current) {
|
|
14
|
+
const u = d === "left" ? -a : a;
|
|
15
|
+
e.current.scrollBy({
|
|
16
|
+
left: u,
|
|
17
|
+
behavior: "smooth"
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
return /* @__PURE__ */ o(_, { children: [
|
|
22
|
+
/* @__PURE__ */ o("div", { className: h("td-carousel", i), children: [
|
|
23
|
+
t && /* @__PURE__ */ r("h2", { className: "td-carousel__title", children: t }),
|
|
24
|
+
/* @__PURE__ */ o("div", { className: "td-carousel__wrapper", children: [
|
|
25
|
+
!l && /* @__PURE__ */ r(
|
|
26
|
+
"button",
|
|
27
|
+
{
|
|
28
|
+
className: "td-carousel__nav td-carousel__nav--left",
|
|
29
|
+
onClick: () => n("left"),
|
|
30
|
+
"aria-label": "Scroll left",
|
|
31
|
+
children: /* @__PURE__ */ r("svg", { fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ r("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }) })
|
|
32
|
+
}
|
|
33
|
+
),
|
|
34
|
+
/* @__PURE__ */ r(
|
|
35
|
+
"div",
|
|
36
|
+
{
|
|
37
|
+
ref: e,
|
|
38
|
+
className: "td-carousel__track",
|
|
39
|
+
style: { gap: s },
|
|
40
|
+
children: c
|
|
41
|
+
}
|
|
42
|
+
),
|
|
43
|
+
!l && /* @__PURE__ */ r(
|
|
44
|
+
"button",
|
|
45
|
+
{
|
|
46
|
+
className: "td-carousel__nav td-carousel__nav--right",
|
|
47
|
+
onClick: () => n("right"),
|
|
48
|
+
"aria-label": "Scroll right",
|
|
49
|
+
children: /* @__PURE__ */ r("svg", { fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ r("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })
|
|
50
|
+
}
|
|
51
|
+
)
|
|
52
|
+
] })
|
|
53
|
+
] }),
|
|
54
|
+
/* @__PURE__ */ r(m, {})
|
|
55
|
+
] });
|
|
56
|
+
}
|
|
57
|
+
function m() {
|
|
58
|
+
return /* @__PURE__ */ r("style", { children: `
|
|
59
|
+
.td-carousel {
|
|
60
|
+
position: relative;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.td-carousel__title {
|
|
64
|
+
font-size: 1.5rem;
|
|
65
|
+
font-weight: 700;
|
|
66
|
+
color: #111827;
|
|
67
|
+
margin-bottom: 1.5rem;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.td-carousel__wrapper {
|
|
71
|
+
position: relative;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.td-carousel__wrapper:hover .td-carousel__nav {
|
|
75
|
+
opacity: 1;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.td-carousel__track {
|
|
79
|
+
display: flex;
|
|
80
|
+
overflow-x: auto;
|
|
81
|
+
padding-bottom: 1rem;
|
|
82
|
+
scroll-snap-type: x mandatory;
|
|
83
|
+
scrollbar-width: none;
|
|
84
|
+
-ms-overflow-style: none;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.td-carousel__track::-webkit-scrollbar {
|
|
88
|
+
display: none;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.td-carousel__track > * {
|
|
92
|
+
flex-shrink: 0;
|
|
93
|
+
scroll-snap-align: start;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.td-carousel__nav {
|
|
97
|
+
position: absolute;
|
|
98
|
+
top: 50%;
|
|
99
|
+
transform: translateY(-50%);
|
|
100
|
+
z-index: 10;
|
|
101
|
+
background: white;
|
|
102
|
+
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
|
|
103
|
+
border-radius: 9999px;
|
|
104
|
+
padding: 0.5rem;
|
|
105
|
+
opacity: 0;
|
|
106
|
+
transition: opacity 0.15s ease;
|
|
107
|
+
border: none;
|
|
108
|
+
cursor: pointer;
|
|
109
|
+
display: flex;
|
|
110
|
+
align-items: center;
|
|
111
|
+
justify-content: center;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.td-carousel__nav:hover {
|
|
115
|
+
background: #F3F4F6;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.td-carousel__nav--left {
|
|
119
|
+
left: -1rem;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.td-carousel__nav--right {
|
|
123
|
+
right: -1rem;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.td-carousel__nav svg {
|
|
127
|
+
width: 1.5rem;
|
|
128
|
+
height: 1.5rem;
|
|
129
|
+
color: #6B7280;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
@media (hover: none) {
|
|
133
|
+
.td-carousel__nav {
|
|
134
|
+
opacity: 1;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
` });
|
|
138
|
+
}
|
|
139
|
+
export {
|
|
140
|
+
g as Carousel
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=index9.js.map
|