@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.
Files changed (123) hide show
  1. package/dist/components/Avatar.d.ts +16 -0
  2. package/dist/components/Avatar.d.ts.map +1 -0
  3. package/dist/components/AvatarGroup.d.ts +14 -0
  4. package/dist/components/AvatarGroup.d.ts.map +1 -0
  5. package/dist/components/Button.d.ts +13 -0
  6. package/dist/components/Button.d.ts.map +1 -0
  7. package/dist/components/Button.test.d.ts +2 -0
  8. package/dist/components/Button.test.d.ts.map +1 -0
  9. package/dist/components/Calendar.d.ts +27 -0
  10. package/dist/components/Calendar.d.ts.map +1 -0
  11. package/dist/components/Carousel.d.ts +11 -0
  12. package/dist/components/Carousel.d.ts.map +1 -0
  13. package/dist/components/CtaSection.d.ts +13 -0
  14. package/dist/components/CtaSection.d.ts.map +1 -0
  15. package/dist/components/EventCard.d.ts +19 -0
  16. package/dist/components/EventCard.d.ts.map +1 -0
  17. package/dist/components/Footer.d.ts +25 -0
  18. package/dist/components/Footer.d.ts.map +1 -0
  19. package/dist/components/Header.d.ts +17 -0
  20. package/dist/components/Header.d.ts.map +1 -0
  21. package/dist/components/Icon.d.ts +8 -0
  22. package/dist/components/Icon.d.ts.map +1 -0
  23. package/dist/components/Image.d.ts +17 -0
  24. package/dist/components/Image.d.ts.map +1 -0
  25. package/dist/components/ImageCarousel.d.ts +18 -0
  26. package/dist/components/ImageCarousel.d.ts.map +1 -0
  27. package/dist/components/ImageText.d.ts +16 -0
  28. package/dist/components/ImageText.d.ts.map +1 -0
  29. package/dist/components/Logo.d.ts +15 -0
  30. package/dist/components/Logo.d.ts.map +1 -0
  31. package/dist/components/Logo3d.d.ts +28 -0
  32. package/dist/components/Logo3d.d.ts.map +1 -0
  33. package/dist/components/LogoMarquee.d.ts +18 -0
  34. package/dist/components/LogoMarquee.d.ts.map +1 -0
  35. package/dist/components/NewsletterSignup.d.ts +11 -0
  36. package/dist/components/NewsletterSignup.d.ts.map +1 -0
  37. package/dist/components/OpenCollective.d.ts +16 -0
  38. package/dist/components/OpenCollective.d.ts.map +1 -0
  39. package/dist/components/PersonCard.d.ts +20 -0
  40. package/dist/components/PersonCard.d.ts.map +1 -0
  41. package/dist/components/PersonTable.d.ts +28 -0
  42. package/dist/components/PersonTable.d.ts.map +1 -0
  43. package/dist/components/PromoSection.d.ts +20 -0
  44. package/dist/components/PromoSection.d.ts.map +1 -0
  45. package/dist/components/SponsorCard.d.ts +10 -0
  46. package/dist/components/SponsorCard.d.ts.map +1 -0
  47. package/dist/components/SponsorGrid.d.ts +21 -0
  48. package/dist/components/SponsorGrid.d.ts.map +1 -0
  49. package/dist/components/Table.d.ts +30 -0
  50. package/dist/components/Table.d.ts.map +1 -0
  51. package/dist/components/VideoEmbed.d.ts +14 -0
  52. package/dist/components/VideoEmbed.d.ts.map +1 -0
  53. package/dist/components/VideoHero.d.ts +16 -0
  54. package/dist/components/VideoHero.d.ts.map +1 -0
  55. package/dist/index.d.ts +53 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +55 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/index10.js +185 -0
  60. package/dist/index10.js.map +1 -0
  61. package/dist/index11.js +268 -0
  62. package/dist/index11.js.map +1 -0
  63. package/dist/index12.js +133 -0
  64. package/dist/index12.js.map +1 -0
  65. package/dist/index13.js +112 -0
  66. package/dist/index13.js.map +1 -0
  67. package/dist/index14.js +286 -0
  68. package/dist/index14.js.map +1 -0
  69. package/dist/index15.js +325 -0
  70. package/dist/index15.js.map +1 -0
  71. package/dist/index16.js +204 -0
  72. package/dist/index16.js.map +1 -0
  73. package/dist/index17.js +269 -0
  74. package/dist/index17.js.map +1 -0
  75. package/dist/index18.js +147 -0
  76. package/dist/index18.js.map +1 -0
  77. package/dist/index19.js +697 -0
  78. package/dist/index19.js.map +1 -0
  79. package/dist/index2.js +181 -0
  80. package/dist/index2.js.map +1 -0
  81. package/dist/index20.js +492 -0
  82. package/dist/index20.js.map +1 -0
  83. package/dist/index21.js +277 -0
  84. package/dist/index21.js.map +1 -0
  85. package/dist/index22.js +331 -0
  86. package/dist/index22.js.map +1 -0
  87. package/dist/index23.js +98 -0
  88. package/dist/index23.js.map +1 -0
  89. package/dist/index24.js +406 -0
  90. package/dist/index24.js.map +1 -0
  91. package/dist/index25.js +464 -0
  92. package/dist/index25.js.map +1 -0
  93. package/dist/index26.js +280 -0
  94. package/dist/index26.js.map +1 -0
  95. package/dist/index27.js +234 -0
  96. package/dist/index27.js.map +1 -0
  97. package/dist/index28.js +18 -0
  98. package/dist/index28.js.map +1 -0
  99. package/dist/index29.js +10779 -0
  100. package/dist/index29.js.map +1 -0
  101. package/dist/index3.js +39 -0
  102. package/dist/index3.js.map +1 -0
  103. package/dist/index30.js +358 -0
  104. package/dist/index30.js.map +1 -0
  105. package/dist/index31.js +199 -0
  106. package/dist/index31.js.map +1 -0
  107. package/dist/index32.js +22762 -0
  108. package/dist/index32.js.map +1 -0
  109. package/dist/index4.js +142 -0
  110. package/dist/index4.js.map +1 -0
  111. package/dist/index5.js +128 -0
  112. package/dist/index5.js.map +1 -0
  113. package/dist/index6.js +109 -0
  114. package/dist/index6.js.map +1 -0
  115. package/dist/index7.js +254 -0
  116. package/dist/index7.js.map +1 -0
  117. package/dist/index8.js +237 -0
  118. package/dist/index8.js.map +1 -0
  119. package/dist/index9.js +142 -0
  120. package/dist/index9.js.map +1 -0
  121. package/dist/test/setup.d.ts +2 -0
  122. package/dist/test/setup.d.ts.map +1 -0
  123. package/package.json +58 -0
@@ -0,0 +1,98 @@
1
+ import { jsxs as a, Fragment as d, jsx as r } from "react/jsx-runtime";
2
+ import { clsx as e } from "./index28.js";
3
+ function h({
4
+ name: o,
5
+ logo: t,
6
+ href: n,
7
+ tier: i = "community",
8
+ className: s
9
+ }) {
10
+ return /* @__PURE__ */ a(d, { children: [
11
+ /* @__PURE__ */ r(
12
+ "a",
13
+ {
14
+ className: e("td-sponsor-card", `td-sponsor-card--${i}`, s),
15
+ href: n,
16
+ target: "_blank",
17
+ rel: "noopener noreferrer",
18
+ children: /* @__PURE__ */ r("img", { src: t, alt: o })
19
+ }
20
+ ),
21
+ /* @__PURE__ */ r(m, {})
22
+ ] });
23
+ }
24
+ function m() {
25
+ return /* @__PURE__ */ r("style", { children: `
26
+ .td-sponsor-card {
27
+ display: flex;
28
+ align-items: center;
29
+ justify-content: center;
30
+ padding: 2rem;
31
+ background: #E5E7EB;
32
+ transition: all 0.15s ease;
33
+ height: 100%;
34
+ min-height: 120px;
35
+ text-decoration: none;
36
+ }
37
+
38
+ .td-sponsor-card:hover {
39
+ background: #D1D5DB;
40
+ }
41
+
42
+ .td-sponsor-card:hover img {
43
+ transform: scale(1.05);
44
+ }
45
+
46
+ .td-sponsor-card img {
47
+ max-width: 80%;
48
+ max-height: 80px;
49
+ height: auto;
50
+ display: block;
51
+ object-fit: contain;
52
+ transition: transform 0.15s ease;
53
+ }
54
+
55
+ .td-sponsor-card--platinum {
56
+ min-height: 180px;
57
+ padding: 2.5rem;
58
+ }
59
+
60
+ .td-sponsor-card--platinum img {
61
+ max-height: 120px;
62
+ max-width: 85%;
63
+ }
64
+
65
+ .td-sponsor-card--gold {
66
+ min-height: 150px;
67
+ padding: 2rem;
68
+ }
69
+
70
+ .td-sponsor-card--gold img {
71
+ max-height: 100px;
72
+ max-width: 85%;
73
+ }
74
+
75
+ .td-sponsor-card--silver {
76
+ min-height: 120px;
77
+ }
78
+
79
+ .td-sponsor-card--silver img {
80
+ max-height: 70px;
81
+ }
82
+
83
+ .td-sponsor-card--bronze,
84
+ .td-sponsor-card--community {
85
+ min-height: 100px;
86
+ padding: 1.5rem;
87
+ }
88
+
89
+ .td-sponsor-card--bronze img,
90
+ .td-sponsor-card--community img {
91
+ max-height: 50px;
92
+ }
93
+ ` });
94
+ }
95
+ export {
96
+ h as SponsorCard
97
+ };
98
+ //# sourceMappingURL=index23.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index23.js","sources":["../src/components/SponsorCard.tsx"],"sourcesContent":["import { clsx } from 'clsx';\n\nexport type SponsorCardTier = 'platinum' | 'gold' | 'silver' | 'bronze' | 'community';\n\nexport interface SponsorCardProps {\n name: string;\n logo: string;\n href: string;\n tier?: SponsorCardTier;\n className?: string;\n}\n\nexport function SponsorCard({\n name,\n logo,\n href,\n tier = 'community',\n className,\n}: SponsorCardProps) {\n return (\n <>\n <a\n className={clsx('td-sponsor-card', `td-sponsor-card--${tier}`, className)}\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={logo} alt={name} />\n </a>\n <SponsorCardStyles />\n </>\n );\n}\n\nfunction SponsorCardStyles() {\n return (\n <style>{`\n .td-sponsor-card {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 2rem;\n background: #E5E7EB;\n transition: all 0.15s ease;\n height: 100%;\n min-height: 120px;\n text-decoration: none;\n }\n\n .td-sponsor-card:hover {\n background: #D1D5DB;\n }\n\n .td-sponsor-card:hover img {\n transform: scale(1.05);\n }\n\n .td-sponsor-card img {\n max-width: 80%;\n max-height: 80px;\n height: auto;\n display: block;\n object-fit: contain;\n transition: transform 0.15s ease;\n }\n\n .td-sponsor-card--platinum {\n min-height: 180px;\n padding: 2.5rem;\n }\n\n .td-sponsor-card--platinum img {\n max-height: 120px;\n max-width: 85%;\n }\n\n .td-sponsor-card--gold {\n min-height: 150px;\n padding: 2rem;\n }\n\n .td-sponsor-card--gold img {\n max-height: 100px;\n max-width: 85%;\n }\n\n .td-sponsor-card--silver {\n min-height: 120px;\n }\n\n .td-sponsor-card--silver img {\n max-height: 70px;\n }\n\n .td-sponsor-card--bronze,\n .td-sponsor-card--community {\n min-height: 100px;\n padding: 1.5rem;\n }\n\n .td-sponsor-card--bronze img,\n .td-sponsor-card--community img {\n max-height: 50px;\n }\n `}</style>\n );\n}\n"],"names":["SponsorCard","name","logo","href","tier","className","jsxs","Fragment","jsx","clsx","SponsorCardStyles"],"mappings":";;AAYO,SAASA,EAAY;AAAA,EAC1B,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,WAAAC;AACF,GAAqB;AACnB,SACE,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWC,EAAK,mBAAmB,oBAAoBL,CAAI,IAAIC,CAAS;AAAA,QACxE,MAAAF;AAAA,QACA,QAAO;AAAA,QACP,KAAI;AAAA,QAEJ,UAAA,gBAAAK,EAAC,OAAA,EAAI,KAAKN,GAAM,KAAKD,EAAA,CAAM;AAAA,MAAA;AAAA,IAAA;AAAA,sBAE5BS,GAAA,CAAA,CAAkB;AAAA,EAAA,GACrB;AAEJ;AAEA,SAASA,IAAoB;AAC3B,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,OAoEN;AAEN;"}
@@ -0,0 +1,406 @@
1
+ import { jsxs as p, Fragment as k, jsx as o } from "react/jsx-runtime";
2
+ import { useRef as N, useCallback as u } from "react";
3
+ import { clsx as w } from "./index28.js";
4
+ const f = ["platinum", "gold", "silver", "bronze", "community"], z = {
5
+ platinum: { label: "Platinum", accent: "#E5E7EB" },
6
+ gold: { label: "Gold", accent: "#FCD34D" },
7
+ silver: { label: "Silver", accent: "#9CA3AF" },
8
+ bronze: { label: "Bronze", accent: "#D97706" },
9
+ community: { label: "Community", accent: "#E85A4F" }
10
+ };
11
+ function y({ sponsor: d, monochrome: c }) {
12
+ const n = N(null), _ = d.tier || "community", a = u((t) => {
13
+ const i = n.current;
14
+ if (!i) return;
15
+ const e = i.getBoundingClientRect(), m = t.clientX - e.left, h = t.clientY - e.top, x = e.width / 2, r = e.height / 2, s = (h - r) / r * -8, g = (m - x) / x * 8, b = m / e.width * 100, v = h / e.height * 100;
16
+ i.style.setProperty("--rotateX", `${s}deg`), i.style.setProperty("--rotateY", `${g}deg`), i.style.setProperty("--shineX", `${b}%`), i.style.setProperty("--shineY", `${v}%`);
17
+ }, []), l = u(() => {
18
+ const t = n.current;
19
+ t && (t.style.setProperty("--rotateX", "0deg"), t.style.setProperty("--rotateY", "0deg"));
20
+ }, []);
21
+ return /* @__PURE__ */ o(
22
+ "a",
23
+ {
24
+ ref: n,
25
+ href: d.href || "#",
26
+ target: "_blank",
27
+ rel: "noopener noreferrer",
28
+ className: `td-sponsor-grid__card td-sponsor-grid__card--${_}`,
29
+ title: d.name,
30
+ onMouseMove: a,
31
+ onMouseLeave: l,
32
+ children: /* @__PURE__ */ p("div", { className: "td-sponsor-grid__card-inner", children: [
33
+ /* @__PURE__ */ o("div", { className: "td-sponsor-grid__shine" }),
34
+ /* @__PURE__ */ o("div", { className: "td-sponsor-grid__logo-bg", children: /* @__PURE__ */ o(
35
+ "img",
36
+ {
37
+ src: d.logo,
38
+ alt: d.name,
39
+ className: w("td-sponsor-grid__logo", c && "td-sponsor-grid__logo--mono")
40
+ }
41
+ ) }),
42
+ /* @__PURE__ */ o("span", { className: "td-sponsor-grid__name", children: d.name })
43
+ ] })
44
+ }
45
+ );
46
+ }
47
+ function S({
48
+ title: d,
49
+ description: c,
50
+ sponsors: n,
51
+ showTierHeadings: _ = !1,
52
+ tier: a = "",
53
+ monochrome: l = !1,
54
+ children: t,
55
+ className: i
56
+ }) {
57
+ const e = a ? n.filter((r) => r.tier === a) : n, m = f.reduce((r, s) => (r[s] = e.filter((g) => (g.tier || "community") === s), r), {}), h = (r, s) => {
58
+ if (s.length === 0) return null;
59
+ const g = z[r];
60
+ return /* @__PURE__ */ p("div", { className: "td-sponsor-grid__tier-section", children: [
61
+ _ && /* @__PURE__ */ p("div", { className: "td-sponsor-grid__tier-heading", children: [
62
+ /* @__PURE__ */ o(
63
+ "span",
64
+ {
65
+ className: "td-sponsor-grid__tier-dot",
66
+ style: { background: g.accent }
67
+ }
68
+ ),
69
+ g.label,
70
+ " Sponsors"
71
+ ] }),
72
+ /* @__PURE__ */ o("div", { className: `td-sponsor-grid__grid td-sponsor-grid__grid--${r}`, children: s.map((b) => /* @__PURE__ */ o(y, { sponsor: b, monochrome: l }, b.name)) })
73
+ ] }, r);
74
+ }, x = !a && !_;
75
+ return /* @__PURE__ */ p(k, { children: [
76
+ /* @__PURE__ */ p("div", { className: w("td-sponsor-grid", i), children: [
77
+ (d || c) && /* @__PURE__ */ p("div", { className: "td-sponsor-grid__header", children: [
78
+ d && /* @__PURE__ */ o("h2", { className: "td-sponsor-grid__title", children: d }),
79
+ c && /* @__PURE__ */ o("p", { className: "td-sponsor-grid__description", children: c })
80
+ ] }),
81
+ /* @__PURE__ */ o("div", { className: "td-sponsor-grid__body", children: _ ? f.map((r) => h(r, m[r])) : /* @__PURE__ */ o("div", { className: `td-sponsor-grid__grid td-sponsor-grid__grid--${x ? "mixed" : a || "mixed"}`, children: e.map((r) => /* @__PURE__ */ o(y, { sponsor: r, monochrome: l }, r.name)) }) }),
82
+ t && /* @__PURE__ */ o("div", { className: "td-sponsor-grid__footer", children: t })
83
+ ] }),
84
+ /* @__PURE__ */ o(X, {})
85
+ ] });
86
+ }
87
+ function X() {
88
+ return /* @__PURE__ */ o("style", { children: `
89
+ .td-sponsor-grid {
90
+ background: rgba(28, 36, 56, 0.8);
91
+ backdrop-filter: blur(12px);
92
+ -webkit-backdrop-filter: blur(12px);
93
+ border: 1px solid rgba(255, 255, 255, 0.05);
94
+ border-radius: 0.875rem;
95
+ overflow: hidden;
96
+ box-shadow:
97
+ inset 0 1px 1px 0 rgba(255, 255, 255, 0.05),
98
+ 0 8px 24px -4px rgba(0, 0, 0, 0.15);
99
+ }
100
+
101
+ .td-sponsor-grid__header {
102
+ text-align: center;
103
+ padding: 2rem 1.5rem;
104
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
105
+ }
106
+
107
+ .td-sponsor-grid__title {
108
+ font-size: 1.5rem;
109
+ font-weight: 700;
110
+ color: white;
111
+ margin: 0;
112
+ letter-spacing: -0.01em;
113
+ }
114
+
115
+ .td-sponsor-grid__description {
116
+ font-size: 1rem;
117
+ color: rgba(209, 213, 219, 0.8);
118
+ margin: 0.75rem 0 0 0;
119
+ line-height: 1.6;
120
+ max-width: 500px;
121
+ margin-left: auto;
122
+ margin-right: auto;
123
+ }
124
+
125
+ .td-sponsor-grid__body {
126
+ padding: 1.5rem;
127
+ }
128
+
129
+ .td-sponsor-grid__tier-section {
130
+ margin-bottom: 2rem;
131
+ }
132
+
133
+ .td-sponsor-grid__tier-section:last-child {
134
+ margin-bottom: 0;
135
+ }
136
+
137
+ .td-sponsor-grid__tier-heading {
138
+ display: flex;
139
+ align-items: center;
140
+ gap: 0.5rem;
141
+ font-size: 0.75rem;
142
+ font-weight: 600;
143
+ text-transform: uppercase;
144
+ letter-spacing: 0.1em;
145
+ color: rgba(209, 213, 219, 0.6);
146
+ margin-bottom: 1rem;
147
+ padding-bottom: 0.75rem;
148
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
149
+ }
150
+
151
+ .td-sponsor-grid__tier-dot {
152
+ width: 8px;
153
+ height: 8px;
154
+ border-radius: 50%;
155
+ }
156
+
157
+ .td-sponsor-grid__grid {
158
+ display: flex;
159
+ flex-wrap: wrap;
160
+ gap: 1rem;
161
+ justify-content: center;
162
+ }
163
+
164
+ /* Card widths by tier */
165
+ .td-sponsor-grid__grid--platinum .td-sponsor-grid__card {
166
+ width: calc(50% - 0.5rem);
167
+ max-width: 280px;
168
+ }
169
+
170
+ @media (max-width: 639px) {
171
+ .td-sponsor-grid__grid--platinum .td-sponsor-grid__card {
172
+ width: 100%;
173
+ max-width: 280px;
174
+ }
175
+ }
176
+
177
+ .td-sponsor-grid__grid--gold .td-sponsor-grid__card {
178
+ width: calc(50% - 0.5rem);
179
+ max-width: 200px;
180
+ }
181
+
182
+ @media (min-width: 768px) {
183
+ .td-sponsor-grid__grid--gold .td-sponsor-grid__card {
184
+ width: calc(33.333% - 0.667rem);
185
+ max-width: 200px;
186
+ }
187
+ }
188
+
189
+ .td-sponsor-grid__grid--silver .td-sponsor-grid__card,
190
+ .td-sponsor-grid__grid--bronze .td-sponsor-grid__card,
191
+ .td-sponsor-grid__grid--mixed .td-sponsor-grid__card,
192
+ .td-sponsor-grid__grid--community .td-sponsor-grid__card {
193
+ width: calc(50% - 0.5rem);
194
+ max-width: 160px;
195
+ }
196
+
197
+ @media (min-width: 640px) {
198
+ .td-sponsor-grid__grid--silver .td-sponsor-grid__card,
199
+ .td-sponsor-grid__grid--bronze .td-sponsor-grid__card,
200
+ .td-sponsor-grid__grid--mixed .td-sponsor-grid__card,
201
+ .td-sponsor-grid__grid--community .td-sponsor-grid__card {
202
+ width: calc(33.333% - 0.667rem);
203
+ max-width: 160px;
204
+ }
205
+ }
206
+
207
+ @media (min-width: 768px) {
208
+ .td-sponsor-grid__grid--silver .td-sponsor-grid__card,
209
+ .td-sponsor-grid__grid--bronze .td-sponsor-grid__card,
210
+ .td-sponsor-grid__grid--mixed .td-sponsor-grid__card,
211
+ .td-sponsor-grid__grid--community .td-sponsor-grid__card {
212
+ width: calc(25% - 0.75rem);
213
+ max-width: 160px;
214
+ }
215
+ }
216
+
217
+ /* Card with Apple TV parallax effect */
218
+ .td-sponsor-grid__card {
219
+ --rotateX: 0deg;
220
+ --rotateY: 0deg;
221
+ --shineX: 50%;
222
+ --shineY: 50%;
223
+
224
+ display: block;
225
+ perspective: 1000px;
226
+ text-decoration: none;
227
+ }
228
+
229
+ .td-sponsor-grid__card-inner {
230
+ position: relative;
231
+ display: flex;
232
+ flex-direction: column;
233
+ align-items: center;
234
+ justify-content: center;
235
+ gap: 0.75rem;
236
+ padding: 1.5rem;
237
+ min-height: 120px;
238
+ background: linear-gradient(
239
+ 145deg,
240
+ rgba(255, 255, 255, 0.08) 0%,
241
+ rgba(255, 255, 255, 0.02) 100%
242
+ );
243
+ border: 1px solid rgba(255, 255, 255, 0.08);
244
+ border-radius: 0.75rem;
245
+ transform-style: preserve-3d;
246
+ transform: rotateX(var(--rotateX)) rotateY(var(--rotateY));
247
+ transition: transform 0.1s ease-out, box-shadow 0.3s ease, border-color 0.3s ease;
248
+ overflow: hidden;
249
+ }
250
+
251
+ .td-sponsor-grid__card:hover .td-sponsor-grid__card-inner {
252
+ border-color: rgba(255, 255, 255, 0.15);
253
+ box-shadow:
254
+ 0 20px 40px -10px rgba(0, 0, 0, 0.3),
255
+ 0 10px 20px -5px rgba(0, 0, 0, 0.2),
256
+ inset 0 1px 2px rgba(255, 255, 255, 0.1);
257
+ }
258
+
259
+ /* Shine effect */
260
+ .td-sponsor-grid__shine {
261
+ position: absolute;
262
+ inset: 0;
263
+ background: radial-gradient(
264
+ circle at var(--shineX) var(--shineY),
265
+ rgba(255, 255, 255, 0.15) 0%,
266
+ transparent 60%
267
+ );
268
+ opacity: 0;
269
+ transition: opacity 0.3s ease;
270
+ pointer-events: none;
271
+ }
272
+
273
+ .td-sponsor-grid__card:hover .td-sponsor-grid__shine {
274
+ opacity: 1;
275
+ }
276
+
277
+ .td-sponsor-grid__logo-bg {
278
+ display: flex;
279
+ align-items: center;
280
+ justify-content: center;
281
+ padding: 1rem;
282
+ background: white;
283
+ border-radius: 0.5rem;
284
+ transform: translateZ(20px);
285
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
286
+ width: 100%;
287
+ max-width: 160px;
288
+ }
289
+
290
+ .td-sponsor-grid__card:hover .td-sponsor-grid__logo-bg {
291
+ transform: translateZ(30px) scale(1.05);
292
+ box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
293
+ }
294
+
295
+ .td-sponsor-grid__logo {
296
+ max-width: 100%;
297
+ max-height: 50px;
298
+ height: auto;
299
+ display: block;
300
+ object-fit: contain;
301
+ transition: opacity 0.3s ease, filter 0.3s ease;
302
+ }
303
+
304
+ .td-sponsor-grid__logo--mono {
305
+ filter: brightness(0) invert(1);
306
+ opacity: 0.9;
307
+ }
308
+
309
+ .td-sponsor-grid__name {
310
+ font-size: 0.75rem;
311
+ font-weight: 500;
312
+ color: rgba(209, 213, 219, 0.6);
313
+ text-align: center;
314
+ transform: translateZ(10px);
315
+ transition: color 0.3s ease;
316
+ }
317
+
318
+ .td-sponsor-grid__card:hover .td-sponsor-grid__name {
319
+ color: rgba(255, 255, 255, 0.8);
320
+ }
321
+
322
+ /* Tier-based card sizing */
323
+ .td-sponsor-grid__card--platinum .td-sponsor-grid__card-inner {
324
+ min-height: 180px;
325
+ padding: 2rem;
326
+ background: linear-gradient(
327
+ 145deg,
328
+ rgba(255, 255, 255, 0.12) 0%,
329
+ rgba(255, 255, 255, 0.04) 100%
330
+ );
331
+ }
332
+
333
+ .td-sponsor-grid__card--platinum .td-sponsor-grid__logo {
334
+ max-height: 100px;
335
+ max-width: 85%;
336
+ }
337
+
338
+ .td-sponsor-grid__card--gold .td-sponsor-grid__card-inner {
339
+ min-height: 150px;
340
+ background: linear-gradient(
341
+ 145deg,
342
+ rgba(252, 211, 77, 0.1) 0%,
343
+ rgba(255, 255, 255, 0.03) 100%
344
+ );
345
+ }
346
+
347
+ .td-sponsor-grid__card--gold .td-sponsor-grid__logo {
348
+ max-height: 80px;
349
+ max-width: 85%;
350
+ }
351
+
352
+ .td-sponsor-grid__card--silver .td-sponsor-grid__card-inner {
353
+ min-height: 130px;
354
+ background: linear-gradient(
355
+ 145deg,
356
+ rgba(156, 163, 175, 0.08) 0%,
357
+ rgba(255, 255, 255, 0.02) 100%
358
+ );
359
+ }
360
+
361
+ .td-sponsor-grid__card--silver .td-sponsor-grid__logo {
362
+ max-height: 70px;
363
+ }
364
+
365
+ .td-sponsor-grid__card--bronze .td-sponsor-grid__card-inner,
366
+ .td-sponsor-grid__card--community .td-sponsor-grid__card-inner {
367
+ min-height: 100px;
368
+ padding: 1.25rem;
369
+ }
370
+
371
+ .td-sponsor-grid__card--bronze .td-sponsor-grid__logo,
372
+ .td-sponsor-grid__card--community .td-sponsor-grid__logo {
373
+ max-height: 50px;
374
+ }
375
+
376
+ .td-sponsor-grid__footer {
377
+ padding: 1.5rem;
378
+ display: flex;
379
+ justify-content: center;
380
+ gap: 1rem;
381
+ flex-wrap: wrap;
382
+ background: rgba(0, 0, 0, 0.2);
383
+ border-top: 1px solid rgba(255, 255, 255, 0.05);
384
+ }
385
+
386
+ .td-sponsor-grid__footer:empty {
387
+ display: none;
388
+ }
389
+
390
+ /* Reduced motion */
391
+ @media (prefers-reduced-motion: reduce) {
392
+ .td-sponsor-grid__card-inner {
393
+ transform: none !important;
394
+ transition: box-shadow 0.3s ease, border-color 0.3s ease;
395
+ }
396
+
397
+ .td-sponsor-grid__shine {
398
+ display: none;
399
+ }
400
+ }
401
+ ` });
402
+ }
403
+ export {
404
+ S as SponsorGrid
405
+ };
406
+ //# sourceMappingURL=index24.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index24.js","sources":["../src/components/SponsorGrid.tsx"],"sourcesContent":["'use client';\n\nimport { ReactNode, useRef, useCallback } from 'react';\nimport { clsx } from 'clsx';\n\nexport type SponsorTier = 'platinum' | 'gold' | 'silver' | 'bronze' | 'community';\n\nexport interface Sponsor {\n name: string;\n logo: string;\n href?: string;\n tier?: SponsorTier;\n}\n\nexport interface SponsorGridProps {\n title?: string;\n description?: string;\n sponsors: Sponsor[];\n showTierHeadings?: boolean;\n tier?: SponsorTier | '';\n /** Force all logos to display as white monochrome */\n monochrome?: boolean;\n children?: ReactNode;\n className?: string;\n}\n\nconst TIER_ORDER: SponsorTier[] = ['platinum', 'gold', 'silver', 'bronze', 'community'];\n\nconst TIER_CONFIG: Record<SponsorTier, { label: string; accent: string }> = {\n platinum: { label: 'Platinum', accent: '#E5E7EB' },\n gold: { label: 'Gold', accent: '#FCD34D' },\n silver: { label: 'Silver', accent: '#9CA3AF' },\n bronze: { label: 'Bronze', accent: '#D97706' },\n community: { label: 'Community', accent: '#E85A4F' },\n};\n\nfunction SponsorCard({ sponsor, monochrome }: { sponsor: Sponsor; monochrome?: boolean }) {\n const cardRef = useRef<HTMLAnchorElement>(null);\n const tierClass = sponsor.tier || 'community';\n\n const handleMouseMove = useCallback((e: React.MouseEvent<HTMLAnchorElement>) => {\n const card = cardRef.current;\n if (!card) return;\n\n const rect = card.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n const centerX = rect.width / 2;\n const centerY = rect.height / 2;\n\n // Calculate rotation (max 8 degrees)\n const rotateX = ((y - centerY) / centerY) * -8;\n const rotateY = ((x - centerX) / centerX) * 8;\n\n // Calculate shine position\n const shineX = (x / rect.width) * 100;\n const shineY = (y / rect.height) * 100;\n\n card.style.setProperty('--rotateX', `${rotateX}deg`);\n card.style.setProperty('--rotateY', `${rotateY}deg`);\n card.style.setProperty('--shineX', `${shineX}%`);\n card.style.setProperty('--shineY', `${shineY}%`);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n const card = cardRef.current;\n if (!card) return;\n\n card.style.setProperty('--rotateX', '0deg');\n card.style.setProperty('--rotateY', '0deg');\n }, []);\n\n return (\n <a\n ref={cardRef}\n href={sponsor.href || '#'}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={`td-sponsor-grid__card td-sponsor-grid__card--${tierClass}`}\n title={sponsor.name}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n >\n <div className=\"td-sponsor-grid__card-inner\">\n <div className=\"td-sponsor-grid__shine\" />\n <div className=\"td-sponsor-grid__logo-bg\">\n <img\n src={sponsor.logo}\n alt={sponsor.name}\n className={clsx('td-sponsor-grid__logo', monochrome && 'td-sponsor-grid__logo--mono')}\n />\n </div>\n <span className=\"td-sponsor-grid__name\">{sponsor.name}</span>\n </div>\n </a>\n );\n}\n\nexport function SponsorGrid({\n title,\n description,\n sponsors,\n showTierHeadings = false,\n tier = '',\n monochrome = false,\n children,\n className,\n}: SponsorGridProps) {\n // Filter sponsors by tier if specified\n const filteredSponsors = tier\n ? sponsors.filter((s) => s.tier === tier)\n : sponsors;\n\n // Group sponsors by tier\n const sponsorsByTier = TIER_ORDER.reduce((acc, t) => {\n acc[t] = filteredSponsors.filter((s) => (s.tier || 'community') === t);\n return acc;\n }, {} as Record<SponsorTier, Sponsor[]>);\n\n const renderTierSection = (tierName: SponsorTier, tierSponsors: Sponsor[]) => {\n if (tierSponsors.length === 0) return null;\n\n const config = TIER_CONFIG[tierName];\n\n return (\n <div key={tierName} className=\"td-sponsor-grid__tier-section\">\n {showTierHeadings && (\n <div className=\"td-sponsor-grid__tier-heading\">\n <span\n className=\"td-sponsor-grid__tier-dot\"\n style={{ background: config.accent }}\n />\n {config.label} Sponsors\n </div>\n )}\n <div className={`td-sponsor-grid__grid td-sponsor-grid__grid--${tierName}`}>\n {tierSponsors.map((sponsor) => (\n <SponsorCard key={sponsor.name} sponsor={sponsor} monochrome={monochrome} />\n ))}\n </div>\n </div>\n );\n };\n\n const hasMixedTiers = !tier && !showTierHeadings;\n\n return (\n <>\n <div className={clsx('td-sponsor-grid', className)}>\n {(title || description) && (\n <div className=\"td-sponsor-grid__header\">\n {title && <h2 className=\"td-sponsor-grid__title\">{title}</h2>}\n {description && <p className=\"td-sponsor-grid__description\">{description}</p>}\n </div>\n )}\n\n <div className=\"td-sponsor-grid__body\">\n {showTierHeadings ? (\n TIER_ORDER.map((t) => renderTierSection(t, sponsorsByTier[t]))\n ) : (\n <div className={`td-sponsor-grid__grid td-sponsor-grid__grid--${hasMixedTiers ? 'mixed' : tier || 'mixed'}`}>\n {filteredSponsors.map((sponsor) => (\n <SponsorCard key={sponsor.name} sponsor={sponsor} monochrome={monochrome} />\n ))}\n </div>\n )}\n </div>\n\n {children && (\n <div className=\"td-sponsor-grid__footer\">\n {children}\n </div>\n )}\n </div>\n <SponsorGridStyles />\n </>\n );\n}\n\nfunction SponsorGridStyles() {\n return (\n <style>{`\n .td-sponsor-grid {\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 border-radius: 0.875rem;\n overflow: hidden;\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-sponsor-grid__header {\n text-align: center;\n padding: 2rem 1.5rem;\n border-bottom: 1px solid rgba(255, 255, 255, 0.05);\n }\n\n .td-sponsor-grid__title {\n font-size: 1.5rem;\n font-weight: 700;\n color: white;\n margin: 0;\n letter-spacing: -0.01em;\n }\n\n .td-sponsor-grid__description {\n font-size: 1rem;\n color: rgba(209, 213, 219, 0.8);\n margin: 0.75rem 0 0 0;\n line-height: 1.6;\n max-width: 500px;\n margin-left: auto;\n margin-right: auto;\n }\n\n .td-sponsor-grid__body {\n padding: 1.5rem;\n }\n\n .td-sponsor-grid__tier-section {\n margin-bottom: 2rem;\n }\n\n .td-sponsor-grid__tier-section:last-child {\n margin-bottom: 0;\n }\n\n .td-sponsor-grid__tier-heading {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.75rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: rgba(209, 213, 219, 0.6);\n margin-bottom: 1rem;\n padding-bottom: 0.75rem;\n border-bottom: 1px solid rgba(255, 255, 255, 0.05);\n }\n\n .td-sponsor-grid__tier-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n }\n\n .td-sponsor-grid__grid {\n display: flex;\n flex-wrap: wrap;\n gap: 1rem;\n justify-content: center;\n }\n\n /* Card widths by tier */\n .td-sponsor-grid__grid--platinum .td-sponsor-grid__card {\n width: calc(50% - 0.5rem);\n max-width: 280px;\n }\n\n @media (max-width: 639px) {\n .td-sponsor-grid__grid--platinum .td-sponsor-grid__card {\n width: 100%;\n max-width: 280px;\n }\n }\n\n .td-sponsor-grid__grid--gold .td-sponsor-grid__card {\n width: calc(50% - 0.5rem);\n max-width: 200px;\n }\n\n @media (min-width: 768px) {\n .td-sponsor-grid__grid--gold .td-sponsor-grid__card {\n width: calc(33.333% - 0.667rem);\n max-width: 200px;\n }\n }\n\n .td-sponsor-grid__grid--silver .td-sponsor-grid__card,\n .td-sponsor-grid__grid--bronze .td-sponsor-grid__card,\n .td-sponsor-grid__grid--mixed .td-sponsor-grid__card,\n .td-sponsor-grid__grid--community .td-sponsor-grid__card {\n width: calc(50% - 0.5rem);\n max-width: 160px;\n }\n\n @media (min-width: 640px) {\n .td-sponsor-grid__grid--silver .td-sponsor-grid__card,\n .td-sponsor-grid__grid--bronze .td-sponsor-grid__card,\n .td-sponsor-grid__grid--mixed .td-sponsor-grid__card,\n .td-sponsor-grid__grid--community .td-sponsor-grid__card {\n width: calc(33.333% - 0.667rem);\n max-width: 160px;\n }\n }\n\n @media (min-width: 768px) {\n .td-sponsor-grid__grid--silver .td-sponsor-grid__card,\n .td-sponsor-grid__grid--bronze .td-sponsor-grid__card,\n .td-sponsor-grid__grid--mixed .td-sponsor-grid__card,\n .td-sponsor-grid__grid--community .td-sponsor-grid__card {\n width: calc(25% - 0.75rem);\n max-width: 160px;\n }\n }\n\n /* Card with Apple TV parallax effect */\n .td-sponsor-grid__card {\n --rotateX: 0deg;\n --rotateY: 0deg;\n --shineX: 50%;\n --shineY: 50%;\n\n display: block;\n perspective: 1000px;\n text-decoration: none;\n }\n\n .td-sponsor-grid__card-inner {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 0.75rem;\n padding: 1.5rem;\n min-height: 120px;\n background: linear-gradient(\n 145deg,\n rgba(255, 255, 255, 0.08) 0%,\n rgba(255, 255, 255, 0.02) 100%\n );\n border: 1px solid rgba(255, 255, 255, 0.08);\n border-radius: 0.75rem;\n transform-style: preserve-3d;\n transform: rotateX(var(--rotateX)) rotateY(var(--rotateY));\n transition: transform 0.1s ease-out, box-shadow 0.3s ease, border-color 0.3s ease;\n overflow: hidden;\n }\n\n .td-sponsor-grid__card:hover .td-sponsor-grid__card-inner {\n border-color: rgba(255, 255, 255, 0.15);\n box-shadow:\n 0 20px 40px -10px rgba(0, 0, 0, 0.3),\n 0 10px 20px -5px rgba(0, 0, 0, 0.2),\n inset 0 1px 2px rgba(255, 255, 255, 0.1);\n }\n\n /* Shine effect */\n .td-sponsor-grid__shine {\n position: absolute;\n inset: 0;\n background: radial-gradient(\n circle at var(--shineX) var(--shineY),\n rgba(255, 255, 255, 0.15) 0%,\n transparent 60%\n );\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: none;\n }\n\n .td-sponsor-grid__card:hover .td-sponsor-grid__shine {\n opacity: 1;\n }\n\n .td-sponsor-grid__logo-bg {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1rem;\n background: white;\n border-radius: 0.5rem;\n transform: translateZ(20px);\n transition: transform 0.3s ease, box-shadow 0.3s ease;\n width: 100%;\n max-width: 160px;\n }\n\n .td-sponsor-grid__card:hover .td-sponsor-grid__logo-bg {\n transform: translateZ(30px) scale(1.05);\n box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);\n }\n\n .td-sponsor-grid__logo {\n max-width: 100%;\n max-height: 50px;\n height: auto;\n display: block;\n object-fit: contain;\n transition: opacity 0.3s ease, filter 0.3s ease;\n }\n\n .td-sponsor-grid__logo--mono {\n filter: brightness(0) invert(1);\n opacity: 0.9;\n }\n\n .td-sponsor-grid__name {\n font-size: 0.75rem;\n font-weight: 500;\n color: rgba(209, 213, 219, 0.6);\n text-align: center;\n transform: translateZ(10px);\n transition: color 0.3s ease;\n }\n\n .td-sponsor-grid__card:hover .td-sponsor-grid__name {\n color: rgba(255, 255, 255, 0.8);\n }\n\n /* Tier-based card sizing */\n .td-sponsor-grid__card--platinum .td-sponsor-grid__card-inner {\n min-height: 180px;\n padding: 2rem;\n background: linear-gradient(\n 145deg,\n rgba(255, 255, 255, 0.12) 0%,\n rgba(255, 255, 255, 0.04) 100%\n );\n }\n\n .td-sponsor-grid__card--platinum .td-sponsor-grid__logo {\n max-height: 100px;\n max-width: 85%;\n }\n\n .td-sponsor-grid__card--gold .td-sponsor-grid__card-inner {\n min-height: 150px;\n background: linear-gradient(\n 145deg,\n rgba(252, 211, 77, 0.1) 0%,\n rgba(255, 255, 255, 0.03) 100%\n );\n }\n\n .td-sponsor-grid__card--gold .td-sponsor-grid__logo {\n max-height: 80px;\n max-width: 85%;\n }\n\n .td-sponsor-grid__card--silver .td-sponsor-grid__card-inner {\n min-height: 130px;\n background: linear-gradient(\n 145deg,\n rgba(156, 163, 175, 0.08) 0%,\n rgba(255, 255, 255, 0.02) 100%\n );\n }\n\n .td-sponsor-grid__card--silver .td-sponsor-grid__logo {\n max-height: 70px;\n }\n\n .td-sponsor-grid__card--bronze .td-sponsor-grid__card-inner,\n .td-sponsor-grid__card--community .td-sponsor-grid__card-inner {\n min-height: 100px;\n padding: 1.25rem;\n }\n\n .td-sponsor-grid__card--bronze .td-sponsor-grid__logo,\n .td-sponsor-grid__card--community .td-sponsor-grid__logo {\n max-height: 50px;\n }\n\n .td-sponsor-grid__footer {\n padding: 1.5rem;\n display: flex;\n justify-content: center;\n gap: 1rem;\n flex-wrap: wrap;\n background: rgba(0, 0, 0, 0.2);\n border-top: 1px solid rgba(255, 255, 255, 0.05);\n }\n\n .td-sponsor-grid__footer:empty {\n display: none;\n }\n\n /* Reduced motion */\n @media (prefers-reduced-motion: reduce) {\n .td-sponsor-grid__card-inner {\n transform: none !important;\n transition: box-shadow 0.3s ease, border-color 0.3s ease;\n }\n\n .td-sponsor-grid__shine {\n display: none;\n }\n }\n `}</style>\n );\n}\n"],"names":["TIER_ORDER","TIER_CONFIG","SponsorCard","sponsor","monochrome","cardRef","useRef","tierClass","handleMouseMove","useCallback","e","card","rect","x","y","centerX","centerY","rotateX","rotateY","shineX","shineY","handleMouseLeave","jsx","jsxs","clsx","SponsorGrid","title","description","sponsors","showTierHeadings","tier","children","className","filteredSponsors","s","sponsorsByTier","acc","t","renderTierSection","tierName","tierSponsors","config","hasMixedTiers","Fragment","SponsorGridStyles"],"mappings":"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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAyTN;AAEN;"}