-
- {t('tos')}
-
-
- {t('privacyPolicy')}
-
+
+
+
+
{site.site_name} © All rights reserved.
+
+
+ {t('tos')}
+
+
+ {t('privacyPolicy')}
+
+
diff --git a/apps/user/components/main/HomeContent.tsx b/apps/user/components/main/HomeContent.tsx
index fe0ad8b..6ccca2d 100644
--- a/apps/user/components/main/HomeContent.tsx
+++ b/apps/user/components/main/HomeContent.tsx
@@ -1,10 +1,16 @@
+'use client';
+
import { Button } from '@workspace/ui/components/button';
+import { useRef } from 'react';
+import OfferDialog, { OfferDialogRef } from './OfferDialog/index';
export default function HomeContent() {
+ const dialogRef = useRef
(null);
+
return (
{/* 大标题 */}
-
+
连接
任何时间
@@ -12,19 +18,24 @@ export default function HomeContent() {
任何地点
{/* 副标题 */}
-
-
-
+
+
+
Airo™Port
提供极稳,极简,极速的网络服务
-
获取订阅地址,开始顶级的私密网络体验
+
获取订阅地址,开始顶级的私密网络体验
{/* 按钮 */}
-
);
}
diff --git a/apps/user/components/main/OfferDialog/index.tsx b/apps/user/components/main/OfferDialog/index.tsx
new file mode 100644
index 0000000..bbba377
--- /dev/null
+++ b/apps/user/components/main/OfferDialog/index.tsx
@@ -0,0 +1,39 @@
+import CloseSvg from '@/components/CustomIcon/icons/close.svg';
+import { Dialog, DialogContent, DialogTitle } from '@workspace/ui/components/dialog';
+import Image from 'next/image';
+import { forwardRef, useImperativeHandle, useState } from 'react';
+
+export interface OfferDialogRef {
+ show: () => void;
+ hide: () => void;
+}
+
+const OfferDialog = forwardRef((props, ref) => {
+ const [open, setOpen] = useState(false);
+
+ useImperativeHandle(ref, () => ({
+ show: () => setOpen(true),
+ hide: () => setOpen(false),
+ }));
+
+ return (
+
+ );
+});
+
+export default OfferDialog;
diff --git a/apps/user/components/main/hero.tsx b/apps/user/components/main/hero.tsx
index e4ebdf7..7ab7bf4 100644
--- a/apps/user/components/main/hero.tsx
+++ b/apps/user/components/main/hero.tsx
@@ -38,7 +38,7 @@ export function Hero() {
className='*:text-muted-foreground mb-8 max-w-xl'
/>
)}
-
+
,
React.ComponentPropsWithoutRef
->(({ className, children, ...props }, ref) => (
+>(({ className, closeClassName, closeIcon, children, ...props }, ref) => (
{children}
-
-
+
+ {closeIcon || }
Close