Files
console/src/lib/components/git/deploymentSource.svelte
T
2025-04-09 17:53:54 +02:00

73 lines
2.6 KiB
Svelte

<script lang="ts">
import { Trim } from '$lib/components';
import { Link } from '$lib/elements';
import type { Models } from '@appwrite.io/console';
import {
IconCode,
IconGitBranch,
IconGitCommit,
IconGithub,
IconTerminal
} from '@appwrite.io/pink-icons-svelte';
import { ActionMenu, Layout, Popover, Icon } from '@appwrite.io/pink-svelte';
let {
deployment
}: {
deployment: Models.Deployment;
} = $props();
</script>
{#if deployment.type === 'vcs'}
<Popover padding="none" let:toggle>
<div>
<Link
on:click={(e) => {
e.preventDefault();
toggle(e);
}}>
<Layout.Stack direction="row" gap="xs" alignItems="center">
<Icon icon={IconGithub} size="s" /> GitHub
</Layout.Stack>
</Link>
</div>
<svelte:fragment slot="tooltip">
<ActionMenu.Root>
<ActionMenu.Item.Anchor
href={deployment.providerRepositoryUrl}
external
leadingIcon={IconGithub}>
{deployment.providerRepositoryOwner}/{deployment.providerRepositoryName}
</ActionMenu.Item.Anchor>
<ActionMenu.Item.Anchor
href={deployment.providerBranchUrl}
external
leadingIcon={IconGitBranch}>
{deployment.providerBranch}
</ActionMenu.Item.Anchor>
{#if deployment?.providerCommitMessage && deployment?.providerCommitHash && deployment?.providerCommitUrl}
<ActionMenu.Item.Anchor
href={deployment.providerCommitUrl}
external
leadingIcon={IconGitCommit}>
<Trim alternativeTrim>
{deployment?.providerCommitHash?.substring(0, 7)}
{deployment.providerCommitMessage.substring(0, 15)}...
</Trim>
</ActionMenu.Item.Anchor>
{/if}
</ActionMenu.Root>
</svelte:fragment>
</Popover>
{:else if deployment.type === 'manual'}
<Layout.Stack gap="s" direction="row" alignItems="center">
<Icon icon={IconCode} size="s" /> <span>Manual</span>
</Layout.Stack>
{:else if deployment.type === 'cli'}
<Layout.Stack gap="s" direction="row" alignItems="center">
<Icon icon={IconTerminal} size="s" /> <span>CLI</span>
</Layout.Stack>
{:else}
<span>N/A</span>
{/if}