diff --git a/packages/frontend/src/components/account-dialog.tsx b/packages/frontend/src/components/account-dialog.tsx index fdaff60..07a4465 100644 --- a/packages/frontend/src/components/account-dialog.tsx +++ b/packages/frontend/src/components/account-dialog.tsx @@ -1,3 +1,4 @@ +import type { IconStyle } from "@sprint/shared"; import type { ReactNode } from "react"; import { useEffect, useState } from "react"; import { toast } from "sonner"; @@ -5,7 +6,9 @@ import { useAuthenticatedSession } from "@/components/session-provider"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"; import { Field } from "@/components/ui/field"; +import Icon from "@/components/ui/icon"; import { Label } from "@/components/ui/label"; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { UploadAvatar } from "@/components/upload-avatar"; import { parseError, user } from "@/lib/server"; @@ -17,6 +20,7 @@ function AccountDialog({ trigger }: { trigger?: ReactNode }) { const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [avatarURL, setAvatarUrl] = useState(null); + const [iconPreference, setIconPreference] = useState("lucide"); const [error, setError] = useState(""); const [submitAttempted, setSubmitAttempted] = useState(false); @@ -26,6 +30,7 @@ function AccountDialog({ trigger }: { trigger?: ReactNode }) { setName(currentUser.name); setUsername(currentUser.username); setAvatarUrl(currentUser.avatarURL || null); + setIconPreference((currentUser.iconPreference as IconStyle) ?? "lucide"); setPassword(""); setError(""); @@ -44,6 +49,7 @@ function AccountDialog({ trigger }: { trigger?: ReactNode }) { name: name.trim(), password: password.trim() || undefined, avatarURL, + iconPreference, onSuccess: (data) => { setError(""); setUser(data); @@ -113,6 +119,39 @@ function AccountDialog({ trigger }: { trigger?: ReactNode }) { placeholder="Leave empty to keep current password" hidden={true} /> + + +
+ + +
{error !== "" && } diff --git a/packages/frontend/src/components/ui/field.tsx b/packages/frontend/src/components/ui/field.tsx index f79b7f1..76ae861 100644 --- a/packages/frontend/src/components/ui/field.tsx +++ b/packages/frontend/src/components/ui/field.tsx @@ -41,7 +41,7 @@ export function Field({ return (
-
+