Files
radicle-desktop/src/components/CompactCommitAuthorship.svelte
T
Rūdolfs Ošiņš 010cac0377 Redesign app with new UI kit
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
2026-03-20 17:48:38 -06:00

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>