1
0
Fork 0

[react] feat: Added docs for components/Profile

This commit is contained in:
joostdecock 2025-05-29 11:36:41 +02:00
parent 320bcf8534
commit d6cbe79dd5
4 changed files with 59 additions and 17 deletions

View file

@ -14,31 +14,36 @@ import { MiniWarning } from '@freesewing/react/components/Mini'
import { KeyVal } from '@freesewing/react/components/KeyVal'
import Markdown from 'react-markdown'
/*
* Component for the currently authenticated user's profile
/**
* A component for to display the current user's profile.
*
* @params {object} props - All React props
* @param {number} props.uid - The user ID for which to show the profile
* @param {function} props.Link - An optional framework-specific Link component
* @component
* @param {object} props - All component props
* @param {React.FC} [props.Link = false] - An optional framework-specific Link component
* @param {function} [props.setTitle = false] - An optional method to set the page title
* @returns {JSX.Element}
*/
export const OwnProfile = (props) => {
const { account } = useAccount()
return <UserProfile uid={account.id} {...props} />
return <UserProfile {...props} uid={account.id} />
}
/*
* Component for a user profile
/**
* A component for to display a user profile. Either props.uid or props.fromUrl should be set.
*
* @params {object} props - All React props
* @param {number} props.uid - The user ID for which to show the profile
* @param {function} props.Link - An optional framework-specific Link component
* @component
* @param {object} props - All component props
* @param {boolean} [props.fromUrl = false] - Set this to the nbame of the search parameters in the URL to extract the UID from
* @param {React.FC} [props.Link = false] - An optional framework-specific Link component
* @param {function} [props.setTitle = false] - An optional method to set the page title
* @param {number} [props.uid = false] - The user ID for which to show the profile
* @returns {JSX.Element}
*/
export const UserProfile = ({
Link = false,
setTitle = false,
uid = false,
noBox = false,
fromUrl = false,
}) => {
if (!uid && !fromUrl)
@ -85,10 +90,12 @@ export const UserProfile = ({
)
}
/*
* Shows an avatar image
/**
* A component to render an avatar image
*
* @component
* @param {string} ihash - The ihash of the account
* @returns {JSX.Element}
*/
export const Avatar = ({ ihash }) => {
const { setModal } = useContext(ModalContext)

View file

@ -30,3 +30,4 @@ jsdoc -c jsdoc.json components/Number/* > ../../sites/dev/prebuild/jsdoc/react/c
jsdoc -c jsdoc.json components/Patrons/* > ../../sites/dev/prebuild/jsdoc/react/components/patrons.json
jsdoc -c jsdoc.json components/Pattern/* > ../../sites/dev/prebuild/jsdoc/react/components/pattern.json
jsdoc -c jsdoc.json components/Popout/* > ../../sites/dev/prebuild/jsdoc/react/components/popout.json
jsdoc -c jsdoc.json components/Profile/* > ../../sites/dev/prebuild/jsdoc/react/components/profile.json

View file

@ -0,0 +1,7 @@
import React from 'react'
import { Avatar, OwnProfile, UserProfile } from '@freesewing/react/components/Profile'
export const AvatarExample = () => <Avatar ihash="7bf3d6a154885eb2c4f56e2bf54b3666d8fb634b72c07c971511816ed0298c79" />
export const OwnProfileExample = OwnProfile
export const UserProfileExample = () => <UserProfile uid={1} />

View file

@ -2,6 +2,33 @@
title: Profile
---
:::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 * as jsdoc from '@site/prebuild/jsdoc/components.profile.mjs'
import { AvatarExample, OwnProfileExample, UserProfileExample } from './_examples.js'
<DocusaurusDoc>
- [Components](#components)
## Components
The **Json** component family provides the following components:
- [Avatar](#avatar)
- [OwnProfile](#ownprofile)
- [UserProfile](#userprofile)
### Avatar
<ComponentDocs docs={jsdoc.jsdocAvatar} example={AvatarExample} />
### OwnProfile
<ComponentDocs docs={jsdoc.jsdocOwnProfile} example={OwnProfileExample} />
### UserProfile
<ComponentDocs docs={jsdoc.jsdocUserProfile} example={UserProfileExample} />
</DocusaurusDoc>