* add contributers * Add icon fetcher * add contributing json * Fix fetch call * Add contributers to site * Add caching for github api * Fix build * Move context provider * Revert packages changes * Fix mobile layout * remove react-spring * remove incorrect type prop
57 lines
1.2 KiB
TypeScript
57 lines
1.2 KiB
TypeScript
import { useRouter } from 'next/router'
|
|
import IconDetailOverlay from '../../components/IconDetailOverlay'
|
|
import { getAllData, getData } from '../../lib/icons';
|
|
import IconOverview from '../../components/IconOverview';
|
|
import Layout from '../../components/Layout';
|
|
import Header from '../../components/Header';
|
|
|
|
const IconPage = ({ icon, data }) => {
|
|
const router = useRouter()
|
|
|
|
const onClose = () => {
|
|
let query = {};
|
|
|
|
if(router.query.search) {
|
|
query = {
|
|
search: router.query.search
|
|
};
|
|
}
|
|
|
|
router.push({
|
|
pathname: '/',
|
|
query,
|
|
})
|
|
}
|
|
|
|
return (
|
|
<Layout>
|
|
<IconDetailOverlay
|
|
key={icon.name}
|
|
icon={icon}
|
|
close={onClose}
|
|
/>
|
|
<Header {...{data}}/>
|
|
<IconOverview {...{data}}/>
|
|
</Layout>
|
|
)
|
|
}
|
|
|
|
export default IconPage
|
|
|
|
export async function getStaticProps({ params: { iconName } }) {
|
|
const data = await getAllData();
|
|
const icon = await getData(iconName);
|
|
return { props: { icon, data } }
|
|
}
|
|
|
|
export async function getStaticPaths() {
|
|
const data = await getAllData();
|
|
|
|
return {
|
|
paths: data.map(({ name: iconName }) => ({
|
|
params: { iconName },
|
|
})),
|
|
fallback: false,
|
|
}
|
|
}
|