ytdl-web/pkg/views/home.templ

67 lines
1.9 KiB
Plaintext

package views
import "go.fifitido.net/ytdl-web/pkg/components"
type Error struct {
Message string
RetryUrl *string
}
templ Home(err *Error) {
@Layout() {
<h1 class="text-center">YTDL Web</h1>
<p class="text-center mb-5">
Download videos from over a thousand websites with the help of
<a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a>, a fork of youtube-dl
with more features and fixes.
<br/>
View a complete list of supported websites
<a href="https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md">here</a>.
</p>
<form hx-get={ pathTo("/download") } hx-trigger="submit">
<div class="mb-3">
<label for="url" class="form-label visually-hidden">Url</label>
<div class="input-group">
<input
type="url"
name="url"
id="url"
class="form-control"
required
placeholder="Enter url here then click download"
/>
@components.PasteButton()
</div>
</div>
<div class="d-grid">
<button type="submit" class="btn btn-primary">
Download
<div class="spinner-border spinner-border-sm htmx-indicator ms-1" role="status">
<span class="visually-hidden">Loading...</span>
</div>
</button>
</div>
</form>
if err != nil {
<div class="alert alert-danger mt-4" role="alert">
<span>{ err.Message }</span>
if err.RetryUrl != nil {
<button
class="btn btn-link btn-sm pt-0 lh-base text-decoration-none"
hx-get={ pathTo("/download") }
hx-trigger="click"
hx-target="#main-content"
hx-swap="innerHTML"
hx-vals={ templ.JSONString(map[string]any{"url": *err.RetryUrl}) }
>
<span class="text-decoration-underline">Try Again</span>
<div class="spinner-border spinner-border-sm htmx-indicator ms-1" role="status">
<span class="visually-hidden">Loading...</span>
</div>
</button>
}
</div>
}
}
}