fix(user): show expire time & improve renewal dialog on mobile (#22)

* 🐛 fix(admin): prioritize follow-up tickets by updated time

*  feat(dashboard): show node/user traffic ranks side-by-side

* 🐛 fix(user): show expire time & improve renewal dialog on mobile
This commit is contained in:
web@ppanel 2026-03-04 03:00:53 +08:00 committed by shanshanzhong
parent 8317e93d6b
commit 778e78ac68
4 changed files with 8 additions and 3 deletions

View File

@ -6,6 +6,7 @@
"copySuccess": "Copy Success", "copySuccess": "Copy Success",
"deducted": "Deducted", "deducted": "Deducted",
"download": "Download", "download": "Download",
"expireAt": "Expires At",
"expirationDays": "Expiration Days", "expirationDays": "Expiration Days",
"expired": "Expired", "expired": "Expired",
"finished": "Finished", "finished": "Finished",

View File

@ -6,6 +6,7 @@
"copySuccess": "复制成功", "copySuccess": "复制成功",
"deducted": "已扣除", "deducted": "已扣除",
"download": "下载", "download": "下载",
"expireAt": "到期时间",
"expirationDays": "过期天数", "expirationDays": "过期天数",
"expired": "已过期", "expired": "已过期",
"finished": "已完成", "finished": "已完成",

View File

@ -115,7 +115,7 @@ export default function Renewal({ id, subscribe }: Readonly<RenewalProps>) {
<DialogTrigger asChild> <DialogTrigger asChild>
<Button size="sm">{t("renew", "Renew")}</Button> <Button size="sm">{t("renew", "Renew")}</Button>
</DialogTrigger> </DialogTrigger>
<DialogContent className="flex h-full flex-col overflow-hidden md:h-auto md:max-w-screen-lg"> <DialogContent className="flex h-full flex-col overflow-y-auto md:h-auto md:max-w-screen-lg">
<DialogHeader> <DialogHeader>
<DialogTitle> <DialogTitle>
{t("renewSubscription", "Renew Subscription")} {t("renewSubscription", "Renew Subscription")}
@ -164,7 +164,7 @@ export default function Renewal({ id, subscribe }: Readonly<RenewalProps>) {
/> />
</div> </div>
<Button <Button
className="fixed bottom-0 left-0 w-full md:relative md:mt-6" className="sticky bottom-0 left-0 w-full bg-background md:relative md:mt-6"
disabled={loading} disabled={loading}
onClick={handleSubmit} onClick={handleSubmit}
> >

View File

@ -277,7 +277,10 @@ export default function Content() {
<CardTitle className="font-medium"> <CardTitle className="font-medium">
{item.subscribe.name} {item.subscribe.name}
<p className="mt-1 text-foreground/50 text-sm"> <p className="mt-1 text-foreground/50 text-sm">
{formatDate(item.start_time)} {t("expireAt", "Expires At")}:{" "}
{item.expire_time
? formatDate(item.expire_time)
: t("noLimit", "No Limit")}
</p> </p>
</CardTitle> </CardTitle>
{item.status !== 4 && ( {item.status !== 4 && (