2023-02-17 09:21:02 +00:00
|
|
|
import { PageLayout } from '../components/_shared/PageLayout'
|
2023-05-31 12:23:18 +00:00
|
|
|
import { useLocalize } from '../context/localize'
|
|
|
|
import { Button } from '../components/_shared/Button'
|
|
|
|
import { Icon } from '../components/_shared/Icon'
|
|
|
|
import { clsx } from 'clsx'
|
|
|
|
import styles from '../styles/Create.module.scss'
|
2023-04-11 13:57:48 +00:00
|
|
|
import { apiClient } from '../utils/apiClient'
|
|
|
|
import { redirectPage } from '@nanostores/router'
|
2023-05-31 12:23:18 +00:00
|
|
|
import { router } from '../stores/router'
|
2023-07-02 05:08:42 +00:00
|
|
|
import { LayoutType } from './types'
|
2023-02-17 09:21:02 +00:00
|
|
|
|
2023-07-02 05:08:42 +00:00
|
|
|
const handleCreate = async (layout: LayoutType) => {
|
2023-06-10 14:10:05 +00:00
|
|
|
const shout = await apiClient.createArticle({ article: { layout: layout } })
|
|
|
|
redirectPage(router, 'edit', {
|
|
|
|
shoutId: shout.id.toString()
|
|
|
|
})
|
2023-05-31 12:23:18 +00:00
|
|
|
}
|
2023-03-29 08:51:27 +00:00
|
|
|
|
2023-05-31 12:23:18 +00:00
|
|
|
export const CreatePage = () => {
|
|
|
|
const { t } = useLocalize()
|
2023-02-17 09:21:02 +00:00
|
|
|
return (
|
|
|
|
<PageLayout>
|
2023-05-31 12:23:18 +00:00
|
|
|
<article class={clsx('wide-container', 'container--static-page', styles.Create)}>
|
|
|
|
<h1>{t('Choose a post type')}</h1>
|
|
|
|
<ul class={clsx('nodash', styles.list)}>
|
|
|
|
<li>
|
2023-06-10 14:10:05 +00:00
|
|
|
<div class={styles.link} onClick={() => handleCreate('article')}>
|
2023-05-31 12:23:18 +00:00
|
|
|
<Icon name="create-article" class={styles.icon} />
|
|
|
|
<div>{t('article')}</div>
|
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="#">
|
|
|
|
<Icon name="create-books" class={styles.icon} />
|
|
|
|
<div>{t('literature')}</div>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
2023-07-02 05:08:42 +00:00
|
|
|
<div class={styles.link} onClick={() => handleCreate('image')}>
|
2023-05-31 12:23:18 +00:00
|
|
|
<Icon name="create-images" class={styles.icon} />
|
|
|
|
<div>{t('images')}</div>
|
2023-07-02 05:08:42 +00:00
|
|
|
</div>
|
2023-05-31 12:23:18 +00:00
|
|
|
</li>
|
|
|
|
<li>
|
2023-07-14 13:06:21 +00:00
|
|
|
<div class={styles.link} onClick={() => handleCreate('audio')}>
|
2023-05-31 12:23:18 +00:00
|
|
|
<Icon name="create-music" class={styles.icon} />
|
|
|
|
<div>{t('music')}</div>
|
2023-07-14 13:06:21 +00:00
|
|
|
</div>
|
2023-05-31 12:23:18 +00:00
|
|
|
</li>
|
|
|
|
<li>
|
2023-06-10 14:10:05 +00:00
|
|
|
<div class={styles.link} onClick={() => handleCreate('video')}>
|
2023-05-31 12:23:18 +00:00
|
|
|
<Icon name="create-video" class={styles.icon} />
|
2023-06-10 14:10:05 +00:00
|
|
|
<div>{t('video')}</div>
|
|
|
|
</div>
|
2023-05-31 12:23:18 +00:00
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
<Button value={t('Back')} onClick={() => window.history.back()} />
|
|
|
|
</article>
|
2023-02-17 09:21:02 +00:00
|
|
|
</PageLayout>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
export const Page = CreatePage
|