gui/ui/src/app/app-module.ts
Snider 0dcc42c7fb
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Failing after 1m28s
feat(ui): add app shell framework with provider discovery
Port the HLCRF application frame from lthn-desktop into core/gui/ui/ as a
reusable Angular framework. Adds:

- ApplicationFrameComponent: header, collapsible sidebar, content area, footer
- SystemTrayFrameComponent: 380x480 frameless panel with provider status cards
- ProviderDiscoveryService: fetches GET /api/v1/providers, loads custom elements
- ProviderHostComponent: renders any custom element by tag via Renderer2
- ProviderNavComponent: dynamic sidebar navigation from provider discovery
- StatusBarComponent: footer with time, version, provider count, WS status
- WebSocketService: persistent connection with auto-reconnect
- ApiConfigService: configurable API base URL
- TranslationService: key-value i18n with API fallback

Navigation is dynamic (populated from providers), sidebar shows icons-only
in collapsed mode with expand on click, dark mode supported throughout.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-14 12:41:33 +00:00

20 lines
609 B
TypeScript

// SPDX-Licence-Identifier: EUPL-1.2
import { DoBootstrap, Injector, NgModule, provideBrowserGlobalErrorListeners } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { createCustomElement } from '@angular/elements';
import { App } from './app';
@NgModule({
imports: [BrowserModule, App],
providers: [provideBrowserGlobalErrorListeners()],
})
export class AppModule implements DoBootstrap {
constructor(private injector: Injector) {
const el = createCustomElement(App, { injector });
customElements.define('core-display', el);
}
ngDoBootstrap() {}
}