diff --git a/src/components/settings/DeleteAccountDialog/index.ts b/src/components/settings/DeleteAccountDialog/index.ts
deleted file mode 100644
index f41637a9..00000000
--- a/src/components/settings/DeleteAccountDialog/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from "./DeleteAccountDialog";
diff --git a/src/components/settings/DeleteAccountDialog/DeleteAccountDialog.tsx b/src/components/settings/DeleteAccountSetting/DeleteAccountSetting.tsx
similarity index 56%
rename from src/components/settings/DeleteAccountDialog/DeleteAccountDialog.tsx
rename to src/components/settings/DeleteAccountSetting/DeleteAccountSetting.tsx
index dccb4ab9..f0cd613c 100644
--- a/src/components/settings/DeleteAccountDialog/DeleteAccountDialog.tsx
+++ b/src/components/settings/DeleteAccountSetting/DeleteAccountSetting.tsx
@@ -1,20 +1,24 @@
import { Button, Modal, ModalHeader } from "@/components/common";
+import { SettingsItem } from "@/components/settings";
import { useAuthActions } from "@convex-dev/auth/react";
import { api } from "@convex/_generated/api";
import { useMutation } from "convex/react";
+import { Trash } from "lucide-react";
+import { useState } from "react";
-type DeleteAccountDialogProps = {
+type DeleteAccountModalProps = {
isOpen: boolean;
onOpenChange: (isOpen: boolean) => void;
onSubmit: () => void;
};
-export const DeleteAccountDialog = ({
+const DeleteAccountModal = ({
isOpen,
onOpenChange,
onSubmit,
-}: DeleteAccountDialogProps) => {
+}: DeleteAccountModalProps) => {
const { signOut } = useAuthActions();
+
const clearLocalStorage = () => {
localStorage.removeItem("theme");
};
@@ -40,3 +44,24 @@ export const DeleteAccountDialog = ({
);
};
+
+export const DeleteAccountSetting = () => {
+ const [isDeleteAccountModalOpen, setIsDeleteAccountModalOpen] =
+ useState(false);
+
+ return (
+
+
+ setIsDeleteAccountModalOpen(false)}
+ />
+
+ );
+};
diff --git a/src/components/settings/DeleteAccountSetting/index.ts b/src/components/settings/DeleteAccountSetting/index.ts
new file mode 100644
index 00000000..e32a0ef1
--- /dev/null
+++ b/src/components/settings/DeleteAccountSetting/index.ts
@@ -0,0 +1 @@
+export * from "./DeleteAccountSetting";
diff --git a/src/components/settings/EditBirthplaceDialog/index.ts b/src/components/settings/EditBirthplaceDialog/index.ts
deleted file mode 100644
index 5985a93d..00000000
--- a/src/components/settings/EditBirthplaceDialog/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from "./EditBirthplaceDialog";
diff --git a/src/components/settings/EditBirthplaceDialog/EditBirthplaceDialog.tsx b/src/components/settings/EditBirthplaceSetting/EditBirthplaceSetting.tsx
similarity index 59%
rename from src/components/settings/EditBirthplaceDialog/EditBirthplaceDialog.tsx
rename to src/components/settings/EditBirthplaceSetting/EditBirthplaceSetting.tsx
index 05db219e..6399d05c 100644
--- a/src/components/settings/EditBirthplaceDialog/EditBirthplaceDialog.tsx
+++ b/src/components/settings/EditBirthplaceSetting/EditBirthplaceSetting.tsx
@@ -1,22 +1,25 @@
import { Button, Form, Modal, Select, SelectItem } from "@/components/common";
import { api } from "@convex/_generated/api";
+import type { Doc } from "@convex/_generated/dataModel";
import { JURISDICTIONS, type Jurisdiction } from "@convex/constants";
import { useMutation } from "convex/react";
+import { Pencil } from "lucide-react";
import { useState } from "react";
+import { SettingsItem } from "../SettingsItem";
-type EditBirthplaceDialogProps = {
+type EditBirthplaceModalProps = {
defaultBirthplace: Jurisdiction;
isOpen: boolean;
onOpenChange: (isOpen: boolean) => void;
onSubmit: () => void;
};
-export const EditBirthplaceDialog = ({
+const EditBirthplaceModal = ({
defaultBirthplace,
isOpen,
onOpenChange,
onSubmit,
-}: EditBirthplaceDialogProps) => {
+}: EditBirthplaceModalProps) => {
const updateBirthplace = useMutation(api.users.setBirthplace);
const [birthplace, setBirthplace] = useState(defaultBirthplace);
@@ -55,3 +58,30 @@ export const EditBirthplaceDialog = ({
);
};
+
+type EditBirthplaceSettingProps = {
+ user: Doc<"users">;
+};
+
+export const EditBirthplaceSetting = ({ user }: EditBirthplaceSettingProps) => {
+ const [isBirthplaceModalOpen, setIsBirthplaceModalOpen] = useState(false);
+
+ return (
+
+
+ setIsBirthplaceModalOpen(false)}
+ />
+
+ );
+};
diff --git a/src/components/settings/EditBirthplaceSetting/index.ts b/src/components/settings/EditBirthplaceSetting/index.ts
new file mode 100644
index 00000000..84c173f1
--- /dev/null
+++ b/src/components/settings/EditBirthplaceSetting/index.ts
@@ -0,0 +1 @@
+export * from "./EditBirthplaceSetting";
diff --git a/src/components/settings/EditMinorSetting/EditMinorSetting.tsx b/src/components/settings/EditMinorSetting/EditMinorSetting.tsx
new file mode 100644
index 00000000..3d5f0e3e
--- /dev/null
+++ b/src/components/settings/EditMinorSetting/EditMinorSetting.tsx
@@ -0,0 +1,28 @@
+import { Switch } from "@/components/common";
+import { SettingsItem } from "@/components/settings";
+import { api } from "@convex/_generated/api";
+import type { Doc } from "@convex/_generated/dataModel";
+import { useMutation } from "convex/react";
+
+type EditMinorSettingProps = {
+ user: Doc<"users">;
+};
+
+export const EditMinorSetting = ({ user }: EditMinorSettingProps) => {
+ const updateIsMinor = useMutation(api.users.setCurrentUserIsMinor);
+
+ return (
+
+ updateIsMinor({ isMinor: !user.isMinor })}
+ >
+ Is minor
+
+
+ );
+};
diff --git a/src/components/settings/EditMinorSetting/index.ts b/src/components/settings/EditMinorSetting/index.ts
new file mode 100644
index 00000000..9daf4da7
--- /dev/null
+++ b/src/components/settings/EditMinorSetting/index.ts
@@ -0,0 +1 @@
+export * from "./EditMinorSetting";
diff --git a/src/components/settings/EditNameDialog/index.ts b/src/components/settings/EditNameDialog/index.ts
deleted file mode 100644
index 52a6f42b..00000000
--- a/src/components/settings/EditNameDialog/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from "./EditNameDialog";
diff --git a/src/components/settings/EditNameDialog/EditNameDialog.tsx b/src/components/settings/EditNameSetting/EditNameSetting.tsx
similarity index 55%
rename from src/components/settings/EditNameDialog/EditNameDialog.tsx
rename to src/components/settings/EditNameSetting/EditNameSetting.tsx
index 3d26e6fc..18296e60 100644
--- a/src/components/settings/EditNameDialog/EditNameDialog.tsx
+++ b/src/components/settings/EditNameSetting/EditNameSetting.tsx
@@ -1,21 +1,24 @@
import { Button, Form, Modal, TextField } from "@/components/common";
import { api } from "@convex/_generated/api";
+import type { Doc } from "@convex/_generated/dataModel";
import { useMutation } from "convex/react";
+import { Pencil } from "lucide-react";
import { useState } from "react";
+import { SettingsItem } from "../SettingsItem";
-type EditNameDialogProps = {
+type EditNameModalProps = {
defaultName: string;
isOpen: boolean;
onOpenChange: (isOpen: boolean) => void;
onSubmit: () => void;
};
-export const EditNameDialog = ({
+const EditNameModal = ({
defaultName,
isOpen,
onOpenChange,
onSubmit,
-}: EditNameDialogProps) => {
+}: EditNameModalProps) => {
const updateName = useMutation(api.users.setName);
const [name, setName] = useState(defaultName);
@@ -42,3 +45,28 @@ export const EditNameDialog = ({
);
};
+
+type EditNameSettingProps = {
+ user: Doc<"users">;
+};
+
+export const EditNameSetting = ({ user }: EditNameSettingProps) => {
+ const [isNameModalOpen, setIsNameModalOpen] = useState(false);
+
+ return (
+
+
+ setIsNameModalOpen(false)}
+ />
+
+ );
+};
diff --git a/src/components/settings/EditNameSetting/index.ts b/src/components/settings/EditNameSetting/index.ts
new file mode 100644
index 00000000..90caf838
--- /dev/null
+++ b/src/components/settings/EditNameSetting/index.ts
@@ -0,0 +1 @@
+export * from "./EditNameSetting";
diff --git a/src/components/settings/EditResidenceDialog/index.ts b/src/components/settings/EditResidenceDialog/index.ts
deleted file mode 100644
index 8a760d1e..00000000
--- a/src/components/settings/EditResidenceDialog/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from "./EditResidenceDialog";
diff --git a/src/components/settings/EditResidenceDialog/EditResidenceDialog.tsx b/src/components/settings/EditResidenceSetting/EditResidenceSetting.tsx
similarity index 54%
rename from src/components/settings/EditResidenceDialog/EditResidenceDialog.tsx
rename to src/components/settings/EditResidenceSetting/EditResidenceSetting.tsx
index 4675ab9a..d87302ae 100644
--- a/src/components/settings/EditResidenceDialog/EditResidenceDialog.tsx
+++ b/src/components/settings/EditResidenceSetting/EditResidenceSetting.tsx
@@ -1,22 +1,32 @@
-import { Button, Form, Modal, Select, SelectItem } from "@/components/common";
+import {
+ Button,
+ Form,
+ Modal,
+ ModalHeader,
+ Select,
+ SelectItem,
+} from "@/components/common";
+import { SettingsItem } from "@/components/settings";
import { api } from "@convex/_generated/api";
+import type { Doc } from "@convex/_generated/dataModel";
import { JURISDICTIONS, type Jurisdiction } from "@convex/constants";
import { useMutation } from "convex/react";
+import { Pencil } from "lucide-react";
import { useState } from "react";
-type EditResidenceDialogProps = {
+type EditResidenceModalProps = {
defaultResidence: Jurisdiction;
isOpen: boolean;
onOpenChange: (isOpen: boolean) => void;
onSubmit: () => void;
};
-export const EditResidenceDialog = ({
+const EditResidenceModal = ({
defaultResidence,
isOpen,
onOpenChange,
onSubmit,
-}: EditResidenceDialogProps) => {
+}: EditResidenceModalProps) => {
const updateResidence = useMutation(api.users.setResidence);
const [residence, setResidence] = useState(defaultResidence);
@@ -28,8 +38,8 @@ export const EditResidenceDialog = ({
return (
+