v0.29.0 21b3150

config_templ.go RawHistoryFolder

1// Code generated by templ - DO NOT EDIT.
2
3package systemviews
4
5//lint:file-ignore SA4006 This context is only used if a nested component is present.
6
7import "github.com/a-h/templ"
8import templruntime "github.com/a-h/templ/runtime"
9
10import (
11	"github.com/bnema/dumber/internal/application/dto"
12	"github.com/bnema/dumber/internal/application/port"
13)
14
15func ConfigView(data configRenderData) templ.Component {
16	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
17		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
18		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
19			return templ_7745c5c3_CtxErr
20		}
21		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
22		if !templ_7745c5c3_IsBuffer {
23			defer func() {
24				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
25				if templ_7745c5c3_Err == nil {
26					templ_7745c5c3_Err = templ_7745c5c3_BufErr
27				}
28			}()
29		}
30		ctx = templ.InitializeContext(ctx)
31		templ_7745c5c3_Var1 := templ.GetChildren(ctx)
32		if templ_7745c5c3_Var1 == nil {
33			templ_7745c5c3_Var1 = templ.NopComponent
34		}
35		ctx = templ.ClearChildren(ctx)
36		templ_7745c5c3_Err = Alert("success", data.Notice).Render(ctx, templ_7745c5c3_Buffer)
37		if templ_7745c5c3_Err != nil {
38			return templ_7745c5c3_Err
39		}
40		templ_7745c5c3_Err = Alert("error", data.Error).Render(ctx, templ_7745c5c3_Buffer)
41		if templ_7745c5c3_Err != nil {
42			return templ_7745c5c3_Err
43		}
44		templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
45			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
46			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
47			if !templ_7745c5c3_IsBuffer {
48				defer func() {
49					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
50					if templ_7745c5c3_Err == nil {
51						templ_7745c5c3_Err = templ_7745c5c3_BufErr
52					}
53				}()
54			}
55			ctx = templ.InitializeContext(ctx)
56			templ_7745c5c3_Err = AppearanceForm(data.Config).Render(ctx, templ_7745c5c3_Buffer)
57			if templ_7745c5c3_Err != nil {
58				return templ_7745c5c3_Err
59			}
60			return nil
61		})
62		templ_7745c5c3_Err = Section("sv-config-appearance", "Appearance").Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer)
63		if templ_7745c5c3_Err != nil {
64			return templ_7745c5c3_Err
65		}
66		templ_7745c5c3_Var3 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
67			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
68			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
69			if !templ_7745c5c3_IsBuffer {
70				defer func() {
71					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
72					if templ_7745c5c3_Err == nil {
73						templ_7745c5c3_Err = templ_7745c5c3_BufErr
74					}
75				}()
76			}
77			ctx = templ.InitializeContext(ctx)
78			templ_7745c5c3_Err = SearchSettings(data.Config).Render(ctx, templ_7745c5c3_Buffer)
79			if templ_7745c5c3_Err != nil {
80				return templ_7745c5c3_Err
81			}
82			return nil
83		})
84		templ_7745c5c3_Err = Section("sv-config-search", "Search").Render(templ.WithChildren(ctx, templ_7745c5c3_Var3), templ_7745c5c3_Buffer)
85		if templ_7745c5c3_Err != nil {
86			return templ_7745c5c3_Err
87		}
88		templ_7745c5c3_Var4 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
89			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
90			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
91			if !templ_7745c5c3_IsBuffer {
92				defer func() {
93					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
94					if templ_7745c5c3_Err == nil {
95						templ_7745c5c3_Err = templ_7745c5c3_BufErr
96					}
97				}()
98			}
99			ctx = templ.InitializeContext(ctx)
100			templ_7745c5c3_Err = PerformanceSettings(data.Config).Render(ctx, templ_7745c5c3_Buffer)
101			if templ_7745c5c3_Err != nil {
102				return templ_7745c5c3_Err
103			}
104			return nil
105		})
106		templ_7745c5c3_Err = Section("sv-config-performance", "Performance").Render(templ.WithChildren(ctx, templ_7745c5c3_Var4), templ_7745c5c3_Buffer)
107		if templ_7745c5c3_Err != nil {
108			return templ_7745c5c3_Err
109		}
110		templ_7745c5c3_Var5 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
111			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
112			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
113			if !templ_7745c5c3_IsBuffer {
114				defer func() {
115					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
116					if templ_7745c5c3_Err == nil {
117						templ_7745c5c3_Err = templ_7745c5c3_BufErr
118					}
119				}()
120			}
121			ctx = templ.InitializeContext(ctx)
122			templ_7745c5c3_Err = Meta(configKeybindingSummary(data.Keybindings)).Render(ctx, templ_7745c5c3_Buffer)
123			if templ_7745c5c3_Err != nil {
124				return templ_7745c5c3_Err
125			}
126			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, " ")
127			if templ_7745c5c3_Err != nil {
128				return templ_7745c5c3_Err
129			}
130			templ_7745c5c3_Err = ConfigKeybindings(data.Keybindings).Render(ctx, templ_7745c5c3_Buffer)
131			if templ_7745c5c3_Err != nil {
132				return templ_7745c5c3_Err
133			}
134			return nil
135		})
136		templ_7745c5c3_Err = Section("sv-config-keybindings", "Keybindings").Render(templ.WithChildren(ctx, templ_7745c5c3_Var5), templ_7745c5c3_Buffer)
137		if templ_7745c5c3_Err != nil {
138			return templ_7745c5c3_Err
139		}
140		templ_7745c5c3_Var6 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
141			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
142			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
143			if !templ_7745c5c3_IsBuffer {
144				defer func() {
145					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
146					if templ_7745c5c3_Err == nil {
147						templ_7745c5c3_Err = templ_7745c5c3_BufErr
148					}
149				}()
150			}
151			ctx = templ.InitializeContext(ctx)
152			templ_7745c5c3_Err = KV(flattenValues(data.Config)).Render(ctx, templ_7745c5c3_Buffer)
153			if templ_7745c5c3_Err != nil {
154				return templ_7745c5c3_Err
155			}
156			return nil
157		})
158		templ_7745c5c3_Err = Section("sv-config-values", "Current payload").Render(templ.WithChildren(ctx, templ_7745c5c3_Var6), templ_7745c5c3_Buffer)
159		if templ_7745c5c3_Err != nil {
160			return templ_7745c5c3_Err
161		}
162		return nil
163	})
164}
165
166func AppearanceForm(config dto.SystemviewConfigPayload) templ.Component {
167	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
168		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
169		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
170			return templ_7745c5c3_CtxErr
171		}
172		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
173		if !templ_7745c5c3_IsBuffer {
174			defer func() {
175				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
176				if templ_7745c5c3_Err == nil {
177					templ_7745c5c3_Err = templ_7745c5c3_BufErr
178				}
179			}()
180		}
181		ctx = templ.InitializeContext(ctx)
182		templ_7745c5c3_Var7 := templ.GetChildren(ctx)
183		if templ_7745c5c3_Var7 == nil {
184			templ_7745c5c3_Var7 = templ.NopComponent
185		}
186		ctx = templ.ClearChildren(ctx)
187		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<form class=\"sv-card-form sv-config-form\" data-sv-action=\"config.appearance.save\"><label><span>Sans font</span><input name=\"sans_font\" type=\"text\" value=\"")
188		if templ_7745c5c3_Err != nil {
189			return templ_7745c5c3_Err
190		}
191		var templ_7745c5c3_Var8 string
192		templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.ResolveAttributeValue(config.Appearance.SansFont)
193		if templ_7745c5c3_Err != nil {
194			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 31, Col: 101}
195		}
196		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var8)
197		if templ_7745c5c3_Err != nil {
198			return templ_7745c5c3_Err
199		}
200		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "\" required></label> <label><span>Serif font</span><input name=\"serif_font\" type=\"text\" value=\"")
201		if templ_7745c5c3_Err != nil {
202			return templ_7745c5c3_Err
203		}
204		var templ_7745c5c3_Var9 string
205		templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.ResolveAttributeValue(config.Appearance.SerifFont)
206		if templ_7745c5c3_Err != nil {
207			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 32, Col: 104}
208		}
209		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var9)
210		if templ_7745c5c3_Err != nil {
211			return templ_7745c5c3_Err
212		}
213		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "\" required></label> <label><span>Monospace font</span><input name=\"monospace_font\" type=\"text\" value=\"")
214		if templ_7745c5c3_Err != nil {
215			return templ_7745c5c3_Err
216		}
217		var templ_7745c5c3_Var10 string
218		templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.ResolveAttributeValue(config.Appearance.MonospaceFont)
219		if templ_7745c5c3_Err != nil {
220			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 33, Col: 116}
221		}
222		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var10)
223		if templ_7745c5c3_Err != nil {
224			return templ_7745c5c3_Err
225		}
226		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "\" required></label> <label><span>GTK UI font</span><input name=\"gtk_font\" type=\"text\" value=\"")
227		if templ_7745c5c3_Err != nil {
228			return templ_7745c5c3_Err
229		}
230		var templ_7745c5c3_Var11 string
231		templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.ResolveAttributeValue(config.Appearance.GtkFont)
232		if templ_7745c5c3_Err != nil {
233			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 34, Col: 101}
234		}
235		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var11)
236		if templ_7745c5c3_Err != nil {
237			return templ_7745c5c3_Err
238		}
239		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "\" required></label> <label><span>Default font size</span><input name=\"default_font_size\" type=\"number\" min=\"1\" max=\"72\" value=\"")
240		if templ_7745c5c3_Err != nil {
241			return templ_7745c5c3_Err
242		}
243		var templ_7745c5c3_Var12 string
244		templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.ResolveAttributeValue(formatConfigInt(config.Appearance.DefaultFontSize))
245		if templ_7745c5c3_Err != nil {
246			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 35, Col: 160}
247		}
248		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var12)
249		if templ_7745c5c3_Err != nil {
250			return templ_7745c5c3_Err
251		}
252		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "\" required></label> <label><span>UI scale</span><input name=\"default_ui_scale\" type=\"number\" min=\"0.5\" max=\"3\" step=\"0.05\" value=\"")
253		if templ_7745c5c3_Err != nil {
254			return templ_7745c5c3_Err
255		}
256		var templ_7745c5c3_Var13 string
257		templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.ResolveAttributeValue(formatConfigFloat(config.DefaultUIScale))
258		if templ_7745c5c3_Err != nil {
259			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 36, Col: 153}
260		}
261		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var13)
262		if templ_7745c5c3_Err != nil {
263			return templ_7745c5c3_Err
264		}
265		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "\" required></label> <label><span>Color scheme</span><select name=\"color_scheme\"><option value=\"default\"")
266		if templ_7745c5c3_Err != nil {
267			return templ_7745c5c3_Err
268		}
269		if colorSchemeSelected(config.Appearance.ColorScheme, "default") {
270			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, " selected")
271			if templ_7745c5c3_Err != nil {
272				return templ_7745c5c3_Err
273			}
274		}
275		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, ">System default</option> <option value=\"prefer-light\"")
276		if templ_7745c5c3_Err != nil {
277			return templ_7745c5c3_Err
278		}
279		if colorSchemeSelected(config.Appearance.ColorScheme, "prefer-light") {
280			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, " selected")
281			if templ_7745c5c3_Err != nil {
282				return templ_7745c5c3_Err
283			}
284		}
285		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, ">Prefer light</option> <option value=\"prefer-dark\"")
286		if templ_7745c5c3_Err != nil {
287			return templ_7745c5c3_Err
288		}
289		if colorSchemeSelected(config.Appearance.ColorScheme, "prefer-dark") {
290			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, " selected")
291			if templ_7745c5c3_Err != nil {
292				return templ_7745c5c3_Err
293			}
294		}
295		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, ">Prefer dark</option></select></label>")
296		if templ_7745c5c3_Err != nil {
297			return templ_7745c5c3_Err
298		}
299		templ_7745c5c3_Err = PaletteFields("Light palette", "light", config.Appearance.LightPalette).Render(ctx, templ_7745c5c3_Buffer)
300		if templ_7745c5c3_Err != nil {
301			return templ_7745c5c3_Err
302		}
303		templ_7745c5c3_Err = PaletteFields("Dark palette", "dark", config.Appearance.DarkPalette).Render(ctx, templ_7745c5c3_Buffer)
304		if templ_7745c5c3_Err != nil {
305			return templ_7745c5c3_Err
306		}
307		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "<div class=\"sv-button-row sv-form-actions\"><button class=\"sv-button\" type=\"submit\">")
308		if templ_7745c5c3_Err != nil {
309			return templ_7745c5c3_Err
310		}
311		templ_7745c5c3_Err = ButtonIconLabel(iconSave, "Save appearance").Render(ctx, templ_7745c5c3_Buffer)
312		if templ_7745c5c3_Err != nil {
313			return templ_7745c5c3_Err
314		}
315		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "</button> <button class=\"sv-button sv-button-secondary\" type=\"button\" data-sv-action=\"config.appearance.reset\" data-sv-confirm=\"Reset appearance settings to defaults?\">")
316		if templ_7745c5c3_Err != nil {
317			return templ_7745c5c3_Err
318		}
319		templ_7745c5c3_Err = ButtonIconLabel(iconRotateCCW, "Reset appearance").Render(ctx, templ_7745c5c3_Buffer)
320		if templ_7745c5c3_Err != nil {
321			return templ_7745c5c3_Err
322		}
323		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "</button></div></form>")
324		if templ_7745c5c3_Err != nil {
325			return templ_7745c5c3_Err
326		}
327		return nil
328	})
329}
330
331func PaletteFields(title string, prefix string, palette dto.ColorPalette) templ.Component {
332	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
333		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
334		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
335			return templ_7745c5c3_CtxErr
336		}
337		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
338		if !templ_7745c5c3_IsBuffer {
339			defer func() {
340				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
341				if templ_7745c5c3_Err == nil {
342					templ_7745c5c3_Err = templ_7745c5c3_BufErr
343				}
344			}()
345		}
346		ctx = templ.InitializeContext(ctx)
347		templ_7745c5c3_Var14 := templ.GetChildren(ctx)
348		if templ_7745c5c3_Var14 == nil {
349			templ_7745c5c3_Var14 = templ.NopComponent
350		}
351		ctx = templ.ClearChildren(ctx)
352		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "<fieldset class=\"sv-fieldset\"><legend>")
353		if templ_7745c5c3_Err != nil {
354			return templ_7745c5c3_Err
355		}
356		var templ_7745c5c3_Var15 string
357		templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(title)
358		if templ_7745c5c3_Err != nil {
359			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 53, Col: 17}
360		}
361		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
362		if templ_7745c5c3_Err != nil {
363			return templ_7745c5c3_Err
364		}
365		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</legend> <label><span>Background</span><input name=\"")
366		if templ_7745c5c3_Err != nil {
367			return templ_7745c5c3_Err
368		}
369		var templ_7745c5c3_Var16 string
370		templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.ResolveAttributeValue(prefix + "_background")
371		if templ_7745c5c3_Err != nil {
372			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 54, Col: 68}
373		}
374		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var16)
375		if templ_7745c5c3_Err != nil {
376			return templ_7745c5c3_Err
377		}
378		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "\" type=\"text\" value=\"")
379		if templ_7745c5c3_Err != nil {
380			return templ_7745c5c3_Err
381		}
382		var templ_7745c5c3_Var17 string
383		templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.ResolveAttributeValue(palette.Background)
384		if templ_7745c5c3_Err != nil {
385			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 54, Col: 109}
386		}
387		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var17)
388		if templ_7745c5c3_Err != nil {
389			return templ_7745c5c3_Err
390		}
391		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "\" required></label> <label><span>Surface</span><input name=\"")
392		if templ_7745c5c3_Err != nil {
393			return templ_7745c5c3_Err
394		}
395		var templ_7745c5c3_Var18 string
396		templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.ResolveAttributeValue(prefix + "_surface")
397		if templ_7745c5c3_Err != nil {
398			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 55, Col: 62}
399		}
400		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var18)
401		if templ_7745c5c3_Err != nil {
402			return templ_7745c5c3_Err
403		}
404		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "\" type=\"text\" value=\"")
405		if templ_7745c5c3_Err != nil {
406			return templ_7745c5c3_Err
407		}
408		var templ_7745c5c3_Var19 string
409		templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.ResolveAttributeValue(palette.Surface)
410		if templ_7745c5c3_Err != nil {
411			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 55, Col: 100}
412		}
413		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var19)
414		if templ_7745c5c3_Err != nil {
415			return templ_7745c5c3_Err
416		}
417		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "\" required></label> <label><span>Surface variant</span><input name=\"")
418		if templ_7745c5c3_Err != nil {
419			return templ_7745c5c3_Err
420		}
421		var templ_7745c5c3_Var20 string
422		templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.ResolveAttributeValue(prefix + "_surface_variant")
423		if templ_7745c5c3_Err != nil {
424			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 56, Col: 78}
425		}
426		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var20)
427		if templ_7745c5c3_Err != nil {
428			return templ_7745c5c3_Err
429		}
430		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "\" type=\"text\" value=\"")
431		if templ_7745c5c3_Err != nil {
432			return templ_7745c5c3_Err
433		}
434		var templ_7745c5c3_Var21 string
435		templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.ResolveAttributeValue(palette.SurfaceVariant)
436		if templ_7745c5c3_Err != nil {
437			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 56, Col: 123}
438		}
439		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var21)
440		if templ_7745c5c3_Err != nil {
441			return templ_7745c5c3_Err
442		}
443		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "\" required></label> <label><span>Text</span><input name=\"")
444		if templ_7745c5c3_Err != nil {
445			return templ_7745c5c3_Err
446		}
447		var templ_7745c5c3_Var22 string
448		templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.ResolveAttributeValue(prefix + "_text")
449		if templ_7745c5c3_Err != nil {
450			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 57, Col: 56}
451		}
452		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var22)
453		if templ_7745c5c3_Err != nil {
454			return templ_7745c5c3_Err
455		}
456		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "\" type=\"text\" value=\"")
457		if templ_7745c5c3_Err != nil {
458			return templ_7745c5c3_Err
459		}
460		var templ_7745c5c3_Var23 string
461		templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.ResolveAttributeValue(palette.Text)
462		if templ_7745c5c3_Err != nil {
463			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 57, Col: 91}
464		}
465		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var23)
466		if templ_7745c5c3_Err != nil {
467			return templ_7745c5c3_Err
468		}
469		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "\" required></label> <label><span>Muted</span><input name=\"")
470		if templ_7745c5c3_Err != nil {
471			return templ_7745c5c3_Err
472		}
473		var templ_7745c5c3_Var24 string
474		templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.ResolveAttributeValue(prefix + "_muted")
475		if templ_7745c5c3_Err != nil {
476			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 58, Col: 58}
477		}
478		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var24)
479		if templ_7745c5c3_Err != nil {
480			return templ_7745c5c3_Err
481		}
482		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "\" type=\"text\" value=\"")
483		if templ_7745c5c3_Err != nil {
484			return templ_7745c5c3_Err
485		}
486		var templ_7745c5c3_Var25 string
487		templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.ResolveAttributeValue(palette.Muted)
488		if templ_7745c5c3_Err != nil {
489			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 58, Col: 94}
490		}
491		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var25)
492		if templ_7745c5c3_Err != nil {
493			return templ_7745c5c3_Err
494		}
495		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "\" required></label> <label><span>Accent</span><input name=\"")
496		if templ_7745c5c3_Err != nil {
497			return templ_7745c5c3_Err
498		}
499		var templ_7745c5c3_Var26 string
500		templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.ResolveAttributeValue(prefix + "_accent")
501		if templ_7745c5c3_Err != nil {
502			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 59, Col: 60}
503		}
504		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var26)
505		if templ_7745c5c3_Err != nil {
506			return templ_7745c5c3_Err
507		}
508		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "\" type=\"text\" value=\"")
509		if templ_7745c5c3_Err != nil {
510			return templ_7745c5c3_Err
511		}
512		var templ_7745c5c3_Var27 string
513		templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.ResolveAttributeValue(palette.Accent)
514		if templ_7745c5c3_Err != nil {
515			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 59, Col: 97}
516		}
517		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var27)
518		if templ_7745c5c3_Err != nil {
519			return templ_7745c5c3_Err
520		}
521		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "\" required></label> <label><span>Border</span><input name=\"")
522		if templ_7745c5c3_Err != nil {
523			return templ_7745c5c3_Err
524		}
525		var templ_7745c5c3_Var28 string
526		templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.ResolveAttributeValue(prefix + "_border")
527		if templ_7745c5c3_Err != nil {
528			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 60, Col: 60}
529		}
530		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var28)
531		if templ_7745c5c3_Err != nil {
532			return templ_7745c5c3_Err
533		}
534		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "\" type=\"text\" value=\"")
535		if templ_7745c5c3_Err != nil {
536			return templ_7745c5c3_Err
537		}
538		var templ_7745c5c3_Var29 string
539		templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.ResolveAttributeValue(palette.Border)
540		if templ_7745c5c3_Err != nil {
541			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 60, Col: 97}
542		}
543		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var29)
544		if templ_7745c5c3_Err != nil {
545			return templ_7745c5c3_Err
546		}
547		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "\" required></label></fieldset>")
548		if templ_7745c5c3_Err != nil {
549			return templ_7745c5c3_Err
550		}
551		return nil
552	})
553}
554
555func SearchSettings(config dto.SystemviewConfigPayload) templ.Component {
556	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
557		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
558		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
559			return templ_7745c5c3_CtxErr
560		}
561		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
562		if !templ_7745c5c3_IsBuffer {
563			defer func() {
564				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
565				if templ_7745c5c3_Err == nil {
566					templ_7745c5c3_Err = templ_7745c5c3_BufErr
567				}
568			}()
569		}
570		ctx = templ.InitializeContext(ctx)
571		templ_7745c5c3_Var30 := templ.GetChildren(ctx)
572		if templ_7745c5c3_Var30 == nil {
573			templ_7745c5c3_Var30 = templ.NopComponent
574		}
575		ctx = templ.ClearChildren(ctx)
576		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "<form class=\"sv-card-form\" data-sv-action=\"config.search.save\"><label><span>Default search engine</span><input name=\"default_search_engine\" type=\"text\" value=\"")
577		if templ_7745c5c3_Err != nil {
578			return templ_7745c5c3_Err
579		}
580		var templ_7745c5c3_Var31 string
581		templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.ResolveAttributeValue(config.DefaultSearchEngine)
582		if templ_7745c5c3_Err != nil {
583			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 66, Col: 125}
584		}
585		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var31)
586		if templ_7745c5c3_Err != nil {
587			return templ_7745c5c3_Err
588		}
589		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "\" placeholder=\"https://duckduckgo.com/?q=%s\" required></label> <button class=\"sv-button\" type=\"submit\">")
590		if templ_7745c5c3_Err != nil {
591			return templ_7745c5c3_Err
592		}
593		templ_7745c5c3_Err = ButtonIconLabel(iconSave, "Save search default").Render(ctx, templ_7745c5c3_Buffer)
594		if templ_7745c5c3_Err != nil {
595			return templ_7745c5c3_Err
596		}
597		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "</button></form><div class=\"sv-group\"><div class=\"sv-group-header\"><h4>Search shortcuts</h4></div><p class=\"sv-meta\">Shortcut URLs must include the %s placeholder for the search query.</p><form class=\"sv-inline-form\" data-sv-action=\"config.searchShortcut.create\"><label><span>Key</span><input name=\"key\" type=\"text\" placeholder=\"ddg\" required></label> <label><span>URL</span><input name=\"url\" type=\"text\" placeholder=\"https://duckduckgo.com/?q=%s\" pattern=\".*%s.*\" required></label> <label><span>Description</span><input name=\"description\" type=\"text\" placeholder=\"DuckDuckGo\"></label> <button class=\"sv-button sv-button-secondary\" type=\"submit\">")
598		if templ_7745c5c3_Err != nil {
599			return templ_7745c5c3_Err
600		}
601		templ_7745c5c3_Err = ButtonIconLabel(iconPlus, "Add shortcut").Render(ctx, templ_7745c5c3_Buffer)
602		if templ_7745c5c3_Err != nil {
603			return templ_7745c5c3_Err
604		}
605		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "</button></form>")
606		if templ_7745c5c3_Err != nil {
607			return templ_7745c5c3_Err
608		}
609		shortcuts := searchShortcutRows(config.SearchShortcuts)
610		if len(shortcuts) == 0 {
611			templ_7745c5c3_Err = EmptyState("No search shortcuts configured").Render(ctx, templ_7745c5c3_Buffer)
612			if templ_7745c5c3_Err != nil {
613				return templ_7745c5c3_Err
614			}
615		} else {
616			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "<ul class=\"sv-list\">")
617			if templ_7745c5c3_Err != nil {
618				return templ_7745c5c3_Err
619			}
620			for _, shortcut := range shortcuts {
621				templ_7745c5c3_Err = SearchShortcutItem(shortcut).Render(ctx, templ_7745c5c3_Buffer)
622				if templ_7745c5c3_Err != nil {
623					return templ_7745c5c3_Err
624				}
625			}
626			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "</ul>")
627			if templ_7745c5c3_Err != nil {
628				return templ_7745c5c3_Err
629			}
630		}
631		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</div>")
632		if templ_7745c5c3_Err != nil {
633			return templ_7745c5c3_Err
634		}
635		return nil
636	})
637}
638
639func SearchShortcutItem(shortcut searchShortcutRow) templ.Component {
640	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
641		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
642		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
643			return templ_7745c5c3_CtxErr
644		}
645		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
646		if !templ_7745c5c3_IsBuffer {
647			defer func() {
648				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
649				if templ_7745c5c3_Err == nil {
650					templ_7745c5c3_Err = templ_7745c5c3_BufErr
651				}
652			}()
653		}
654		ctx = templ.InitializeContext(ctx)
655		templ_7745c5c3_Var32 := templ.GetChildren(ctx)
656		if templ_7745c5c3_Var32 == nil {
657			templ_7745c5c3_Var32 = templ.NopComponent
658		}
659		ctx = templ.ClearChildren(ctx)
660		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "<li class=\"sv-list-row\"><form class=\"sv-inline-form\" data-sv-action=\"config.searchShortcut.update\"><input type=\"hidden\" name=\"key\" value=\"")
661		if templ_7745c5c3_Err != nil {
662			return templ_7745c5c3_Err
663		}
664		var templ_7745c5c3_Var33 string
665		templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.ResolveAttributeValue(shortcut.Key)
666		if templ_7745c5c3_Err != nil {
667			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 94, Col: 55}
668		}
669		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var33)
670		if templ_7745c5c3_Err != nil {
671			return templ_7745c5c3_Err
672		}
673		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "\"> <label><span>Key</span><input name=\"new_key\" type=\"text\" value=\"")
674		if templ_7745c5c3_Err != nil {
675			return templ_7745c5c3_Err
676		}
677		var templ_7745c5c3_Var34 string
678		templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.ResolveAttributeValue(shortcut.Key)
679		if templ_7745c5c3_Err != nil {
680			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 95, Col: 80}
681		}
682		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var34)
683		if templ_7745c5c3_Err != nil {
684			return templ_7745c5c3_Err
685		}
686		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "\" required></label> <label><span>URL</span><input name=\"url\" type=\"text\" value=\"")
687		if templ_7745c5c3_Err != nil {
688			return templ_7745c5c3_Err
689		}
690		var templ_7745c5c3_Var35 string
691		templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.ResolveAttributeValue(shortcut.URL)
692		if templ_7745c5c3_Err != nil {
693			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 96, Col: 76}
694		}
695		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var35)
696		if templ_7745c5c3_Err != nil {
697			return templ_7745c5c3_Err
698		}
699		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "\" pattern=\".*%s.*\" required></label> <label><span>Description</span><input name=\"description\" type=\"text\" value=\"")
700		if templ_7745c5c3_Err != nil {
701			return templ_7745c5c3_Err
702		}
703		var templ_7745c5c3_Var36 string
704		templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.ResolveAttributeValue(shortcut.Description)
705		if templ_7745c5c3_Err != nil {
706			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 97, Col: 100}
707		}
708		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var36)
709		if templ_7745c5c3_Err != nil {
710			return templ_7745c5c3_Err
711		}
712		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "\"></label> <button class=\"sv-button sv-button-secondary\" type=\"submit\">")
713		if templ_7745c5c3_Err != nil {
714			return templ_7745c5c3_Err
715		}
716		templ_7745c5c3_Err = ButtonIconLabel(iconSave, "Save").Render(ctx, templ_7745c5c3_Buffer)
717		if templ_7745c5c3_Err != nil {
718			return templ_7745c5c3_Err
719		}
720		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "</button> <button class=\"sv-button sv-button-secondary sv-button-danger sv-button-icon-only\" type=\"button\" data-sv-action=\"config.searchShortcut.delete\" data-key=\"")
721		if templ_7745c5c3_Err != nil {
722			return templ_7745c5c3_Err
723		}
724		var templ_7745c5c3_Var37 string
725		templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.ResolveAttributeValue(shortcut.Key)
726		if templ_7745c5c3_Err != nil {
727			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 99, Col: 169}
728		}
729		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var37)
730		if templ_7745c5c3_Err != nil {
731			return templ_7745c5c3_Err
732		}
733		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "\" data-sv-confirm=\"Delete this search shortcut?\" aria-label=\"")
734		if templ_7745c5c3_Err != nil {
735			return templ_7745c5c3_Err
736		}
737		var templ_7745c5c3_Var38 string
738		templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.ResolveAttributeValue("Delete search shortcut " + shortcut.Key)
739		if templ_7745c5c3_Err != nil {
740			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 99, Col: 272}
741		}
742		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var38)
743		if templ_7745c5c3_Err != nil {
744			return templ_7745c5c3_Err
745		}
746		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "\">")
747		if templ_7745c5c3_Err != nil {
748			return templ_7745c5c3_Err
749		}
750		templ_7745c5c3_Err = IconOnly(iconTrash, "Delete search shortcut "+shortcut.Key).Render(ctx, templ_7745c5c3_Buffer)
751		if templ_7745c5c3_Err != nil {
752			return templ_7745c5c3_Err
753		}
754		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "</button></form></li>")
755		if templ_7745c5c3_Err != nil {
756			return templ_7745c5c3_Err
757		}
758		return nil
759	})
760}
761
762func PerformanceSettings(config dto.SystemviewConfigPayload) templ.Component {
763	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
764		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
765		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
766			return templ_7745c5c3_CtxErr
767		}
768		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
769		if !templ_7745c5c3_IsBuffer {
770			defer func() {
771				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
772				if templ_7745c5c3_Err == nil {
773					templ_7745c5c3_Err = templ_7745c5c3_BufErr
774				}
775			}()
776		}
777		ctx = templ.InitializeContext(ctx)
778		templ_7745c5c3_Var39 := templ.GetChildren(ctx)
779		if templ_7745c5c3_Var39 == nil {
780			templ_7745c5c3_Var39 = templ.NopComponent
781		}
782		ctx = templ.ClearChildren(ctx)
783		customProfile := performanceProfileSelected(config.Performance.Profile, "custom")
784		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "<form class=\"sv-card-form sv-config-form\" data-sv-action=\"config.performance.save\" data-sv-performance-form><label><span>Profile</span><select name=\"profile\" data-sv-performance-profile><option value=\"default\"")
785		if templ_7745c5c3_Err != nil {
786			return templ_7745c5c3_Err
787		}
788		if performanceProfileSelected(config.Performance.Profile, "default") {
789			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, " selected")
790			if templ_7745c5c3_Err != nil {
791				return templ_7745c5c3_Err
792			}
793		}
794		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, ">Default</option> <option value=\"balanced\"")
795		if templ_7745c5c3_Err != nil {
796			return templ_7745c5c3_Err
797		}
798		if performanceProfileSelected(config.Performance.Profile, "balanced") {
799			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, " selected")
800			if templ_7745c5c3_Err != nil {
801				return templ_7745c5c3_Err
802			}
803		}
804		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, ">Balanced</option> <option value=\"lite\"")
805		if templ_7745c5c3_Err != nil {
806			return templ_7745c5c3_Err
807		}
808		if performanceProfileSelected(config.Performance.Profile, "lite") {
809			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, " selected")
810			if templ_7745c5c3_Err != nil {
811				return templ_7745c5c3_Err
812			}
813		}
814		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, ">Lite</option> <option value=\"max\"")
815		if templ_7745c5c3_Err != nil {
816			return templ_7745c5c3_Err
817		}
818		if performanceProfileSelected(config.Performance.Profile, "max") {
819			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, " selected")
820			if templ_7745c5c3_Err != nil {
821				return templ_7745c5c3_Err
822			}
823		}
824		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, ">Max</option> <option value=\"custom\"")
825		if templ_7745c5c3_Err != nil {
826			return templ_7745c5c3_Err
827		}
828		if performanceProfileSelected(config.Performance.Profile, "custom") {
829			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, " selected")
830			if templ_7745c5c3_Err != nil {
831				return templ_7745c5c3_Err
832			}
833		}
834		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, ">Custom</option></select></label><p class=\"sv-meta\">Choose Custom to edit individual performance values.</p><label><span>Skia CPU threads</span><input name=\"skia_cpu_threads\" type=\"number\" min=\"0\" max=\"8\" value=\"")
835		if templ_7745c5c3_Err != nil {
836			return templ_7745c5c3_Err
837		}
838		var templ_7745c5c3_Var40 string
839		templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.ResolveAttributeValue(formatConfigInt(config.Performance.Custom.SkiaCPUThreads))
840		if templ_7745c5c3_Err != nil {
841			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 115, Col: 164}
842		}
843		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var40)
844		if templ_7745c5c3_Err != nil {
845			return templ_7745c5c3_Err
846		}
847		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "\"")
848		if templ_7745c5c3_Err != nil {
849			return templ_7745c5c3_Err
850		}
851		if !customProfile {
852			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, " disabled")
853			if templ_7745c5c3_Err != nil {
854				return templ_7745c5c3_Err
855			}
856		}
857		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, " data-sv-performance-custom></label> <label><span>Skia GPU threads</span><input name=\"skia_gpu_threads\" type=\"number\" min=\"-1\" max=\"8\" value=\"")
858		if templ_7745c5c3_Err != nil {
859			return templ_7745c5c3_Err
860		}
861		var templ_7745c5c3_Var41 string
862		templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.ResolveAttributeValue(formatConfigInt(config.Performance.Custom.SkiaGPUThreads))
863		if templ_7745c5c3_Err != nil {
864			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 116, Col: 165}
865		}
866		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var41)
867		if templ_7745c5c3_Err != nil {
868			return templ_7745c5c3_Err
869		}
870		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "\"")
871		if templ_7745c5c3_Err != nil {
872			return templ_7745c5c3_Err
873		}
874		if !customProfile {
875			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, " disabled")
876			if templ_7745c5c3_Err != nil {
877				return templ_7745c5c3_Err
878			}
879		}
880		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, " data-sv-performance-custom></label> <label><span>Web process memory MB</span><input name=\"web_process_memory_mb\" type=\"number\" min=\"0\" max=\"16384\" value=\"")
881		if templ_7745c5c3_Err != nil {
882			return templ_7745c5c3_Err
883		}
884		var templ_7745c5c3_Var42 string
885		templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.ResolveAttributeValue(formatConfigInt(config.Performance.Custom.WebProcessMemoryMB))
886		if templ_7745c5c3_Err != nil {
887			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 117, Col: 182}
888		}
889		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var42)
890		if templ_7745c5c3_Err != nil {
891			return templ_7745c5c3_Err
892		}
893		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "\"")
894		if templ_7745c5c3_Err != nil {
895			return templ_7745c5c3_Err
896		}
897		if !customProfile {
898			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, " disabled")
899			if templ_7745c5c3_Err != nil {
900				return templ_7745c5c3_Err
901			}
902		}
903		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, " data-sv-performance-custom></label> <label><span>Network process memory MB</span><input name=\"network_process_memory_mb\" type=\"number\" min=\"0\" max=\"4096\" value=\"")
904		if templ_7745c5c3_Err != nil {
905			return templ_7745c5c3_Err
906		}
907		var templ_7745c5c3_Var43 string
908		templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.ResolveAttributeValue(formatConfigInt(config.Performance.Custom.NetworkProcessMemoryMB))
909		if templ_7745c5c3_Err != nil {
910			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 118, Col: 193}
911		}
912		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var43)
913		if templ_7745c5c3_Err != nil {
914			return templ_7745c5c3_Err
915		}
916		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "\"")
917		if templ_7745c5c3_Err != nil {
918			return templ_7745c5c3_Err
919		}
920		if !customProfile {
921			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, " disabled")
922			if templ_7745c5c3_Err != nil {
923				return templ_7745c5c3_Err
924			}
925		}
926		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, " data-sv-performance-custom></label> <label><span>WebView pool prewarm</span><input name=\"webview_pool_prewarm\" type=\"number\" min=\"0\" max=\"20\" value=\"")
927		if templ_7745c5c3_Err != nil {
928			return templ_7745c5c3_Err
929		}
930		var templ_7745c5c3_Var44 string
931		templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.ResolveAttributeValue(formatConfigInt(config.Performance.Custom.WebViewPoolPrewarm))
932		if templ_7745c5c3_Err != nil {
933			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 119, Col: 177}
934		}
935		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var44)
936		if templ_7745c5c3_Err != nil {
937			return templ_7745c5c3_Err
938		}
939		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "\"")
940		if templ_7745c5c3_Err != nil {
941			return templ_7745c5c3_Err
942		}
943		if !customProfile {
944			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, " disabled")
945			if templ_7745c5c3_Err != nil {
946				return templ_7745c5c3_Err
947			}
948		}
949		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, " data-sv-performance-custom></label> <button class=\"sv-button\" type=\"submit\">")
950		if templ_7745c5c3_Err != nil {
951			return templ_7745c5c3_Err
952		}
953		templ_7745c5c3_Err = ButtonIconLabel(iconSave, "Save performance").Render(ctx, templ_7745c5c3_Buffer)
954		if templ_7745c5c3_Err != nil {
955			return templ_7745c5c3_Err
956		}
957		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "</button></form><div class=\"sv-stat-grid\"><div class=\"sv-stat-card\"><span class=\"sv-stat-value\">")
958		if templ_7745c5c3_Err != nil {
959			return templ_7745c5c3_Err
960		}
961		var templ_7745c5c3_Var45 string
962		templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.JoinStringErrs(formatConfigInt(config.Performance.Hardware.CPUThreads))
963		if templ_7745c5c3_Err != nil {
964			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 123, Col: 113}
965		}
966		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var45))
967		if templ_7745c5c3_Err != nil {
968			return templ_7745c5c3_Err
969		}
970		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "</span><span class=\"sv-stat-label\">CPU threads</span></div><div class=\"sv-stat-card\"><span class=\"sv-stat-value\">")
971		if templ_7745c5c3_Err != nil {
972			return templ_7745c5c3_Err
973		}
974		var templ_7745c5c3_Var46 string
975		templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(formatConfigInt(config.Performance.Hardware.TotalRAMMB))
976		if templ_7745c5c3_Err != nil {
977			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 124, Col: 113}
978		}
979		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46))
980		if templ_7745c5c3_Err != nil {
981			return templ_7745c5c3_Err
982		}
983		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "</span><span class=\"sv-stat-label\">RAM MB</span></div><div class=\"sv-stat-card\"><span class=\"sv-stat-value\">")
984		if templ_7745c5c3_Err != nil {
985			return templ_7745c5c3_Err
986		}
987		var templ_7745c5c3_Var47 string
988		templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinStringErrs(config.Performance.Hardware.GPUName)
989		if templ_7745c5c3_Err != nil {
990			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 125, Col: 93}
991		}
992		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47))
993		if templ_7745c5c3_Err != nil {
994			return templ_7745c5c3_Err
995		}
996		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "</span><span class=\"sv-stat-label\">GPU</span></div><div class=\"sv-stat-card\"><span class=\"sv-stat-value\">")
997		if templ_7745c5c3_Err != nil {
998			return templ_7745c5c3_Err
999		}
1000		var templ_7745c5c3_Var48 string
1001		templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinStringErrs(config.EngineType)
1002		if templ_7745c5c3_Err != nil {
1003			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 126, Col: 75}
1004		}
1005		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48))
1006		if templ_7745c5c3_Err != nil {
1007			return templ_7745c5c3_Err
1008		}
1009		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "</span><span class=\"sv-stat-label\">Engine</span></div></div>")
1010		if templ_7745c5c3_Err != nil {
1011			return templ_7745c5c3_Err
1012		}
1013		if !engineIsWebKit(config.EngineType) {
1014			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "<p class=\"sv-meta\">Performance tuning applies only to the WebKit engine.</p>")
1015			if templ_7745c5c3_Err != nil {
1016				return templ_7745c5c3_Err
1017			}
1018		} else {
1019			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "<p class=\"sv-meta\">Performance profile changes may require restarting the browser to affect existing engine processes.</p>")
1020			if templ_7745c5c3_Err != nil {
1021				return templ_7745c5c3_Err
1022			}
1023		}
1024		return nil
1025	})
1026}
1027
1028func ConfigKeybindings(keybindings port.KeybindingsConfig) templ.Component {
1029	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1030		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1031		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1032			return templ_7745c5c3_CtxErr
1033		}
1034		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1035		if !templ_7745c5c3_IsBuffer {
1036			defer func() {
1037				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1038				if templ_7745c5c3_Err == nil {
1039					templ_7745c5c3_Err = templ_7745c5c3_BufErr
1040				}
1041			}()
1042		}
1043		ctx = templ.InitializeContext(ctx)
1044		templ_7745c5c3_Var49 := templ.GetChildren(ctx)
1045		if templ_7745c5c3_Var49 == nil {
1046			templ_7745c5c3_Var49 = templ.NopComponent
1047		}
1048		ctx = templ.ClearChildren(ctx)
1049		groups := configKeybindingGroups(keybindings)
1050		if groups == nil {
1051			templ_7745c5c3_Err = EmptyState("Keybindings unavailable").Render(ctx, templ_7745c5c3_Buffer)
1052			if templ_7745c5c3_Err != nil {
1053				return templ_7745c5c3_Err
1054			}
1055		} else if len(groups) == 0 {
1056			templ_7745c5c3_Err = EmptyState("No keybindings configured").Render(ctx, templ_7745c5c3_Buffer)
1057			if templ_7745c5c3_Err != nil {
1058				return templ_7745c5c3_Err
1059			}
1060		} else {
1061			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "<div class=\"sv-button-row\"><button class=\"sv-button sv-button-secondary sv-button-danger\" type=\"button\" data-sv-action=\"config.keybinding.resetAll\" data-sv-confirm=\"Reset all keybindings to defaults?\">")
1062			if templ_7745c5c3_Err != nil {
1063				return templ_7745c5c3_Err
1064			}
1065			templ_7745c5c3_Err = ButtonIconLabel(iconRotateCCW, "Reset all keybindings").Render(ctx, templ_7745c5c3_Buffer)
1066			if templ_7745c5c3_Err != nil {
1067				return templ_7745c5c3_Err
1068			}
1069			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "</button></div>")
1070			if templ_7745c5c3_Err != nil {
1071				return templ_7745c5c3_Err
1072			}
1073			for _, group := range groups {
1074				templ_7745c5c3_Err = ConfigKeybindingGroup(group).Render(ctx, templ_7745c5c3_Buffer)
1075				if templ_7745c5c3_Err != nil {
1076					return templ_7745c5c3_Err
1077				}
1078			}
1079		}
1080		return nil
1081	})
1082}
1083
1084func ConfigKeybindingGroup(group renderedKeybindingGroup) templ.Component {
1085	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1086		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1087		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1088			return templ_7745c5c3_CtxErr
1089		}
1090		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1091		if !templ_7745c5c3_IsBuffer {
1092			defer func() {
1093				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1094				if templ_7745c5c3_Err == nil {
1095					templ_7745c5c3_Err = templ_7745c5c3_BufErr
1096				}
1097			}()
1098		}
1099		ctx = templ.InitializeContext(ctx)
1100		templ_7745c5c3_Var50 := templ.GetChildren(ctx)
1101		if templ_7745c5c3_Var50 == nil {
1102			templ_7745c5c3_Var50 = templ.NopComponent
1103		}
1104		ctx = templ.ClearChildren(ctx)
1105		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "<div class=\"sv-group\"><div class=\"sv-group-header\"><div><h4>")
1106		if templ_7745c5c3_Err != nil {
1107			return templ_7745c5c3_Err
1108		}
1109		var templ_7745c5c3_Var51 string
1110		templ_7745c5c3_Var51, templ_7745c5c3_Err = templ.JoinStringErrs(keybindingGroupTitle(group))
1111		if templ_7745c5c3_Err != nil {
1112			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 155, Col: 37}
1113		}
1114		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var51))
1115		if templ_7745c5c3_Err != nil {
1116			return templ_7745c5c3_Err
1117		}
1118		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "</h4>")
1119		if templ_7745c5c3_Err != nil {
1120			return templ_7745c5c3_Err
1121		}
1122		if keybindingGroupMeta(group) != "" {
1123			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "<p class=\"sv-meta\">")
1124			if templ_7745c5c3_Err != nil {
1125				return templ_7745c5c3_Err
1126			}
1127			var templ_7745c5c3_Var52 string
1128			templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.JoinStringErrs(keybindingGroupMeta(group))
1129			if templ_7745c5c3_Err != nil {
1130				return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 157, Col: 52}
1131			}
1132			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var52))
1133			if templ_7745c5c3_Err != nil {
1134				return templ_7745c5c3_Err
1135			}
1136			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "</p>")
1137			if templ_7745c5c3_Err != nil {
1138				return templ_7745c5c3_Err
1139			}
1140		}
1141		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "</div></div><div class=\"sv-group-body\">")
1142		if templ_7745c5c3_Err != nil {
1143			return templ_7745c5c3_Err
1144		}
1145		if len(group.Bindings) == 0 {
1146			templ_7745c5c3_Err = EmptyState("No bindings in this group").Render(ctx, templ_7745c5c3_Buffer)
1147			if templ_7745c5c3_Err != nil {
1148				return templ_7745c5c3_Err
1149			}
1150		} else {
1151			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "<ul class=\"sv-list\">")
1152			if templ_7745c5c3_Err != nil {
1153				return templ_7745c5c3_Err
1154			}
1155			for _, binding := range group.Bindings {
1156				templ_7745c5c3_Err = ConfigKeybinding(group, binding).Render(ctx, templ_7745c5c3_Buffer)
1157				if templ_7745c5c3_Err != nil {
1158					return templ_7745c5c3_Err
1159				}
1160			}
1161			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "</ul>")
1162			if templ_7745c5c3_Err != nil {
1163				return templ_7745c5c3_Err
1164			}
1165		}
1166		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "</div></div>")
1167		if templ_7745c5c3_Err != nil {
1168			return templ_7745c5c3_Err
1169		}
1170		return nil
1171	})
1172}
1173
1174func ConfigKeybinding(group renderedKeybindingGroup, binding renderedKeybinding) templ.Component {
1175	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1176		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1177		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1178			return templ_7745c5c3_CtxErr
1179		}
1180		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1181		if !templ_7745c5c3_IsBuffer {
1182			defer func() {
1183				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1184				if templ_7745c5c3_Err == nil {
1185					templ_7745c5c3_Err = templ_7745c5c3_BufErr
1186				}
1187			}()
1188		}
1189		ctx = templ.InitializeContext(ctx)
1190		templ_7745c5c3_Var53 := templ.GetChildren(ctx)
1191		if templ_7745c5c3_Var53 == nil {
1192			templ_7745c5c3_Var53 = templ.NopComponent
1193		}
1194		ctx = templ.ClearChildren(ctx)
1195		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "<li class=\"sv-list-row\"><div class=\"sv-keybinding-row\"><div><strong>")
1196		if templ_7745c5c3_Err != nil {
1197			return templ_7745c5c3_Err
1198		}
1199		var templ_7745c5c3_Var54 string
1200		templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.JoinStringErrs(keybindingDescription(binding))
1201		if templ_7745c5c3_Err != nil {
1202			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 179, Col: 44}
1203		}
1204		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var54))
1205		if templ_7745c5c3_Err != nil {
1206			return templ_7745c5c3_Err
1207		}
1208		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "</strong><p class=\"sv-meta\">")
1209		if templ_7745c5c3_Err != nil {
1210			return templ_7745c5c3_Err
1211		}
1212		var templ_7745c5c3_Var55 string
1213		templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(keybindingAction(binding))
1214		if templ_7745c5c3_Err != nil {
1215			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 180, Col: 50}
1216		}
1217		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55))
1218		if templ_7745c5c3_Err != nil {
1219			return templ_7745c5c3_Err
1220		}
1221		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "</p><div class=\"sv-binding-keys\">")
1222		if templ_7745c5c3_Err != nil {
1223			return templ_7745c5c3_Err
1224		}
1225		templ_7745c5c3_Err = KeyList(binding.Keys).Render(ctx, templ_7745c5c3_Buffer)
1226		if templ_7745c5c3_Err != nil {
1227			return templ_7745c5c3_Err
1228		}
1229		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "<span class=\"sv-badge\">")
1230		if templ_7745c5c3_Err != nil {
1231			return templ_7745c5c3_Err
1232		}
1233		var templ_7745c5c3_Var56 string
1234		templ_7745c5c3_Var56, templ_7745c5c3_Err = templ.JoinStringErrs(keybindingStatus(binding))
1235		if templ_7745c5c3_Err != nil {
1236			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 183, Col: 55}
1237		}
1238		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var56))
1239		if templ_7745c5c3_Err != nil {
1240			return templ_7745c5c3_Err
1241		}
1242		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "</span> ")
1243		if templ_7745c5c3_Err != nil {
1244			return templ_7745c5c3_Err
1245		}
1246		if keybindingIsCustom(binding) && len(binding.DefaultKeys) > 0 {
1247			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "<span class=\"sv-meta\">default:</span>")
1248			if templ_7745c5c3_Err != nil {
1249				return templ_7745c5c3_Err
1250			}
1251			templ_7745c5c3_Err = KeyList(binding.DefaultKeys).Render(ctx, templ_7745c5c3_Buffer)
1252			if templ_7745c5c3_Err != nil {
1253				return templ_7745c5c3_Err
1254			}
1255		}
1256		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "</div></div><form class=\"sv-inline-form\" data-sv-action=\"config.keybinding.set\"><input type=\"hidden\" name=\"mode\" value=\"")
1257		if templ_7745c5c3_Err != nil {
1258			return templ_7745c5c3_Err
1259		}
1260		var templ_7745c5c3_Var57 string
1261		templ_7745c5c3_Var57, templ_7745c5c3_Err = templ.ResolveAttributeValue(group.Mode)
1262		if templ_7745c5c3_Err != nil {
1263			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 191, Col: 55}
1264		}
1265		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var57)
1266		if templ_7745c5c3_Err != nil {
1267			return templ_7745c5c3_Err
1268		}
1269		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "\"> <input type=\"hidden\" name=\"action\" value=\"")
1270		if templ_7745c5c3_Err != nil {
1271			return templ_7745c5c3_Err
1272		}
1273		var templ_7745c5c3_Var58 string
1274		templ_7745c5c3_Var58, templ_7745c5c3_Err = templ.ResolveAttributeValue(binding.Action)
1275		if templ_7745c5c3_Err != nil {
1276			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 192, Col: 61}
1277		}
1278		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var58)
1279		if templ_7745c5c3_Err != nil {
1280			return templ_7745c5c3_Err
1281		}
1282		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, "\"> <label><span>Keys</span><input name=\"keys\" type=\"text\" value=\"")
1283		if templ_7745c5c3_Err != nil {
1284			return templ_7745c5c3_Err
1285		}
1286		var templ_7745c5c3_Var59 string
1287		templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.ResolveAttributeValue(keybindingKeysValue(binding.Keys))
1288		if templ_7745c5c3_Err != nil {
1289			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 193, Col: 100}
1290		}
1291		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var59)
1292		if templ_7745c5c3_Err != nil {
1293			return templ_7745c5c3_Err
1294		}
1295		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "\" placeholder=\"ctrl+h, ctrl+shift+h\" required></label> <button class=\"sv-button sv-button-secondary\" type=\"submit\">")
1296		if templ_7745c5c3_Err != nil {
1297			return templ_7745c5c3_Err
1298		}
1299		templ_7745c5c3_Err = ButtonIconLabel(iconSave, "Save").Render(ctx, templ_7745c5c3_Buffer)
1300		if templ_7745c5c3_Err != nil {
1301			return templ_7745c5c3_Err
1302		}
1303		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "</button> <button class=\"sv-button sv-button-secondary\" type=\"button\" data-sv-action=\"config.keybinding.reset\" data-mode=\"")
1304		if templ_7745c5c3_Err != nil {
1305			return templ_7745c5c3_Err
1306		}
1307		var templ_7745c5c3_Var60 string
1308		templ_7745c5c3_Var60, templ_7745c5c3_Err = templ.ResolveAttributeValue(group.Mode)
1309		if templ_7745c5c3_Err != nil {
1310			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 195, Col: 127}
1311		}
1312		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var60)
1313		if templ_7745c5c3_Err != nil {
1314			return templ_7745c5c3_Err
1315		}
1316		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "\" data-action=\"")
1317		if templ_7745c5c3_Err != nil {
1318			return templ_7745c5c3_Err
1319		}
1320		var templ_7745c5c3_Var61 string
1321		templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.ResolveAttributeValue(binding.Action)
1322		if templ_7745c5c3_Err != nil {
1323			return templ.Error{Err: templ_7745c5c3_Err, FileName: `config.templ`, Line: 195, Col: 158}
1324		}
1325		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var61)
1326		if templ_7745c5c3_Err != nil {
1327			return templ_7745c5c3_Err
1328		}
1329		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "\">")
1330		if templ_7745c5c3_Err != nil {
1331			return templ_7745c5c3_Err
1332		}
1333		templ_7745c5c3_Err = ButtonIconLabel(iconRotateCCW, "Reset").Render(ctx, templ_7745c5c3_Buffer)
1334		if templ_7745c5c3_Err != nil {
1335			return templ_7745c5c3_Err
1336		}
1337		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, "</button></form></div></li>")
1338		if templ_7745c5c3_Err != nil {
1339			return templ_7745c5c3_Err
1340		}
1341		return nil
1342	})
1343}
1344
1345var _ = templruntime.GeneratedTemplate

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