diff --git a/sites/org/pages/support.mjs b/sites/org/pages/support.mjs new file mode 100644 index 00000000000..bea8e08351a --- /dev/null +++ b/sites/org/pages/support.mjs @@ -0,0 +1,147 @@ +// Dependencies +import { serverSideTranslations } from 'next-i18next/serverSideTranslations' +import { nsMerge } from 'shared/utils.mjs' +// Hooks +import { useTranslation } from 'next-i18next' +// Components +import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs' +import { WebLink } from 'shared/components/web-link.mjs' +import { Popout } from 'shared/components/popout/index.mjs' +import { DiscordIcon, GitHubIcon } from 'shared/components/icons.mjs' +import Link from 'next/link' +import { Joost } from 'shared/components/joost.mjs' + +// Translation namespaces used on this page +const namespaces = nsMerge(pageNs, 'support', 'sections') + +const CardLink = ({ bg, textColor, href, title, icon, children }) => ( + +

+ {title} + {icon} +

+ {children} +
+) + +/* + * Each page MUST be wrapped in the PageWrapper component. + * You also MUST spread props.page into this wrapper component + * when path and locale come from static props (as here) + * or set them manually. + */ +const SupportPage = ({ page }) => { + const { t } = useTranslation(namespaces) + + return ( + +
+ + Discord + | + {t('support:communitySupport')} + + } + icon={} + > +

+

{t('support:communitySupport2')}

+
+ + GitHub + | + {t('support:contributorSupport')} + + } + icon={} + > +

+

{t('support:contributorSupport2')}

+
+ +

+ + Joost + | + {t('support:maintainerSupport')} + + +

+

+

{t('support:maintainerSupport2')}

+ + +
{t('support:whatIsDiscord')}
+

{t('support:whatIsDiscord1')}

+

+ + . +

+

+ {t('support:whatIsDiscord3')} +
+ {t('support:whatIsDiscord4')} +

+
+ + +
{t('support:whatIsGitHub')}
+

{t('support:whatIsGitHub1')}

+

+ {t('support:whatIsGitHub2')}{' '} + . +

+

{t('support:whatIsGitHub3')}

+
+ + +
{t('support:whatIsJoost')}
+

{t('support:whatIsJoost1')}

+
+
+
+ ) +} + +export default SupportPage + +export async function getStaticProps({ locale }) { + return { + props: { + ...(await serverSideTranslations(locale, namespaces)), + page: { + locale, + path: ['patrons', 'thanks'], + }, + }, + } +} diff --git a/sites/shared/i18n/sections/en.yaml b/sites/shared/i18n/sections/en.yaml index 3351658db24..88bc7b22752 100644 --- a/sites/shared/i18n/sections/en.yaml +++ b/sites/shared/i18n/sections/en.yaml @@ -33,3 +33,4 @@ patternsAbout: Lists the patterns that you have stored in your FreeSewing accoun setsAbout: Lists the measurements sets that you have stored in your FreeSewing account codeAbout: Here you can find (links to) the Freesewing source code new: New... +support: Support diff --git a/sites/shared/i18n/support/en.yaml b/sites/shared/i18n/support/en.yaml new file mode 100644 index 00000000000..56fcd6145b2 --- /dev/null +++ b/sites/shared/i18n/support/en.yaml @@ -0,0 +1,22 @@ +support: Support +communitySupport: Community Support +communitySupport1: For the fastest response, head over to discord.freesewing.org and post your question in the Support channel. +communitySupport2: The FreeSewing community is a helpful bunch, so there is a good chance they are able to help you. +contributorSupport: Contributor Support +contributorSupport1: If something is broken or you have found a bug, you can create an issue on GitHub. +contributorSupport2: Issues are more likely to attract the attention of core contributors, but tend to take longer to get a response. +maintainerSupport: Maintainer Support +maintainerSupport1: If you are a FreeSewing patron, you can go straight to the top and contact Joost directly. +maintainerSupport2: While Joost will treat requests from patrons with priority, he does also needs sleep. So keep that in mind, especially when you are in a different time zone. +whatIsDiscord: What is Discord? +whatIsDiscord1: Discord is a free chat platform where communities can come together to chat discuss their interests. It also supports (group) voice and video calls. +whatIsDiscord2: FreeSewing has its own Discord community (a server in Discord terminology) at +whatIsDiscord3: To use Discord, you will need an account, but they are free. +whatIsDiscord4: You can use Discord in your browser, or download the Discord app for your platform of choice. +whatIsGitHub: What is GitHub? +whatIsGitHub1: GitHub is an online platform for hosting software source code and collaborative development. It is popular among open source projects as it provides free hosting. +whatIsGitHub2: You can find FreeSewing on GitHub at +whatIsGitHub3: To use GitHub, you will need an account, but they are free. +whatIsJoost: What is Joost? +whatIsJoost1: Not what, but who. Joost De Cock is the FreeSewing founder and maintainer. + diff --git a/sites/shared/prebuild/sitenav-org.mjs b/sites/shared/prebuild/sitenav-org.mjs index b8c1cd16a2a..1a05c165d67 100644 --- a/sites/shared/prebuild/sitenav-org.mjs +++ b/sites/shared/prebuild/sitenav-org.mjs @@ -174,7 +174,7 @@ export const extendSiteNav = async (siteNav, lang) => { _: 1, s: 'thanks', h: 1, - t: t('patrons:thankYouSoVeryMuch'), + t: t('patrons:thankYouVeryMuch'), }, } @@ -192,6 +192,14 @@ export const extendSiteNav = async (siteNav, lang) => { }, } + // Add support + siteNav.support = { + _: 1, + s: 'support', + h: 1, + t: t('sections:support'), + } + // Add search siteNav.search = { s: 'search',