From ce46b0835edfeec48d5246d01eb0022719be2756 Mon Sep 17 00:00:00 2001 From: Marcel Cruz <12413903+marcelscruz@users.noreply.github.com> Date: Tue, 19 Dec 2023 13:16:02 -0300 Subject: [PATCH 1/2] fix(clerk-js): Make user name on clickable --- .changeset/happy-panthers-approve.md | 6 ++ .../ui/components/UserButton/UserButton.tsx | 59 +++++-------------- .../UserButtonTopLevelIdentifier.tsx | 24 ++++++++ .../UserButton/UserButtonTrigger.tsx | 27 ++++++--- 4 files changed, 65 insertions(+), 51 deletions(-) create mode 100644 .changeset/happy-panthers-approve.md create mode 100644 packages/clerk-js/src/ui/components/UserButton/UserButtonTopLevelIdentifier.tsx diff --git a/.changeset/happy-panthers-approve.md b/.changeset/happy-panthers-approve.md new file mode 100644 index 00000000000..8f30c7fe15e --- /dev/null +++ b/.changeset/happy-panthers-approve.md @@ -0,0 +1,6 @@ +--- +'@clerk/clerk-js': major +--- + +Make the user name on clickable, i.e. part of the button's trigger. +This change inverts the positions of `cl-userButtonTrigger` and `cl-userButtonBox`, the latter now being a child of the former. diff --git a/packages/clerk-js/src/ui/components/UserButton/UserButton.tsx b/packages/clerk-js/src/ui/components/UserButton/UserButton.tsx index 6115e3bb7bb..55820f5c7eb 100644 --- a/packages/clerk-js/src/ui/components/UserButton/UserButton.tsx +++ b/packages/clerk-js/src/ui/components/UserButton/UserButton.tsx @@ -1,9 +1,7 @@ -import { useUser } from '@clerk/shared/react'; import { useId } from 'react'; -import { getFullName, getIdentifier } from '../../../utils/user'; import { useUserButtonContext, withCoreUserGuard } from '../../contexts'; -import { descriptors, Flex, Flow, Text } from '../../customizables'; +import { Flow } from '../../customizables'; import { Popover, withCardStateProvider, withFloatingTree } from '../../elements'; import { usePopover } from '../../hooks'; import { UserButtonPopover } from './UserButtonPopover'; @@ -21,51 +19,26 @@ const _UserButton = withFloatingTree(() => { return ( - + - - - - - - + ); }); -const UserButtonTopLevelIdentifier = () => { - const { user } = useUser(); - - const { showName } = useUserButtonContext(); - if (!user) { - return null; - } - return showName ? ( - - {getFullName(user) || getIdentifier(user)} - - ) : null; -}; - export const UserButton = withCoreUserGuard(withCardStateProvider(_UserButton)); diff --git a/packages/clerk-js/src/ui/components/UserButton/UserButtonTopLevelIdentifier.tsx b/packages/clerk-js/src/ui/components/UserButton/UserButtonTopLevelIdentifier.tsx new file mode 100644 index 00000000000..b82635d578a --- /dev/null +++ b/packages/clerk-js/src/ui/components/UserButton/UserButtonTopLevelIdentifier.tsx @@ -0,0 +1,24 @@ +import { useUser } from '@clerk/shared/react'; + +import { getFullName, getIdentifier } from '../../../utils/user'; +import { descriptors, Text } from '../../customizables'; + +type UserButtonTopLevelIdentifierProps = { + showName: boolean | undefined; +}; + +export const UserButtonTopLevelIdentifier = ({ showName }: UserButtonTopLevelIdentifierProps) => { + const { user } = useUser(); + + if (!user || !showName) { + return null; + } + return ( + + {getFullName(user) || getIdentifier(user)} + + ); +}; diff --git a/packages/clerk-js/src/ui/components/UserButton/UserButtonTrigger.tsx b/packages/clerk-js/src/ui/components/UserButton/UserButtonTrigger.tsx index e16b3807069..58222601679 100644 --- a/packages/clerk-js/src/ui/components/UserButton/UserButtonTrigger.tsx +++ b/packages/clerk-js/src/ui/components/UserButton/UserButtonTrigger.tsx @@ -1,9 +1,11 @@ import { useUser } from '@clerk/shared/react'; import { forwardRef } from 'react'; -import { Button, descriptors } from '../../customizables'; +import { useUserButtonContext } from '../../contexts'; +import { Button, descriptors, Flex } from '../../customizables'; import { UserAvatar, withAvatarShimmer } from '../../elements'; import type { PropsOfComponent } from '../../styledSystem'; +import { UserButtonTopLevelIdentifier } from './UserButtonTopLevelIdentifier'; type UserButtonTriggerProps = PropsOfComponent & { isOpen: boolean; @@ -13,24 +15,33 @@ export const UserButtonTrigger = withAvatarShimmer( forwardRef((props, ref) => { const { sx, ...rest } = props; const { user } = useUser(); + const { showName } = useUserButtonContext(); return ( ); }), From 692b2a0fe6312de0ec6378332f83d876855f52c4 Mon Sep 17 00:00:00 2001 From: Stefanos Anagnostou Date: Tue, 19 Dec 2023 19:58:35 +0200 Subject: [PATCH 2/2] fix(clerk-js): Use smaller radius for UserButton button with name --- .../clerk-js/src/ui/components/UserButton/UserButtonTrigger.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/clerk-js/src/ui/components/UserButton/UserButtonTrigger.tsx b/packages/clerk-js/src/ui/components/UserButton/UserButtonTrigger.tsx index 58222601679..3576d975935 100644 --- a/packages/clerk-js/src/ui/components/UserButton/UserButtonTrigger.tsx +++ b/packages/clerk-js/src/ui/components/UserButton/UserButtonTrigger.tsx @@ -21,7 +21,7 @@ export const UserButtonTrigger = withAvatarShimmer(