1
0
Fork 0
freesewing/sites/dev/pages/about.mjs

196 lines
8 KiB
JavaScript

// Dependencies
import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
import { freeSewingConfig } from 'shared/config/freesewing.config.mjs'
// Hooks
import { useNavigation } from 'site/hooks/use-navigation.mjs'
// Components
import Head from 'next/head'
import { PageWrapper } from 'shared/components/wrappers/page.mjs'
import { Popout } from 'shared/components/popout.mjs'
import { WebLink } from 'shared/components/web-link.mjs'
import { NavLinks, Breadcrumbs, MainSections } from 'shared/components/navigation/sitenav.mjs'
import { FreeSewingIcon } from 'shared/components/icons.mjs'
import {
BaseLayout,
BaseLayoutLeft,
BaseLayoutProse,
BaseLayoutRight,
} from 'shared/components/base-layout.mjs'
const ContactPage = ({ page, slug }) => {
/*
* Get the siteNav object from the useNavigation hook
* FIXME: ignorecontrol is not yet implmented here
*/
const { siteNav } = useNavigation({ ignoreControl: true })
const title = siteNav.about.t
return (
<PageWrapper {...page}>
<Head>
<meta property="og:type" content="article" key="type" />
<meta
property="og:description"
content="Find out the best way to contact a human being involved with FreeSewing"
key="type"
/>
<meta property="og:article:author" content="Joost De Cock" key="author" />
<meta property="og:image" content="https://freesewing.dev/og/contact/og.png" key="image" />
<meta property="og:image:type" content="image/png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:url" content={`https://freesewing.dev/contact`} key="url" />
<meta property="og:locale" content="en_US" key="locale" />
<meta property="og:site_name" content="freesewing.dev" key="site" />
</Head>
<BaseLayout>
<BaseLayoutLeft>
<MainSections {...{ siteNav, slug }} />
<NavLinks {...{ siteNav, slug }} />
</BaseLayoutLeft>
<BaseLayoutProse>
<div className="w-full">
<Breadcrumbs {...{ siteNav, slug }} />
<h1 className="break-words searchme">{title}</h1>
</div>
<div className="mdx max-w-prose">
<p>
<WebLink
href="https://github.com/freesewing/"
txt="FreeSewing is an open source software project"
/>{' '}
with the aim of becoming the Wikipedia of sewing patterns.
</p>
<p>
We are not interested in fashion, trends, or publishing the hot new pattern of the
season. Instead, we want to empower makers by distilling the knowledge of the sewing
community into parametric designs + documentation, and make that information freely
available.
</p>
<h2>The project</h2>
<p>
<b>FreeSewing</b> was created by{' '}
<WebLink href="https://githubc.com/joostdecock" txt="Joost De Cock" /> who is also its
maintainer. But that does not mean he does all the work on his own. Much to the
contrary.
<br />
<WebLink
txt="A loose-knit team of volunteers from various corners of two world"
href="https://freesewing.org/contributors"
/>{' '}
contribute to the ongoing development of FreeSewing.
</p>
<p>
All our source code is{' '}
<WebLink href="https://github.com/freesewing/freesewing" txt="available on GitHub" />.
We not only use GitHub to host our repository, but also to coordinate work through{' '}
<WebLink href="https://github.com/freesewing/freesewing/issues" txt="issues" />,{' '}
<WebLink href="https://github.com/freesewing/freesewing/issues" txt="discussions" />,{' '}
<WebLink href="https://github.com/freesewing/freesewing/pulls" txt="pull requests" />,
and{' '}
<WebLink href="https://github.com/freesewing/freesewing/issues" txt="our roadmap" />.
</p>
<Popout note>
FreeSewing follows <b>the all-contributors specification</b>, which means that we
strive to recognize all contributions big and small.
</Popout>
<h2>The patrons</h2>
<p>
FreeSewing is financially supported by{' '}
<WebLink href="https://freesewing.org/patrons" txt="the FreeSewing patrons" />. These
generous individuals support the project with their hard-earned cash for the benefit
of all involved.
</p>
<p>
Without our patrons and their support, FreeSewing would not be where it is today, nor
would it be able to survive, let alone thrive. Their importance cannot be overstated,
both to the project as a whole, as{' '}
<WebLink
href="https://freesewing.org/docs/various/pledge/motivation/"
txt="to Joost personally"
/>
.
</p>
<Popout tip>
<h5>Become a FreeSewing patron</h5>
You too can{' '}
<WebLink
href="https://freesewing.org/patrons/join"
txt="join the FreeSewing patrons"
/>{' '}
and help support the project.
</Popout>
<h2>The community</h2>
<p>
A diverse community of users, supporters, contributors, and sewing enthisiasts from
all walks fo life has sprung up around FreeSewing. Our{' '}
<WebLink
href="https://freesewing.org/docs/various/community-standards/"
txt="community standards"
/>{' '}
are there to ensure we create an inclusive space where everyone feels welcome.
</p>
<p>
In principle, the FreeSewing community exists anywhere where FreeSewing community
members gather. But the hotbed of community interaction is{' '}
<WebLink href="https://discord.freesewing.org/" txt="the FreeSewing Discord server" />
.
</p>
<p>
If Discord is <em>not your thing</em> FreeSewing is present on a variety of platforms:
</p>
<ul>
{Object.entries(freeSewingConfig.social).map(([txt, href]) => (
<li key={txt}>
<WebLink {...{ txt, href }} />
</li>
))}
</ul>
<p>Hopefully one of those will work out for you.</p>
</div>
</BaseLayoutProse>
<BaseLayoutRight>
<FreeSewingIcon className="w-1/2" />
<h4>Hi, my name is Skully</h4>
<p>
I am the face of FreeSewing, or the logo if you want.
<br />I am a bit atypical, much like FreeSewing itself.
</p>
<p>
A good logo tells you a lot about a brand in the blink of an eye.
<br />I am not certain I can do that or that I am even a good logo but if I made you
think:
</p>
<p className="pl-6 italic font-bold text-lg">
These are not my grandma&apos;s sewing patterns <span role="img">🤔</span>
</p>
<p>
Then we have already dispelled the most limiting preconception: that FreeSewing would in
any way be like a regular sewing pattern company.
</p>
<p>
We are not.
<br />
We are a community.
<br />
And we want you should join us.
</p>
</BaseLayoutRight>
</BaseLayout>
</PageWrapper>
)
}
export default ContactPage
export async function getStaticProps() {
return {
props: {
...(await serverSideTranslations('en')),
slug: 'about',
page: {
path: ['about'],
},
},
}
}