wip(org): Tweaks to the design & showcase pages
This commit is contained in:
parent
f9ee6e15f4
commit
778b294c83
4 changed files with 44 additions and 36 deletions
|
@ -29,13 +29,6 @@ const Design = ({ design }) => {
|
|||
code="Anonymous",
|
||||
difficulty=3,
|
||||
} = configs[design]
|
||||
const designer = configs[design].design || "Anonymous"
|
||||
const people = new Set()
|
||||
for (const contrib of ['design', 'code']) {
|
||||
if (Array.isArray(configs[design][contrib])) {
|
||||
for (const person of configs[design][contrib]) people.add(person)
|
||||
} else people.add(configs[design][contrib])
|
||||
}
|
||||
|
||||
const [examples, setExamples] = useState([])
|
||||
|
||||
|
@ -45,7 +38,7 @@ const Design = ({ design }) => {
|
|||
`&_where[_or][0][design1_eq]=${design}` +
|
||||
`&_where[_or][1][design2_eq]=${design}` +
|
||||
`&_where[_or][2][design3_eq]=${design}` +
|
||||
`&_limit=6`
|
||||
`&_limit=5`
|
||||
await fetch(url)
|
||||
.then(response => response.json())
|
||||
.then(data => setExamples(data.map(post => ({
|
||||
|
@ -59,8 +52,7 @@ const Design = ({ design }) => {
|
|||
return (
|
||||
<div className={`
|
||||
my-8
|
||||
aspect-[9/16]
|
||||
w-96
|
||||
w-full sm:w-96
|
||||
shadow-lg
|
||||
border
|
||||
rounded-lg
|
||||
|
@ -68,12 +60,8 @@ const Design = ({ design }) => {
|
|||
text-center
|
||||
overflow-clip
|
||||
relative
|
||||
`} style={{
|
||||
backgroundImage: `url('/img/designs/${design}.png')`,
|
||||
backgroundSize: 'contain',
|
||||
backgroundPosition: '50% 50%',
|
||||
backgroundRepeat: 'no-repeat',
|
||||
}}>
|
||||
`}
|
||||
>
|
||||
{/* Link over the entire card */}
|
||||
<Link href={`/designs/${design}`}>
|
||||
<a className="absolute top-0 right-0 w-full h-full" title={t(`${design}.t`)} />
|
||||
|
@ -86,21 +74,20 @@ const Design = ({ design }) => {
|
|||
<Difficulty score={difficulty} />
|
||||
</div>
|
||||
</div>
|
||||
{/* People who did the Design/Code */}
|
||||
<div className="flex flex-row items-center justify-start max-w-2/3 pt-2 pl-1">
|
||||
<span className="text-base-content font-sm talic ml-2 p-2 bg-base-100 rounded-lg bg-opacity-60 p-0 m-0 px-1">
|
||||
{[...people].map(person => person).join(' / ')}
|
||||
</span>
|
||||
</div>
|
||||
<div className="grow"></div>
|
||||
<div className="bg-neutral bg-opacity-50 p-4 text-neutral-content" style={{
|
||||
textShadow: "1px 1px 2px black",
|
||||
color: 'white'
|
||||
<h6 className="text-base-content m-0 pt-4 pl-4 text-left capitalize">{design}</h6>
|
||||
<div className={`grow aspect-[9/16] -mt-4
|
||||
`} style={{
|
||||
backgroundImage: `url('/img/designs/${design}.png')`,
|
||||
backgroundSize: 'contain',
|
||||
backgroundPosition: '50% 50%',
|
||||
backgroundRepeat: 'no-repeat',
|
||||
}}>
|
||||
<h2 className="text-neutral-content m-0 p-0">{t(`${design}.t`)}</h2>
|
||||
<div className="text-neutral-content m-0 p-0 font-bold text-lg">{t(`${design}.d`)}</div>
|
||||
</div>
|
||||
<div className="my-4 z-10">
|
||||
<div className="px-4 text-base-content">
|
||||
<h2 className="text-base-content m-0 p-0 z-30">{t(`${design}.t`)}</h2>
|
||||
<div className="text-base-content m-0 p-0 font-bold text-lg">{t(`${design}.d`)}</div>
|
||||
</div>
|
||||
<div className="py-4 z-10">
|
||||
<Worm list={examples} fixed/>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -2,6 +2,7 @@ import Page from 'site/components/wrappers/page.js'
|
|||
import useApp from 'site/hooks/useApp.js'
|
||||
import Popout from 'shared/components/popout.js'
|
||||
import Link from 'next/link'
|
||||
import PageLink from 'shared/components/page-link'
|
||||
import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
|
||||
import { useTranslation } from 'next-i18next'
|
||||
import designs from 'shared/config/designs.json'
|
||||
|
@ -18,11 +19,20 @@ const DesignsPage = (props) => {
|
|||
...designs.accessories,
|
||||
...designs.blocks,
|
||||
...designs.garments,
|
||||
]
|
||||
].sort()
|
||||
|
||||
return (
|
||||
<Page app={app} title={t('designs')}>
|
||||
<div className="flex flex-row flex-wrap gap-4">
|
||||
<div className="max-w-4xl m-auto text-center">
|
||||
<ul className="flex flex-row flex-wrap gap-4 items-center justify-center leading-tight text-xl">
|
||||
{allDesigns.map(design => (
|
||||
<li key={design}>
|
||||
<PageLink href={`/designs/${design}`} txt={design} className="capitalize" />
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
<div className="flex flex-row flex-wrap justify-around px-8 lg:gap-4">
|
||||
{allDesigns.map(design => <Design key={design} design={design} />)}
|
||||
</div>
|
||||
</Page>
|
||||
|
|
|
@ -13,7 +13,7 @@ export const PreviewTile = ({ img, slug, title }) => (
|
|||
style={{ backgroundImage: `url(${img})`, backgroundSize: 'cover' }}
|
||||
className={`
|
||||
rounded-full inline-block border-base-100 shrink-0
|
||||
w-42 h-42 -ml-8 border-8
|
||||
w-40 h-40 -ml-8 border-8
|
||||
md:w-56 md:h-56 md:-ml-12
|
||||
theme-gradient
|
||||
`}
|
||||
|
@ -30,9 +30,11 @@ export const PreviewTile = ({ img, slug, title }) => (
|
|||
const DesignPosts = ({ design, posts }) => {
|
||||
const { t } = useTranslation(['patterns'])
|
||||
return (
|
||||
<div className='py-8'>
|
||||
<h2 className="bg-clip-text bg-success m-0">
|
||||
<PageLink href={`/showcase/designs/${design}`} txt={t(`${design}.t`)} />
|
||||
<div className='py-2'>
|
||||
<h2>
|
||||
<Link href={`/showcase/designs/${design}`}>
|
||||
<a className="hover:text-secondary-focus hover:underline">{t(`${design}.t`)}</a>
|
||||
</Link>
|
||||
</h2>
|
||||
<div className={`
|
||||
flex flex-row overflow-visible
|
||||
|
@ -64,6 +66,15 @@ const ShowcaseIndexPage = (props) => {
|
|||
|
||||
return (
|
||||
<Page app={app} title={t('showcase')} slug='showcase'>
|
||||
<div className="max-w-4xl m-auto text-center px-8">
|
||||
<ul className="flex flex-row flex-wrap gap-4 items-center justify-center leading-tight text-xl">
|
||||
{Object.keys(designs).sort().map(design => (
|
||||
<li key={design}>
|
||||
<PageLink href={`/showcase/design/${design}`} txt={design} className="capitalize" />
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
<div className={`
|
||||
px-8 2xl:pl-16 overflow-visible overscroll-x-hidden
|
||||
max-w-sm
|
||||
|
|
|
@ -18,7 +18,7 @@ const topSvg = (color) => svg(color, "M0,0 L0,2 L 5,7 L 10,2 L10,0 z", 1)
|
|||
const bottomSvg = (color) => svg(color, "M0,8 L0,6 L 5,1 L 10,6 L10,8 z", -1)
|
||||
const style = { backgroundRepeat: 'repeat-x' }
|
||||
|
||||
const PinkedRibbon = ({ top='base', bottom='dark', loading=false, theme }) => {
|
||||
const PinkedRibbon = ({ top='base', bottom='dark', loading=false, theme='light' }) => {
|
||||
|
||||
if (top === 'base') top = themes[theme].base
|
||||
else if (top === 'dark') top = themes[theme].dark
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue