diff --git a/.gitignore b/.gitignore
index 8bbdcdd1cbe..b9fc582bdfc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,7 +39,6 @@ packages/new-design/lib/banner.mjs
# Lab auto-generated content
sites/lab/lib
-sites/lab/pages/*
sites/lab/public/android-chrome-192x192.png
sites/lab/public/android-chrome-384x384.png
sites/lab/public/apple-touch-icon.png
@@ -50,10 +49,6 @@ sites/lab/public/favicon.ico
sites/lab/public/mstile-150x150.png
sites/lab/public/safari-pinned-tab.svg
sites/lab/public/site.webmanifest
-# but not the indexes
-!sites/lab/pages/index.mjs
-!sites/lab/pages/code/index.mjs
-!sites/lab/pages/docs/index.mjs
# dev auto-generated content
sites/dev/public/android-chrome-192x192.png
diff --git a/sites/lab/components/dynamic-org-docs.mjs b/sites/lab/components/dynamic-org-docs.mjs
index 87ef2547e9e..97e696e4745 100644
--- a/sites/lab/components/dynamic-org-docs.mjs
+++ b/sites/lab/components/dynamic-org-docs.mjs
@@ -1,2 +1,13 @@
+import { Popout } from 'shared/components/popout/index.mjs'
+import { WebLink } from 'shared/components/link.mjs'
+
// This is how we skip the docs in the lab
-export const DynamicOrgDocs = false
+export const DynamicOrgDocs = () => (
+
+ The FreeSewing lab does not include documentation
+
+ Go to if you want all features
+ enabled.
+
+
+)
diff --git a/sites/lab/next.config.mjs b/sites/lab/next.config.mjs
index b4c1bedc444..4db50a940f7 100644
--- a/sites/lab/next.config.mjs
+++ b/sites/lab/next.config.mjs
@@ -1,7 +1,7 @@
import configBuilder from '../shared/config/next.mjs'
import i18nConfig from './next-i18next.config.js'
import { banner } from '../../scripts/banner.mjs'
-import withBundleAnalyzer from '@next/bundle-analyzer'
+//import withBundleAnalyzer from '@next/bundle-analyzer'
let config = configBuilder({ site: 'lab' })
config.i18n = i18nConfig.i18n
@@ -16,6 +16,6 @@ config.eslint = {
// To run the bundle analyzer, run:
// ANALYZE=true yarn build
-if (process.env.ANALYZE) config = withBundleAnalyzer(config)(config)
+//if (process.env.ANALYZE) config = withBundleAnalyzer(config)(config)
export default config
diff --git a/sites/lab/pages/_app.mjs b/sites/lab/pages/_app.mjs
index 56a3631c58d..7817cccf191 100644
--- a/sites/lab/pages/_app.mjs
+++ b/sites/lab/pages/_app.mjs
@@ -1,44 +1,11 @@
import 'shared/styles/globals.css'
import { appWithTranslation } from 'next-i18next'
-import React from 'react'
-import Bugsnag from '@bugsnag/js'
-import BugsnagPluginReact from '@bugsnag/plugin-react'
-import { siteConfig } from 'site/site.config.mjs'
-import { Toaster as DefaultToaster } from 'react-hot-toast'
import { ContextWrapper } from 'shared/components/wrappers/context.mjs'
-Bugsnag.start({
- apiKey: siteConfig.bugsnag.key,
- collectUserIp: false,
- plugins: [new BugsnagPluginReact()],
-})
-
-const ErrorBoundary = Bugsnag.getPlugin('react').createErrorBoundary(React)
-
const FreeSewingLab = ({ Component, pageProps }) => (
-
-
-
-
-
-
+
+
+
)
export default appWithTranslation(FreeSewingLab)
diff --git a/sites/lab/pages/code/index.mjs b/sites/lab/pages/code/index.mjs
index 9e7c59b5075..1f5dbfe9cc8 100644
--- a/sites/lab/pages/code/index.mjs
+++ b/sites/lab/pages/code/index.mjs
@@ -3,7 +3,7 @@ import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
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 { WebLink } from 'shared/components/link.mjs'
import { siteConfig } from 'site/site.config.mjs'
import { freeSewingConfig } from 'shared/config/freesewing.config.mjs'
import { ChoiceLink } from 'shared/components/choice-link.mjs'
diff --git a/sites/lab/pages/new/[design].mjs b/sites/lab/pages/new/[design].mjs
new file mode 100644
index 00000000000..58eb22243ab
--- /dev/null
+++ b/sites/lab/pages/new/[design].mjs
@@ -0,0 +1,50 @@
+// Hooks
+import { useDesign, collection } from 'shared/hooks/use-design.mjs'
+// Dependencies
+import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
+import { nsMerge } from 'shared/utils.mjs'
+// Components
+import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs'
+import { Workbench, ns as wbNs } from 'shared/components/workbench/new.mjs'
+import { WorkbenchLayout } from 'site/components/layouts/workbench.mjs'
+import { DynamicOrgDocs as DynamicDocs } from 'site/components/dynamic-org-docs.mjs'
+
+// Translation namespaces used on this page
+const namespaces = nsMerge(wbNs, pageNs)
+
+const NewDesignPage = ({ page, design }) => {
+ const Design = useDesign(design)
+
+ return (
+
+
+
+ )
+}
+
+export default NewDesignPage
+
+export async function getStaticProps({ locale, params }) {
+ return {
+ props: {
+ ...(await serverSideTranslations(locale, [params.design, ...namespaces])),
+ design: params.design,
+ page: {
+ locale,
+ path: ['new', params.design],
+ title: '',
+ },
+ },
+ }
+}
+
+/*
+ * getStaticPaths() is used to specify for which routes (think URLs)
+ * this page should be used to generate the result.
+ */
+export async function getStaticPaths() {
+ return {
+ paths: [...collection.map((design) => `/new/${design}`)],
+ fallback: 'blocking',
+ }
+}
diff --git a/sites/lab/pages/new/index.mjs b/sites/lab/pages/new/index.mjs
new file mode 100644
index 00000000000..d2ca6fed6db
--- /dev/null
+++ b/sites/lab/pages/new/index.mjs
@@ -0,0 +1,143 @@
+// Dependencies
+import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
+// Hooks
+import { useTranslation } from 'next-i18next'
+import { useAccount } from 'shared/hooks/use-account.mjs'
+// Components
+import Link from 'next/link'
+import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs'
+import {
+ KeyIcon,
+ NewMsetIcon,
+ DesignIcon,
+ NewPatternIcon,
+ PluginIcon,
+ ShowcaseIcon,
+ RssIcon,
+ CsetIcon,
+ OpackIcon,
+} from 'shared/components/icons.mjs'
+
+// Translation namespaces used on this page
+// Note that we include the account namespace here for the 'new' keyword
+const namespaces = [...pageNs, 'account']
+
+const Box = ({ title, Icon, description, href }) => {
+ const linkProps = {
+ href,
+ className:
+ 'p-8 -ml-4 -mr-4 md:m-0 rounded-none md:rounded-xl md:shadow hover:bg-secondary bg-base-200 hover:bg-opacity-10 w-full max-w-lg',
+ }
+
+ const inner = (
+ <>
+
+ {title}
+
+
+
+ {description}
+
+ >
+ )
+
+ return href.slice(0, 4) === 'http' ? (
+ {inner}
+ ) : (
+ {inner}
+ )
+}
+
+/*
+ * 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 NewIndexPage = ({ page }) => {
+ const { t } = useTranslation(['account'])
+ const { account } = useAccount()
+
+ const control = account.control ? account.control : 99
+
+ return (
+
+ {t('newPopular')}
+
+
+
+
+ {control > 3 ? (
+ <>
+ {t('newShare')}
+
+
+
+
+
+
+ {t('newDev')}
+
+
+
+
+
+ >
+ ) : null}
+
+ )
+}
+
+export default NewIndexPage
+
+export async function getStaticProps({ locale }) {
+ return {
+ props: {
+ ...(await serverSideTranslations(locale, namespaces)),
+ page: {
+ locale,
+ path: ['new'],
+ },
+ },
+ }
+}
diff --git a/sites/lab/pages/new/pattern.mjs b/sites/lab/pages/new/pattern.mjs
new file mode 100644
index 00000000000..5d61ef655d6
--- /dev/null
+++ b/sites/lab/pages/new/pattern.mjs
@@ -0,0 +1,43 @@
+// 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 { ns as authNs } from 'shared/components/wrappers/auth/index.mjs'
+import { ns as setsNs } from 'shared/components/account/sets.mjs'
+import { DesignPicker, ns as designNs } from 'shared/components/designs/design-picker.mjs'
+
+// Translation namespaces used on this page
+const ns = nsMerge(designNs, setsNs, authNs, pageNs)
+
+/*
+ * 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 NewSetPage = ({ page }) => {
+ const { t } = useTranslation(ns)
+
+ return (
+
+
+
+ )
+}
+
+export default NewSetPage
+
+export async function getStaticProps({ locale }) {
+ return {
+ props: {
+ ...(await serverSideTranslations(locale, ns)),
+ page: {
+ locale,
+ path: ['new', 'pattern'],
+ },
+ },
+ }
+}
diff --git a/sites/lab/pages/signin/callback/[provider].mjs b/sites/lab/pages/signin/callback/[provider].mjs
new file mode 100644
index 00000000000..f647fd1be6b
--- /dev/null
+++ b/sites/lab/pages/signin/callback/[provider].mjs
@@ -0,0 +1,92 @@
+// Dependencies
+import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
+import { nsMerge } from 'shared/utils.mjs'
+// Hooks
+import { useEffect, useContext } from 'react'
+import { useRouter } from 'next/router'
+import { useBackend } from 'shared/hooks/use-backend.mjs'
+import { useAccount } from 'shared/hooks/use-account.mjs'
+import { useTranslation } from 'next-i18next'
+// Context
+import { LoadingStatusContext } from 'shared/context/loading-status-context.mjs'
+// Components
+import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs'
+import { BareLayout } from 'site/components/layouts/bare.mjs'
+//import { SignIn, ns as susiNs } from 'shared/components/susi/sign-in.mjs'
+import { Loading } from 'shared/components/spinner.mjs'
+
+const ns = nsMerge(pageNs)
+
+/*
+ * 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 OauthCallbackPage = ({ page, provider }) => {
+ const router = useRouter()
+ const { t } = useTranslation(ns)
+ const backend = useBackend()
+ const { setAccount, setToken, setSeenUser } = useAccount()
+ const { setLoadingStatus } = useContext(LoadingStatusContext)
+
+ useEffect(() => {
+ const oauthFlow = async () => {
+ const urlParams = new URLSearchParams(window.location.search)
+ const state = urlParams.get('state')
+ const code = urlParams.get('code')
+ const result = await backend.oauthSignIn({ state, code, provider })
+ if (result.data?.account && result.data?.token) {
+ setAccount(result.data.account)
+ setToken(result.data.token)
+ setSeenUser(result.data.account.username)
+ setLoadingStatus([
+ true,
+ t('susi:welcomeBackName', { name: result.data.account.username }),
+ true,
+ true,
+ ])
+ router.push('/welcome')
+ } else setLoadingStatus([true, 'backendError', true, true])
+ }
+ oauthFlow()
+ }, [provider])
+
+ return (
+
+
+
+ )
+}
+
+export default OauthCallbackPage
+
+export async function getStaticProps({ locale, params }) {
+ return {
+ props: {
+ ...(await serverSideTranslations(locale, ns)),
+ provider: params.provider,
+ page: {
+ locale,
+ path: ['signin', 'callback', params.provider],
+ },
+ },
+ }
+}
+
+/*
+ * getStaticPaths() is used to specify for which routes (think URLs)
+ * this page should be used to generate the result.
+ *
+ * To learn more, see: https://nextjs.org/docs/basic-features/data-fetching
+ */
+export async function getStaticPaths() {
+ return {
+ paths: [`/signin/callback/github`, `/signin/callback/google`],
+ fallback: false,
+ }
+}
diff --git a/sites/lab/pages/signin/index.mjs b/sites/lab/pages/signin/index.mjs
new file mode 100644
index 00000000000..80a0899aaa6
--- /dev/null
+++ b/sites/lab/pages/signin/index.mjs
@@ -0,0 +1,41 @@
+// Dependencies
+import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
+import { nsMerge } from 'shared/utils.mjs'
+// Components
+import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs'
+import { BareLayout } from 'site/components/layouts/bare.mjs'
+import { SignIn, ns as susiNs } from 'shared/components/susi/sign-in.mjs'
+
+const ns = nsMerge(susiNs, pageNs)
+
+/*
+ * 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 SignInPage = ({ page }) => {
+ return (
+
+
+
+ )
+}
+
+export default SignInPage
+
+export async function getStaticProps({ locale }) {
+ return {
+ props: {
+ ...(await serverSideTranslations(locale, ns)),
+ page: {
+ locale,
+ path: ['signin'],
+ },
+ },
+ }
+}
diff --git a/sites/shared/components/account/apikeys.mjs b/sites/shared/components/account/apikeys.mjs
index 02ea7f91013..2bca4946618 100644
--- a/sites/shared/components/account/apikeys.mjs
+++ b/sites/shared/components/account/apikeys.mjs
@@ -16,7 +16,7 @@ import { Popout } from 'shared/components/popout/index.mjs'
import { LeftIcon, PlusIcon, CopyIcon, RightIcon, TrashIcon } from 'shared/components/icons.mjs'
import { PageLink, Link } from 'shared/components/link.mjs'
import { StringInput, ListInput, FormControl } from 'shared/components/inputs.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
export const ns = ['account', 'status']
diff --git a/sites/shared/components/account/bio.mjs b/sites/shared/components/account/bio.mjs
index 2b5787e377b..47e25849141 100644
--- a/sites/shared/components/account/bio.mjs
+++ b/sites/shared/components/account/bio.mjs
@@ -11,7 +11,7 @@ import { Icons, welcomeSteps, BackToAccountButton } from './shared.mjs'
import { SaveSettingsButton } from 'shared/components/buttons/save-settings-button.mjs'
import { ContinueButton } from 'shared/components/buttons/continue-button.mjs'
import { MarkdownInput } from 'shared/components/inputs.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
import { TipIcon } from 'shared/components/icons.mjs'
export const ns = ['account', 'status']
diff --git a/sites/shared/components/account/bookmarks.mjs b/sites/shared/components/account/bookmarks.mjs
index 888a2c43c94..59595c0015b 100644
--- a/sites/shared/components/account/bookmarks.mjs
+++ b/sites/shared/components/account/bookmarks.mjs
@@ -11,7 +11,7 @@ import { PlusIcon, TrashIcon, LeftIcon } from 'shared/components/icons.mjs'
import { PageLink, WebLink, Link } from 'shared/components/link.mjs'
import { DisplayRow } from './shared.mjs'
import { StringInput } from 'shared/components/inputs.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
export const ns = ['account', 'status']
diff --git a/sites/shared/components/account/compare.mjs b/sites/shared/components/account/compare.mjs
index 55ca2d91ad5..279395851b1 100644
--- a/sites/shared/components/account/compare.mjs
+++ b/sites/shared/components/account/compare.mjs
@@ -11,7 +11,7 @@ import { Icons, welcomeSteps, BackToAccountButton } from './shared.mjs'
import { ContinueButton } from 'shared/components/buttons/continue-button.mjs'
import { ListInput } from 'shared/components/inputs.mjs'
import { OkIcon, NoIcon } from 'shared/components/icons.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
export const ns = ['account', 'status']
diff --git a/sites/shared/components/account/control.mjs b/sites/shared/components/account/control.mjs
index 4067950ee5b..9c02058b713 100644
--- a/sites/shared/components/account/control.mjs
+++ b/sites/shared/components/account/control.mjs
@@ -10,7 +10,7 @@ import { useBackend } from 'shared/hooks/use-backend.mjs'
import { BackToAccountButton, Icons, welcomeSteps } from './shared.mjs'
import { ContinueButton } from 'shared/components/buttons/continue-button.mjs'
import { ListInput } from 'shared/components/inputs.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
import { ControlScore } from 'shared/components/control/score.mjs'
export const ns = ['account', 'status']
diff --git a/sites/shared/components/account/email.mjs b/sites/shared/components/account/email.mjs
index 6671767eb60..11a332d8adf 100644
--- a/sites/shared/components/account/email.mjs
+++ b/sites/shared/components/account/email.mjs
@@ -12,7 +12,7 @@ import { validateEmail, validateTld } from 'shared/utils.mjs'
import { BackToAccountButton } from './shared.mjs'
import { Popout } from 'shared/components/popout/index.mjs'
import { EmailInput } from 'shared/components/inputs.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
export const ns = ['account', 'status']
diff --git a/sites/shared/components/account/github.mjs b/sites/shared/components/account/github.mjs
index d8de392c65d..8f07f251ed2 100644
--- a/sites/shared/components/account/github.mjs
+++ b/sites/shared/components/account/github.mjs
@@ -9,7 +9,7 @@ import { useBackend } from 'shared/hooks/use-backend.mjs'
import { BackToAccountButton } from './shared.mjs'
import { SaveSettingsButton } from 'shared/components/buttons/save-settings-button.mjs'
import { StringInput } from 'shared/components/inputs.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
export const ns = ['account', 'status']
diff --git a/sites/shared/components/account/img.mjs b/sites/shared/components/account/img.mjs
index 57adbcbf940..ecb2b44bf91 100644
--- a/sites/shared/components/account/img.mjs
+++ b/sites/shared/components/account/img.mjs
@@ -12,7 +12,7 @@ import { Icons, welcomeSteps, BackToAccountButton } from './shared.mjs'
import { ContinueButton } from 'shared/components/buttons/continue-button.mjs'
import { SaveSettingsButton } from 'shared/components/buttons/save-settings-button.mjs'
import { PassiveImageInput } from 'shared/components/inputs.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
export const ns = ['account', 'status']
diff --git a/sites/shared/components/account/imperial.mjs b/sites/shared/components/account/imperial.mjs
index 452eeae0749..b68729e2357 100644
--- a/sites/shared/components/account/imperial.mjs
+++ b/sites/shared/components/account/imperial.mjs
@@ -9,7 +9,7 @@ import { useBackend } from 'shared/hooks/use-backend.mjs'
import { Icons, welcomeSteps, BackToAccountButton, NumberBullet } from './shared.mjs'
import { ContinueButton } from 'shared/components/buttons/continue-button.mjs'
import { ListInput } from 'shared/components/inputs.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
export const ns = ['account', 'status']
diff --git a/sites/shared/components/account/language.mjs b/sites/shared/components/account/language.mjs
index 20f37ca19ad..209a693ecdc 100644
--- a/sites/shared/components/account/language.mjs
+++ b/sites/shared/components/account/language.mjs
@@ -8,7 +8,7 @@ import { useBackend } from 'shared/hooks/use-backend.mjs'
// Components
import { BackToAccountButton, NumberBullet } from './shared.mjs'
import { ListInput } from 'shared/components/inputs.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
// Config
import { siteConfig as conf } from 'site/site.config.mjs'
diff --git a/sites/shared/components/account/newsletter.mjs b/sites/shared/components/account/newsletter.mjs
index c2a54fbd47c..21c2855b928 100644
--- a/sites/shared/components/account/newsletter.mjs
+++ b/sites/shared/components/account/newsletter.mjs
@@ -9,7 +9,7 @@ import { useBackend } from 'shared/hooks/use-backend.mjs'
import { BackToAccountButton, Icons, welcomeSteps } from './shared.mjs'
import { ContinueButton } from 'shared/components/buttons/continue-button.mjs'
import { ListInput } from 'shared/components/inputs.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
import { OkIcon, NoIcon } from 'shared/components/icons.mjs'
export const ns = ['account', 'status']
diff --git a/sites/shared/components/account/password.mjs b/sites/shared/components/account/password.mjs
index 36f21e53329..2b007c602fa 100644
--- a/sites/shared/components/account/password.mjs
+++ b/sites/shared/components/account/password.mjs
@@ -13,7 +13,7 @@ import { SaveSettingsButton } from 'shared/components/buttons/save-settings-butt
import { Popout } from 'shared/components/popout/index.mjs'
import { RightIcon } from 'shared/components/icons.mjs'
import { PasswordInput } from 'shared/components/inputs.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
export const ns = ['account', 'status']
diff --git a/sites/shared/components/account/patterns.mjs b/sites/shared/components/account/patterns.mjs
index 9a2900b227e..4b7f6e6d132 100644
--- a/sites/shared/components/account/patterns.mjs
+++ b/sites/shared/components/account/patterns.mjs
@@ -39,7 +39,7 @@ import { ModalWrapper } from 'shared/components/wrappers/modal.mjs'
import Markdown from 'react-markdown'
import Timeago from 'react-timeago'
import { TableWrapper } from 'shared/components/wrappers/table.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
export const ns = ['account', 'patterns', 'status']
diff --git a/sites/shared/components/account/platform.mjs b/sites/shared/components/account/platform.mjs
index bc6645cc942..43fb764c89a 100644
--- a/sites/shared/components/account/platform.mjs
+++ b/sites/shared/components/account/platform.mjs
@@ -9,7 +9,7 @@ import { useBackend } from 'shared/hooks/use-backend.mjs'
import { BackToAccountButton } from './shared.mjs'
import { SaveSettingsButton } from 'shared/components/buttons/save-settings-button.mjs'
import { StringInput } from 'shared/components/inputs.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
export const ns = ['account', 'status']
diff --git a/sites/shared/components/account/sets.mjs b/sites/shared/components/account/sets.mjs
index 85da637295d..10b298289a8 100644
--- a/sites/shared/components/account/sets.mjs
+++ b/sites/shared/components/account/sets.mjs
@@ -47,7 +47,7 @@ import { ModalWrapper } from 'shared/components/wrappers/modal.mjs'
import Markdown from 'react-markdown'
import Timeago from 'react-timeago'
import { DisplayRow } from './shared.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
import {
StringInput,
PassiveImageInput,
diff --git a/sites/shared/components/account/username.mjs b/sites/shared/components/account/username.mjs
index 1046237fbcb..bdad167fa4b 100644
--- a/sites/shared/components/account/username.mjs
+++ b/sites/shared/components/account/username.mjs
@@ -10,7 +10,7 @@ import { Icons, welcomeSteps, BackToAccountButton } from './shared.mjs'
import { OkIcon, NoIcon } from 'shared/components/icons.mjs'
import { ContinueButton } from 'shared/components/buttons/continue-button.mjs'
import { StringInput } from 'shared/components/inputs.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
export const ns = ['account', 'status']
diff --git a/sites/shared/components/susi/migrate.mjs b/sites/shared/components/susi/migrate.mjs
index 523261d7666..506563bc565 100644
--- a/sites/shared/components/susi/migrate.mjs
+++ b/sites/shared/components/susi/migrate.mjs
@@ -11,7 +11,7 @@ import Link from 'next/link'
import { Robot } from 'shared/components/robot/index.mjs'
import { StringInput, PasswordInput } from 'shared/components/inputs.mjs'
import { FreeSewingAnimation } from 'shared/components/animations/freesewing.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs as DynamicDocs } from 'site/components/dynamic-org-docs.mjs'
// Translation namespaces used on this page
export const ns = ['signup', 'errros', 'account']
diff --git a/sites/shared/components/workbench/views/measies/editor.mjs b/sites/shared/components/workbench/views/measies/editor.mjs
index b08b5631109..934b6c3762f 100644
--- a/sites/shared/components/workbench/views/measies/editor.mjs
+++ b/sites/shared/components/workbench/views/measies/editor.mjs
@@ -1,7 +1,7 @@
import { nsMerge } from 'shared/utils.mjs'
import { MeasieInput, ns as inputNs } from 'shared/components/inputs.mjs'
import { useTranslation } from 'next-i18next'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
export const ns = nsMerge('workbench', inputNs)
diff --git a/sites/shared/components/workbench/views/save/index.mjs b/sites/shared/components/workbench/views/save/index.mjs
index 93441caaaed..b1b15525777 100644
--- a/sites/shared/components/workbench/views/save/index.mjs
+++ b/sites/shared/components/workbench/views/save/index.mjs
@@ -14,7 +14,7 @@ import { StringInput, MarkdownInput } from 'shared/components/inputs.mjs'
import { UploadIcon, EditIcon, PlusIcon, BookmarkIcon } from 'shared/components/icons.mjs'
import { Popout } from 'shared/components/popout/index.mjs'
import { PageLink } from 'shared/components/link.mjs'
-import { DynamicOrgDocs } from 'shared/components/dynamic-docs/org.mjs'
+import { DynamicOrgDocs } from 'site/components/dynamic-org-docs.mjs'
export const ns = ['workbench', 'status']
diff --git a/sites/shared/prebuild/lab.mjs b/sites/shared/prebuild/lab.mjs
index 2f690c04cb4..2d05ad9f6e8 100644
--- a/sites/shared/prebuild/lab.mjs
+++ b/sites/shared/prebuild/lab.mjs
@@ -2,15 +2,15 @@ import path from 'path'
import fse from 'fs-extra'
const copyFromOrg = [
- ['account'],
- ['confirm'],
- ['designs'],
+ //['account'],
+ //['confirm'],
+ //['designs'],
['new', 'index.mjs'],
['new', '[design].mjs'],
- ['patterns'],
- ['sets'],
+ //['patterns'],
+ //['sets'],
['signin'],
- ['signup'],
+ //['signup'],
]
const copyOrgFiles = () => {