@sonatel-os/strapi-plugin-tcg 0.0.0-stage → 0.3.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.
@@ -0,0 +1,1011 @@
1
+ "use strict";
2
+ const jsxRuntime = require("react/jsx-runtime");
3
+ const react = require("react");
4
+ const designSystem = require("@strapi/design-system");
5
+ const icons = require("@strapi/icons");
6
+ const symbols = require("@strapi/icons/symbols");
7
+ const reactRouterDom = require("react-router-dom");
8
+ const styledComponents = require("styled-components");
9
+ const admin = require("@strapi/strapi/admin");
10
+ const index = require("./index-CRbzJppw.js");
11
+ const fmtDateTime = (value, locale) => {
12
+ if (!value) return "—";
13
+ try {
14
+ return new Intl.DateTimeFormat(locale ?? void 0, {
15
+ dateStyle: "medium",
16
+ timeStyle: "short"
17
+ }).format(new Date(value));
18
+ } catch {
19
+ return String(value);
20
+ }
21
+ };
22
+ const fmtDate = (value, locale) => {
23
+ if (!value) return "—";
24
+ try {
25
+ return new Intl.DateTimeFormat(locale ?? void 0, { dateStyle: "medium" }).format(
26
+ new Date(value)
27
+ );
28
+ } catch {
29
+ return String(value);
30
+ }
31
+ };
32
+ const fmtNumber = (value, locale) => new Intl.NumberFormat(locale ?? void 0).format(Number(value ?? 0));
33
+ const timeAgo = (value) => {
34
+ if (!value) return "—";
35
+ const diff = Date.now() - new Date(value).getTime();
36
+ const s = Math.round(diff / 1e3);
37
+ if (s < 60) return `${s}s`;
38
+ const m = Math.round(s / 60);
39
+ if (m < 60) return `${m} min`;
40
+ const h = Math.round(m / 60);
41
+ if (h < 48) return `${h} h`;
42
+ return `${Math.round(h / 24)} j`;
43
+ };
44
+ const rarityOf = (season, key) => (season?.rarities ?? []).find((r) => r.key === key) ?? { key, label: key, color: "#8E8EA9" };
45
+ const errorMessage = (err) => err?.data?.error?.message ?? err?.response?.data?.error?.message ?? err?.error?.message ?? err?.message ?? "Une erreur est survenue.";
46
+ const SPRING = "cubic-bezier(0.32, 0.72, 0, 1)";
47
+ const rise = styledComponents.keyframes`
48
+ from { opacity: 0; transform: translateY(14px); filter: blur(6px); }
49
+ to { opacity: 1; transform: translateY(0); filter: blur(0); }
50
+ `;
51
+ const reveal = styledComponents.css`
52
+ animation: ${rise} 720ms ${SPRING} both;
53
+ animation-delay: calc(var(--i, 0) * 70ms);
54
+ @media (prefers-reduced-motion: reduce) {
55
+ animation: none;
56
+ }
57
+ `;
58
+ const Shell = styledComponents.styled.div`
59
+ ${reveal};
60
+ width: 100%;
61
+ height: 100%;
62
+ background: ${({ theme }) => theme.colors.neutral150};
63
+ border: 1px solid ${({ theme }) => theme.colors.neutral150};
64
+ border-radius: 2rem;
65
+ padding: 0.5rem;
66
+ box-shadow:
67
+ 0 1px 2px rgba(33, 33, 52, 0.04),
68
+ 0 18px 40px -24px rgba(33, 33, 52, 0.22);
69
+ transition:
70
+ transform 480ms ${SPRING},
71
+ box-shadow 480ms ${SPRING};
72
+ ${({ $hover }) => $hover && styledComponents.css`
73
+ cursor: pointer;
74
+ &:hover {
75
+ transform: translateY(-3px);
76
+ box-shadow:
77
+ 0 1px 2px rgba(33, 33, 52, 0.04),
78
+ 0 28px 56px -24px rgba(33, 33, 52, 0.28);
79
+ }
80
+ &:active {
81
+ transform: translateY(-1px) scale(0.995);
82
+ }
83
+ `}
84
+ `;
85
+ const Core = styledComponents.styled(designSystem.Box)`
86
+ position: relative;
87
+ background: ${({ theme }) => theme.colors.neutral0};
88
+ border-radius: calc(2rem - 0.5rem);
89
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);
90
+ height: 100%;
91
+ ${({ $accent }) => $accent && styledComponents.css`
92
+ overflow: hidden;
93
+ &::before {
94
+ content: '';
95
+ position: absolute;
96
+ top: -60px;
97
+ right: -60px;
98
+ width: 180px;
99
+ height: 180px;
100
+ border-radius: 50%;
101
+ background: radial-gradient(circle, ${$accent}33 0%, ${$accent}00 70%);
102
+ pointer-events: none;
103
+ }
104
+ `}
105
+ `;
106
+ const Card = ({ style, onClick, className, accent, hover, index: index2, children, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
107
+ Shell,
108
+ {
109
+ style: { ...index2 != null ? { "--i": index2 } : {}, ...style },
110
+ onClick,
111
+ className,
112
+ $hover: Boolean(hover || onClick),
113
+ children: /* @__PURE__ */ jsxRuntime.jsx(Core, { $accent: accent, ...rest, children })
114
+ }
115
+ );
116
+ const Eyebrow = styledComponents.styled(designSystem.Typography).attrs({ variant: "sigma", tag: "p" })`
117
+ letter-spacing: 0.18em;
118
+ text-transform: uppercase;
119
+ font-size: 1rem;
120
+ color: ${({ theme }) => theme.colors.neutral500};
121
+ `;
122
+ const Section = ({ title, eyebrow, help, aside, children, index: index2, accent, ...rest }) => /* @__PURE__ */ jsxRuntime.jsxs(Card, { padding: 6, index: index2, accent, ...rest, children: [
123
+ title || aside ? /* @__PURE__ */ jsxRuntime.jsxs(
124
+ designSystem.Flex,
125
+ {
126
+ justifyContent: "space-between",
127
+ alignItems: "flex-start",
128
+ paddingBottom: help ? 2 : 5,
129
+ gap: 4,
130
+ children: [
131
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { children: [
132
+ eyebrow ? /* @__PURE__ */ jsxRuntime.jsx(Eyebrow, { paddingBottom: 1, children: eyebrow }) : null,
133
+ typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", tag: "h2", fontWeight: "bold", children: title }) : title
134
+ ] }),
135
+ aside
136
+ ]
137
+ }
138
+ ) : null,
139
+ help ? /* @__PURE__ */ jsxRuntime.jsx(
140
+ designSystem.Typography,
141
+ {
142
+ variant: "pi",
143
+ textColor: "neutral600",
144
+ tag: "p",
145
+ paddingBottom: 5,
146
+ style: { maxWidth: "72ch" },
147
+ children: help
148
+ }
149
+ ) : null,
150
+ children
151
+ ] });
152
+ const Big = styledComponents.styled(designSystem.Typography)`
153
+ font-size: 3.2rem;
154
+ line-height: 1;
155
+ font-weight: 700;
156
+ letter-spacing: -0.035em;
157
+ font-variant-numeric: tabular-nums;
158
+ `;
159
+ const StatTile = ({ label, value, hint, accent, icon, index: index2, children }) => /* @__PURE__ */ jsxRuntime.jsxs(Card, { padding: 5, accent, index: index2, children: [
160
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "space-between", alignItems: "center", children: [
161
+ /* @__PURE__ */ jsxRuntime.jsx(Eyebrow, { children: label }),
162
+ icon ? /* @__PURE__ */ jsxRuntime.jsx(
163
+ designSystem.Box,
164
+ {
165
+ style: {
166
+ color: accent ?? "#8E8EA9",
167
+ display: "inline-flex",
168
+ width: 32,
169
+ height: 32,
170
+ borderRadius: 10,
171
+ alignItems: "center",
172
+ justifyContent: "center",
173
+ background: `${accent ?? "#8E8EA9"}14`
174
+ },
175
+ children: icon
176
+ }
177
+ ) : null
178
+ ] }),
179
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 4, paddingBottom: 1, children: /* @__PURE__ */ jsxRuntime.jsx(Big, { tag: "p", children: value }) }),
180
+ hint ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral500", tag: "p", children: hint }) : null,
181
+ children
182
+ ] });
183
+ const PillBtn = styledComponents.styled.button`
184
+ display: inline-flex;
185
+ align-items: center;
186
+ gap: 1rem;
187
+ padding: 0.4rem 0.4rem 0.4rem 1.6rem;
188
+ border-radius: 999px;
189
+ border: 0;
190
+ cursor: pointer;
191
+ font: inherit;
192
+ font-size: 1.4rem;
193
+ font-weight: 600;
194
+ color: ${({ theme, $tone }) => $tone === "light" ? theme.colors.neutral800 : theme.colors.neutral0};
195
+ background: ${({ theme, $tone }) => $tone === "light" ? theme.colors.neutral0 : theme.colors.neutral800};
196
+ box-shadow:
197
+ inset 0 1px 0 rgba(255, 255, 255, 0.12),
198
+ 0 10px 24px -12px rgba(33, 33, 52, 0.45);
199
+ transition:
200
+ transform 420ms ${SPRING},
201
+ box-shadow 420ms ${SPRING};
202
+ span.disc {
203
+ display: inline-flex;
204
+ align-items: center;
205
+ justify-content: center;
206
+ width: 3rem;
207
+ height: 3rem;
208
+ border-radius: 50%;
209
+ background: ${({ $tone }) => $tone === "light" ? "rgba(33,33,52,0.06)" : "rgba(255,255,255,0.14)"};
210
+ transition: transform 420ms ${SPRING};
211
+ svg {
212
+ width: 1.4rem;
213
+ height: 1.4rem;
214
+ }
215
+ }
216
+ &:hover {
217
+ transform: translateY(-1px);
218
+ box-shadow:
219
+ inset 0 1px 0 rgba(255, 255, 255, 0.12),
220
+ 0 16px 30px -12px rgba(33, 33, 52, 0.5);
221
+ }
222
+ &:hover span.disc {
223
+ transform: translate(2px, -1px) scale(1.06);
224
+ }
225
+ &:active {
226
+ transform: scale(0.98);
227
+ }
228
+ `;
229
+ const Pill = ({ children, onClick, tone = "dark", icon = /* @__PURE__ */ jsxRuntime.jsx(icons.ArrowRight, {}) }) => /* @__PURE__ */ jsxRuntime.jsxs(PillBtn, { type: "button", onClick, $tone: tone, children: [
230
+ children,
231
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "disc", "aria-hidden": true, children: icon })
232
+ ] });
233
+ const Dot = styledComponents.styled.span`
234
+ display: inline-block;
235
+ width: 10px;
236
+ height: 10px;
237
+ border-radius: 50%;
238
+ background: ${({ $color }) => $color};
239
+ box-shadow:
240
+ 0 0 0 2px ${({ theme }) => theme.colors.neutral0},
241
+ 0 0 0 3px ${({ $color }) => $color}33;
242
+ `;
243
+ const RarityBadge = ({ season, rarity }) => {
244
+ const meta = rarityOf(season, rarity);
245
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, alignItems: "center", style: { display: "inline-flex" }, children: [
246
+ /* @__PURE__ */ jsxRuntime.jsx(Dot, { $color: meta.color }),
247
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", fontWeight: "semiBold", children: meta.label })
248
+ ] });
249
+ };
250
+ const STATUS_LABEL = {
251
+ active: "Active",
252
+ pending: "Pending",
253
+ fulfilled: "Handed over",
254
+ accepted: "Accepted",
255
+ draft: "Draft",
256
+ archived: "Archived",
257
+ cancelled: "Cancelled",
258
+ rejected: "Rejected",
259
+ expired: "Expired",
260
+ open: "Open",
261
+ closed: "Closed",
262
+ inactive: "Inactive",
263
+ live: "Live",
264
+ scheduled: "Scheduled"
265
+ };
266
+ const StatusBadge = ({ status, label }) => {
267
+ const map = {
268
+ active: "success",
269
+ live: "success",
270
+ open: "success",
271
+ pending: "warning",
272
+ scheduled: "warning",
273
+ fulfilled: "success",
274
+ accepted: "success",
275
+ draft: "secondary",
276
+ archived: "neutral",
277
+ inactive: "neutral",
278
+ closed: "neutral",
279
+ cancelled: "danger",
280
+ rejected: "danger",
281
+ expired: "neutral"
282
+ };
283
+ const v = map[status] ?? "neutral";
284
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { backgroundColor: `${v}100`, textColor: `${v}700`, size: "S", children: label ?? STATUS_LABEL[status] ?? status });
285
+ };
286
+ const Sparkline = ({ points = [], color = "currentColor", height = 36 }) => {
287
+ const w = 160;
288
+ const max = Math.max(1, ...points);
289
+ const step = points.length > 1 ? w / (points.length - 1) : w;
290
+ const d = points.map(
291
+ (p, i) => `${i === 0 ? "M" : "L"}${(i * step).toFixed(1)},${(height - p / max * (height - 4) - 2).toFixed(1)}`
292
+ ).join(" ");
293
+ const id = `sp-${color.replace(/[^a-z0-9]/gi, "")}`;
294
+ return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: w, height, viewBox: `0 0 ${w} ${height}`, role: "img", "aria-label": "trend", children: [
295
+ /* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsxs("linearGradient", { id, x1: "0", y1: "0", x2: "0", y2: "1", children: [
296
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "0%", stopColor: color, stopOpacity: "0.25" }),
297
+ /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "100%", stopColor: color, stopOpacity: "0" })
298
+ ] }) }),
299
+ d ? /* @__PURE__ */ jsxRuntime.jsx("path", { d: `${d} L${w},${height} L0,${height} Z`, fill: `url(#${id})` }) : null,
300
+ /* @__PURE__ */ jsxRuntime.jsx(
301
+ "path",
302
+ {
303
+ d,
304
+ fill: "none",
305
+ stroke: color,
306
+ strokeWidth: "2",
307
+ strokeLinecap: "round",
308
+ strokeLinejoin: "round"
309
+ }
310
+ )
311
+ ] });
312
+ };
313
+ const Empty = ({ title, content, action }) => /* @__PURE__ */ jsxRuntime.jsx(Card, { children: /* @__PURE__ */ jsxRuntime.jsx(
314
+ designSystem.EmptyStateLayout,
315
+ {
316
+ icon: /* @__PURE__ */ jsxRuntime.jsx(symbols.EmptyDocuments, { width: "10rem" }),
317
+ content: title ? `${title} ${content ?? ""}`.trim() : content,
318
+ action,
319
+ shadow: "none"
320
+ }
321
+ ) });
322
+ const Mono = styledComponents.styled(designSystem.Typography)`
323
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
324
+ letter-spacing: 0.04em;
325
+ font-variant-numeric: tabular-nums;
326
+ `;
327
+ const Bar = ({ value, max, color }) => {
328
+ const w = max ? Math.min(100, Math.round(value / max * 100)) : 0;
329
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { background: "neutral150", hasRadius: true, style: { height: 8, overflow: "hidden" }, children: /* @__PURE__ */ jsxRuntime.jsx(
330
+ designSystem.Box,
331
+ {
332
+ style: {
333
+ width: `${w}%`,
334
+ height: "100%",
335
+ borderRadius: 999,
336
+ background: color ? `linear-gradient(90deg, ${color}, ${color}cc)` : "linear-gradient(90deg, #FF7900, #FACC15)",
337
+ transition: `width 700ms ${SPRING}`
338
+ }
339
+ }
340
+ ) });
341
+ };
342
+ const introKey = (k) => `tcg.intro.${k}`;
343
+ const recallCollapsed = (k) => {
344
+ try {
345
+ return window.localStorage.getItem(introKey(k)) === "1";
346
+ } catch {
347
+ return false;
348
+ }
349
+ };
350
+ const rememberCollapsed = (k, v) => {
351
+ try {
352
+ if (v) window.localStorage.setItem(introKey(k), "1");
353
+ else window.localStorage.removeItem(introKey(k));
354
+ } catch {
355
+ }
356
+ };
357
+ const IntroShell = styledComponents.styled.div`
358
+ ${reveal};
359
+ position: relative;
360
+ overflow: hidden;
361
+ border-radius: 2rem;
362
+ padding: 0.5rem;
363
+ background: linear-gradient(135deg, #eef0ff 0%, #f6f6f9 55%, #fff4ea 100%);
364
+ box-shadow: 0 18px 40px -28px rgba(73, 69, 255, 0.35);
365
+ `;
366
+ const IntroCore = styledComponents.styled.div`
367
+ position: relative;
368
+ border-radius: calc(2rem - 0.5rem);
369
+ background: rgba(255, 255, 255, 0.72);
370
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);
371
+ padding: ${({ $collapsed }) => $collapsed ? "1rem 1.6rem" : "2.4rem 2.8rem"};
372
+ transition: padding 420ms ${SPRING};
373
+ `;
374
+ const StepNo = styledComponents.styled.span`
375
+ display: inline-flex;
376
+ align-items: center;
377
+ justify-content: center;
378
+ width: 2.4rem;
379
+ height: 2.4rem;
380
+ border-radius: 50%;
381
+ flex-shrink: 0;
382
+ font-size: 1.1rem;
383
+ font-weight: 700;
384
+ background: ${({ theme }) => theme.colors.neutral800};
385
+ color: ${({ theme }) => theme.colors.neutral0};
386
+ `;
387
+ const Intro = ({ id, title, body = [], steps = [], links = [] }) => {
388
+ const navigate = reactRouterDom.useNavigate();
389
+ const [collapsed, setCollapsed] = react.useState(() => recallCollapsed(id));
390
+ const toggle = () => {
391
+ rememberCollapsed(id, !collapsed);
392
+ setCollapsed(!collapsed);
393
+ };
394
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { marginBottom: 7, children: /* @__PURE__ */ jsxRuntime.jsx(IntroShell, { children: /* @__PURE__ */ jsxRuntime.jsxs(IntroCore, { $collapsed: collapsed, children: [
395
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "space-between", alignItems: "center", gap: 4, children: [
396
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 3, alignItems: "center", children: [
397
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { style: { color: "#4945FF", display: "flex" }, children: /* @__PURE__ */ jsxRuntime.jsx(icons.Lightbulb, { width: "1.8rem", height: "1.8rem" }) }),
398
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { children: [
399
+ collapsed ? null : /* @__PURE__ */ jsxRuntime.jsx(Eyebrow, { children: "Guide" }),
400
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: collapsed ? "omega" : "beta", fontWeight: "bold", tag: "h2", children: title })
401
+ ] })
402
+ ] }),
403
+ /* @__PURE__ */ jsxRuntime.jsx(
404
+ designSystem.Button,
405
+ {
406
+ variant: "ghost",
407
+ size: "S",
408
+ onClick: toggle,
409
+ endIcon: collapsed ? /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronDown, {}) : /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronUp, {}),
410
+ children: collapsed ? "Show the guide" : "Hide"
411
+ }
412
+ )
413
+ ] }),
414
+ collapsed ? null : /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 10, alignItems: "flex-start", paddingTop: 4, wrap: "wrap", children: [
415
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "2 1 360px", minWidth: 0 }, children: [
416
+ body.map((p, i) => /* @__PURE__ */ jsxRuntime.jsx(
417
+ designSystem.Typography,
418
+ {
419
+ tag: "p",
420
+ textColor: "neutral700",
421
+ paddingBottom: 3,
422
+ style: { maxWidth: "68ch", lineHeight: 1.6 },
423
+ children: p
424
+ },
425
+ i
426
+ )),
427
+ links.length ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { gap: 3, paddingTop: 2, wrap: "wrap", children: links.map((l) => /* @__PURE__ */ jsxRuntime.jsx(Pill, { tone: "light", onClick: () => navigate(l.to), children: l.label }, l.to)) }) : null
428
+ ] }),
429
+ steps.length ? /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: "1 1 260px", minWidth: 0 }, children: [
430
+ /* @__PURE__ */ jsxRuntime.jsx(Eyebrow, { paddingBottom: 3, children: "How to" }),
431
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 3, children: steps.map((s, i) => {
432
+ const label = typeof s === "string" ? s : s.label;
433
+ const to = typeof s === "string" ? null : s.to;
434
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 3, alignItems: "center", children: [
435
+ /* @__PURE__ */ jsxRuntime.jsx(StepNo, { children: i + 1 }),
436
+ to ? /* @__PURE__ */ jsxRuntime.jsx(
437
+ designSystem.Button,
438
+ {
439
+ variant: "ghost",
440
+ size: "S",
441
+ onClick: () => navigate(to),
442
+ style: { padding: 0 },
443
+ children: label
444
+ }
445
+ ) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: label })
446
+ ] }, i);
447
+ }) })
448
+ ] }) : null
449
+ ] })
450
+ ] }) }) });
451
+ };
452
+ const StepRow = styledComponents.styled(designSystem.Flex)`
453
+ border-top: 1px solid ${({ theme }) => theme.colors.neutral150};
454
+ &:first-child {
455
+ border-top: none;
456
+ }
457
+ `;
458
+ const Circle = styledComponents.styled.span`
459
+ display: inline-flex;
460
+ width: 2.4rem;
461
+ height: 2.4rem;
462
+ border-radius: 50%;
463
+ border: 2px solid ${({ theme }) => theme.colors.neutral300};
464
+ flex-shrink: 0;
465
+ `;
466
+ const SetupSteps = ({ steps }) => {
467
+ const navigate = reactRouterDom.useNavigate();
468
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", alignItems: "stretch", children: steps.map((s, i) => /* @__PURE__ */ jsxRuntime.jsxs(StepRow, { gap: 4, alignItems: "center", paddingTop: 4, paddingBottom: 4, children: [
469
+ s.done ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { style: { color: "#328048", display: "flex" }, children: /* @__PURE__ */ jsxRuntime.jsx(icons.CheckCircle, { width: "2.4rem", height: "2.4rem" }) }) : /* @__PURE__ */ jsxRuntime.jsx(Circle, {}),
470
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: { flex: 1, minWidth: 0 }, children: [
471
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, alignItems: "center", children: [
472
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontWeight: "semiBold", textColor: s.done ? "neutral600" : "neutral800", children: s.title }),
473
+ s.count ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { size: "S", children: s.count }) : null
474
+ ] }),
475
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", tag: "p", children: s.help })
476
+ ] }),
477
+ s.to ? /* @__PURE__ */ jsxRuntime.jsx(
478
+ designSystem.Button,
479
+ {
480
+ size: "S",
481
+ variant: s.done ? "tertiary" : "secondary",
482
+ onClick: () => navigate(s.to),
483
+ children: s.done ? "Open" : s.cta ?? "Do it"
484
+ }
485
+ ) : null
486
+ ] }, i)) });
487
+ };
488
+ const BASE = `/${index.PLUGIN_ID}`;
489
+ const TAG = Object.freeze({
490
+ DASH: "TcgDashboard",
491
+ SEASON: "TcgSeason",
492
+ CARD: "TcgCard",
493
+ PACK: "TcgPack",
494
+ PLAYER: "TcgPlayer",
495
+ REDEMPTION: "TcgRedemption",
496
+ DROP: "TcgDrop",
497
+ BOOST: "TcgBoost",
498
+ REWARD: "TcgReward",
499
+ SET: "TcgSet",
500
+ BADGE: "TcgBadge"
501
+ });
502
+ const unwrap = (res) => res && typeof res === "object" && "data" in res ? res.data : res;
503
+ const qs = (params = {}) => {
504
+ const clean = Object.fromEntries(
505
+ Object.entries(params).filter(([, v]) => v !== void 0 && v !== null && v !== "")
506
+ );
507
+ const s = new URLSearchParams(clean).toString();
508
+ return s ? `?${s}` : "";
509
+ };
510
+ const enc = encodeURIComponent;
511
+ const api = admin.adminApi.enhanceEndpoints({ addTagTypes: Object.values(TAG) }).injectEndpoints({
512
+ endpoints: (b) => ({
513
+ // dashboard
514
+ getDashboard: b.query({
515
+ query: (season) => `${BASE}/dashboard${qs({ season })}`,
516
+ transformResponse: unwrap,
517
+ providesTags: [TAG.DASH]
518
+ }),
519
+ getLeaderboard: b.query({
520
+ query: ({ season, limit }) => `${BASE}/seasons/${enc(season)}/leaderboard${qs({ limit })}`,
521
+ transformResponse: unwrap,
522
+ providesTags: [TAG.DASH]
523
+ }),
524
+ getPulls: b.query({
525
+ query: ({ season, ...p }) => `${BASE}/seasons/${enc(season)}/pulls${qs(p)}`,
526
+ providesTags: [TAG.DASH]
527
+ }),
528
+ // seasons
529
+ getSeasons: b.query({
530
+ query: () => `${BASE}/seasons`,
531
+ transformResponse: unwrap,
532
+ providesTags: [TAG.SEASON]
533
+ }),
534
+ getSeasonDefaults: b.query({
535
+ query: () => `${BASE}/seasons/defaults`,
536
+ transformResponse: unwrap
537
+ }),
538
+ getSeason: b.query({
539
+ query: (ref) => `${BASE}/seasons/${enc(ref)}`,
540
+ transformResponse: unwrap,
541
+ providesTags: (_r, _e, ref) => [{ type: TAG.SEASON, id: ref }, TAG.SEASON]
542
+ }),
543
+ createSeason: b.mutation({
544
+ query: (data) => ({ url: `${BASE}/seasons`, method: "POST", data: { data } }),
545
+ invalidatesTags: [TAG.SEASON, TAG.DASH]
546
+ }),
547
+ updateSeason: b.mutation({
548
+ query: ({ ref, data }) => ({
549
+ url: `${BASE}/seasons/${enc(ref)}`,
550
+ method: "PUT",
551
+ data: { data }
552
+ }),
553
+ invalidatesTags: [TAG.SEASON, TAG.DASH]
554
+ }),
555
+ deleteSeason: b.mutation({
556
+ query: (ref) => ({ url: `${BASE}/seasons/${enc(ref)}`, method: "DELETE" }),
557
+ invalidatesTags: [TAG.SEASON, TAG.DASH]
558
+ }),
559
+ // cards
560
+ getCards: b.query({
561
+ query: ({ season, ...p }) => `${BASE}/seasons/${enc(season)}/cards${qs(p)}`,
562
+ providesTags: [TAG.CARD]
563
+ }),
564
+ createCard: b.mutation({
565
+ query: ({ season, data }) => ({
566
+ url: `${BASE}/seasons/${enc(season)}/cards`,
567
+ method: "POST",
568
+ data: { data }
569
+ }),
570
+ invalidatesTags: [TAG.CARD, TAG.SEASON, TAG.DASH]
571
+ }),
572
+ updateCard: b.mutation({
573
+ query: ({ season, id, data }) => ({
574
+ url: `${BASE}/seasons/${enc(season)}/cards/${enc(id)}`,
575
+ method: "PUT",
576
+ data: { data }
577
+ }),
578
+ invalidatesTags: [TAG.CARD, TAG.PACK]
579
+ }),
580
+ deleteCard: b.mutation({
581
+ query: ({ season, id }) => ({
582
+ url: `${BASE}/seasons/${enc(season)}/cards/${enc(id)}`,
583
+ method: "DELETE"
584
+ }),
585
+ invalidatesTags: [TAG.CARD, TAG.PACK, TAG.SEASON]
586
+ }),
587
+ // packs
588
+ getPacks: b.query({
589
+ query: (season) => `${BASE}/seasons/${enc(season)}/packs`,
590
+ transformResponse: unwrap,
591
+ providesTags: [TAG.PACK]
592
+ }),
593
+ getPack: b.query({
594
+ query: ({ season, id }) => `${BASE}/seasons/${enc(season)}/packs/${enc(id)}`,
595
+ transformResponse: unwrap,
596
+ providesTags: (_r, _e, { id }) => [{ type: TAG.PACK, id }, TAG.PACK]
597
+ }),
598
+ createPack: b.mutation({
599
+ query: ({ season, data }) => ({
600
+ url: `${BASE}/seasons/${enc(season)}/packs`,
601
+ method: "POST",
602
+ data: { data }
603
+ }),
604
+ invalidatesTags: [TAG.PACK, TAG.SEASON, TAG.DASH]
605
+ }),
606
+ updatePack: b.mutation({
607
+ query: ({ season, id, data }) => ({
608
+ url: `${BASE}/seasons/${enc(season)}/packs/${enc(id)}`,
609
+ method: "PUT",
610
+ data: { data }
611
+ }),
612
+ invalidatesTags: [TAG.PACK]
613
+ }),
614
+ deletePack: b.mutation({
615
+ query: ({ season, id }) => ({
616
+ url: `${BASE}/seasons/${enc(season)}/packs/${enc(id)}`,
617
+ method: "DELETE"
618
+ }),
619
+ invalidatesTags: [TAG.PACK, TAG.SEASON]
620
+ }),
621
+ setPackCards: b.mutation({
622
+ query: ({ season, id, cards }) => ({
623
+ url: `${BASE}/seasons/${enc(season)}/packs/${enc(id)}/cards`,
624
+ method: "PUT",
625
+ data: { data: { cards } }
626
+ }),
627
+ invalidatesTags: [TAG.PACK]
628
+ }),
629
+ packQR: b.mutation({
630
+ query: ({ season, id }) => ({
631
+ url: `${BASE}/seasons/${enc(season)}/packs/${enc(id)}/qr`,
632
+ method: "POST",
633
+ data: {}
634
+ }),
635
+ transformResponse: unwrap
636
+ }),
637
+ rotatePackSecret: b.mutation({
638
+ query: ({ season, id }) => ({
639
+ url: `${BASE}/seasons/${enc(season)}/packs/${enc(id)}/rotate-secret`,
640
+ method: "POST",
641
+ data: {}
642
+ })
643
+ }),
644
+ simulatePack: b.query({
645
+ query: ({ season, id, n, drop }) => `${BASE}/seasons/${enc(season)}/packs/${enc(id)}/simulate${qs({ n, drop })}`,
646
+ transformResponse: unwrap
647
+ }),
648
+ // drops
649
+ getDrops: b.query({
650
+ query: ({ season, id }) => `${BASE}/seasons/${enc(season)}/packs/${enc(id)}/drops`,
651
+ transformResponse: unwrap,
652
+ providesTags: [TAG.DROP]
653
+ }),
654
+ getDrop: b.query({
655
+ query: ({ season, id, dropId }) => `${BASE}/seasons/${enc(season)}/packs/${enc(id)}/drops/${enc(dropId)}`,
656
+ transformResponse: unwrap,
657
+ providesTags: (_r, _e, { dropId }) => [{ type: TAG.DROP, id: dropId }, TAG.DROP]
658
+ }),
659
+ createDrop: b.mutation({
660
+ query: ({ season, id, data }) => ({
661
+ url: `${BASE}/seasons/${enc(season)}/packs/${enc(id)}/drops`,
662
+ method: "POST",
663
+ data: { data }
664
+ }),
665
+ invalidatesTags: [TAG.DROP, TAG.PACK]
666
+ }),
667
+ updateDrop: b.mutation({
668
+ query: ({ season, id, dropId, data }) => ({
669
+ url: `${BASE}/seasons/${enc(season)}/packs/${enc(id)}/drops/${enc(dropId)}`,
670
+ method: "PUT",
671
+ data: { data }
672
+ }),
673
+ invalidatesTags: [TAG.DROP, TAG.PACK]
674
+ }),
675
+ deleteDrop: b.mutation({
676
+ query: ({ season, id, dropId }) => ({
677
+ url: `${BASE}/seasons/${enc(season)}/packs/${enc(id)}/drops/${enc(dropId)}`,
678
+ method: "DELETE"
679
+ }),
680
+ invalidatesTags: [TAG.DROP, TAG.PACK]
681
+ }),
682
+ setDropCards: b.mutation({
683
+ query: ({ season, id, dropId, cards }) => ({
684
+ url: `${BASE}/seasons/${enc(season)}/packs/${enc(id)}/drops/${enc(dropId)}/cards`,
685
+ method: "PUT",
686
+ data: { data: { cards } }
687
+ }),
688
+ invalidatesTags: [TAG.DROP, TAG.CARD]
689
+ }),
690
+ dropQR: b.mutation({
691
+ query: ({ season, id, dropId }) => ({
692
+ url: `${BASE}/seasons/${enc(season)}/packs/${enc(id)}/drops/${enc(dropId)}/qr`,
693
+ method: "POST",
694
+ data: {}
695
+ }),
696
+ transformResponse: unwrap
697
+ }),
698
+ rotateDropSecret: b.mutation({
699
+ query: ({ season, id, dropId }) => ({
700
+ url: `${BASE}/seasons/${enc(season)}/packs/${enc(id)}/drops/${enc(dropId)}/rotate-secret`,
701
+ method: "POST",
702
+ data: {}
703
+ })
704
+ }),
705
+ // boosts
706
+ getBoosts: b.query({
707
+ query: (season) => `${BASE}/seasons/${enc(season)}/boosts`,
708
+ transformResponse: unwrap,
709
+ providesTags: [TAG.BOOST]
710
+ }),
711
+ createBoost: b.mutation({
712
+ query: ({ season, data }) => ({
713
+ url: `${BASE}/seasons/${enc(season)}/boosts`,
714
+ method: "POST",
715
+ data: { data }
716
+ }),
717
+ invalidatesTags: [TAG.BOOST, TAG.DASH]
718
+ }),
719
+ updateBoost: b.mutation({
720
+ query: ({ season, id, data }) => ({
721
+ url: `${BASE}/seasons/${enc(season)}/boosts/${enc(id)}`,
722
+ method: "PUT",
723
+ data: { data }
724
+ }),
725
+ invalidatesTags: [TAG.BOOST, TAG.DASH]
726
+ }),
727
+ deleteBoost: b.mutation({
728
+ query: ({ season, id }) => ({
729
+ url: `${BASE}/seasons/${enc(season)}/boosts/${enc(id)}`,
730
+ method: "DELETE"
731
+ }),
732
+ invalidatesTags: [TAG.BOOST, TAG.DASH]
733
+ }),
734
+ // rewards
735
+ getRewards: b.query({
736
+ query: (season) => `${BASE}/seasons/${enc(season)}/rewards`,
737
+ transformResponse: unwrap,
738
+ providesTags: [TAG.REWARD]
739
+ }),
740
+ createReward: b.mutation({
741
+ query: ({ season, data }) => ({
742
+ url: `${BASE}/seasons/${enc(season)}/rewards`,
743
+ method: "POST",
744
+ data: { data }
745
+ }),
746
+ invalidatesTags: [TAG.REWARD, TAG.DASH]
747
+ }),
748
+ updateReward: b.mutation({
749
+ query: ({ season, id, data }) => ({
750
+ url: `${BASE}/seasons/${enc(season)}/rewards/${enc(id)}`,
751
+ method: "PUT",
752
+ data: { data }
753
+ }),
754
+ invalidatesTags: [TAG.REWARD, TAG.DASH]
755
+ }),
756
+ deleteReward: b.mutation({
757
+ query: ({ season, id }) => ({
758
+ url: `${BASE}/seasons/${enc(season)}/rewards/${enc(id)}`,
759
+ method: "DELETE"
760
+ }),
761
+ invalidatesTags: [TAG.REWARD]
762
+ }),
763
+ // sets & badges
764
+ getSets: b.query({
765
+ query: (season) => `${BASE}/seasons/${enc(season)}/sets`,
766
+ transformResponse: unwrap,
767
+ providesTags: [TAG.SET]
768
+ }),
769
+ createSet: b.mutation({
770
+ query: ({ season, data }) => ({
771
+ url: `${BASE}/seasons/${enc(season)}/sets`,
772
+ method: "POST",
773
+ data: { data }
774
+ }),
775
+ invalidatesTags: [TAG.SET]
776
+ }),
777
+ updateSet: b.mutation({
778
+ query: ({ season, id, data }) => ({
779
+ url: `${BASE}/seasons/${enc(season)}/sets/${enc(id)}`,
780
+ method: "PUT",
781
+ data: { data }
782
+ }),
783
+ invalidatesTags: [TAG.SET]
784
+ }),
785
+ deleteSet: b.mutation({
786
+ query: ({ season, id }) => ({
787
+ url: `${BASE}/seasons/${enc(season)}/sets/${enc(id)}`,
788
+ method: "DELETE"
789
+ }),
790
+ invalidatesTags: [TAG.SET]
791
+ }),
792
+ getBadges: b.query({
793
+ query: (season) => `${BASE}/seasons/${enc(season)}/badges`,
794
+ transformResponse: unwrap,
795
+ providesTags: [TAG.BADGE]
796
+ }),
797
+ createBadge: b.mutation({
798
+ query: ({ season, data }) => ({
799
+ url: `${BASE}/seasons/${enc(season)}/badges`,
800
+ method: "POST",
801
+ data: { data }
802
+ }),
803
+ invalidatesTags: [TAG.BADGE]
804
+ }),
805
+ updateBadge: b.mutation({
806
+ query: ({ season, id, data }) => ({
807
+ url: `${BASE}/seasons/${enc(season)}/badges/${enc(id)}`,
808
+ method: "PUT",
809
+ data: { data }
810
+ }),
811
+ invalidatesTags: [TAG.BADGE]
812
+ }),
813
+ deleteBadge: b.mutation({
814
+ query: ({ season, id }) => ({
815
+ url: `${BASE}/seasons/${enc(season)}/badges/${enc(id)}`,
816
+ method: "DELETE"
817
+ }),
818
+ invalidatesTags: [TAG.BADGE]
819
+ }),
820
+ seedBadges: b.mutation({
821
+ query: (season) => ({
822
+ url: `${BASE}/seasons/${enc(season)}/badges/seed`,
823
+ method: "POST",
824
+ data: {}
825
+ }),
826
+ invalidatesTags: [TAG.BADGE]
827
+ }),
828
+ // players
829
+ getPlayers: b.query({ query: (p) => `${BASE}/players${qs(p)}`, providesTags: [TAG.PLAYER] }),
830
+ getPlayer: b.query({
831
+ query: ({ id, season }) => `${BASE}/players/${enc(id)}${qs({ season })}`,
832
+ transformResponse: unwrap,
833
+ providesTags: (_r, _e, { id }) => [{ type: TAG.PLAYER, id }]
834
+ }),
835
+ setPlayerActive: b.mutation({
836
+ query: ({ id, isActive }) => ({
837
+ url: `${BASE}/players/${enc(id)}/active`,
838
+ method: "PUT",
839
+ data: { data: { isActive } }
840
+ }),
841
+ invalidatesTags: [TAG.PLAYER]
842
+ }),
843
+ grantCard: b.mutation({
844
+ query: ({ id, cardId }) => ({
845
+ url: `${BASE}/players/${enc(id)}/grant`,
846
+ method: "POST",
847
+ data: { data: { cardId } }
848
+ }),
849
+ invalidatesTags: [TAG.PLAYER, TAG.DASH]
850
+ }),
851
+ // redemptions
852
+ getRedemptions: b.query({
853
+ query: (p) => `${BASE}/redemptions${qs(p)}`,
854
+ providesTags: [TAG.REDEMPTION]
855
+ }),
856
+ getRedemption: b.query({
857
+ query: (code) => `${BASE}/redemptions/${enc(code)}`,
858
+ transformResponse: unwrap,
859
+ providesTags: (_r, _e, code) => [{ type: TAG.REDEMPTION, id: code }]
860
+ }),
861
+ fulfillRedemption: b.mutation({
862
+ query: ({ code, note }) => ({
863
+ url: `${BASE}/redemptions/${enc(code)}/fulfill`,
864
+ method: "POST",
865
+ data: { data: { note } }
866
+ }),
867
+ invalidatesTags: [TAG.REDEMPTION, TAG.DASH]
868
+ }),
869
+ cancelRedemption: b.mutation({
870
+ query: ({ code, note }) => ({
871
+ url: `${BASE}/redemptions/${enc(code)}/cancel`,
872
+ method: "POST",
873
+ data: { data: { note } }
874
+ }),
875
+ invalidatesTags: [TAG.REDEMPTION, TAG.DASH, TAG.PLAYER]
876
+ }),
877
+ // settings
878
+ getSettings: b.query({ query: () => `${BASE}/settings`, transformResponse: unwrap })
879
+ })
880
+ });
881
+ const {
882
+ useGetDashboardQuery,
883
+ useGetLeaderboardQuery,
884
+ useGetPullsQuery,
885
+ useGetSeasonsQuery,
886
+ useGetSeasonDefaultsQuery,
887
+ useGetSeasonQuery,
888
+ useCreateSeasonMutation,
889
+ useUpdateSeasonMutation,
890
+ useDeleteSeasonMutation,
891
+ useGetCardsQuery,
892
+ useCreateCardMutation,
893
+ useUpdateCardMutation,
894
+ useDeleteCardMutation,
895
+ useGetPacksQuery,
896
+ useGetPackQuery,
897
+ useCreatePackMutation,
898
+ useUpdatePackMutation,
899
+ useDeletePackMutation,
900
+ useSetPackCardsMutation,
901
+ usePackQRMutation,
902
+ useRotatePackSecretMutation,
903
+ useLazySimulatePackQuery,
904
+ useGetDropsQuery,
905
+ useGetDropQuery,
906
+ useCreateDropMutation,
907
+ useUpdateDropMutation,
908
+ useDeleteDropMutation,
909
+ useSetDropCardsMutation,
910
+ useDropQRMutation,
911
+ useRotateDropSecretMutation,
912
+ useGetBoostsQuery,
913
+ useCreateBoostMutation,
914
+ useUpdateBoostMutation,
915
+ useDeleteBoostMutation,
916
+ useGetRewardsQuery,
917
+ useCreateRewardMutation,
918
+ useUpdateRewardMutation,
919
+ useDeleteRewardMutation,
920
+ useGetSetsQuery,
921
+ useCreateSetMutation,
922
+ useUpdateSetMutation,
923
+ useDeleteSetMutation,
924
+ useGetBadgesQuery,
925
+ useCreateBadgeMutation,
926
+ useUpdateBadgeMutation,
927
+ useDeleteBadgeMutation,
928
+ useSeedBadgesMutation,
929
+ useGetPlayersQuery,
930
+ useGetPlayerQuery,
931
+ useSetPlayerActiveMutation,
932
+ useGrantCardMutation,
933
+ useGetRedemptionsQuery,
934
+ useLazyGetRedemptionQuery,
935
+ useFulfillRedemptionMutation,
936
+ useCancelRedemptionMutation,
937
+ useGetSettingsQuery
938
+ } = api;
939
+ exports.Bar = Bar;
940
+ exports.Card = Card;
941
+ exports.Empty = Empty;
942
+ exports.Eyebrow = Eyebrow;
943
+ exports.Intro = Intro;
944
+ exports.Mono = Mono;
945
+ exports.Pill = Pill;
946
+ exports.RarityBadge = RarityBadge;
947
+ exports.SPRING = SPRING;
948
+ exports.Section = Section;
949
+ exports.SetupSteps = SetupSteps;
950
+ exports.Sparkline = Sparkline;
951
+ exports.StatTile = StatTile;
952
+ exports.StatusBadge = StatusBadge;
953
+ exports.errorMessage = errorMessage;
954
+ exports.fmtDate = fmtDate;
955
+ exports.fmtDateTime = fmtDateTime;
956
+ exports.fmtNumber = fmtNumber;
957
+ exports.rarityOf = rarityOf;
958
+ exports.timeAgo = timeAgo;
959
+ exports.useCancelRedemptionMutation = useCancelRedemptionMutation;
960
+ exports.useCreateBadgeMutation = useCreateBadgeMutation;
961
+ exports.useCreateBoostMutation = useCreateBoostMutation;
962
+ exports.useCreateCardMutation = useCreateCardMutation;
963
+ exports.useCreateDropMutation = useCreateDropMutation;
964
+ exports.useCreatePackMutation = useCreatePackMutation;
965
+ exports.useCreateRewardMutation = useCreateRewardMutation;
966
+ exports.useCreateSeasonMutation = useCreateSeasonMutation;
967
+ exports.useCreateSetMutation = useCreateSetMutation;
968
+ exports.useDeleteBadgeMutation = useDeleteBadgeMutation;
969
+ exports.useDeleteBoostMutation = useDeleteBoostMutation;
970
+ exports.useDeleteCardMutation = useDeleteCardMutation;
971
+ exports.useDeleteDropMutation = useDeleteDropMutation;
972
+ exports.useDeletePackMutation = useDeletePackMutation;
973
+ exports.useDeleteRewardMutation = useDeleteRewardMutation;
974
+ exports.useDeleteSeasonMutation = useDeleteSeasonMutation;
975
+ exports.useDeleteSetMutation = useDeleteSetMutation;
976
+ exports.useDropQRMutation = useDropQRMutation;
977
+ exports.useFulfillRedemptionMutation = useFulfillRedemptionMutation;
978
+ exports.useGetBadgesQuery = useGetBadgesQuery;
979
+ exports.useGetBoostsQuery = useGetBoostsQuery;
980
+ exports.useGetCardsQuery = useGetCardsQuery;
981
+ exports.useGetDashboardQuery = useGetDashboardQuery;
982
+ exports.useGetDropQuery = useGetDropQuery;
983
+ exports.useGetLeaderboardQuery = useGetLeaderboardQuery;
984
+ exports.useGetPackQuery = useGetPackQuery;
985
+ exports.useGetPacksQuery = useGetPacksQuery;
986
+ exports.useGetPlayerQuery = useGetPlayerQuery;
987
+ exports.useGetPlayersQuery = useGetPlayersQuery;
988
+ exports.useGetPullsQuery = useGetPullsQuery;
989
+ exports.useGetRedemptionsQuery = useGetRedemptionsQuery;
990
+ exports.useGetRewardsQuery = useGetRewardsQuery;
991
+ exports.useGetSeasonDefaultsQuery = useGetSeasonDefaultsQuery;
992
+ exports.useGetSeasonQuery = useGetSeasonQuery;
993
+ exports.useGetSeasonsQuery = useGetSeasonsQuery;
994
+ exports.useGetSetsQuery = useGetSetsQuery;
995
+ exports.useGetSettingsQuery = useGetSettingsQuery;
996
+ exports.useGrantCardMutation = useGrantCardMutation;
997
+ exports.useLazyGetRedemptionQuery = useLazyGetRedemptionQuery;
998
+ exports.useLazySimulatePackQuery = useLazySimulatePackQuery;
999
+ exports.useRotateDropSecretMutation = useRotateDropSecretMutation;
1000
+ exports.useSeedBadgesMutation = useSeedBadgesMutation;
1001
+ exports.useSetDropCardsMutation = useSetDropCardsMutation;
1002
+ exports.useSetPackCardsMutation = useSetPackCardsMutation;
1003
+ exports.useSetPlayerActiveMutation = useSetPlayerActiveMutation;
1004
+ exports.useUpdateBadgeMutation = useUpdateBadgeMutation;
1005
+ exports.useUpdateBoostMutation = useUpdateBoostMutation;
1006
+ exports.useUpdateCardMutation = useUpdateCardMutation;
1007
+ exports.useUpdateDropMutation = useUpdateDropMutation;
1008
+ exports.useUpdatePackMutation = useUpdatePackMutation;
1009
+ exports.useUpdateRewardMutation = useUpdateRewardMutation;
1010
+ exports.useUpdateSeasonMutation = useUpdateSeasonMutation;
1011
+ exports.useUpdateSetMutation = useUpdateSetMutation;