From 5d884cf2b666337bb1fe4aab1690bae146bf1e68 Mon Sep 17 00:00:00 2001
From: austinkelsay
Date: Wed, 14 May 2025 14:43:01 -0500
Subject: [PATCH] update and unify modals into generic component
---
src/components/MoreInfo.js | 6 +-
.../bitcoinConnect/CoursePaymentButton.js | 8 +-
.../bitcoinConnect/ResourcePaymentButton.js | 8 +-
src/components/forms/course/LessonSelector.js | 10 +-
src/components/onboarding/WelcomeModal.js | 9 +-
src/components/profile/UserBadges.js | 12 +-
src/components/profile/UserProfileCard.js | 10 +-
.../profile/subscription/CalendlyEmbed.js | 8 +-
.../subscription/CancelSubscription.js | 10 +-
.../subscription/LightningAddressForm.js | 8 +-
.../profile/subscription/Nip05Form.js | 8 +-
.../profile/subscription/RenewSubscription.js | 7 +-
.../profile/subscription/SubscribeModal.js | 9 +-
src/components/ui/Modal.js | 112 ++++++++++++++++++
14 files changed, 173 insertions(+), 52 deletions(-)
create mode 100644 src/components/ui/Modal.js
diff --git a/src/components/MoreInfo.js b/src/components/MoreInfo.js
index aed142a..eacd40b 100644
--- a/src/components/MoreInfo.js
+++ b/src/components/MoreInfo.js
@@ -1,5 +1,5 @@
import React, { useState } from 'react';
-import { Dialog } from 'primereact/dialog';
+import Modal from '@/components/ui/Modal';
import { Tooltip } from 'primereact/tooltip';
import useWindowWidth from '@/hooks/useWindowWidth';
@@ -24,7 +24,7 @@ const MoreInfo = ({
/>
{!isMobile && }
-
+
>
);
};
diff --git a/src/components/bitcoinConnect/CoursePaymentButton.js b/src/components/bitcoinConnect/CoursePaymentButton.js
index 49bdb1f..98cb732 100644
--- a/src/components/bitcoinConnect/CoursePaymentButton.js
+++ b/src/components/bitcoinConnect/CoursePaymentButton.js
@@ -1,6 +1,6 @@
import React, { useState, useEffect } from 'react';
import dynamic from 'next/dynamic';
-import { Dialog } from 'primereact/dialog';
+import Modal from '@/components/ui/Modal';
import { LightningAddress } from '@getalby/lightning-tools';
import { track } from '@vercel/analytics';
import { useToast } from '@/hooks/useToast';
@@ -227,11 +227,11 @@ const CoursePaymentButton = ({ lnAddress, amount, onSuccess, onError, courseId }
/>
)}
-
)}
-
+
);
};
diff --git a/src/components/bitcoinConnect/ResourcePaymentButton.js b/src/components/bitcoinConnect/ResourcePaymentButton.js
index 75617b3..455319b 100644
--- a/src/components/bitcoinConnect/ResourcePaymentButton.js
+++ b/src/components/bitcoinConnect/ResourcePaymentButton.js
@@ -1,6 +1,6 @@
import React, { useEffect, useState } from 'react';
import dynamic from 'next/dynamic';
-import { Dialog } from 'primereact/dialog';
+import Modal from '@/components/ui/Modal';
import { track } from '@vercel/analytics';
import { LightningAddress } from '@getalby/lightning-tools';
import { useToast } from '@/hooks/useToast';
@@ -122,11 +122,11 @@ const ResourcePaymentButton = ({ lnAddress, amount, onSuccess, onError, resource
/>
)}
-
+
>
);
};
diff --git a/src/components/forms/course/LessonSelector.js b/src/components/forms/course/LessonSelector.js
index 52fd7aa..639d6a3 100644
--- a/src/components/forms/course/LessonSelector.js
+++ b/src/components/forms/course/LessonSelector.js
@@ -1,7 +1,7 @@
import React, { useState, useEffect } from 'react';
import { Dropdown } from 'primereact/dropdown';
import GenericButton from '@/components/buttons/GenericButton';
-import { Dialog } from 'primereact/dialog';
+import Modal from '@/components/ui/Modal';
import { Accordion, AccordionTab } from 'primereact/accordion';
import EmbeddedDocumentForm from '@/components/forms/course/embedded/EmbeddedDocumentForm';
import EmbeddedVideoForm from '@/components/forms/course/embedded/EmbeddedVideoForm';
@@ -233,23 +233,23 @@ const LessonSelector = ({
-
+
-
+
);
};
diff --git a/src/components/onboarding/WelcomeModal.js b/src/components/onboarding/WelcomeModal.js
index 1a49bae..fce0514 100644
--- a/src/components/onboarding/WelcomeModal.js
+++ b/src/components/onboarding/WelcomeModal.js
@@ -1,5 +1,5 @@
import React, { useEffect, useState } from 'react';
-import { Dialog } from 'primereact/dialog';
+import Modal from '@/components/ui/Modal';
import { useRouter } from 'next/router';
const WelcomeModal = () => {
@@ -26,10 +26,11 @@ const WelcomeModal = () => {
};
return (
-
+
);
};
diff --git a/src/components/profile/UserBadges.js b/src/components/profile/UserBadges.js
index b779025..b406138 100644
--- a/src/components/profile/UserBadges.js
+++ b/src/components/profile/UserBadges.js
@@ -1,5 +1,5 @@
import React, { useState, useEffect, useCallback } from 'react';
-import { Dialog } from 'primereact/dialog';
+import Modal from '@/components/ui/Modal';
import Image from 'next/image';
import { useNDKContext } from '@/context/NDKContext';
import { useSession } from 'next-auth/react';
@@ -99,7 +99,13 @@ const UserBadges = ({ visible, onHide }) => {
};
return (
-
+
);
};
diff --git a/src/components/profile/UserProfileCard.js b/src/components/profile/UserProfileCard.js
index 1414973..e8d2e79 100644
--- a/src/components/profile/UserProfileCard.js
+++ b/src/components/profile/UserProfileCard.js
@@ -1,7 +1,7 @@
import React, { useRef, useState } from 'react';
import Image from 'next/image';
import { Menu } from 'primereact/menu';
-import { Dialog } from 'primereact/dialog';
+import Modal from '@/components/ui/Modal';
import { nip19 } from 'nostr-tools';
import { useImageProxy } from '@/hooks/useImageProxy';
import { useToast } from '@/hooks/useToast';
@@ -284,12 +284,12 @@ const UserProfileCard = ({ user }) => {
<>
{windowWidth <= 1440 ? : }
setShowBadges(false)} />
-
+
>
);
};
diff --git a/src/components/profile/subscription/CalendlyEmbed.js b/src/components/profile/subscription/CalendlyEmbed.js
index fc57588..77fcc71 100644
--- a/src/components/profile/subscription/CalendlyEmbed.js
+++ b/src/components/profile/subscription/CalendlyEmbed.js
@@ -1,5 +1,5 @@
import React, { useEffect } from 'react';
-import { Dialog } from 'primereact/dialog';
+import Modal from '@/components/ui/Modal';
import { Button } from 'primereact/button';
import useWindowWidth from '@/hooks/useWindowWidth';
@@ -25,10 +25,10 @@ const CalendlyEmbed = ({ visible, onHide, userId, userEmail, userName }) => {
);
return (
-
+
);
};
diff --git a/src/components/profile/subscription/CancelSubscription.js b/src/components/profile/subscription/CancelSubscription.js
index 4392e06..1441219 100644
--- a/src/components/profile/subscription/CancelSubscription.js
+++ b/src/components/profile/subscription/CancelSubscription.js
@@ -1,5 +1,5 @@
import React, { useState, useEffect } from 'react';
-import { Dialog } from 'primereact/dialog';
+import Modal from '@/components/ui/Modal';
import axios from 'axios';
import { useSession } from 'next-auth/react';
import { useToast } from '@/hooks/useToast';
@@ -31,7 +31,11 @@ const CancelSubscription = ({ visible, onHide }) => {
};
return (
-
+
);
};
diff --git a/src/components/profile/subscription/LightningAddressForm.js b/src/components/profile/subscription/LightningAddressForm.js
index 7256bb5..7a4823c 100644
--- a/src/components/profile/subscription/LightningAddressForm.js
+++ b/src/components/profile/subscription/LightningAddressForm.js
@@ -1,5 +1,5 @@
import React, { useState, useEffect } from 'react';
-import { Dialog } from 'primereact/dialog';
+import Modal from '@/components/ui/Modal';
import axios from 'axios';
import { useSession } from 'next-auth/react';
import { useToast } from '@/hooks/useToast';
@@ -111,11 +111,11 @@ const LightningAddressForm = ({ visible, onHide }) => {
};
return (
-
+
);
};
diff --git a/src/components/profile/subscription/Nip05Form.js b/src/components/profile/subscription/Nip05Form.js
index 9e96be2..586d97d 100644
--- a/src/components/profile/subscription/Nip05Form.js
+++ b/src/components/profile/subscription/Nip05Form.js
@@ -1,5 +1,5 @@
import React, { useState, useEffect } from 'react';
-import { Dialog } from 'primereact/dialog';
+import Modal from '@/components/ui/Modal';
import axios from 'axios';
import { useSession } from 'next-auth/react';
import { useToast } from '@/hooks/useToast';
@@ -82,11 +82,11 @@ const Nip05Form = ({ visible, onHide }) => {
};
return (
-
+
);
};
diff --git a/src/components/profile/subscription/RenewSubscription.js b/src/components/profile/subscription/RenewSubscription.js
index b26d222..56cb3f4 100644
--- a/src/components/profile/subscription/RenewSubscription.js
+++ b/src/components/profile/subscription/RenewSubscription.js
@@ -1,5 +1,5 @@
import React, { useState } from 'react';
-import { Dialog } from 'primereact/dialog';
+import Modal from '@/components/ui/Modal';
import { Card } from 'primereact/card';
import { ProgressSpinner } from 'primereact/progressspinner';
import SubscriptionPaymentButtons from '@/components/bitcoinConnect/SubscriptionPaymentButton';
@@ -50,11 +50,10 @@ const RenewSubscription = ({ visible, onHide, subscribedUntil }) => {
};
return (
-