diff --git a/src/pages/ProjectPage/ProjectCard/ProjectCard.Skeleton.tsx b/src/pages/ProjectPage/ProjectCard/ProjectCard.Skeleton.tsx
new file mode 100644
index 0000000..e382b33
--- /dev/null
+++ b/src/pages/ProjectPage/ProjectCard/ProjectCard.Skeleton.tsx
@@ -0,0 +1,82 @@
+import { motion } from 'framer-motion'
+import { MdClose, } from 'react-icons/md';
+import { ModalCard, modalCardVariants } from 'src/Components/Modals/ModalsContainer/ModalsContainer';
+import Skeleton from 'react-loading-skeleton';
+import Badge from 'src/Components/Badge/Badge';
+import { useAppSelector } from 'src/utils/hooks';
+
+
+interface Props extends ModalCard {
+}
+
+export default function ProjectCardSkeleton({ onClose, direction, ...props }: Props) {
+
+
+
+ const { isMobileScreen } = useAppSelector(state => ({
+
+ isMobileScreen: state.theme.isMobileScreen
+ }));
+
+
+
+
+ return (
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/pages/ProjectPage/ProjectCard/ProjectCard.stories.tsx b/src/pages/ProjectPage/ProjectCard/ProjectCard.stories.tsx
index 66c4691..bf012c5 100644
--- a/src/pages/ProjectPage/ProjectCard/ProjectCard.stories.tsx
+++ b/src/pages/ProjectPage/ProjectCard/ProjectCard.stories.tsx
@@ -1,6 +1,7 @@
import { ComponentStory, ComponentMeta } from '@storybook/react';
import ProjectCard from './ProjectCard';
+import ProjectCardSkeleton from './ProjectCard.Skeleton';
import { ModalsDecorator } from '.storybook/helpers'
@@ -15,3 +16,7 @@ const Template: ComponentStory
= (args) => = (args) => ;
+export const LoadingState = LoadingTemplate.bind({})
\ No newline at end of file
diff --git a/src/pages/ProjectPage/ProjectCard/ProjectCard.tsx b/src/pages/ProjectPage/ProjectCard/ProjectCard.tsx
index 4590ccd..7f7525c 100644
--- a/src/pages/ProjectPage/ProjectCard/ProjectCard.tsx
+++ b/src/pages/ProjectPage/ProjectCard/ProjectCard.tsx
@@ -11,6 +11,8 @@ import Button from 'src/Components/Button/Button';
import { requestProvider } from 'webln';
import { PROJECT_BY_ID_QUERY, PROJECT_BY_ID_RES, PROJECT_BY_ID_VARS } from './query'
import { AiFillThunderbolt } from 'react-icons/ai';
+import ProjectCardSkeleton from './ProjectCard.Skeleton'
+
interface Props extends ModalCard {
projectId: string
@@ -39,7 +41,8 @@ export default function ProjectCard({ onClose, direction, projectId, ...props }:
- if (loading || !project) return <>>;
+ if (loading || !project)
+ return ;
const onConnectWallet = async () => {
try {
@@ -83,14 +86,8 @@ export default function ProjectCard({ onClose, direction, projectId, ...props }:
}
return (
-

@@ -152,6 +149,6 @@ export default function ProjectCard({ onClose, direction, projectId, ...props }:
-
+
)
}
diff --git a/src/utils/Wrapper.tsx b/src/utils/Wrapper.tsx
index 76dc512..b673972 100644
--- a/src/utils/Wrapper.tsx
+++ b/src/utils/Wrapper.tsx
@@ -1,11 +1,12 @@
import { QueryClient, QueryClientProvider } from 'react-query'
-
+import { BrowserRouter } from 'react-router-dom';
import { Provider } from 'react-redux';
import { store } from '../redux/store';
import 'react-multi-carousel/lib/styles.css';
import "react-loader-spinner/dist/loader/css/react-spinner-loader.css";
-import { BrowserRouter } from 'react-router-dom';
+import 'react-loading-skeleton/dist/skeleton.css'
+
import {
ApolloClient,
diff --git a/src/utils/hoc.tsx b/src/utils/hoc.tsx
new file mode 100644
index 0000000..1edec0c
--- /dev/null
+++ b/src/utils/hoc.tsx
@@ -0,0 +1,10 @@
+import { Link } from "react-router-dom";
+
+
+export function wrapLink(Component: JSX.Element, href: string | undefined, className?: string) {
+ if (!href) return Component;
+
+ return