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