diff --git a/src/app/project/app/[appId]/app-action-buttons.tsx b/src/app/project/app/[appId]/app-action-buttons.tsx index f9ec70b..f183e3d 100644 --- a/src/app/project/app/[appId]/app-action-buttons.tsx +++ b/src/app/project/app/[appId]/app-action-buttons.tsx @@ -6,9 +6,10 @@ import { deploy, startApp, stopApp } from "./actions"; import { AppExtendedModel } from "@/shared/model/app-extended.model"; import { Toast } from "@/frontend/utils/toast.utils"; import AppStatus from "./app-status"; -import { Hammer, Pause, Play, Rocket } from "lucide-react"; +import { ExternalLink, Hammer, Pause, Play, Rocket } from "lucide-react"; import { toast } from "sonner"; import { AppEventsDialog } from "./app-events-dialog"; +import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area"; export default function AppActionButtons({ app @@ -16,12 +17,22 @@ export default function AppActionButtons({ app: AppExtendedModel; }) { return - - - Toast.fromAction(() => deploy(app.id))}> Deploy - Toast.fromAction(() => deploy(app.id, true))} variant="secondary"> Rebuild - Toast.fromAction(() => startApp(app.id))} variant="secondary">Start - Toast.fromAction(() => stopApp(app.id))} variant="secondary"> Stop + + + + + Toast.fromAction(() => deploy(app.id))}> Deploy + Toast.fromAction(() => deploy(app.id, true))} variant="secondary"> Rebuild + Toast.fromAction(() => startApp(app.id))} variant="secondary">Start + Toast.fromAction(() => stopApp(app.id))} variant="secondary"> Stop + {app.appDomains.length > 0 && { + const domain = app.appDomains[0]; + const protocol = domain.useSsl ? 'https' : 'http'; + window.open(`${protocol}://${domain.hostname}`, '_blank'); + }} variant="secondary">} + + + ; } \ No newline at end of file diff --git a/src/app/project/app/[appId]/app-tabs.tsx b/src/app/project/app/[appId]/app-tabs.tsx index d0a5218..6dcdc97 100644 --- a/src/app/project/app/[appId]/app-tabs.tsx +++ b/src/app/project/app/[appId]/app-tabs.tsx @@ -19,6 +19,7 @@ import DbCredentials from "./credentials/db-crendentials"; import VolumeBackupList from "./volumes/volume-backup"; import { VolumeBackupExtendedModel } from "@/shared/model/volume-backup-extended.model"; import BasicAuth from "./advanced/basic-auth"; +import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area"; export default function AppTabs({ app, @@ -39,15 +40,19 @@ export default function AppTabs({ return ( openTab(newTab)} className="space-y-4"> - - Overview - {app.appType !== 'APP' && Credentials} - General - Environment - Domains - Storage - Advanced - + + + + Overview + {app.appType !== 'APP' && Credentials} + General + Environment + Domains + Storage + Advanced + + +