diff --git a/apps/admin/components/billing.tsx b/apps/admin/components/billing.tsx
index 11513a5..553bcac 100644
--- a/apps/admin/components/billing.tsx
+++ b/apps/admin/components/billing.tsx
@@ -1,8 +1,6 @@
import { Avatar, AvatarFallback, AvatarImage } from '@shadcn/ui/avatar';
import { Card, CardDescription, CardHeader, CardTitle } from '@shadcn/ui/card';
-import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@shadcn/ui/tooltip';
import { getTranslations } from 'next-intl/server';
-import Image from 'next/legacy/image';
import Link from 'next/link';
const BASE_URL = 'https://cdn.jsdelivr.net/gh/perfect-panel/ppanel-assets/billing/index.json';
@@ -15,7 +13,6 @@ interface ItemType {
logo: string;
title: string;
description: string;
- poster: string;
expiryDate: string;
href: string;
}
@@ -37,37 +34,29 @@ export default async function Billing({ type }: BillingProps) {
}
if (list && list.length === 0) return null;
return (
-
+ <>
{t('title')}
{t('description')}
{list.map((item, index) => (
-
-
-
-
-
-
-
- {item.title}
-
-
- {item.title}
- {item.description}
-
-
-
-
-
-
- {item.description}
-
-
-
+
+
+
+
+
+ {item.title}
+
+
+ {item.title}
+ {item.description}
+
+
+
+
))}
-
+ >
);
}
diff --git a/apps/admin/components/dashboard/statistics.tsx b/apps/admin/components/dashboard/statistics.tsx
index 13e04d4..8d54ca6 100644
--- a/apps/admin/components/dashboard/statistics.tsx
+++ b/apps/admin/components/dashboard/statistics.tsx
@@ -2,14 +2,7 @@
import { Icon } from '@iconify/react';
import { formatBytes, unitConversion } from '@repo/ui/utils';
-import {
- Card,
- CardContent,
- CardDescription,
- CardFooter,
- CardHeader,
- CardTitle,
-} from '@shadcn/ui/card';
+import { Card, CardContent, CardFooter, CardHeader, CardTitle } from '@shadcn/ui/card';
import {
ChartConfig,
ChartContainer,
@@ -119,12 +112,12 @@ export default function Statistics() {
return (
<>
统计
-
+
{[
{
title: '在线IP数',
value: '666',
- icon: 'uil:network-wired',
+ icon: 'uil:users-alt',
onClick: () => console.log('在线IP数 clicked'),
},
{
@@ -171,13 +164,11 @@ export default function Statistics() {
},
].map((item, index) => (
-
+
{item.title}
-
-
-
-
+
+
{item.value}
diff --git a/apps/admin/config/constants.ts b/apps/admin/config/constants.ts
index fa3f488..c7c91f9 100644
--- a/apps/admin/config/constants.ts
+++ b/apps/admin/config/constants.ts
@@ -2,10 +2,13 @@ import { env } from 'next-runtime-env';
export const locales = ['en-US', 'zh-CN'];
-export const NEXT_PUBLIC_DEFAULT_LANGUAGE = env('NEXT_PUBLIC_DEFAULT_LANGUAGE') || locales[0];
+export const NEXT_PUBLIC_DEFAULT_LANGUAGE =
+ env('NEXT_PUBLIC_DEFAULT_LANGUAGE') || process.env.NEXT_PUBLIC_DEFAULT_LANGUAGE || locales[0];
-export const NEXT_PUBLIC_SITE_URL = env('NEXT_PUBLIC_SITE_URL');
-export const NEXT_PUBLIC_API_URL = env('NEXT_PUBLIC_API_URL');
+export const NEXT_PUBLIC_SITE_URL = env('NEXT_PUBLIC_SITE_URL') || process.env.NEXT_PUBLIC_SITE_URL;
+export const NEXT_PUBLIC_API_URL = env('NEXT_PUBLIC_API_URL') || process.env.NEXT_PUBLIC_API_URL;
-export const NEXT_PUBLIC_DEFAULT_USER_EMAIL = env('NEXT_PUBLIC_DEFAULT_USER_EMAIL');
-export const NEXT_PUBLIC_DEFAULT_USER_PASSWORD = env('NEXT_PUBLIC_DEFAULT_USER_PASSWORD');
+export const NEXT_PUBLIC_DEFAULT_USER_EMAIL =
+ env('NEXT_PUBLIC_DEFAULT_USER_EMAIL') || process.env.NEXT_PUBLIC_DEFAULT_USER_EMAIL;
+export const NEXT_PUBLIC_DEFAULT_USER_PASSWORD =
+ env('NEXT_PUBLIC_DEFAULT_USER_PASSWORD') || process.env.NEXT_PUBLIC_DEFAULT_USER_PASSWORD;
diff --git a/apps/user/components/empty.tsx b/apps/user/components/empty.tsx
index 9362887..db10c99 100644
--- a/apps/user/components/empty.tsx
+++ b/apps/user/components/empty.tsx
@@ -12,7 +12,7 @@ export function Empty() {
useEffect(() => {
const random = Math.floor(Math.random() * 10);
setDescription(t(`empty.${random}`));
- }, []);
+ }, [t]);
return <_Empty description={description} />;
}
diff --git a/apps/user/config/constants.ts b/apps/user/config/constants.ts
index 9b1d224..85aa509 100644
--- a/apps/user/config/constants.ts
+++ b/apps/user/config/constants.ts
@@ -2,19 +2,28 @@ import { env } from 'next-runtime-env';
export const locales = ['en-US', 'zh-CN'];
-export const NEXT_PUBLIC_DEFAULT_LANGUAGE = env('NEXT_PUBLIC_DEFAULT_LANGUAGE') || locales[0];
+export const NEXT_PUBLIC_DEFAULT_LANGUAGE =
+ env('NEXT_PUBLIC_DEFAULT_LANGUAGE') || process.env.NEXT_PUBLIC_DEFAULT_LANGUAGE || locales[0];
-export const NEXT_PUBLIC_SITE_URL = env('NEXT_PUBLIC_SITE_URL');
-export const NEXT_PUBLIC_API_URL = env('NEXT_PUBLIC_API_URL');
+export const NEXT_PUBLIC_SITE_URL = env('NEXT_PUBLIC_SITE_URL') || process.env.NEXT_PUBLIC_SITE_URL;
+export const NEXT_PUBLIC_API_URL = env('NEXT_PUBLIC_API_URL') || process.env.NEXT_PUBLIC_API_URL;
-export const NEXT_PUBLIC_DEFAULT_USER_EMAIL = env('NEXT_PUBLIC_DEFAULT_USER_EMAIL');
-export const NEXT_PUBLIC_DEFAULT_USER_PASSWORD = env('NEXT_PUBLIC_DEFAULT_USER_PASSWORD');
+export const NEXT_PUBLIC_DEFAULT_USER_EMAIL =
+ env('NEXT_PUBLIC_DEFAULT_USER_EMAIL') || process.env.NEXT_PUBLIC_DEFAULT_USER_EMAIL;
+export const NEXT_PUBLIC_DEFAULT_USER_PASSWORD =
+ env('NEXT_PUBLIC_DEFAULT_USER_PASSWORD') || process.env.NEXT_PUBLIC_DEFAULT_USER_PASSWORD;
-export const NEXT_PUBLIC_EMAIL = env('NEXT_PUBLIC_EMAIL');
+export const NEXT_PUBLIC_EMAIL = env('NEXT_PUBLIC_EMAIL') || process.env.NEXT_PUBLIC_EMAIL;
-export const NEXT_PUBLIC_TELEGRAM_LINK = env('NEXT_PUBLIC_TELEGRAM_LINK');
-export const NEXT_PUBLIC_DISCORD_LINK = env('NEXT_PUBLIC_DISCORD_LINK');
-export const NEXT_PUBLIC_GITHUB_LINK = env('NEXT_PUBLIC_GITHUB_LINK');
-export const NEXT_PUBLIC_LINKEDIN_LINK = env('NEXT_PUBLIC_LINKEDIN_LINK');
-export const NEXT_PUBLIC_TWITTER_LINK = env('NEXT_PUBLIC_TWITTER_LINK');
-export const NEXT_PUBLIC_INSTAGRAM_LINK = env('NEXT_PUBLIC_INSTAGRAM_LINK');
+export const NEXT_PUBLIC_TELEGRAM_LINK =
+ env('NEXT_PUBLIC_TELEGRAM_LINK') || process.env.NEXT_PUBLIC_TELEGRAM_LINK;
+export const NEXT_PUBLIC_DISCORD_LINK =
+ env('NEXT_PUBLIC_DISCORD_LINK') || process.env.NEXT_PUBLIC_DISCORD_LINK;
+export const NEXT_PUBLIC_GITHUB_LINK =
+ env('NEXT_PUBLIC_GITHUB_LINK') || process.env.NEXT_PUBLIC_GITHUB_LINK;
+export const NEXT_PUBLIC_LINKEDIN_LINK =
+ env('NEXT_PUBLIC_LINKEDIN_LINK') || process.env.NEXT_PUBLIC_LINKEDIN_LINK;
+export const NEXT_PUBLIC_TWITTER_LINK =
+ env('NEXT_PUBLIC_TWITTER_LINK') || process.env.NEXT_PUBLIC_TWITTER_LINK;
+export const NEXT_PUBLIC_INSTAGRAM_LINK =
+ env('NEXT_PUBLIC_INSTAGRAM_LINK') || process.env.NEXT_PUBLIC_INSTAGRAM_LINK;