mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-04-02 05:23:14 +00:00
* import marketplac preview for sideload * fix: improve state service (#2977) * fix: fix sideload DI * fix: update Angular * fix: cleanup * fix: fix version selection * Bump node version to fix build for Angular * misc fixes - update node to v22 - fix chroot-and-upgrade access to prune-images - don't self-migrate legacy packages - #2985 - move dataVersion to volume folder - remove "instructions.md" from s9pk - add "docsUrl" to manifest * version bump * include flavor when clicking view listing from updates tab * closes #2980 * fix: fix select button * bring back ssh keys * fix: drop 'portal' from all routes * fix: implement longtap action to select table rows * fix description for ssh page * replace instructions with docsLink and refactor marketplace preview * delete unused translations * fix patchdb diffing algorithm * continue refactor of marketplace lib show components * Booting StartOS instead of Setting up your server on init * misc fixes - closes #2990 - closes #2987 * fix build * docsUrl and clickable service headers * don't cleanup after update until new service install succeeds * update types * misc fixes * beta.35 * sdkversion, githash for sideload, correct logs for init, startos pubkey display * bring back reboot button on install * misc fixes * beta.36 * better handling of setup and init for websocket errors * reopen init and setup logs even on graceful closure * better logging, misc fixes * fix build * dont let package stats hang * dont show docsurl in marketplace if no docsurl * re-add needs-config * show error if init fails, shorten hover state on header icons * fix operator precedemce --------- Co-authored-by: Matt Hill <mattnine@protonmail.com> Co-authored-by: Alex Inkin <alexander@inkin.ru> Co-authored-by: Mariusz Kogen <k0gen@pm.me>
129 lines
3.2 KiB
TypeScript
129 lines
3.2 KiB
TypeScript
import {
|
|
ChangeDetectionStrategy,
|
|
Component,
|
|
inject,
|
|
input,
|
|
} from '@angular/core'
|
|
import { ActivatedRoute } from '@angular/router'
|
|
import { CopyService } from '@start9labs/shared'
|
|
import { MarketplacePkgBase } from '../../types'
|
|
import { MarketplaceLinkComponent } from './link.component'
|
|
|
|
@Component({
|
|
selector: 'marketplace-links',
|
|
template: `
|
|
<div class="background-border shadow-color-light box-shadow-lg">
|
|
<div class="box-container">
|
|
<h2 class="additional-detail-title">Source Code</h2>
|
|
<div class="detail-container">
|
|
<marketplace-link
|
|
[url]="pkg().upstreamRepo"
|
|
label="Upstream Service"
|
|
icon="@tui.external-link"
|
|
class="item-pointer"
|
|
/>
|
|
<marketplace-link
|
|
[url]="pkg().wrapperRepo"
|
|
label="StartOS Package"
|
|
icon="@tui.external-link"
|
|
class="item-pointer"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="background-border shadow-color-light box-shadow-lg">
|
|
<div class="box-container">
|
|
<h2 class="additional-detail-title">Links</h2>
|
|
<div class="detail-container">
|
|
<marketplace-link
|
|
[url]="pkg().marketingSite"
|
|
label="Marketing"
|
|
icon="@tui.external-link"
|
|
class="item-pointer"
|
|
/>
|
|
@if (pkg().docsUrl; as docsUrl) {
|
|
<marketplace-link
|
|
[url]="docsUrl"
|
|
label="Documentation"
|
|
icon="@tui.external-link"
|
|
class="item-pointer"
|
|
/>
|
|
}
|
|
<marketplace-link
|
|
[url]="pkg().supportSite"
|
|
label="Support"
|
|
icon="@tui.external-link"
|
|
class="item-pointer"
|
|
/>
|
|
@if (pkg().donationUrl; as donationUrl) {
|
|
<marketplace-link
|
|
[url]="donationUrl"
|
|
label="Donations"
|
|
icon="@tui.external-link"
|
|
class="item-pointer"
|
|
/>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
`,
|
|
styles: `
|
|
.box-container {
|
|
background-color: rgb(39 39 42);
|
|
border-radius: 0.75rem;
|
|
padding: 1.25rem 1.75rem;
|
|
}
|
|
|
|
.detail-container {
|
|
display: grid;
|
|
grid-auto-flow: row;
|
|
grid-auto-columns: minmax(0, 1fr);
|
|
|
|
& > * + * {
|
|
border-top-width: 1px;
|
|
border-bottom-width: 0;
|
|
border-color: rgb(113 113 122);
|
|
}
|
|
}
|
|
|
|
.item-pointer:hover {
|
|
cursor: pointer;
|
|
|
|
::ng-deep label {
|
|
cursor: pointer;
|
|
}
|
|
}
|
|
|
|
.item-copy:hover {
|
|
cursor: copy;
|
|
|
|
::ng-deep label {
|
|
cursor: copy;
|
|
}
|
|
}
|
|
|
|
.item-padding {
|
|
padding: 0.75rem 0.25rem;
|
|
}
|
|
|
|
*,
|
|
::before,
|
|
::after {
|
|
box-sizing: border-box;
|
|
border-width: 0;
|
|
border-style: solid;
|
|
border-color: rgb(var(--tw-color-gray-200) / 1);
|
|
}
|
|
`,
|
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
imports: [MarketplaceLinkComponent],
|
|
})
|
|
export class MarketplaceLinksComponent {
|
|
readonly copyService = inject(CopyService)
|
|
readonly url =
|
|
inject(ActivatedRoute).snapshot.queryParamMap.get('url') || undefined
|
|
|
|
readonly pkg = input.required<MarketplacePkgBase>()
|
|
}
|