diff --git a/packages/freesewing.org/components/designs/teaser.js b/packages/freesewing.org/components/designs/teaser.js new file mode 100644 index 00000000000..74429c61e68 --- /dev/null +++ b/packages/freesewing.org/components/designs/teaser.js @@ -0,0 +1,10 @@ +const DesignTeaser = ({ design=false }) => { + + return ( +
+

Tease {design} here

+
+ ) +} + +export default DesignTeaser diff --git a/packages/freesewing.org/components/header.js b/packages/freesewing.org/components/header.js index c7149d741a9..cc1b4ce3243 100644 --- a/packages/freesewing.org/components/header.js +++ b/packages/freesewing.org/components/header.js @@ -2,6 +2,7 @@ import { useState, useEffect } from 'react' import Logo from 'shared/components/logos/freesewing.js' import Link from 'next/link' import ThemePicker from 'shared/components/theme-picker.js' +import LocalePicker from 'shared/components/locale-picker.js' import CloseIcon from 'shared/components/icons/close.js' import MenuIcon from 'shared/components/icons/menu.js' import SearchIcon from 'shared/components/icons/search.js' @@ -114,6 +115,7 @@ const Header = ({ app, setSearch }) => {
+
diff --git a/packages/freesewing.org/components/mdx/index.js b/packages/freesewing.org/components/mdx/index.js new file mode 100644 index 00000000000..640452c1f56 --- /dev/null +++ b/packages/freesewing.org/components/mdx/index.js @@ -0,0 +1,11 @@ +import PatternDocs from './pattern-docs.js' +import PatternOptions from './pattern-options.js' +import PatternMeasurements from './pattern-measurements.js' + +const components = { + PatternDocs, + PatternOptions, + PatternMeasurements, +} + +export default components diff --git a/packages/freesewing.org/components/mdx/pattern-docs.js b/packages/freesewing.org/components/mdx/pattern-docs.js new file mode 100644 index 00000000000..5c282a86585 --- /dev/null +++ b/packages/freesewing.org/components/mdx/pattern-docs.js @@ -0,0 +1,138 @@ +import React from 'react' +import { capitalize } from 'shared/utils.js' +import Link from 'next/link' +import { getConfig } from 'shared/designs/index.js' +import Popout from 'shared/components/popout.js' +import { useTranslation } from 'next-i18next' +import DesignTeaser from 'site/components/designs/teaser.js' +//import PatternOptions from './pattern-options' +//import PatternMeasurements from './pattern-measurements' + +const PatternDocs = ({ pattern=false }) => { + const { t } = useTranslation(['docs']) + + if (!pattern) return

Please specify a pattern prop when using the PatternDocs component

+ + const config = getConfig(pattern) + console.log({pattern, config}) + + return ( + <> + {config.deprecated && ( + +
{t('thingIsDeprecated', { thing: capitalize(pattern)})}
+

+ {t('weRecommendThingInstead', { thing: capitalize(config.deprecated)})} +

+ +
+ )} +
{JSON.stringify(config, null ,2)}
+ + ) + + return ( + <> + {config.deprecated && ( + +
{capitalize(pattern)} is deprecated
+

+ We recommend{' '} + + {capitalize(info[props.pattern].deprecated)} + {' '} + instead. +

+
+ )} +
+

+ +

+
+ +

+ +

+
+
+

+ +

+ +

+ +

+ + {measurements[props.pattern].length > 0 ? ( + <> +

+ +

+ + + ) : null} +

+ +

+

+ : +

+ + + ) +} + +export default PatternDocs diff --git a/packages/freesewing.org/components/mdx/pattern-measurements.js b/packages/freesewing.org/components/mdx/pattern-measurements.js new file mode 100644 index 00000000000..5eb7f5fb17d --- /dev/null +++ b/packages/freesewing.org/components/mdx/pattern-measurements.js @@ -0,0 +1,33 @@ + +const PatternMeasurements = (props) => { + return null + const intl = useIntl() + const sortMeasurements = (measurements) => { + if (typeof measurements === 'undefined') return [] + let sorted = [] + let translated = {} + for (let m of measurements) { + let translation = intl.messages['measurements.' + m] || m + translated[translation] = m + } + let order = Object.keys(translated) + order.sort() + for (let m of order) sorted.push(translated[m]) + + return sorted + } + + return ( + + ) +} + +export default PatternMeasurements diff --git a/packages/freesewing.org/components/mdx/pattern-options.js b/packages/freesewing.org/components/mdx/pattern-options.js new file mode 100644 index 00000000000..1dce5b183f9 --- /dev/null +++ b/packages/freesewing.org/components/mdx/pattern-options.js @@ -0,0 +1,57 @@ + +const PatternOptions = (props) => { + return null + const renderOptions = () => { + const groups = optionGroups[props.pattern] + const list = [] + for (let l1 in groups) { + let children = [] + for (let l2 of groups[l1]) { + if (typeof l2 === 'string') { + children.push( +
  • + + + +
  • + ) + } else { + for (let l3 in l2) { + let grandchildren = [] + for (let l4 of l2[l3]) { + grandchildren.push( +
  • + + + +
  • + ) + } + children.push( +
  • + + + +
      {grandchildren}
    +
  • + ) + } + } + } + list.push( +
  • + + + +
      {children}
    +
  • + ) + } + + return + } + + return renderOptions() +} + +export default PatternOptions diff --git a/packages/freesewing.org/hooks/useApp.js b/packages/freesewing.org/hooks/useApp.js index 2a3a122e33a..2c3f1b04caf 100644 --- a/packages/freesewing.org/hooks/useApp.js +++ b/packages/freesewing.org/hooks/useApp.js @@ -5,6 +5,7 @@ import useLocalStorage from 'shared/hooks/useLocalStorage.js' // Prebuild navigation import prebuildNavigation from 'site/prebuild/navigation.js' // Translation +import { useRouter } from 'next/router' import { useTranslation } from 'next-i18next' /* @@ -53,6 +54,7 @@ const buildNavigation = (lang, t) => { function useApp(full = true) { // Load translation method + const locale = useRouter().locale const { t } = useTranslation() // User color scheme preference @@ -63,11 +65,10 @@ function useApp(full = true) { // Persistent state const [account, setAccount] = useLocalStorage('account', { username: false }) const [theme, setTheme] = useLocalStorage('theme', prefersDarkMode ? 'dark' : 'light') - const [language, setLanguage] = useLocalStorage('language', 'en') // React State const [primaryMenu, setPrimaryMenu] = useState(false) - const [navigation, setNavigation] = useState(buildNavigation(language, t)) + const [navigation, setNavigation] = useState(buildNavigation(locale, t)) const [slug, setSlug] = useState('/') const [loading, setLoading] = useState(false) @@ -88,10 +89,12 @@ function useApp(full = true) { return { // Static vars - site: 'dev', + site: 'org', + + // i18n + locale, // State - language, loading, navigation, primaryMenu, @@ -99,7 +102,6 @@ function useApp(full = true) { theme, // State setters - setLanguage, setLoading, setNavigation, setPrimaryMenu, diff --git a/packages/freesewing.org/i18n.config.mjs b/packages/freesewing.org/i18n.config.mjs deleted file mode 100644 index 2dec6ed7918..00000000000 --- a/packages/freesewing.org/i18n.config.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import i18n from '../freesewing.shared/config/i18n.config.mjs' - -export default i18n() diff --git a/packages/freesewing.org/pages/index.js b/packages/freesewing.org/pages/index.js index 1cf77a4b977..0d823f60a1e 100644 --- a/packages/freesewing.org/pages/index.js +++ b/packages/freesewing.org/pages/index.js @@ -7,25 +7,25 @@ import { serverSideTranslations } from 'next-i18next/serverSideTranslations' import { useTranslation } from 'next-i18next' import Layout from 'site/components/layouts/bare' import Navigation, { Icons } from 'shared/components/navigation/primary' +import DownIcon from 'shared/components/icons/down.js' const HomePage = (props) => { const app = useApp() - const { t, i18n } = useTranslation(['ograph']) - const { language } = i18n + const { t } = useTranslation(['homepage', 'ograph']) return ( - + - + - +
    { }} className="m-0 p-0 shadow drop-shadow-lg w-full mb-8" > -
    - test +
    +  

    { md:text-4xl lg:max-w-1/2 lg:text-4xl xl:pr-0 `} style={{ textShadow: '1px 1px 3px #000', color: 'white' }} - dangerouslySetInnerHTML={{ __html: t('orgDescription')}} + dangerouslySetInnerHTML={{ __html: t('ograph:orgDescription')}} />

    { flex flex-col items-center capitalize`} />
    -

    - To learn more about FreeSewing and try our platform - go to freesewing.org -

    +
    + {t('scrollDownToLearnMore')} + +
    @@ -126,7 +122,7 @@ export default HomePage export async function getStaticProps({ locale }) { return { props: { - ...(await serverSideTranslations('en')), + ...(await serverSideTranslations(locale)), } } } diff --git a/packages/freesewing.shared/components/icons/down.js b/packages/freesewing.shared/components/icons/down.js new file mode 100644 index 00000000000..92a1049bbbe --- /dev/null +++ b/packages/freesewing.shared/components/icons/down.js @@ -0,0 +1,8 @@ +const Down = ({ className="h-6 w-6" }) => ( + + + +) + +export default Down + diff --git a/packages/freesewing.shared/components/icons/left.js b/packages/freesewing.shared/components/icons/left.js index 50b89e6dc95..f6b3907070e 100644 --- a/packages/freesewing.shared/components/icons/left.js +++ b/packages/freesewing.shared/components/icons/left.js @@ -1,6 +1,6 @@ /* Sourced from heroicons.com - Thanks guys! */ -const Left = () => ( - +const Left = ({ className="h-6 w-6" }) => ( + )