diff options
Diffstat (limited to 'internal/components/page.templ')
-rw-r--r-- | internal/components/page.templ | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/internal/components/page.templ b/internal/components/page.templ deleted file mode 100644 index 62b2937..0000000 --- a/internal/components/page.templ +++ /dev/null @@ -1,123 +0,0 @@ -package components - -import ( - "context" - "io" - "net/url" - - "go.alanpearce.eu/searchix/frontend" - "go.alanpearce.eu/searchix/internal/config" -) - -templ Page(tdata TemplateData) { - <!DOCTYPE html> - <html lang="en-GB"> - <head> - <meta charset="utf-8"/> - <meta name="viewport" content="width=device-width, initial-scale=1"/> - <title> - Searchix - if config.DevMode { - (Dev) - } - </title> - for _, sheet := range tdata.Assets.Stylesheets { - <link href={ sheet.URL } rel="stylesheet" integrity={ "sha256-" + sheet.Base64SHA256 }/> - } - @Unsafe(tdata.ExtraHeadHTML) - <link - rel="search" - type="application/opensearchdescription+xml" - title={ "Searchix " + sourceNameAndType(nil) } - href={ string(joinPath("opensearch.xml")) } - /> - for _, source := range tdata.Sources { - <link - rel="search" - type="application/opensearchdescription+xml" - title={ "Searchix " + sourceNameAndType(source) } - href={ string(joinPath("/", source.Importer.String(), source.Key, "opensearch.xml")) } - /> - } - </head> - <body> - <header> - <nav> - <h1><a href="/">Searchix</a></h1> - <a - if tdata.Source == nil { - class="current" - href="/" - } else { - href={ joinPathQuery("/", tdata.Query) } - } - >All</a> - for _, source := range tdata.Sources { - <a - if tdata.Source != nil && tdata.Source.Name == source.Name { - class="current" - href={ joinPath("/", source.Importer.String(), source.Key, "search") } - } else { - href={ joinPathQuery(joinPath("/", source.Importer.String(), source.Key, "search"), tdata.Query) } - } - >{ source.Name }</a> - } - </nav> - </header> - <main> - { children... } - </main> - <footer> - if config.Version != "" { - Searchix - <a href={ templ.SafeURL("https://git.sr.ht/~alanpearce/searchix/refs/" + config.Version) }> - { config.Version } - </a> - } - Made by <a href="https://alanpearce.eu">Alan Pearce</a>. - <a href="https://git.sr.ht/~alanpearce/searchix">Source code</a> - <a href="https://todo.sr.ht/~alanpearce/searchix">Report issues</a> - </footer> - </body> - </html> -} - -templ script(s *frontend.Asset) { - <script src={ s.URL } defer integrity={ "sha256-" + s.Base64SHA256 }></script> -} - -func Unsafe(html string) templ.Component { - return templ.ComponentFunc(func(_ context.Context, w io.Writer) (err error) { - _, err = io.WriteString(w, html) - return - }) -} - -func sourceNameAndType(source *config.Source) string { - if source == nil { - return "Combined" - } - - switch source.Importer { - case config.Options: - return source.Name + " " + source.Importer.String() - case config.Packages: - return source.Name - } - return "" -} - -func joinPath(base string, parts ...string) templ.SafeURL { - u, err := url.JoinPath(base, parts...) - if err != nil { - panic(err) - } - return templ.SafeURL(u) -} - -func joinPathQuery[T ~string](path T, query string) templ.SafeURL { - if query == "" { - return templ.SafeURL(path) - } - return templ.SafeURL(string(path) + "?query=" + url.QueryEscape(query)) -} |