From 0c1d886e9442bd6c5bb9bdaec54d49fdb93aa549 Mon Sep 17 00:00:00 2001 From: joostdecock Date: Sun, 1 Jun 2025 17:02:46 +0200 Subject: [PATCH] feat [org]: Wrote Editor docs --- packages/react/components/Button/index.mjs | 12 +- .../react/components/Collection/index.mjs | 2 +- .../Editor/components/HeaderMenu.mjs | 14 +- .../Editor/components/MovablePattern.mjs | 31 +- .../Editor/components/PatternLayout.mjs | 73 +++- .../Editor/components/menus/TestMenu.mjs | 6 +- .../Editor/components/views/DocsView.mjs | 72 ++-- .../Editor/components/views/ExportView.mjs | 20 +- .../Editor/components/views/SaveView.mjs | 2 +- .../Editor/components/views/TestView.mjs | 18 +- .../Editor/components/views/UndosView.mjs | 52 +-- packages/react/components/Help/index.mjs | 38 +- packages/react/components/Modal/index.mjs | 5 +- .../docs/docs/editor/menus/flags/readme.mdx | 22 ++ .../docs/docs/editor/menus/layout/readme.mdx | 11 + .../docs/docs/editor/menus/options/readme.mdx | 16 + .../editor/menus/preferences/aside/readme.mdx | 10 + .../menus/preferences/control/readme.mdx | 6 + .../docs/editor/menus/preferences/readme.mdx | 31 ++ .../{ui => preferences}/renderer/readme.mdx | 2 - .../menus/preferences/rotate/readme.mdx | 8 + sites/org/docs/docs/editor/menus/readme.md | 3 + .../{core => settings}/complete/readme.mdx | 2 - .../{core => settings}/expand/readme.mdx | 2 - .../{core => settings}/include/readme.mdx | 2 - .../{core => settings}/margin/readme.mdx | 2 - .../{core => settings}/paperless/readme.mdx | 2 - .../docs/editor/menus/settings/readme.mdx | 57 +++ .../{core => settings}/sabool/readme.mdx | 9 +- .../menus/{core => settings}/samm/readme.mdx | 4 +- .../menus/{core => settings}/scale/readme.mdx | 2 - .../menus/{core => settings}/units/readme.mdx | 2 - .../docs/docs/editor/menus/test/readme.mdx | 18 + .../docs/editor/menus/ui/aside/readme.mdx | 7 - .../docs/editor/menus/ui/control/readme.mdx | 7 - .../docs/editor/menus/ui/rotate/readme.mdx | 7 - .../docs/docs/editor/menus/ui/ux/readme.mdx | 7 - .../docs/docs/editor/menus/view/readme.mdx | 9 + sites/org/docs/docs/editor/readme.mdx | 350 ++---------------- .../docs/docs/editor/views/designs/readme.mdx | 68 +++- .../docs/docs/editor/views/docs/readme.mdx | 41 +- .../docs/editor/views/editsettings/readme.mdx | 63 +++- .../docs/docs/editor/views/export/readme.mdx | 58 ++- .../docs/docs/editor/views/inspect/readme.mdx | 38 +- .../docs/docs/editor/views/layout/readme.mdx | 67 +++- .../docs/docs/editor/views/logs/readme.mdx | 36 +- .../docs/editor/views/measurements/readme.mdx | 54 ++- sites/org/docs/docs/editor/views/readme.md | 3 + .../docs/docs/editor/views/save/readme.mdx | 45 ++- .../docs/docs/editor/views/test/readme.mdx | 47 ++- .../docs/docs/editor/views/timing/readme.mdx | 40 +- .../docs/docs/editor/views/undos/readme.mdx | 39 +- sites/org/docusaurus.config.mjs | 8 +- 53 files changed, 1054 insertions(+), 496 deletions(-) create mode 100644 sites/org/docs/docs/editor/menus/flags/readme.mdx create mode 100644 sites/org/docs/docs/editor/menus/layout/readme.mdx create mode 100644 sites/org/docs/docs/editor/menus/options/readme.mdx create mode 100644 sites/org/docs/docs/editor/menus/preferences/aside/readme.mdx create mode 100644 sites/org/docs/docs/editor/menus/preferences/control/readme.mdx create mode 100644 sites/org/docs/docs/editor/menus/preferences/readme.mdx rename sites/org/docs/docs/editor/menus/{ui => preferences}/renderer/readme.mdx (94%) create mode 100644 sites/org/docs/docs/editor/menus/preferences/rotate/readme.mdx create mode 100644 sites/org/docs/docs/editor/menus/readme.md rename sites/org/docs/docs/editor/menus/{core => settings}/complete/readme.mdx (89%) rename sites/org/docs/docs/editor/menus/{core => settings}/expand/readme.mdx (93%) rename sites/org/docs/docs/editor/menus/{core => settings}/include/readme.mdx (92%) rename sites/org/docs/docs/editor/menus/{core => settings}/margin/readme.mdx (92%) rename sites/org/docs/docs/editor/menus/{core => settings}/paperless/readme.mdx (90%) create mode 100644 sites/org/docs/docs/editor/menus/settings/readme.mdx rename sites/org/docs/docs/editor/menus/{core => settings}/sabool/readme.mdx (63%) rename sites/org/docs/docs/editor/menus/{core => settings}/samm/readme.mdx (87%) rename sites/org/docs/docs/editor/menus/{core => settings}/scale/readme.mdx (95%) rename sites/org/docs/docs/editor/menus/{core => settings}/units/readme.mdx (95%) create mode 100644 sites/org/docs/docs/editor/menus/test/readme.mdx delete mode 100644 sites/org/docs/docs/editor/menus/ui/aside/readme.mdx delete mode 100644 sites/org/docs/docs/editor/menus/ui/control/readme.mdx delete mode 100644 sites/org/docs/docs/editor/menus/ui/rotate/readme.mdx delete mode 100644 sites/org/docs/docs/editor/menus/ui/ux/readme.mdx create mode 100644 sites/org/docs/docs/editor/menus/view/readme.mdx create mode 100644 sites/org/docs/docs/editor/views/readme.md diff --git a/packages/react/components/Button/index.mjs b/packages/react/components/Button/index.mjs index 69627c890a7..0db331bf7ad 100644 --- a/packages/react/components/Button/index.mjs +++ b/packages/react/components/Button/index.mjs @@ -3,7 +3,7 @@ import { copyToClipboard } from '@freesewing/utils' import { CopyIcon, OkIcon } from '@freesewing/react/components/Icon' import { LoadingStatusContext } from '@freesewing/react/context/LoadingStatus' -const handleCopied = (content, setCopied, setLoadingStatus, label) => { +const handleCopied = (content, setCopied, setLoadingStatus, label, handler=false) => { copyToClipboard(content) setCopied(true) setLoadingStatus([ @@ -13,6 +13,7 @@ const handleCopied = (content, setCopied, setLoadingStatus, label) => { true, ]) setTimeout(() => setCopied(false), 1000) + if (typeof handler === 'function') handler(content, label) } /** @@ -21,12 +22,14 @@ const handleCopied = (content, setCopied, setLoadingStatus, label) => { * @component * @param {object} props - All component props * @param {JSX.element} props.children - The component children + * @param {string} [props.btnClasses = 'tw:daisy-btn tw:daisy-btn-ghost tw:hover:border-transparent w:hover:border-transparent tw:hover:shadow-none'] - The content that should be copied to the clipboard * @param {string} props.content - The content that should be copied to the clipboard * @param {string} props.label - The label to show when the content is copied + * @param {function} [props.onCopy=false] - An optional handler to call after copying to the clipboard, receives content, label as parameters * @param {boolean} props.sup - Set this to true to render as superscript (above the line) * @returns {JSX.Element} */ -export const CopyToClipboardButton = ({ children, content, label = false, sup = false }) => { +export const CopyToClipboardButton = ({ children, content, label = false, sup = false, btnClasses="tw:daisy-btn tw:daisy-btn-ghost tw:hover:border-transparent w:hover:border-transparent tw:hover:shadow-none", onCopy=false }) => { const [copied, setCopied] = useState(false) const { setLoadingStatus } = useContext(LoadingStatusContext) @@ -36,9 +39,10 @@ export const CopyToClipboardButton = ({ children, content, label = false, sup = ) @@ -528,7 +530,7 @@ export const HeaderMenuButton = ({ }) => ( ) @@ -100,7 +100,7 @@ const SampleMeasurementButton = ({ name, update }) => ( } onClick={() => update.settings('sample', { type: 'measurement', measurement: name })} > - + {measurementsTranslations[name]} ) diff --git a/packages/react/components/Editor/components/views/DocsView.mjs b/packages/react/components/Editor/components/views/DocsView.mjs index b0e4c26d2ce..2f2b70d7ce1 100644 --- a/packages/react/components/Editor/components/views/DocsView.mjs +++ b/packages/react/components/Editor/components/views/DocsView.mjs @@ -1,11 +1,15 @@ // Dependencies import { linkClasses, capitalize } from '@freesewing/utils' +// Context +import { ModalContext } from '@freesewing/react/context/Modal' // Hooks -import React from 'react' +import React, { useContext } from 'react' // Components -import { H1, H5 } from '@freesewing/react/components/Heading' -import { Popout } from '@freesewing/react/components/Popout' +import { H1, H2 } from '@freesewing/react/components/Heading' +import { modalDocsHelp } from '@freesewing/react/components/Help' import { HeaderMenu } from '../HeaderMenu.mjs' +import { Popout } from '@freesewing/react/components/Popout' + /** * This is the docs view, it just shows content @@ -16,51 +20,51 @@ import { HeaderMenu } from '../HeaderMenu.mjs' * @param {Object} props.update - Helper object for updating the editor state */ export const DocsView = ({ state, config, update }) => { + const { setModal, modalContent } = useContext(ModalContext) + return ( <>

Documentation

{state?.design ? ( - -
Design Documentation
-

- You can find documentation for the {capitalize(state.design)} design at: -
- + <> +

Design Documentation

+ + +
+ + ) : null} - -
Understanding the FreeSewing Pattern Editor
-

- Please refer to the pattern editor documentation at: -
- - {`FreeSewing.eu/docs/about/editor`} - -

+

Editor Documentation

+ + - -
- Looking for info on how it really works? -
-

- Documentation for developers and contributors is available at{' '} - - {`FreeSewing.dev`} - -

+ +

Developer Documentation

+ + + {`FreeSewing.dev`} +
+ {modalContent} ) } diff --git a/packages/react/components/Editor/components/views/ExportView.mjs b/packages/react/components/Editor/components/views/ExportView.mjs index b2cc5aec886..0dfc2bc07bd 100644 --- a/packages/react/components/Editor/components/views/ExportView.mjs +++ b/packages/react/components/Editor/components/views/ExportView.mjs @@ -58,10 +58,26 @@ export const ExportView = (props) => {

Share your pattern

If you merely want to share your pattern with others, you can copy these URLs:

- + { + console.log('handler called') + update.notifySuccess('Pattern and Measurements URL copied to clipboard') + }} + > Pattern and Measurements - + { + console.log('handler called') + update.notifySuccess('Pattern URL copied to clipboard') + }} + > Pattern only
diff --git a/packages/react/components/Editor/components/views/SaveView.mjs b/packages/react/components/Editor/components/views/SaveView.mjs index bc3107ddc17..402e782a02a 100644 --- a/packages/react/components/Editor/components/views/SaveView.mjs +++ b/packages/react/components/Editor/components/views/SaveView.mjs @@ -162,7 +162,7 @@ export const SaveView = ({ config, state, update }) => { To access your saved patterns, go to: {' '} - /account/patterns + /account/data/patterns

diff --git a/packages/react/components/Editor/components/views/TestView.mjs b/packages/react/components/Editor/components/views/TestView.mjs index 8ad75cd6687..d15a8150628 100644 --- a/packages/react/components/Editor/components/views/TestView.mjs +++ b/packages/react/components/Editor/components/views/TestView.mjs @@ -14,6 +14,7 @@ import { ZoomablePattern } from '../ZoomablePattern.mjs' import { PatternLayout } from '../PatternLayout.mjs' import { HeaderMenu } from '../HeaderMenu.mjs' import { H1, H3, H4, H5 } from '@freesewing/react/components/Heading' +import { OptionsIcon, MeasurementsIcon } from '@freesewing/react/components/Icon' /** * The test view allows users to test options and measurements @@ -87,6 +88,7 @@ export const TestView = ({ Design, state, update, config }) => { 't', 'ASC' ) + const btnClasses = "tw:my-0.5 tw:block tw:daisy-btn tw:daisy-btn-primary tw:daisy-btn-outline tw:daisy-btn-xs tw:flex tw:flex-row tw:items-center tw:justify-between tw:w-full tw:max-w-64" return ( <> @@ -106,12 +108,13 @@ export const TestView = ({ Design, state, update, config }) => { {trm.map(({ t, m }) => ( ))} @@ -122,12 +125,13 @@ export const TestView = ({ Design, state, update, config }) => { {tom.map(({ t, m }) => ( ))} @@ -158,6 +162,7 @@ const SampleOptionsMenu = ({ Design, state, update }) => { const SampleOptionsSubMenu = ({ structure, update, level = 1 }) => { const output = [] + const btnClasses = "tw:my-0.5 tw:block tw:daisy-btn tw:daisy-btn-primary tw:daisy-btn-outline tw:daisy-btn-xs tw:flex tw:flex-row tw:items-center tw:justify-between tw:w-full tw:max-w-64" /* * Show entries alphabetic, but force groups last, and advanced last among them */ @@ -175,10 +180,11 @@ const SampleOptionsSubMenu = ({ structure, update, level = 1 }) => { output.push( ) } diff --git a/packages/react/components/Editor/components/views/UndosView.mjs b/packages/react/components/Editor/components/views/UndosView.mjs index f3df9384c0f..0f05492b7e8 100644 --- a/packages/react/components/Editor/components/views/UndosView.mjs +++ b/packages/react/components/Editor/components/views/UndosView.mjs @@ -108,33 +108,33 @@ export const UndoStep = ({ update, state, step, Design, compact = false, index = return ( <> -

- -

update.restore(index, state._)}> -
- - {data.fieldIcon || null} - {data.title} - - - {data.icon || null} {data.menu} - -
-
- {data.msg ? ( - data.msg - ) : ( - <> - - {Array.isArray(data.newVal) ? data.newVal.join(', ') : data.newVal} - - - - {Array.isArray(data.oldVal) ? data.oldVal.join(', ') : data.oldVal} - - - )} +
+
+
+ + {data.menu} + + » + + {data.title} + +
+
+ {data.msg ? ( + data.msg + ) : ( + <> + + {Array.isArray(data.newVal) ? data.newVal.join(', ') : data.newVal} + + + + {Array.isArray(data.oldVal) ? data.oldVal.join(', ') : data.oldVal} + + + )} +
diff --git a/packages/react/components/Help/index.mjs b/packages/react/components/Help/index.mjs index 951c6e321b5..7ea5c950dcd 100644 --- a/packages/react/components/Help/index.mjs +++ b/packages/react/components/Help/index.mjs @@ -2,7 +2,26 @@ import React from 'react' // Components import { ModalWrapper } from '@freesewing/react/components/Modal' -const Iframe = (props) =>