diff --git a/app/client/components/create-repository-form.tsx b/app/client/components/create-repository-form.tsx index 255dd7a..ad013db 100644 --- a/app/client/components/create-repository-form.tsx +++ b/app/client/components/create-repository-form.tsx @@ -2,6 +2,7 @@ import { arktypeResolver } from "@hookform/resolvers/arktype"; import { type } from "arktype"; import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; +import { Check, Pencil, Save, X } from "lucide-react"; import { cn, slugify } from "~/client/lib/utils"; import { deepClean } from "~/utils/object"; import { Button } from "./ui/button"; @@ -267,6 +268,7 @@ export const CreateRepositoryForm = ({ {form.watch("path") || "/var/lib/zerobyte/repositories"} @@ -278,7 +280,7 @@ export const CreateRepositoryForm = ({ - Important: Host Mount Required + Important: Host mount required

When selecting a custom path, ensure it is mounted from the host machine into the container.

@@ -320,8 +322,14 @@ export const CreateRepositoryForm = ({ /> - Cancel - setShowPathBrowser(false)}>Done + + + Cancel + + setShowPathBrowser(false)}> + + Done + @@ -775,6 +783,7 @@ export const CreateRepositoryForm = ({ {mode === "update" && ( )} diff --git a/app/client/components/create-volume-form.tsx b/app/client/components/create-volume-form.tsx index a4fa692..a497526 100644 --- a/app/client/components/create-volume-form.tsx +++ b/app/client/components/create-volume-form.tsx @@ -1,7 +1,7 @@ import { arktypeResolver } from "@hookform/resolvers/arktype"; import { useMutation } from "@tanstack/react-query"; import { type } from "arktype"; -import { CheckCircle, Loader2, XCircle } from "lucide-react"; +import { CheckCircle, Loader2, Pencil, Plug, Save, XCircle } from "lucide-react"; import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { cn, slugify } from "~/client/lib/utils"; @@ -152,6 +152,7 @@ export const CreateVolumeForm = ({ onSubmit, mode = "create", initialValues, for
{field.value}
@@ -561,6 +562,7 @@ export const CreateVolumeForm = ({ onSubmit, mode = "create", initialValues, for {!testBackendConnection.isPending && testMessage && !testMessage.success && ( )} + {!testBackendConnection.isPending && !testMessage && } {testBackendConnection.isPending ? "Testing..." : testMessage @@ -584,6 +586,7 @@ export const CreateVolumeForm = ({ onSubmit, mode = "create", initialValues, for )} {mode === "update" && ( )} diff --git a/app/client/components/restore-form.tsx b/app/client/components/restore-form.tsx index 4e4f779..1891da8 100644 --- a/app/client/components/restore-form.tsx +++ b/app/client/components/restore-form.tsx @@ -164,6 +164,7 @@ export function RestoreForm({ snapshot, repositoryName, snapshotId, returnPath } Cancel )} diff --git a/app/client/modules/backups/routes/backup-details.tsx b/app/client/modules/backups/routes/backup-details.tsx index c615822..4804c4b 100644 --- a/app/client/modules/backups/routes/backup-details.tsx +++ b/app/client/modules/backups/routes/backup-details.tsx @@ -2,6 +2,7 @@ import { useId, useState } from "react"; import { useQuery, useMutation } from "@tanstack/react-query"; import { redirect, useNavigate } from "react-router"; import { toast } from "sonner"; +import { Save, X } from "lucide-react"; import { Button } from "~/client/components/ui/button"; import { AlertDialog, @@ -206,9 +207,11 @@ export default function ScheduleDetailsPage({ params, loaderData }: Route.Compon
diff --git a/app/client/modules/backups/routes/create-backup.tsx b/app/client/modules/backups/routes/create-backup.tsx index 63f083a..f0c4763 100644 --- a/app/client/modules/backups/routes/create-backup.tsx +++ b/app/client/modules/backups/routes/create-backup.tsx @@ -1,6 +1,6 @@ import { useId, useState } from "react"; import { useMutation, useQuery } from "@tanstack/react-query"; -import { Database, HardDrive } from "lucide-react"; +import { Database, HardDrive, Plus } from "lucide-react"; import { Link, useNavigate } from "react-router"; import { toast } from "sonner"; import { @@ -162,6 +162,7 @@ export default function CreateBackup({ loaderData }: Route.ComponentProps) {
diff --git a/app/client/modules/notifications/routes/create-notification.tsx b/app/client/modules/notifications/routes/create-notification.tsx index 7990d65..72268a6 100644 --- a/app/client/modules/notifications/routes/create-notification.tsx +++ b/app/client/modules/notifications/routes/create-notification.tsx @@ -1,5 +1,5 @@ import { useMutation } from "@tanstack/react-query"; -import { Bell } from "lucide-react"; +import { Bell, Plus } from "lucide-react"; import { useId } from "react"; import { useNavigate } from "react-router"; import { toast } from "sonner"; @@ -68,6 +68,7 @@ export default function CreateNotification() { Cancel diff --git a/app/client/modules/notifications/routes/notification-details.tsx b/app/client/modules/notifications/routes/notification-details.tsx index 082f475..c667536 100644 --- a/app/client/modules/notifications/routes/notification-details.tsx +++ b/app/client/modules/notifications/routes/notification-details.tsx @@ -24,7 +24,7 @@ import { getNotificationDestination } from "~/client/api-client/sdk.gen"; import type { Route } from "./+types/notification-details"; import { cn } from "~/client/lib/utils"; import { Card, CardContent, CardHeader, CardTitle } from "~/client/components/ui/card"; -import { Bell, TestTube2 } from "lucide-react"; +import { Bell, Save, TestTube2, Trash2, X } from "lucide-react"; import { Alert, AlertDescription } from "~/client/components/ui/alert"; import { CreateNotificationForm, type NotificationFormValues } from "../components/create-notification-form"; @@ -147,6 +147,7 @@ export default function NotificationDetailsPage({ loaderData }: Route.ComponentP variant="destructive" loading={deleteDestination.isPending} > + Delete @@ -174,6 +175,7 @@ export default function NotificationDetailsPage({ loaderData }: Route.ComponentP
@@ -190,8 +192,14 @@ export default function NotificationDetailsPage({ loaderData }: Route.ComponentP
- Cancel - Delete + + + Cancel + + + + Delete + diff --git a/app/client/modules/repositories/routes/create-repository.tsx b/app/client/modules/repositories/routes/create-repository.tsx index 288e4ea..be1b483 100644 --- a/app/client/modules/repositories/routes/create-repository.tsx +++ b/app/client/modules/repositories/routes/create-repository.tsx @@ -1,5 +1,5 @@ import { useMutation } from "@tanstack/react-query"; -import { Database } from "lucide-react"; +import { Database, Plus } from "lucide-react"; import { useId } from "react"; import { useNavigate } from "react-router"; import { toast } from "sonner"; @@ -79,7 +79,8 @@ export default function CreateRepository() { Cancel diff --git a/app/client/modules/repositories/routes/repositories.tsx b/app/client/modules/repositories/routes/repositories.tsx index df58493..89e05d2 100644 --- a/app/client/modules/repositories/routes/repositories.tsx +++ b/app/client/modules/repositories/routes/repositories.tsx @@ -72,7 +72,7 @@ export default function Repositories({ loaderData }: Route.ComponentProps) { button={ } /> diff --git a/app/client/modules/repositories/routes/repository-details.tsx b/app/client/modules/repositories/routes/repository-details.tsx index 6acdbdd..be3e7c9 100644 --- a/app/client/modules/repositories/routes/repository-details.tsx +++ b/app/client/modules/repositories/routes/repository-details.tsx @@ -25,7 +25,7 @@ import { cn } from "~/client/lib/utils"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "~/client/components/ui/tabs"; import { RepositoryInfoTabContent } from "../tabs/info"; import { RepositorySnapshotsTabContent } from "../tabs/snapshots"; -import { Loader2 } from "lucide-react"; +import { Loader2, Stethoscope, Trash2, X } from "lucide-react"; export const handle = { breadcrumb: (match: Route.MetaArgs) => [ @@ -149,13 +149,17 @@ export default function RepositoryDetailsPage({ loaderData }: Route.ComponentPro {doctorMutation.isPending ? ( <> - Running Doctor... + Running doctor... ) : ( - "Run Doctor" + <> + + Run doctor + )} @@ -184,11 +188,15 @@ export default function RepositoryDetailsPage({ loaderData }: Route.ComponentPro
- Cancel + + + Cancel + + Delete repository
@@ -198,7 +206,7 @@ export default function RepositoryDetailsPage({ loaderData }: Route.ComponentPro - Doctor Results + Doctor results Repository doctor operation completed diff --git a/app/client/modules/repositories/tabs/info.tsx b/app/client/modules/repositories/tabs/info.tsx index 585a5a1..bd198ea 100644 --- a/app/client/modules/repositories/tabs/info.tsx +++ b/app/client/modules/repositories/tabs/info.tsx @@ -2,6 +2,7 @@ import { useMutation } from "@tanstack/react-query"; import { useState } from "react"; import { toast } from "sonner"; import { useNavigate } from "react-router"; +import { Check, Save } from "lucide-react"; import { Card } from "~/client/components/ui/card"; import { Button } from "~/client/components/ui/button"; import { Input } from "~/client/components/ui/input"; @@ -146,6 +147,7 @@ export const RepositoryInfoTabContent = ({ repository }: Props) => {
@@ -155,12 +157,15 @@ export const RepositoryInfoTabContent = ({ repository }: Props) => { - Update Repository + Update repository Are you sure you want to update the repository settings? Cancel - Update + + + Update + diff --git a/app/client/modules/repositories/tabs/snapshots.tsx b/app/client/modules/repositories/tabs/snapshots.tsx index ebba8fe..6632c85 100644 --- a/app/client/modules/repositories/tabs/snapshots.tsx +++ b/app/client/modules/repositories/tabs/snapshots.tsx @@ -1,5 +1,5 @@ import { useQuery } from "@tanstack/react-query"; -import { Database } from "lucide-react"; +import { Database, X } from "lucide-react"; import { useState } from "react"; import { listBackupSchedulesOptions, listSnapshotsOptions } from "~/client/api-client/@tanstack/react-query.gen"; import { SnapshotsTable } from "~/client/components/snapshots-table"; @@ -128,6 +128,7 @@ export const RepositorySnapshotsTabContent = ({ repository }: Props) => {

No snapshots match your search.

diff --git a/app/client/modules/settings/routes/settings.tsx b/app/client/modules/settings/routes/settings.tsx index a539712..7bbd0df 100644 --- a/app/client/modules/settings/routes/settings.tsx +++ b/app/client/modules/settings/routes/settings.tsx @@ -1,5 +1,5 @@ import { useMutation } from "@tanstack/react-query"; -import { Download, KeyRound, User } from "lucide-react"; +import { Download, KeyRound, User, X } from "lucide-react"; import { useState } from "react"; import { useNavigate } from "react-router"; import { toast } from "sonner"; @@ -195,6 +195,7 @@ export default function Settings({ loaderData }: Route.ComponentProps) { /> @@ -252,9 +253,11 @@ export default function Settings({ loaderData }: Route.ComponentProps) { setDownloadPassword(""); }} > + Cancel diff --git a/app/client/modules/volumes/components/healthchecks-card.tsx b/app/client/modules/volumes/components/healthchecks-card.tsx index 49c2e19..198efc4 100644 --- a/app/client/modules/volumes/components/healthchecks-card.tsx +++ b/app/client/modules/volumes/components/healthchecks-card.tsx @@ -1,6 +1,6 @@ import { useMutation } from "@tanstack/react-query"; import { formatDistanceToNow } from "date-fns"; -import { HeartIcon } from "lucide-react"; +import { Activity, HeartIcon } from "lucide-react"; import { toast } from "sonner"; import { healthCheckVolumeMutation, updateVolumeMutation } from "~/client/api-client/@tanstack/react-query.gen"; import { OnOff } from "~/client/components/onoff"; @@ -80,6 +80,7 @@ export const HealthchecksCard = ({ volume }: Props) => { loading={healthcheck.isPending} onClick={() => healthcheck.mutate({ path: { name: volume.name } })} > + Run Health Check diff --git a/app/client/modules/volumes/routes/create-volume.tsx b/app/client/modules/volumes/routes/create-volume.tsx index 15218ac..35e8bbb 100644 --- a/app/client/modules/volumes/routes/create-volume.tsx +++ b/app/client/modules/volumes/routes/create-volume.tsx @@ -1,5 +1,5 @@ import { useMutation } from "@tanstack/react-query"; -import { HardDrive } from "lucide-react"; +import { HardDrive, Plus } from "lucide-react"; import { useId } from "react"; import { useNavigate } from "react-router"; import { toast } from "sonner"; @@ -73,6 +73,7 @@ export default function CreateVolume() { Cancel diff --git a/app/client/modules/volumes/routes/volume-details.tsx b/app/client/modules/volumes/routes/volume-details.tsx index f6802ab..082589c 100644 --- a/app/client/modules/volumes/routes/volume-details.tsx +++ b/app/client/modules/volumes/routes/volume-details.tsx @@ -2,6 +2,7 @@ import { useMutation, useQuery } from "@tanstack/react-query"; import { useNavigate, useParams, useSearchParams } from "react-router"; import { toast } from "sonner"; import { useState } from "react"; +import { Plug, Unplug } from "lucide-react"; import { StatusDot } from "~/client/components/status-dot"; import { Button } from "~/client/components/ui/button"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "~/client/components/ui/tabs"; @@ -148,6 +149,7 @@ export default function VolumeDetails({ loaderData }: Route.ComponentProps) { loading={mountVol.isPending} className={cn({ hidden: volume.status === "mounted" })} > + Mount