@sonatel-os/strapi-plugin-tcg 0.2.0 → 0.3.1
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/README.md +3 -2
- package/dist/_chunks/{App-DvvgeCGs.js → App-C3L5FTNZ.js} +27 -6
- package/dist/_chunks/{App-j9qu2-To.mjs → App-DvkOruFZ.mjs} +27 -6
- package/dist/_chunks/{SettingsPage-Bxa_71iT.js → SettingsPage-BxmcGJ5s.js} +2 -2
- package/dist/_chunks/{SettingsPage-BcJXkWnW.mjs → SettingsPage-SjgoOH4S.mjs} +2 -2
- package/dist/_chunks/{api-Aney2S9e.js → api-BqmNHByN.js} +1 -1
- package/dist/_chunks/{api-DACN35Y5.mjs → api-Clm2RMWV.mjs} +1 -1
- package/dist/_chunks/{index-DSm3eEtn.mjs → index-CwyVbzVg.mjs} +2 -2
- package/dist/_chunks/{index-DXuaf32J.js → index-DQmN1LMy.js} +2 -2
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/server/index.js +951 -216
- package/dist/server/index.mjs +951 -216
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -16,7 +16,8 @@ It was built to move **Jambaar** (the Dakar 2026 Youth Olympics card game) off i
|
|
|
16
16
|
| **Live** | **Boosts**: multiply the odds of any rarity for a time window, season-wide or on one pack; presets like "Golden hour". Open/sold-out drops, rewards running low. | `GET /live` |
|
|
17
17
|
| **Pulls** | Dashboard rarity split vs target, audit log with seed, roll, **odds snapshot**, **pity** flag and **mint number**. | `POST /pulls/scan`, `GET /pulls/history`, `GET /pulls/cooldowns` |
|
|
18
18
|
| **Collection** | Per-player view with completion, rank, sets, badges, mint numbers. | `GET /collection`, `GET /collection/stats` |
|
|
19
|
-
| **
|
|
19
|
+
| **Score & rank** | Rarity-weighted, not a card count: every distinct card is worth its own `score` (admin, inside its rarity's band) or the midpoint of the band (defaults: common 20 · rare 45 · epic 70 · legendary 92); every completed set adds `limits.setCompletionBonus` (50). Standings sort by score, then distinct cards, then total cards. `GET /collection/stats` returns `globalRank`, `score`, `scoreBreakdown`; cards carry `points`. | `GET /collection/stats`, admin `GET /seasons/:season/leaderboard` |
|
|
20
|
+
| **Trades** | A handshake both players confirm: the initiator's offer (QR) → a receiver joins → proposes cards → the initiator confirms (atomic swap) or declines. Both screens poll `GET /trades/offer/:id` (`status`, `role`, both sides' cards). Counts on the dashboard. | `POST /trades/offer`, `POST /trades/scan`, `GET …/offer/:id`, `…/join`, `…/propose`, `…/confirm`, `…/decline`, `…/reject`, `…/cancel`, `GET /trades/active`, `GET /trades/history` |
|
|
20
21
|
| **Rewards** | **Catalog** with tiers, stock, per-player limit, booth, availability window and a **cost builder**: N cards of a rarity (or at least a rarity), a specific card, a complete set (owned or handed in). | `GET /rewards`, `GET /rewards/eligibility` |
|
|
21
22
|
| **Booth** | Type or scan a redemption code, see the cards and the reward, hand it over or cancel and give the cards back (stock released). | `POST /redemptions`, `GET /redemptions/:id`, `GET /redemptions/history` |
|
|
22
23
|
| **Sets & badges** | **Sets** are collection goals and reward costs. **Badges** are achievements with rules (pulls, rarity pulls, packs visited, streak, completion, mint ≤ N, scanned a drop, set complete…), secret or visible; nine starters seeded per season. | `GET /sets`, `GET /badges` |
|
|
@@ -104,7 +105,7 @@ Clients branch on `code` (see `server/src/constants.js`), never on the French me
|
|
|
104
105
|
|
|
105
106
|
Pulls are deterministic and auditable: `sha256(player:pack:pullNumber:timestamp)` seeds a Mulberry32 PRNG; the first roll picks the rarity from the season's cumulative table, the second picks a card by weight inside that rarity (falling back to the whole pool). Seed, roll, rarity and a verification hash are stored on every pull, and the Audit screen shows them. The Simulate tab runs the same engine 2 000 times against a pack without writing anything.
|
|
106
107
|
|
|
107
|
-
QR tokens are HMAC-signed (`
|
|
108
|
+
QR tokens are HMAC-signed. A **static** drop code (`s.<drop>.<sig>`, the printed poster) never expires and is bounded per player by the drop's cooldown and caps. A **rotating** drop code (`d.<drop>.<nonce>.<exp>.<sig>`, the booth screen) is valid until it rotates and every player may scan it **once** — the ledger key is nonce + player, so a crowd around one screen all get their card; the cooldown is the player's, not the code's. Trade tokens burn their nonce globally. Consumed nonces live in `tcg_nonces` so replay protection works across restarts and pods; expired nonces and trade offers are swept every minute. A drop can hand out several cards per scan (`cardsPerPull`, 1–10): one scan counts once against the cooldown and the daily limits, every card is minted and recorded (`isExtra` on the extra pulls), and the response carries `cards[]` next to the first `card`.
|
|
108
109
|
|
|
109
110
|
## Permissions
|
|
110
111
|
|
|
@@ -7,9 +7,9 @@ const admin = require("@strapi/strapi/admin");
|
|
|
7
7
|
const reactRouterDom = require("react-router-dom");
|
|
8
8
|
const reactIntl = require("react-intl");
|
|
9
9
|
const styledComponents = require("styled-components");
|
|
10
|
-
const api = require("./api-
|
|
10
|
+
const api = require("./api-BqmNHByN.js");
|
|
11
11
|
const react = require("react");
|
|
12
|
-
const index = require("./index-
|
|
12
|
+
const index = require("./index-DQmN1LMy.js");
|
|
13
13
|
const QR = require("qrcode");
|
|
14
14
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
15
15
|
const QR__default = /* @__PURE__ */ _interopDefault(QR);
|
|
@@ -422,10 +422,17 @@ const Dashboard = () => {
|
|
|
422
422
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: e.player.code })
|
|
423
423
|
] }),
|
|
424
424
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "pi", children: [
|
|
425
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { fontWeight: "bold", children: [
|
|
426
|
+
e.score,
|
|
427
|
+
" pts"
|
|
428
|
+
] }),
|
|
429
|
+
" · ",
|
|
425
430
|
e.uniqueCards,
|
|
426
|
-
"
|
|
431
|
+
" ",
|
|
432
|
+
"unique · ",
|
|
427
433
|
e.totalCards,
|
|
428
|
-
" total"
|
|
434
|
+
" total",
|
|
435
|
+
e.setsCompleted ? ` · ${e.setsCompleted} set${e.setsCompleted > 1 ? "s" : ""}` : ""
|
|
429
436
|
] })
|
|
430
437
|
] }, e.player.id)) })
|
|
431
438
|
}
|
|
@@ -2533,7 +2540,7 @@ const PlayerDetailPage = () => {
|
|
|
2533
2540
|
{
|
|
2534
2541
|
label: "Cards",
|
|
2535
2542
|
value: stats?.totalCards ?? player.totalCards,
|
|
2536
|
-
hint: stats ? `${stats.uniqueCards} unique of ${stats.catalogTotal}` : void 0
|
|
2543
|
+
hint: stats ? `${stats.uniqueCards} unique of ${stats.catalogTotal} · ${stats.score ?? 0} pts` : void 0
|
|
2537
2544
|
}
|
|
2538
2545
|
) }),
|
|
2539
2546
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 3, s: 6, alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3071,6 +3078,7 @@ const DropEditPage = () => {
|
|
|
3071
3078
|
maxScansTotal: drop.maxScansTotal ?? "",
|
|
3072
3079
|
maxScansPerPlayer: drop.maxScansPerPlayer ?? "",
|
|
3073
3080
|
cooldownMs: drop.cooldownMs ?? "",
|
|
3081
|
+
cardsPerPull: drop.cardsPerPull ?? 1,
|
|
3074
3082
|
sortOrder: drop.sortOrder ?? 0
|
|
3075
3083
|
});
|
|
3076
3084
|
if (drop && !pool)
|
|
@@ -3118,6 +3126,7 @@ const DropEditPage = () => {
|
|
|
3118
3126
|
maxScansTotal: num(form.maxScansTotal),
|
|
3119
3127
|
maxScansPerPlayer: num(form.maxScansPerPlayer),
|
|
3120
3128
|
cooldownMs: num(form.cooldownMs),
|
|
3129
|
+
cardsPerPull: Math.min(10, Math.max(1, Number(form.cardsPerPull) || 1)),
|
|
3121
3130
|
sortOrder: Number(form.sortOrder) || 0
|
|
3122
3131
|
}
|
|
3123
3132
|
}).unwrap();
|
|
@@ -3170,7 +3179,7 @@ const DropEditPage = () => {
|
|
|
3170
3179
|
drop.pack?.name,
|
|
3171
3180
|
drop.mode === "static" ? "printed QR" : "rotating QR",
|
|
3172
3181
|
`${drop.scanCount ?? 0} scans`
|
|
3173
|
-
].filter(Boolean).join(" · ") + `${drop.maxScansTotal != null ? ` / ${drop.maxScansTotal}` : ""}`,
|
|
3182
|
+
].filter(Boolean).join(" · ") + `${drop.maxScansTotal != null ? ` / ${drop.maxScansTotal}` : ""}${Number(drop.cardsPerPull) > 1 ? ` · ${drop.cardsPerPull} cards per scan` : ""}`,
|
|
3174
3183
|
intro: {
|
|
3175
3184
|
id: "drop-edit",
|
|
3176
3185
|
title: "Setting up this drop",
|
|
@@ -3407,6 +3416,18 @@ const DropEditPage = () => {
|
|
|
3407
3416
|
}
|
|
3408
3417
|
)
|
|
3409
3418
|
] }) }),
|
|
3419
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 4, s: 12, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { name: "cardsPerPull", style: { width: "100%" }, children: [
|
|
3420
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: "Cards per scan" }),
|
|
3421
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3422
|
+
designSystem.NumberInput,
|
|
3423
|
+
{
|
|
3424
|
+
value: Number(form.cardsPerPull) || 1,
|
|
3425
|
+
onValueChange: (v) => set("cardsPerPull", v ?? 1),
|
|
3426
|
+
disabled: ro
|
|
3427
|
+
}
|
|
3428
|
+
),
|
|
3429
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, { children: "1 to 10. One scan counts once against the cooldown and the daily limits." })
|
|
3430
|
+
] }) }),
|
|
3410
3431
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 12, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { name: "description", style: { width: "100%" }, children: [
|
|
3411
3432
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: "Description (shown to players)" }),
|
|
3412
3433
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -5,9 +5,9 @@ import { Page, useRBAC, useNotification } from "@strapi/strapi/admin";
|
|
|
5
5
|
import { useNavigate, useParams, Routes, Route, NavLink } from "react-router-dom";
|
|
6
6
|
import { useIntl } from "react-intl";
|
|
7
7
|
import { styled } from "styled-components";
|
|
8
|
-
import { u as useGetSeasonsQuery, E as Eyebrow, I as Intro, S as SPRING$1, a as useGetDashboardQuery, b as useGetLeaderboardQuery, c as useGetRewardsQuery, d as useGetSetsQuery, e as useGetBadgesQuery, f as Empty, g as Section, h as SetupSteps, i as StatTile, j as Sparkline, k as fmtNumber, R as RarityBadge, B as Bar, t as timeAgo, C as Card, P as Pill, l as StatusBadge, m as fmtDate, n as useGetSeasonDefaultsQuery, o as useGetSeasonQuery, p as useCreateSeasonMutation, q as useUpdateSeasonMutation, r as useDeleteSeasonMutation, s as errorMessage, v as useGetCardsQuery, w as useCreateCardMutation, x as useUpdateCardMutation, y as useDeleteCardMutation, z as rarityOf, A as useGetPacksQuery, D as useCreatePackMutation, F as useGetPackQuery, G as useUpdatePackMutation, H as useSetPackCardsMutation, J as useDeletePackMutation, K as useCreateDropMutation, L as useLazySimulatePackQuery, M as useGetPlayersQuery, N as fmtDateTime, O as useGetPlayerQuery, Q as useSetPlayerActiveMutation, T as useGrantCardMutation, U as useLazyGetRedemptionQuery, V as useFulfillRedemptionMutation, W as useCancelRedemptionMutation, X as useGetRedemptionsQuery, Y as Mono, Z as useGetPullsQuery, _ as useGetDropQuery, $ as useUpdateDropMutation, a0 as useSetDropCardsMutation, a1 as useDeleteDropMutation, a2 as useRotateDropSecretMutation, a3 as useDropQRMutation, a4 as useGetBoostsQuery, a5 as useCreateBoostMutation, a6 as useUpdateBoostMutation, a7 as useDeleteBoostMutation, a8 as useCreateRewardMutation, a9 as useUpdateRewardMutation, aa as useDeleteRewardMutation, ab as useCreateSetMutation, ac as useUpdateSetMutation, ad as useDeleteSetMutation, ae as useCreateBadgeMutation, af as useUpdateBadgeMutation, ag as useDeleteBadgeMutation, ah as useSeedBadgesMutation } from "./api-
|
|
8
|
+
import { u as useGetSeasonsQuery, E as Eyebrow, I as Intro, S as SPRING$1, a as useGetDashboardQuery, b as useGetLeaderboardQuery, c as useGetRewardsQuery, d as useGetSetsQuery, e as useGetBadgesQuery, f as Empty, g as Section, h as SetupSteps, i as StatTile, j as Sparkline, k as fmtNumber, R as RarityBadge, B as Bar, t as timeAgo, C as Card, P as Pill, l as StatusBadge, m as fmtDate, n as useGetSeasonDefaultsQuery, o as useGetSeasonQuery, p as useCreateSeasonMutation, q as useUpdateSeasonMutation, r as useDeleteSeasonMutation, s as errorMessage, v as useGetCardsQuery, w as useCreateCardMutation, x as useUpdateCardMutation, y as useDeleteCardMutation, z as rarityOf, A as useGetPacksQuery, D as useCreatePackMutation, F as useGetPackQuery, G as useUpdatePackMutation, H as useSetPackCardsMutation, J as useDeletePackMutation, K as useCreateDropMutation, L as useLazySimulatePackQuery, M as useGetPlayersQuery, N as fmtDateTime, O as useGetPlayerQuery, Q as useSetPlayerActiveMutation, T as useGrantCardMutation, U as useLazyGetRedemptionQuery, V as useFulfillRedemptionMutation, W as useCancelRedemptionMutation, X as useGetRedemptionsQuery, Y as Mono, Z as useGetPullsQuery, _ as useGetDropQuery, $ as useUpdateDropMutation, a0 as useSetDropCardsMutation, a1 as useDeleteDropMutation, a2 as useRotateDropSecretMutation, a3 as useDropQRMutation, a4 as useGetBoostsQuery, a5 as useCreateBoostMutation, a6 as useUpdateBoostMutation, a7 as useDeleteBoostMutation, a8 as useCreateRewardMutation, a9 as useUpdateRewardMutation, aa as useDeleteRewardMutation, ab as useCreateSetMutation, ac as useUpdateSetMutation, ad as useDeleteSetMutation, ae as useCreateBadgeMutation, af as useUpdateBadgeMutation, ag as useDeleteBadgeMutation, ah as useSeedBadgesMutation } from "./api-Clm2RMWV.mjs";
|
|
9
9
|
import { useState, useEffect, useMemo, createContext, useContext, useRef } from "react";
|
|
10
|
-
import { P as PLUGIN_ID, a as PERMISSIONS } from "./index-
|
|
10
|
+
import { P as PLUGIN_ID, a as PERMISSIONS } from "./index-CwyVbzVg.mjs";
|
|
11
11
|
import QR from "qrcode";
|
|
12
12
|
const KEY = "tcg.season";
|
|
13
13
|
const SeasonContext = createContext({
|
|
@@ -418,10 +418,17 @@ const Dashboard = () => {
|
|
|
418
418
|
/* @__PURE__ */ jsx(Typography, { variant: "pi", textColor: "neutral600", children: e.player.code })
|
|
419
419
|
] }),
|
|
420
420
|
/* @__PURE__ */ jsxs(Typography, { variant: "pi", children: [
|
|
421
|
+
/* @__PURE__ */ jsxs(Typography, { fontWeight: "bold", children: [
|
|
422
|
+
e.score,
|
|
423
|
+
" pts"
|
|
424
|
+
] }),
|
|
425
|
+
" · ",
|
|
421
426
|
e.uniqueCards,
|
|
422
|
-
"
|
|
427
|
+
" ",
|
|
428
|
+
"unique · ",
|
|
423
429
|
e.totalCards,
|
|
424
|
-
" total"
|
|
430
|
+
" total",
|
|
431
|
+
e.setsCompleted ? ` · ${e.setsCompleted} set${e.setsCompleted > 1 ? "s" : ""}` : ""
|
|
425
432
|
] })
|
|
426
433
|
] }, e.player.id)) })
|
|
427
434
|
}
|
|
@@ -2529,7 +2536,7 @@ const PlayerDetailPage = () => {
|
|
|
2529
2536
|
{
|
|
2530
2537
|
label: "Cards",
|
|
2531
2538
|
value: stats?.totalCards ?? player.totalCards,
|
|
2532
|
-
hint: stats ? `${stats.uniqueCards} unique of ${stats.catalogTotal}` : void 0
|
|
2539
|
+
hint: stats ? `${stats.uniqueCards} unique of ${stats.catalogTotal} · ${stats.score ?? 0} pts` : void 0
|
|
2533
2540
|
}
|
|
2534
2541
|
) }),
|
|
2535
2542
|
/* @__PURE__ */ jsx(Grid.Item, { col: 3, s: 6, alignItems: "stretch", children: /* @__PURE__ */ jsx(
|
|
@@ -3067,6 +3074,7 @@ const DropEditPage = () => {
|
|
|
3067
3074
|
maxScansTotal: drop.maxScansTotal ?? "",
|
|
3068
3075
|
maxScansPerPlayer: drop.maxScansPerPlayer ?? "",
|
|
3069
3076
|
cooldownMs: drop.cooldownMs ?? "",
|
|
3077
|
+
cardsPerPull: drop.cardsPerPull ?? 1,
|
|
3070
3078
|
sortOrder: drop.sortOrder ?? 0
|
|
3071
3079
|
});
|
|
3072
3080
|
if (drop && !pool)
|
|
@@ -3114,6 +3122,7 @@ const DropEditPage = () => {
|
|
|
3114
3122
|
maxScansTotal: num(form.maxScansTotal),
|
|
3115
3123
|
maxScansPerPlayer: num(form.maxScansPerPlayer),
|
|
3116
3124
|
cooldownMs: num(form.cooldownMs),
|
|
3125
|
+
cardsPerPull: Math.min(10, Math.max(1, Number(form.cardsPerPull) || 1)),
|
|
3117
3126
|
sortOrder: Number(form.sortOrder) || 0
|
|
3118
3127
|
}
|
|
3119
3128
|
}).unwrap();
|
|
@@ -3166,7 +3175,7 @@ const DropEditPage = () => {
|
|
|
3166
3175
|
drop.pack?.name,
|
|
3167
3176
|
drop.mode === "static" ? "printed QR" : "rotating QR",
|
|
3168
3177
|
`${drop.scanCount ?? 0} scans`
|
|
3169
|
-
].filter(Boolean).join(" · ") + `${drop.maxScansTotal != null ? ` / ${drop.maxScansTotal}` : ""}`,
|
|
3178
|
+
].filter(Boolean).join(" · ") + `${drop.maxScansTotal != null ? ` / ${drop.maxScansTotal}` : ""}${Number(drop.cardsPerPull) > 1 ? ` · ${drop.cardsPerPull} cards per scan` : ""}`,
|
|
3170
3179
|
intro: {
|
|
3171
3180
|
id: "drop-edit",
|
|
3172
3181
|
title: "Setting up this drop",
|
|
@@ -3403,6 +3412,18 @@ const DropEditPage = () => {
|
|
|
3403
3412
|
}
|
|
3404
3413
|
)
|
|
3405
3414
|
] }) }),
|
|
3415
|
+
/* @__PURE__ */ jsx(Grid.Item, { col: 4, s: 12, children: /* @__PURE__ */ jsxs(Field.Root, { name: "cardsPerPull", style: { width: "100%" }, children: [
|
|
3416
|
+
/* @__PURE__ */ jsx(Field.Label, { children: "Cards per scan" }),
|
|
3417
|
+
/* @__PURE__ */ jsx(
|
|
3418
|
+
NumberInput,
|
|
3419
|
+
{
|
|
3420
|
+
value: Number(form.cardsPerPull) || 1,
|
|
3421
|
+
onValueChange: (v) => set("cardsPerPull", v ?? 1),
|
|
3422
|
+
disabled: ro
|
|
3423
|
+
}
|
|
3424
|
+
),
|
|
3425
|
+
/* @__PURE__ */ jsx(Field.Hint, { children: "1 to 10. One scan counts once against the cooldown and the daily limits." })
|
|
3426
|
+
] }) }),
|
|
3406
3427
|
/* @__PURE__ */ jsx(Grid.Item, { col: 12, children: /* @__PURE__ */ jsxs(Field.Root, { name: "description", style: { width: "100%" }, children: [
|
|
3407
3428
|
/* @__PURE__ */ jsx(Field.Label, { children: "Description (shown to players)" }),
|
|
3408
3429
|
/* @__PURE__ */ jsx(
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const designSystem = require("@strapi/design-system");
|
|
5
5
|
const admin = require("@strapi/strapi/admin");
|
|
6
|
-
const api = require("./api-
|
|
7
|
-
const index = require("./index-
|
|
6
|
+
const api = require("./api-BqmNHByN.js");
|
|
7
|
+
const index = require("./index-DQmN1LMy.js");
|
|
8
8
|
const Row = ({ k, v, hint, tone }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9
9
|
designSystem.Flex,
|
|
10
10
|
{
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Grid, Box, Flex, Typography, Badge } from "@strapi/design-system";
|
|
3
3
|
import { Page, Layouts } from "@strapi/strapi/admin";
|
|
4
|
-
import { ai as useGetSettingsQuery, I as Intro, g as Section, Y as Mono } from "./api-
|
|
5
|
-
import { a as PERMISSIONS } from "./index-
|
|
4
|
+
import { ai as useGetSettingsQuery, I as Intro, g as Section, Y as Mono } from "./api-Clm2RMWV.mjs";
|
|
5
|
+
import { a as PERMISSIONS } from "./index-CwyVbzVg.mjs";
|
|
6
6
|
const Row = ({ k, v, hint, tone }) => /* @__PURE__ */ jsxs(
|
|
7
7
|
Flex,
|
|
8
8
|
{
|
|
@@ -7,7 +7,7 @@ const symbols = require("@strapi/icons/symbols");
|
|
|
7
7
|
const reactRouterDom = require("react-router-dom");
|
|
8
8
|
const styledComponents = require("styled-components");
|
|
9
9
|
const admin = require("@strapi/strapi/admin");
|
|
10
|
-
const index = require("./index-
|
|
10
|
+
const index = require("./index-DQmN1LMy.js");
|
|
11
11
|
const fmtDateTime = (value, locale) => {
|
|
12
12
|
if (!value) return "—";
|
|
13
13
|
try {
|
|
@@ -6,7 +6,7 @@ import { EmptyDocuments } from "@strapi/icons/symbols";
|
|
|
6
6
|
import { useNavigate } from "react-router-dom";
|
|
7
7
|
import { styled, css, keyframes } from "styled-components";
|
|
8
8
|
import { adminApi } from "@strapi/strapi/admin";
|
|
9
|
-
import { P as PLUGIN_ID } from "./index-
|
|
9
|
+
import { P as PLUGIN_ID } from "./index-CwyVbzVg.mjs";
|
|
10
10
|
const fmtDateTime = (value, locale) => {
|
|
11
11
|
if (!value) return "—";
|
|
12
12
|
try {
|
|
@@ -62,7 +62,7 @@ const index = {
|
|
|
62
62
|
intlLabel: { id: `${PLUGIN_ID}.menu.label`, defaultMessage: "TCG" },
|
|
63
63
|
permissions: PERMISSIONS.access,
|
|
64
64
|
Component: async () => {
|
|
65
|
-
const { App } = await import("./App-
|
|
65
|
+
const { App } = await import("./App-DvkOruFZ.mjs");
|
|
66
66
|
return App;
|
|
67
67
|
}
|
|
68
68
|
});
|
|
@@ -75,7 +75,7 @@ const index = {
|
|
|
75
75
|
intlLabel: { id: `${PLUGIN_ID}.settings.link`, defaultMessage: "Configuration" },
|
|
76
76
|
permissions: PERMISSIONS.settingsRead,
|
|
77
77
|
Component: async () => {
|
|
78
|
-
const { SettingsPage } = await import("./SettingsPage-
|
|
78
|
+
const { SettingsPage } = await import("./SettingsPage-SjgoOH4S.mjs");
|
|
79
79
|
return SettingsPage;
|
|
80
80
|
}
|
|
81
81
|
}
|
|
@@ -63,7 +63,7 @@ const index = {
|
|
|
63
63
|
intlLabel: { id: `${PLUGIN_ID}.menu.label`, defaultMessage: "TCG" },
|
|
64
64
|
permissions: PERMISSIONS.access,
|
|
65
65
|
Component: async () => {
|
|
66
|
-
const { App } = await Promise.resolve().then(() => require("./App-
|
|
66
|
+
const { App } = await Promise.resolve().then(() => require("./App-C3L5FTNZ.js"));
|
|
67
67
|
return App;
|
|
68
68
|
}
|
|
69
69
|
});
|
|
@@ -76,7 +76,7 @@ const index = {
|
|
|
76
76
|
intlLabel: { id: `${PLUGIN_ID}.settings.link`, defaultMessage: "Configuration" },
|
|
77
77
|
permissions: PERMISSIONS.settingsRead,
|
|
78
78
|
Component: async () => {
|
|
79
|
-
const { SettingsPage } = await Promise.resolve().then(() => require("./SettingsPage-
|
|
79
|
+
const { SettingsPage } = await Promise.resolve().then(() => require("./SettingsPage-BxmcGJ5s.js"));
|
|
80
80
|
return SettingsPage;
|
|
81
81
|
}
|
|
82
82
|
}
|
package/dist/admin/index.js
CHANGED
package/dist/admin/index.mjs
CHANGED