From 009877ae76660488d163b5ae517e5c434ccfa2d6 Mon Sep 17 00:00:00 2001 From: "N0\\A" Date: Wed, 1 Apr 2026 14:23:12 +0200 Subject: [PATCH] feat: colour palettes --- awk/definition_lists.awk | 6 ++-- awk/footnotes.awk | 8 ++--- awk/indented_code.awk | 4 +-- awk/lists.awk | 2 +- awk/markdown_embed.awk | 12 +++---- awk/mask_inline_code.awk | 13 +++----- awk/mask_plain.awk | 2 +- awk/paragraphs.awk | 2 +- awk/toc.awk | 6 ++-- awk/update_site_conf.awk | 4 +-- kewt.sh | 32 +++++++++++++++++- lib/builder.sh | 59 ++++++++++++++++++++++------------ lib/generator.sh | 31 +++++++++++++++--- lib/search.js | 52 ++++++++++++++++++------------ package.json | 4 ++- site/depths/index.md | 2 +- site/docs/quickstart.md | 2 +- site/index.md | 2 +- site/site.conf | 2 +- styles/kewt-light.root.css | 26 +++++++++++++++ styles/mono-light.root.css | 26 +++++++++++++++ styles/mono.root.css | 26 +++++++++++++++ styles/nord-light.root.css | 26 +++++++++++++++ styles/nord.root.css | 26 +++++++++++++++ styles/onedark.root.css | 26 +++++++++++++++ styles/onelight.root.css | 26 +++++++++++++++ styles/rosepine-light.root.css | 26 +++++++++++++++ styles/rosepine.root.css | 26 +++++++++++++++ styles/solarized-dark.root.css | 26 +++++++++++++++ styles/solarized.root.css | 26 +++++++++++++++ 30 files changed, 446 insertions(+), 85 deletions(-) create mode 100644 styles/kewt-light.root.css create mode 100644 styles/mono-light.root.css create mode 100644 styles/mono.root.css create mode 100644 styles/nord-light.root.css create mode 100644 styles/nord.root.css create mode 100644 styles/onedark.root.css create mode 100644 styles/onelight.root.css create mode 100644 styles/rosepine-light.root.css create mode 100644 styles/rosepine.root.css create mode 100644 styles/solarized-dark.root.css create mode 100644 styles/solarized.root.css diff --git a/awk/definition_lists.awk b/awk/definition_lists.awk index 13ed75d..a6bb767 100644 --- a/awk/definition_lists.awk +++ b/awk/definition_lists.awk @@ -8,7 +8,7 @@ BEGIN { if ($0 ~ /^
/) {
         if (!in_pre) in_pre = 1
     }
-    
+
     if (!in_pre && $0 ~ /^:[ \t]+[^ \t]/) {
         if (!in_dl) {
             in_dl = 1
@@ -24,7 +24,7 @@ BEGIN {
         def_text = $0
         sub(/^:[ \t]+/, "", def_text)
         print "
" def_text "
" - + if ($0 ~ /<\/pre>/) { if (in_pre) in_pre = 0 } @@ -46,7 +46,7 @@ BEGIN { prev_line = $0 has_prev = 1 } - + if ($0 ~ /<\/pre>/) { if (in_pre) in_pre = 0 } diff --git a/awk/footnotes.awk b/awk/footnotes.awk index 79bd712..8d9cd30 100644 --- a/awk/footnotes.awk +++ b/awk/footnotes.awk @@ -8,7 +8,7 @@ BEGIN { fn_count = 0 } text = substr($0, id_end + 2) # Trim leading space sub(/^[ \t]+/, "", text) - + fn_ids[++fn_count] = id fn_texts[id] = text next @@ -21,19 +21,19 @@ BEGIN { fn_count = 0 } END { for (i = 1; i <= line_count; i++) { line = lines[i] - + for (j = 1; j <= fn_count; j++) { id = fn_ids[j] marker = "[^" id "]" repl = "" id "" - + while ((pos = index(line, marker)) > 0) { line = substr(line, 1, pos - 1) repl substr(line, pos + length(marker)) } } print line } - + if (fn_count > 0) { print "
" print "
" diff --git a/awk/indented_code.awk b/awk/indented_code.awk index 285d842..761821e 100644 --- a/awk/indented_code.awk +++ b/awk/indented_code.awk @@ -2,7 +2,7 @@ BEGIN { in_code = 0; in_html_pre = 0 } { if ($0 ~ /
/) in_html_pre = 1
     if ($0 ~ /<\/pre>/) { in_html_pre = 0; if (in_code) { print "
"; in_code = 0 }; print; next } - + if (!in_html_pre && $0 ~ /^(\t| )/) { if (!in_code) { printf "%s", "
"; in_code = 1 }
         sub(/^(\t|    )/, "", $0)
@@ -10,7 +10,7 @@ BEGIN { in_code = 0; in_html_pre = 0 }
         print
         next
     }
-    
+
     if (in_code) {
         print "
" in_code = 0 diff --git a/awk/lists.awk b/awk/lists.awk index e3d4b83..27cea1f 100644 --- a/awk/lists.awk +++ b/awk/lists.awk @@ -30,7 +30,7 @@ BEGIN { # get indentation level match(line, /^[ \t]*/) indent = RLENGTH - + if (depth == 0 || indent > cur_indent[depth]) { depth++ cur_indent[depth] = indent diff --git a/awk/markdown_embed.awk b/awk/markdown_embed.awk index 67189f9..6d73937 100644 --- a/awk/markdown_embed.awk +++ b/awk/markdown_embed.awk @@ -140,18 +140,18 @@ function css_highlight_line(line, m, prop, val) { match(line, /:[[:space:]]*/) sep_pos = RSTART sep_len = RLENGTH - + pre_sep = substr(line, 1, sep_pos - 1) sep = substr(line, sep_pos, sep_len) post_sep = substr(line, sep_pos + sep_len) - + match(pre_sep, /--?[A-Za-z0-9_-]+/) prop_pos = RSTART prop_len = RLENGTH - + indent = substr(pre_sep, 1, prop_pos - 1) prop_name = substr(pre_sep, prop_pos, prop_len) - + if (match(post_sep, /;[[:space:]]*$/)) { val_part = substr(post_sep, 1, RSTART - 1) suffix = substr(post_sep, RSTART) @@ -159,11 +159,11 @@ function css_highlight_line(line, m, prop, val) { val_part = post_sep suffix = "" } - + prop = "" prop_name "" gsub(/var\(--[A-Za-z0-9_-]+\)/, "&", val_part) val = "" val_part "" - + return indent prop sep val suffix } diff --git a/awk/mask_inline_code.awk b/awk/mask_inline_code.awk index 022381d..eb47e3a 100644 --- a/awk/mask_inline_code.awk +++ b/awk/mask_inline_code.awk @@ -46,14 +46,9 @@ function mask(s, t) { while (match(substr(line, p), /`+/)) { pstart = p + RSTART - 1 plen = RLENGTH - if (plen >= 3) { - out = out substr(line, p, pstart - p + plen) - p = pstart + plen - continue - } - # Found 1 or 2 backticks at pstart - # Search for closing marker + # Found backtick sequence at pstart + # Search for closing marker of same length marker = substr(line, pstart, plen) tail = substr(line, pstart + plen) mpos = index(tail, marker) @@ -65,11 +60,11 @@ function mask(s, t) { p = pstart + plen continue } - + # Found match! content = substr(tail, 1, mpos - 1) out = out substr(line, p, pstart - p) - if (plen == 2 && substr(content, 1, 1) == " " && substr(content, length(content), 1) == " ") { + if (plen >= 2 && substr(content, 1, 1) == " " && substr(content, length(content), 1) == " ") { content = substr(content, 2, length(content) - 2) } out = out "" mask(content) "" diff --git a/awk/mask_plain.awk b/awk/mask_plain.awk index 196a763..40ee3c3 100644 --- a/awk/mask_plain.awk +++ b/awk/mask_plain.awk @@ -56,7 +56,7 @@ BEGIN { in_plain = 0; in_script_style = 0 } script_start = RSTART; script_len = RLENGTH pos_style = match(tolower(tmp_line), /]|$)/) style_start = RSTART; style_len = RLENGTH - + if (pos_script == 0 && pos_style == 0) { out2 = out2 tmp_line break diff --git a/awk/paragraphs.awk b/awk/paragraphs.awk index d925398..c67e548 100644 --- a/awk/paragraphs.awk +++ b/awk/paragraphs.awk @@ -5,7 +5,7 @@ BEGIN { { if ($0 ~ /
/) in_pre = 1
-    
+
     if (in_pre) {
         if (in_p) { print "

"; in_p = 0 } print diff --git a/awk/toc.awk b/awk/toc.awk index c35e2e1..f3ab2d1 100644 --- a/awk/toc.awk +++ b/awk/toc.awk @@ -18,17 +18,17 @@ BEGIN { if (title_end > 0) { title = substr(title_str, 1, title_end - 1) gsub(/<[^>]+>/, "", title) - + # extract id id_start = match($0, /id="[^"]*"/) if (id_start > 0) { id_str = substr($0, id_start + 4) id_end = index(id_str, "\"") id = substr(id_str, 1, id_end - 1) - + # what tag? level level = substr($0, match($0, /" title "\n" } else if (level == "3") { diff --git a/awk/update_site_conf.awk b/awk/update_site_conf.awk index 1e159b5..dffe183 100644 --- a/awk/update_site_conf.awk +++ b/awk/update_site_conf.awk @@ -1,6 +1,6 @@ -BEGIN { +BEGIN { new_title = ENVIRON["AWK_NEW_TITLE"] - done = 0 + done = 0 } /^title[[:space:]]*=/ { print "title = \"" new_title "\"" diff --git a/kewt.sh b/kewt.sh index fd3a647..0c1e89d 100755 --- a/kewt.sh +++ b/kewt.sh @@ -320,10 +320,40 @@ if [ "$watch_mode" = "true" ]; then [ -z "$changed" ] && [ -f "$src/site.conf" ] && [ "$src/site.conf" -nt "$KEWT_TMPDIR/watch_mark" ] && changed="$src/site.conf" [ -z "$changed" ] && [ -f "$template" ] && [ "$template" -nt "$KEWT_TMPDIR/watch_mark" ] && changed="$template" [ -z "$changed" ] && [ -d "$script_dir/styles" ] && changed="$(find "$script_dir/styles" -type f -newer "$KEWT_TMPDIR/watch_mark" 2>/dev/null | head -n 1)" - + if [ -n "$changed" ]; then echo "" echo "Change detected, rebuilding..." + if [ "$clean_mode" = "true" ]; then + find "$out" -mindepth 1 -delete 2>/dev/null + fi + + load_config "./site.conf" + load_config "$src/site.conf" + + asset_version="" + if [ "$versioning" = "true" ]; then + asset_version="?v=$(date +%s)" + fi + + template="$src/template.html" + [ -f "$template" ] || template="./template.html" + if [ ! -f "$template" ]; then + template="$KEWT_TMPDIR/default_template.html" + printf '%s\n' "$DEFAULT_TMPL" > "$template" + fi + + nav=$(generate_nav "$src") + extra_links=$(nav_links_html) + if [ -n "$extra_links" ]; then + nav="$nav +$extra_links" + fi + if [ -n "$nav_extra" ]; then + nav="$nav +$nav_extra" + fi + build_site touch "$KEWT_TMPDIR/watch_mark" fi diff --git a/lib/builder.sh b/lib/builder.sh index 907e8fb..e200870 100644 --- a/lib/builder.sh +++ b/lib/builder.sh @@ -7,6 +7,8 @@ needs_rebuild() { [ -f "$src/site.conf" ] && [ "$src/site.conf" -nt "$out_file" ] && return 0 [ -f "$template" ] && [ "$template" -nt "$out_file" ] && return 0 [ -f "$script_dir/styles/$style.css" ] && [ "$script_dir/styles/$style.css" -nt "$out_file" ] && return 0 + [ -f "$script_dir/styles/$style.root.css" ] && [ "$script_dir/styles/$style.root.css" -nt "$out_file" ] && return 0 + [ -f "$src/styles.root.css" ] && [ "$src/styles.root.css" -nt "$out_file" ] && return 0 return 1 } @@ -59,11 +61,11 @@ eval "find \"$src\" \( $IGNORE_ARGS \) -prune -o -type d -print" | sort | while content_out_file="$out_dir/content.html" content_rel_url="/$rel_dir/content.html" [ "$rel_dir" = "." ] && content_rel_url="/content.html" - + is_cw_content_page="true" render_markdown "$md_file" "$is_home" "$target_url" > "$content_out_file" is_cw_content_page="false" - + generate_content_warning_page "$fm_title" "$fm_content_warning" "$content_rel_url" "$target_url" "$out_dir/index.html" "false" else render_markdown "$md_file" "$is_home" "$target_url" > "$out_dir/index.html" @@ -97,7 +99,7 @@ eval "find \"$src\" \( $IGNORE_ARGS \) -prune -o -type d -print" | sort | while find "$dir" ! -name "$(basename "$dir")" -prune ! -name ".*" -print | while read -r entry; do name="${entry##*/}" case "$name" in - template.html|site.conf|style.css|index.md) continue ;; + template.html|site.conf|style.css|styles.root.css|index.md) continue ;; esac if [ -d "$entry" ]; then echo "${name}|- [${name}/](${name}/index.html)" >> "$temp_entries" @@ -178,7 +180,7 @@ eval "find \"$src\" \( $IGNORE_ARGS \) -prune -o -type d -print" | sort | while echo "${name}|- [$name]($name)|$name|$name" >> "$temp_entries" fi done - + if [ "$is_posts_dir" = "true" ]; then LC_ALL=C sort $sort_args "$temp_entries" > "$KEWT_TMPDIR/sorted_entries_$$.txt" cut -d'|' -f2 "$KEWT_TMPDIR/sorted_entries_$$.txt" >> "$temp_list" @@ -210,7 +212,7 @@ eval "find \"$src\" \( $IGNORE_ARGS \) -prune -o -type d -print" | sort | while LC_ALL=C sort $sort_args "$temp_entries" | cut -d'|' -f2 >> "$temp_list" fi rm -f "$temp_entries" - + is_home="false"; [ "$dir" = "$src" ] && is_home="true" target_url="/$rel_dir/index.html" [ "$rel_dir" = "." ] && target_url="/index.html" @@ -312,16 +314,16 @@ eval "find \"$src\" \( $IGNORE_ARGS \) -prune -o -type d -print" | sort | while else fm_content_warning="" fi - + if [ -n "$fm_content_warning" ]; then content_out_file="$out_dir/content.html" content_rel_url="/$rel_dir/content.html" [ "$rel_dir" = "." ] && content_rel_url="/content.html" - + is_cw_content_page="true" render_markdown "$temp_index" "$is_home" "$target_url" > "$content_out_file" is_cw_content_page="false" - + generate_content_warning_page "$fm_title" "$fm_content_warning" "$content_rel_url" "$target_url" "$out_dir/index.html" "false" else render_markdown "$temp_index" "$is_home" "$target_url" > "$out_dir/index.html" @@ -332,8 +334,23 @@ eval "find \"$src\" \( $IGNORE_ARGS \) -prune -o -type d -print" | sort | while fi done -if [ -f "$script_dir/styles/$style.css" ] && needs_rebuild "$script_dir/styles/$style.css" "$out/styles.css"; then - copy_style_with_resolved_vars "$script_dir/styles/$style.css" "$out/styles.css" +if [ ! -f "$src/styles.css" ] && [ ! -f "$src/style.css" ]; then + if [ -f "$src/styles.root.css" ]; then + _base_css="$script_dir/styles/$style.css" + [ ! -f "$_base_css" ] && _base_css="$script_dir/styles/kewt.css" + if [ ! -f "$out/styles.css" ] || [ "$src/styles.root.css" -nt "$out/styles.css" ] || [ "$_base_css" -nt "$out/styles.css" ]; then + merge_root_style "$src/styles.root.css" "$_base_css" "$out/styles.css" + fi + elif [ -f "$script_dir/styles/$style.css" ]; then + if needs_rebuild "$script_dir/styles/$style.css" "$out/styles.css"; then + copy_style_with_resolved_vars "$script_dir/styles/$style.css" "$out/styles.css" + fi + elif [ -f "$script_dir/styles/$style.root.css" ]; then + _base_css="$script_dir/styles/kewt.css" + if [ ! -f "$out/styles.css" ] || [ "$script_dir/styles/$style.root.css" -nt "$out/styles.css" ] || [ "$_base_css" -nt "$out/styles.css" ]; then + merge_root_style "$script_dir/styles/$style.root.css" "$_base_css" "$out/styles.css" + fi + fi fi eval "find \"$src\" \( $IGNORE_ARGS \) -prune -o -type f -print" | sort | while IFS= read -r file; do @@ -343,7 +360,7 @@ eval "find \"$src\" \( $IGNORE_ARGS \) -prune -o -type f -print" | sort | while out_dir="$out/$dir_rel" case "${file##*/}" in - template.html|site.conf|style.css|styles.css) continue ;; + template.html|site.conf|style.css|styles.css|styles.root.css) continue ;; esac if [ "${file##*/}" = "index.md" ] && grep -q '^[[:space:]]*{{LIST}}[[:space:]]*$' "$file" 2>/dev/null; then @@ -378,11 +395,11 @@ eval "find \"$src\" \( $IGNORE_ARGS \) -prune -o -type f -print" | sort | while content_out_file="$out/${rel_path%.md}-content.html" content_rel_url="/${rel_path%.md}-content.html" orig_rel_url="/${rel_path%.md}.html" - + is_cw_content_page="true" render_markdown "$file" "$is_home" "$orig_rel_url" > "$content_out_file" is_cw_content_page="false" - + generate_content_warning_page "$fm_title" "$fm_content_warning" "$content_rel_url" "$orig_rel_url" "$out_file" "false" else render_markdown "$file" "$is_home" > "$out_file" @@ -589,7 +606,7 @@ if [ "$generate_search" = "true" ] || [ "$generate_tags" = "true" ]; then parse_frontmatter "$md_file" [ "$fm_draft" = "true" ] && continue - + md_heading="$fm_title" if [ -z "$md_heading" ]; then md_heading=$(grep -m 1 '^# ' "$md_file" | sed 's/^# *//; s/ *$//') @@ -605,7 +622,7 @@ if [ "$generate_search" = "true" ] || [ "$generate_tags" = "true" ]; then md_heading="$title - Page" fi fi - + if [ "$generate_search" = "true" ]; then if [ -z "$fm_content_warning" ] || [ "$include_cw_pages_in_search" = "true" ]; then md_content=$(awk '{ @@ -674,30 +691,30 @@ if [ "$generate_search" = "true" ] || [ "$generate_tags" = "true" ]; then if [ "$generate_tags" = "true" ]; then tags_out_dir="$out/$tags_dir" mkdir -p "$tags_out_dir" - + tags_index_md="$KEWT_TMPDIR/tags_index_$$.md" echo "# Tags" > "$tags_index_md" echo "" >> "$tags_index_md" cut -d'|' -f1 "$temp_tags" | sort -u | while IFS= read -r tag; do tag_slug=$(echo "$tag" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g') - + echo "- [$tag](/$(echo $tags_dir | sed 's|^\/||; s|\/$||')/$tag_slug.html)" >> "$tags_index_md" - + tag_page_md="$KEWT_TMPDIR/tag_page_$$.md" echo "# Tag: $tag" > "$tag_page_md" echo "" >> "$tag_page_md" echo "Posts tagged with **$tag**:" >> "$tag_page_md" echo "" >> "$tag_page_md" - + grep "^${tag}|" "$temp_tags" | while IFS='|' read -r _t t_url t_title; do echo "- [$t_title]($t_url)" >> "$tag_page_md" done - + render_markdown "$tag_page_md" "false" "/$tags_dir/$tag_slug.html" > "$tags_out_dir/$tag_slug.html" rm -f "$tag_page_md" done - + render_markdown "$tags_index_md" "false" "/$tags_dir/index.html" > "$tags_out_dir/index.html" rm -f "$tags_index_md" fi diff --git a/lib/generator.sh b/lib/generator.sh index 84bf64b..b521b4c 100644 --- a/lib/generator.sh +++ b/lib/generator.sh @@ -109,6 +109,27 @@ copy_style_with_resolved_vars() { out_style="$2" awk -f "$awk_dir/replace_variables.awk" "$src_style" > "$out_style" } +merge_root_style() { + root_file="$1" + base_css="$2" + out_file="$3" + { + cat "$root_file" + awk ' + BEGIN { in_root = 0; brace_depth = 0 } + /^:root[[:space:]]*\{/ { in_root = 1; brace_depth = 1; next } + in_root { + for (i = 1; i <= length($0); i++) { + c = substr($0, i, 1) + if (c == "{") brace_depth++ + if (c == "}") { brace_depth--; if (brace_depth == 0) { in_root = 0; next } } + } + next + } + { print } + ' "$base_css" + } | awk -f "$awk_dir/replace_variables.awk" > "$out_file" +} render_markdown() { file="$1" is_home="$2" @@ -130,12 +151,12 @@ render_markdown() { temp_post_with_backlink="$KEWT_TMPDIR/post_with_backlink_$$.md" printf "[< Back](index.html)\n\n" > "$temp_post_with_backlink" awk -f "$awk_dir/frontmatter.awk" "$file" >> "$temp_post_with_backlink" - + post_md_name="$(basename "$current_url" .html).md" prevnext_file="$KEWT_TMPDIR/prevnext/$post_md_name" if [ -f "$prevnext_file" ]; then IFS='|' read -r prev_str next_str < "$prevnext_file" - + printf "\n\n---\n
\n" >> "$temp_post_with_backlink" if [ -n "$prev_str" ]; then printf "%s\n" "$prev_str" >> "$temp_post_with_backlink" @@ -241,7 +262,7 @@ render_markdown() { else head_extra="$head_extra_og" fi - + if [ "$is_cw_content_page" = "true" ] && [ "$cw_hide_url" = "true" ]; then head_extra="$head_extra " @@ -269,11 +290,11 @@ generate_content_warning_page() { _target_url="$4" _out_file="$5" _is_home="$6" - + _temp_cw="$KEWT_TMPDIR/cw_$$.md" _cw_text="${_fm_content_warning}" [ "$_cw_text" = "true" ] && _cw_text="This content may be sensitive." - + cat < "$_temp_cw" --- title = "$_fm_title" diff --git a/lib/search.js b/lib/search.js index d204ff1..71c5ae3 100644 --- a/lib/search.js +++ b/lib/search.js @@ -1,44 +1,54 @@ -document.addEventListener('DOMContentLoaded', function() { +document.addEventListener("DOMContentLoaded", function () { var params = new URLSearchParams(window.location.search); - var query = params.get('q'); - var box = document.getElementById('search-box'); - var resultsContainer = document.getElementById('search-results-list'); + var query = params.get("q"); + var box = document.getElementById("search-box"); + var resultsContainer = document.getElementById("search-results-list"); if (box && query) box.value = query; if (!query) { - resultsContainer.innerHTML = '

Enter a search term above.

'; + resultsContainer.innerHTML = "

Enter a search term above.

"; return; } - fetch('/search.json') - .then(function(response) { return response.json(); }) - .then(function(data) { + fetch("/search.json") + .then(function (response) { + return response.json(); + }) + .then(function (data) { var q = query.toLowerCase(); - var results = data.filter(function(item) { - return item.title.toLowerCase().indexOf(q) !== -1 || - item.content.toLowerCase().indexOf(q) !== -1; + var results = data.filter(function (item) { + return ( + item.title.toLowerCase().indexOf(q) !== -1 || + item.content.toLowerCase().indexOf(q) !== -1 + ); }); - var esc = query.replace(//g, '>'); + var esc = query.replace(//g, ">"); if (results.length === 0) { - resultsContainer.innerHTML = '

No results found for "' + esc + '".

'; + resultsContainer.innerHTML = + '

No results found for "' + esc + '".

'; return; } - var html = '

Found ' + results.length + ' result(s) for "' + esc + '":

'; - results.forEach(function(result) { + var html = + "

Found " + + results.length + + ' result(s) for "' + + esc + + '":

'; + results.forEach(function (result) { var snippet = result.content.substring(0, 200); - if (result.content.length > 200) snippet += '...'; + if (result.content.length > 200) snippet += "..."; html += '
'; - html += '' + result.title + ''; - if (snippet) html += '

' + snippet + '

'; - html += '
'; + html += '' + result.title + ""; + if (snippet) html += "

" + snippet + "

"; + html += "
"; }); resultsContainer.innerHTML = html; }) - .catch(function() { - resultsContainer.innerHTML = '

Error loading search index.

'; + .catch(function () { + resultsContainer.innerHTML = "

Error loading search index.

"; }); }); diff --git a/package.json b/package.json index 18afdec..21955b3 100644 --- a/package.json +++ b/package.json @@ -3,5 +3,7 @@ "description": "A minimalist static site generator inspired by werc", "global": "true", "install": "make install", - "scripts": ["kewt"] + "scripts": [ + "kewt" + ] } diff --git a/site/depths/index.md b/site/depths/index.md index cb2d110..6468175 100644 --- a/site/depths/index.md +++ b/site/depths/index.md @@ -2,4 +2,4 @@ This is a custom index for a directory -{{LIST}} \ No newline at end of file +{{LIST}} diff --git a/site/docs/quickstart.md b/site/docs/quickstart.md index 980c27f..3962abb 100644 --- a/site/docs/quickstart.md +++ b/site/docs/quickstart.md @@ -29,4 +29,4 @@ kewt --serve ``` Builds the site and starts a local HTTP server. Use `--watch` with `--serve` to rebuild automatically on file changes. -## That's it, if you want to do anything more, look at [the documentation](/docs) \ No newline at end of file +## That's it, if you want to do anything more, look at [the documentation](/docs) diff --git a/site/index.md b/site/index.md index 2240028..d5a3078 100644 --- a/site/index.md +++ b/site/index.md @@ -41,4 +41,4 @@ It's meant to be a static site generator, like _[kew](https://github.com/uint23/ *** -## [Quickstart guide](/docs/quickstart.html) \ No newline at end of file +## [Quickstart guide](/docs/quickstart.html) diff --git a/site/site.conf b/site/site.conf index baa4697..1a2aa84 100644 --- a/site/site.conf +++ b/site/site.conf @@ -27,4 +27,4 @@ generate_tags = false generate_search = true search_in_footer = true search_in_header = true -include_cw_pages_in_search = false \ No newline at end of file +include_cw_pages_in_search = false diff --git a/styles/kewt-light.root.css b/styles/kewt-light.root.css new file mode 100644 index 0000000..f045050 --- /dev/null +++ b/styles/kewt-light.root.css @@ -0,0 +1,26 @@ +:root { + --bg: #f5f0ff; + --bg-deep: #e8dffa; + --fg: #2d1b4e; + --fg-muted: #7a6898; + --fg-link: #7b3fba; + --fg-heading: #3d2466; + --code-bg: #e8dffa; + --code-border: #d0c0e8; + --code-fg: #2d1b4e; + --code-sel: #b8860b; + --code-prop: #6f42c1; + --code-val: #0366d6; + --code-var: #22863a; + --code-com: #7a6898; + --adm-note-bg: #e0e0f8; + --adm-note-border: #5b6fc4; + --adm-tip-bg: #ddf0dd; + --adm-tip-border: #46a758; + --adm-important-bg: #eeddf5; + --adm-important-border: #8b5fc7; + --adm-warning-bg: #f5f0dd; + --adm-warning-border: #b8860b; + --adm-caution-bg: #f5dddd; + --adm-caution-border: #c44569; +} diff --git a/styles/mono-light.root.css b/styles/mono-light.root.css new file mode 100644 index 0000000..e6bb0ec --- /dev/null +++ b/styles/mono-light.root.css @@ -0,0 +1,26 @@ +:root { + --bg: #f5f5f5; + --bg-deep: #e8e8e8; + --fg: #1a1a1a; + --fg-muted: #808080; + --fg-link: #333333; + --fg-heading: #000000; + --code-bg: #e8e8e8; + --code-border: #c0c0c0; + --code-fg: #1a1a1a; + --code-sel: #555555; + --code-prop: #333333; + --code-val: #666666; + --code-var: #444444; + --code-com: #999999; + --adm-note-bg: #e0e0ee; + --adm-note-border: #8888aa; + --adm-tip-bg: #e0eee0; + --adm-tip-border: #88aa88; + --adm-important-bg: #eee0ee; + --adm-important-border: #aa88aa; + --adm-warning-bg: #eeeed0; + --adm-warning-border: #aaaa78; + --adm-caution-bg: #eee0e0; + --adm-caution-border: #aa8888; +} diff --git a/styles/mono.root.css b/styles/mono.root.css new file mode 100644 index 0000000..eaabe02 --- /dev/null +++ b/styles/mono.root.css @@ -0,0 +1,26 @@ +:root { + --bg: #1a1a1a; + --bg-deep: #111111; + --fg: #d4d4d4; + --fg-muted: #808080; + --fg-link: #e0e0e0; + --fg-heading: #ffffff; + --code-bg: #0d0d0d; + --code-border: #404040; + --code-fg: #d4d4d4; + --code-sel: #b8b8b8; + --code-prop: #e0e0e0; + --code-val: #a0a0a0; + --code-var: #c8c8c8; + --code-com: #585858; + --adm-note-bg: #1a1a2e; + --adm-note-border: #5a5a8a; + --adm-tip-bg: #1a2e1a; + --adm-tip-border: #5a8a5a; + --adm-important-bg: #2e1a2e; + --adm-important-border: #8a5a8a; + --adm-warning-bg: #2e2e1a; + --adm-warning-border: #8a8a5a; + --adm-caution-bg: #2e1a1a; + --adm-caution-border: #8a5a5a; +} diff --git a/styles/nord-light.root.css b/styles/nord-light.root.css new file mode 100644 index 0000000..83f3483 --- /dev/null +++ b/styles/nord-light.root.css @@ -0,0 +1,26 @@ +:root { + --bg: #eceff4; + --bg-deep: #d8dee9; + --fg: #2e3440; + --fg-muted: #4c566a; + --fg-link: #5e81ac; + --fg-heading: #3b4252; + --code-bg: #d8dee9; + --code-border: #c5cdd9; + --code-fg: #2e3440; + --code-sel: #d08770; + --code-prop: #5e81ac; + --code-val: #8fbcbb; + --code-var: #a3be8c; + --code-com: #4c566a; + --adm-note-bg: #d8dee9; + --adm-note-border: #5e81ac; + --adm-tip-bg: #e0ebd8; + --adm-tip-border: #a3be8c; + --adm-important-bg: #e5dbe8; + --adm-important-border: #b48ead; + --adm-warning-bg: #ede5d6; + --adm-warning-border: #ebcb8b; + --adm-caution-bg: #eddcdc; + --adm-caution-border: #bf616a; +} diff --git a/styles/nord.root.css b/styles/nord.root.css new file mode 100644 index 0000000..26890ec --- /dev/null +++ b/styles/nord.root.css @@ -0,0 +1,26 @@ +:root { + --bg: #2e3440; + --bg-deep: #242933; + --fg: #d8dee9; + --fg-muted: #a5b0c1; + --fg-link: #88c0d0; + --fg-heading: #eceff4; + --code-bg: #3b4252; + --code-border: #4c566a; + --code-fg: #d8dee9; + --code-sel: #ebcb8b; + --code-prop: #8fbcbb; + --code-val: #81a1c1; + --code-var: #a3be8c; + --code-com: #616e88; + --adm-note-bg: #3b4252; + --adm-note-border: #88c0d0; + --adm-tip-bg: #3b4340; + --adm-tip-border: #a3be8c; + --adm-important-bg: #3b4044; + --adm-important-border: #b48ead; + --adm-warning-bg: #3b4038; + --adm-warning-border: #ebcb8b; + --adm-caution-bg: #3b3840; + --adm-caution-border: #bf616a; +} diff --git a/styles/onedark.root.css b/styles/onedark.root.css new file mode 100644 index 0000000..0406886 --- /dev/null +++ b/styles/onedark.root.css @@ -0,0 +1,26 @@ +:root { + --bg: #282c34; + --bg-deep: #21252b; + --fg: #abb2bf; + --fg-muted: #636d83; + --fg-link: #61afef; + --fg-heading: #c8ccd4; + --code-bg: #21252b; + --code-border: #3e4451; + --code-fg: #abb2bf; + --code-sel: #e5c07b; + --code-prop: #e06c75; + --code-val: #56b6c2; + --code-var: #98c379; + --code-com: #5c6370; + --adm-note-bg: #2c313c; + --adm-note-border: #61afef; + --adm-tip-bg: #2c3a30; + --adm-tip-border: #98c379; + --adm-important-bg: #33303c; + --adm-important-border: #c678dd; + --adm-warning-bg: #3a352c; + --adm-warning-border: #e5c07b; + --adm-caution-bg: #3a2c2e; + --adm-caution-border: #e06c75; +} diff --git a/styles/onelight.root.css b/styles/onelight.root.css new file mode 100644 index 0000000..58fc6c3 --- /dev/null +++ b/styles/onelight.root.css @@ -0,0 +1,26 @@ +:root { + --bg: #fafafa; + --bg-deep: #eaeaeb; + --fg: #383a42; + --fg-muted: #a0a1a7; + --fg-link: #4078f2; + --fg-heading: #383a42; + --code-bg: #eaeaeb; + --code-border: #d4d4d5; + --code-fg: #383a42; + --code-sel: #986801; + --code-prop: #e45649; + --code-val: #0184bc; + --code-var: #50a14f; + --code-com: #a0a1a7; + --adm-note-bg: #e8eefa; + --adm-note-border: #4078f2; + --adm-tip-bg: #e8f5e8; + --adm-tip-border: #50a14f; + --adm-important-bg: #f2e8f5; + --adm-important-border: #a626a4; + --adm-warning-bg: #f5f0e0; + --adm-warning-border: #986801; + --adm-caution-bg: #fae8e8; + --adm-caution-border: #e45649; +} diff --git a/styles/rosepine-light.root.css b/styles/rosepine-light.root.css new file mode 100644 index 0000000..fa3f132 --- /dev/null +++ b/styles/rosepine-light.root.css @@ -0,0 +1,26 @@ +:root { + --bg: #faf4ed; + --bg-deep: #f2e9e1; + --fg: #575279; + --fg-muted: #9893a5; + --fg-link: #907aa9; + --fg-heading: #286983; + --code-bg: #f2e9e1; + --code-border: #dfdad9; + --code-fg: #575279; + --code-sel: #ea9d34; + --code-prop: #b4637a; + --code-val: #56949f; + --code-var: #286983; + --code-com: #9893a5; + --adm-note-bg: #f0e8f5; + --adm-note-border: #907aa9; + --adm-tip-bg: #e8f0ee; + --adm-tip-border: #56949f; + --adm-important-bg: #f0e8f0; + --adm-important-border: #907aa9; + --adm-warning-bg: #f5f0e0; + --adm-warning-border: #ea9d34; + --adm-caution-bg: #f5e5e8; + --adm-caution-border: #b4637a; +} diff --git a/styles/rosepine.root.css b/styles/rosepine.root.css new file mode 100644 index 0000000..0cbb343 --- /dev/null +++ b/styles/rosepine.root.css @@ -0,0 +1,26 @@ +:root { + --bg: #191724; + --bg-deep: #13111e; + --fg: #e0def4; + --fg-muted: #908caa; + --fg-link: #c4a7e7; + --fg-heading: #ebbcba; + --code-bg: #1f1d2e; + --code-border: #26233a; + --code-fg: #e0def4; + --code-sel: #f6c177; + --code-prop: #eb6f92; + --code-val: #9ccfd8; + --code-var: #31748f; + --code-com: #6e6a86; + --adm-note-bg: #1f1d2e; + --adm-note-border: #c4a7e7; + --adm-tip-bg: #1a2332; + --adm-tip-border: #9ccfd8; + --adm-important-bg: #2a1f2e; + --adm-important-border: #c4a7e7; + --adm-warning-bg: #2a251f; + --adm-warning-border: #f6c177; + --adm-caution-bg: #2a1f22; + --adm-caution-border: #eb6f92; +} diff --git a/styles/solarized-dark.root.css b/styles/solarized-dark.root.css new file mode 100644 index 0000000..4391489 --- /dev/null +++ b/styles/solarized-dark.root.css @@ -0,0 +1,26 @@ +:root { + --bg: #002b36; + --bg-deep: #001e26; + --fg: #839496; + --fg-muted: #586e75; + --fg-link: #268bd2; + --fg-heading: #93a1a1; + --code-bg: #073642; + --code-border: #094959; + --code-fg: #839496; + --code-sel: #d33682; + --code-prop: #268bd2; + --code-val: #2aa198; + --code-var: #859900; + --code-com: #586e75; + --adm-note-bg: #073642; + --adm-note-border: #268bd2; + --adm-tip-bg: #07382e; + --adm-tip-border: #2aa198; + --adm-important-bg: #2a0736; + --adm-important-border: #d33682; + --adm-warning-bg: #363007; + --adm-warning-border: #b58900; + --adm-caution-bg: #360a07; + --adm-caution-border: #cb4b16; +} diff --git a/styles/solarized.root.css b/styles/solarized.root.css new file mode 100644 index 0000000..70d5121 --- /dev/null +++ b/styles/solarized.root.css @@ -0,0 +1,26 @@ +:root { + --bg: #fdf6e3; + --bg-deep: #eee8d5; + --fg: #657b83; + --fg-muted: #93a1a1; + --fg-link: #268bd2; + --fg-heading: #586e75; + --code-bg: #eee8d5; + --code-border: #d3cbb7; + --code-fg: #657b83; + --code-sel: #d33682; + --code-prop: #268bd2; + --code-val: #2aa198; + --code-var: #859900; + --code-com: #93a1a1; + --adm-note-bg: #eee8d5; + --adm-note-border: #268bd2; + --adm-tip-bg: #e8f5e0; + --adm-tip-border: #859900; + --adm-important-bg: #f0e8f5; + --adm-important-border: #6c71c4; + --adm-warning-bg: #fdf0e3; + --adm-warning-border: #b58900; + --adm-caution-bg: #fde8e8; + --adm-caution-border: #dc322f; +}