+
| {{ 'Name' | i18n }} |
@@ -19,14 +19,17 @@ import { i18nPipe } from '@start9labs/shared'
@for (check of checks(); track $index) {
+ } @empty {
+
+ |
+
+ {{ 'No health checks' | i18n }}
+
+ |
+
}
- @if (!checks().length) {
-
- {{ 'No health checks' | i18n }}
-
- }
`,
styles: `
:host {
diff --git a/web/projects/ui/src/app/routes/portal/routes/services/components/interface-item.component.ts b/web/projects/ui/src/app/routes/portal/routes/services/components/interface-item.component.ts
index acde11acd..ae5c1f6ea 100644
--- a/web/projects/ui/src/app/routes/portal/routes/services/components/interface-item.component.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/services/components/interface-item.component.ts
@@ -8,9 +8,9 @@ import { TuiBadge } from '@taiga-ui/kit'
template: `
|
-
+
{{ info().type }}
-
+
|
{{ info().description }}
diff --git a/web/projects/ui/src/app/routes/portal/routes/services/components/interfaces.component.ts b/web/projects/ui/src/app/routes/portal/routes/services/components/interfaces.component.ts
index 2fe9d4ade..07a9055a6 100644
--- a/web/projects/ui/src/app/routes/portal/routes/services/components/interfaces.component.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/services/components/interfaces.component.ts
@@ -16,7 +16,7 @@ import { PlaceholderComponent } from '../../../components/placeholder.component'
selector: 'service-interfaces',
template: `
{{ 'Service Interfaces' | i18n }}
-
+
| {{ 'Name' | i18n }} |
@@ -39,9 +39,13 @@ import { PlaceholderComponent } from '../../../components/placeholder.component'
} @empty {
-
- {{ 'No service interfaces' | i18n }}
-
+
+ |
+
+ {{ 'No service interfaces' | i18n }}
+
+ |
+
}
diff --git a/web/projects/ui/src/app/routes/portal/routes/services/components/progress.component.ts b/web/projects/ui/src/app/routes/portal/routes/services/components/progress.component.ts
index 2e860ce9e..3bb7f32ea 100644
--- a/web/projects/ui/src/app/routes/portal/routes/services/components/progress.component.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/services/components/progress.component.ts
@@ -4,10 +4,10 @@ import {
inject,
Input,
} from '@angular/core'
-import { ErrorService, i18nPipe, LoadingService } from '@start9labs/shared'
+import { ErrorService, i18nPipe } from '@start9labs/shared'
import { T } from '@start9labs/start-sdk'
import { TuiButton } from '@taiga-ui/core'
-import { TuiProgress } from '@taiga-ui/kit'
+import { TuiNotificationMiddleService, TuiProgress } from '@taiga-ui/kit'
import { InstallingProgressPipe } from 'src/app/routes/portal/routes/services/pipes/install-progress.pipe'
import { ApiService } from 'src/app/services/api/embassy-api.service'
import { PackageDataEntry } from 'src/app/services/patch-db/data-model'
@@ -84,7 +84,7 @@ export class ServiceInstallProgressComponent {
private readonly api = inject(ApiService)
private readonly errorService = inject(ErrorService)
- private readonly loader = inject(LoadingService)
+ private readonly loader = inject(TuiNotificationMiddleService)
isIndeterminate(progress: T.Progress): boolean {
return (
@@ -94,7 +94,7 @@ export class ServiceInstallProgressComponent {
}
async cancel() {
- const loader = this.loader.open().subscribe()
+ const loader = this.loader.open('').subscribe()
try {
await this.api.cancelInstallPackage({ id: getManifest(this.pkg).id })
diff --git a/web/projects/ui/src/app/routes/portal/routes/services/components/status.component.ts b/web/projects/ui/src/app/routes/portal/routes/services/components/status.component.ts
index 5c1b785a5..2d7e8b5d4 100644
--- a/web/projects/ui/src/app/routes/portal/routes/services/components/status.component.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/services/components/status.component.ts
@@ -41,7 +41,7 @@ import {
}
h3 {
- font: var(--tui-font-heading-4);
+ font: var(--tui-typography-heading-h4);
font-weight: normal;
margin: 0;
text-align: center;
@@ -58,7 +58,7 @@ import {
small {
display: block;
- font: var(--tui-font-text-l);
+ font: var(--tui-typography-body-l);
color: var(--tui-text-secondary);
text-align: center;
}
diff --git a/web/projects/ui/src/app/routes/portal/routes/services/components/task.component.ts b/web/projects/ui/src/app/routes/portal/routes/services/components/task.component.ts
index 3f7b31009..e7fda0e80 100644
--- a/web/projects/ui/src/app/routes/portal/routes/services/components/task.component.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/services/components/task.component.ts
@@ -5,15 +5,10 @@ import {
inject,
input,
} from '@angular/core'
-import {
- DialogService,
- ErrorService,
- i18nPipe,
- LoadingService,
-} from '@start9labs/shared'
+import { DialogService, ErrorService, i18nPipe } from '@start9labs/shared'
import { T } from '@start9labs/start-sdk'
import { TuiButton } from '@taiga-ui/core'
-import { TuiAvatar, TuiFade } from '@taiga-ui/kit'
+import { TuiAvatar, TuiFade, TuiNotificationMiddleService } from '@taiga-ui/kit'
import { filter } from 'rxjs'
import { ServiceTasksComponent } from 'src/app/routes/portal/routes/services/components/tasks.component'
import { ActionService } from 'src/app/services/action.service'
@@ -30,9 +25,9 @@ import { getManifest } from 'src/app/utils/get-package-data'
selector: 'tr[task]',
template: `
-
+
-
+
{{ title() || fallback()?.title }}
|
@@ -131,7 +126,7 @@ export class ServiceTaskComponent {
private readonly dialog = inject(DialogService)
private readonly api = inject(ApiService)
private readonly errorService = inject(ErrorService)
- private readonly loader = inject(LoadingService)
+ private readonly loader = inject(TuiNotificationMiddleService)
private readonly tasks = inject(ServiceTasksComponent)
private readonly i18n = inject(i18nPipe)
@@ -174,7 +169,7 @@ export class ServiceTaskComponent {
.openConfirm(DISMISS)
.pipe(filter(Boolean))
.subscribe(async () => {
- const loader = this.loader.open().subscribe()
+ const loader = this.loader.open('').subscribe()
try {
await this.api.clearTask({ packageId, replayId, force: false })
} catch (e: any) {
diff --git a/web/projects/ui/src/app/routes/portal/routes/services/components/tasks.component.ts b/web/projects/ui/src/app/routes/portal/routes/services/components/tasks.component.ts
index fecf255da..4aec1d841 100644
--- a/web/projects/ui/src/app/routes/portal/routes/services/components/tasks.component.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/services/components/tasks.component.ts
@@ -14,7 +14,7 @@ import { i18nPipe } from '@start9labs/shared'
selector: 'service-tasks',
template: `
-
+
| {{ 'Service' | i18n }} |
@@ -27,14 +27,17 @@ import { i18nPipe } from '@start9labs/shared'
@for (item of tasks(); track $index) {
+ } @empty {
+
+ |
+
+ {{ 'All tasks complete' | i18n }}
+
+ |
+
}
- @if (!tasks().length) {
-
- {{ 'All tasks complete' | i18n }}
-
- }
`,
styles: `
:host {
diff --git a/web/projects/ui/src/app/routes/portal/routes/services/components/uptime.component.ts b/web/projects/ui/src/app/routes/portal/routes/services/components/uptime.component.ts
index 35a2ff618..5fb1c426d 100644
--- a/web/projects/ui/src/app/routes/portal/routes/services/components/uptime.component.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/services/components/uptime.component.ts
@@ -36,7 +36,7 @@ import { distinctUntilChanged } from 'rxjs/operators'
}
h3 {
- font: var(--tui-font-heading-4);
+ font: var(--tui-typography-heading-h4);
font-weight: normal;
margin: 0;
text-align: center;
@@ -54,7 +54,7 @@ import { distinctUntilChanged } from 'rxjs/operators'
text-align: center;
text-transform: uppercase;
color: var(--tui-text-secondary);
- font: var(--tui-font-text-ui-xs);
+ font: var(--tui-typography-ui-2xs);
font-size: min(4cqw, 0.75rem);
}
diff --git a/web/projects/ui/src/app/routes/portal/routes/services/dashboard/service.component.ts b/web/projects/ui/src/app/routes/portal/routes/services/dashboard/service.component.ts
index 10ca2c235..33e028f28 100644
--- a/web/projects/ui/src/app/routes/portal/routes/services/dashboard/service.component.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/services/dashboard/service.component.ts
@@ -35,7 +35,7 @@ import { StatusComponent } from './status.component'
`,
styles: `
- @use '@taiga-ui/core/styles/taiga-ui-local' as taiga;
+ @use '@taiga-ui/styles/utils' as taiga;
:host {
@include taiga.transition(background);
@@ -116,12 +116,12 @@ import { StatusComponent } from './status.component'
.title {
grid-area: 2 / 2;
- font: var(--tui-font-heading-6);
+ font: var(--tui-typography-heading-h6);
}
.version {
grid-area: 1 / 2;
- font: var(--tui-font-text-s);
+ font: var(--tui-typography-body-s);
}
.uptime {
diff --git a/web/projects/ui/src/app/routes/portal/routes/services/modals/action-confirm.component.ts b/web/projects/ui/src/app/routes/portal/routes/services/modals/action-confirm.component.ts
index 473e205f4..4e5313f94 100644
--- a/web/projects/ui/src/app/routes/portal/routes/services/modals/action-confirm.component.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/services/modals/action-confirm.component.ts
@@ -10,9 +10,9 @@ import { PackageActionData } from './action-input.component'
{{ pkgInfo.title }}
-
+
`,
styles: `
- @use '@taiga-ui/core/styles/taiga-ui-local' as taiga;
+ @use '@taiga-ui/styles/utils' as taiga;
tr {
@include taiga.transition(background);
@@ -160,7 +155,7 @@ const ERROR =
.name {
color: var(--tui-text-primary);
- font: var(--tui-font-text-m);
+ font: var(--tui-typography-body-m);
font-weight: bold;
grid-column: 1;
max-width: 12rem;
@@ -183,7 +178,7 @@ export class BackupNetworkComponent {
private readonly dialog = inject(DialogService)
private readonly formDialog = inject(FormDialogService)
private readonly api = inject(ApiService)
- private readonly loader = inject(LoadingService)
+ private readonly loader = inject(TuiNotificationMiddleService)
private readonly errorService = inject(ErrorService)
private readonly type = inject(ActivatedRoute).snapshot.data['type']
private readonly i18n = inject(i18nPipe)
diff --git a/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/physical.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/physical.component.ts
index 2508656ac..c2abb021e 100644
--- a/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/physical.component.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/physical.component.ts
@@ -61,7 +61,7 @@ import { BackupStatusComponent } from './status.component'
|
`,
styles: `
- @use '@taiga-ui/core/styles/taiga-ui-local' as taiga;
+ @use '@taiga-ui/styles/utils' as taiga;
tr {
@include taiga.transition(background);
@@ -98,7 +98,7 @@ import { BackupStatusComponent } from './status.component'
.name {
color: var(--tui-text-primary);
- font: var(--tui-font-text-m);
+ font: var(--tui-typography-body-m);
font-weight: bold;
grid-column: 1;
max-width: 12rem;
diff --git a/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/progress.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/progress.component.ts
index 8c26d5d72..7a597e7f6 100644
--- a/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/progress.component.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/progress.component.ts
@@ -3,9 +3,8 @@ import { ChangeDetectionStrategy, Component, inject } from '@angular/core'
import { toSignal } from '@angular/core/rxjs-interop'
import { i18nPipe } from '@start9labs/shared'
import { TuiMapperPipe } from '@taiga-ui/cdk'
-import { TuiIcon, TuiLoader, TuiTitle } from '@taiga-ui/core'
+import { TuiIcon, TuiLoader, TuiTitle, TuiCell } from '@taiga-ui/core'
import { TuiAvatar } from '@taiga-ui/kit'
-import { TuiCell } from '@taiga-ui/layout'
import { PatchDB } from 'patch-db-client'
import { take } from 'rxjs'
import { ToManifestPipe } from 'src/app/routes/portal/pipes/to-manifest'
@@ -18,9 +17,9 @@ import { DataModel } from 'src/app/services/patch-db/data-model'
@for (pkg of pkgs() | keyvalue; track $index) {
@if (backupProgress()?.[pkg.key]; as progress) {
-
+
-
+
{{ (pkg.value | toManifest).title }}
diff --git a/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/recover.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/recover.component.ts
index c98464756..0478166bd 100644
--- a/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/recover.component.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/recover.component.ts
@@ -3,16 +3,17 @@ import { ChangeDetectionStrategy, Component, inject } from '@angular/core'
import { toSignal } from '@angular/core/rxjs-interop'
import { FormsModule } from '@angular/forms'
import { Router } from '@angular/router'
-import {
- ErrorService,
- i18nKey,
- i18nPipe,
- LoadingService,
-} from '@start9labs/shared'
+import { ErrorService, i18nKey, i18nPipe } from '@start9labs/shared'
import { Version } from '@start9labs/start-sdk'
import { TuiMapperPipe } from '@taiga-ui/cdk'
-import { TuiButton, TuiDialogContext, TuiGroup, TuiTitle } from '@taiga-ui/core'
-import { TuiBlock, TuiCheckbox } from '@taiga-ui/kit'
+import {
+ TuiButton,
+ TuiCheckbox,
+ TuiDialogContext,
+ TuiGroup,
+ TuiTitle,
+} from '@taiga-ui/core'
+import { TuiBlock, TuiNotificationMiddleService } from '@taiga-ui/kit'
import { injectContext, PolymorpheusComponent } from '@taiga-ui/polymorpheus'
import { PatchDB } from 'patch-db-client'
import { map, take } from 'rxjs'
@@ -85,7 +86,7 @@ import { RecoverData, RecoverOption } from './backup.types'
export class BackupsRecoverComponent {
private readonly config = inject(ConfigService)
private readonly api = inject(ApiService)
- private readonly loader = inject(LoadingService)
+ private readonly loader = inject(TuiNotificationMiddleService)
private readonly errorService = inject(ErrorService)
private readonly router = inject(Router)
private readonly context =
diff --git a/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/restore.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/restore.component.ts
index 90f6498fb..d84099b1c 100644
--- a/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/restore.component.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/restore.component.ts
@@ -4,11 +4,10 @@ import {
DialogService,
ErrorService,
i18nPipe,
- LoadingService,
StartOSDiskInfo,
} from '@start9labs/shared'
-import { TuiTitle } from '@taiga-ui/core'
-import { TuiCell } from '@taiga-ui/layout'
+import { TuiCell, TuiTitle } from '@taiga-ui/core'
+import { TuiNotificationMiddleService } from '@taiga-ui/kit'
import { injectContext, PolymorpheusComponent } from '@taiga-ui/polymorpheus'
import { ApiService } from 'src/app/services/api/embassy-api.service'
import { verifyPassword } from 'src/app/utils/verify-password'
@@ -45,7 +44,7 @@ import { RECOVER } from './recover.component'
})
export class BackupRestoreComponent {
private readonly dialog = inject(DialogService)
- private readonly loader = inject(LoadingService)
+ private readonly loader = inject(TuiNotificationMiddleService)
private readonly api = inject(ApiService)
private readonly errorService = inject(ErrorService)
private readonly context = injectContext()
diff --git a/web/projects/ui/src/app/routes/portal/routes/system/routes/dns/dns.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/routes/dns/dns.component.ts
index 091856bb4..a1c9b9d41 100644
--- a/web/projects/ui/src/app/routes/portal/routes/system/routes/dns/dns.component.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/system/routes/dns/dns.component.ts
@@ -2,14 +2,10 @@ import { ChangeDetectionStrategy, Component, inject } from '@angular/core'
import { toSignal } from '@angular/core/rxjs-interop'
import { FormsModule, ReactiveFormsModule } from '@angular/forms'
import { RouterLink } from '@angular/router'
-import {
- DocsLinkDirective,
- ErrorService,
- i18nPipe,
- LoadingService,
-} from '@start9labs/shared'
-import { ISB, utils } from '@start9labs/start-sdk'
+import { DocsLinkDirective, ErrorService, i18nPipe } from '@start9labs/shared'
+import { ISB } from '@start9labs/start-sdk'
import { TuiButton, TuiTitle } from '@taiga-ui/core'
+import { TuiNotificationMiddleService } from '@taiga-ui/kit'
import { TuiHeader } from '@taiga-ui/layout'
import { PatchDB } from 'patch-db-client'
import { combineLatest, first, switchMap } from 'rxjs'
@@ -106,7 +102,7 @@ const ipv6 =
],
})
export default class SystemDnsComponent {
- private readonly loader = inject(LoadingService)
+ private readonly loader = inject(TuiNotificationMiddleService)
private readonly errorService = inject(ErrorService)
private readonly formService = inject(FormService)
private readonly patch = inject>(PatchDB)
diff --git a/web/projects/ui/src/app/routes/portal/routes/system/routes/gateways/gateways.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/routes/gateways/gateways.component.ts
index 1b96e5f07..241fbe298 100644
--- a/web/projects/ui/src/app/routes/portal/routes/system/routes/gateways/gateways.component.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/system/routes/gateways/gateways.component.ts
@@ -7,16 +7,16 @@ import {
} from '@angular/core'
import { FormsModule } from '@angular/forms'
import { RouterLink } from '@angular/router'
-import {
- DocsLinkDirective,
- ErrorService,
- i18nPipe,
- LoadingService,
-} from '@start9labs/shared'
+import { WA_IS_MOBILE } from '@ng-web-apis/platform'
+import { DocsLinkDirective, ErrorService, i18nPipe } from '@start9labs/shared'
import { ISB } from '@start9labs/start-sdk'
-import { TUI_IS_MOBILE } from '@taiga-ui/cdk'
-import { TuiButton, TuiTextfield, TuiTitle } from '@taiga-ui/core'
-import { TuiChevron, TuiDataListWrapper, TuiSelect } from '@taiga-ui/kit'
+import { TuiButton, TuiInput, TuiTitle } from '@taiga-ui/core'
+import {
+ TuiChevron,
+ TuiDataListWrapper,
+ TuiNotificationMiddleService,
+ TuiSelect,
+} from '@taiga-ui/kit'
import { TuiHeader } from '@taiga-ui/layout'
import { FormComponent } from 'src/app/routes/portal/components/form.component'
import { ApiService } from 'src/app/services/api/embassy-api.service'
@@ -102,11 +102,7 @@ import { GatewaysTableComponent } from './table.component'
/>
}
@if (!mobile) {
-
+
}
@if (server.kiosk === null) {
@@ -268,7 +269,7 @@ import { ServerNameDialog } from './server-name.dialog'
TuiButtonLoading,
TuiButtonSelect,
TuiDataListWrapper,
- TuiTextfield,
+ TuiInput,
FormsModule,
SnakeDirective,
TuiBadge,
@@ -278,7 +279,7 @@ import { ServerNameDialog } from './server-name.dialog'
})
export default class SystemGeneralComponent {
private readonly dialogs = inject(TuiResponsiveDialogService)
- private readonly loader = inject(LoadingService)
+ private readonly loader = inject(TuiNotificationMiddleService)
private readonly errorService = inject(ErrorService)
private readonly patch = inject>(PatchDB)
private readonly api = inject(ApiService)
diff --git a/web/projects/ui/src/app/routes/portal/routes/system/routes/general/keyboard-select.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/routes/general/keyboard-select.component.ts
index b74c99576..c2d63f1f6 100644
--- a/web/projects/ui/src/app/routes/portal/routes/system/routes/general/keyboard-select.component.ts
+++ b/web/projects/ui/src/app/routes/portal/routes/system/routes/general/keyboard-select.component.ts
@@ -1,8 +1,8 @@
+import { WA_IS_MOBILE } from '@ng-web-apis/platform'
import { Component, inject } from '@angular/core'
import { FormsModule } from '@angular/forms'
import { i18nPipe, Keyboard, KeyboardLayout } from '@start9labs/shared'
-import { TUI_IS_MOBILE } from '@taiga-ui/cdk'
-import { TuiButton, TuiDialogContext, TuiTextfield } from '@taiga-ui/core'
+import { TuiButton, TuiDialogContext, TuiInput } from '@taiga-ui/core'
import { TuiChevron, TuiDataListWrapper, TuiSelect } from '@taiga-ui/kit'
import { injectContext } from '@taiga-ui/polymorpheus'
@@ -20,7 +20,7 @@ import { injectContext } from '@taiga-ui/polymorpheus'
}
@if (!mobile) {
-
+
}
@if (network.connected) {
-
+
{{ 'Connected' | i18n }}
-
+
}
@if (network.connected === false) {
|