@taskon/widget-react 0.0.1-beta.5 → 0.0.1-beta.6

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 (58) hide show
  1. package/README.md +13 -4
  2. package/dist/CommunityTaskList.css +9 -1
  3. package/dist/EligibilityInfo.css +46 -42
  4. package/dist/LeaderboardWidget.css +73 -71
  5. package/dist/PageBuilder.css +5 -0
  6. package/dist/Quest.css +18 -14
  7. package/dist/TaskOnProvider.css +2 -0
  8. package/dist/UserCenterWidget.css +6 -6
  9. package/dist/UserCenterWidget2.css +1626 -1601
  10. package/dist/{dynamic-import-helper.css → WidgetShell.css} +2 -2
  11. package/dist/chunks/{CommunityTaskList-CrMvOB8w.js → CommunityTaskList-Hde2OKHH.js} +360 -154
  12. package/dist/chunks/{EligibilityInfo-Beww12QX.js → EligibilityInfo-BV0Z2TgY.js} +533 -561
  13. package/dist/chunks/{LeaderboardWidget-DwuSpVl0.js → LeaderboardWidget-BNGRD5Bu.js} +270 -249
  14. package/dist/chunks/{PageBuilder-DsX6Tv0N.js → PageBuilder-C5DSHiW9.js} +5 -5
  15. package/dist/chunks/{Quest-CuD2LElS.js → Quest-DG9zfXJo.js} +72 -50
  16. package/dist/chunks/{TaskOnProvider-xUeP2Nro.js → TaskOnProvider-BhamHIyY.js} +34 -17
  17. package/dist/chunks/{ThemeProvider-Bt4UZ33y.js → ThemeProvider-mXLdLSkq.js} +81 -18
  18. package/dist/chunks/{UserCenterWidget-CvU6K4AC.js → UserCenterWidget-D5ttw4hO.js} +1328 -1337
  19. package/dist/chunks/{UserCenterWidget-CB0hnj-L.js → UserCenterWidget-jDO5zTN1.js} +298 -231
  20. package/dist/chunks/{dynamic-import-helper-WmIF58Sb.js → WidgetShell-D7yC894Y.js} +447 -457
  21. package/dist/chunks/communitytask-es-CBNnS4o2.js +521 -0
  22. package/dist/chunks/communitytask-ja-GRf9cbdx.js +521 -0
  23. package/dist/chunks/communitytask-ko-Bf24PQKI.js +521 -0
  24. package/dist/chunks/{communitytask-ru-DhySaZL8.js → communitytask-ru-CZm2CPoV.js} +211 -1
  25. package/dist/chunks/leaderboardwidget-es-vKjrjQaz.js +146 -0
  26. package/dist/chunks/leaderboardwidget-ja-Q6u0HxKG.js +146 -0
  27. package/dist/chunks/leaderboardwidget-ko-CG6SWgxf.js +146 -0
  28. package/dist/chunks/leaderboardwidget-ru-DCcHcJGz.js +146 -0
  29. package/dist/chunks/{quest-es-D-b5xcme.js → quest-es-Dyyy0zaw.js} +8 -93
  30. package/dist/chunks/{quest-ja-Dxd2vqBF.js → quest-ja-Depog33y.js} +8 -93
  31. package/dist/chunks/{quest-ko-CSmRWgK_.js → quest-ko-BMu3uRQJ.js} +8 -93
  32. package/dist/chunks/{quest-ru-CkEKv1_F.js → quest-ru-xne814Rw.js} +8 -93
  33. package/dist/chunks/usercenter-es-Dz3Wp2vV.js +512 -0
  34. package/dist/chunks/usercenter-ja-CKE4DJC6.js +512 -0
  35. package/dist/chunks/usercenter-ko-Dtpkn2qb.js +512 -0
  36. package/dist/chunks/usercenter-ru-DnBGee45.js +512 -0
  37. package/dist/community-task.d.ts +0 -390
  38. package/dist/community-task.js +2 -7
  39. package/dist/core.d.ts +29 -5
  40. package/dist/core.js +8 -9
  41. package/dist/index.d.ts +29 -701
  42. package/dist/index.js +18 -29
  43. package/dist/leaderboard.d.ts +0 -498
  44. package/dist/leaderboard.js +2 -16
  45. package/dist/page-builder.js +1 -1
  46. package/dist/quest.d.ts +0 -971
  47. package/dist/quest.js +2 -7
  48. package/dist/user-center.d.ts +0 -1610
  49. package/dist/user-center.js +2 -494
  50. package/package.json +2 -2
  51. package/dist/chunks/communitytask-es-1zawvXEX.js +0 -311
  52. package/dist/chunks/communitytask-ja-CmW6nP-L.js +0 -311
  53. package/dist/chunks/communitytask-ko-BD0hzQSi.js +0 -311
  54. package/dist/chunks/createLocaleLoader-BameiEhU.js +0 -65
  55. package/dist/chunks/leaderboardwidget-ja-Bj6gz6y1.js +0 -119
  56. package/dist/chunks/leaderboardwidget-ko-f1cLO9ic.js +0 -119
  57. package/dist/chunks/usercenter-ja-B2465c1O.js +0 -326
  58. package/dist/chunks/usercenter-ko-xAEYxqLg.js +0 -326
@@ -1,8 +1,8 @@
1
- import { B as Button, T as Table, P as Pagination, D as Dialog, a as useResolvedWidgetConfig, W as WidgetShell, _ as __variableDynamicImportRuntimeHelper, u as usePagination } from "./dynamic-import-helper-WmIF58Sb.js";
2
1
  import { jsx, jsxs } from "react/jsx-runtime";
3
2
  import { useState, useCallback, useEffect, useMemo } from "react";
4
3
  import { createLeaderboardApi, LeaderboardContentType, formatRankRange, RewardsDistributeType, formatRewardText, calculatePrizePool, RewardType, LeaderboardTableColumn, truncateAddress, isAllTimeResponse, isCampaignResponse } from "@taskon/core";
5
- import { d as useTaskOnContext, b as useWidgetLocale } from "./ThemeProvider-Bt4UZ33y.js";
4
+ import { h as useTaskOnContext, c as useTranslation, e as createLocaleLoader } from "./ThemeProvider-mXLdLSkq.js";
5
+ import { B as Button, T as Table, P as Pagination, D as Dialog, u as useResolvedWidgetConfig, W as WidgetShell, a as usePagination } from "./WidgetShell-D7yC894Y.js";
6
6
  import '../LeaderboardWidget.css';function useLeaderboard(options) {
7
7
  const { client } = useTaskOnContext();
8
8
  const [data, setData] = useState(null);
@@ -81,12 +81,12 @@ function useCampaignReward(campaignId) {
81
81
  }, [campaignId, client]);
82
82
  const rewardSummary = useMemo(() => {
83
83
  if (!campaignInfo) return null;
84
- let totalWinners2 = 0;
84
+ let totalWinners = 0;
85
85
  const tiers = [];
86
86
  campaignInfo.winner_rewards.forEach((wr) => {
87
87
  wr.winner_layer_rewards.forEach((wlr, index) => {
88
88
  var _a;
89
- totalWinners2 += wlr.max_winners;
89
+ totalWinners += wlr.max_winners;
90
90
  const { text: rankRangeText, from: rankFrom, to: rankTo } = formatRankRange(wlr, index);
91
91
  const distributeType = ((_a = wlr.rewards[0]) == null ? void 0 : _a.reward_distribute_type) || RewardsDistributeType.Equally;
92
92
  const simpleReward = campaignInfo.winner_rewards_simple[index];
@@ -105,10 +105,10 @@ function useCampaignReward(campaignId) {
105
105
  });
106
106
  });
107
107
  });
108
- const prizePool2 = calculatePrizePool(campaignInfo.winner_rewards_simple);
108
+ const prizePool = calculatePrizePool(campaignInfo.winner_rewards_simple);
109
109
  return {
110
- prizePool: prizePool2,
111
- totalWinners: totalWinners2,
110
+ prizePool,
111
+ totalWinners,
112
112
  tiers,
113
113
  startTime: campaignInfo.start_time,
114
114
  endTime: campaignInfo.end_time,
@@ -125,6 +125,126 @@ function useCampaignReward(campaignId) {
125
125
  refresh: fetchCampaignInfo
126
126
  };
127
127
  }
128
+ const tab_all_time = "All Time";
129
+ const tab_quest = "Quest";
130
+ const tab_event = "Event";
131
+ const tab_sprint = "Sprint";
132
+ const column_rank = "Rank";
133
+ const column_position = "Position";
134
+ const column_user = "User";
135
+ const column_tasks = "Tasks";
136
+ const column_invited_users = "Invited Users";
137
+ const column_current_tier = "Current Tier";
138
+ const column_points = "Points";
139
+ const column_rewards = "Reward";
140
+ const status_ongoing = "Ongoing";
141
+ const status_ended = "Ended";
142
+ const status_upcoming = "Upcoming";
143
+ const participants = "Participants";
144
+ const prize_pool = "Prize Pool";
145
+ const total_winners = "Total Winners";
146
+ const reward_rules = "Reward Rules";
147
+ const reward_rules_title = "Reward Rules";
148
+ const reward_rules_desc = "Rewards will be given based on leaderboard rankings, determined by users' {pointsName} earned during the event.";
149
+ const event_period = "Event Period";
150
+ const reward_details = "Reward Details";
151
+ const each_receives = "Each receives {amount}";
152
+ const randomly_split = "Randomly split {amount}";
153
+ const empty_title = "No Rankings Yet";
154
+ const empty_desc = "Be the first to join and claim the top spot!";
155
+ const page = "Page";
156
+ const of = "of";
157
+ const previous = "Previous";
158
+ const next = "Next";
159
+ const loading = "Loading...";
160
+ const error = "Failed to load leaderboard";
161
+ const retry = "Retry";
162
+ const not_configured = "Not configured";
163
+ const you = "You";
164
+ const unranked = "Unranked";
165
+ const na = "N/A";
166
+ const no_data = "-";
167
+ const whitelist = "Whitelist";
168
+ const reward_type_nft = "NFT:";
169
+ const reward_type_discord_role = "Discord Role:";
170
+ const reward_type_exp = "EXP:";
171
+ const reward_type_token = "Token:";
172
+ const reward_type_cap = "CAP";
173
+ const reward_value_usd_in = "{amount} USD in {symbol}";
174
+ const reward_rank_top = "Top {val}";
175
+ const enMessages = {
176
+ tab_all_time,
177
+ tab_quest,
178
+ tab_event,
179
+ tab_sprint,
180
+ column_rank,
181
+ column_position,
182
+ column_user,
183
+ column_tasks,
184
+ column_invited_users,
185
+ column_current_tier,
186
+ column_points,
187
+ column_rewards,
188
+ status_ongoing,
189
+ status_ended,
190
+ status_upcoming,
191
+ participants,
192
+ prize_pool,
193
+ total_winners,
194
+ reward_rules,
195
+ reward_rules_title,
196
+ reward_rules_desc,
197
+ event_period,
198
+ reward_details,
199
+ each_receives,
200
+ randomly_split,
201
+ empty_title,
202
+ empty_desc,
203
+ page,
204
+ of,
205
+ previous,
206
+ next,
207
+ loading,
208
+ error,
209
+ retry,
210
+ not_configured,
211
+ you,
212
+ unranked,
213
+ na,
214
+ no_data,
215
+ whitelist,
216
+ reward_type_nft,
217
+ reward_type_discord_role,
218
+ reward_type_exp,
219
+ reward_type_token,
220
+ reward_type_cap,
221
+ reward_value_usd_in,
222
+ reward_rank_top
223
+ };
224
+ const loadMessages = createLocaleLoader(
225
+ enMessages,
226
+ {
227
+ ko: () => import("./leaderboardwidget-ko-CG6SWgxf.js").then((module) => ({
228
+ default: module.default
229
+ })),
230
+ ja: () => import("./leaderboardwidget-ja-Q6u0HxKG.js").then((module) => ({
231
+ default: module.default
232
+ })),
233
+ ru: () => import("./leaderboardwidget-ru-DCcHcJGz.js").then((module) => ({
234
+ default: module.default
235
+ })),
236
+ es: () => import("./leaderboardwidget-es-vKjrjQaz.js").then((module) => ({
237
+ default: module.default
238
+ }))
239
+ }
240
+ );
241
+ function useLeaderboardLocale() {
242
+ return useTranslation({
243
+ widgetId: "LeaderboardWidget",
244
+ defaultMessages: enMessages,
245
+ loadMessages
246
+ });
247
+ }
128
248
  function HexagonBadge({
129
249
  rank,
130
250
  colorClass
@@ -152,11 +272,12 @@ function HexagonBadge({
152
272
  ] });
153
273
  }
154
274
  function RankBadge({ rank, isAllTime = false, className = "" }) {
275
+ const { t } = useLeaderboardLocale();
155
276
  if (rank < 0) {
156
- return /* @__PURE__ */ jsx("span", { className: `taskon-leaderboard-rank taskon-leaderboard-rank--na ${className}`, children: "N/A" });
277
+ return /* @__PURE__ */ jsx("span", { className: `taskon-leaderboard-rank taskon-leaderboard-rank--na ${className}`, children: t("na") });
157
278
  }
158
279
  if (rank === 0) {
159
- return /* @__PURE__ */ jsx("span", { className: `taskon-leaderboard-rank taskon-leaderboard-rank--unranked ${className}`, children: "--" });
280
+ return /* @__PURE__ */ jsx("span", { className: `taskon-leaderboard-rank taskon-leaderboard-rank--unranked ${className}`, children: t("unranked") });
160
281
  }
161
282
  if (rank === 1) {
162
283
  return /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsx(HexagonBadge, { rank: 1, colorClass: "gold" }) });
@@ -175,10 +296,10 @@ function UserCell({
175
296
  displayName,
176
297
  avatar,
177
298
  isCurrentUser = false,
178
- youLabel = "YOU",
179
299
  onUserClick,
180
300
  className = ""
181
301
  }) {
302
+ const { t } = useLeaderboardLocale();
182
303
  const handleClick = () => {
183
304
  if (onUserClick) {
184
305
  onUserClick(userId, userName);
@@ -186,7 +307,13 @@ function UserCell({
186
307
  };
187
308
  const isClickable = !!onUserClick && !isCurrentUser;
188
309
  if (isCurrentUser) {
189
- return /* @__PURE__ */ jsx("div", { className: `taskon-leaderboard-user taskon-leaderboard-user--current ${className}`, children: /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-user__you-badge", children: youLabel }) });
310
+ return /* @__PURE__ */ jsx(
311
+ "div",
312
+ {
313
+ className: `taskon-leaderboard-user taskon-leaderboard-user--current ${className}`,
314
+ children: /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-user__you-badge", children: t("you") })
315
+ }
316
+ );
190
317
  }
191
318
  return /* @__PURE__ */ jsx(
192
319
  "div",
@@ -204,32 +331,32 @@ function UserCell({
204
331
  }
205
332
  );
206
333
  }
207
- function getRewardTypeLabel(rewardType, rewardPointsName, messages) {
334
+ function getRewardTypeLabel(rewardType, rewardPointsName, t) {
208
335
  if (!rewardType) return null;
209
336
  if (rewardType === RewardType.BMintedNft || rewardType === RewardType.Cap || rewardType === RewardType.Nft) {
210
- return "NFT:";
337
+ return t("reward_type_nft");
211
338
  }
212
339
  if (rewardType === RewardType.DiscordRole) {
213
- return "Discord Role:";
340
+ return t("reward_type_discord_role");
214
341
  }
215
342
  if (rewardType === RewardType.Exp) {
216
- return "EXP:";
343
+ return t("reward_type_exp");
217
344
  }
218
345
  if (rewardType === RewardType.GTCPoints || rewardType === RewardType.Points) {
219
- return `${rewardPointsName || messages.columnPoints}:`;
346
+ return `${rewardPointsName || t("column_points")}:`;
220
347
  }
221
348
  if (rewardType === RewardType.Token) {
222
- return "Token:";
349
+ return t("reward_type_token");
223
350
  }
224
351
  if (rewardType === RewardType.Whitelist) {
225
352
  return null;
226
353
  }
227
354
  return null;
228
355
  }
229
- function getRewardValueLabel(rewardType, rewardAmount, rewardSymbol, chainLabel, isUsdtEqual, messages) {
356
+ function getRewardValueLabel(rewardType, rewardAmount, rewardSymbol, chainLabel, isUsdtEqual, t) {
230
357
  if (!rewardType) {
231
358
  return {
232
- value: rewardAmount ? `${rewardAmount} ${rewardSymbol || ""}` : messages.noData,
359
+ value: rewardAmount ? `${rewardAmount} ${rewardSymbol || ""}` : t("no_data"),
233
360
  showChain: !!chainLabel
234
361
  };
235
362
  }
@@ -237,22 +364,31 @@ function getRewardValueLabel(rewardType, rewardAmount, rewardSymbol, chainLabel,
237
364
  return { value: rewardSymbol || "", showChain: false };
238
365
  }
239
366
  if (rewardType === RewardType.Cap) {
240
- return { value: "CAP", showChain: false };
367
+ return { value: t("reward_type_cap"), showChain: false };
241
368
  }
242
369
  if (rewardType === RewardType.GTCPoints || rewardType === RewardType.Points) {
243
370
  return { value: rewardAmount || "", showChain: false };
244
371
  }
245
372
  if (rewardType === RewardType.Token) {
246
373
  if (isUsdtEqual) {
247
- return { value: `${rewardAmount} USD in ${rewardSymbol}`, showChain: false };
374
+ return {
375
+ value: t("reward_value_usd_in", {
376
+ amount: rewardAmount ?? "",
377
+ symbol: rewardSymbol ?? ""
378
+ }),
379
+ showChain: false
380
+ };
248
381
  }
249
- return { value: `${rewardAmount} ${rewardSymbol}`, showChain: !!chainLabel };
382
+ return {
383
+ value: `${rewardAmount} ${rewardSymbol}`,
384
+ showChain: !!chainLabel
385
+ };
250
386
  }
251
387
  if (rewardType === RewardType.Whitelist) {
252
- return { value: messages.whitelist || "Whitelist", showChain: false };
388
+ return { value: t("whitelist"), showChain: false };
253
389
  }
254
390
  return {
255
- value: rewardAmount ? `${rewardAmount} ${rewardSymbol || ""}` : messages.noData,
391
+ value: rewardAmount ? `${rewardAmount} ${rewardSymbol || ""}` : t("no_data"),
256
392
  showChain: !!chainLabel
257
393
  };
258
394
  }
@@ -263,32 +399,38 @@ function RewardCell({
263
399
  rewardType,
264
400
  rewardPointsName,
265
401
  isUsdtEqual,
266
- messages,
267
402
  isPotential = false,
268
403
  className = ""
269
404
  }) {
405
+ const { t } = useLeaderboardLocale();
270
406
  if (!rewardAmount && !rewardType) {
271
- return /* @__PURE__ */ jsx("span", { className, children: messages.noData });
407
+ return /* @__PURE__ */ jsx("span", { className, children: t("no_data") });
272
408
  }
273
- const typeLabel = getRewardTypeLabel(rewardType, rewardPointsName, messages);
409
+ const typeLabel = getRewardTypeLabel(rewardType, rewardPointsName, t);
274
410
  const { value, showChain } = getRewardValueLabel(
275
411
  rewardType,
276
412
  rewardAmount,
277
413
  rewardSymbol,
278
414
  chainLabel,
279
415
  isUsdtEqual,
280
- messages
416
+ t
281
417
  );
282
418
  const potentialClass = isPotential ? "taskon-leaderboard-table__reward--potential" : "";
283
- return /* @__PURE__ */ jsxs("span", { className: `taskon-leaderboard-table__reward ${potentialClass} ${className}`, children: [
284
- typeLabel && /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-table__reward-type", children: typeLabel }),
285
- /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-table__reward-value", children: value }),
286
- showChain && chainLabel && /* @__PURE__ */ jsxs("span", { className: "taskon-leaderboard-table__reward-chain", children: [
287
- "(",
288
- chainLabel,
289
- ")"
290
- ] })
291
- ] });
419
+ return /* @__PURE__ */ jsxs(
420
+ "span",
421
+ {
422
+ className: `taskon-leaderboard-table__reward ${potentialClass} ${className}`,
423
+ children: [
424
+ typeLabel && /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-table__reward-type", children: typeLabel }),
425
+ /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-table__reward-value", children: value }),
426
+ showChain && chainLabel && /* @__PURE__ */ jsxs("span", { className: "taskon-leaderboard-table__reward-chain", children: [
427
+ "(",
428
+ chainLabel,
429
+ ")"
430
+ ] })
431
+ ]
432
+ }
433
+ );
292
434
  }
293
435
  function LeaderboardTabs({
294
436
  tabs,
@@ -296,6 +438,21 @@ function LeaderboardTabs({
296
438
  onTabChange,
297
439
  className = ""
298
440
  }) {
441
+ const { t } = useLeaderboardLocale();
442
+ const getFallbackTitle = (tab) => {
443
+ switch (tab.type) {
444
+ case LeaderboardContentType.AllTime:
445
+ return t("tab_all_time");
446
+ case LeaderboardContentType.Quest:
447
+ return t("tab_quest");
448
+ case LeaderboardContentType.Event:
449
+ return t("tab_event");
450
+ case LeaderboardContentType.LeaderboardSprint:
451
+ return t("tab_sprint");
452
+ default:
453
+ return "";
454
+ }
455
+ };
299
456
  if (tabs.length <= 1) {
300
457
  return null;
301
458
  }
@@ -309,7 +466,7 @@ function LeaderboardTabs({
309
466
  "aria-controls": `leaderboard-panel-${tab.id}`,
310
467
  className: `taskon-leaderboard-tabs__tab ${isActive ? "taskon-leaderboard-tabs__tab--active" : ""}`,
311
468
  onClick: () => onTabChange(tab.id),
312
- children: tab.title
469
+ children: tab.title || getFallbackTitle(tab)
313
470
  },
314
471
  tab.id
315
472
  );
@@ -335,36 +492,37 @@ function formatTimeRange(startTime, endTime) {
335
492
  const endMinutes = String(end.getMinutes()).padStart(2, "0");
336
493
  return `(${timezone}) ${startYear}-${startMonth}-${startDay} ${startHours}:${startMinutes} ~ ${endYear}-${endMonth}-${endDay} ${endHours}:${endMinutes}`;
337
494
  }
338
- function getEventStatus(startTime, endTime, messages) {
495
+ function getEventStatus(startTime, endTime, t) {
339
496
  if (!startTime || !endTime) return null;
340
497
  const now = Date.now();
341
498
  if (now < startTime) {
342
- return { label: messages.statusUpcoming, status: "upcoming" };
499
+ return { label: t("status_upcoming"), status: "upcoming" };
343
500
  }
344
501
  if (now > endTime) {
345
- return { label: messages.statusEnded, status: "ended" };
502
+ return { label: t("status_ended"), status: "ended" };
346
503
  }
347
- return { label: messages.statusOngoing, status: "ongoing" };
504
+ return { label: t("status_ongoing"), status: "ongoing" };
348
505
  }
349
506
  function LeaderboardHeader({
350
507
  tabConfig,
351
508
  showTitle,
352
509
  rewardSummary,
353
510
  participantsCount,
354
- messages,
355
511
  onOpenRewardRules,
356
512
  className = ""
357
513
  }) {
514
+ const { t } = useLeaderboardLocale();
358
515
  const isSprint = tabConfig.type === LeaderboardContentType.LeaderboardSprint;
359
- const eventStatus = getEventStatus(tabConfig.startTime, tabConfig.endTime, messages);
516
+ const eventStatus = getEventStatus(tabConfig.startTime, tabConfig.endTime, t);
360
517
  const hasTimeRange = tabConfig.startTime && tabConfig.endTime;
361
518
  const hasParticipants = typeof participantsCount === "number";
519
+ const shouldShowTitle = showTitle && Boolean(tabConfig.title);
362
520
  const hasContent = eventStatus || hasTimeRange || hasParticipants;
363
- if (!hasContent && !showTitle && !isSprint) {
521
+ if (!hasContent && !shouldShowTitle && !isSprint) {
364
522
  return null;
365
523
  }
366
524
  return /* @__PURE__ */ jsxs("div", { className: `taskon-leaderboard-header ${className}`, children: [
367
- (eventStatus || hasTimeRange || hasParticipants) && /* @__PURE__ */ jsxs("div", { className: "taskon-leaderboard-header__info", children: [
525
+ (eventStatus || hasTimeRange || hasParticipants) && shouldShowTitle && /* @__PURE__ */ jsxs("div", { className: "taskon-leaderboard-header__info", children: [
368
526
  eventStatus && /* @__PURE__ */ jsx(
369
527
  "span",
370
528
  {
@@ -375,18 +533,18 @@ function LeaderboardHeader({
375
533
  hasTimeRange && /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-header__time", children: formatTimeRange(tabConfig.startTime, tabConfig.endTime) }),
376
534
  hasParticipants && (eventStatus || hasTimeRange) && /* @__PURE__ */ jsx("div", { className: "taskon-leaderboard-header__separator" }),
377
535
  hasParticipants && /* @__PURE__ */ jsxs("div", { className: "taskon-leaderboard-header__participants", children: [
378
- /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-header__participants-label", children: messages.participants || "Participants" }),
536
+ /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-header__participants-label", children: t("participants") }),
379
537
  /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-header__participants-value", children: participantsCount.toLocaleString() })
380
538
  ] })
381
539
  ] }),
382
540
  isSprint && rewardSummary && /* @__PURE__ */ jsxs("div", { className: "taskon-leaderboard-header__reward-info", children: [
383
541
  /* @__PURE__ */ jsxs("div", { className: "taskon-leaderboard-header__reward-item", children: [
384
- /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-header__reward-label", children: messages.prizePool }),
385
- /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-header__reward-value", children: rewardSummary.prizePool || "-" })
542
+ /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-header__reward-label", children: t("prize_pool") }),
543
+ /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-header__reward-value", children: rewardSummary.prizePool || t("no_data") })
386
544
  ] }),
387
545
  /* @__PURE__ */ jsx("div", { className: "taskon-leaderboard-header__reward-separator" }),
388
546
  /* @__PURE__ */ jsxs("div", { className: "taskon-leaderboard-header__reward-item", children: [
389
- /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-header__reward-label", children: messages.totalWinners }),
547
+ /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-header__reward-label", children: t("total_winners") }),
390
548
  /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-header__reward-value", children: rewardSummary.totalWinners })
391
549
  ] }),
392
550
  onOpenRewardRules && /* @__PURE__ */ jsx(
@@ -396,28 +554,28 @@ function LeaderboardHeader({
396
554
  size: "small",
397
555
  onClick: onOpenRewardRules,
398
556
  className: "taskon-leaderboard-header__reward-rules-btn",
399
- children: messages.rewardRules
557
+ children: t("reward_rules")
400
558
  }
401
559
  )
402
560
  ] })
403
561
  ] });
404
562
  }
405
- function getColumnTitle(column, messages, pointsName) {
563
+ function getColumnTitle(column, t, pointsName) {
406
564
  switch (column) {
407
565
  case LeaderboardTableColumn.Rank:
408
- return messages.columnRank;
566
+ return t("column_rank");
409
567
  case LeaderboardTableColumn.User:
410
- return messages.columnUser;
568
+ return t("column_user");
411
569
  case LeaderboardTableColumn.Tasks:
412
- return messages.columnTasks;
570
+ return t("column_tasks");
413
571
  case LeaderboardTableColumn.InvitedUsers:
414
- return messages.columnInvitedUsers;
572
+ return t("column_invited_users");
415
573
  case LeaderboardTableColumn.CurrentTier:
416
- return messages.columnCurrentTier;
574
+ return t("column_current_tier");
417
575
  case LeaderboardTableColumn.Points:
418
- return pointsName || messages.columnPoints;
576
+ return pointsName || t("column_points");
419
577
  case LeaderboardTableColumn.Rewards:
420
- return messages.columnRewards;
578
+ return t("column_rewards");
421
579
  default:
422
580
  return "";
423
581
  }
@@ -474,12 +632,12 @@ function LeaderboardTable({
474
632
  allTimeData,
475
633
  campaignData,
476
634
  currentUserId,
477
- messages,
478
635
  onUserClick,
479
636
  rewardTiers,
480
637
  loading: loading2 = false,
481
638
  className = ""
482
639
  }) {
640
+ const { t } = useLeaderboardLocale();
483
641
  const isAllTime = tabConfig.type === LeaderboardContentType.AllTime;
484
642
  const tableData = useMemo(() => {
485
643
  if (isAllTime && allTimeData) {
@@ -494,7 +652,7 @@ function LeaderboardTable({
494
652
  return tabConfig.columns.map((column) => {
495
653
  const baseColumn = {
496
654
  key: column,
497
- title: getColumnTitle(column, messages, tabConfig.pointsName)
655
+ title: getColumnTitle(column, t, tabConfig.pointsName)
498
656
  };
499
657
  switch (column) {
500
658
  case LeaderboardTableColumn.Rank:
@@ -515,7 +673,6 @@ function LeaderboardTable({
515
673
  displayName: formatUserDisplayName(row.userName),
516
674
  avatar: row.avatar,
517
675
  isCurrentUser: currentUserId === row.userId,
518
- youLabel: messages.you,
519
676
  onUserClick
520
677
  }
521
678
  )
@@ -524,25 +681,25 @@ function LeaderboardTable({
524
681
  return {
525
682
  ...baseColumn,
526
683
  width: 142,
527
- render: (_, row) => row.tasks ?? messages.noData
684
+ render: (_, row) => row.tasks ?? t("no_data")
528
685
  };
529
686
  case LeaderboardTableColumn.InvitedUsers:
530
687
  return {
531
688
  ...baseColumn,
532
689
  width: 142,
533
- render: (_, row) => row.invitedUsers ?? messages.noData
690
+ render: (_, row) => row.invitedUsers ?? t("no_data")
534
691
  };
535
692
  case LeaderboardTableColumn.CurrentTier:
536
693
  return {
537
694
  ...baseColumn,
538
695
  width: 142,
539
- render: (_, row) => row.currentTier ?? messages.noData
696
+ render: (_, row) => row.currentTier ?? t("no_data")
540
697
  };
541
698
  case LeaderboardTableColumn.Points:
542
699
  return {
543
700
  ...baseColumn,
544
701
  width: 142,
545
- render: (_, row) => row.points && row.points > 0 ? row.points.toLocaleString() : messages.noData
702
+ render: (_, row) => row.points && row.points > 0 ? row.points.toLocaleString() : t("no_data")
546
703
  };
547
704
  case LeaderboardTableColumn.Rewards:
548
705
  return {
@@ -559,8 +716,7 @@ function LeaderboardTable({
559
716
  chainLabel: row.chainLabel,
560
717
  rewardType: row.rewardType,
561
718
  rewardPointsName: row.rewardPointsName,
562
- isUsdtEqual: row.isUsdtEqual,
563
- messages
719
+ isUsdtEqual: row.isUsdtEqual
564
720
  }
565
721
  );
566
722
  }
@@ -572,22 +728,28 @@ function LeaderboardTable({
572
728
  rewardAmount: reward.rewardAmount,
573
729
  rewardSymbol: reward.rewardSymbol,
574
730
  chainLabel: reward.chainLabel,
575
- messages,
576
731
  isPotential: true
577
732
  }
578
733
  );
579
734
  }
580
- return messages.noData;
735
+ return t("no_data");
581
736
  }
582
737
  };
583
738
  default:
584
739
  return {
585
740
  ...baseColumn,
586
- render: () => messages.noData
741
+ render: () => t("no_data")
587
742
  };
588
743
  }
589
744
  });
590
- }, [tabConfig.columns, tabConfig.pointsName, messages, currentUserId, onUserClick, rewardTiers]);
745
+ }, [
746
+ tabConfig.columns,
747
+ tabConfig.pointsName,
748
+ t,
749
+ currentUserId,
750
+ onUserClick,
751
+ rewardTiers
752
+ ]);
591
753
  const rowConfig = useMemo(
592
754
  () => ({
593
755
  getRowKey: (row) => row.id,
@@ -597,10 +759,10 @@ function LeaderboardTable({
597
759
  );
598
760
  const emptyConfig = useMemo(
599
761
  () => ({
600
- title: messages.emptyTitle,
601
- description: messages.emptyDesc
762
+ title: t("empty_title"),
763
+ description: t("empty_desc")
602
764
  }),
603
- [messages.emptyTitle, messages.emptyDesc]
765
+ [t]
604
766
  );
605
767
  return /* @__PURE__ */ jsx(
606
768
  Table,
@@ -609,7 +771,7 @@ function LeaderboardTable({
609
771
  data: tableData,
610
772
  rowConfig,
611
773
  loading: loading2,
612
- loadingText: messages.loading,
774
+ loadingText: t("loading"),
613
775
  empty: emptyConfig,
614
776
  striped: true,
615
777
  className
@@ -624,7 +786,6 @@ function LeaderboardPagination({
624
786
  hasNext,
625
787
  onPrevious,
626
788
  onNext,
627
- messages,
628
789
  className = ""
629
790
  }) {
630
791
  if (totalPages <= 1 || total === 0) {
@@ -648,7 +809,7 @@ function LeaderboardPagination({
648
809
  function formatDate(timestamp) {
649
810
  if (!timestamp) return "";
650
811
  const date = new Date(timestamp);
651
- return date.toLocaleDateString("en-US", {
812
+ return date.toLocaleDateString(void 0, {
652
813
  year: "numeric",
653
814
  month: "short",
654
815
  day: "numeric",
@@ -656,26 +817,23 @@ function formatDate(timestamp) {
656
817
  minute: "2-digit"
657
818
  });
658
819
  }
659
- function getDistributeText(distributeType, messages) {
820
+ function getDistributeText(distributeType, t) {
660
821
  switch (distributeType) {
661
822
  case RewardsDistributeType.Equally:
662
- return "Each receives";
823
+ return t("each_receives", { amount: "{amount}" }).replace("{amount}", "").trim();
663
824
  case RewardsDistributeType.Random:
664
- return "Randomly split";
825
+ return t("randomly_split", { amount: "{amount}" }).replace("{amount}", "").trim();
665
826
  default:
666
827
  return "";
667
828
  }
668
829
  }
669
830
  function TierRow({
670
831
  tier,
671
- messages
832
+ t
672
833
  }) {
673
- const distributeText = getDistributeText(tier.distributeType);
834
+ const distributeText = getDistributeText(tier.distributeType, t);
674
835
  return /* @__PURE__ */ jsxs("div", { className: "taskon-leaderboard-modal__tier", children: [
675
- /* @__PURE__ */ jsxs("span", { className: "taskon-leaderboard-modal__tier-rank", children: [
676
- "Top ",
677
- tier.rankRangeText
678
- ] }),
836
+ /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-modal__tier-rank", children: t("reward_rank_top", { val: tier.rankRangeText }) }),
679
837
  /* @__PURE__ */ jsxs("div", { className: "taskon-leaderboard-modal__tier-reward", children: [
680
838
  distributeText && /* @__PURE__ */ jsx("span", { className: "taskon-leaderboard-modal__tier-distribute", children: distributeText }),
681
839
  /* @__PURE__ */ jsxs("div", { className: "taskon-leaderboard-modal__tier-token", children: [
@@ -702,16 +860,15 @@ function RewardRulesModal({
702
860
  isOpen,
703
861
  onClose,
704
862
  rewardSummary,
705
- messages,
706
863
  className = ""
707
864
  }) {
865
+ const { t } = useLeaderboardLocale();
708
866
  if (!rewardSummary) {
709
867
  return null;
710
868
  }
711
- const description = messages.rewardRulesDesc.replace(
712
- "{pointsName}",
713
- rewardSummary.pointsName || "points"
714
- );
869
+ const description = t("reward_rules_desc", {
870
+ pointsName: rewardSummary.pointsName || t("column_points")
871
+ });
715
872
  return /* @__PURE__ */ jsx(
716
873
  Dialog,
717
874
  {
@@ -719,16 +876,16 @@ function RewardRulesModal({
719
876
  onOpenChange: (open) => {
720
877
  if (!open) onClose();
721
878
  },
722
- title: messages.rewardRulesTitle,
879
+ title: t("reward_rules_title"),
723
880
  showCloseButton: true,
724
881
  className,
725
882
  contentClassName: "taskon-leaderboard-modal",
726
883
  maxWidth: 480,
727
884
  children: /* @__PURE__ */ jsxs("div", { className: "taskon-leaderboard-modal__content", children: [
728
- /* @__PURE__ */ jsx("h2", { className: "taskon-leaderboard-modal__title", children: messages.rewardRulesTitle }),
885
+ /* @__PURE__ */ jsx("h2", { className: "taskon-leaderboard-modal__title", children: t("reward_rules_title") }),
729
886
  /* @__PURE__ */ jsx("p", { className: "taskon-leaderboard-modal__desc", children: description }),
730
887
  /* @__PURE__ */ jsxs("div", { className: "taskon-leaderboard-modal__section", children: [
731
- /* @__PURE__ */ jsx("h3", { className: "taskon-leaderboard-modal__section-title", children: messages.eventPeriod }),
888
+ /* @__PURE__ */ jsx("h3", { className: "taskon-leaderboard-modal__section-title", children: t("event_period") }),
732
889
  /* @__PURE__ */ jsxs("p", { className: "taskon-leaderboard-modal__period", children: [
733
890
  formatDate(rewardSummary.startTime),
734
891
  " -",
@@ -737,8 +894,8 @@ function RewardRulesModal({
737
894
  ] })
738
895
  ] }),
739
896
  /* @__PURE__ */ jsxs("div", { className: "taskon-leaderboard-modal__section", children: [
740
- /* @__PURE__ */ jsx("h3", { className: "taskon-leaderboard-modal__section-title", children: messages.rewardDetails }),
741
- /* @__PURE__ */ jsx("div", { className: "taskon-leaderboard-modal__tiers", children: rewardSummary.tiers.map((tier) => /* @__PURE__ */ jsx(TierRow, { tier, messages }, tier.tierNo)) })
897
+ /* @__PURE__ */ jsx("h3", { className: "taskon-leaderboard-modal__section-title", children: t("reward_details") }),
898
+ /* @__PURE__ */ jsx("div", { className: "taskon-leaderboard-modal__tiers", children: rewardSummary.tiers.map((tier) => /* @__PURE__ */ jsx(TierRow, { tier, t }, tier.tierNo)) })
742
899
  ] })
743
900
  ] })
744
901
  }
@@ -749,131 +906,9 @@ function mergeLeaderboardConfig(props, cloud) {
749
906
  config: props.config ?? cloud ?? null
750
907
  };
751
908
  }
752
- const tabAllTime = "All Time";
753
- const tabQuest = "Quest";
754
- const tabEvent = "Event";
755
- const tabSprint = "Sprint";
756
- const columnRank = "Rank";
757
- const columnPosition = "Position";
758
- const columnUser = "User";
759
- const columnTasks = "Tasks";
760
- const columnInvitedUsers = "Invited Users";
761
- const columnCurrentTier = "Current Tier";
762
- const columnPoints = "Points";
763
- const columnRewards = "Reward";
764
- const statusOngoing = "Ongoing";
765
- const statusEnded = "Ended";
766
- const statusUpcoming = "Upcoming";
767
- const participants = "Participants";
768
- const prizePool = "Prize Pool";
769
- const totalWinners = "Total Winners";
770
- const rewardRules = "Reward Rules";
771
- const rewardRulesTitle = "Reward Rules";
772
- const rewardRulesDesc = "Rewards will be given based on leaderboard rankings, determined by users' {pointsName} earned during the event.";
773
- const eventPeriod = "Event Period";
774
- const rewardDetails = "Reward Details";
775
- const eachReceives = "Each receives {amount}";
776
- const randomlySplit = "Randomly split {amount}";
777
- const emptyTitle = "No Rankings Yet";
778
- const emptyDesc = "Be the first to join and claim the top spot!";
779
- const page = "Page";
780
- const of = "of";
781
- const previous = "Previous";
782
- const next = "Next";
783
- const loading = "Loading...";
784
- const error = "Failed to load leaderboard";
785
- const retry = "Retry";
786
- const you = "You";
787
- const unranked = "Unranked";
788
- const na = "N/A";
789
- const noData = "-";
790
- const whitelist = "Whitelist";
791
- const enMessages = {
792
- tabAllTime,
793
- tabQuest,
794
- tabEvent,
795
- tabSprint,
796
- columnRank,
797
- columnPosition,
798
- columnUser,
799
- columnTasks,
800
- columnInvitedUsers,
801
- columnCurrentTier,
802
- columnPoints,
803
- columnRewards,
804
- statusOngoing,
805
- statusEnded,
806
- statusUpcoming,
807
- participants,
808
- prizePool,
809
- totalWinners,
810
- rewardRules,
811
- rewardRulesTitle,
812
- rewardRulesDesc,
813
- eventPeriod,
814
- rewardDetails,
815
- eachReceives,
816
- randomlySplit,
817
- emptyTitle,
818
- emptyDesc,
819
- page,
820
- of,
821
- previous,
822
- next,
823
- loading,
824
- error,
825
- retry,
826
- you,
827
- unranked,
828
- na,
829
- noData,
830
- whitelist
831
- };
832
- const en = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
833
- __proto__: null,
834
- columnCurrentTier,
835
- columnInvitedUsers,
836
- columnPoints,
837
- columnPosition,
838
- columnRank,
839
- columnRewards,
840
- columnTasks,
841
- columnUser,
842
- default: enMessages,
843
- eachReceives,
844
- emptyDesc,
845
- emptyTitle,
846
- error,
847
- eventPeriod,
848
- loading,
849
- na,
850
- next,
851
- noData,
852
- of,
853
- page,
854
- participants,
855
- previous,
856
- prizePool,
857
- randomlySplit,
858
- retry,
859
- rewardDetails,
860
- rewardRules,
861
- rewardRulesDesc,
862
- rewardRulesTitle,
863
- statusEnded,
864
- statusOngoing,
865
- statusUpcoming,
866
- tabAllTime,
867
- tabEvent,
868
- tabQuest,
869
- tabSprint,
870
- totalWinners,
871
- unranked,
872
- whitelist,
873
- you
874
- }, Symbol.toStringTag, { value: "Module" }));
875
909
  function LeaderboardWidget(props) {
876
910
  const { widgetId, themeMode } = props;
911
+ const { t } = useLeaderboardLocale();
877
912
  const { functionConfig, cloudTheme, isConfigLoading, configError } = useResolvedWidgetConfig(widgetId);
878
913
  const mergedConfig = useMemo(() => {
879
914
  return mergeLeaderboardConfig(
@@ -890,7 +925,7 @@ function LeaderboardWidget(props) {
890
925
  cloudTheme,
891
926
  themeMode,
892
927
  className: "taskon-leaderboard",
893
- errorMessage: configError ?? (!isConfigured ? "未配置" : void 0),
928
+ errorMessage: configError ?? (!isConfigured ? t("not_configured") : void 0),
894
929
  children: isConfigured ? /* @__PURE__ */ jsx(
895
930
  LeaderboardWidgetInner,
896
931
  {
@@ -911,11 +946,7 @@ function LeaderboardWidgetInner({
911
946
  }) {
912
947
  var _a;
913
948
  const { userId } = useTaskOnContext();
914
- const { messages } = useWidgetLocale({
915
- widgetId: "LeaderboardWidget",
916
- defaultMessages: enMessages,
917
- loadMessages: (locale) => __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./locales/en.json": () => Promise.resolve().then(() => en), "./locales/ja.json": () => import("./leaderboardwidget-ja-Bj6gz6y1.js"), "./locales/ko.json": () => import("./leaderboardwidget-ko-f1cLO9ic.js") }), `./locales/${locale}.json`, 3)
918
- });
949
+ const { t } = useLeaderboardLocale();
919
950
  const [activeTabId, setActiveTabId] = useState(
920
951
  defaultTabId || ((_a = config.leaderboards[0]) == null ? void 0 : _a.id) || ""
921
952
  );
@@ -923,14 +954,17 @@ function LeaderboardWidgetInner({
923
954
  const currentTab = useMemo(() => {
924
955
  return config.leaderboards.find((tab) => tab.id === activeTabId);
925
956
  }, [config.leaderboards, activeTabId]);
957
+ const [paginationTotal, setPaginationTotal] = useState(0);
926
958
  const {
927
959
  page: page2,
960
+ totalPages: actualTotalPages,
961
+ hasPrevious,
962
+ hasNext,
928
963
  goToPrevious,
929
964
  goToNext,
930
965
  reset: resetPagination
931
966
  } = usePagination({
932
- total: 0,
933
- // 初始值,hasPrevious/hasNext 将根据实际 total 重新计算
967
+ total: paginationTotal,
934
968
  pageSize: config.displayOptions.rows
935
969
  });
936
970
  const {
@@ -944,9 +978,9 @@ function LeaderboardWidgetInner({
944
978
  page: page2,
945
979
  pageSize: config.displayOptions.rows
946
980
  });
947
- const actualTotalPages = Math.max(1, Math.ceil(total / config.displayOptions.rows));
948
- const hasPrevious = page2 > 0;
949
- const hasNext = page2 < actualTotalPages - 1;
981
+ useEffect(() => {
982
+ setPaginationTotal(total);
983
+ }, [total]);
950
984
  const isSprint = (currentTab == null ? void 0 : currentTab.type) === LeaderboardContentType.LeaderboardSprint;
951
985
  const { rewardSummary, loading: rewardLoading } = useCampaignReward(
952
986
  isSprint ? currentTab == null ? void 0 : currentTab.relatedId : void 0
@@ -985,7 +1019,7 @@ function LeaderboardWidgetInner({
985
1019
  }, [leaderboardData]);
986
1020
  if (leaderboardError) {
987
1021
  return /* @__PURE__ */ jsx("div", { className: `taskon-leaderboard taskon-leaderboard--error ${className}`, style, children: /* @__PURE__ */ jsxs("div", { className: "taskon-leaderboard__error", children: [
988
- /* @__PURE__ */ jsx("p", { className: "taskon-leaderboard__error-text", children: messages.error }),
1022
+ /* @__PURE__ */ jsx("p", { className: "taskon-leaderboard__error-text", children: t("error") }),
989
1023
  /* @__PURE__ */ jsx(
990
1024
  Button,
991
1025
  {
@@ -993,7 +1027,7 @@ function LeaderboardWidgetInner({
993
1027
  size: "medium",
994
1028
  onClick: refreshLeaderboard,
995
1029
  className: "taskon-leaderboard__retry-btn",
996
- children: messages.retry
1030
+ children: t("retry")
997
1031
  }
998
1032
  )
999
1033
  ] }) });
@@ -1017,7 +1051,6 @@ function LeaderboardWidgetInner({
1017
1051
  showTitle: config.displayOptions.showTitle,
1018
1052
  rewardSummary,
1019
1053
  participantsCount,
1020
- messages,
1021
1054
  onOpenRewardRules: isSprint ? handleOpenRewardRules : void 0
1022
1055
  }
1023
1056
  ),
@@ -1028,7 +1061,6 @@ function LeaderboardWidgetInner({
1028
1061
  allTimeData,
1029
1062
  campaignData,
1030
1063
  currentUserId: userId,
1031
- messages,
1032
1064
  onUserClick,
1033
1065
  rewardTiers: rewardSummary == null ? void 0 : rewardSummary.tiers,
1034
1066
  loading: leaderboardLoading || rewardLoading,
@@ -1044,8 +1076,7 @@ function LeaderboardWidgetInner({
1044
1076
  hasPrevious,
1045
1077
  hasNext,
1046
1078
  onPrevious: goToPrevious,
1047
- onNext: goToNext,
1048
- messages
1079
+ onNext: goToNext
1049
1080
  }
1050
1081
  ),
1051
1082
  isSprint && /* @__PURE__ */ jsx(
@@ -1053,21 +1084,11 @@ function LeaderboardWidgetInner({
1053
1084
  {
1054
1085
  isOpen: isRewardModalOpen,
1055
1086
  onClose: handleCloseRewardRules,
1056
- rewardSummary,
1057
- messages
1087
+ rewardSummary
1058
1088
  }
1059
1089
  )
1060
1090
  ] });
1061
1091
  }
1062
1092
  export {
1063
- LeaderboardWidget as L,
1064
- RankBadge as R,
1065
- UserCell as U,
1066
- useCampaignReward as a,
1067
- LeaderboardTabs as b,
1068
- LeaderboardHeader as c,
1069
- LeaderboardTable as d,
1070
- LeaderboardPagination as e,
1071
- RewardRulesModal as f,
1072
- useLeaderboard as u
1093
+ LeaderboardWidget as L
1073
1094
  };