From b3373924e611975f2d5c7fdf070def0d710d89d3 Mon Sep 17 00:00:00 2001 From: zhom <2717306+zhom@users.noreply.github.com> Date: Wed, 24 Jun 2026 03:10:28 +0400 Subject: [PATCH] style: improve responsiveness --- src/app/page.tsx | 8 +- src/components/account-page.tsx | 48 +++--- src/components/app-update-toast.tsx | 18 +-- src/components/bandwidth-mini-chart.tsx | 6 +- src/components/camoufox-config-dialog.tsx | 6 +- src/components/command-palette.tsx | 2 +- src/components/cookie-copy-dialog.tsx | 32 ++-- src/components/cookie-management-dialog.tsx | 38 ++--- src/components/create-group-dialog.tsx | 2 +- src/components/create-profile-dialog.tsx | 78 +++++----- src/components/custom-toast.tsx | 48 +++--- src/components/data-table-action-bar.tsx | 6 +- src/components/delete-confirmation-dialog.tsx | 6 +- src/components/delete-group-dialog.tsx | 6 +- src/components/dns-blocklist-dialog.tsx | 8 +- src/components/edit-group-dialog.tsx | 2 +- .../extension-group-assignment-dialog.tsx | 6 +- .../extension-management-dialog.tsx | 94 ++++++------ src/components/group-assignment-dialog.tsx | 8 +- src/components/group-management-dialog.tsx | 14 +- src/components/home-header.tsx | 36 ++--- src/components/import-profile-dialog.tsx | 16 +- src/components/integrations-dialog.tsx | 60 ++++---- src/components/location-proxy-dialog.tsx | 2 +- src/components/multiple-selector.tsx | 14 +- src/components/onboarding-card.tsx | 22 +-- src/components/permission-dialog.tsx | 2 +- src/components/profile-data-table.tsx | 122 ++++++++-------- src/components/profile-info-dialog.tsx | 138 +++++++++--------- src/components/profile-selector-dialog.tsx | 8 +- src/components/profile-sync-dialog.tsx | 12 +- src/components/proxy-assignment-dialog.tsx | 10 +- src/components/proxy-check-button.tsx | 6 +- src/components/proxy-export-dialog.tsx | 14 +- src/components/proxy-form-dialog.tsx | 4 +- src/components/proxy-import-dialog.tsx | 30 ++-- src/components/proxy-management-dialog.tsx | 50 +++---- src/components/rail-nav.tsx | 44 +++--- src/components/release-type-selector.tsx | 8 +- src/components/settings-dialog.tsx | 40 ++--- .../shared-camoufox-config-form.tsx | 50 +++---- src/components/shortcuts-page.tsx | 20 +-- src/components/sync-all-dialog.tsx | 6 +- src/components/sync-config-dialog.tsx | 18 +-- src/components/sync-follower-dialog.tsx | 14 +- src/components/thank-you-dialog.tsx | 2 +- src/components/traffic-details-dialog.tsx | 56 +++---- src/components/ui/alert.tsx | 6 +- src/components/ui/animated-switch.tsx | 4 +- src/components/ui/animated-tabs.tsx | 6 +- src/components/ui/badge.tsx | 6 +- src/components/ui/button.tsx | 8 +- src/components/ui/card.tsx | 4 +- src/components/ui/chart.tsx | 10 +- src/components/ui/checkbox.tsx | 2 +- src/components/ui/color-picker.tsx | 30 ++-- src/components/ui/command.tsx | 14 +- src/components/ui/dialog.tsx | 10 +- src/components/ui/dropdown-menu.tsx | 18 +-- src/components/ui/fading-scroll-area.tsx | 4 +- src/components/ui/input.tsx | 6 +- src/components/ui/popover.tsx | 2 +- src/components/ui/pro-badge.tsx | 2 +- src/components/ui/progress.tsx | 4 +- src/components/ui/radio-group.tsx | 2 +- src/components/ui/ripple.tsx | 10 +- src/components/ui/scroll-area.tsx | 4 +- src/components/ui/select.tsx | 12 +- src/components/ui/sonner.tsx | 2 +- src/components/ui/table.tsx | 8 +- src/components/ui/tabs.tsx | 6 +- src/components/ui/textarea.tsx | 2 +- src/components/ui/tooltip.tsx | 4 +- src/components/vpn-check-button.tsx | 4 +- src/components/vpn-import-dialog.tsx | 12 +- src/components/wayfern-config-form.tsx | 58 ++++---- src/components/wayfern-terms-dialog.tsx | 2 +- src/components/welcome-dialog.tsx | 16 +- src/components/window-drag-area.tsx | 8 +- 79 files changed, 762 insertions(+), 764 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index bb7240f..0d16515 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1637,7 +1637,7 @@ export default function Home() { : t(`pageTitle.${currentPage}`); return ( -
+
-
+
-
+
{currentPage === "profiles" && ( -
+
{isLoading && groupsData.length === 0 ? null : null} - +
@@ -226,16 +226,16 @@ export function AccountPage({
-
+
{isLoggedIn && user ? ( <> -

+

{user.email}

-

+

{t("account.plan", { plan: user.plan, period: user.planPeriod ?? "—", @@ -247,7 +247,7 @@ export function AccountPage({

{t("account.signedOut")}

-

+

{t("account.signedOutDescription")}

@@ -257,39 +257,39 @@ export function AccountPage({ {isLoggedIn && user && (
-
-

+

+

{t("account.fields.plan")}

{user.plan}

-
-

+

+

{t("account.fields.status")}

{user.subscriptionStatus ?? "—"}

{user.teamRole && ( -
-

+

+

{t("account.fields.teamRole")}

{user.teamRole}

)} {user.planPeriod && ( -
-

+

+

{t("account.fields.period")}

{user.planPeriod}

)} {typeof user.deviceOrdinal === "number" && ( -
-

+

+

{t("account.fields.device")}

@@ -321,7 +321,7 @@ export function AccountPage({

)} -
+
{isLoggedIn ? ( <>
@@ -431,7 +431,7 @@ export function AccountPage({ ? t("common.aria.hideToken") : t("common.aria.showToken") } - className="absolute right-2 top-1/2 -translate-y-1/2 p-1 text-muted-foreground hover:text-foreground" + className="absolute top-1/2 right-2 -translate-y-1/2 p-1 text-muted-foreground hover:text-foreground" > {showToken ? ( @@ -449,7 +449,7 @@ export function AccountPage({ {connectionStatus === "connected" && ( {t("sync.status.connected")} diff --git a/src/components/app-update-toast.tsx b/src/components/app-update-toast.tsx index 2627133..bdc6178 100644 --- a/src/components/app-update-toast.tsx +++ b/src/components/app-update-toast.tsx @@ -35,13 +35,13 @@ export function AppUpdateToast({ }; return ( -
-
- +
+
+
-
-
+
+
{updateReady @@ -59,18 +59,18 @@ export function AppUpdateToast({ variant="ghost" size="sm" onClick={onDismiss} - className="p-0 size-6 shrink-0" + className="size-6 shrink-0 p-0" >
-
+
{updateReady ? ( void handleRestartClick()} size="sm" - className="flex gap-2 items-center text-xs" + className="flex items-center gap-2 text-xs" > {t("appUpdate.toast.restartNow")} @@ -81,7 +81,7 @@ export function AppUpdateToast({ {t("appUpdate.toast.viewRelease")} diff --git a/src/components/bandwidth-mini-chart.tsx b/src/components/bandwidth-mini-chart.tsx index dade541..c6204d9 100644 --- a/src/components/bandwidth-mini-chart.tsx +++ b/src/components/bandwidth-mini-chart.tsx @@ -63,11 +63,11 @@ export function BandwidthMiniChart({ type="button" onClick={onClick} className={cn( - "relative flex items-center gap-1.5 px-2 rounded cursor-pointer hover:bg-accent/50 transition-colors w-full min-w-0 border-none bg-transparent", + "relative flex w-full min-w-0 cursor-pointer items-center gap-1.5 rounded border-none bg-transparent px-2 transition-colors hover:bg-accent/50", className, )} > -
+
- + {formatBytes(currentBandwidth)} diff --git a/src/components/camoufox-config-dialog.tsx b/src/components/camoufox-config-dialog.tsx index bafed30..086aa8d 100644 --- a/src/components/camoufox-config-dialog.tsx +++ b/src/components/camoufox-config-dialog.tsx @@ -149,7 +149,7 @@ export function CamoufoxConfigDialog({ return ( - + {isRunning @@ -164,7 +164,7 @@ export function CamoufoxConfigDialog({ - +
{profile.browser === "wayfern" ? ( - + {isRunning ? t("common.buttons.close") : t("common.buttons.cancel")} diff --git a/src/components/command-palette.tsx b/src/components/command-palette.tsx index 1edaabb..7183c22 100644 --- a/src/components/command-palette.tsx +++ b/src/components/command-palette.tsx @@ -74,7 +74,7 @@ function Tokens({ tokens }: { tokens: string[] }) { {tokens.map((tok, i) => ( {tok} diff --git a/src/components/cookie-copy-dialog.tsx b/src/components/cookie-copy-dialog.tsx index 15810ec..aa37139 100644 --- a/src/components/cookie-copy-dialog.tsx +++ b/src/components/cookie-copy-dialog.tsx @@ -332,7 +332,7 @@ export function CookieCopyDialog({ return ( - + @@ -349,7 +349,7 @@ export function CookieCopyDialog({ -
+
{isLoadingCookies ? ( -
-
+
+
) : error ? ( -
+
{error}
) : filteredDomains.length === 0 ? ( @@ -463,8 +463,8 @@ export function CookieCopyDialog({ : t("cookies.copy.noFound")}
) : ( - -
+ +
{filteredDomains.map((domain) => ( -
+
{ @@ -559,7 +559,7 @@ function DomainRow({ />
{isExpanded && ( -
+
{domain.cookies.map((cookie) => { const isSelected = domainSelection?.cookies.has(cookie.name) ?? false; return (
- + {!fileContent && (

@@ -418,7 +418,7 @@ export function CookieManagementDialog({

document.getElementById("cookie-file-input")?.click() } @@ -429,8 +429,8 @@ export function CookieManagementDialog({ } }} > - -

+ +

{t("cookies.management.dropPrompt")}
@@ -454,7 +454,7 @@ export function CookieManagementDialog({ {fileContent && !importResult && (

-
+
{fileName}
@@ -481,7 +481,7 @@ export function CookieManagementDialog({ {importResult && (
-
+
{t("cookies.management.importedSuccess", { imported: importResult.cookies_imported, @@ -505,7 +505,7 @@ export function CookieManagementDialog({ )} - +
0 && "pb-16", )} style={ @@ -1367,12 +1367,12 @@ export function ExtensionManagementDialog({ -
+
{/* Create group form */} {showCreateGroup && ( -
+
{ @@ -1412,7 +1412,7 @@ export function ExtensionManagementDialog({ ) : ( 0 && "pb-16", )} style={ @@ -1509,7 +1509,7 @@ export function ExtensionManagementDialog({ } }} > - + {t("extensions.editGroup")} @@ -1517,7 +1517,7 @@ export function ExtensionManagementDialog({ - +
@@ -1562,11 +1562,11 @@ export function ExtensionManagementDialog({
{editGroupExtensionIds.length === 0 ? ( -
+
{t("extensions.noExtensionsInGroup")}
) : ( -
+
{editGroupExtensionIds.map((extId) => { const ext = extensions.find((e) => e.id === extId); if (!ext) return null; @@ -1576,14 +1576,14 @@ export function ExtensionManagementDialog({ className="flex items-center gap-2 rounded-md border px-2 py-1.5" > {renderExtensionIcon(ext, "sm")} - + {ext.name} {renderCompatIcons(ext.browser_compatibility)} )}
@@ -265,9 +265,9 @@ const HomeHeader = ({ onGroupSelect(active ? ALL_FILTER_ID : group.id); }} className={cn( - "flex items-center gap-1.5 h-7 px-1 text-xs transition-colors duration-100 shrink-0", + "flex h-7 shrink-0 items-center gap-1.5 px-1 text-xs transition-colors duration-100", active - ? "text-foreground font-medium" + ? "font-medium text-foreground" : "text-muted-foreground hover:text-foreground", )} > @@ -291,7 +291,7 @@ const HomeHeader = ({ behavior: "smooth", }); }} - className="absolute right-0 top-1/2 -translate-y-1/2 z-10 grid place-items-center size-5 rounded-full bg-card/90 hover:bg-accent text-muted-foreground hover:text-foreground transition-colors shadow-sm" + className="absolute top-1/2 right-0 z-10 grid size-5 -translate-y-1/2 place-items-center rounded-full bg-card/90 text-muted-foreground shadow-sm transition-colors hover:bg-accent hover:text-foreground" > @@ -310,16 +310,16 @@ const HomeHeader = ({ onChange={(e) => { onSearchQueryChange(e.target.value); }} - className="pr-7 pl-8 w-36 min-[860px]:w-52 h-7 text-xs" + className="h-7 w-36 pr-7 pl-8 text-xs min-[860px]:w-52" /> - + {searchQuery ? (
-

+

{t("importProfile.examplePaths")}
macOS: ~/Library/Application @@ -604,9 +604,9 @@ export function ImportProfileDialog({

diff --git a/src/components/integrations-dialog.tsx b/src/components/integrations-dialog.tsx index 803ce1f..0b8504e 100644 --- a/src/components/integrations-dialog.tsx +++ b/src/components/integrations-dialog.tsx @@ -308,7 +308,7 @@ export function IntegrationsDialog({ }} subPage={subPage} > - + {!subPage && ( {t("integrations.title")} @@ -317,8 +317,8 @@ export function IntegrationsDialog({
@@ -333,12 +333,12 @@ export function IntegrationsDialog({ -
+
- +