diff --git a/main.go b/main.go
index 77b5651..c3b6f25 100644
--- a/main.go
+++ b/main.go
@@ -33,7 +33,10 @@ var md = goldmark.New(
var tmpl = template.Must(template.New("page.html").ParseFS(assets, "assets/page.html"))
type crumb struct{ Name, URL string }
-type entry struct{ Icon, Name, URL, Meta string }
+type entry struct {
+ Icon template.HTML
+ Name, URL, Meta string
+}
type pageData struct {
Title string
@@ -193,7 +196,7 @@ func listEntries(fsPath, urlPath string) []entry {
entryURL := path.Join(urlPath, name)
if e.IsDir() {
folders = append(folders, entry{
- Icon: "📁",
+ Icon: iconFolder,
Name: name,
URL: entryURL + "/",
Meta: info.ModTime().Format("2006-01-02"),
@@ -217,23 +220,34 @@ func listEntries(fsPath, urlPath string) []entry {
return append(folders, files...)
}
-func fileIcon(name string) string {
+// Pixel-art SVG icons — outlined, crispEdges, uses currentColor.
+const (
+ iconFolder template.HTML = ``
+ iconDoc template.HTML = ``
+ iconImage template.HTML = ``
+ iconVideo template.HTML = ``
+ iconAudio template.HTML = ``
+ iconArchive template.HTML = ``
+ iconGeneric template.HTML = ``
+)
+
+func fileIcon(name string) template.HTML {
ext := strings.ToLower(path.Ext(name))
switch ext {
case ".md":
- return "📄"
+ return iconDoc
case ".pdf":
- return "📕"
+ return iconDoc
case ".png", ".jpg", ".jpeg", ".gif", ".webp", ".svg":
- return "🖼"
+ return iconImage
case ".mp4", ".mkv", ".avi", ".mov":
- return "🎬"
+ return iconVideo
case ".mp3", ".flac", ".ogg", ".wav":
- return "🎵"
+ return iconAudio
case ".zip", ".tar", ".gz", ".7z":
- return "📦"
+ return iconArchive
default:
- return "📎"
+ return iconGeneric
}
}