diff --git a/frontend/src/lib/components/meltComponents/MenuItem.svelte b/frontend/src/lib/components/meltComponents/MenuItem.svelte new file mode 100644 index 0000000000..4eeae6e6ae --- /dev/null +++ b/frontend/src/lib/components/meltComponents/MenuItem.svelte @@ -0,0 +1,26 @@ + + +{#if href} + + + +{:else} + + + +{/if} diff --git a/frontend/src/lib/components/meltComponents/index.ts b/frontend/src/lib/components/meltComponents/index.ts index d8468e69d0..f38c7aeb3a 100644 --- a/frontend/src/lib/components/meltComponents/index.ts +++ b/frontend/src/lib/components/meltComponents/index.ts @@ -1,3 +1,4 @@ export { default as Menu } from './Menu.svelte' export { default as Menubar } from './Menubar.svelte' export { default as MenuSingleItem } from './MenuSingleItem.svelte' +export { default as MenuItem } from './MenuItem.svelte' diff --git a/frontend/src/lib/components/sidebar/SidebarContent.svelte b/frontend/src/lib/components/sidebar/SidebarContent.svelte index 2496506c7c..4b43652a99 100644 --- a/frontend/src/lib/components/sidebar/SidebarContent.svelte +++ b/frontend/src/lib/components/sidebar/SidebarContent.svelte @@ -50,7 +50,7 @@ import SideBarNotification from './SideBarNotification.svelte' import KafkaIcon from '../icons/KafkaIcon.svelte' import NatsIcon from '../icons/NatsIcon.svelte' - import { Menubar, Menu, MenuSingleItem } from '$lib/components/meltComponents' + import { Menubar, Menu, MenuSingleItem, MenuItem } from '$lib/components/meltComponents' import { melt } from '@melt-ui/svelte' import MenuButtonMelt from './MenuButtonMelt.svelte' import MenuLinkMelt from './MenuLinkMelt.svelte' @@ -301,6 +301,10 @@ } return count } + + const itemClass = twMerge( + 'text-secondary font-normal w-full block px-4 py-2 text-2xs data-[highlighted]:bg-surface-hover data-[highlighted]:text-primary' + ) {#each extraTriggerLinks as subItem (subItem.href ?? subItem.label)} - - - - - {#if subItem.icon} - - {/if} - {subItem.label} - - + + + {#if subItem.icon} + + {/if} + {subItem.label} - + {/each} {/if} @@ -372,8 +369,9 @@ - + + {#each secondaryMenuLinks as menuLink (menuLink.href ?? menuLink.label)} {#if menuLink.subItems} {@const notificationsCount = computeAllNotificationsCount(menuLink.subItems)} @@ -387,82 +385,51 @@ {trigger} /> - - {#each menuLink.subItems as subItem (subItem.href ?? subItem.label)} - - {#if subItem?.['action']} - - - {#if subItem.icon} - - {/if} - {subItem.label} - {#if subItem?.['notificationCount']} - - - - {/if} - - - {:else} - - - {#if subItem.icon} - - {/if} - - {subItem.label} - - {#if subItem?.['notificationCount']} - - - - {/if} - - + {#each menuLink.subItems as subItem (subItem.href ?? subItem.label)} + { + subItem?.['action']?.() + }} + > + + {#if subItem.icon} + + {/if} + {subItem.label} + {#if subItem?.['notificationCount']} + + + {/if} - {/each} - + + {/each} {:else} - - - - - - - - - - + + + + + + + + {/if} {/each} - + {#each thirdMenuLinks as menuLink (menuLink)} {#if menuLink.subItems} @@ -487,46 +454,25 @@ {#each menuLink.subItems as subItem (subItem.href ?? subItem.label)} - - - - {#if subItem.icon} - - {/if} + + + {#if subItem.icon} + + {/if} - {subItem.label} - - - + {subItem.label} + + {/each} {#if recentChangelogs.length > 0} Latest changelogs {#each recentChangelogs as changelog} - - - - {changelog.label} - - - + + + {changelog.label} + + {/each} {/if} diff --git a/frontend/src/lib/components/sidebar/UserMenu.svelte b/frontend/src/lib/components/sidebar/UserMenu.svelte index 326ddf8641..fbce578a9e 100644 --- a/frontend/src/lib/components/sidebar/UserMenu.svelte +++ b/frontend/src/lib/components/sidebar/UserMenu.svelte @@ -14,13 +14,19 @@ import { Crown, HardHat, LogOut, Moon, Settings, Sun, User } from 'lucide-svelte' import DarkModeObserver from '../DarkModeObserver.svelte' import MenuButtonMelt from './MenuButtonMelt.svelte' + import { Menu, MenuItem } from '$lib/components/meltComponents' - import { melt } from '@melt-ui/svelte' - import { Menu } from '$lib/components/meltComponents' let darkMode: boolean = false + export let isCollapsed: boolean = false export let lightMode: boolean = false export let createMenu: (any) => any + + const itemClass = twMerge( + 'text-secondary text-left font-normal text-xs ', + 'flex flex-row items-center gap-2 px-4 py-3 w-full', + 'data-[highlighted]:bg-surface-hover data-[highlighted]:text-primary' + ) @@ -34,130 +40,104 @@ {trigger} /> - - - - {$userStore?.email} - - - {#if $userStore?.is_admin} - Admin of this workspace - {:else if $userStore?.operator} - Operator in this workspace - {/if} - - - - - - Account settings - - + + + {$userStore?.email} + + + {#if $userStore?.is_admin} + Admin of this workspace + {:else if $userStore?.operator} + Operator in this workspace + {/if} + + + + + + Account settings + - - { - if (!document.documentElement.classList.contains('dark')) { - document.documentElement.classList.add('dark') - window.localStorage.setItem('dark-mode', 'dark') - } else { - document.documentElement.classList.remove('dark') - window.localStorage.setItem('dark-mode', 'light') - } - }} - class={twMerge( - 'text-secondary block text-left px-4 py-2 font-normal text-sm w-full', - 'flex flex-row items-center gap-2', - 'data-[highlighted]:bg-surface-hover data-[highlighted]:text-primary' - )} - role="menuitem" - tabindex="-1" - use:melt={item} - > - {#if darkMode} - - {:else} - - {/if} - Switch theme - - + { + if (!document.documentElement.classList.contains('dark')) { + document.documentElement.classList.add('dark') + window.localStorage.setItem('dark-mode', 'dark') + } else { + document.documentElement.classList.remove('dark') + window.localStorage.setItem('dark-mode', 'light') + } + }} + class={itemClass} + {item} + > + {#if darkMode} + + {:else} + + {/if} + Switch theme + - - logout()} - class={twMerge( - 'flex flex-row gap-2 items-center px-4 py-2 w-full', - 'text-secondary text-sm', - 'data-[highlighted]:bg-surface-hover data-[highlighted]:text-primary' - )} - use:melt={item} - > - - Sign out - - + logout()} + class={twMerge(itemClass, 'text-primary font-semibold')} + {item} + > + + Sign out + + - {#if isCloudHosted()} + {#if isCloudHosted() || true} + {#if !$isPremiumStore} - - {$usageStore}/1000 user execs - - + {$usageStore}/1000 user execs + + + - {#if $workspaceStore != 'demo'} - {$workspaceUsageStore}/1000 free workspace execs - + + {#if $workspaceStore != 'demo'} + {$workspaceUsageStore}/1000 free workspace execs + + - {/if} - {#if $userStore?.is_admin} - { - goto('/workspace_settings?tab=premium') - }} - > - Upgrade - - {/if} - - {:else} - - + {/if} + {#if $userStore?.is_admin || true} + { goto('/workspace_settings?tab=premium') }} + {item} > - Premium plan - - + Upgrade + + {/if} + {:else} + { + goto('/workspace_settings?tab=premium') + }} + {item} + > + Premium plan + {/if} - {/if} - + + {/if}
- {$userStore?.email} -
+ {$userStore?.email} +