summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2026-01-30 18:51:54 -0700
committermo khan <mo@mokhan.ca>2026-01-30 18:51:54 -0700
commit147ad78d281830d2d55e79604f631e6ed3f3a8f1 (patch)
tree15bb91182a2247e0010dd99085216f9c5d775ff7
parent40fa78b58bb761c6e67b3e1622b3f56c12d81733 (diff)
refactor: remove --theme --preview-thems --minify and --gzip flags
-rw-r--r--cmd/gitmal/main.go26
-rw-r--r--internal/generator/blob.go41
-rw-r--r--internal/generator/branches.go1
-rw-r--r--internal/generator/commit.go27
-rw-r--r--internal/generator/commits_list.go1
-rw-r--r--internal/generator/index.go3
-rw-r--r--internal/generator/list.go3
-rw-r--r--internal/generator/markdown.go18
-rw-r--r--internal/generator/params.go2
-rw-r--r--internal/generator/post_process.go139
-rw-r--r--internal/generator/readme.go2
-rw-r--r--internal/generator/tags.go1
-rw-r--r--internal/generator/themes.go156
-rw-r--r--internal/templates/layout.gohtml42
-rw-r--r--internal/templates/preview.gohtml144
-rw-r--r--internal/templates/templates.go15
16 files changed, 73 insertions, 548 deletions
diff --git a/cmd/gitmal/main.go b/cmd/gitmal/main.go
index 0c29a32..4652477 100644
--- a/cmd/gitmal/main.go
+++ b/cmd/gitmal/main.go
@@ -20,10 +20,6 @@ var (
flagOutput string
flagBranches string
flagDefaultBranch string
- flagTheme string
- flagPreviewThemes bool
- flagMinify bool
- flagGzip bool
)
func main() {
@@ -54,10 +50,6 @@ func main() {
flag.StringVar(&flagOutput, "output", "output", "Output directory for generated HTML files")
flag.StringVar(&flagBranches, "branches", "", "Regex for branches to include")
flag.StringVar(&flagDefaultBranch, "default-branch", "", "Default branch to use (autodetect master or main)")
- flag.StringVar(&flagTheme, "theme", "github", "Style theme")
- flag.BoolVar(&flagPreviewThemes, "preview-themes", false, "Preview available themes")
- flag.BoolVar(&flagMinify, "minify", false, "Minify all generated HTML files")
- flag.BoolVar(&flagGzip, "gzip", false, "Compress all generated HTML files")
flag.Usage = usage
flag.Parse()
@@ -70,11 +62,6 @@ func main() {
panic("Multiple repos not supported yet")
}
- if flagPreviewThemes {
- generator.PreviewThemes()
- os.Exit(0)
- }
-
outputDir, err := filepath.Abs(flagOutput)
if err != nil {
panic(err)
@@ -91,11 +78,6 @@ func main() {
flagName = strings.TrimSuffix(flagName, ".git")
}
- themeColor, ok := generator.ThemeStyles[flagTheme]
- if !ok {
- panic("Invalid theme: " + flagTheme)
- }
-
branchesFilter, err := regexp.Compile(flagBranches)
if err != nil {
panic(err)
@@ -138,8 +120,6 @@ func main() {
Name: flagName,
RepoDir: input,
OutputDir: outputDir,
- Style: flagTheme,
- Dark: themeColor == "dark",
DefaultRef: git.NewRef(flagDefaultBranch),
}
@@ -252,12 +232,6 @@ func main() {
}
}
- if flagMinify || flagGzip {
- generator.Echo("> post-processing HTML...")
- if err := generator.PostProcessHTML(params.OutputDir, flagMinify, flagGzip); err != nil {
- panic(err)
- }
- }
}
func usage() {
diff --git a/internal/generator/blob.go b/internal/generator/blob.go
index 96c876a..55e8c89 100644
--- a/internal/generator/blob.go
+++ b/internal/generator/blob.go
@@ -22,13 +22,6 @@ import (
)
func GenerateBlobs(files []git.Blob, params Params) error {
- // Prepare shared, read-only resources
- var css strings.Builder
- style := styles.Get(params.Style)
- if style == nil {
- return fmt.Errorf("unknown style: %s", params.Style)
- }
-
formatterOptions := []html.Option{
html.WithLineNumbers(true),
html.WithLinkableLineNumbers(true, "L"),
@@ -36,10 +29,7 @@ func GenerateBlobs(files []git.Blob, params Params) error {
html.WithCSSComments(false),
}
- // Use a temporary formatter to render CSS once
- if err := html.New(formatterOptions...).WriteCSS(&css, style); err != nil {
- return err
- }
+ css := cssSyntax(formatterOptions)
dirsSet := links.BuildDirSet(files)
filesSet := links.BuildFileSet(files)
@@ -62,9 +52,9 @@ func GenerateBlobs(files []git.Blob, params Params) error {
workerFn := func() {
defer wg.Done()
- // Per-worker instances
- md := createMarkdown(params.Style)
+ md := createMarkdown()
formatter := html.New(formatterOptions...)
+ style := styles.Get("github")
check := func(err error) bool {
if err != nil {
@@ -135,8 +125,7 @@ func GenerateBlobs(files []git.Blob, params Params) error {
err = templates.MarkdownTemplate.ExecuteTemplate(f, "layout.gohtml", templates.MarkdownParams{
LayoutParams: templates.LayoutParams{
Title: fmt.Sprintf("%s/%s at %s", params.Name, blob.Path, params.Ref),
- Dark: params.Dark,
- CSSMarkdown: cssMarkdown(params.Dark),
+ CSSMarkdown: cssMarkdown(),
Name: params.Name,
RootHref: rootHref,
CurrentRefDir: params.Ref.DirName(),
@@ -194,7 +183,6 @@ func GenerateBlobs(files []git.Blob, params Params) error {
err = templates.BlobTemplate.ExecuteTemplate(f, "layout.gohtml", templates.BlobParams{
LayoutParams: templates.LayoutParams{
Title: fmt.Sprintf("%s/%s at %s", params.Name, blob.Path, params.Ref),
- Dark: params.Dark,
Name: params.Name,
RootHref: rootHref,
CurrentRefDir: params.Ref.DirName(),
@@ -204,7 +192,7 @@ func GenerateBlobs(files []git.Blob, params Params) error {
Ref: params.Ref,
Breadcrumbs: breadcrumbs(params.Name, blob.Path, true),
},
- CSS: template.CSS(css.String()),
+ CSS: css,
Blob: blob,
IsBinary: isBin,
IsImage: isImg,
@@ -257,3 +245,22 @@ func GenerateBlobs(files []git.Blob, params Params) error {
p.Done()
return runErr
}
+
+func cssSyntax(opts []html.Option) template.CSS {
+ formatter := html.New(opts...)
+ lightStyle := styles.Get("github")
+ darkStyle := styles.Get("github-dark")
+
+ var light, dark strings.Builder
+ _ = formatter.WriteCSS(&light, lightStyle)
+ _ = formatter.WriteCSS(&dark, darkStyle)
+
+ return template.CSS(
+ "@media (prefers-color-scheme: light) {\n" +
+ light.String() +
+ "\n}\n" +
+ "@media (prefers-color-scheme: dark) {\n" +
+ dark.String() +
+ "\n}",
+ )
+}
diff --git a/internal/generator/branches.go b/internal/generator/branches.go
index 6c17b68..8b6f0a8 100644
--- a/internal/generator/branches.go
+++ b/internal/generator/branches.go
@@ -48,7 +48,6 @@ func GenerateBranches(branches []git.Ref, defaultBranch string, params Params) e
LayoutParams: templates.LayoutParams{
Title: fmt.Sprintf("Branches %s %s", Dot, params.Name),
Name: params.Name,
- Dark: params.Dark,
RootHref: rootHref,
CurrentRefDir: params.DefaultRef.DirName(),
Selected: "branches",
diff --git a/internal/generator/commit.go b/internal/generator/commit.go
index 57a37c9..3a33169 100644
--- a/internal/generator/commit.go
+++ b/internal/generator/commit.go
@@ -116,11 +116,6 @@ func generateCommitPage(commit git.Commit, params Params) error {
return err
}
- style := styles.Get(params.Style)
- if style == nil {
- return fmt.Errorf("unknown style: %s", params.Style)
- }
-
formatter := html.New(
html.WithClasses(true),
html.WithCSSComments(false),
@@ -130,10 +125,19 @@ func generateCommitPage(commit git.Commit, params Params) error {
}),
)
- var cssBuf bytes.Buffer
- if err := formatter.WriteCSS(&cssBuf, style); err != nil {
- return err
- }
+ lightStyle := styles.Get("github")
+ darkStyle := styles.Get("github-dark")
+
+ var lightCSS, darkCSS bytes.Buffer
+ _ = formatter.WriteCSS(&lightCSS, lightStyle)
+ _ = formatter.WriteCSS(&darkCSS, darkStyle)
+
+ diffCSS := "@media (prefers-color-scheme: light) {\n" +
+ lightCSS.String() +
+ "\n}\n" +
+ "@media (prefers-color-scheme: dark) {\n" +
+ darkCSS.String() +
+ "\n}"
lexer := lexers.Get("diff")
if lexer == nil {
@@ -197,7 +201,7 @@ func generateCommitPage(commit git.Commit, params Params) error {
return err
}
var buf bytes.Buffer
- if err := formatter.Format(&buf, style, it); err != nil {
+ if err := formatter.Format(&buf, lightStyle, it); err != nil {
return err
}
@@ -238,13 +242,12 @@ func generateCommitPage(commit git.Commit, params Params) error {
LayoutParams: templates.LayoutParams{
Title: fmt.Sprintf("%s %s %s@%s", commit.Subject, Dot, params.Name, commit.ShortHash),
Name: params.Name,
- Dark: params.Dark,
RootHref: rootHref,
CurrentRefDir: currentRef.DirName(),
Selected: "commits",
},
Commit: commit,
- DiffCSS: template.CSS(cssBuf.String()),
+ DiffCSS: template.CSS(diffCSS),
FileTree: fileTree,
FileViews: filesViews,
})
diff --git a/internal/generator/commits_list.go b/internal/generator/commits_list.go
index 9b0acbb..144477e 100644
--- a/internal/generator/commits_list.go
+++ b/internal/generator/commits_list.go
@@ -64,7 +64,6 @@ func GenerateLogForBranch(allCommits []git.Commit, params Params) error {
LayoutParams: templates.LayoutParams{
Title: fmt.Sprintf("Commits %s %s", Dot, params.Name),
Name: params.Name,
- Dark: params.Dark,
RootHref: rootHref,
CurrentRefDir: params.Ref.DirName(),
Selected: "commits",
diff --git a/internal/generator/index.go b/internal/generator/index.go
index 0154427..bc81a72 100644
--- a/internal/generator/index.go
+++ b/internal/generator/index.go
@@ -102,8 +102,7 @@ func GenerateIndex(files []git.Blob, params Params) error {
LayoutParams: templates.LayoutParams{
Title: title,
Name: params.Name,
- Dark: params.Dark,
- CSSMarkdown: cssMarkdown(params.Dark),
+ CSSMarkdown: cssMarkdown(),
RootHref: rootHref,
CurrentRefDir: params.Ref.DirName(),
Selected: "code",
diff --git a/internal/generator/list.go b/internal/generator/list.go
index 4b4a66c..8249349 100644
--- a/internal/generator/list.go
+++ b/internal/generator/list.go
@@ -178,14 +178,13 @@ func GenerateLists(files []git.Blob, params Params) error {
readmeHTML := readme(di.files, dirsSet, filesSet, params, rootHref)
var CSSMarkdown template.CSS
if readmeHTML != "" {
- CSSMarkdown = cssMarkdown(params.Dark)
+ CSSMarkdown = cssMarkdown()
}
err = templates.ListTemplate.ExecuteTemplate(f, "layout.gohtml", templates.ListParams{
LayoutParams: templates.LayoutParams{
Title: title,
Name: params.Name,
- Dark: params.Dark,
CSSMarkdown: CSSMarkdown,
RootHref: rootHref,
CurrentRefDir: params.Ref.DirName(),
diff --git a/internal/generator/markdown.go b/internal/generator/markdown.go
index 446465a..9a10cc9 100644
--- a/internal/generator/markdown.go
+++ b/internal/generator/markdown.go
@@ -12,13 +12,13 @@ import (
"mokhan.ca/antonmedv/gitmal/internal/templates"
)
-func createMarkdown(style string) goldmark.Markdown {
+func createMarkdown() goldmark.Markdown {
return goldmark.New(
goldmark.WithExtensions(
extension.GFM,
extension.Typographer,
highlighting.NewHighlighting(
- highlighting.WithStyle(style),
+ highlighting.WithStyle("github"),
),
),
goldmark.WithParserOptions(
@@ -30,9 +30,13 @@ func createMarkdown(style string) goldmark.Markdown {
)
}
-func cssMarkdown(dark bool) template.CSS {
- if dark {
- return template.CSS(templates.CSSMarkdownDark)
- }
- return template.CSS(templates.CSSMarkdownLight)
+func cssMarkdown() template.CSS {
+ return template.CSS(
+ "@media (prefers-color-scheme: light) {\n" +
+ templates.CSSMarkdownLight +
+ "\n}\n" +
+ "@media (prefers-color-scheme: dark) {\n" +
+ templates.CSSMarkdownDark +
+ "\n}",
+ )
}
diff --git a/internal/generator/params.go b/internal/generator/params.go
index 54a81e1..f3de96d 100644
--- a/internal/generator/params.go
+++ b/internal/generator/params.go
@@ -8,7 +8,5 @@ type Params struct {
RepoDir string
Ref git.Ref
OutputDir string
- Style string
- Dark bool
DefaultRef git.Ref
}
diff --git a/internal/generator/post_process.go b/internal/generator/post_process.go
deleted file mode 100644
index 9e21056..0000000
--- a/internal/generator/post_process.go
+++ /dev/null
@@ -1,139 +0,0 @@
-package generator
-
-import (
- "bytes"
- "compress/gzip"
- "io"
- "io/fs"
- "os"
- "path/filepath"
- "runtime"
- "strings"
- "sync"
-
- "github.com/tdewolff/minify/v2"
- "github.com/tdewolff/minify/v2/css"
- "github.com/tdewolff/minify/v2/html"
- "github.com/tdewolff/minify/v2/svg"
-
- "mokhan.ca/antonmedv/gitmal/internal/progress_bar"
-)
-
-func PostProcessHTML(root string, doMinify bool, doGzip bool) error {
- // 1) Collect all HTML files first
- var files []string
- if err := filepath.WalkDir(root, func(path string, d fs.DirEntry, err error) error {
- if err != nil {
- return err
- }
- if d.IsDir() {
- return nil
- }
- if strings.HasSuffix(d.Name(), ".html") {
- files = append(files, path)
- }
- return nil
- }); err != nil {
- return err
- }
-
- if len(files) == 0 {
- return nil
- }
-
- // 2) Setup progress bar
- labels := []string{}
- if doMinify {
- labels = append(labels, "minify")
- }
- if doGzip {
- labels = append(labels, "gzip")
- }
- pb := progress_bar.NewProgressBar(strings.Join(labels, " + "), len(files))
- defer pb.Done()
-
- // 3) Worker pool
- workers := runtime.NumCPU()
- if workers < 1 {
- workers = 1
- }
- jobs := make(chan string, workers*2)
- var wg sync.WaitGroup
- var mu sync.Mutex
- var firstErr error
-
- workerFn := func() {
- defer wg.Done()
- var m *minify.M
- if doMinify {
- m = minify.New()
- m.AddFunc("text/html", html.Minify)
- m.AddFunc("text/css", css.Minify)
- m.AddFunc("image/svg+xml", svg.Minify)
- }
- for path := range jobs {
- data, err := os.ReadFile(path)
- if err == nil && doMinify {
- if md, e := m.Bytes("text/html", data); e == nil {
- data = md
- } else {
- err = e
- }
- }
- if err == nil {
- if doGzip {
- // write to file.html.gz
- gzPath := path + ".gz"
- if e := writeGzip(gzPath, data); e != nil {
- err = e
- } else if e := os.Remove(path); e != nil { // remove original .html
- err = e
- }
- } else {
- if e := os.WriteFile(path, data, 0o644); e != nil {
- err = e
- }
- }
- }
-
- if err != nil {
- mu.Lock()
- if firstErr == nil {
- firstErr = err
- }
- mu.Unlock()
- }
- pb.Inc()
- }
- }
-
- wg.Add(workers)
- for i := 0; i < workers; i++ {
- go workerFn()
- }
- for _, f := range files {
- jobs <- f
- }
- close(jobs)
- wg.Wait()
-
- return firstErr
-}
-
-func writeGzip(path string, data []byte) error {
- f, err := os.Create(path)
- if err != nil {
- return err
- }
- defer func() { _ = f.Close() }()
- gw := gzip.NewWriter(f)
- gw.Name = filepath.Base(strings.TrimSuffix(path, ".gz"))
- if _, err := io.Copy(gw, bytes.NewReader(data)); err != nil {
- _ = gw.Close()
- return err
- }
- if err := gw.Close(); err != nil {
- return err
- }
- return nil
-}
diff --git a/internal/generator/readme.go b/internal/generator/readme.go
index e79ca01..026e37f 100644
--- a/internal/generator/readme.go
+++ b/internal/generator/readme.go
@@ -12,7 +12,7 @@ import (
func readme(files []git.Blob, dirsSet, filesSet links.Set, params Params, rootHref string) template.HTML {
var readmeHTML template.HTML
- md := createMarkdown(params.Style)
+ md := createMarkdown()
for _, b := range files {
nameLower := strings.ToLower(b.FileName)
diff --git a/internal/generator/tags.go b/internal/generator/tags.go
index b24418c..4a26c6e 100644
--- a/internal/generator/tags.go
+++ b/internal/generator/tags.go
@@ -27,7 +27,6 @@ func GenerateTags(entries []git.Tag, params Params) error {
LayoutParams: templates.LayoutParams{
Title: fmt.Sprintf("Tags %s %s", Dot, params.Name),
Name: params.Name,
- Dark: params.Dark,
RootHref: rootHref,
CurrentRefDir: params.DefaultRef.DirName(),
Selected: "tags",
diff --git a/internal/generator/themes.go b/internal/generator/themes.go
deleted file mode 100644
index 032afa3..0000000
--- a/internal/generator/themes.go
+++ /dev/null
@@ -1,156 +0,0 @@
-package generator
-
-import (
- "html/template"
- "net"
- "net/http"
- "sort"
- "strings"
-
- "github.com/alecthomas/chroma/v2/formatters/html"
- "github.com/alecthomas/chroma/v2/lexers"
- "github.com/alecthomas/chroma/v2/styles"
-
- "mokhan.ca/antonmedv/gitmal/internal/templates"
-)
-
-var ThemeStyles = map[string]string{
- "abap": "light",
- "algol": "light",
- "arduino": "light",
- "autumn": "light",
- "average": "dark",
- "base16-snazzy": "dark",
- "borland": "light",
- "bw": "light",
- "catppuccin-frappe": "dark",
- "catppuccin-latte": "light",
- "catppuccin-macchiato": "dark",
- "catppuccin-mocha": "dark",
- "colorful": "light",
- "doom-one": "dark",
- "doom-one2": "dark",
- "dracula": "dark",
- "emacs": "light",
- "evergarden": "dark",
- "friendly": "light",
- "fruity": "dark",
- "github-dark": "dark",
- "github": "light",
- "gruvbox-light": "light",
- "gruvbox": "dark",
- "hrdark": "dark",
- "igor": "light",
- "lovelace": "light",
- "manni": "light",
- "modus-operandi": "light",
- "modus-vivendi": "dark",
- "monokai": "dark",
- "monokailight": "light",
- "murphy": "light",
- "native": "dark",
- "nord": "dark",
- "nordic": "dark",
- "onedark": "dark",
- "onesenterprise": "dark",
- "paraiso-dark": "dark",
- "paraiso-light": "light",
- "pastie": "light",
- "perldoc": "light",
- "pygments": "light",
- "rainbow_dash": "light",
- "rose-pine-dawn": "light",
- "rose-pine-moon": "dark",
- "rose-pine": "dark",
- "rpgle": "dark",
- "rrt": "dark",
- "solarized-dark": "dark",
- "solarized-dark256": "dark",
- "solarized-light": "light",
- "swapoff": "dark",
- "tango": "light",
- "tokyonight-day": "light",
- "tokyonight-moon": "dark",
- "tokyonight-night": "dark",
- "tokyonight-storm": "dark",
- "trac": "light",
- "vim": "dark",
- "vs": "light",
- "vulcan": "dark",
- "witchhazel": "dark",
- "xcode-dark": "dark",
- "xcode": "light",
-}
-
-func PreviewThemes() {
- handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- names := make([]string, 0, len(ThemeStyles))
- for name := range ThemeStyles {
- names = append(names, name)
- }
- sort.Strings(names)
-
- sampleLang := "javascript"
- sampleCode := `function fib(n) {
- if (n <= 1) {
- return n;
- }
- return fib(n - 1) + fib(n - 2);
-}
-
-// Print n Fibonacci numbers.
-const n = 10;
-
-for (let i = 0; i < n; i++) {
- console.log(fib(i));
-}`
-
- formatter := html.New(
- html.WithClasses(false),
- )
-
- // Generate cards
- cards := make([]templates.PreviewCard, 0, len(names))
- for _, theme := range names {
- style := styles.Get(theme)
- if style == nil {
- continue
- }
- lexer := lexers.Get(sampleLang)
- if lexer == nil {
- continue
- }
- it, err := lexer.Tokenise(nil, sampleCode)
- if err != nil {
- continue
- }
- var sb strings.Builder
- if err := formatter.Format(&sb, style, it); err != nil {
- continue
- }
- cards = append(cards, templates.PreviewCard{
- Name: theme,
- Tone: ThemeStyles[theme],
- HTML: template.HTML(sb.String()),
- })
- }
-
- w.Header().Set("Content-Type", "text/html; charset=utf-8")
- _ = templates.PreviewTemplate.Execute(w, templates.PreviewParams{
- Count: len(cards),
- Themes: cards,
- })
- })
-
- ln, err := net.Listen("tcp", "127.0.0.1:0")
- if err != nil {
- panic(err)
- }
-
- addr := ln.Addr().String()
- Echo("Preview themes at http://" + addr)
-
- if err := http.Serve(ln, handler); err != nil && err != http.ErrServerClosed {
- panic(err)
- }
-}
diff --git a/internal/templates/layout.gohtml b/internal/templates/layout.gohtml
index 9438396..f3ffc05 100644
--- a/internal/templates/layout.gohtml
+++ b/internal/templates/layout.gohtml
@@ -6,27 +6,6 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ .Title }}</title>
<style>
- {{ if .Dark }}
- :root {
- --c-indigo-1: #a8b1ff;
- --c-indigo-2: #5c73e7;
- --c-indigo-3: #3e63dd;
- --c-green: #57ab5a;
- --c-red: #e5534b;
- --c-yellow: #c69026;
- --c-dir: #9198a1;
- --c-gray-soft: rgba(101, 117, 133, .16);
- --c-bg: #1b1b1f;
- --c-bg-alt: #161618;
- --c-bg-elv: #202127;
- --c-text-1: rgba(255, 255, 245, .86);
- --c-text-2: rgba(235, 235, 245, .6);
- --c-text-3: rgba(235, 235, 245, .38);
- --c-border: #3c3f44;
- --c-divider: #2e2e32;
- }
-
- {{ else }}
:root {
--c-indigo-1: #3451b2;
--c-indigo-2: #3a5ccc;
@@ -46,7 +25,26 @@
--c-divider: #e2e2e3;
}
- {{ end }}
+ @media (prefers-color-scheme: dark) {
+ :root {
+ --c-indigo-1: #a8b1ff;
+ --c-indigo-2: #5c73e7;
+ --c-indigo-3: #3e63dd;
+ --c-green: #57ab5a;
+ --c-red: #e5534b;
+ --c-yellow: #c69026;
+ --c-dir: #9198a1;
+ --c-gray-soft: rgba(101, 117, 133, .16);
+ --c-bg: #1b1b1f;
+ --c-bg-alt: #161618;
+ --c-bg-elv: #202127;
+ --c-text-1: rgba(255, 255, 245, .86);
+ --c-text-2: rgba(235, 235, 245, .6);
+ --c-text-3: rgba(235, 235, 245, .38);
+ --c-border: #3c3f44;
+ --c-divider: #2e2e32;
+ }
+ }
:root {
--c-brand-1: var(--c-indigo-1);
diff --git a/internal/templates/preview.gohtml b/internal/templates/preview.gohtml
deleted file mode 100644
index bc6f898..0000000
--- a/internal/templates/preview.gohtml
+++ /dev/null
@@ -1,144 +0,0 @@
-{{- /*gotype: mokhan.ca/antonmedv/gitmal/pkg/templates.PreviewParams*/ -}}
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Chroma Themes Preview</title>
- <style>
- * {
- box-sizing: border-box;
- }
-
- body {
- margin: 0;
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
- background: #ffffff;
- color: #3c3c43;
- line-height: 1.4;
- }
-
- header {
- position: sticky;
- top: 0;
- background: #f6f6f7;
- border-bottom: 1px solid #c2c2c4;
- padding: 12px 16px;
- z-index: 10;
- }
-
- .meta {
- color: rgba(60, 60, 67, .78);
- font-size: 12px
- }
-
- main {
- padding: 16px
- }
-
- .grid {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(420px, 1fr));
- gap: 16px;
- justify-content: center;
- }
-
- .card {
- border: 1px solid #c2c2c4;
- border-radius: 10px;
- overflow: hidden;
- background: #fff;
- }
-
- /* Dark tone variant for theme cards */
- .card.dark {
- background: #1b1b1f; /* dark bg */
- color: rgba(255, 255, 245, .86); /* light text */
- border-color: #3c3f44; /* dark border */
- }
-
- .card h2 {
- margin: 0;
- padding: 10px 12px;
- font-size: 14px;
- border-bottom: 1px solid #c2c2c4;
- display: flex;
- justify-content: space-between;
- align-items: center;
- }
-
- .card.dark h2 {
- border-bottom-color: #3c3f44;
- }
-
- .badge {
- font-size: 11px;
- padding: 2px 6px;
- border-radius: 6px;
- border: 1px solid #c2c2c4;
- color: rgba(60, 60, 67, .78);
- background: #ffffff;
- }
-
- .card.dark .badge {
- border-color: #3c3f44;
- color: rgba(235, 235, 245, .6);
- background: #1b1b1f;
- }
-
- .sample {
- padding: 12px;
- }
-
- pre {
- margin: 0;
- padding: 8px 16px;
- overflow-x: auto;
- white-space: pre;
- word-spacing: normal;
- word-break: normal;
- word-wrap: normal;
- tab-size: 4;
- font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace, monospace;
- border-radius: 6px;
- background-color: #f6f6f7;
- }
-
- .dark pre {
- background-color: #161618;
- }
-
- pre > code {
- display: block;
- padding: 0 16px;
- width: fit-content;
- min-width: 100%;
- line-height: 20px;
- font-size: 12px;
- color: rgba(60, 60, 67);
- }
-
- .dark pre > code {
- color: rgba(255, 255, 245, .86);
- }
- </style>
-</head>
-<body>
-<header>
- <div><strong>Chroma themes preview</strong></div>
- <div class="meta">Showing {{ .Count }} themes. Use <code>--theme &lt;name&gt;</code> in the app.</div>
-</header>
-<main>
- <div class="grid">
- {{ range .Themes }}
- <section class="card {{ .Tone }}">
- <h2><span>{{ .Name }}</span><span class="badge">{{ .Tone }}</span></h2>
- <div class="sample">
- {{ .HTML }}
- </div>
- </section>
- {{ end }}
- </div>
-</main>
-</body>
-</html>
diff --git a/internal/templates/templates.go b/internal/templates/templates.go
index 6cd37a6..6bd6d2c 100644
--- a/internal/templates/templates.go
+++ b/internal/templates/templates.go
@@ -61,14 +61,9 @@ var CommitsListTemplate = Must(Must(layout.Clone()).Parse(commitsListContent))
var commitContent string
var CommitTemplate = Must(Must(layout.Clone()).Parse(commitContent))
-//go:embed preview.gohtml
-var previewContent string
-var PreviewTemplate = Must(New("preview").Parse(previewContent))
-
type LayoutParams struct {
Title string
Name string
- Dark bool
CSSMarkdown CSS
RootHref string
CurrentRefDir string
@@ -201,13 +196,3 @@ type FileView struct {
HTML HTML // pre-rendered HTML for diff of this file
}
-type PreviewCard struct {
- Name string
- Tone string
- HTML HTML
-}
-
-type PreviewParams struct {
- Count int
- Themes []PreviewCard
-}