diff --git a/frontend/src/lib/components/meltComponents/Menu.svelte b/frontend/src/lib/components/meltComponents/Menu.svelte new file mode 100644 index 0000000000..be1a41e6b9 --- /dev/null +++ b/frontend/src/lib/components/meltComponents/Menu.svelte @@ -0,0 +1,58 @@ + + +
+ + + + + +
+
+
+ +
+
+
+
+
diff --git a/frontend/src/lib/components/meltComponents/MenuSingleItem.svelte b/frontend/src/lib/components/meltComponents/MenuSingleItem.svelte new file mode 100644 index 0000000000..8c87617fd6 --- /dev/null +++ b/frontend/src/lib/components/meltComponents/MenuSingleItem.svelte @@ -0,0 +1,18 @@ + + +
+ +
+ +
+
diff --git a/frontend/src/lib/components/meltComponents/Menubar.svelte b/frontend/src/lib/components/meltComponents/Menubar.svelte new file mode 100644 index 0000000000..c1f4f5828a --- /dev/null +++ b/frontend/src/lib/components/meltComponents/Menubar.svelte @@ -0,0 +1,12 @@ + + +
+ +
diff --git a/frontend/src/lib/components/sidebar/MenuButtonMelt.svelte b/frontend/src/lib/components/sidebar/MenuButtonMelt.svelte new file mode 100644 index 0000000000..792cbc6f69 --- /dev/null +++ b/frontend/src/lib/components/sidebar/MenuButtonMelt.svelte @@ -0,0 +1,94 @@ + + +{#if !disabled} + + + + {#if label} + {label} + {/if} + + +{/if} diff --git a/frontend/src/lib/components/sidebar/MenuLinkMelt.svelte b/frontend/src/lib/components/sidebar/MenuLinkMelt.svelte new file mode 100644 index 0000000000..54a1800496 --- /dev/null +++ b/frontend/src/lib/components/sidebar/MenuLinkMelt.svelte @@ -0,0 +1,86 @@ + + +{#if !disabled} + + + {#if icon} + + {/if} + + {#if !isCollapsed} + + {label} + + {/if} + + + {label} + + +{/if} diff --git a/frontend/src/lib/components/sidebar/SidebarContent.svelte b/frontend/src/lib/components/sidebar/SidebarContent.svelte index cf82e1aaee..06ebfa7d2d 100644 --- a/frontend/src/lib/components/sidebar/SidebarContent.svelte +++ b/frontend/src/lib/components/sidebar/SidebarContent.svelte @@ -35,9 +35,6 @@ AlertCircle, Database } from 'lucide-svelte' - import Menu from '../common/menu/MenuV2.svelte' - import MenuButton from './MenuButton.svelte' - import { MenuItem } from '@rgossiaux/svelte-headlessui' import UserMenu from './UserMenu.svelte' import DiscordIcon from '../icons/brands/Discord.svelte' import { WorkspaceService } from '$lib/gen' @@ -53,7 +50,12 @@ import SideBarNotification from './SideBarNotification.svelte' import KafkaIcon from '../icons/KafkaIcon.svelte' import NatsIcon from '../icons/NatsIcon.svelte' - + import Menubar from '../meltComponents/Menubar.svelte' + import Menu from '../meltComponents/Menu.svelte' + import { melt } from '@melt-ui/svelte' + import MenuButtonMelt from './MenuButtonMelt.svelte' + import MenuSingleItem from '../meltComponents/MenuSingleItem.svelte' + import MenuLinkMelt from './MenuLinkMelt.svelte' export let numUnacknowledgedCriticalAlerts = 0 $: mainMenuLinks = [ @@ -321,141 +323,182 @@ class:opacity-0={isCollapsed}>Triggers
- {#each triggerMenuLinks as menuLink (menuLink.href ?? menuLink.label)} - - {/each} - {#if extraTriggerLinks.length > 0 && !$userStore?.operator} - -
- -
- {#each extraTriggerLinks as subItem (subItem.href ?? subItem.label)} - -
- -
- {#if subItem.icon} - - {/if} - {subItem.label} -
-
+ + {#each triggerMenuLinks as menuLink (menuLink.href ?? menuLink.label)} + + {/each} + {#if extraTriggerLinks.length > 0 && !$userStore?.operator} + + +
+
- - {/each} -
- {/if} + + {#each extraTriggerLinks as subItem (subItem.href ?? subItem.label)} + + {/each} +
+ {/if} +
- - {#each secondaryMenuLinks as menuLink (menuLink.href ?? menuLink.label)} - {#if menuLink.subItems} - {@const notificationsCount = computeAllNotificationsCount(menuLink.subItems)} - -
- + + + {#each secondaryMenuLinks as menuLink (menuLink.href ?? menuLink.label)} + {#if menuLink.subItems} + {@const notificationsCount = computeAllNotificationsCount(menuLink.subItems)} + + + + +
+ {#each menuLink.subItems as subItem (subItem.href ?? subItem.label)} +
+ {#if subItem?.['action']} + + {:else} + +
+ {#if subItem.icon} + + {/if} + + {subItem.label} + + {#if subItem?.['notificationCount']} +
+ +
+ {/if} +
+
+ {/if} +
+ {/each} +
+
+ {:else} +
+ + +
+ +
+
+ +
- {#each menuLink.subItems as subItem (subItem.href ?? subItem.label)} - -
- {#if subItem?.['action']} - - {:else} - -
- {#if subItem.icon} - - {/if} - - {subItem.label} - - {#if subItem?.['notificationCount']} -
- -
- {/if} -
-
- {/if} -
-
- {/each} -
- {:else} - - {/if} - {/each} + {/if} + {/each} +
- {#each thirdMenuLinks as menuLink (menuLink)} - {#if menuLink.subItems} - -
- - -
{ - if (menuLink.label === 'Help') { - openChangelogs() - } - }} - > - - {#if menuLink.label === 'Help' && hasNewChangelogs} - - - - - {/if} -
-
- {#each menuLink.subItems as subItem (subItem.href ?? subItem.label)} - + + {#each thirdMenuLinks as menuLink (menuLink)} + {#if menuLink.subItems} + + + + + {#each menuLink.subItems as subItem (subItem.href ?? subItem.label)} - - {/each} - {#if recentChangelogs.length > 0} -
- Latest changelogs - {#each recentChangelogs as changelog} - + {/each} + {#if recentChangelogs.length > 0} +
+ Latest changelogs + {#each recentChangelogs as changelog} - - {/each} - {/if} -
- {/if} - {/each} + {/each} + {/if} +
+ {/if} + {/each} +
diff --git a/frontend/src/lib/components/sidebar/UserMenu.svelte b/frontend/src/lib/components/sidebar/UserMenu.svelte index 87f39a590a..f160696fc0 100644 --- a/frontend/src/lib/components/sidebar/UserMenu.svelte +++ b/frontend/src/lib/components/sidebar/UserMenu.svelte @@ -8,30 +8,32 @@ isPremiumStore, workspaceStore } from '$lib/stores' - import Menu from '../common/menu/MenuV2.svelte' import { USER_SETTINGS_HASH } from './settings' import { isCloudHosted } from '$lib/cloud' import { twMerge } from 'tailwind-merge' import { Crown, HardHat, LogOut, Moon, Settings, Sun, User } from 'lucide-svelte' import DarkModeObserver from '../DarkModeObserver.svelte' - import MenuButton from './MenuButton.svelte' - import { MenuItem } from '@rgossiaux/svelte-headlessui' + import MenuButtonMelt from './MenuButtonMelt.svelte' + import { melt } from '@melt-ui/svelte' + import Menu from '$lib/components/meltComponents/Menu.svelte' let darkMode: boolean = false export let isCollapsed: boolean = false export let lightMode: boolean = false + export let createMenu: (any) => any - -
- + + -
+

@@ -47,17 +49,18 @@

- Account settings - +
@@ -72,11 +75,13 @@ } }} class={twMerge( - 'text-secondary block text-left px-4 py-2 font-normal text-sm hover:bg-surface-hover hover:text-primary w-full', - 'flex flex-row items-center gap-2' + '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} @@ -88,18 +93,18 @@
- logout()} class={twMerge( - 'flex flex-row gap-2 items-center px-4 py-2 ', + 'flex flex-row gap-2 items-center px-4 py-2 w-full', 'text-secondary text-sm', - 'hover:bg-surface-hover hover:text-primary cursor-pointer' + 'data-[highlighted]:bg-surface-hover data-[highlighted]:text-primary' )} + use:melt={item} > Sign out - +
{#if isCloudHosted()}