feat(api, agents, i18n): enhance settlement features and multi-language support
Added new types and API functions for settlement period summaries and credit ledgers, improving the management of agent settlements. Updated the admin console to reflect these changes, enhancing user experience with better navigation and data presentation. Additionally, expanded multi-language support by incorporating new translations in English, Nepali, and Chinese for settlement-related terms, ensuring consistency across the platform.
This commit is contained in:
@@ -270,20 +270,17 @@ export function PlayerDetailConsole({ playerId }: { playerId: number }) {
|
||||
</div>
|
||||
|
||||
<Tabs defaultValue="overview" className="gap-4">
|
||||
<TabsList variant="line" className="w-full justify-start border-b rounded-none bg-transparent p-0">
|
||||
<TabsTrigger value="overview" className="rounded-none px-3">
|
||||
{t("tabOverview")}
|
||||
</TabsTrigger>
|
||||
<TabsTrigger value="tickets" className="rounded-none px-3">
|
||||
{t("tabTickets")}
|
||||
</TabsTrigger>
|
||||
<TabsTrigger value="wallet" className="rounded-none px-3">
|
||||
<TabsList
|
||||
variant="line"
|
||||
className="h-auto w-full justify-start gap-1 rounded-none border-b border-border/60 bg-transparent p-0 px-1"
|
||||
>
|
||||
<TabsTrigger value="overview">{t("tabOverview")}</TabsTrigger>
|
||||
<TabsTrigger value="tickets">{t("tabTickets")}</TabsTrigger>
|
||||
<TabsTrigger value="wallet">
|
||||
{isCreditPlayer ? t("tabCreditLedger") : t("tabWalletTxns")}
|
||||
</TabsTrigger>
|
||||
{showTransferTab ? (
|
||||
<TabsTrigger value="transfers" className="rounded-none px-3">
|
||||
{t("tabTransferOrders")}
|
||||
</TabsTrigger>
|
||||
<TabsTrigger value="transfers">{t("tabTransferOrders")}</TabsTrigger>
|
||||
) : null}
|
||||
</TabsList>
|
||||
|
||||
|
||||
@@ -64,6 +64,7 @@ import { useAdminCurrencyCatalog } from "@/hooks/use-admin-currency-catalog";
|
||||
import { adminPlayerDetailPath } from "@/lib/admin-player-paths";
|
||||
import { PlayerFundingModeBadge } from "@/components/admin/player-funding-badges";
|
||||
import { playerBalanceCells } from "@/lib/admin-player-display";
|
||||
import { ADMIN_SELECT_FILTER_ALL, adminSiteSelectLabel } from "@/lib/admin-select-display";
|
||||
import { formatAdminMinorUnits } from "@/lib/money";
|
||||
import { LotteryApiBizError } from "@/types/api/errors";
|
||||
import type { AdminPlayerRow } from "@/types/api/admin-player";
|
||||
@@ -419,17 +420,27 @@ export function PlayersConsole(): React.ReactElement {
|
||||
{t("filterSite")}
|
||||
</Label>
|
||||
<Select
|
||||
value={siteFilter || "__all__"}
|
||||
value={siteFilter || ADMIN_SELECT_FILTER_ALL}
|
||||
onValueChange={(value) => {
|
||||
setSiteFilter(value === "__all__" ? "" : value);
|
||||
setSiteFilter(
|
||||
value == null || value === ADMIN_SELECT_FILTER_ALL ? "" : value,
|
||||
);
|
||||
setPage(1);
|
||||
}}
|
||||
>
|
||||
<SelectTrigger id="player-site-filter" className="w-full sm:w-[12rem]">
|
||||
<SelectValue placeholder={t("filterAllSites")} />
|
||||
<SelectValue>
|
||||
{(v) =>
|
||||
adminSiteSelectLabel(
|
||||
v,
|
||||
isSuperAdmin ? siteOptions : profile?.accessible_sites ?? [],
|
||||
t("filterAllSites"),
|
||||
)
|
||||
}
|
||||
</SelectValue>
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
<SelectItem value="__all__">{t("filterAllSites")}</SelectItem>
|
||||
<SelectItem value={ADMIN_SELECT_FILTER_ALL}>{t("filterAllSites")}</SelectItem>
|
||||
{(isSuperAdmin ? siteOptions : profile?.accessible_sites ?? []).map((site) => (
|
||||
<SelectItem key={site.code} value={site.code}>
|
||||
{site.name ? `${site.name} (${site.code})` : site.code}
|
||||
|
||||
Reference in New Issue
Block a user