mirror of
https://github.com/dzeiocom/markblog.git
synced 2025-06-19 22:19:19 +00:00
23
pages/_app.tsx
Normal file
23
pages/_app.tsx
Normal file
@ -0,0 +1,23 @@
|
||||
import React from 'react'
|
||||
import App from 'next/app'
|
||||
|
||||
class MyApp extends App {
|
||||
// Only uncomment this method if you have blocking data requirements for
|
||||
// every single page in your application. This disables the ability to
|
||||
// perform automatic static optimization, causing every page in your app to
|
||||
// be server-side rendered.
|
||||
//
|
||||
// static async getInitialProps(appContext) {
|
||||
// // calls page's `getInitialProps` and fills `appProps.pageProps`
|
||||
// const appProps = await App.getInitialProps(appContext);
|
||||
//
|
||||
// return { ...appProps }
|
||||
// }
|
||||
|
||||
render() {
|
||||
const { Component, pageProps } = this.props
|
||||
return <Component {...pageProps} />
|
||||
}
|
||||
}
|
||||
|
||||
export default MyApp
|
26
pages/_document.tsx
Normal file
26
pages/_document.tsx
Normal file
@ -0,0 +1,26 @@
|
||||
// _document is only rendered on the server side and not on the client side
|
||||
// Event handlers like onClick can't be added to this file
|
||||
|
||||
// ./pages/_document.js
|
||||
import Document, { Html, Head, Main, NextScript } from 'next/document'
|
||||
|
||||
class MyDocument extends Document {
|
||||
static async getInitialProps(ctx) {
|
||||
const initialProps = await Document.getInitialProps(ctx)
|
||||
return { ...initialProps }
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
<body>
|
||||
<Main />
|
||||
<NextScript />
|
||||
</body>
|
||||
</Html>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
export default MyDocument
|
124
pages/index.tsx
Normal file
124
pages/index.tsx
Normal file
@ -0,0 +1,124 @@
|
||||
import { NextPage } from 'next'
|
||||
import Head from 'next/head'
|
||||
import Link from 'next/link'
|
||||
import '../styl/styl.styl'
|
||||
import Element from '../components/Element'
|
||||
import Navbar from '../components/Navbar'
|
||||
import Header from '../components/Header'
|
||||
import Menu from '../components/Menu'
|
||||
import Filters from '../components/Filters'
|
||||
import Category from '../components/interfaces/Category'
|
||||
import { Component } from 'react'
|
||||
|
||||
interface Props {
|
||||
userAgent?: string
|
||||
}
|
||||
|
||||
interface el {
|
||||
link: string,
|
||||
title: string,
|
||||
img: string,
|
||||
date: Date
|
||||
}
|
||||
|
||||
interface States {
|
||||
elements: el[]
|
||||
asideHeight: number
|
||||
}
|
||||
|
||||
// export const config = {amp: 'hybrid'}
|
||||
|
||||
const categories: Category[] = [
|
||||
{
|
||||
name: "test",
|
||||
slug: "pouet"
|
||||
}
|
||||
]
|
||||
|
||||
const elements: el[] = [
|
||||
{link:"/studiomoto", title:"Studiomoto, Site de référencement d'événement moto en France", img:"/uploads/stm.png", date: new Date()},
|
||||
{link:"/studiomoto", title:"Studiomoto, Site de référencement d'événement moto en France", img:"/uploads/stm.png", date: new Date()},
|
||||
{link:"/studiomoto", title:"Studiomoto, Site de référencement d'événement moto en France", img:"/uploads/stm.png", date: new Date()},
|
||||
{link:"/studiomoto", title:"Studiomoto, Site de référencement d'événement moto en France", img:"/uploads/stm.png", date: new Date()},
|
||||
{link:"/studiomoto", title:"Studiomoto, Site de référencement d'événement moto en France", img:"/uploads/stm.png", date: new Date()},
|
||||
{link:"/studiomoto", title:"Studiomoto, Site de référencement d'événement moto en France", img:"/uploads/stm.png", date: new Date()},
|
||||
{link:"/studiomoto", title:"Dzeio.io, Services en ligne pour vous simplifier la vie !", img:"/sea.jpg", date: new Date()},
|
||||
{link:"/studiomoto", title:"Loram ipsum dolor sit amet", img:"/uploads/stm.png", date: new Date()},
|
||||
{link:"/studiomoto", title:"j'aime les licornes et leurs jolie corne", img:"/uploads/stm.png", date: new Date()},
|
||||
{link:"/studiomoto", title:"Pokémon ! attrapez les tous !", img:"/uploads/stm.png", date: new Date()},
|
||||
{link:"/studiomoto", title:"abcde", img:"/uploads/stm.png", date: new Date()},
|
||||
{link:"/studiomoto", title:"def", img:"/uploads/stm.png", date: new Date()},
|
||||
{link:"/studiomoto", title:"abc", img:"/uploads/stm.png", date: new Date()},
|
||||
{link:"/studiomoto", title:"Studiomoto, Site de référencement d'événement moto en France", img:"/uploads/stm.png", date: new Date()},
|
||||
{link:"/studiomoto", title:"Studiomoto, Site de référencement d'événement moto en France", img:"/uploads/stm.png", date: new Date()},
|
||||
{link:"/studiomoto", title:"Studiomoto, Site de référencement d'événement moto en France", img:"/uploads/stm.png", date: new Date()},
|
||||
{link:"/studiomoto", title:"Studiomoto, Site de référencement d'événement moto en France", img:"/uploads/stm.png", date: new Date()}
|
||||
]
|
||||
|
||||
export default class Page extends Component<Props, States> {
|
||||
|
||||
onQuery = (query: string) => {
|
||||
console.log(`query: ${query}`)
|
||||
const t= elements.filter(el => {
|
||||
return el.title.toLowerCase().includes(query.toLowerCase())
|
||||
})
|
||||
this.setState({
|
||||
elements: t
|
||||
})
|
||||
}
|
||||
|
||||
onHeight = (height: number) => {
|
||||
this.setState({
|
||||
asideHeight: height
|
||||
})
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
this.setState({
|
||||
elements
|
||||
})
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<div>
|
||||
<Head>
|
||||
<link rel="manifest" href="/manifest.json" />
|
||||
</Head>
|
||||
<Navbar>
|
||||
<Menu />
|
||||
</Navbar>
|
||||
<Header />
|
||||
<main>
|
||||
<span>
|
||||
{this.state && this.state.elements.map((el, index) => (
|
||||
<Element key={index} link={el.link} title={el.title} image={el.img} date={el.date} />
|
||||
))}
|
||||
</span>
|
||||
<Filters categories={categories} onQuery={this.onQuery} onHeight={this.onHeight}/>
|
||||
</main>
|
||||
<style jsx>{`
|
||||
span {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
}
|
||||
main {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
main span {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
@media (min-width: 820px) and (min-height: ${this.state && this.state.asideHeight ? this.state.asideHeight+100 : 600}px) {
|
||||
main span {
|
||||
max-width: calc(100% - 400px);
|
||||
}
|
||||
}
|
||||
`}</style>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
28
pages/portfolio/[slug].tsx
Normal file
28
pages/portfolio/[slug].tsx
Normal file
@ -0,0 +1,28 @@
|
||||
import { NextPage, NextPageContext } from "next"
|
||||
|
||||
import React from 'react'
|
||||
import Post from "../../components/Post"
|
||||
import ReactMarkdown from 'react-markdown'
|
||||
|
||||
interface Props {
|
||||
post: Post
|
||||
}
|
||||
|
||||
const PostPage: NextPage<Props> = (props: Props) => {
|
||||
// React.
|
||||
return (
|
||||
<main>
|
||||
<ReactMarkdown source={props.post.content}/>
|
||||
</main>
|
||||
)
|
||||
}
|
||||
|
||||
PostPage.getInitialProps = async (context: NextPageContext) => {
|
||||
const { slug } = context.query
|
||||
if (typeof slug === "object") throw new Error("Slug is not correct")
|
||||
const post = new Post(slug)
|
||||
await post.fetch()
|
||||
return {post}
|
||||
}
|
||||
|
||||
export default PostPage
|
58
pages/portfolio/index.tsx
Normal file
58
pages/portfolio/index.tsx
Normal file
@ -0,0 +1,58 @@
|
||||
import { NextPage, NextPageContext } from "next"
|
||||
import Link from 'next/link'
|
||||
import Post from "../../components/Post"
|
||||
// import posts from '../../posts/pages.json'
|
||||
// import firstline from 'firstline'
|
||||
// import 'fs'
|
||||
|
||||
interface Props {
|
||||
files: fileInformations[]
|
||||
}
|
||||
|
||||
interface fileInformations {
|
||||
title: string
|
||||
slug: string
|
||||
}
|
||||
|
||||
const PortfolioIndex: NextPage<Props> = (props: Props) => {
|
||||
|
||||
const el: JSX.Element[] = []
|
||||
for (const post of props.files) {
|
||||
el.push(
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<ul>
|
||||
{props.files.map(post => (
|
||||
<li key={post.slug}>
|
||||
<Link href="/portfolio/[slug]" as={`/portfolio/${post.slug}`}>
|
||||
<a>{post.title}</a>
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
PortfolioIndex.getInitialProps = async (context: NextPageContext) => {
|
||||
const arr: fileInformations[] = []
|
||||
for (const post of await Post.fetchAll()) {
|
||||
if (!post.isStarted) await post.fetch()
|
||||
arr.push({
|
||||
slug: post.slug,
|
||||
title: post.title
|
||||
})
|
||||
}
|
||||
return {files: arr}
|
||||
}
|
||||
|
||||
export default PortfolioIndex
|
||||
|
||||
function l(args: any) {
|
||||
console.log(arguments)
|
||||
}
|
||||
|
||||
async function test() {
|
||||
}
|
Reference in New Issue
Block a user