mirror of
https://seed.radicle.dev/rad:z4D5UCArafTzTQpDZNQRuqswh3ury.git
synced 2026-11-11 06:10:37 +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
102 lines
2.5 KiB
Svelte
102 lines
2.5 KiB
Svelte
<script lang="ts">
|
|
import type { Commit } from "@bindings/repo/Commit";
|
|
import type { Snippet } from "svelte";
|
|
|
|
import * as utils from "@app/lib/utils";
|
|
|
|
import HoverPopover from "@app/components/HoverPopover.svelte";
|
|
|
|
interface Props {
|
|
children: Snippet;
|
|
commit: Commit;
|
|
}
|
|
|
|
const { children, commit }: Props = $props();
|
|
</script>
|
|
|
|
<style>
|
|
.authorship {
|
|
display: flex;
|
|
font: var(--txt-body-m-regular);
|
|
column-gap: 0.5rem;
|
|
align-items: center;
|
|
white-space: nowrap;
|
|
}
|
|
.person {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-wrap: nowrap;
|
|
white-space: nowrap;
|
|
gap: 0.5rem;
|
|
font: var(--txt-code-regular);
|
|
}
|
|
.label {
|
|
color: var(--color-text-secondary);
|
|
}
|
|
.avatar {
|
|
width: 1rem;
|
|
height: 1rem;
|
|
}
|
|
</style>
|
|
|
|
<div class="authorship">
|
|
<HoverPopover placement="top-start">
|
|
{#snippet toggle()}
|
|
<div style="display: flex;">
|
|
{#if commit.author.email === commit.committer.email}
|
|
<img
|
|
class="avatar"
|
|
alt="avatar"
|
|
src={utils.gravatarURL(commit.committer.email)} />
|
|
{:else}
|
|
<img
|
|
style:margin-right="0.25rem"
|
|
class="avatar"
|
|
alt="avatar"
|
|
src={utils.gravatarURL(commit.author.email)} />
|
|
<img
|
|
class="avatar"
|
|
alt="avatar"
|
|
src={utils.gravatarURL(commit.committer.email)} />
|
|
{/if}
|
|
</div>
|
|
{/snippet}
|
|
|
|
{#snippet popover()}
|
|
<div class="popover">
|
|
{#if commit.author.email === commit.committer.email}
|
|
<div class="person">
|
|
<div class="label">Author</div>
|
|
<img
|
|
class="avatar"
|
|
alt="avatar"
|
|
src={utils.gravatarURL(commit.committer.email)} />
|
|
{commit.author.name}
|
|
</div>
|
|
{:else}
|
|
<div class="person">
|
|
<div class="label">Author</div>
|
|
<img
|
|
class="avatar"
|
|
alt="avatar"
|
|
src={utils.gravatarURL(commit.author.email)} />
|
|
{commit.author.name}
|
|
</div>
|
|
<div class="person">
|
|
<div class="label">Committer</div>
|
|
<img
|
|
class="avatar"
|
|
alt="avatar"
|
|
src={utils.gravatarURL(commit.committer.email)} />
|
|
{commit.committer.name}
|
|
</div>
|
|
{/if}
|
|
</div>
|
|
{/snippet}
|
|
</HoverPopover>
|
|
{@render children()}
|
|
<div title={utils.absoluteTimestamp(commit.committer.time * 1000)}>
|
|
{utils.formatTimestamp(commit.committer.time * 1000)}
|
|
</div>
|
|
</div>
|