From fa52bb716d6516ae74a35c0097389289d433419d Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Wed, 25 Jun 2025 22:10:33 -0400 Subject: [PATCH] refactor: extract BaseModal component to reduce duplication MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Create BaseModal with shared modal logic: - Backdrop click handling - Escape key handling - Body scroll locking - Transition animations - Size variants - Refactor Modal and DeleteConfirmationModal to use BaseModal - Reduce code duplication by ~100 lines - Maintain all existing functionality 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- prd/PRD-codebase-cleanup-refactoring.md | 4 +- src/lib/components/admin/BaseModal.svelte | 155 +++++++++++++++ .../admin/DeleteConfirmationModal.svelte | 92 ++++----- src/lib/components/admin/Modal.svelte | 177 ++++-------------- 4 files changed, 232 insertions(+), 196 deletions(-) create mode 100644 src/lib/components/admin/BaseModal.svelte diff --git a/prd/PRD-codebase-cleanup-refactoring.md b/prd/PRD-codebase-cleanup-refactoring.md index e0dd431..79adf9d 100644 --- a/prd/PRD-codebase-cleanup-refactoring.md +++ b/prd/PRD-codebase-cleanup-refactoring.md @@ -94,8 +94,8 @@ Create a consistent design system by extracting hardcoded values. ### Phase 3: Component Refactoring (Weeks 3-4) Refactor components to reduce duplication and complexity. -- [ ] **Create base components** - - [ ] Extract `BaseModal` component for shared modal logic +- [-] **Create base components** + - [x] Extract `BaseModal` component for shared modal logic - [ ] Create `BaseDropdown` for dropdown patterns - [ ] Merge `FormField` and `FormFieldWrapper` - [ ] Create `BaseSegmentedController` for shared logic diff --git a/src/lib/components/admin/BaseModal.svelte b/src/lib/components/admin/BaseModal.svelte new file mode 100644 index 0000000..ccbde35 --- /dev/null +++ b/src/lib/components/admin/BaseModal.svelte @@ -0,0 +1,155 @@ + + +{#if isOpen} + +{/if} + + \ No newline at end of file diff --git a/src/lib/components/admin/DeleteConfirmationModal.svelte b/src/lib/components/admin/DeleteConfirmationModal.svelte index 84a1944..df40c15 100644 --- a/src/lib/components/admin/DeleteConfirmationModal.svelte +++ b/src/lib/components/admin/DeleteConfirmationModal.svelte @@ -1,4 +1,5 @@ -{#if isOpen} -