@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/index20.js
ADDED
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
import { jsxs as l, Fragment as y, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { clsx as u } from "./index28.js";
|
|
3
|
+
function F(d) {
|
|
4
|
+
const t = /* @__PURE__ */ new Date();
|
|
5
|
+
return d.getDate() === t.getDate() && d.getMonth() === t.getMonth() && d.getFullYear() === t.getFullYear();
|
|
6
|
+
}
|
|
7
|
+
function N(d) {
|
|
8
|
+
return new Date(d).toLocaleTimeString("en-US", {
|
|
9
|
+
hour: "numeric",
|
|
10
|
+
minute: "2-digit",
|
|
11
|
+
hour12: !0
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
function A(d, t, m) {
|
|
15
|
+
const s = [], _ = /* @__PURE__ */ new Date();
|
|
16
|
+
_.setHours(0, 0, 0, 0);
|
|
17
|
+
const r = /* @__PURE__ */ new Map();
|
|
18
|
+
for (const n of d) {
|
|
19
|
+
const o = new Date(n.dateTime).toDateString();
|
|
20
|
+
r.has(o) || r.set(o, []), r.get(o).push(n);
|
|
21
|
+
}
|
|
22
|
+
for (let n = 0; n < t; n++) {
|
|
23
|
+
const c = new Date(_);
|
|
24
|
+
c.setDate(c.getDate() + n);
|
|
25
|
+
const o = c.toDateString(), i = r.get(o) || [];
|
|
26
|
+
i.sort((b, p) => new Date(b.dateTime).getTime() - new Date(p.dateTime).getTime()), (!m || i.length > 0) && s.push({ date: c, events: i });
|
|
27
|
+
}
|
|
28
|
+
return s;
|
|
29
|
+
}
|
|
30
|
+
function C({
|
|
31
|
+
events: d = [],
|
|
32
|
+
days: t = 30,
|
|
33
|
+
hideEmpty: m = !1,
|
|
34
|
+
emptyMessage: s = "No events",
|
|
35
|
+
title: _,
|
|
36
|
+
onEventClick: r,
|
|
37
|
+
className: n,
|
|
38
|
+
variant: c = "dark",
|
|
39
|
+
fullHeight: o = !1
|
|
40
|
+
}) {
|
|
41
|
+
const i = A(d, t, m), b = c === "light" ? "td-calendar--light" : "td-calendar--dark", p = o ? "td-calendar--full-height" : "", w = (a) => {
|
|
42
|
+
const g = /* @__PURE__ */ l(y, { children: [
|
|
43
|
+
/* @__PURE__ */ e("span", { className: "td-calendar__event-time", children: N(a.dateTime) }),
|
|
44
|
+
/* @__PURE__ */ l("div", { className: "td-calendar__event-content", children: [
|
|
45
|
+
/* @__PURE__ */ e("div", { className: "td-calendar__event-title", children: a.title }),
|
|
46
|
+
/* @__PURE__ */ l("div", { className: "td-calendar__event-meta", children: [
|
|
47
|
+
a.groupName && /* @__PURE__ */ e("span", { className: "td-calendar__event-group", children: a.groupName }),
|
|
48
|
+
a.groupName && (a.location || a.isOnline) && /* @__PURE__ */ e("span", { children: "·" }),
|
|
49
|
+
a.isOnline ? /* @__PURE__ */ l("span", { className: "td-calendar__online-badge", children: [
|
|
50
|
+
/* @__PURE__ */ e("span", { className: "td-calendar__online-dot" }),
|
|
51
|
+
"Online"
|
|
52
|
+
] }) : a.location ? /* @__PURE__ */ e("span", { className: "td-calendar__event-location", children: a.location }) : null
|
|
53
|
+
] })
|
|
54
|
+
] })
|
|
55
|
+
] }), h = () => r == null ? void 0 : r(a);
|
|
56
|
+
return a.eventUrl ? /* @__PURE__ */ e(
|
|
57
|
+
"a",
|
|
58
|
+
{
|
|
59
|
+
className: "td-calendar__event-item",
|
|
60
|
+
href: a.eventUrl,
|
|
61
|
+
onClick: h,
|
|
62
|
+
children: g
|
|
63
|
+
},
|
|
64
|
+
a.id
|
|
65
|
+
) : /* @__PURE__ */ e("div", { className: "td-calendar__event-item", onClick: h, children: g }, a.id);
|
|
66
|
+
}, k = (a, g) => {
|
|
67
|
+
const h = a.date.toLocaleDateString("en-US", { weekday: "short" }), f = a.date.getDate(), v = a.date.toLocaleDateString("en-US", { month: "short" }), x = F(a.date);
|
|
68
|
+
return /* @__PURE__ */ l("div", { className: u("td-calendar__day-row", x && "td-calendar__day-row--today"), children: [
|
|
69
|
+
/* @__PURE__ */ l("div", { className: "td-calendar__day-header", children: [
|
|
70
|
+
/* @__PURE__ */ e("div", { className: "td-calendar__day-weekday", children: h }),
|
|
71
|
+
/* @__PURE__ */ e("div", { className: "td-calendar__day-date", children: f }),
|
|
72
|
+
/* @__PURE__ */ e("div", { className: "td-calendar__day-month", children: v })
|
|
73
|
+
] }),
|
|
74
|
+
/* @__PURE__ */ e("div", { className: "td-calendar__day-events", children: a.events.length > 0 ? a.events.map(w) : /* @__PURE__ */ e("div", { className: "td-calendar__no-events", children: s }) })
|
|
75
|
+
] }, g);
|
|
76
|
+
};
|
|
77
|
+
return /* @__PURE__ */ l(y, { children: [
|
|
78
|
+
/* @__PURE__ */ l("div", { className: u("td-calendar", b, p, n), children: [
|
|
79
|
+
_ && /* @__PURE__ */ e("div", { className: "td-calendar__header", children: /* @__PURE__ */ e("h2", { className: "td-calendar__title", children: _ }) }),
|
|
80
|
+
/* @__PURE__ */ e("div", { className: "td-calendar__body", children: i.length > 0 ? i.map(k) : /* @__PURE__ */ e("div", { className: "td-calendar__empty-state", children: "No upcoming events" }) })
|
|
81
|
+
] }),
|
|
82
|
+
/* @__PURE__ */ e(D, {})
|
|
83
|
+
] });
|
|
84
|
+
}
|
|
85
|
+
function D() {
|
|
86
|
+
return /* @__PURE__ */ e("style", { children: `
|
|
87
|
+
/* Base styles */
|
|
88
|
+
.td-calendar {
|
|
89
|
+
border-radius: 0.875rem;
|
|
90
|
+
overflow: hidden;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.td-calendar__header {
|
|
94
|
+
padding: 1.5rem;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.td-calendar__title {
|
|
98
|
+
font-size: 1.25rem;
|
|
99
|
+
font-weight: 700;
|
|
100
|
+
margin: 0;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.td-calendar__body {
|
|
104
|
+
max-height: 600px;
|
|
105
|
+
overflow-y: auto;
|
|
106
|
+
scrollbar-width: thin;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.td-calendar--full-height .td-calendar__body {
|
|
110
|
+
max-height: none;
|
|
111
|
+
overflow-y: visible;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.td-calendar__day-row {
|
|
115
|
+
display: flex;
|
|
116
|
+
overflow: hidden;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.td-calendar__day-row:last-child {
|
|
120
|
+
border-bottom: none;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.td-calendar__day-header {
|
|
124
|
+
flex-shrink: 0;
|
|
125
|
+
width: 80px;
|
|
126
|
+
padding: 1rem;
|
|
127
|
+
text-align: center;
|
|
128
|
+
position: sticky;
|
|
129
|
+
top: 0;
|
|
130
|
+
align-self: flex-start;
|
|
131
|
+
backdrop-filter: blur(8px);
|
|
132
|
+
-webkit-backdrop-filter: blur(8px);
|
|
133
|
+
z-index: 1;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.td-calendar__day-weekday {
|
|
137
|
+
font-size: 0.75rem;
|
|
138
|
+
font-weight: 600;
|
|
139
|
+
text-transform: uppercase;
|
|
140
|
+
letter-spacing: 0.05em;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.td-calendar__day-row--today .td-calendar__day-weekday {
|
|
144
|
+
color: #E85A4F;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.td-calendar__day-date {
|
|
148
|
+
font-size: 1.5rem;
|
|
149
|
+
font-weight: 700;
|
|
150
|
+
line-height: 1.2;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.td-calendar__day-month {
|
|
154
|
+
font-size: 0.75rem;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.td-calendar__day-events {
|
|
158
|
+
flex: 1;
|
|
159
|
+
min-width: 0;
|
|
160
|
+
padding: 0.75rem 1rem;
|
|
161
|
+
display: flex;
|
|
162
|
+
flex-direction: column;
|
|
163
|
+
gap: 0.5rem;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.td-calendar__event-item {
|
|
167
|
+
display: flex;
|
|
168
|
+
align-items: flex-start;
|
|
169
|
+
gap: 0.75rem;
|
|
170
|
+
padding: 0.75rem;
|
|
171
|
+
border-radius: 0.5rem;
|
|
172
|
+
transition: all 0.15s ease;
|
|
173
|
+
cursor: pointer;
|
|
174
|
+
text-decoration: none;
|
|
175
|
+
color: inherit;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.td-calendar__event-time {
|
|
179
|
+
flex-shrink: 0;
|
|
180
|
+
font-size: 0.875rem;
|
|
181
|
+
font-weight: 500;
|
|
182
|
+
color: #E85A4F;
|
|
183
|
+
min-width: 70px;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.td-calendar__event-content {
|
|
187
|
+
flex: 1;
|
|
188
|
+
min-width: 0;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.td-calendar__event-title {
|
|
192
|
+
font-weight: 600;
|
|
193
|
+
overflow-wrap: break-word;
|
|
194
|
+
word-break: break-word;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.td-calendar__event-meta {
|
|
198
|
+
display: flex;
|
|
199
|
+
align-items: center;
|
|
200
|
+
flex-wrap: wrap;
|
|
201
|
+
gap: 0.5rem;
|
|
202
|
+
margin-top: 0.25rem;
|
|
203
|
+
font-size: 0.75rem;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
.td-calendar__online-badge {
|
|
207
|
+
display: inline-flex;
|
|
208
|
+
align-items: center;
|
|
209
|
+
gap: 0.25rem;
|
|
210
|
+
color: #22C55E;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.td-calendar__online-dot {
|
|
214
|
+
width: 6px;
|
|
215
|
+
height: 6px;
|
|
216
|
+
background: currentColor;
|
|
217
|
+
border-radius: 50%;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.td-calendar__no-events {
|
|
221
|
+
padding: 1rem;
|
|
222
|
+
font-size: 0.875rem;
|
|
223
|
+
font-style: italic;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.td-calendar__empty-state {
|
|
227
|
+
padding: 3rem;
|
|
228
|
+
text-align: center;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/* ============================================
|
|
232
|
+
DARK VARIANT (glass-dark style)
|
|
233
|
+
============================================ */
|
|
234
|
+
.td-calendar--dark {
|
|
235
|
+
background: rgba(28, 36, 56, 0.8);
|
|
236
|
+
backdrop-filter: blur(12px);
|
|
237
|
+
-webkit-backdrop-filter: blur(12px);
|
|
238
|
+
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
239
|
+
box-shadow:
|
|
240
|
+
inset 0 1px 1px 0 rgba(255, 255, 255, 0.05),
|
|
241
|
+
0 8px 24px -4px rgba(0, 0, 0, 0.15);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.td-calendar--dark .td-calendar__header {
|
|
245
|
+
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.td-calendar--dark .td-calendar__title {
|
|
249
|
+
color: white;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
.td-calendar--dark .td-calendar__body {
|
|
253
|
+
scrollbar-color: rgba(255, 255, 255, 0.2) transparent;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.td-calendar--dark .td-calendar__day-row {
|
|
257
|
+
border-bottom: 1px solid rgba(255, 255, 255, 0.03);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
.td-calendar--dark .td-calendar__day-row--today {
|
|
261
|
+
background: rgba(59, 130, 246, 0.1);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
.td-calendar--dark .td-calendar__day-header {
|
|
265
|
+
border-right: 1px solid rgba(255, 255, 255, 0.05);
|
|
266
|
+
background: rgba(28, 36, 56, 0.95);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.td-calendar--dark .td-calendar__day-row--today .td-calendar__day-header {
|
|
270
|
+
background: rgba(59, 130, 246, 0.15);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
.td-calendar--dark .td-calendar__day-weekday {
|
|
274
|
+
color: rgba(209, 213, 219, 0.9);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.td-calendar--dark .td-calendar__day-date {
|
|
278
|
+
color: white;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.td-calendar--dark .td-calendar__day-month {
|
|
282
|
+
color: rgba(209, 213, 219, 0.7);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.td-calendar--dark .td-calendar__event-item {
|
|
286
|
+
background: rgba(255, 255, 255, 0.06);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.td-calendar--dark .td-calendar__event-item:hover {
|
|
290
|
+
background: rgba(255, 255, 255, 0.1);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
.td-calendar--dark .td-calendar__event-title {
|
|
294
|
+
color: white;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
.td-calendar--dark .td-calendar__event-meta {
|
|
298
|
+
color: rgba(209, 213, 219, 0.85);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.td-calendar--dark .td-calendar__event-group {
|
|
302
|
+
color: rgba(209, 213, 219, 0.7);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
.td-calendar--dark .td-calendar__no-events {
|
|
306
|
+
color: rgba(209, 213, 219, 0.6);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.td-calendar--dark .td-calendar__empty-state {
|
|
310
|
+
color: rgba(209, 213, 219, 0.7);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/* ============================================
|
|
314
|
+
LIGHT VARIANT
|
|
315
|
+
============================================ */
|
|
316
|
+
.td-calendar--light {
|
|
317
|
+
background: white;
|
|
318
|
+
border: 1px solid #E5E7EB;
|
|
319
|
+
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
.td-calendar--light .td-calendar__header {
|
|
323
|
+
border-bottom: 1px solid #E5E7EB;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
.td-calendar--light .td-calendar__title {
|
|
327
|
+
color: #111827;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
.td-calendar--light .td-calendar__body {
|
|
331
|
+
scrollbar-color: rgba(0, 0, 0, 0.2) transparent;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
.td-calendar--light .td-calendar__day-row {
|
|
335
|
+
border-bottom: 1px solid #F3F4F6;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
.td-calendar--light .td-calendar__day-row--today {
|
|
339
|
+
background: rgba(59, 130, 246, 0.05);
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
.td-calendar--light .td-calendar__day-header {
|
|
343
|
+
border-right: 1px solid #F3F4F6;
|
|
344
|
+
background: #F9FAFB;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
.td-calendar--light .td-calendar__day-row--today .td-calendar__day-header {
|
|
348
|
+
background: rgba(59, 130, 246, 0.1);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
.td-calendar--light .td-calendar__day-weekday {
|
|
352
|
+
color: #6B7280;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
.td-calendar--light .td-calendar__day-date {
|
|
356
|
+
color: #111827;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
.td-calendar--light .td-calendar__day-month {
|
|
360
|
+
color: #9CA3AF;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
.td-calendar--light .td-calendar__event-item {
|
|
364
|
+
background: #F9FAFB;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
.td-calendar--light .td-calendar__event-item:hover {
|
|
368
|
+
background: #F3F4F6;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
.td-calendar--light .td-calendar__event-title {
|
|
372
|
+
color: #111827;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
.td-calendar--light .td-calendar__event-meta {
|
|
376
|
+
color: #6B7280;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
.td-calendar--light .td-calendar__event-group {
|
|
380
|
+
color: #9CA3AF;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
.td-calendar--light .td-calendar__no-events {
|
|
384
|
+
color: #9CA3AF;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
.td-calendar--light .td-calendar__empty-state {
|
|
388
|
+
color: #6B7280;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/* Light variant dark mode */
|
|
392
|
+
@media (prefers-color-scheme: dark) {
|
|
393
|
+
.td-calendar--light {
|
|
394
|
+
background: #111827;
|
|
395
|
+
border-color: #374151;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
.td-calendar--light .td-calendar__header {
|
|
399
|
+
border-bottom-color: #374151;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
.td-calendar--light .td-calendar__title {
|
|
403
|
+
color: #F9FAFB;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
.td-calendar--light .td-calendar__day-row {
|
|
407
|
+
border-bottom-color: #1F2937;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
.td-calendar--light .td-calendar__day-row--today {
|
|
411
|
+
background: rgba(59, 130, 246, 0.15);
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
.td-calendar--light .td-calendar__day-header {
|
|
415
|
+
border-right-color: #1F2937;
|
|
416
|
+
background: #1F2937;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
.td-calendar--light .td-calendar__day-row--today .td-calendar__day-header {
|
|
420
|
+
background: rgba(59, 130, 246, 0.2);
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
.td-calendar--light .td-calendar__day-weekday {
|
|
424
|
+
color: #9CA3AF;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
.td-calendar--light .td-calendar__day-date {
|
|
428
|
+
color: #F9FAFB;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
.td-calendar--light .td-calendar__day-month {
|
|
432
|
+
color: #6B7280;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
.td-calendar--light .td-calendar__event-item {
|
|
436
|
+
background: #1F2937;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
.td-calendar--light .td-calendar__event-item:hover {
|
|
440
|
+
background: #374151;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
.td-calendar--light .td-calendar__event-title {
|
|
444
|
+
color: #F9FAFB;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
.td-calendar--light .td-calendar__event-meta {
|
|
448
|
+
color: #9CA3AF;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
.td-calendar--light .td-calendar__event-group {
|
|
452
|
+
color: #6B7280;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
.td-calendar--light .td-calendar__no-events {
|
|
456
|
+
color: #6B7280;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
.td-calendar--light .td-calendar__empty-state {
|
|
460
|
+
color: #9CA3AF;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
/* ============================================
|
|
465
|
+
RESPONSIVE
|
|
466
|
+
============================================ */
|
|
467
|
+
@media (max-width: 640px) {
|
|
468
|
+
.td-calendar__day-header {
|
|
469
|
+
width: 60px;
|
|
470
|
+
padding: 0.75rem 0.5rem;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
.td-calendar__day-date {
|
|
474
|
+
font-size: 1.25rem;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
.td-calendar__event-time {
|
|
478
|
+
min-width: 50px;
|
|
479
|
+
font-size: 0.75rem;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
.td-calendar__event-item {
|
|
483
|
+
flex-direction: column;
|
|
484
|
+
gap: 0.25rem;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
` });
|
|
488
|
+
}
|
|
489
|
+
export {
|
|
490
|
+
C as Calendar
|
|
491
|
+
};
|
|
492
|
+
//# sourceMappingURL=index20.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index20.js","sources":["../src/components/Calendar.tsx"],"sourcesContent":["import { clsx } from 'clsx';\n\nexport interface CalendarEvent {\n id: string;\n title: string;\n dateTime: string;\n endTime?: string;\n location?: string;\n groupName?: string;\n groupUrl?: string;\n eventUrl?: string;\n isOnline?: boolean;\n}\n\nexport type CalendarVariant = 'light' | 'dark';\n\nexport interface CalendarProps {\n events?: CalendarEvent[];\n days?: number;\n hideEmpty?: boolean;\n emptyMessage?: string;\n title?: string;\n onEventClick?: (event: CalendarEvent) => void;\n className?: string;\n /** Visual variant - 'light' for light backgrounds, 'dark' for glass-dark style */\n variant?: CalendarVariant;\n /** Remove max-height constraint, letting the page scroll instead of the calendar body */\n fullHeight?: boolean;\n}\n\ninterface CalendarDay {\n date: Date;\n events: CalendarEvent[];\n}\n\nfunction isToday(date: Date): boolean {\n const today = new Date();\n return (\n date.getDate() === today.getDate() &&\n date.getMonth() === today.getMonth() &&\n date.getFullYear() === today.getFullYear()\n );\n}\n\nfunction formatTime(dateString: string): string {\n const date = new Date(dateString);\n return date.toLocaleTimeString('en-US', {\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n });\n}\n\nfunction groupEventsByDate(events: CalendarEvent[], days: number, hideEmpty: boolean): CalendarDay[] {\n const result: CalendarDay[] = [];\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n const eventsByDate = new Map<string, CalendarEvent[]>();\n for (const event of events) {\n const eventDate = new Date(event.dateTime);\n const dateKey = eventDate.toDateString();\n if (!eventsByDate.has(dateKey)) {\n eventsByDate.set(dateKey, []);\n }\n eventsByDate.get(dateKey)!.push(event);\n }\n\n for (let i = 0; i < days; i++) {\n const date = new Date(today);\n date.setDate(date.getDate() + i);\n const dateKey = date.toDateString();\n const dayEvents = eventsByDate.get(dateKey) || [];\n\n dayEvents.sort((a, b) => new Date(a.dateTime).getTime() - new Date(b.dateTime).getTime());\n\n if (!hideEmpty || dayEvents.length > 0) {\n result.push({ date, events: dayEvents });\n }\n }\n\n return result;\n}\n\nexport function Calendar({\n events = [],\n days = 30,\n hideEmpty = false,\n emptyMessage = 'No events',\n title,\n onEventClick,\n className,\n variant = 'dark',\n fullHeight = false,\n}: CalendarProps) {\n const calendarDays = groupEventsByDate(events, days, hideEmpty);\n const variantClass = variant === 'light' ? 'td-calendar--light' : 'td-calendar--dark';\n const heightClass = fullHeight ? 'td-calendar--full-height' : '';\n\n const renderEvent = (event: CalendarEvent) => {\n const content = (\n <>\n <span className=\"td-calendar__event-time\">{formatTime(event.dateTime)}</span>\n <div className=\"td-calendar__event-content\">\n <div className=\"td-calendar__event-title\">{event.title}</div>\n <div className=\"td-calendar__event-meta\">\n {event.groupName && <span className=\"td-calendar__event-group\">{event.groupName}</span>}\n {event.groupName && (event.location || event.isOnline) && <span>·</span>}\n {event.isOnline ? (\n <span className=\"td-calendar__online-badge\">\n <span className=\"td-calendar__online-dot\" />\n Online\n </span>\n ) : event.location ? (\n <span className=\"td-calendar__event-location\">{event.location}</span>\n ) : null}\n </div>\n </div>\n </>\n );\n\n const handleClick = () => onEventClick?.(event);\n\n if (event.eventUrl) {\n return (\n <a\n key={event.id}\n className=\"td-calendar__event-item\"\n href={event.eventUrl}\n onClick={handleClick}\n >\n {content}\n </a>\n );\n }\n\n return (\n <div key={event.id} className=\"td-calendar__event-item\" onClick={handleClick}>\n {content}\n </div>\n );\n };\n\n const renderDay = (day: CalendarDay, index: number) => {\n const weekday = day.date.toLocaleDateString('en-US', { weekday: 'short' });\n const dateNum = day.date.getDate();\n const month = day.date.toLocaleDateString('en-US', { month: 'short' });\n const dayIsToday = isToday(day.date);\n\n return (\n <div key={index} className={clsx('td-calendar__day-row', dayIsToday && 'td-calendar__day-row--today')}>\n <div className=\"td-calendar__day-header\">\n <div className=\"td-calendar__day-weekday\">{weekday}</div>\n <div className=\"td-calendar__day-date\">{dateNum}</div>\n <div className=\"td-calendar__day-month\">{month}</div>\n </div>\n <div className=\"td-calendar__day-events\">\n {day.events.length > 0 ? (\n day.events.map(renderEvent)\n ) : (\n <div className=\"td-calendar__no-events\">{emptyMessage}</div>\n )}\n </div>\n </div>\n );\n };\n\n return (\n <>\n <div className={clsx('td-calendar', variantClass, heightClass, className)}>\n {title && (\n <div className=\"td-calendar__header\">\n <h2 className=\"td-calendar__title\">{title}</h2>\n </div>\n )}\n\n <div className=\"td-calendar__body\">\n {calendarDays.length > 0 ? (\n calendarDays.map(renderDay)\n ) : (\n <div className=\"td-calendar__empty-state\">No upcoming events</div>\n )}\n </div>\n </div>\n <CalendarStyles />\n </>\n );\n}\n\nfunction CalendarStyles() {\n return (\n <style>{`\n /* Base styles */\n .td-calendar {\n border-radius: 0.875rem;\n overflow: hidden;\n }\n\n .td-calendar__header {\n padding: 1.5rem;\n }\n\n .td-calendar__title {\n font-size: 1.25rem;\n font-weight: 700;\n margin: 0;\n }\n\n .td-calendar__body {\n max-height: 600px;\n overflow-y: auto;\n scrollbar-width: thin;\n }\n\n .td-calendar--full-height .td-calendar__body {\n max-height: none;\n overflow-y: visible;\n }\n\n .td-calendar__day-row {\n display: flex;\n overflow: hidden;\n }\n\n .td-calendar__day-row:last-child {\n border-bottom: none;\n }\n\n .td-calendar__day-header {\n flex-shrink: 0;\n width: 80px;\n padding: 1rem;\n text-align: center;\n position: sticky;\n top: 0;\n align-self: flex-start;\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n z-index: 1;\n }\n\n .td-calendar__day-weekday {\n font-size: 0.75rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n }\n\n .td-calendar__day-row--today .td-calendar__day-weekday {\n color: #E85A4F;\n }\n\n .td-calendar__day-date {\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1.2;\n }\n\n .td-calendar__day-month {\n font-size: 0.75rem;\n }\n\n .td-calendar__day-events {\n flex: 1;\n min-width: 0;\n padding: 0.75rem 1rem;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n }\n\n .td-calendar__event-item {\n display: flex;\n align-items: flex-start;\n gap: 0.75rem;\n padding: 0.75rem;\n border-radius: 0.5rem;\n transition: all 0.15s ease;\n cursor: pointer;\n text-decoration: none;\n color: inherit;\n }\n\n .td-calendar__event-time {\n flex-shrink: 0;\n font-size: 0.875rem;\n font-weight: 500;\n color: #E85A4F;\n min-width: 70px;\n }\n\n .td-calendar__event-content {\n flex: 1;\n min-width: 0;\n }\n\n .td-calendar__event-title {\n font-weight: 600;\n overflow-wrap: break-word;\n word-break: break-word;\n }\n\n .td-calendar__event-meta {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 0.5rem;\n margin-top: 0.25rem;\n font-size: 0.75rem;\n }\n\n .td-calendar__online-badge {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n color: #22C55E;\n }\n\n .td-calendar__online-dot {\n width: 6px;\n height: 6px;\n background: currentColor;\n border-radius: 50%;\n }\n\n .td-calendar__no-events {\n padding: 1rem;\n font-size: 0.875rem;\n font-style: italic;\n }\n\n .td-calendar__empty-state {\n padding: 3rem;\n text-align: center;\n }\n\n /* ============================================\n DARK VARIANT (glass-dark style)\n ============================================ */\n .td-calendar--dark {\n background: rgba(28, 36, 56, 0.8);\n backdrop-filter: blur(12px);\n -webkit-backdrop-filter: blur(12px);\n border: 1px solid rgba(255, 255, 255, 0.05);\n box-shadow:\n inset 0 1px 1px 0 rgba(255, 255, 255, 0.05),\n 0 8px 24px -4px rgba(0, 0, 0, 0.15);\n }\n\n .td-calendar--dark .td-calendar__header {\n border-bottom: 1px solid rgba(255, 255, 255, 0.05);\n }\n\n .td-calendar--dark .td-calendar__title {\n color: white;\n }\n\n .td-calendar--dark .td-calendar__body {\n scrollbar-color: rgba(255, 255, 255, 0.2) transparent;\n }\n\n .td-calendar--dark .td-calendar__day-row {\n border-bottom: 1px solid rgba(255, 255, 255, 0.03);\n }\n\n .td-calendar--dark .td-calendar__day-row--today {\n background: rgba(59, 130, 246, 0.1);\n }\n\n .td-calendar--dark .td-calendar__day-header {\n border-right: 1px solid rgba(255, 255, 255, 0.05);\n background: rgba(28, 36, 56, 0.95);\n }\n\n .td-calendar--dark .td-calendar__day-row--today .td-calendar__day-header {\n background: rgba(59, 130, 246, 0.15);\n }\n\n .td-calendar--dark .td-calendar__day-weekday {\n color: rgba(209, 213, 219, 0.9);\n }\n\n .td-calendar--dark .td-calendar__day-date {\n color: white;\n }\n\n .td-calendar--dark .td-calendar__day-month {\n color: rgba(209, 213, 219, 0.7);\n }\n\n .td-calendar--dark .td-calendar__event-item {\n background: rgba(255, 255, 255, 0.06);\n }\n\n .td-calendar--dark .td-calendar__event-item:hover {\n background: rgba(255, 255, 255, 0.1);\n }\n\n .td-calendar--dark .td-calendar__event-title {\n color: white;\n }\n\n .td-calendar--dark .td-calendar__event-meta {\n color: rgba(209, 213, 219, 0.85);\n }\n\n .td-calendar--dark .td-calendar__event-group {\n color: rgba(209, 213, 219, 0.7);\n }\n\n .td-calendar--dark .td-calendar__no-events {\n color: rgba(209, 213, 219, 0.6);\n }\n\n .td-calendar--dark .td-calendar__empty-state {\n color: rgba(209, 213, 219, 0.7);\n }\n\n /* ============================================\n LIGHT VARIANT\n ============================================ */\n .td-calendar--light {\n background: white;\n border: 1px solid #E5E7EB;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);\n }\n\n .td-calendar--light .td-calendar__header {\n border-bottom: 1px solid #E5E7EB;\n }\n\n .td-calendar--light .td-calendar__title {\n color: #111827;\n }\n\n .td-calendar--light .td-calendar__body {\n scrollbar-color: rgba(0, 0, 0, 0.2) transparent;\n }\n\n .td-calendar--light .td-calendar__day-row {\n border-bottom: 1px solid #F3F4F6;\n }\n\n .td-calendar--light .td-calendar__day-row--today {\n background: rgba(59, 130, 246, 0.05);\n }\n\n .td-calendar--light .td-calendar__day-header {\n border-right: 1px solid #F3F4F6;\n background: #F9FAFB;\n }\n\n .td-calendar--light .td-calendar__day-row--today .td-calendar__day-header {\n background: rgba(59, 130, 246, 0.1);\n }\n\n .td-calendar--light .td-calendar__day-weekday {\n color: #6B7280;\n }\n\n .td-calendar--light .td-calendar__day-date {\n color: #111827;\n }\n\n .td-calendar--light .td-calendar__day-month {\n color: #9CA3AF;\n }\n\n .td-calendar--light .td-calendar__event-item {\n background: #F9FAFB;\n }\n\n .td-calendar--light .td-calendar__event-item:hover {\n background: #F3F4F6;\n }\n\n .td-calendar--light .td-calendar__event-title {\n color: #111827;\n }\n\n .td-calendar--light .td-calendar__event-meta {\n color: #6B7280;\n }\n\n .td-calendar--light .td-calendar__event-group {\n color: #9CA3AF;\n }\n\n .td-calendar--light .td-calendar__no-events {\n color: #9CA3AF;\n }\n\n .td-calendar--light .td-calendar__empty-state {\n color: #6B7280;\n }\n\n /* Light variant dark mode */\n @media (prefers-color-scheme: dark) {\n .td-calendar--light {\n background: #111827;\n border-color: #374151;\n }\n\n .td-calendar--light .td-calendar__header {\n border-bottom-color: #374151;\n }\n\n .td-calendar--light .td-calendar__title {\n color: #F9FAFB;\n }\n\n .td-calendar--light .td-calendar__day-row {\n border-bottom-color: #1F2937;\n }\n\n .td-calendar--light .td-calendar__day-row--today {\n background: rgba(59, 130, 246, 0.15);\n }\n\n .td-calendar--light .td-calendar__day-header {\n border-right-color: #1F2937;\n background: #1F2937;\n }\n\n .td-calendar--light .td-calendar__day-row--today .td-calendar__day-header {\n background: rgba(59, 130, 246, 0.2);\n }\n\n .td-calendar--light .td-calendar__day-weekday {\n color: #9CA3AF;\n }\n\n .td-calendar--light .td-calendar__day-date {\n color: #F9FAFB;\n }\n\n .td-calendar--light .td-calendar__day-month {\n color: #6B7280;\n }\n\n .td-calendar--light .td-calendar__event-item {\n background: #1F2937;\n }\n\n .td-calendar--light .td-calendar__event-item:hover {\n background: #374151;\n }\n\n .td-calendar--light .td-calendar__event-title {\n color: #F9FAFB;\n }\n\n .td-calendar--light .td-calendar__event-meta {\n color: #9CA3AF;\n }\n\n .td-calendar--light .td-calendar__event-group {\n color: #6B7280;\n }\n\n .td-calendar--light .td-calendar__no-events {\n color: #6B7280;\n }\n\n .td-calendar--light .td-calendar__empty-state {\n color: #9CA3AF;\n }\n }\n\n /* ============================================\n RESPONSIVE\n ============================================ */\n @media (max-width: 640px) {\n .td-calendar__day-header {\n width: 60px;\n padding: 0.75rem 0.5rem;\n }\n\n .td-calendar__day-date {\n font-size: 1.25rem;\n }\n\n .td-calendar__event-time {\n min-width: 50px;\n font-size: 0.75rem;\n }\n\n .td-calendar__event-item {\n flex-direction: column;\n gap: 0.25rem;\n }\n }\n `}</style>\n );\n}\n"],"names":["isToday","date","today","formatTime","dateString","groupEventsByDate","events","days","hideEmpty","result","eventsByDate","event","dateKey","i","dayEvents","a","b","Calendar","emptyMessage","title","onEventClick","className","variant","fullHeight","calendarDays","variantClass","heightClass","renderEvent","content","jsxs","Fragment","jsx","handleClick","renderDay","day","index","weekday","dateNum","month","dayIsToday","clsx","CalendarStyles"],"mappings":";;AAmCA,SAASA,EAAQC,GAAqB;AACpC,QAAMC,wBAAY,KAAA;AAClB,SACED,EAAK,QAAA,MAAcC,EAAM,QAAA,KACzBD,EAAK,SAAA,MAAeC,EAAM,cAC1BD,EAAK,YAAA,MAAkBC,EAAM,YAAA;AAEjC;AAEA,SAASC,EAAWC,GAA4B;AAE9C,SADa,IAAI,KAAKA,CAAU,EACpB,mBAAmB,SAAS;AAAA,IACtC,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,EAAA,CACT;AACH;AAEA,SAASC,EAAkBC,GAAyBC,GAAcC,GAAmC;AACnG,QAAMC,IAAwB,CAAA,GACxBP,wBAAY,KAAA;AAClB,EAAAA,EAAM,SAAS,GAAG,GAAG,GAAG,CAAC;AAEzB,QAAMQ,wBAAmB,IAAA;AACzB,aAAWC,KAASL,GAAQ;AAE1B,UAAMM,IADY,IAAI,KAAKD,EAAM,QAAQ,EACf,aAAA;AAC1B,IAAKD,EAAa,IAAIE,CAAO,KAC3BF,EAAa,IAAIE,GAAS,EAAE,GAE9BF,EAAa,IAAIE,CAAO,EAAG,KAAKD,CAAK;AAAA,EACvC;AAEA,WAASE,IAAI,GAAGA,IAAIN,GAAMM,KAAK;AAC7B,UAAMZ,IAAO,IAAI,KAAKC,CAAK;AAC3B,IAAAD,EAAK,QAAQA,EAAK,QAAA,IAAYY,CAAC;AAC/B,UAAMD,IAAUX,EAAK,aAAA,GACfa,IAAYJ,EAAa,IAAIE,CAAO,KAAK,CAAA;AAE/C,IAAAE,EAAU,KAAK,CAACC,GAAGC,MAAM,IAAI,KAAKD,EAAE,QAAQ,EAAE,QAAA,IAAY,IAAI,KAAKC,EAAE,QAAQ,EAAE,SAAS,IAEpF,CAACR,KAAaM,EAAU,SAAS,MACnCL,EAAO,KAAK,EAAE,MAAAR,GAAM,QAAQa,GAAW;AAAA,EAE3C;AAEA,SAAOL;AACT;AAEO,SAASQ,EAAS;AAAA,EACvB,QAAAX,IAAS,CAAA;AAAA,EACT,MAAAC,IAAO;AAAA,EACP,WAAAC,IAAY;AAAA,EACZ,cAAAU,IAAe;AAAA,EACf,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,YAAAC,IAAa;AACf,GAAkB;AAChB,QAAMC,IAAenB,EAAkBC,GAAQC,GAAMC,CAAS,GACxDiB,IAAeH,MAAY,UAAU,uBAAuB,qBAC5DI,IAAcH,IAAa,6BAA6B,IAExDI,IAAc,CAAChB,MAAyB;AAC5C,UAAMiB,IACJ,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,MAAA,gBAAAC,EAAC,UAAK,WAAU,2BAA2B,UAAA5B,EAAWQ,EAAM,QAAQ,GAAE;AAAA,MACtE,gBAAAkB,EAAC,OAAA,EAAI,WAAU,8BACb,UAAA;AAAA,QAAA,gBAAAE,EAAC,OAAA,EAAI,WAAU,4BAA4B,UAAApB,EAAM,OAAM;AAAA,QACvD,gBAAAkB,EAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,UAAAlB,EAAM,aAAa,gBAAAoB,EAAC,QAAA,EAAK,WAAU,4BAA4B,YAAM,WAAU;AAAA,UAC/EpB,EAAM,cAAcA,EAAM,YAAYA,EAAM,aAAa,gBAAAoB,EAAC,UAAK,UAAA,IAAA,CAAC;AAAA,UAChEpB,EAAM,WACL,gBAAAkB,EAAC,QAAA,EAAK,WAAU,6BACd,UAAA;AAAA,YAAA,gBAAAE,EAAC,QAAA,EAAK,WAAU,0BAAA,CAA0B;AAAA,YAAE;AAAA,UAAA,EAAA,CAE9C,IACEpB,EAAM,WACR,gBAAAoB,EAAC,UAAK,WAAU,+BAA+B,UAAApB,EAAM,SAAA,CAAS,IAC5D;AAAA,QAAA,EAAA,CACN;AAAA,MAAA,EAAA,CACF;AAAA,IAAA,GACF,GAGIqB,IAAc,MAAMZ,KAAA,gBAAAA,EAAeT;AAEzC,WAAIA,EAAM,WAEN,gBAAAoB;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,WAAU;AAAA,QACV,MAAMpB,EAAM;AAAA,QACZ,SAASqB;AAAA,QAER,UAAAJ;AAAA,MAAA;AAAA,MALIjB,EAAM;AAAA,IAAA,IAWf,gBAAAoB,EAAC,SAAmB,WAAU,2BAA0B,SAASC,GAC9D,UAAAJ,KADOjB,EAAM,EAEhB;AAAA,EAEJ,GAEMsB,IAAY,CAACC,GAAkBC,MAAkB;AACrD,UAAMC,IAAUF,EAAI,KAAK,mBAAmB,SAAS,EAAE,SAAS,SAAS,GACnEG,IAAUH,EAAI,KAAK,QAAA,GACnBI,IAAQJ,EAAI,KAAK,mBAAmB,SAAS,EAAE,OAAO,SAAS,GAC/DK,IAAavC,EAAQkC,EAAI,IAAI;AAEnC,6BACG,OAAA,EAAgB,WAAWM,EAAK,wBAAwBD,KAAc,6BAA6B,GAClG,UAAA;AAAA,MAAA,gBAAAV,EAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,QAAA,gBAAAE,EAAC,OAAA,EAAI,WAAU,4BAA4B,UAAAK,GAAQ;AAAA,QACnD,gBAAAL,EAAC,OAAA,EAAI,WAAU,yBAAyB,UAAAM,GAAQ;AAAA,QAChD,gBAAAN,EAAC,OAAA,EAAI,WAAU,0BAA0B,UAAAO,EAAA,CAAM;AAAA,MAAA,GACjD;AAAA,wBACC,OAAA,EAAI,WAAU,2BACZ,UAAAJ,EAAI,OAAO,SAAS,IACnBA,EAAI,OAAO,IAAIP,CAAW,IAE1B,gBAAAI,EAAC,SAAI,WAAU,0BAA0B,aAAa,EAAA,CAE1D;AAAA,IAAA,EAAA,GAZQI,CAaV;AAAA,EAEJ;AAEA,SACE,gBAAAN,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAD,EAAC,SAAI,WAAWW,EAAK,eAAef,GAAcC,GAAaL,CAAS,GACrE,UAAA;AAAA,MAAAF,KACC,gBAAAY,EAAC,SAAI,WAAU,uBACb,4BAAC,MAAA,EAAG,WAAU,sBAAsB,UAAAZ,EAAA,CAAM,EAAA,CAC5C;AAAA,wBAGD,OAAA,EAAI,WAAU,qBACZ,UAAAK,EAAa,SAAS,IACrBA,EAAa,IAAIS,CAAS,IAE1B,gBAAAF,EAAC,OAAA,EAAI,WAAU,4BAA2B,gCAAkB,EAAA,CAEhE;AAAA,IAAA,GACF;AAAA,sBACCU,GAAA,CAAA,CAAe;AAAA,EAAA,GAClB;AAEJ;AAEA,SAASA,IAAiB;AACxB,2BACG,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;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;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;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;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,OAiZN;AAEN;"}
|