main 5041353

favorites_sidebar_css_test.go RawHistoryFolder

1package theme
2
3import (
4	"strings"
5	"testing"
6
7	"github.com/stretchr/testify/assert"
8)
9
10func TestGenerateFavoritesSidebarCSS_ContainsCompactControlStyles(t *testing.T) {
11	css := generateFavoritesSidebarCSS(DefaultDarkPalette())
12
13	for _, selector := range []string{
14		".favorites-sidebar-tags",
15		".favorites-sidebar-tag-filter",
16		".favorites-sidebar-tag-filter-active",
17		".favorites-sidebar-tag-add",
18		".favorites-sidebar-tag-prompt",
19		".favorites-sidebar-tag-binding",
20		".favorites-sidebar-shortcut-badge",
21		".favorites-sidebar-tag-chip",
22		".favorites-sidebar-form",
23		".favorites-sidebar-form-tag-matches",
24		".favorites-sidebar-form-tag-match",
25	} {
26		assert.Contains(t, css, selector+" {")
27	}
28	assert.Contains(t, css, ".favorites-sidebar-tag-filter-active {", "active filters use sidebar-owned styling")
29	assert.NotContains(t, css, ".suggested-action", "native suggested-action geometry must not affect tag filters")
30	assert.Contains(t, css, "font-size: 0.66em;", "tags and shortcut badges stay compact")
31	assert.Contains(t, css, "border-bottom: 0.0625em solid var(--border);", "filters are separated from the list")
32	assert.Contains(t, css, "border-top: 0.0625em solid var(--border);", "the form is separated from the list")
33}
34
35func TestGenerateFavoritesSidebarCSS_UsesSharedThemeVariables(t *testing.T) {
36	css := generateFavoritesSidebarCSS(DefaultDarkPalette())
37
38	assert.Contains(t, css, "var(--surface)")
39	assert.Contains(t, css, "var(--surface-variant)")
40	assert.Contains(t, css, "var(--accent)")
41	assert.NotContains(t, css, DefaultDarkPalette().Accent)
42	assert.Equal(t, css, generateFavoritesSidebarCSS(DefaultLightPalette()))
43}
44
45func TestGenerateFavoritesSidebarCSS_IsRegisteredWithTheFullTheme(t *testing.T) {
46	css := GenerateCSSFull(DefaultDarkPalette(), 1, DefaultFontConfig(), DefaultModeColors())
47
48	assert.Contains(t, css, "Native Sidebar Foundation")
49	assert.Contains(t, css, "Favorites Sidebar Styling")
50	assert.Contains(t, css, ".favorites-sidebar-tag-filter {")
51	assert.Contains(t, css, ".favorites-sidebar-form {")
52	assert.Equal(t, strings.Count(css, "{"), strings.Count(css, "}"))
53}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 8

Tags 42

↑↓ moveenter openesc close