From 3018cd7c103a45fe062209f258d09fdfd51e4ec7 Mon Sep 17 00:00:00 2001 From: Gavin McDonald Date: Wed, 16 Apr 2025 09:18:41 -0400 Subject: [PATCH] settings --- components/Settings.tsx | 44 +++++++++++++++++++++++++++++++++++++++++ tools/omit.ts | 7 +++++++ 2 files changed, 51 insertions(+) create mode 100644 components/Settings.tsx create mode 100644 tools/omit.ts diff --git a/components/Settings.tsx b/components/Settings.tsx new file mode 100644 index 0000000..480edaf --- /dev/null +++ b/components/Settings.tsx @@ -0,0 +1,44 @@ +'use client'; + +import { useState } from 'react'; +import { Settings as Gear } from 'lucide-react'; + +import { Settings } from '@/types'; + +type PermissionTogglePanelProps = { + settings: Settings; + changeAction: (updatedSettings: Settings) => void; +}; + +export default function PermissionTogglePanel({ + settings, + changeAction, +}: PermissionTogglePanelProps) { + const [open, setOpen] = useState(false); + + const togglePermission = (key: string) => { + changeAction({ ...settings, [key]: !settings[key] }); + }; + + return ( +
+ + + {open && ( +
+ {Object.entries(settings).map(([key, value]) => ( + + ))} +
+ )} +
+ ); +} diff --git a/tools/omit.ts b/tools/omit.ts new file mode 100644 index 0000000..3c5d349 --- /dev/null +++ b/tools/omit.ts @@ -0,0 +1,7 @@ +export default function omit>( + obj: T, + propToRemove: keyof T, +): Omit { + const { [propToRemove]: _, ...rest } = obj; + return rest; +}