many style updates
This commit is contained in:
parent
1104866a76
commit
4339a94ee7
20 changed files with 124 additions and 30 deletions
BIN
public/img/flags/stateless.png
Normal file
BIN
public/img/flags/stateless.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
BIN
public/img/flags/unknown.png
Normal file
BIN
public/img/flags/unknown.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
BIN
public/img/logos/primos.png
Normal file
BIN
public/img/logos/primos.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.5 KiB |
BIN
public/img/profiles/cbordalo.jpg
Normal file
BIN
public/img/profiles/cbordalo.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 921 KiB |
|
@ -5,7 +5,6 @@ import { Zilla_Slab } from 'next/font/google'
|
||||||
import { notFound } from 'next/navigation'
|
import { notFound } from 'next/navigation'
|
||||||
import DocumentCard from '@/app/components/DocumentCard'
|
import DocumentCard from '@/app/components/DocumentCard'
|
||||||
import findDocumentsByAuthor from './findDocumentsByAuthor'
|
import findDocumentsByAuthor from './findDocumentsByAuthor'
|
||||||
import { redirect } from 'next/navigation' // for server side
|
|
||||||
|
|
||||||
const zillaSlab = Zilla_Slab({ subsets: ['latin'], weight: ['500'] })
|
const zillaSlab = Zilla_Slab({ subsets: ['latin'], weight: ['500'] })
|
||||||
|
|
||||||
|
@ -40,13 +39,13 @@ export default function AuthorDisplay({
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
<div className='my-4 max-h-12 flex flex-wrap'>
|
<div className='my-4 max-h-12 flex flex-wrap gap-2'>
|
||||||
{affiliation.map((a: string) => (
|
{affiliation.map((a: string) => (
|
||||||
<Link key={a} href={`/affiliation/${a.split('@')[1]}`}>
|
<Link key={a} href={`/affiliation/${a.split('@')[1]}`}>
|
||||||
<img
|
<img
|
||||||
src={affiliations[a.split('@')[1]].image}
|
src={affiliations[a.split('@')[1]].image}
|
||||||
alt={affiliations[a.split('@')[1]].name}
|
alt={affiliations[a.split('@')[1]].name}
|
||||||
className='h-12 mr-3 shadow-md shadow-slate-300'
|
className='h-12 shadow-sm shadow-slate-400 rounded-md'
|
||||||
/>
|
/>
|
||||||
</Link>
|
</Link>
|
||||||
))}
|
))}
|
||||||
|
|
|
@ -59,9 +59,7 @@ export const Topics = ({
|
||||||
{showTitle ? <span className='font-bold'>Topics: </span> : null}
|
{showTitle ? <span className='font-bold'>Topics: </span> : null}
|
||||||
{topics.map((t: string, i) => (
|
{topics.map((t: string, i) => (
|
||||||
<Fragment key={t}>
|
<Fragment key={t}>
|
||||||
<Link href={topicList[t].wiki} target='_blank'>
|
<Link href={`/topic/${t}`}>{topicList[t].name}</Link>
|
||||||
{topicList[t].name}
|
|
||||||
</Link>
|
|
||||||
{i !== topics.length - 1 ? ', ' : null}
|
{i !== topics.length - 1 ? ', ' : null}
|
||||||
</Fragment>
|
</Fragment>
|
||||||
))}
|
))}
|
||||||
|
|
|
@ -57,9 +57,7 @@ export const Topics = ({
|
||||||
{showTitle ? <span className='font-bold'>Topics: </span> : null}
|
{showTitle ? <span className='font-bold'>Topics: </span> : null}
|
||||||
{topics.map((t: string, i) => (
|
{topics.map((t: string, i) => (
|
||||||
<Fragment key={t}>
|
<Fragment key={t}>
|
||||||
<Link href={topicList[t].wiki} target='_blank'>
|
<Link href={`/topic/${t}`}>{topicList[t].name}</Link>
|
||||||
{topicList[t].name}
|
|
||||||
</Link>
|
|
||||||
{i !== topics.length - 1 ? ', ' : null}
|
{i !== topics.length - 1 ? ', ' : null}
|
||||||
</Fragment>
|
</Fragment>
|
||||||
))}
|
))}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import { Authors, Topics } from './DataDisplay'
|
||||||
import { ItemBadge, Status } from './Badges'
|
import { ItemBadge, Status } from './Badges'
|
||||||
import { epoch2datestring } from '@/app/utils/epoch2datestring'
|
import { epoch2datestring } from '@/app/utils/epoch2datestring'
|
||||||
import Link from 'next/link'
|
import Link from 'next/link'
|
||||||
|
import cardEffects from '@/app/styles/cardEffects.module.css'
|
||||||
|
|
||||||
const zillaSlab = Zilla_Slab({ subsets: ['latin'], weight: ['500'] })
|
const zillaSlab = Zilla_Slab({ subsets: ['latin'], weight: ['500'] })
|
||||||
|
|
||||||
|
@ -13,7 +14,7 @@ const DocumentCard = ({ doc, href }: { doc: Document; href: string }) => {
|
||||||
return (
|
return (
|
||||||
<Link href={href} className='no-link-style'>
|
<Link href={href} className='no-link-style'>
|
||||||
<div
|
<div
|
||||||
className='border-4 rounded-lg border-gray-300 hover:border-blue-500 p-5 my-4 w-full cursor-pointer shadow-slate-300 shadow-md'
|
className={`${cardEffects.card} border-4 rounded-lg border-gray-300 hover:border-blue-500 p-5 my-4 w-full cursor-pointer shadow-slate-300 shadow-md`}
|
||||||
role='button' // this is a critical DEI concern as we have marked this element as a button with ARIA role, yet we have not supported button accessiblity features
|
role='button' // this is a critical DEI concern as we have marked this element as a button with ARIA role, yet we have not supported button accessiblity features
|
||||||
>
|
>
|
||||||
<h2 className={`${zillaSlab.className} text-3xl`}>{title}</h2>
|
<h2 className={`${zillaSlab.className} text-3xl`}>{title}</h2>
|
||||||
|
|
|
@ -2,7 +2,7 @@ import Link from 'next/link'
|
||||||
import { Inter, Zilla_Slab } from 'next/font/google'
|
import { Inter, Zilla_Slab } from 'next/font/google'
|
||||||
|
|
||||||
const zillaSlab = Zilla_Slab({ weight: '600', subsets: ['latin'] })
|
const zillaSlab = Zilla_Slab({ weight: '600', subsets: ['latin'] })
|
||||||
const inter = Inter({ weight: '400', subsets: ['latin'] })
|
const inter = Inter({ weight: ['400', '500'], subsets: ['latin'] })
|
||||||
|
|
||||||
export default function News() {
|
export default function News() {
|
||||||
return (
|
return (
|
||||||
|
@ -12,9 +12,7 @@ export default function News() {
|
||||||
' mt-6 bg-slate-800 rounded-lg p-6 w-full basis-full md:basis-2/5 my-4 lg:my-0 max-h-[250px] overflow-y-auto shadow-slate-500 shadow-sm'
|
' mt-6 bg-slate-800 rounded-lg p-6 w-full basis-full md:basis-2/5 my-4 lg:my-0 max-h-[250px] overflow-y-auto shadow-slate-500 shadow-sm'
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<div
|
<div className={zillaSlab.className + ' text-3xl text-slate-200'}>
|
||||||
className={zillaSlab.className + ' font-serif text-3xl text-slate-200'}
|
|
||||||
>
|
|
||||||
eeXiv News
|
eeXiv News
|
||||||
</div>
|
</div>
|
||||||
<div className='text-lg text-slate-400 mb-4'>
|
<div className='text-lg text-slate-400 mb-4'>
|
||||||
|
|
|
@ -52,7 +52,11 @@ const RandomDocs = (): React.ReactNode[] => {
|
||||||
return (
|
return (
|
||||||
<div key={key}>
|
<div key={key}>
|
||||||
<Link href={`/document/view/${key}`}>{title}</Link>, a {typeString}{' '}
|
<Link href={`/document/view/${key}`}>{title}</Link>, a {typeString}{' '}
|
||||||
about {topicsList[topics[0]]['name']} published on {dateString}
|
about{' '}
|
||||||
|
<Link href={`/topic/${topics[0]}`}>
|
||||||
|
{topicsList[topics[0]]['name']}
|
||||||
|
</Link>{' '}
|
||||||
|
published on {dateString}
|
||||||
.
|
.
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -59,7 +59,11 @@ const RecentDocuments = (): React.ReactNode[] => {
|
||||||
return (
|
return (
|
||||||
<div key={key}>
|
<div key={key}>
|
||||||
<Link href={`/document/view/${key}`}>{title}</Link>, a {typeString}{' '}
|
<Link href={`/document/view/${key}`}>{title}</Link>, a {typeString}{' '}
|
||||||
about {topicsList[topics[0]]['name']} published on {dateString}
|
about{' '}
|
||||||
|
<Link href={`/topic/${topics[0]}`}>
|
||||||
|
{topicsList[topics[0]]['name']}
|
||||||
|
</Link>{' '}
|
||||||
|
published on {dateString}
|
||||||
.
|
.
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -524,6 +524,16 @@ export const authors: Readonly<{ [key: string]: Author }> = {
|
||||||
image: '/img/profiles/default.png',
|
image: '/img/profiles/default.png',
|
||||||
website: 'https://futureinspireacademy.com',
|
website: 'https://futureinspireacademy.com',
|
||||||
},
|
},
|
||||||
|
cbordalo: {
|
||||||
|
name: {
|
||||||
|
first: 'Christian',
|
||||||
|
last: 'Bordalo',
|
||||||
|
nickname: 'CB12',
|
||||||
|
},
|
||||||
|
affiliation: ['Wage Slave@primos', 'Student@srvhs'],
|
||||||
|
image: '/img/profiles/cbordalo.jpg',
|
||||||
|
nationality: ['stateless', 'unknown'],
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Affiliation {
|
export interface Affiliation {
|
||||||
|
@ -680,7 +690,20 @@ Raid Zero's influence extends beyond the technical achievements in robotics comp
|
||||||
Future Inspire Academy (FIA) is a non-profit organization that strives to teach students how to apply their coding skills to game development in a fun and efficient way. Our mission is to create a platform to reward members who start their game development journey early. We give members all the resources to learn quickly and reward their efforts with points which can be used to upgrade their game jam prizes. Become a member today and reap all the benefits by joining our Discord Server!
|
Future Inspire Academy (FIA) is a non-profit organization that strives to teach students how to apply their coding skills to game development in a fun and efficient way. Our mission is to create a platform to reward members who start their game development journey early. We give members all the resources to learn quickly and reward their efforts with points which can be used to upgrade their game jam prizes. Become a member today and reap all the benefits by joining our Discord Server!
|
||||||
[linebreak]
|
[linebreak]
|
||||||
Our organization not only impacts our members from around the world but also our partners as we help promote their business and improve their products. Our new vision has been to help develop companies that would contribute to the future of game development and promote accessibility. Recently, we launched exclusive early access to Rosebud’s game maker platform for all of our members to try. In the future, we plan to host more exclusive events that revolve around our partners.
|
Our organization not only impacts our members from around the world but also our partners as we help promote their business and improve their products. Our new vision has been to help develop companies that would contribute to the future of game development and promote accessibility. Recently, we launched exclusive early access to Rosebud’s game maker platform for all of our members to try. In the future, we plan to host more exclusive events that revolve around our partners.
|
||||||
`,
|
`,
|
||||||
|
},
|
||||||
|
primos: {
|
||||||
|
name: `Primo's Pizzeria & Pub`,
|
||||||
|
short: 'Primos',
|
||||||
|
image: '/img/logos/primos.png',
|
||||||
|
description: `
|
||||||
|
Welcoming, family-run restaurant pairs straightforward pizzas, pasta & sandwiches with beers on tap.
|
||||||
|
[linebreak]
|
||||||
|
Service options: Serves happy hour food · Serves vegetarian dishes · Good for watching sports
|
||||||
|
[linebreak]
|
||||||
|
Address: 298 Hartz Ave, Danville, CA 94526
|
||||||
|
[linebreak]
|
||||||
|
Phone: (925) 838-8214`,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -735,4 +758,19 @@ export const nationalities: Readonly<{ [key: string]: Nationality }> = {
|
||||||
demonym: 'Japanese',
|
demonym: 'Japanese',
|
||||||
flag: 'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Flag_of_Japan.svg/1280px-Flag_of_Japan.svg.png',
|
flag: 'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Flag_of_Japan.svg/1280px-Flag_of_Japan.svg.png',
|
||||||
},
|
},
|
||||||
|
isr: {
|
||||||
|
name: 'State of Israel',
|
||||||
|
demonym: 'Israeli',
|
||||||
|
flag: 'https://upload.wikimedia.org/wikipedia/commons/5/5c/Israel_flag_300.png?20050629023821',
|
||||||
|
},
|
||||||
|
unknown: {
|
||||||
|
name: 'Undetermined',
|
||||||
|
demonym: 'Undetermined',
|
||||||
|
flag: '/img/flags/unknown.png',
|
||||||
|
},
|
||||||
|
stateless: {
|
||||||
|
name: 'Stateless',
|
||||||
|
demonym: 'Stateless',
|
||||||
|
flag: '/img/flags/stateless.png',
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ export default function DocumentViewer({ slug }: Readonly<{ slug: string }>) {
|
||||||
className={`
|
className={`
|
||||||
text-slate-800 text-5xl mb-4
|
text-slate-800 text-5xl mb-4
|
||||||
${zillaSlab.className}
|
${zillaSlab.className}
|
||||||
text-wrap
|
text-wrap break-words hyphens-auto
|
||||||
`}
|
`}
|
||||||
>
|
>
|
||||||
{title}
|
{title}
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: #2563eb; /* Tailwind's blue-600 */
|
@apply text-blue-600;
|
||||||
}
|
}
|
||||||
|
|
||||||
a:hover {
|
a:hover {
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
.content {
|
|
||||||
margin-top: 40px;
|
|
||||||
padding: 35px;
|
|
||||||
border-radius: 15px;
|
|
||||||
}
|
|
|
@ -60,11 +60,12 @@ export default function RootLayout({
|
||||||
className={`${styles.banner} w-full h-[100px] mb-[50px] shadow-md shadow-slate-400`}
|
className={`${styles.banner} w-full h-[100px] mb-[50px] shadow-md shadow-slate-400`}
|
||||||
>
|
>
|
||||||
<div className='max-w-[1200px] flex justify-between mx-auto items-center pt-3 flex-nowrap'>
|
<div className='max-w-[1200px] flex justify-between mx-auto items-center pt-3 flex-nowrap'>
|
||||||
<h1 className={`${styles.title} ${zillaSlab.className} mx-10`}>
|
<Link
|
||||||
<Link href='/' className='no-link-style'>
|
href='/'
|
||||||
|
className={`${zillaSlab.className} no-link-style ${styles.title} mx-10`}
|
||||||
|
>
|
||||||
eeXiv
|
eeXiv
|
||||||
</Link>
|
</Link>
|
||||||
</h1>
|
|
||||||
<div className='hidden md:inline'>
|
<div className='hidden md:inline'>
|
||||||
<SearchBar />
|
<SearchBar />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -6,6 +6,7 @@ import { Status, ItemBadge } from '@/app/components/Badges'
|
||||||
import { epoch2datestring } from '../utils/epoch2datestring'
|
import { epoch2datestring } from '../utils/epoch2datestring'
|
||||||
import searchDocs, { CustomSearchResult } from '@/app/utils/searchDocs'
|
import searchDocs, { CustomSearchResult } from '@/app/utils/searchDocs'
|
||||||
import { useSuspenseQuery } from '@tanstack/react-query'
|
import { useSuspenseQuery } from '@tanstack/react-query'
|
||||||
|
import cardEffects from '@/app/styles/cardEffects.module.css'
|
||||||
|
|
||||||
const zillaSlab = Zilla_Slab({ subsets: ['latin'], weight: ['500', '700'] })
|
const zillaSlab = Zilla_Slab({ subsets: ['latin'], weight: ['500', '700'] })
|
||||||
|
|
||||||
|
@ -41,7 +42,7 @@ const SearchResult = ({
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className='border-4 rounded-lg border-gray-300 hover:border-blue-500 p-5 my-4 w-full cursor-pointer shadow-slate-300 shadow-md'
|
className={`${cardEffects.card} border-4 rounded-lg border-gray-300 hover:border-blue-500 p-5 my-4 w-full cursor-pointer`}
|
||||||
onClick={handleClick}
|
onClick={handleClick}
|
||||||
role='button' // this is a critical DEI concern as we have marked this element as a button with ARIA role, yet we have not supported button accessiblity features
|
role='button' // this is a critical DEI concern as we have marked this element as a button with ARIA role, yet we have not supported button accessiblity features
|
||||||
>
|
>
|
||||||
|
|
28
src/app/styles/cardEffects.module.css
Normal file
28
src/app/styles/cardEffects.module.css
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
/* creates a 3D card effect using a pseudo element for performance reasons */
|
||||||
|
|
||||||
|
.card {
|
||||||
|
@apply shadow-sm shadow-slate-300;
|
||||||
|
/* box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); */
|
||||||
|
transition: all 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.card::after {
|
||||||
|
@apply shadow-lg shadow-slate-500;
|
||||||
|
content: '';
|
||||||
|
z-index: -1;
|
||||||
|
transition: all 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||||
|
position: absolute;
|
||||||
|
opacity: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card:hover {
|
||||||
|
transform: scale(1.02, 1.02);
|
||||||
|
}
|
||||||
|
|
||||||
|
.card:hover::after {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
29
src/app/topic/[slug]/page.tsx
Normal file
29
src/app/topic/[slug]/page.tsx
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
import { Zilla_Slab } from 'next/font/google'
|
||||||
|
import { topics } from '@/app/db/data'
|
||||||
|
import { notFound } from 'next/navigation'
|
||||||
|
|
||||||
|
const zillaSlab = Zilla_Slab({ subsets: ['latin'], weight: ['500'] })
|
||||||
|
|
||||||
|
export function generateStaticParams() {
|
||||||
|
const topicsList = Object.keys(topics)
|
||||||
|
return topicsList.map((topic) => ({ topic }))
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Page({
|
||||||
|
params,
|
||||||
|
}: Readonly<{ params: { slug: string } }>) {
|
||||||
|
const topic = topics[params.slug]
|
||||||
|
if (!topic) notFound()
|
||||||
|
const { name, description, wiki } = topic
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className='flex p-4 lg:p-8 mx-auto bg-slate-200 shadow-slate-300 shadow-sm rounded-md max-w-2xl flex-col gap-4'>
|
||||||
|
<h1 className={`${zillaSlab.className} text-5xl`}>{name}</h1>
|
||||||
|
<p className='text-slate-700 text-lg'>{description}</p>
|
||||||
|
<p>
|
||||||
|
<span className='text-slate-800'>Read more at:</span>{' '}
|
||||||
|
<a href={wiki}>{wiki}</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
Loading…
Reference in a new issue