mirror of
https://seed.radicle.dev/rad:z4D5UCArafTzTQpDZNQRuqswh3ury.git
synced 2026-11-03 18:40:29 +08:00
Redesign the entire app with a new UI kit. Typography, colors, icons, avatars, and border radii have all been updated for a more polished, consistent appearance that matches our other products like radicle-explorer. - Replace blockies-based avatars with a new DID-based avatar system - Move Settings and Create Issue into fullscreen modals - Change the default theme to follow the system theme - Remove window decorations on macOS for a cleaner, more native feel - Update the app icon - Fix popovers and tooltips Navigation: - Rewrite app navigation and layouts - Add a sidebar that gives you access to all your repos - Change the startup screen to open directly to the notification inbox - Add a getting started guide shown to new users on first launch Settings: - Add a setting to disable the notification badge - Add a code font setting Bug fixes: - Fix reactions and edits incorrectly targeting the root comment instead of the intended reply - Restrict issue/patch state, labels and assignees to delegates only
57 lines
1.7 KiB
Svelte
57 lines
1.7 KiB
Svelte
<script lang="ts">
|
|
import { formatOid } from "@app/lib/utils";
|
|
|
|
import Button from "@app/components/Button.svelte";
|
|
import Command from "@app/components/Command.svelte";
|
|
import Icon from "@app/components/Icon.svelte";
|
|
import Popover from "@app/components/Popover.svelte";
|
|
|
|
interface Props {
|
|
patchId: string;
|
|
selectedRevisionId: string;
|
|
tab: "patch" | "revisions" | "timeline";
|
|
}
|
|
|
|
const { patchId, selectedRevisionId, tab }: Props = $props();
|
|
|
|
const checkoutCommand = $derived.by(() => {
|
|
if (tab === "revisions" && selectedRevisionId !== patchId) {
|
|
return `rad patch checkout ${formatOid(patchId)} --revision ${formatOid(selectedRevisionId)}`;
|
|
} else {
|
|
return `rad patch checkout ${formatOid(patchId)}`;
|
|
}
|
|
});
|
|
|
|
let popoverExpanded: boolean = $state(false);
|
|
</script>
|
|
|
|
<Popover placement="bottom-end" bind:expanded={popoverExpanded}>
|
|
{#snippet toggle(onclick)}
|
|
<Button
|
|
variant="naked"
|
|
title="Checkout patch"
|
|
{onclick}
|
|
active={popoverExpanded}>
|
|
<Icon name="checkout" />
|
|
<span class="global-hide-on-medium-desktop-down">Checkout patch</span>
|
|
</Button>
|
|
{/snippet}
|
|
{#snippet popover()}
|
|
<div
|
|
style:border="1px solid var(--color-border-subtle)"
|
|
style:border-radius="var(--border-radius-sm)"
|
|
style:display="flex"
|
|
style:gap="0.5rem"
|
|
style:align-items="flex-start"
|
|
style:background-color="var(--color-surface-canvas)"
|
|
style:flex-direction="column"
|
|
style:padding="1rem"
|
|
style:width="max-content">
|
|
<span class="txt-body-m-regular">
|
|
To checkout this patch in your working copy, run:
|
|
</span>
|
|
<Command command={checkoutCommand} styleWidth="100%" />
|
|
</div>
|
|
{/snippet}
|
|
</Popover>
|