diff --git a/sites/org/components/header/index.mjs b/sites/org/components/header/index.mjs index 6a2753c2ed9..facd9d26249 100644 --- a/sites/org/components/header/index.mjs +++ b/sites/org/components/header/index.mjs @@ -116,10 +116,10 @@ const NavIcons = ({ setModal, setSearch }) => { ) } -export const Header = ({ show }) => { +export const Header = () => { const { setModal } = useContext(ModalContext) return ( - +
{/* Non-mobile content */} diff --git a/sites/org/components/layouts/default.mjs b/sites/org/components/layouts/default.mjs index 834b240a309..593201184ca 100644 --- a/sites/org/components/layouts/default.mjs +++ b/sites/org/components/layouts/default.mjs @@ -13,7 +13,7 @@ export const DefaultLayout = ({ children = [], pageTitle = false }) => ( {pageTitle && ( -
+

{pageTitle}

diff --git a/sites/org/components/layouts/docs.mjs b/sites/org/components/layouts/docs.mjs index 8fb739640bc..4e72166b8d1 100644 --- a/sites/org/components/layouts/docs.mjs +++ b/sites/org/components/layouts/docs.mjs @@ -60,7 +60,7 @@ export const DocsLayout = ({ children = [], frontmatter }) => { -
+

{frontmatter.title}

diff --git a/sites/org/components/layouts/post.mjs b/sites/org/components/layouts/post.mjs index 0476cbfba7a..c0054abb4fc 100644 --- a/sites/org/components/layouts/post.mjs +++ b/sites/org/components/layouts/post.mjs @@ -31,7 +31,7 @@ export const PostLayout = ({ children = [], slug, frontmatter, locale }) => ( -
+

{frontmatter.title}

diff --git a/sites/org/pages/new/[design].mjs b/sites/org/pages/new/[design].mjs index 24d7d3d4fbb..58eb22243ab 100644 --- a/sites/org/pages/new/[design].mjs +++ b/sites/org/pages/new/[design].mjs @@ -16,7 +16,7 @@ const NewDesignPage = ({ page, design }) => { const Design = useDesign(design) return ( - + ) diff --git a/sites/shared/components/base-layout.mjs b/sites/shared/components/base-layout.mjs index c7db16e48fe..20a10a6b7cd 100644 --- a/sites/shared/components/base-layout.mjs +++ b/sites/shared/components/base-layout.mjs @@ -2,7 +2,7 @@ * The default full-page FreeSewing layout */ export const BaseLayout = ({ children = [] }) => ( -
+
{children}
) @@ -11,26 +11,26 @@ export const BaseLayout = ({ children = [] }) => ( * The left column of the default layout */ export const BaseLayoutLeft = ({ children = [] }) => ( -
{children}
+
{children}
) /* * The right column of the default layout */ export const BaseLayoutRight = ({ children = [] }) => ( -
{children}
+
{children}
) /* * The main column for prose (text like docs and so on) */ export const BaseLayoutProse = ({ children = [] }) => ( -
{children}
+
{children}
) /* * The central column for wide content (no max-width) */ export const BaseLayoutWide = ({ children = [] }) => ( -
{children}
+
{children}
) diff --git a/sites/shared/components/designs/design-picker.mjs b/sites/shared/components/designs/design-picker.mjs index bec04cbbd20..72e86728d48 100644 --- a/sites/shared/components/designs/design-picker.mjs +++ b/sites/shared/components/designs/design-picker.mjs @@ -12,7 +12,7 @@ export const DesignPicker = ({ hrefBuilder = false }) => { for (const d in designs) translated[t(`${d}.t`)] = d return ( -
+
{Object.keys(translated) .sort() .map((d) => ( diff --git a/sites/shared/components/icons.mjs b/sites/shared/components/icons.mjs index f770fc26893..273de79ca2d 100644 --- a/sites/shared/components/icons.mjs +++ b/sites/shared/components/icons.mjs @@ -391,6 +391,12 @@ export const KeyIcon = (props) => ( ) +export const KioskIcon = (props) => ( + + + +) + export const LabelIcon = (props) => ( diff --git a/sites/shared/components/workbench/menus/core-settings/config.mjs b/sites/shared/components/workbench/menus/core-settings/config.mjs index ef9d5509011..7c17853ef7f 100644 --- a/sites/shared/components/workbench/menus/core-settings/config.mjs +++ b/sites/shared/components/workbench/menus/core-settings/config.mjs @@ -109,8 +109,8 @@ export const loadSettingsConfig = ({ }, expand: { control: 4, // Show when control > 3 - list: [0, 1], - dflt: 0, + list: [1, 0], + dflt: 1, choiceTitles: { 0: 'expandNo', 1: 'expandYes', diff --git a/sites/shared/components/workbench/menus/mobile-menubar.mjs b/sites/shared/components/workbench/menus/mobile-menubar.mjs index 71c94e1aac0..1e17ea8f2dc 100644 --- a/sites/shared/components/workbench/menus/mobile-menubar.mjs +++ b/sites/shared/components/workbench/menus/mobile-menubar.mjs @@ -3,7 +3,6 @@ import { ModalContext } from 'shared/context/modal-context.mjs' import { ModalWrapper } from 'shared/components/wrappers/modal.mjs' import { CloseIcon } from 'shared/components/icons.mjs' import { MobileMenubarContext } from 'shared/context/mobile-menubar-context.mjs' -import { shownHeaderSelector } from 'shared/components/wrappers/header.mjs' import { MenuAltIcon } from 'shared/components/icons.mjs' /** @@ -64,7 +63,6 @@ export const MobileMenubar = () => {
{ const uiSettings = { @@ -9,12 +9,26 @@ export const loadSettingsConfig = () => { choiceTitles: {}, icon: ControlIcon, }, + kiosk: { + control: 4, // Show when control > 3 + list: [0, 1], + choiceTitles: { + 0: 'ui-settings:websiteMode', + 1: 'ui-settings:kioskMode', + }, + //valueTitles: { + // react: 'ui-settings:regular', + // svg: 'ui-settings:kiosk', + //}, + dflt: 0, + icon: KioskIcon, + }, renderer: { control: 4, // Show when control > 3 list: ['react', 'svg'], choiceTitles: { - react: 'renderWithReact', - svg: 'renderWithCore', + react: 'ui-settings:renderWithReact', + svg: 'ui-settings:renderWithCore', }, valueTitles: { react: 'React', diff --git a/sites/shared/components/workbench/menus/ui-settings/en.yaml b/sites/shared/components/workbench/menus/ui-settings/en.yaml index 6913c5aa938..79b15a0361c 100644 --- a/sites/shared/components/workbench/menus/ui-settings/en.yaml +++ b/sites/shared/components/workbench/menus/ui-settings/en.yaml @@ -8,12 +8,13 @@ renderWithCore.t: Render with Freesewing's Core library renderWithCore.d: Render directly to SVG from Core. Allows no interactivity and is optimized for print. Use this if you want to know what it will look like when exported. control.t: User Experience control.d: Which user experience do you prefer? Please note that this is an account setting, so it will impact the entire website. -inspect.t: Inspect -inspect.d: Enabling this will allow you to drill down into the pattern, and pull up information about its various parts, paths, and points. -inspectNo.t: Disable the inspector -inspectNo.d: This is the default, the pattern inspector is disabled and the pattern is displayed as usual. -inspectYes.t: Enable the inspector -inspectYes.d: With the pattern inspector enabled and the React rendering engine selected, we will add interactivity to the pattern to allow you to inspect the various elements that make up the pattern. +kiosk.t: Kiosk mode +kiosk.d: Enable this to utilize the entire screen for the pattern drafting environment +websiteMode.t: Regular mode +websiteMode.d: Anchors the pattern drafting environment whithin the default website layout. +kioskMode.t: Kiosk mode +kioskMode.d: Utilizes the entire screen for the pattern drafting environment, hiding all other website elements. + no: No yes: Yes draft: Draft diff --git a/sites/shared/components/workbench/menus/ui-settings/inputs.mjs b/sites/shared/components/workbench/menus/ui-settings/inputs.mjs index 0c467df0e19..164bd010a29 100644 --- a/sites/shared/components/workbench/menus/ui-settings/inputs.mjs +++ b/sites/shared/components/workbench/menus/ui-settings/inputs.mjs @@ -16,6 +16,7 @@ export const ControlSettingInput = (props) => { } export const inputs = { - renderer: ListInput, control: ControlSettingInput, + kiosk: ListInput, + renderer: ListInput, } diff --git a/sites/shared/components/workbench/menus/ui-settings/values.mjs b/sites/shared/components/workbench/menus/ui-settings/values.mjs index 1cdc672cd14..d53dbecebfc 100644 --- a/sites/shared/components/workbench/menus/ui-settings/values.mjs +++ b/sites/shared/components/workbench/menus/ui-settings/values.mjs @@ -2,6 +2,7 @@ import { Difficulty } from 'shared/components/designs/difficulty.mjs' import { ListValue } from '../shared/values.mjs' export const values = { - renderer: ListValue, control: ({ control }) => , + kiosk: ListValue, + renderer: ListValue, } diff --git a/sites/shared/components/workbench/new.mjs b/sites/shared/components/workbench/new.mjs index 7b8d69b1d35..6b9be3c4a12 100644 --- a/sites/shared/components/workbench/new.mjs +++ b/sites/shared/components/workbench/new.mjs @@ -8,8 +8,9 @@ import { useControlState } from 'shared/components/account/control.mjs' // Dependencies import { pluginTheme } from '@freesewing/plugin-theme' import { pluginI18n } from '@freesewing/plugin-i18n' -import { objUpdate, hasRequiredMeasurements } from 'shared/utils.mjs' +import { objUpdate, hasRequiredMeasurements, nsMerge } from 'shared/utils.mjs' // Components +import { Header, ns as headerNs } from 'site/components/header/index.mjs' import { WorkbenchHeader } from './header.mjs' import { ErrorView } from 'shared/components/error/view.mjs' import { ModalSpinner } from 'shared/components/modal/spinner.mjs' @@ -45,6 +46,7 @@ export const ns = [ const defaultUi = { renderer: 'react', + kiosk: false, } const views = { @@ -61,6 +63,8 @@ const views = { const draftViews = ['draft', 'inspect'] +const kioskClasses = 'z-30 w-screen h-screen fixed top-0 left-0 bg-base-100' + export const Workbench = ({ design, Design, DynamicDocs }) => { // Hooks const { t, i18n } = useTranslation([...ns, design]) @@ -214,10 +218,13 @@ export const Workbench = ({ design, Design, DynamicDocs }) => { } return ( -
- -
{viewContent}
- -
+ <> + {!ui.kiosk &&
} +
+ +
{viewContent}
+ +
+ ) } diff --git a/sites/shared/components/workbench/views/draft/header.mjs b/sites/shared/components/workbench/views/draft/header.mjs index 151bcd33386..194684c9726 100644 --- a/sites/shared/components/workbench/views/draft/header.mjs +++ b/sites/shared/components/workbench/views/draft/header.mjs @@ -22,8 +22,8 @@ import { ZoomInIcon, ZoomOutIcon, ExpandIcon, + KioskIcon, } from 'shared/components/icons.mjs' -import { shownHeaderSelector } from 'shared/components/wrappers/header.mjs' export const ns = ['common', 'core-settings', 'ui-settings'] @@ -128,11 +128,13 @@ export const DraftHeader = ({ update, settings, ui, control, account, design, se return (
-
+
{headerZoomButtons}
@@ -161,7 +163,7 @@ export const DraftHeader = ({ update, settings, ui, control, account, design, se /> update.settings( ['expand'], @@ -194,7 +196,14 @@ export const DraftHeader = ({ update, settings, ui, control, account, design, se ))}
- +
+ update.ui(['kiosk'], ui.kiosk ? 0 : 1)} + title={t('ui-settings:kiosk.t')} + /> +
= uiSettingsConfig.kiosk.control && flags) items.push([ , , diff --git a/sites/shared/components/workbench/views/flags.mjs b/sites/shared/components/workbench/views/flags.mjs index 88fbedcfa88..9e4081a94d1 100644 --- a/sites/shared/components/workbench/views/flags.mjs +++ b/sites/shared/components/workbench/views/flags.mjs @@ -119,7 +119,7 @@ export const FlagsAccordionEntries = ({ flags, update }) => {
- {title} + {title}
{flag.type}
, diff --git a/sites/shared/components/wrappers/header.mjs b/sites/shared/components/wrappers/header.mjs index 66d9f392031..e2ec57f86c0 100644 --- a/sites/shared/components/wrappers/header.mjs +++ b/sites/shared/components/wrappers/header.mjs @@ -1,24 +1,11 @@ -export const HeaderWrapper = ({ show, children }) => ( +export const HeaderWrapper = ({ children }) => (
- {' '} {children}
) - -// can't use string interpolation or tailwind won't account for these classes -const shownHeaderClasses = { - 'bottom-16': 'group-[.header-shown]/layout:bottom-16', - 'md:top-24': 'group-[.header-shown]/layout:md:top-24', -} -export const shownHeaderSelector = (cls) => shownHeaderClasses[cls] diff --git a/sites/shared/components/wrappers/layout.mjs b/sites/shared/components/wrappers/layout.mjs index 404fcfd281f..957d8f612d6 100644 --- a/sites/shared/components/wrappers/layout.mjs +++ b/sites/shared/components/wrappers/layout.mjs @@ -1,4 +1,3 @@ -import { useState, useEffect, useRef } from 'react' import Head from 'next/head' import { Header, ns as headerNs } from 'site/components/header/index.mjs' import { Footer, ns as footerNs } from 'shared/components/footer/index.mjs' @@ -15,44 +14,21 @@ export const LayoutWrapper = ({ footer = true, slug, }) => { - const ChosenHeader = header ? header : Header - const prevScrollPos = useRef(0) - const [showHeader, setShowHeader] = useState(true) - - useEffect(() => { - if (typeof window !== 'undefined') { - const handleScroll = () => { - const curScrollPos = typeof window !== 'undefined' ? window.pageYOffset : 0 - - if (curScrollPos >= prevScrollPos.current) { - if (curScrollPos > 20) setShowHeader(false) - } else setShowHeader(true) - - prevScrollPos.current = curScrollPos - } - - window.addEventListener('scroll', handleScroll) - return () => window.removeEventListener('scroll', handleScroll) - } - }, [prevScrollPos, setShowHeader]) - return (
- + {header &&
}
{children} diff --git a/sites/shared/components/wrappers/page.mjs b/sites/shared/components/wrappers/page.mjs index e1b9e369daa..35c31277551 100644 --- a/sites/shared/components/wrappers/page.mjs +++ b/sites/shared/components/wrappers/page.mjs @@ -20,7 +20,7 @@ export const PageWrapper = (props) => { /* * Deconstruct props */ - const { layout = DefaultLayout, footer = true, header = false, children = [], path = [] } = props + const { layout = DefaultLayout, footer = true, header = true, children = [], path = [] } = props // Title is typically set in props.t but check props.title too const pageTitle = props.t ? props.t : props.title ? props.title : null