feat: plugins v1

This commit is contained in:
2026-04-29 01:14:14 +02:00
parent ec3802ade6
commit 6920f93b41
86 changed files with 9036 additions and 14 deletions

View File

@@ -85,6 +85,20 @@
Login
</button>
<button
type="button"
class="flex h-8 items-center gap-1.5 rounded-md px-2 text-sm text-foreground transition-colors hover:bg-secondary"
[class.hidden]="!isAuthed()"
(click)="openPluginStore()"
title="Plugin Store"
>
<ng-icon
name="lucidePackage"
class="h-4 w-4 text-muted-foreground"
/>
Plugins
</button>
<div class="relative">
<button
type="button"
@@ -131,6 +145,14 @@
{{ inviteStatus() }}
</div>
<div class="mx-2 my-1 h-px bg-border"></div>
<button
type="button"
(click)="openPluginStore()"
class="w-full rounded-md px-3 py-2 text-left text-sm text-foreground transition-colors hover:bg-secondary"
>
Plugin Store
</button>
<div class="mx-2 my-1 h-px bg-border"></div>
<button
type="button"
(click)="logout()"

View File

@@ -16,6 +16,7 @@ import {
lucideChevronLeft,
lucideHash,
lucideMenu,
lucidePackage,
lucideRefreshCw
} from '@ng-icons/lucide';
import { NavigationEnd, Router } from '@angular/router';
@@ -59,6 +60,7 @@ import { ThemeNodeDirective } from '../../../domains/theme';
lucideChevronLeft,
lucideHash,
lucideMenu,
lucidePackage,
lucideRefreshCw })
],
templateUrl: './title-bar.component.html'
@@ -179,6 +181,13 @@ export class TitleBarComponent {
this.router.navigate(['/login']);
}
openPluginStore(): void {
const returnUrl = this.router.url.startsWith('/plugin-store') ? '/search' : this.router.url;
this._showMenu.set(false);
void this.router.navigate(['/plugin-store'], { queryParams: { returnUrl } });
}
/** Open the unified leave-server confirmation dialog. */
private openLeaveConfirm() {
this._showMenu.set(false);