diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx
index eac4166..17140e4 100644
--- a/src/components/Footer/Footer.tsx
+++ b/src/components/Footer/Footer.tsx
@@ -4,125 +4,128 @@ import styles from './style.module.scss'
import { Container } from '../Container'
import nostrImage from '../../assets/images/nostr.gif'
import { appPublicRoutes } from '../../routes'
+import { createPortal } from 'react-dom'
-export const Footer = () => (
-
-)
+
+
+ ,
+ document.getElementById('root')!
+ )
diff --git a/src/layouts/Main.tsx b/src/layouts/Main.tsx
index ac233cc..f3962eb 100644
--- a/src/layouts/Main.tsx
+++ b/src/layouts/Main.tsx
@@ -26,7 +26,6 @@ import {
} from '../utils'
import { useAppSelector } from '../hooks'
import styles from './style.module.scss'
-import { Footer } from '../components/Footer/Footer'
export const MainLayout = () => {
const dispatch: Dispatch = useDispatch()
@@ -160,7 +159,6 @@ export const MainLayout = () => {
>
-
>
)
}
diff --git a/src/pages/home/index.tsx b/src/pages/home/index.tsx
index ddc777e..c93c9f8 100644
--- a/src/pages/home/index.tsx
+++ b/src/pages/home/index.tsx
@@ -18,6 +18,7 @@ import {
SigitCardDisplayInfo,
SigitStatus
} from '../../utils'
+import { Footer } from '../../components/Footer/Footer'
// Unsupported Filter options are commented
const FILTERS = [
@@ -262,6 +263,7 @@ export const HomePage = () => {
))}
+
)
}
diff --git a/src/pages/landing/index.tsx b/src/pages/landing/index.tsx
index 015d721..deae096 100644
--- a/src/pages/landing/index.tsx
+++ b/src/pages/landing/index.tsx
@@ -19,6 +19,7 @@ import {
faWifi
} from '@fortawesome/free-solid-svg-icons'
import { FontAwesomeIconStack } from '../../components/FontAwesomeIconStack'
+import { Footer } from '../../components/Footer/Footer'
export const LandingPage = () => {
const navigate = useNavigate()
@@ -162,6 +163,7 @@ export const LandingPage = () => {
+
)
}
diff --git a/src/pages/profile/index.tsx b/src/pages/profile/index.tsx
index a7b205b..8736c84 100644
--- a/src/pages/profile/index.tsx
+++ b/src/pages/profile/index.tsx
@@ -20,6 +20,7 @@ import {
} from '../../utils'
import styles from './style.module.scss'
import { Container } from '../../components/Container'
+import { Footer } from '../../components/Footer/Footer'
export const ProfilePage = () => {
const navigate = useNavigate()
@@ -285,6 +286,7 @@ export const ProfilePage = () => {
)}
+
>
)
}
diff --git a/src/pages/settings/Settings.tsx b/src/pages/settings/Settings.tsx
index b08ea51..599bb90 100644
--- a/src/pages/settings/Settings.tsx
+++ b/src/pages/settings/Settings.tsx
@@ -13,6 +13,7 @@ import { useNavigate } from 'react-router-dom'
import { appPrivateRoutes, getProfileSettingsRoute } from '../../routes'
import { State } from '../../store/rootReducer'
import { Container } from '../../components/Container'
+import { Footer } from '../../components/Footer/Footer'
export const SettingsPage = () => {
const theme = useTheme()
@@ -43,56 +44,59 @@ export const SettingsPage = () => {
}
return (
-
-
+
+
+ Settings
+
+ }
+ >
+ {
+ navigate(getProfileSettingsRoute(usersPubkey!))
}}
>
- Settings
-
- }
- >
- {
- navigate(getProfileSettingsRoute(usersPubkey!))
- }}
- >
-
-
-
- {listItem('Profile')}
-
- {
- navigate(appPrivateRoutes.relays)
- }}
- >
-
-
-
- {listItem('Relays')}
-
- {
- navigate(appPrivateRoutes.cacheSettings)
- }}
- >
-
-
-
- {listItem('Local Cache')}
-
-
-
+
+
+
+ {listItem('Profile')}
+
+ {
+ navigate(appPrivateRoutes.relays)
+ }}
+ >
+
+
+
+ {listItem('Relays')}
+
+ {
+ navigate(appPrivateRoutes.cacheSettings)
+ }}
+ >
+
+
+
+ {listItem('Local Cache')}
+
+
+
+
+ >
)
}
diff --git a/src/pages/settings/cache/index.tsx b/src/pages/settings/cache/index.tsx
index 3d74f0e..fde92a9 100644
--- a/src/pages/settings/cache/index.tsx
+++ b/src/pages/settings/cache/index.tsx
@@ -14,6 +14,7 @@ import { toast } from 'react-toastify'
import { localCache } from '../../../services'
import { LoadingSpinner } from '../../../components/LoadingSpinner'
import { Container } from '../../../components/Container'
+import { Footer } from '../../../components/Footer/Footer'
export const CacheSettingsPage = () => {
const theme = useTheme()
@@ -50,48 +51,51 @@ export const CacheSettingsPage = () => {
}
return (
-
- {isLoading && }
-
- Cache Setting
-
- }
- >
-
-
-
-
- {listItem('Export (coming soon)')}
-
+ <>
+
+ {isLoading && }
+
+ Cache Setting
+
+ }
+ >
+
+
+
+
+ {listItem('Export (coming soon)')}
+
-
-
-
-
- {listItem('Import (coming soon)')}
-
+
+
+
+
+ {listItem('Import (coming soon)')}
+
-
-
-
-
- {listItem('Clear Cache')}
-
-
-
+
+
+
+
+ {listItem('Clear Cache')}
+
+
+
+
+ >
)
}
diff --git a/src/pages/settings/profile/index.tsx b/src/pages/settings/profile/index.tsx
index 8723c2e..9b01a72 100644
--- a/src/pages/settings/profile/index.tsx
+++ b/src/pages/settings/profile/index.tsx
@@ -32,6 +32,7 @@ import {
unixNow
} from '../../../utils'
import { Container } from '../../../components/Container'
+import { Footer } from '../../../components/Footer/Footer'
export const ProfileSettingsPage = () => {
const theme = useTheme()
@@ -385,6 +386,7 @@ export const ProfileSettingsPage = () => {
)}
+
>
)
}
diff --git a/src/pages/settings/relays/index.tsx b/src/pages/settings/relays/index.tsx
index 7e86964..4ed5d62 100644
--- a/src/pages/settings/relays/index.tsx
+++ b/src/pages/settings/relays/index.tsx
@@ -27,6 +27,7 @@ import {
shorten
} from '../../../utils'
import styles from './style.module.scss'
+import { Footer } from '../../../components/Footer/Footer'
export const RelaysPage = () => {
const usersPubkey = useAppSelector((state) => state.auth?.usersPubkey)
@@ -270,161 +271,164 @@ const RelayItem = ({
})
return (
-
-
-
-
- {relayInfo &&
- relayInfo.limitation &&
- relayInfo.limitation?.payment_required && (
-
- setDisplayRelayInfo((prev) => !prev)}
- />
-
- )}
+ <>
+
+
+
+
+ {relayInfo &&
+ relayInfo.limitation &&
+ relayInfo.limitation?.payment_required && (
+
+ setDisplayRelayInfo((prev) => !prev)}
+ />
+
+ )}
-
+
- handleLeaveRelay(relayURI)}
- >
-
- Leave
-
-
-
-
- setDisplayRelayInfo((prev) => !prev)}
- className={styles.showInfo}
- >
- Show info{' '}
- {displayRelayInfo ? (
-
- ) : (
-
- )}
-
- ) : (
- ''
- )
- }
- />
- handleRelayWriteChange(relayURI, event)}
- />
-
- {displayRelayInfo && (
- <>
-
-
-
- {relayInfo &&
- Object.keys(relayInfo).map((key: string) => {
- const infoTitle = capitalizeFirstLetter(
- key.replace('_', ' ')
- )
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- let infoValue = (relayInfo as any)[key]
+ handleLeaveRelay(relayURI)}
+ >
+
+ Leave
+
+
+
+
+ setDisplayRelayInfo((prev) => !prev)}
+ className={styles.showInfo}
+ >
+ Show info{' '}
+ {displayRelayInfo ? (
+
+ ) : (
+
+ )}
+
+ ) : (
+ ''
+ )
+ }
+ />
+ handleRelayWriteChange(relayURI, event)}
+ />
+
+ {displayRelayInfo && (
+ <>
+
+
+
+ {relayInfo &&
+ Object.keys(relayInfo).map((key: string) => {
+ const infoTitle = capitalizeFirstLetter(
+ key.replace('_', ' ')
+ )
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ let infoValue = (relayInfo as any)[key]
- switch (key) {
- case 'pubkey':
- infoValue = shorten(hexToNpub(infoValue), 15)
+ switch (key) {
+ case 'pubkey':
+ infoValue = shorten(hexToNpub(infoValue), 15)
- break
+ break
- case 'limitation':
- infoValue = (
-
- {Object.keys(infoValue).map((valueKey) => (
- -
-
- {capitalizeFirstLetter(
- valueKey.split('_').join(' ')
- )}
- :
- {' '}
- {`${infoValue[valueKey]}`}
-
- ))}
-
- )
+ case 'limitation':
+ infoValue = (
+
+ {Object.keys(infoValue).map((valueKey) => (
+ -
+
+ {capitalizeFirstLetter(
+ valueKey.split('_').join(' ')
+ )}
+ :
+ {' '}
+ {`${infoValue[valueKey]}`}
+
+ ))}
+
+ )
- break
+ break
- case 'fees':
- infoValue = (
-
- {Object.keys(infoValue).map((valueKey) => (
- -
-
- {capitalizeFirstLetter(
- valueKey.split('_').join(' ')
- )}
- :
- {' '}
- {`${infoValue[valueKey].map((fee: RelayFee) => `${fee.amount} ${fee.unit}`)}`}
-
- ))}
-
- )
- break
- default:
- break
- }
+ case 'fees':
+ infoValue = (
+
+ {Object.keys(infoValue).map((valueKey) => (
+ -
+
+ {capitalizeFirstLetter(
+ valueKey.split('_').join(' ')
+ )}
+ :
+ {' '}
+ {`${infoValue[valueKey].map((fee: RelayFee) => `${fee.amount} ${fee.unit}`)}`}
+
+ ))}
+
+ )
+ break
+ default:
+ break
+ }
- if (Array.isArray(infoValue)) {
- infoValue = infoValue.join(', ')
- }
+ if (Array.isArray(infoValue)) {
+ infoValue = infoValue.join(', ')
+ }
- return (
-
-
- {infoTitle}:
- {' '}
- {infoValue}
- {key === 'pubkey' ? (
- {
- navigator.clipboard.writeText(
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- hexToNpub((relayInfo as any)[key])
- )
+ return (
+
+
+ {infoTitle}:
+ {' '}
+ {infoValue}
+ {key === 'pubkey' ? (
+ {
+ navigator.clipboard.writeText(
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ hexToNpub((relayInfo as any)[key])
+ )
- toast.success('Copied to clipboard', {
- autoClose: 1000,
- hideProgressBar: true
- })
- }}
- />
- ) : null}
-
- )
- })}
-
-
- >
- )}
-
-
+ toast.success('Copied to clipboard', {
+ autoClose: 1000,
+ hideProgressBar: true
+ })
+ }}
+ />
+ ) : null}
+
+ )
+ })}
+
+
+ >
+ )}
+
+
+
+ >
)
}
diff --git a/src/pages/verify/index.tsx b/src/pages/verify/index.tsx
index 8619806..cf3cf18 100644
--- a/src/pages/verify/index.tsx
+++ b/src/pages/verify/index.tsx
@@ -53,6 +53,7 @@ import { convertToSigitFile, SigitFile } from '../../utils/file.ts'
import { FileDivider } from '../../components/FileDivider.tsx'
import { ExtensionFileBox } from '../../components/ExtensionFileBox.tsx'
import { useScale } from '../../hooks/useScale.tsx'
+import { Footer } from '../../components/Footer/Footer.tsx'
interface PdfViewProps {
files: CurrentUserFile[]
@@ -570,6 +571,7 @@ export const VerifyPage = () => {
)}
+
>
)
}