PR card updates

This commit is contained in:
estib 2024-10-16 16:20:02 +02:00
parent d9e103d898
commit fb152bcc96
9 changed files with 116 additions and 116 deletions

View File

@ -5,6 +5,7 @@
import DefaultTargetButton from './DefaultTargetButton.svelte';
import ContextMenu from '$lib/components/contextmenu/ContextMenu.svelte';
import { getGitHost } from '$lib/gitHost/interface/gitHost';
import { getGitHostChecksMonitor } from '$lib/gitHost/interface/gitHostChecksMonitor';
import { getGitHostPrMonitor } from '$lib/gitHost/interface/gitHostPrMonitor';
import { getGitHostPrService } from '$lib/gitHost/interface/gitHostPrService';
import PrDetailsModal from '$lib/pr/PrDetailsModal.svelte';
@ -27,6 +28,7 @@
const prService = getGitHostPrService();
const branchStore = getContextStore(VirtualBranch);
const prMonitor = getGitHostPrMonitor();
const checksMonitor = getGitHostChecksMonitor();
const gitHost = getGitHost();
const branch = $derived($branchStore);
@ -55,6 +57,10 @@
let headerInfoHeight = $state(0);
async function handleReloadPR() {
await Promise.allSettled([$prMonitor?.refresh(), $checksMonitor?.update()]);
}
function handleOpenPR() {
prDetailsModal?.show();
}
@ -184,6 +190,9 @@
target={meatballButtonEl}
onCollapse={collapseLane}
{onGenerateBranchName}
hasPr={!!$pr}
openPrDetailsModal={handleOpenPR}
reloadPR={handleReloadPR}
/>
</div>
</div>
@ -193,7 +202,11 @@
</div>
{/if}
<PrDetailsModal bind:this={prDetailsModal} type="preview" />
{#if $pr}
<PrDetailsModal bind:this={prDetailsModal} type="display" pr={$pr} />
{:else}
<PrDetailsModal bind:this={prDetailsModal} type="preview" />
{/if}
<style>
.header__wrapper {

View File

@ -17,13 +17,24 @@
import Tooltip from '@gitbutler/ui/Tooltip.svelte';
interface Props {
hasPr: boolean;
contextMenuEl?: ReturnType<typeof ContextMenu>;
target?: HTMLElement;
onCollapse: () => void;
onGenerateBranchName?: () => void;
openPrDetailsModal?: () => void;
reloadPR?: () => void;
}
let { contextMenuEl = $bindable(), target, onCollapse, onGenerateBranchName }: Props = $props();
let {
contextMenuEl = $bindable(),
target,
onCollapse,
onGenerateBranchName,
hasPr,
openPrDetailsModal,
reloadPR
}: Props = $props();
const project = getContext(Project);
const aiService = getContext(AIService);
@ -150,6 +161,25 @@
</ContextMenuItem>
</ContextMenuSection>
{#if !$stackingFeature && hasPr}
<ContextMenuSection>
<ContextMenuItem
label="PR details"
on:click={() => {
openPrDetailsModal?.();
contextMenuEl?.close();
}}
/>
<ContextMenuItem
label="Refetch PR status"
on:click={() => {
reloadPR?.();
contextMenuEl?.close();
}}
/>
</ContextMenuSection>
{/if}
<ContextMenuSection>
<ContextMenuItem
label={`Create ${$stackingFeature ? 'stack' : 'branch'} to the left`}

View File

@ -74,6 +74,13 @@
const prMonitor = $derived(prNumber ? $prService?.prMonitor(prNumber) : undefined);
const pr = $derived(prMonitor?.pr);
const checksMonitor = $derived(
$pr?.sourceBranch ? $gitHost?.checksMonitor($pr.sourceBranch) : undefined
);
async function handleReloadPR() {
await Promise.allSettled([prMonitor?.refresh(), checksMonitor?.update()]);
}
function handleOpenPR() {
prDetailsModal?.show();
@ -167,6 +174,9 @@
{addDescription}
onGenerateBranchName={generateBranchName}
disableTitleEdit={!!gitHostBranch}
hasPr={!!$pr}
openPrDetailsModal={handleOpenPR}
reloadPR={handleReloadPR}
/>
</div>
</div>
@ -209,13 +219,18 @@
</EmptyStatePlaceholder>
</div>
{/if}
<PrDetailsModal
bind:this={prDetailsModal}
type="preview-series"
{upstreamName}
name={currentSeries.name}
commits={currentSeries.patches}
/>
{#if $pr}
<PrDetailsModal bind:this={prDetailsModal} type="display" pr={$pr} />
{:else}
<PrDetailsModal
bind:this={prDetailsModal}
type="preview-series"
{upstreamName}
name={currentSeries.name}
commits={currentSeries.patches}
/>
{/if}
</div>
<style lang="postcss">
@ -257,7 +272,7 @@
&.no-upstream {
/**
* Element is requird to still be there, so we can use
* it to wiggle 5px to the left to align the BranchLabel
* it to wiggle 5px to the left to align the BranchLabel
* Input/Label component.
*/
visibility: hidden;

View File

@ -18,8 +18,11 @@
headName: string;
seriesCount: number;
disableTitleEdit: boolean;
hasPr: boolean;
addDescription: () => void;
onGenerateBranchName: () => void;
openPrDetailsModal: () => void;
reloadPR: () => void;
}
let {
@ -28,8 +31,11 @@
seriesCount,
disableTitleEdit,
headName,
hasPr,
addDescription,
onGenerateBranchName
onGenerateBranchName,
openPrDetailsModal,
reloadPR
}: Props = $props();
const project = getContext(Project);
@ -89,6 +95,24 @@
}}
/>
</ContextMenuSection>
{#if hasPr}
<ContextMenuSection>
<ContextMenuItem
label="PR details"
on:click={() => {
openPrDetailsModal();
contextMenuEl?.close();
}}
/>
<ContextMenuItem
label="Refetch PR status"
on:click={() => {
reloadPR();
contextMenuEl?.close();
}}
/>
</ContextMenuSection>
{/if}
</ContextMenu>
<Modal

View File

@ -269,7 +269,7 @@
}
break;
case KeyName.Enter:
if (isEditing || isLoading || aiIsLoading) break;
if (isLoading || aiIsLoading) break;
if (e.metaKey || e.ctrlKey) {
e.stopPropagation();
e.preventDefault();

View File

@ -1,6 +1,5 @@
<script lang="ts">
import MergeButton from './MergeButton.svelte';
import PrDetailsModal from './PrDetailsModal.svelte';
import InfoMessage from '../shared/InfoMessage.svelte';
import { Project } from '$lib/backend/projects';
import { BaseBranchService } from '$lib/baseBranch/baseBranchService';
@ -13,8 +12,6 @@
import { getContext } from '@gitbutler/shared/context';
import Button from '@gitbutler/ui/Button.svelte';
import { type ComponentColor } from '@gitbutler/ui/utils/colorTypes';
import { createTimeAgoStore } from '@gitbutler/ui/utils/timeAgo';
import type { ChecksStatus } from '$lib/gitHost/interface/types';
import type { MessageStyle } from '$lib/shared/InfoMessage.svelte';
import type iconsJson from '@gitbutler/ui/data/icons.json';
@ -35,8 +32,6 @@
const baseBranchService = getContext(BaseBranchService);
const project = getContext(Project);
let prDetailsModal = $state<ReturnType<typeof PrDetailsModal>>();
const gitHostListingService = getGitHostListingService();
const prStore = $derived($gitHostListingService?.prs);
const prs = $derived(prStore ? $prStore : undefined);
@ -61,26 +56,13 @@
let isMerging = $state(false);
const lastFetch = $derived(prMonitor?.lastFetch);
const timeAgo = $derived($lastFetch ? createTimeAgoStore($lastFetch) : undefined);
const mrLoading = $derived(prMonitor?.loading);
const checksLoading = $derived($checksMonitor?.loading);
const checksError = $derived($checksMonitor?.error);
const detailsError = $derived(prMonitor?.error);
function getChecksCount(status: ChecksStatus): string {
if (!status) return 'Running checks';
const finished = status.finished || 0;
const skipped = status.skipped || 0;
const total = (status.totalCount || 0) - skipped;
return `Checks completed ${finished}/${total}`;
}
const checksTagInfo: StatusInfo | undefined = $derived.by(() => {
const checksTagInfo: StatusInfo = $derived.by(() => {
if ($checksError || $detailsError) {
return { style: 'error', icon: 'warning-small', text: 'Failed to load' };
}
@ -93,12 +75,14 @@
? 'success-small'
: 'error-small'
: 'spinner';
const text = $checks.completed ? 'Checks' : getChecksCount($checks);
const text = $checks.completed ? 'Checks' : 'Checks running';
return { style, icon, text };
}
if ($checksLoading) {
return { style: 'neutral', icon: 'spinner', text: 'Checks' };
}
return { style: 'neutral', icon: undefined, text: 'No PR checks' };
});
const prStatusInfo: StatusInfo = $derived.by(() => {
@ -179,11 +163,12 @@
</div>
<div class="pr-tags">
<Button
reversedDirection
size="tag"
clickable={false}
style={prStatusInfo.style}
tooltip="PR status"
kind={prStatusInfo.text !== 'Open' && prStatusInfo.text !== 'Status' ? 'solid' : 'soft'}
kind={'soft'}
>
{prStatusInfo.text}
</Button>
@ -199,17 +184,6 @@
{checksTagInfo.text}
</Button>
{/if}
<Button
size="tag"
style="ghost"
outline
icon="description-small"
onclick={() => {
prDetailsModal?.show();
}}
>
PR details
</Button>
<Button
icon="open-link"
size="tag"
@ -218,20 +192,8 @@
tooltip="Open in browser"
onclick={() => {
openExternalUrl($pr.htmlUrl);
}}
/>
<Button
icon="update-small"
size="tag"
style="ghost"
outline
loading={$mrLoading}
tooltip={$timeAgo ? 'Updated ' + $timeAgo : ''}
onclick={async () => {
$checksMonitor?.update();
prMonitor?.refresh();
}}
/>
}}>View PR</Button
>
</div>
<!--
@ -287,10 +249,6 @@
</div>
{/if}
{#if $pr}
<PrDetailsModal bind:this={prDetailsModal} type="display" pr={$pr} />
{/if}
<style lang="postcss">
.pr-card {
position: relative;

View File

@ -1,6 +1,5 @@
<script lang="ts">
import MergeButton from './MergeButton.svelte';
import PrDetailsModal from './PrDetailsModal.svelte';
import InfoMessage from '../shared/InfoMessage.svelte';
import { Project } from '$lib/backend/projects';
import { BaseBranchService } from '$lib/baseBranch/baseBranchService';
@ -13,9 +12,8 @@
import { getContext } from '@gitbutler/shared/context';
import Button from '@gitbutler/ui/Button.svelte';
import { type ComponentColor } from '@gitbutler/ui/utils/colorTypes';
import { createTimeAgoStore } from '@gitbutler/ui/utils/timeAgo';
import type { GitHostPrMonitor } from '$lib/gitHost/interface/gitHostPrMonitor';
import type { ChecksStatus, DetailedPullRequest } from '$lib/gitHost/interface/types';
import type { DetailedPullRequest } from '$lib/gitHost/interface/types';
import type { MessageStyle } from '$lib/shared/InfoMessage.svelte';
import type iconsJson from '@gitbutler/ui/data/icons.json';
@ -44,9 +42,6 @@
const prService = getGitHostPrService();
const checksMonitor = $derived(sourceBranch ? $gitHost?.checksMonitor(sourceBranch) : undefined);
$effect(() => {
console.log(checksMonitor);
});
// This PR has been loaded on demand, and contains more details than the version
// obtained when listing them.
const checks = $derived(checksMonitor?.status);
@ -58,10 +53,6 @@
// });
let isMerging = $state(false);
let prDetailsModal = $state<ReturnType<typeof PrDetailsModal>>();
const lastFetch = $derived(prMonitor?.lastFetch);
const timeAgo = $derived($lastFetch ? createTimeAgoStore($lastFetch) : undefined);
const mrLoading = $derived(prMonitor?.loading);
const checksLoading = $derived(checksMonitor?.loading);
@ -69,17 +60,7 @@
const checksError = $derived(checksMonitor?.error);
const detailsError = $derived(prMonitor?.error);
function getChecksCount(status: ChecksStatus): string {
if (!status) return 'Running checks';
const finished = status.finished || 0;
const skipped = status.skipped || 0;
const total = (status.totalCount || 0) - skipped;
return `Checks completed ${finished}/${total}`;
}
const checksTagInfo: StatusInfo | undefined = $derived.by(() => {
const checksTagInfo: StatusInfo = $derived.by(() => {
if ($checksError || $detailsError) {
return { style: 'error', icon: 'warning-small', text: 'Failed to load' };
}
@ -96,12 +77,14 @@
? $checks.success
? 'Checks passed'
: 'Checks failed'
: getChecksCount($checks);
: 'Checks running';
return { style, icon, text };
}
if ($checksLoading) {
return { style: 'neutral', icon: 'spinner', text: ' Checks' };
}
return { style: 'neutral', icon: undefined, text: 'No PR checks' };
});
const prStatusInfo: StatusInfo = $derived.by(() => {
@ -182,11 +165,12 @@
</div>
<div class="pr-header-tags">
<Button
reversedDirection
size="tag"
clickable={false}
icon={prStatusInfo.icon}
style={prStatusInfo.style}
kind={prStatusInfo.text !== 'Open' && prStatusInfo.text !== 'Status' ? 'solid' : 'soft'}
kind={'soft'}
tooltip="PR status"
>
{prStatusInfo.text}
@ -202,17 +186,6 @@
{checksTagInfo.text}
</Button>
{/if}
<Button
size="tag"
style="ghost"
outline
icon="description-small"
onclick={() => {
prDetailsModal?.show();
}}
>
PR details
</Button>
<Button
icon="open-link"
size="tag"
@ -221,20 +194,8 @@
tooltip="Open in browser"
onclick={() => {
openExternalUrl(pr.htmlUrl);
}}
/>
<Button
icon="update-small"
size="tag"
style="ghost"
outline
loading={$mrLoading}
tooltip={$timeAgo ? 'Updated ' + $timeAgo : ''}
onclick={async () => {
checksMonitor?.update();
prMonitor?.refresh();
}}
/>
}}>View PR</Button
>
</div>
<!--
@ -288,8 +249,6 @@
</div>
{/if}
</div>
<PrDetailsModal bind:this={prDetailsModal} type="display" {pr} />
{/if}
<style lang="postcss">

View File

@ -124,6 +124,7 @@
bind:contextMenuEl={contextMenu}
target={meatballButtonEl}
onCollapse={collapseLane}
hasPr={false}
/>
</div>
<div class="header__info-row">

View File

@ -12,7 +12,7 @@
"chevron-right-small": "M8.85983 7.92049C8.95747 8.01812 8.95747 8.17642 8.85983 8.27405L5.56694 11.5669L6.6276 12.6276L9.92049 9.33471C10.6039 8.65129 10.6039 7.54325 9.92049 6.85983L6.6276 3.56694L5.56694 4.6276L8.85983 7.92049Z",
"chevron-up": "M7.82322 6.23744C7.92086 6.13981 8.07915 6.13981 8.17678 6.23744L12.4697 10.5303L13.5303 9.46967L9.23744 5.17678C8.55402 4.49336 7.44598 4.49336 6.76256 5.17678L2.46967 9.46967L3.53033 10.5303L7.82322 6.23744Z",
"chevron-up-small": "M7.82323 7.23744C7.92086 7.13981 8.07915 7.13981 8.17678 7.23744L11.4697 10.5303L12.5303 9.46967L9.23744 6.17678C8.55402 5.49336 7.44598 5.49336 6.76257 6.17678L3.46967 9.46967L4.53033 10.5303L7.82323 7.23744Z",
"closed-pr-small": "M8.93934 6L6.46967 3.53033L7.53033 2.46967L10 4.93934L12.4697 2.46967L13.5303 3.53033L11.0607 6L13.5303 8.46967L12.4697 9.53033L10 7.06066L7.53033 9.53033L6.46967 8.46967L8.93934 6Z M3.25 4V13H4.75V4H3.25Z M9.25 9V13H10.75V9H9.25Z",
"closed-pr-small": "M8.93934 6L7.24244 4.30309L8.3031 3.24243L10 4.93934L11.6969 3.24243L12.7576 4.30309L11.0607 6L12.7576 7.6969L11.6969 8.75756L10 7.06066L8.3031 8.75756L7.24244 7.6969L8.93934 6Z M3.25 4V13H4.75V4H3.25Z M9.25 9V13H10.75V9H9.25Z",
"commit": "M4.32501 7.25C4.67247 5.53832 6.18578 4.25 8 4.25C9.81422 4.25 11.3275 5.53832 11.675 7.25H15V8.75H11.675C11.3275 10.4617 9.81422 11.75 8 11.75C6.18578 11.75 4.67247 10.4617 4.32501 8.75H1V7.25H4.32501ZM8 5.75C6.75736 5.75 5.75 6.75736 5.75 8C5.75 9.24264 6.75736 10.25 8 10.25C9.24264 10.25 10.25 9.24264 10.25 8C10.25 6.75736 9.24264 5.75 8 5.75Z",
"copy": "M8 1.25C6.48122 1.25 5.25 2.48122 5.25 4V4.25H4C2.48122 4.25 1.25 5.48122 1.25 7V12C1.25 13.5188 2.48122 14.75 4 14.75H8C9.51878 14.75 10.75 13.5188 10.75 12V11.75H12C13.5188 11.75 14.75 10.5188 14.75 9V4C14.75 2.48122 13.5188 1.25 12 1.25H8ZM10.75 10.25H12C12.6904 10.25 13.25 9.69036 13.25 9V4C13.25 3.30964 12.6904 2.75 12 2.75H8C7.30964 2.75 6.75 3.30964 6.75 4V4.25H8C9.51878 4.25 10.75 5.48122 10.75 7V10.25ZM2.75 7C2.75 6.30964 3.30964 5.75 4 5.75H8C8.69036 5.75 9.25 6.30964 9.25 7V12C9.25 12.6904 8.69036 13.25 8 13.25H4C3.30964 13.25 2.75 12.6904 2.75 12V7Z",
"copy-small": "M7.10832 4.75H7.66667C9.18545 4.75 10.4167 5.98122 10.4167 7.5V9.75H11C11.6903 9.75 12.25 9.19036 12.25 8.5V5C12.25 4.30964 11.6903 3.75 11 3.75H8.33331C7.72857 3.75 7.22413 4.17944 7.10832 4.75ZM10.4055 11.25C10.2791 12.6516 9.10118 13.75 7.66667 13.75H5C3.48121 13.75 2.25 12.5188 2.25 11V7.5C2.25 5.98122 3.48122 4.75 5 4.75H5.59452C5.72083 3.34837 6.8988 2.25 8.33331 2.25H11C12.5188 2.25 13.75 3.48122 13.75 5V8.5C13.75 10.0188 12.5188 11.25 11 11.25H10.4055ZM3.75 7.5C3.75 6.80964 4.30964 6.25 5 6.25H7.66667C8.35702 6.25 8.91667 6.80964 8.91667 7.5V11C8.91667 11.6904 8.35702 12.25 7.66667 12.25H5C4.30964 12.25 3.75 11.6904 3.75 11V7.5Z",
@ -24,7 +24,7 @@
"docs": "M12 5.75H4V4.25H12V5.75Z M4 8.75H10V7.25H4V8.75Z M5.35241e-05 12.9852L0 3.22C0 2.08102 0 1.51153 0.225173 1.07805C0.414924 0.712765 0.712765 0.414924 1.07805 0.225173C1.51153 0 2.08102 0 3.22 0H16V16H2C1.46143 16 0.972588 15.7871 0.613012 15.4409C0.587144 15.416 0.56195 15.3904 0.537457 15.3642C0.204038 15.0069 0 14.5273 0 14V13L5.35241e-05 12.9852ZM3.22 1.5H14.5V11H2C1.82735 11 1.65981 11.0219 1.5 11.063V3.22C1.5 2.62533 1.50121 2.27105 1.523 2.0086C1.53628 1.84867 1.55378 1.78152 1.55949 1.76346C1.60596 1.67691 1.67691 1.60596 1.76346 1.55949C1.78152 1.55378 1.84867 1.53628 2.0086 1.523C2.27105 1.50121 2.62533 1.5 3.22 1.5ZM3.22 14.5C2.62533 14.5 2.27105 14.4988 2.0086 14.477C1.84867 14.4637 1.78152 14.4462 1.76346 14.4405C1.67691 14.394 1.60596 14.3231 1.55949 14.2365C1.55378 14.2185 1.53628 14.1513 1.523 13.9914C1.50391 13.7615 1.50061 13.4611 1.50009 12.9903C1.50527 12.7186 1.7271 12.5 2 12.5H14.5L14.5 14.5H3.22Z",
"docs-filled": "M3 1C1.89543 1 1 1.89543 1 3V12V12.5V13C1 14.1046 1.89543 15 3 15H13.5H15V13.5V11.5V11V10V1H3ZM12 4H4V5.5H12V4ZM4 7.5H8V9H4V7.5ZM13.5 13.5H3C2.72386 13.5 2.5 13.2761 2.5 13V12C2.5 11.7239 2.72386 11.5 3 11.5H13.5V13.5Z",
"dot": "M9.5 8C9.5 8.82843 8.82843 9.5 8 9.5C7.17157 9.5 6.5 8.82843 6.5 8C6.5 7.17157 7.17157 6.5 8 6.5C8.82843 6.5 9.5 7.17157 9.5 8Z",
"draft-pr-small": "M10.75 7.88555C11.7643 7.56698 12.5 6.61941 12.5 5.5C12.5 4.11929 11.3807 3 10 3C8.61929 3 7.5 4.11929 7.5 5.5C7.5 6.61941 8.23572 7.56698 9.25 7.88555V10H10.75V7.88555Z M3.25 4V13H4.75V4H3.25Z M9.25 11V13H10.75V11H9.25Z",
"draft-pr-small": "M7.5 6C7.5 7.38071 6.38071 8.5 5 8.5C3.61929 8.5 2.5 7.38071 2.5 6C2.5 4.61929 3.61929 3.5 5 3.5C6.38071 3.5 7.5 4.61929 7.5 6Z M10.75 6V4H12.25V6H10.75Z M10.75 7.5H12.25V9.5H10.75V7.5Z M10.75 13V11H12.25V13H10.75Z M4.25 9.5V13H5.75V9.5H4.25Z",
"draggable": "M3 4C3 3.44772 3.44772 3 4 3C4.55228 3 5 3.44772 5 4C5 4.55228 4.55228 5 4 5C3.44772 5 3 4.55228 3 4Z M3 8C3 7.44772 3.44772 7 4 7C4.55228 7 5 7.44772 5 8C5 8.55228 4.55228 9 4 9C3.44772 9 3 8.55228 3 8Z M4 11C3.44772 11 3 11.4477 3 12C3 12.5523 3.44772 13 4 13C4.55228 13 5 12.5523 5 12C5 11.4477 4.55228 11 4 11Z M7 4C7 3.44772 7.44772 3 8 3C8.55228 3 9 3.44772 9 4C9 4.55228 8.55228 5 8 5C7.44772 5 7 4.55228 7 4Z M8 7C7.44772 7 7 7.44772 7 8C7 8.55228 7.44772 9 8 9C8.55228 9 9 8.55228 9 8C9 7.44772 8.55228 7 8 7Z M7 12C7 11.4477 7.44772 11 8 11C8.55228 11 9 11.4477 9 12C9 12.5523 8.55228 13 8 13C7.44772 13 7 12.5523 7 12Z M12 3C11.4477 3 11 3.44772 11 4C11 4.55228 11.4477 5 12 5C12.5523 5 13 4.55228 13 4C13 3.44772 12.5523 3 12 3Z M11 8C11 7.44772 11.4477 7 12 7C12.5523 7 13 7.44772 13 8C13 8.55228 12.5523 9 12 9C11.4477 9 11 8.55228 11 8Z M12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11Z",
"draggable-horizontal-narrow": "M4 4.25C4 3.83579 4.33579 3.5 4.75 3.5H11.25C11.6642 3.5 12 3.83579 12 4.25C12 4.66421 11.6642 5 11.25 5H4.75C4.33579 5 4 4.66421 4 4.25Z M4 8.25C4 7.83579 4.33579 7.5 4.75 7.5H11.25C11.6642 7.5 12 7.83579 12 8.25C12 8.66421 11.6642 9 11.25 9H4.75C4.33579 9 4 8.66421 4 8.25Z M4 12.25C4 11.8358 4.33579 11.5 4.75 11.5H11.25C11.6642 11.5 12 11.8358 12 12.25C12 12.6642 11.6642 13 11.25 13H4.75C4.33579 13 4 12.6642 4 12.25Z",
"draggable-narrow": "M5 4C5 3.44772 5.44772 3 6 3C6.55228 3 7 3.44772 7 4C7 4.55228 6.55228 5 6 5C5.44772 5 5 4.55228 5 4Z M9 4C9 3.44772 9.44772 3 10 3C10.5523 3 11 3.44772 11 4C11 4.55228 10.5523 5 10 5C9.44772 5 9 4.55228 9 4Z M5 8C5 7.44772 5.44772 7 6 7C6.55228 7 7 7.44772 7 8C7 8.55228 6.55228 9 6 9C5.44772 9 5 8.55228 5 8Z M9 8C9 7.44772 9.44772 7 10 7C10.5523 7 11 7.44772 11 8C11 8.55228 10.5523 9 10 9C9.44772 9 9 8.55228 9 8Z M5 12C5 11.4477 5.44772 11 6 11C6.55228 11 7 11.4477 7 12C7 12.5523 6.55228 13 6 13C5.44772 13 5 12.5523 5 12Z M9 12C9 11.4477 9.44772 11 10 11C10.5523 11 11 11.4477 11 12C11 12.5523 10.5523 13 10 13C9.44772 13 9 12.5523 9 12Z",
@ -55,7 +55,7 @@
"locked-small": "M8 3.25C6.48122 3.25 5.25 4.48122 5.25 6V6.63323C4.48466 6.82016 3.91666 7.51041 3.91666 8.33333V11C3.91666 11.9665 4.70016 12.75 5.66666 12.75H10.3333C11.2998 12.75 12.0833 11.9665 12.0833 11V8.33333C12.0833 7.51042 11.5153 6.82017 10.75 6.63324V6C10.75 4.48122 9.51878 3.25 8 3.25ZM9.25 6.58333V6C9.25 5.30964 8.69036 4.75 8 4.75C7.30964 4.75 6.75 5.30964 6.75 6V6.58333H9.25ZM5.41666 8.33333C5.41666 8.19526 5.52858 8.08333 5.66666 8.08333H10.3333C10.4714 8.08333 10.5833 8.19526 10.5833 8.33333V11C10.5833 11.1381 10.4714 11.25 10.3333 11.25H5.66666C5.52859 11.25 5.41666 11.1381 5.41666 11V8.33333Z",
"logs": "M3 11.75H13V10.25H3V11.75Z M13 8.75L9 8.75V7.25L13 7.25V8.75Z M8.17154 6.5L4.48014 3.42384L3.51987 4.57617L5.82847 6.5L3.51987 8.42384L4.48014 9.57617L8.17154 6.5Z M0 5.83C0 4.12153 0 3.26729 0.33776 2.61708C0.622386 2.06915 1.06915 1.62239 1.61708 1.33776C2.26729 1 3.12153 1 4.83 1H11.17C12.8785 1 13.7327 1 14.3829 1.33776C14.9309 1.62239 15.3776 2.06915 15.6622 2.61708C16 3.26729 16 4.12153 16 5.83V10.17C16 11.8785 16 12.7327 15.6622 13.3829C15.3776 13.9309 14.9309 14.3776 14.3829 14.6622C13.7327 15 12.8785 15 11.17 15H4.83C3.12153 15 2.26729 15 1.61708 14.6622C1.06915 14.3776 0.622386 13.9309 0.33776 13.3829C0 12.7327 0 11.8785 0 10.17V5.83ZM4.83 2.5H11.17C12.0494 2.5 12.6173 2.50121 13.0492 2.53707C13.4631 2.57145 13.6161 2.62976 13.6915 2.66888C13.9654 2.81119 14.1888 3.03457 14.3311 3.30854C14.3702 3.38385 14.4285 3.53687 14.4629 3.95083C14.4988 4.38275 14.5 4.95059 14.5 5.83V10.17C14.5 11.0494 14.4988 11.6173 14.4629 12.0492C14.4285 12.4631 14.3702 12.6161 14.3311 12.6915C14.1888 12.9654 13.9654 13.1888 13.6915 13.3311C13.6161 13.3702 13.4631 13.4285 13.0492 13.4629C12.6173 13.4988 12.0494 13.5 11.17 13.5H4.83C3.95059 13.5 3.38275 13.4988 2.95083 13.4629C2.53687 13.4285 2.38385 13.3702 2.30854 13.3311C2.03457 13.1888 1.81119 12.9654 1.66888 12.6915C1.62976 12.6161 1.57145 12.4631 1.53707 12.0492C1.50121 11.6173 1.5 11.0494 1.5 10.17V5.83C1.5 4.95059 1.50121 4.38275 1.53707 3.95083C1.57145 3.53687 1.62976 3.38385 1.66888 3.30854C1.81119 3.03457 2.03457 2.81119 2.30854 2.66888C2.38385 2.62976 2.53687 2.57145 2.95083 2.53707C3.38275 2.50121 3.95059 2.5 4.83 2.5Z",
"mail": "M0 5.83C0 4.12153 0 3.26729 0.33776 2.61708C0.622386 2.06915 1.06915 1.62239 1.61708 1.33776C2.26729 1 3.12153 1 4.83 1H11.17C12.8785 1 13.7327 1 14.3829 1.33776C14.9309 1.62239 15.3776 2.06915 15.6622 2.61708C16 3.26729 16 4.12153 16 5.83V10.17C16 11.8785 16 12.7327 15.6622 13.3829C15.3776 13.9309 14.9309 14.3776 14.3829 14.6622C13.7327 15 12.8785 15 11.17 15H4.83C3.12153 15 2.26729 15 1.61708 14.6622C1.06915 14.3776 0.622386 13.9309 0.33776 13.3829C0 12.7327 0 11.8785 0 10.17V5.83ZM4.83 2.5H11.17C12.0494 2.5 12.6173 2.50121 13.0492 2.53707C13.4631 2.57145 13.6161 2.62976 13.6915 2.66888C13.9654 2.81119 14.1888 3.03457 14.3311 3.30854C14.352 3.34874 14.3783 3.41107 14.4036 3.5234L8.81349 8.31493C8.34537 8.71617 7.65462 8.71617 7.18651 8.31493L1.5964 3.52341C1.62165 3.41107 1.648 3.34874 1.66888 3.30854C1.81119 3.03457 2.03457 2.81119 2.30854 2.66888C2.38385 2.62976 2.53687 2.57145 2.95083 2.53707C3.38275 2.50121 3.95059 2.5 4.83 2.5ZM1.50025 5.41662C1.50003 5.54634 1.5 5.68387 1.5 5.83V10.17C1.5 11.0494 1.50121 11.6173 1.53707 12.0492C1.57145 12.4631 1.62976 12.6161 1.66888 12.6915C1.81119 12.9654 2.03457 13.1888 2.30854 13.3311C2.38385 13.3702 2.53687 13.4285 2.95083 13.4629C3.38275 13.4988 3.95059 13.5 4.83 13.5H11.17C12.0494 13.5 12.6173 13.4988 13.0492 13.4629C13.4631 13.4285 13.6161 13.3702 13.6915 13.3311C13.9654 13.1888 14.1888 12.9654 14.3311 12.6915C14.3702 12.6161 14.4285 12.4631 14.4629 12.0492C14.4988 11.6173 14.5 11.0494 14.5 10.17V5.83C14.5 5.68387 14.5 5.54634 14.4997 5.41661L9.78967 9.45382C8.75982 10.3365 7.24017 10.3365 6.21032 9.45382L1.50025 5.41662Z",
"merged-pr-small": "M6.32237 6.86159C7.29909 6.52151 8 5.59261 8 4.5C8 3.11929 6.88071 2 5.5 2C4.11929 2 3 3.11929 3 4.5C3 5.61941 3.73572 6.56698 4.75 6.88555V13H6.25V8.89185C6.48404 9.01126 6.73846 9.09858 7.00806 9.1476L9.22361 9.55043C9.81797 9.65849 10.25 10.1762 10.25 10.7803V13H11.75V10.7803C11.75 9.45123 10.7995 8.31237 9.49193 8.07462L7.27639 7.6718C6.82616 7.58994 6.46908 7.27305 6.32237 6.86159Z",
"merged-pr-small": "M7.38555 6.75C7.06698 7.76428 6.11941 8.5 5 8.5C3.61929 8.5 2.5 7.38071 2.5 6C2.5 4.61929 3.61929 3.5 5 3.5C6.11941 3.5 7.06698 4.23572 7.38555 5.25H9.5C11.0188 5.25 12.25 6.48122 12.25 8V13H10.75V8C10.75 7.30964 10.1904 6.75 9.5 6.75H7.38555Z M4.25 13V9.5H5.75V13H4.25Z",
"minus-small": "M13 7.25V8.75H8.75L3 8.75V7.25L13 7.25Z",
"new-file": "M4 14.5H12C12.8284 14.5 13.5 13.8284 13.5 13V6.24264C13.5 5.84482 13.342 5.46329 13.0607 5.18198L9.81802 1.93934C9.53671 1.65804 9.15518 1.5 8.75736 1.5H4C3.17157 1.5 2.5 2.17157 2.5 3V13C2.5 13.8284 3.17157 14.5 4 14.5ZM4 0C2.34315 0 1 1.34315 1 3V13C1 14.6569 2.34315 16 4 16H12C13.6569 16 15 14.6569 15 13V6.24264C15 5.44699 14.6839 4.68393 14.1213 4.12132L10.8787 0.87868C10.3161 0.316071 9.55301 0 8.75736 0H4Z M7.25 7.25V4H8.75V7.25H12V8.75H8.75V12H7.25V8.75H4V7.25H7.25Z",
"new-file-small-filled": "M4.5 1C2.84315 1 1.5 2.34315 1.5 4V12C1.5 13.6569 2.84315 15 4.5 15H11C12.6569 15 14.5 13.6569 14.5 12V5.59415C14.5 4.81243 14.1949 4.06158 13.6496 3.50145L12.0976 1.9073C11.5328 1.32721 10.7576 1 9.94802 1H4.5ZM7.25 4V7.25H4V8.75L7.25 8.75V12H8.75V8.75H12V7.25H8.75V4H7.25Z",
@ -66,7 +66,7 @@
"pr": "M8 2.25V0L2 3L8 6V3.75H10C10.6904 3.75 11.25 4.30964 11.25 5V9.85352C10.0957 10.18 9.25 11.2412 9.25 12.5C9.25 14.0188 10.4812 15.25 12 15.25C13.5188 15.25 14.75 14.0188 14.75 12.5C14.75 11.2412 13.9043 10.18 12.75 9.85352V5C12.75 3.48122 11.5188 2.25 10 2.25H8ZM12 11.25C11.3096 11.25 10.75 11.8096 10.75 12.5C10.75 13.1904 11.3096 13.75 12 13.75C12.6904 13.75 13.25 13.1904 13.25 12.5C13.25 11.8096 12.6904 11.25 12 11.25Z M5.75 6.5L5.75 9.85352C6.90425 10.18 7.75 11.2412 7.75 12.5C7.75 14.0188 6.51878 15.25 5 15.25C3.48122 15.25 2.25 14.0188 2.25 12.5C2.25 11.2412 3.09575 10.18 4.25 9.85352L4.25 6.5H5.75ZM5 11.25C4.30964 11.25 3.75 11.8096 3.75 12.5C3.75 13.1904 4.30964 13.75 5 13.75C5.69036 13.75 6.25 13.1904 6.25 12.5C6.25 11.8096 5.69036 11.25 5 11.25Z",
"pr-closed": "M4.5 0.75C2.98122 0.75 1.75 1.98122 1.75 3.5C1.75 4.75878 2.59575 5.82002 3.75 6.14648V9.85352C2.59575 10.18 1.75 11.2412 1.75 12.5C1.75 14.0188 2.98122 15.25 4.5 15.25C6.01878 15.25 7.25 14.0188 7.25 12.5C7.25 11.2412 6.40425 10.18 5.25 9.85352V6.14648C6.40425 5.82002 7.25 4.75878 7.25 3.5C7.25 1.98122 6.01878 0.75 4.5 0.75ZM3.25 3.5C3.25 2.80964 3.80964 2.25 4.5 2.25C5.19036 2.25 5.75 2.80964 5.75 3.5C5.75 4.19036 5.19036 4.75 4.5 4.75C3.80964 4.75 3.25 4.19036 3.25 3.5ZM3.25 12.5C3.25 11.8096 3.80964 11.25 4.5 11.25C5.19036 11.25 5.75 11.8096 5.75 12.5C5.75 13.1904 5.19036 13.75 4.5 13.75C3.80964 13.75 3.25 13.1904 3.25 12.5Z M12.25 9.85352V7H10.75V9.85352C9.59575 10.18 8.75 11.2412 8.75 12.5C8.75 14.0188 9.98122 15.25 11.5 15.25C13.0188 15.25 14.25 14.0188 14.25 12.5C14.25 11.2412 13.4043 10.18 12.25 9.85352ZM10.25 12.5C10.25 11.8096 10.8096 11.25 11.5 11.25C12.1904 11.25 12.75 11.8096 12.75 12.5C12.75 13.1904 12.1904 13.75 11.5 13.75C10.8096 13.75 10.25 13.1904 10.25 12.5Z M10.4393 3.75L8.71967 2.03033L9.78033 0.96967L11.5 2.68934L13.2197 0.96967L14.2803 2.03033L12.5607 3.75L14.2803 5.46967L13.2197 6.53033L11.5 4.81066L9.78033 6.53033L8.71967 5.46967L10.4393 3.75Z",
"pr-draft": "M4.5 0.75C2.98122 0.75 1.75 1.98122 1.75 3.5C1.75 4.75878 2.59575 5.82002 3.75 6.14648V9.85352C2.59575 10.18 1.75 11.2412 1.75 12.5C1.75 14.0188 2.98122 15.25 4.5 15.25C6.01878 15.25 7.25 14.0188 7.25 12.5C7.25 11.2412 6.40425 10.18 5.25 9.85352V6.14648C6.40425 5.82002 7.25 4.75878 7.25 3.5C7.25 1.98122 6.01878 0.75 4.5 0.75ZM3.25 3.5C3.25 2.80964 3.80964 2.25 4.5 2.25C5.19036 2.25 5.75 2.80964 5.75 3.5C5.75 4.19036 5.19036 4.75 4.5 4.75C3.80964 4.75 3.25 4.19036 3.25 3.5ZM3.25 12.5C3.25 11.8096 3.80964 11.25 4.5 11.25C5.19036 11.25 5.75 11.8096 5.75 12.5C5.75 13.1904 5.19036 13.75 4.5 13.75C3.80964 13.75 3.25 13.1904 3.25 12.5Z M10.75 2V3.5H12.25V2H10.75Z M10.75 7V5H12.25V7H10.75Z M10.75 8.5V9.85352C9.59575 10.18 8.75 11.2412 8.75 12.5C8.75 14.0188 9.98122 15.25 11.5 15.25C13.0188 15.25 14.25 14.0188 14.25 12.5C14.25 11.2412 13.4043 10.18 12.25 9.85352V8.5H10.75ZM11.5 11.25C10.8096 11.25 10.25 11.8096 10.25 12.5C10.25 13.1904 10.8096 13.75 11.5 13.75C12.1904 13.75 12.75 13.1904 12.75 12.5C12.75 11.8096 12.1904 11.25 11.5 11.25Z",
"pr-small": "M3 6L8 3V5.25H10C11.5188 5.25 12.75 6.48122 12.75 8V13H11.25V8C11.25 7.30964 10.6904 6.75 10 6.75H8V9L3 6Z M4.25 9L4.25 13H5.75L5.75 9H4.25Z",
"pr-small": "M3 6L8 3V5.25H9.5C11.0188 5.25 12.25 6.48122 12.25 8V13H10.75V8C10.75 7.30964 10.1904 6.75 9.5 6.75H8V9L3 6Z M4.25 13V9.5H5.75V13H4.25Z",
"profile": "M4.25 5.5C4.25 3.42893 5.92893 1.75 8 1.75C10.0711 1.75 11.75 3.42893 11.75 5.5V6C11.75 8.07107 10.0711 9.75 8 9.75C5.92893 9.75 4.25 8.07107 4.25 6V5.5ZM8 3.25C6.75736 3.25 5.75 4.25736 5.75 5.5V6C5.75 7.24264 6.75736 8.25 8 8.25C9.24264 8.25 10.25 7.24264 10.25 6V5.5C10.25 4.25736 9.24264 3.25 8 3.25Z M2.25 14C2.25 11.9289 3.92893 10.25 6 10.25H10C12.0711 10.25 13.75 11.9289 13.75 14H12.25C12.25 12.7574 11.2426 11.75 10 11.75H6C4.75736 11.75 3.75 12.7574 3.75 14H2.25Z",
"question-mark": "M8 1.75C4.54822 1.75 1.75 4.54822 1.75 8C1.75 11.4518 4.54822 14.25 8 14.25C11.4518 14.25 14.25 11.4518 14.25 8C14.25 4.54822 11.4518 1.75 8 1.75ZM0.25 8C0.25 3.71979 3.71979 0.25 8 0.25C12.2802 0.25 15.75 3.71979 15.75 8C15.75 12.2802 12.2802 15.75 8 15.75C3.71979 15.75 0.25 12.2802 0.25 8Z M8 4.75C7.30964 4.75 6.75 5.30964 6.75 6V7H5.25V6C5.25 4.48122 6.48122 3.25 8 3.25C9.51878 3.25 10.75 4.48122 10.75 6V6.12132C10.75 6.88284 10.4475 7.61317 9.90901 8.15165L8.53033 9.53033L7.46967 8.46967L8.84835 7.09099C9.10552 6.83382 9.25 6.48502 9.25 6.12132V6C9.25 5.30964 8.69036 4.75 8 4.75Z M9 11C9 11.5523 8.55229 12 8 12C7.44772 12 7 11.5523 7 11C7 10.4477 7.44772 10 8 10C8.55229 10 9 10.4477 9 11Z",
"rebase": "M8 9L13 12L8 15L8 12.75L4.5 12.75C3.5335 12.75 2.75 11.9665 2.75 11L2.75 7L4.25 7L4.25 11C4.25 11.1381 4.36193 11.25 4.5 11.25L8 11.25L8 9ZM13.25 9L13.25 5C13.25 4.0335 12.4665 3.25 11.5 3.25L8 3.25L8 1L3 4L8 7L8 4.75L11.5 4.75C11.6381 4.75 11.75 4.86193 11.75 5L11.75 9L13.25 9Z",