From 9ca6419f6f3c6a83abcf54384425e0bf4d2cecd6 Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Thu, 15 Aug 2024 12:57:22 -0700 Subject: [PATCH 01/22] feat(astro): Add custom menu items --- packages/astro/src/astro-components/index.ts | 3 +- .../UserButton/MenuItemRenderer.astro | 51 +++++++++++++++++++ .../interactive/UserButton/UserButton.astro | 10 ++++ .../UserButton/UserButtonAction.astro | 14 +++++ .../UserButton/UserButtonLink.astro | 14 +++++ .../UserButton/UserButtonMenuItems.astro | 1 + .../interactive/UserButton/index.ts | 10 ++++ 7 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 packages/astro/src/astro-components/interactive/UserButton/MenuItemRenderer.astro create mode 100644 packages/astro/src/astro-components/interactive/UserButton/UserButton.astro create mode 100644 packages/astro/src/astro-components/interactive/UserButton/UserButtonAction.astro create mode 100644 packages/astro/src/astro-components/interactive/UserButton/UserButtonLink.astro create mode 100644 packages/astro/src/astro-components/interactive/UserButton/UserButtonMenuItems.astro create mode 100644 packages/astro/src/astro-components/interactive/UserButton/index.ts diff --git a/packages/astro/src/astro-components/index.ts b/packages/astro/src/astro-components/index.ts index f9714851fbd..dbcead6bcf0 100644 --- a/packages/astro/src/astro-components/index.ts +++ b/packages/astro/src/astro-components/index.ts @@ -18,7 +18,8 @@ export { default as SignOutButton } from './unstyled/SignOutButton.astro'; */ export { default as SignIn } from './interactive/SignIn.astro'; export { default as SignUp } from './interactive/SignUp.astro'; -export { default as UserButton } from './interactive/UserButton.astro'; +// export { default as UserButton } from './interactive/UserButton.astro'; +export { UserButton } from './interactive/UserButton'; export { default as UserProfile } from './interactive/UserProfile.astro'; export { default as OrganizationProfile } from './interactive/OrganizationProfile.astro'; export { default as OrganizationSwitcher } from './interactive/OrganizationSwitcher.astro'; diff --git a/packages/astro/src/astro-components/interactive/UserButton/MenuItemRenderer.astro b/packages/astro/src/astro-components/interactive/UserButton/MenuItemRenderer.astro new file mode 100644 index 00000000000..41720b81540 --- /dev/null +++ b/packages/astro/src/astro-components/interactive/UserButton/MenuItemRenderer.astro @@ -0,0 +1,51 @@ +--- +interface Props { + label: string + href?: string + action?: string +} + +const { label, href, action } = Astro.props + +let labelIcon = ''; + +if (Astro.slots.has('label-icon')) { + labelIcon = await Astro.slots.render('label-icon'); +} +--- + + diff --git a/packages/astro/src/astro-components/interactive/UserButton/UserButton.astro b/packages/astro/src/astro-components/interactive/UserButton/UserButton.astro new file mode 100644 index 00000000000..4ad95743a38 --- /dev/null +++ b/packages/astro/src/astro-components/interactive/UserButton/UserButton.astro @@ -0,0 +1,10 @@ +--- +import type { UserButtonProps } from "@clerk/types"; +type Props = UserButtonProps + +import InternalUIComponentRenderer from '../InternalUIComponentRenderer.astro' +--- + + + + diff --git a/packages/astro/src/astro-components/interactive/UserButton/UserButtonAction.astro b/packages/astro/src/astro-components/interactive/UserButton/UserButtonAction.astro new file mode 100644 index 00000000000..e6c3f9d292a --- /dev/null +++ b/packages/astro/src/astro-components/interactive/UserButton/UserButtonAction.astro @@ -0,0 +1,14 @@ +--- +import MenuItemRenderer from './MenuItemRenderer.astro'; + +interface Props { + label: string + action: string +} + +const { label, action } = Astro.props +--- + + + + diff --git a/packages/astro/src/astro-components/interactive/UserButton/UserButtonLink.astro b/packages/astro/src/astro-components/interactive/UserButton/UserButtonLink.astro new file mode 100644 index 00000000000..2b113d7e78c --- /dev/null +++ b/packages/astro/src/astro-components/interactive/UserButton/UserButtonLink.astro @@ -0,0 +1,14 @@ +--- +import MenuItemRenderer from './MenuItemRenderer.astro'; + +interface Props { + label: string + href: string +} + +const { label, href } = Astro.props +--- + + + + diff --git a/packages/astro/src/astro-components/interactive/UserButton/UserButtonMenuItems.astro b/packages/astro/src/astro-components/interactive/UserButton/UserButtonMenuItems.astro new file mode 100644 index 00000000000..4fa864ce7aa --- /dev/null +++ b/packages/astro/src/astro-components/interactive/UserButton/UserButtonMenuItems.astro @@ -0,0 +1 @@ + diff --git a/packages/astro/src/astro-components/interactive/UserButton/index.ts b/packages/astro/src/astro-components/interactive/UserButton/index.ts new file mode 100644 index 00000000000..bf217872259 --- /dev/null +++ b/packages/astro/src/astro-components/interactive/UserButton/index.ts @@ -0,0 +1,10 @@ +import UserButtonMain from './UserButton.astro' +import UserButtonLink from './UserButtonLink.astro' +import UserButtonAction from './UserButtonAction.astro' +import UserButtonMenuItems from './UserButtonMenuItems.astro' + +export const UserButton = Object.assign(UserButtonMain, { + MenuItems: UserButtonMenuItems, + Link: UserButtonLink, + Action: UserButtonAction, +}) From 5b0ec29ff9cffc6a88291ff515e2efcbf0654405 Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Thu, 15 Aug 2024 13:29:31 -0700 Subject: [PATCH 02/22] chore(astro): Add custom user profile page --- .../UserButtonUserProfilePage.astro | 54 +++++++++++++++++++ .../interactive/UserButton/index.ts | 2 + 2 files changed, 56 insertions(+) create mode 100644 packages/astro/src/astro-components/interactive/UserButton/UserButtonUserProfilePage.astro diff --git a/packages/astro/src/astro-components/interactive/UserButton/UserButtonUserProfilePage.astro b/packages/astro/src/astro-components/interactive/UserButton/UserButtonUserProfilePage.astro new file mode 100644 index 00000000000..eb512192d0e --- /dev/null +++ b/packages/astro/src/astro-components/interactive/UserButton/UserButtonUserProfilePage.astro @@ -0,0 +1,54 @@ +--- +interface Props { + url: string + label: string +} + +const { url, label } = Astro.props + +let labelIcon = ''; +let content = '' + +if (Astro.slots.has('label-icon')) { + labelIcon = await Astro.slots.render('label-icon'); +} + +if (Astro.slots.has('default')) { + content = await Astro.slots.render('default'); +} +--- + + diff --git a/packages/astro/src/astro-components/interactive/UserButton/index.ts b/packages/astro/src/astro-components/interactive/UserButton/index.ts index bf217872259..21623e922b5 100644 --- a/packages/astro/src/astro-components/interactive/UserButton/index.ts +++ b/packages/astro/src/astro-components/interactive/UserButton/index.ts @@ -2,9 +2,11 @@ import UserButtonMain from './UserButton.astro' import UserButtonLink from './UserButtonLink.astro' import UserButtonAction from './UserButtonAction.astro' import UserButtonMenuItems from './UserButtonMenuItems.astro' +import UserButtonUserProfilePage from './UserButtonUserProfilePage.astro' export const UserButton = Object.assign(UserButtonMain, { MenuItems: UserButtonMenuItems, Link: UserButtonLink, Action: UserButtonAction, + UserProfilePage: UserButtonUserProfilePage, }) From c184539f36e4bb227a4be36b8535c31f776e0d16 Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Thu, 15 Aug 2024 15:05:13 -0700 Subject: [PATCH 03/22] chore(astro): Replace action prop with open --- .../UserButton/MenuItemRenderer.astro | 16 +++++++--------- .../UserButton/UserButtonAction.astro | 6 +++--- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/packages/astro/src/astro-components/interactive/UserButton/MenuItemRenderer.astro b/packages/astro/src/astro-components/interactive/UserButton/MenuItemRenderer.astro index 41720b81540..46a7f048b87 100644 --- a/packages/astro/src/astro-components/interactive/UserButton/MenuItemRenderer.astro +++ b/packages/astro/src/astro-components/interactive/UserButton/MenuItemRenderer.astro @@ -1,11 +1,9 @@ --- -interface Props { - label: string - href?: string - action?: string -} +import type { CustomMenuItem } from '@clerk/types' + +type Props = Pick -const { label, href, action } = Astro.props +const { label, href, open } = Astro.props let labelIcon = ''; @@ -14,7 +12,7 @@ if (Astro.slots.has('label-icon')) { } --- - diff --git a/packages/astro/src/astro-components/interactive/UserButton/index.ts b/packages/astro/src/astro-components/interactive/UserButton/index.ts index 7821ecbedab..10f83b9f0e9 100644 --- a/packages/astro/src/astro-components/interactive/UserButton/index.ts +++ b/packages/astro/src/astro-components/interactive/UserButton/index.ts @@ -1,10 +1,10 @@ -import UserButtonMain from './UserButton.astro'; +import _UserButton from './UserButton.astro'; import UserButtonLink from './UserButtonLink.astro'; import UserButtonAction from './UserButtonAction.astro'; import UserButtonMenuItems from './UserButtonMenuItems.astro'; import UserButtonUserProfilePage from './UserButtonUserProfilePage.astro'; -export const UserButton = Object.assign(UserButtonMain, { +export const UserButton = Object.assign(_UserButton, { MenuItems: UserButtonMenuItems, Link: UserButtonLink, Action: UserButtonAction, From cc63e131bf2d07261ff412eef4be73a05044fdb0 Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Thu, 15 Aug 2024 22:00:43 -0700 Subject: [PATCH 12/22] chore(astro): Add more description to parent wrappers --- packages/astro/.eslintrc.cjs | 2 +- .../interactive/UserButton/UserButtonMenuItems.astro | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/astro/.eslintrc.cjs b/packages/astro/.eslintrc.cjs index 0dff74e748b..7288f46d3b7 100644 --- a/packages/astro/.eslintrc.cjs +++ b/packages/astro/.eslintrc.cjs @@ -4,7 +4,7 @@ module.exports = { rules: { 'import/no-unresolved': ['error', { ignore: ['^#'] }], }, - ignorePatterns: ['src/astro-components/index.ts'], + ignorePatterns: ['src/astro-components/index.ts', 'src/astro-components/interactive/UserButton/index.ts'], overrides: [ { files: ['./env.d.ts'], diff --git a/packages/astro/src/astro-components/interactive/UserButton/UserButtonMenuItems.astro b/packages/astro/src/astro-components/interactive/UserButton/UserButtonMenuItems.astro index c8d78d3bc48..36be430ba09 100644 --- a/packages/astro/src/astro-components/interactive/UserButton/UserButtonMenuItems.astro +++ b/packages/astro/src/astro-components/interactive/UserButton/UserButtonMenuItems.astro @@ -3,6 +3,11 @@ diff --git a/packages/astro/src/astro-components/interactive/UserButton/UserButtonUserProfilePage.astro b/packages/astro/src/astro-components/interactive/UserButton/UserButtonUserProfilePage.astro index 462fe80a3d2..81284108b3c 100644 --- a/packages/astro/src/astro-components/interactive/UserButton/UserButtonUserProfilePage.astro +++ b/packages/astro/src/astro-components/interactive/UserButton/UserButtonUserProfilePage.astro @@ -2,9 +2,10 @@ interface Props { url: string label: string + parent?: string } -const { url, label } = Astro.props +const { url, label, parent } = Astro.props let labelIcon = ''; let content = '' @@ -18,11 +19,16 @@ if (Astro.slots.has('default')) { } --- - From 57313e1468f592fe84b3d06eeee822635fc8a5f1 Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Fri, 16 Aug 2024 14:56:42 -0700 Subject: [PATCH 20/22] chore(astro): Remove unused prop type --- .../interactive/UserButton/UserButtonAction.astro | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/astro/src/astro-components/interactive/UserButton/UserButtonAction.astro b/packages/astro/src/astro-components/interactive/UserButton/UserButtonAction.astro index 1b26fae75a0..d95566d3038 100644 --- a/packages/astro/src/astro-components/interactive/UserButton/UserButtonAction.astro +++ b/packages/astro/src/astro-components/interactive/UserButton/UserButtonAction.astro @@ -9,7 +9,6 @@ type Props