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