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