fix: failing links in footer, backup and supporters pages prep

Partially #142
This commit is contained in:
enes 2024-12-26 17:20:21 +01:00
parent ad68ba8e84
commit 1c4a9c8586
5 changed files with 193 additions and 8 deletions

View File

@ -1,4 +1,6 @@
import { Link } from 'react-router-dom'
import styles from '../styles/footer.module.scss' import styles from '../styles/footer.module.scss'
import { appRoutes, getProfilePageRoute } from 'routes'
export const Footer = () => { export const Footer = () => {
return ( return (
@ -7,6 +9,7 @@ export const Footer = () => {
<p className={styles.secMainFooterPara}> <p className={styles.secMainFooterPara}>
Built with&nbsp; Built with&nbsp;
<a <a
rel='noopener'
className={styles.secMainFooterParaLink} className={styles.secMainFooterParaLink}
href='https://github.com/nostr-protocol/nostr' href='https://github.com/nostr-protocol/nostr'
target='_blank' target='_blank'
@ -14,21 +17,26 @@ export const Footer = () => {
Nostr Nostr
</a>{' '} </a>{' '}
by&nbsp; by&nbsp;
<a <Link
className={styles.secMainFooterParaLink} className={styles.secMainFooterParaLink}
href='https://degmods.com/profile/nprofile1qqsre6jgq6c7r2vzn5cdtju20qq36sn3cer5avc4x8kfru5pzrlr7sqnancjp' to={getProfilePageRoute(
'nprofile1qqsre6jgq6c7r2vzn5cdtju20qq36sn3cer5avc4x8kfru5pzrlr7sqnancjp'
)}
target='_blank' target='_blank'
> >
Freakoverse Freakoverse
</a> </Link>
, with the support of{' '} , with the support of{' '}
<a className={styles.secMainFooterParaLink} href='backers.html'> <Link
className={styles.secMainFooterParaLink}
to={appRoutes.supporters}
>
Supporters Supporters
</a> </Link>
. Check our&nbsp; . Check our&nbsp;
<a className={styles.secMainFooterParaLink} href='backup.html'> <Link className={styles.secMainFooterParaLink} to={appRoutes.backup}>
Backup Plan Backup Plan
</a> </Link>
. .
</p> </p>
</div> </div>

126
src/pages/backup.tsx Normal file
View File

@ -0,0 +1,126 @@
import { capitalizeEachWord } from 'utils'
import '../styles/backup.css'
import backupPlanImg from '../assets/img/DEG Mods Backup Plan.png'
// import placeholder from '../assets/img/DEGMods Placeholder Img.png'
interface BackupItemProps {
name: string
image: string
link: string
type: 'repo' | 'alt' | 'exe'
}
const BACKUP_LIST: BackupItemProps[] = [
// {
// name: 'Github',
// type: 'repo',
// image:
// 'https://www.c-sharpcorner.com/article/create-github-repository-and-add-newexisting-project-using-github-desktop/Images/github.png',
// link: '#'
// },
// {
// name: 'Github, but nostr',
// type: 'repo',
// image: 'https://vitorpamplona.com/images/nostr.gif',
// link: '#'
// },
// {
// name: 'name',
// type: 'alt',
// image: placeholder,
// link: '#'
// },
// {
// name: '',
// type: 'exe',
// image: placeholder,
// link: '#'
// }
]
const BackupItem = ({ name, image, link, type }: BackupItemProps) => {
return (
<a
className='backupListLink'
href={link}
style={{
background: `linear-gradient(15deg, rgba(0,0,0,0.75), rgba(0,0,0,0.25)),
url("${image}") center / cover no-repeat,
linear-gradient(45deg, rgba(0,0,0,0.1), rgba(255,255,255,0.01) 50%, rgba(0,0,0,0.1))`
}}
target='_blank'
>
<div className='backupListLinkInside'>
<h3>
{type === 'exe' ? type.toUpperCase() : capitalizeEachWord(type)}:{' '}
{name}
</h3>
</div>
</a>
)
}
export const BackupPage = () => {
return (
<div className='InnerBodyMain'>
<div className='ContainerMain'>
<div className='IBMSecMainGroup'>
<div className='IBMSecMain'>
<div className='AboutSec'>
<div className='LearnText'>
<div className='LearnTextInside'>
<h1
className='LearnTextHeading'
style={{ textAlign: 'center' }}
>
Backup Plan: Repos, Alts, EXE
</h1>
<img alt='' src={backupPlanImg} />
<p className='LearnTextPara'>
It's pretty clear that authoritarianism and censorship is on
the rise, on all fronts, and from what can be seen, any idea
that push for the opposite gets attacked. That's why DEG
Mods is running on Nostr, and that's why we're also writing
this backup plan.
<br />
</p>
<h3 className='LearnTextHeading'>Repositories</h3>
<p className='LearnTextPara'>
Wherever we can, we'll put DEG Mods' code on multiple
repositories such as Github, and (github but on nostr).
Below you can find the links where we've uploaded the site's
code to.
<br />
</p>
<h3 className='LearnTextHeading'>Alternatives</h3>
<p className='LearnTextPara'>
With the repositories for DEG Mods is up on multiple places,
we encourage people to take the code and duplicate it
elsewhere. Fork it, change the design, remove or add systems
and features, and make your own version. Below you can find
links of alts that we've found.
<br />
</p>
<h3 className='LearnTextHeading'>EXE</h3>
<p className='LearnTextPara'>
One last push we'd like to do is to create a .exe that'll
open up DEG Mods on your PC, as if you've opened the website
normally, with almost all of the functionalities you'd
expect (if not all). We want to do this so that in case
there are no alternatives, or that they're getting shut
down, then you can just rely on this instead. The link to it
will be added here the moment it becomes available.
<br />
</p>
<div className='backupList'>
{BACKUP_LIST.map((b) => (
<BackupItem {...b} />
))}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
)
}

3
src/pages/supporters.tsx Normal file
View File

@ -0,0 +1,3 @@
export const SupportersPage = () => {
return <h2>WIP</h2>
}

View File

@ -28,6 +28,8 @@ import { BlogPage } from '../pages/blog'
import { blogRouteLoader } from '../pages/blog/loader' import { blogRouteLoader } from '../pages/blog/loader'
import { blogRouteAction } from '../pages/blog/action' import { blogRouteAction } from '../pages/blog/action'
import { reportRouteAction } from '../actions/report' import { reportRouteAction } from '../actions/report'
import { BackupPage } from 'pages/backup'
import { SupportersPage } from 'pages/supporters'
export const appRoutes = { export const appRoutes = {
home: '/', home: '/',
@ -51,7 +53,9 @@ export const appRoutes = {
settingsAdmin: '/settings-admin', settingsAdmin: '/settings-admin',
profile: '/profile/:nprofile?', profile: '/profile/:nprofile?',
feed: '/feed', feed: '/feed',
notifications: '/notifications' notifications: '/notifications',
backup: '/backup',
supporters: '/supporters'
} }
export const getGamePageRoute = (name: string) => export const getGamePageRoute = (name: string) =>
@ -185,6 +189,14 @@ export const routerWithNdkContext = (context: NDKContextType) =>
} }
] ]
}, },
{
path: appRoutes.backup,
element: <BackupPage />
},
{
path: appRoutes.supporters,
element: <SupportersPage />
},
{ {
path: '*', path: '*',
element: <NotFoundPage /> element: <NotFoundPage />

36
src/styles/backup.css Normal file
View File

@ -0,0 +1,36 @@
.backupList {
width: 100%;
display: flex;
flex-direction: column;
grid-gap: 15px;
}
.backupListLink {
transition: ease 0.4s;
overflow: hidden;
padding: 15px;
box-shadow: 0 0 8px 0 rgb(0,0,0,0.1);
border-radius: 10px;
/*border: solid 1px rgba(255,255,255,0.1);*/
position: relative;
color: rgba(255,255,255,0.75);
min-height: 150px;
display: flex;
flex-direction: column;
}
.backupListLink:hover {
transition: ease 0.4s;
text-decoration: unset;
color: rgb(255,255,255);
transform: scale(1.02);
}
.backupListLinkInside {
display: flex;
flex-direction: column;
grid-gap: 0px;
flex-grow: 1;
justify-content: end;
}