Skip to content

Commit 1312e94

Browse files
authored
feat(header): enhance header controls with new actions and styles (#5870)
1 parent 9c8f9f1 commit 1312e94

File tree

2 files changed

+54
-13
lines changed

2 files changed

+54
-13
lines changed

apps/desktop/src/lib/stack/header/HeaderControlSection.svelte

Lines changed: 53 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,27 @@
11
<script lang="ts">
22
import Icon from '@gitbutler/ui/Icon.svelte';
3+
import Tooltip from '@gitbutler/ui/Tooltip.svelte';
34
45
interface Props {
56
isDefault: boolean;
67
onDefaultSet: () => void;
8+
onCollapseButtonClick: () => void;
79
}
810
9-
const { isDefault, onDefaultSet }: Props = $props();
11+
const { isDefault, onDefaultSet, onCollapseButtonClick }: Props = $props();
1012
</script>
1113

1214
<div class="header-control" class:is-default={isDefault} data-drag-handle>
13-
<div class="draggable-icon" data-drag-handle>
14-
<Icon name="draggable" />
15+
<div class="actions">
16+
<div class="draggable-icon" data-drag-handle>
17+
<Icon name="draggable" />
18+
</div>
19+
20+
<Tooltip text="Collapse lane">
21+
<button type="button" class="action-button" onclick={onCollapseButtonClick}>
22+
<Icon name="fold-lane" />
23+
</button>
24+
</Tooltip>
1525
</div>
1626

1727
<button type="button" class="target-btn" onclick={onDefaultSet} disabled={isDefault}>
@@ -33,21 +43,40 @@
3343
display: flex;
3444
align-items: center;
3545
justify-content: space-between;
36-
padding: 3px 2px 3px 6px;
46+
padding: 4px 2px 4px 6px;
3747
background-color: var(--clr-theme-ntrl-soft);
3848
border: 1px solid var(--clr-border-2);
3949
border-radius: var(--radius-m) var(--radius-m) 0 0;
4050
width: 100%;
4151
52+
--hover-color: oklch(from var(--clr-scale-ntrl-70) l c h / 0.5);
53+
--hover-color-on-target: oklch(from var(--clr-scale-pop-70) l c h / 0.7);
54+
4255
& .draggable-icon {
4356
cursor: grab;
4457
display: flex;
45-
color: var(--clr-scale-ntrl-0);
46-
opacity: 0.3;
47-
transition: opacity var(--transition-fast);
58+
opacity: 0.5;
59+
}
60+
61+
& .actions {
62+
display: flex;
63+
align-items: center;
64+
gap: 4px;
65+
}
66+
67+
& .action-button {
68+
display: flex;
69+
align-items: center;
70+
padding: 2px;
71+
color: var(--clr-text-2);
72+
border-radius: var(--radius-s);
73+
opacity: 0.7;
74+
transition: background-color var(--transition-fast);
4875
4976
&:hover {
50-
opacity: 0.6;
77+
color: var(--clr-text-2);
78+
opacity: 1;
79+
background-color: var(--clr-theme-ntrl-soft-hover);
5180
}
5281
}
5382
@@ -57,19 +86,15 @@
5786
gap: 4px;
5887
padding: 1px 5px 1px 3px;
5988
border-radius: var(--radius-s);
60-
border: 1px solid transparent;
6189
62-
transition:
63-
background-color var(--transition-fast),
64-
border-color var(--transition-fast);
90+
transition: background-color var(--transition-fast);
6591
6692
&:not(:disabled) {
6793
cursor: pointer;
6894
color: var(--clr-theme-ntrl-element);
6995
7096
&:hover {
7197
background-color: var(--clr-theme-ntrl-soft-hover);
72-
border-color: var(--clr-border-2);
7398
}
7499
}
75100
@@ -88,5 +113,20 @@
88113
/* MODIFIERS */
89114
.is-default {
90115
background-color: var(--clr-theme-pop-soft);
116+
117+
& .draggable-icon {
118+
color: var(--clr-theme-pop-on-soft);
119+
}
120+
121+
& .action-button {
122+
color: var(--clr-theme-pop-on-soft);
123+
opacity: 0.5;
124+
125+
&:hover {
126+
color: var(--clr-theme-pop-on-soft);
127+
opacity: 0.7;
128+
background-color: var(--hover-color-on-target);
129+
}
130+
}
91131
}
92132
</style>

apps/desktop/src/lib/stack/header/StackHeader.svelte

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
<div class="stack-header">
2727
<HeaderControlSection
2828
isDefault={branch.selectedForChanges}
29+
{onCollapseButtonClick}
2930
onDefaultSet={async () => {
3031
await branchController.setSelectedForChanges(branch.id);
3132
}}

0 commit comments

Comments
 (0)