From 5ec2a2a1da9b8230aeeef7664445b3f658b1edc6 Mon Sep 17 00:00:00 2001 From: joostdecock Date: Fri, 9 May 2025 17:47:03 +0200 Subject: [PATCH] [react] feat: Added docs for components/Admin --- packages/react/components/Admin/index.mjs | 26 ++- packages/react/mkdocs.sh | 1 + .../react/components/account/_examples.js | 70 ++++++- .../react/components/account/readme.mdx | 173 +++++++++++++----- .../react/components/admin/readme.mdx | 31 +++- .../react/components/button/_examples.js | 5 +- sites/dev/src/components/component-docs.js | 19 +- 7 files changed, 255 insertions(+), 70 deletions(-) diff --git a/packages/react/components/Admin/index.mjs b/packages/react/components/Admin/index.mjs index 06781d5d447..cc3c94da275 100644 --- a/packages/react/components/Admin/index.mjs +++ b/packages/react/components/Admin/index.mjs @@ -18,7 +18,13 @@ import { Markdown } from '@freesewing/react/components/Markdown' import { ModalWrapper } from '@freesewing/react/components/Modal' import { AccountStatus, UserRole } from '@freesewing/react/components/Account' -export const SubscriberAdministration = ({ page }) => { +/** + * A component to manage FreeSewing newsletter subscribers (requires admin role) + * + * @component + * @returns {JSX.Element} + */ +export const SubscriberAdministration = () => { const [subscribers, setSubscribers] = useState() const [q, setQ] = useState() const [hits, setHits] = useState([]) @@ -106,6 +112,14 @@ export const SubscriberAdministration = ({ page }) => { ) } +/** + * A component to manage FreeSewing users (requires the admin role) + * + * @component + * @param {object} props - All component props + * @param {React.Component} props.Link - A framework specific Link component for client-side routing + * @returns {JSX.Element} + */ export const UserAdministration = ({ Link = false }) => { const backend = useBackend() @@ -154,7 +168,7 @@ export const UserAdministration = ({ Link = false }) => { ) } -export const Hits = ({ results, Link = false }) => { +const Hits = ({ results, Link = false }) => { if (!Link) Link = WebLink return ( @@ -179,7 +193,7 @@ export const Hits = ({ results, Link = false }) => { ) } -export const User = ({ user, Link }) => { +const User = ({ user, Link }) => { const { setModal } = useContext(ModalContext) const { setLoadingStatus } = useContext(LoadingStatusContext) const backend = useBackend() @@ -274,7 +288,7 @@ export const User = ({ user, Link }) => { ) } -export const ImpersonateButton = ({ userId }) => { +const ImpersonateButton = ({ userId }) => { const backend = useBackend() const { setLoadingStatus } = useContext(LoadingStatusContext) const { impersonate } = useAccount() @@ -300,14 +314,14 @@ export const ImpersonateButton = ({ userId }) => { ) } -export const Row = ({ title, val }) => ( +const Row = ({ title, val }) => ( {title} {val} ) -export const ManageUser = ({ userId }) => { +const ManageUser = ({ userId }) => { // Hooks const backend = useBackend() const { setLoadingStatus } = useContext(LoadingStatusContext) diff --git a/packages/react/mkdocs.sh b/packages/react/mkdocs.sh index 6884d49772b..98c34734b6f 100755 --- a/packages/react/mkdocs.sh +++ b/packages/react/mkdocs.sh @@ -2,4 +2,5 @@ mkdir -p ./docs/components jsdoc -c jsdoc.json components/Account/* > ../../sites/dev/prebuild/jsdoc/react/components/account.json +jsdoc -c jsdoc.json components/Admin/* > ../../sites/dev/prebuild/jsdoc/react/components/admin.json jsdoc -c jsdoc.json components/Button/* > ../../sites/dev/prebuild/jsdoc/react/components/button.json diff --git a/sites/dev/docs/reference/packages/react/components/account/_examples.js b/sites/dev/docs/reference/packages/react/components/account/_examples.js index 42beab42cf3..4937246d6be 100644 --- a/sites/dev/docs/reference/packages/react/components/account/_examples.js +++ b/sites/dev/docs/reference/packages/react/components/account/_examples.js @@ -21,6 +21,23 @@ import { MsetCard, NewSet as NewSetExample, Newsletter as NewsletterExample, + Password as PasswordExample, + Pattern, + PatternCard, + Patterns as PatternsExample, + Reddit as RedditExample, + Reload as ReloadExample, + Remove as RemoveExample, + Restrict as RestrictExample, + Set as SetExample, + Sets as SetsExample, + Tiktok as TiktokExample, + Twitch as TwitchExample, + Units as UnitsExample, + UserId as UserIdExample, + Username as UsernameExample, + UserRole as UserRoleExample, + Website as WebsiteExample, } from '@freesewing/react/components/Account' const AccountStatusExample = () => ( @@ -32,10 +49,30 @@ const AccountStatusExample = () => ( - -2 - -1 - 0 - 1 + + -2 + + + + + + -1 + + + + + + 0 + + + + + + 1 + + + + ) @@ -48,9 +85,10 @@ const BookmarkButtonExample = () => ( /> ) -const MsetCardExample = () => ( - -) +const MsetCardExample = () => + +const PatternExample = () => +const PatternCardExample = () => export { AccountStatusExample, @@ -74,5 +112,21 @@ export { MsetCardExample, NewSetExample, NewsletterExample, + PasswordExample, + PatternExample, + PatternCardExample, + PatternsExample, + RedditExample, + ReloadExample, + RemoveExample, + RestrictExample, + SetExample, + SetsExample, + TiktokExample, + TwitchExample, + UnitsExample, + UserIdExample, + UsernameExample, + UserRoleExample, + WebsiteExample, } - diff --git a/sites/dev/docs/reference/packages/react/components/account/readme.mdx b/sites/dev/docs/reference/packages/react/components/account/readme.mdx index 2756140513c..1289cc344ad 100644 --- a/sites/dev/docs/reference/packages/react/components/account/readme.mdx +++ b/sites/dev/docs/reference/packages/react/components/account/readme.mdx @@ -4,7 +4,7 @@ title: Account import { DocusaurusDoc } from '@freesewing/react/components/Docusaurus' import { ComponentDocs } from '@site/src/components/component-docs.js' -import { MiniNote} from '@freesewing/react/components/Mini' +import { MiniNote } from '@freesewing/react/components/Mini' import { jsdocAccountStatus as jsdocAccount, jsdocAccountStatus, @@ -28,6 +28,23 @@ import { jsdocMsetCard, jsdocNewSet, jsdocNewsletter, + jsdocPassword, + jsdocPattern, + jsdocPatternCard, + jsdocPatterns, + jsdocReddit, + jsdocReload, + jsdocRemove, + jsdocRestrict, + jsdocSet, + jsdocSets, + jsdocTiktok, + jsdocTwitch, + jsdocUnits, + jsdocUserId, + jsdocUsername, + jsdocUserRole, + jsdocWebsite, } from '@site/prebuild/jsdoc/components.account.mjs' import { AccountStatusExample, @@ -51,154 +68,224 @@ import { MsetCardExample, NewSetExample, NewsletterExample, + PasswordExample, + PatternExample, + PatternCardExample, + PatternsExample, + RedditExample, + ReloadExample, + RemoveExample, + RestrictExample, + SetExample, + SetsExample, + TiktokExample, + TwitchExample, + UnitsExample, + UserIdExample, + UsernameExample, + UserRoleExample, + WebsiteExample, } from './_examples.js' The **Account** component family provides the following components: -- [AccountStatus ](#accountstatus) -- [Apikeys ](#apikeys) -- [Avatar ](#avatar) -- [Bio ](#bio) -- [BookmarkButton ](#bookmarkbutton) -- [Bookmarks ](#bookmarks) -- [Compare ](#compare) -- [Consent ](#consent) -- [Control ](#control) -- [Email ](#email) +- [AccountStatus ](#accountstatus) +- [Apikeys ](#apikeys) +- [Avatar ](#avatar) +- [Bio ](#bio) +- [BookmarkButton ](#bookmarkbutton) +- [Bookmarks ](#bookmarks) +- [Compare ](#compare) +- [Consent ](#consent) +- [Control ](#control) +- [Email ](#email) - [EmailChangeConfirmation](#emailchanfirmation) -- [Export ](#export) -- [Github ](#github) -- [ImportSet ](#importset) -- [Instagram ](#instagram) -- [Links ](#links) -- [Mastodon ](#mastodon) -- [Mfa ](#mfa) -- [MsetCard ](#msetcard) -- [NewSet ](#newset) -- [Newsletter ](#newslett) -- [Password ](#password) -- [Pattern ](#pattern) -- [PatternCard ](#patterncard) -- [Patterns ](#patterns) -- [Reddit ](#reddit) -- [Reload ](#reload) -- [Remove ](#remove) -- [Restrict ](#restrict) -- [Set ](#set) -- [Sets ](#sets) -- [Tiktok ](#tiktok) -- [Twitch ](#twitch) -- [Units ](#units) -- [UserId ](#userid) -- [Username ](#username) -- [UserRole ](#userrole) -- [Website ](#website) - +- [Export ](#export) +- [Github ](#github) +- [ImportSet ](#importset) +- [Instagram ](#instagram) +- [Links ](#links) +- [Mastodon ](#mastodon) +- [Mfa ](#mfa) +- [MsetCard ](#msetcard) +- [NewSet ](#newset) +- [Newsletter ](#newslett) +- [Password ](#password) +- [Pattern ](#pattern) +- [PatternCard ](#patterncard) +- [Patterns ](#patterns) +- [Reddit ](#reddit) +- [Reload ](#reload) +- [Remove ](#remove) +- [Restrict ](#restrict) +- [Set ](#set) +- [Sets ](#sets) +- [Tiktok ](#tiktok) +- [Twitch ](#twitch) +- [Units ](#units) +- [UserId ](#userid) +- [Username ](#username) +- [UserRole ](#userrole) +- [Website ](#website) ## AccountStatus + ## Apikeys + ## Avatar + ## Bio + ## BookmarkButton + ## Bookmarks + ## Compare + ## Consent + ## Control + ## Email + ## EmailChangeConfirmation + -#### Requires a valid callback URL -This component will not work without the proper id and check URL paramters -that come from a email confirmation link sent out from the FreeSewing backend. + #### Requires a valid callback URL This component will not work without the proper id{' '} + and check URL paramters that come from a email confirmation link sent out from the + FreeSewing backend. ## Export + ## Github + ## ImportSet + ## Instagram + ## Links + ## Mastodon + ## Mfa + ## MsetCard + ## NewSet + ## Newsletter + ## Password + + ## Pattern + + ## PatternCard + + ## Patterns + + ## Reddit + + ## Reload + + ## Remove + + ## Restrict + + ## Set + + ## Sets + + ## Tiktok + + ## Twitch + + ## Units + + ## UserId + + ## Username + + ## UserRole + + ## Website - + + diff --git a/sites/dev/docs/reference/packages/react/components/admin/readme.mdx b/sites/dev/docs/reference/packages/react/components/admin/readme.mdx index 4c333d24f6d..1501ee4d0f9 100644 --- a/sites/dev/docs/reference/packages/react/components/admin/readme.mdx +++ b/sites/dev/docs/reference/packages/react/components/admin/readme.mdx @@ -2,6 +2,31 @@ title: Admin --- -:::note -This page is yet to be created -::: +import { DocusaurusDoc } from '@freesewing/react/components/Docusaurus' +import { ComponentDocs } from '@site/src/components/component-docs.js' +import { + jsdocSubscriberAdministration, + jsdocUserAdministration, +} from '@site/prebuild/jsdoc/components.admin.mjs' +import { + UserAdministration, + SubscriberAdministration +} from '@freesewing/react/components/Admin' + + + +The **Admin** component family provides the following components: + +- [SubscriberAdministration ](#subscriberadministration) +- [UserAdministration ](#useradministration) + +## SubscriberAdministration + + + +## UserAdministration + + + + + diff --git a/sites/dev/docs/reference/packages/react/components/button/_examples.js b/sites/dev/docs/reference/packages/react/components/button/_examples.js index 60572763547..a1b670443d5 100644 --- a/sites/dev/docs/reference/packages/react/components/button/_examples.js +++ b/sites/dev/docs/reference/packages/react/components/button/_examples.js @@ -6,9 +6,7 @@ import { MiniNote } from '@freesewing/react/components/Mini' export const IconButtonExample = () => ( <> - - Note that this component will take up the full width made available to it. - + Note that this component will take up the full width made available to it. {[ `import { FingerprintIcon, WarningIcon } from '@freesewing/react/components/Icon'`, @@ -36,4 +34,3 @@ export const IconButtonExample = () => ( ) - diff --git a/sites/dev/src/components/component-docs.js b/sites/dev/src/components/component-docs.js index eb7d141d48a..00512c6cdd3 100644 --- a/sites/dev/src/components/component-docs.js +++ b/sites/dev/src/components/component-docs.js @@ -6,7 +6,8 @@ import { IconButton } from '@freesewing/react/components/Button' import { MiniNote } from '@freesewing/react/components/Mini' export const ComponentDocs = ({ docs, example }) => { - const Example = example || null + if (!docs) return No docs passed in + const Example = example || null return ( <>

{docs.desc}

@@ -19,10 +20,14 @@ export const ComponentDocs = ({ docs, example }) => { {docs.importAs} - {docs.params - ?

The {docs.name} component takes the following props:

- : This component does not take any props - } + {docs.params ? ( +

+ {' '} + The {docs.name} component takes the following props: +

+ ) : ( + This component does not take any props + )} {docs.params ? : null}
@@ -68,7 +73,9 @@ const PropsTable = ({ docs }) => ( {prop.description} {prop.optional ? 'yes' : 'no'} - + + + ))}