summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVolpeon <git@volpeon.ink>2022-06-20 18:32:44 +0200
committerVolpeon <git@volpeon.ink>2022-06-20 18:32:44 +0200
commitcfa66c5ec0fe8d948df16bf3ce17291e9913b2a8 (patch)
treeb206ef9448e6e900703792262f32dc91ed39e5e5
parentWIP: Hashing all static assets (diff)
downloadvolpeon.ink-cfa66c5ec0fe8d948df16bf3ce17291e9913b2a8.tar.gz
volpeon.ink-cfa66c5ec0fe8d948df16bf3ce17291e9913b2a8.tar.bz2
volpeon.ink-cfa66c5ec0fe8d948df16bf3ce17291e9913b2a8.zip
Add hash to more assets
-rw-r--r--Makefile35
-rw-r--r--Makefile copy215
-rw-r--r--filters/icons.lua2
-rw-r--r--templates/base.html8
-rw-r--r--templates/layouts/exhibit.html6
-rw-r--r--templates/layouts/page.html8
-rw-r--r--templates/partials/gallery_card.html4
-rw-r--r--templates/partials/grid_card.html4
-rw-r--r--templates/partials/list_card.html4
9 files changed, 39 insertions, 247 deletions
diff --git a/Makefile b/Makefile
index d8dc0db..ede169e 100644
--- a/Makefile
+++ b/Makefile
@@ -21,19 +21,20 @@ FEED_FILES := $(patsubst content/%.md,out/%.xml,$(FEED_SRC))
21FONT_FILES := $(patsubst assets/fonts/%.ttf,out/%.woff2,$(wildcard assets/fonts/*.ttf)) 21FONT_FILES := $(patsubst assets/fonts/%.ttf,out/%.woff2,$(wildcard assets/fonts/*.ttf))
22CSS_FILES := $(patsubst assets/css/%.scss,out/%.css,$(wildcard assets/css/style.scss)) 22CSS_FILES := $(patsubst assets/css/%.scss,out/%.css,$(wildcard assets/css/style.scss))
23STATIC_FILES := $(patsubst content/%,out/%,$(shell find content -type f ! -name "*.md")) 23STATIC_FILES := $(patsubst content/%,out/%,$(shell find content -type f ! -name "*.md"))
24ASSET_FILES := $(FONT_FILES) $(CSS_FILES) out/icons.svg $(patsubst content/%,out/%,$(shell find content -maxdepth 1 -type f ! -name "*.md"))
24 25
25# 26#
26# TARGETS 27# TARGETS
27# 28#
28 29
29all: content_meta content_files feed_files static_files font_files css_files icons 30all: content_meta content_files feed_files font_files css_files static_files
30 31
31content_meta: $(CONTENT_META) 32content_meta: $(CONTENT_META)
32content_files: $(CONTENT_FILES) 33content_files: $(CONTENT_FILES)
33feed_files: $(FEED_FILES) 34feed_files: $(FEED_FILES)
34static_files: $(STATIC_FILES)
35font_files: $(FONT_FILES) 35font_files: $(FONT_FILES)
36css_files: $(CSS_FILES) 36css_files: $(CSS_FILES)
37static_files: $(STATIC_FILES)
37 38
38# 39#
39# RULES 40# RULES
@@ -65,6 +66,7 @@ subpages = $(patsubst content/%.md,.cache/meta/%.json, \
65 --metadata-file "$@.pages" \ 66 --metadata-file "$@.pages" \
66 $(PANDOC_FILTERS) \ 67 $(PANDOC_FILTERS) \
67 -o "$@.meta" "$<" 68 -o "$@.meta" "$<"
69 rm "$@.pages"
68 pandoc \ 70 pandoc \
69 -f markdown-citations-implicit_figures \ 71 -f markdown-citations-implicit_figures \
70 -t html5 \ 72 -t html5 \
@@ -77,11 +79,13 @@ subpages = $(patsubst content/%.md,.cache/meta/%.json, \
77 $(PANDOC_FILTERS) \ 79 $(PANDOC_FILTERS) \
78 -o "$@.content" "$<" 80 -o "$@.content" "$<"
79 jq '. + { content: $$content }' --rawfile content "$@.content" "$@.meta" > "$@" 81 jq '. + { content: $$content }' --rawfile content "$@.content" "$@.meta" > "$@"
80 rm "$@.pages"
81 rm "$@.meta" 82 rm "$@.meta"
82 rm "$@.content" 83 rm "$@.content"
83 84
84out/%.html: content/%.md .cache/meta/%.json $(CONTENT_TEMPLATES_SRC) metadata/*.yaml filters/*.lua scripts/metadata_filter.lua out/style.css | out 85.cache/assets.json: $(ASSET_FILES) | .cache
86 sha256sum $^ | sed -r 's/([0-9a-f]+) +out\/(.*)/{ "\2": "\/\2?\1" }/' | jq '{ assets: [inputs] | add | with_entries( .key |= gsub( "\\."; "_") ) }' > "$@"
87
88out/%.html: content/%.md .cache/meta/%.json .cache/assets.json $(CONTENT_TEMPLATES_SRC) metadata/*.yaml filters/*.lua scripts/metadata_filter.lua | out
85 $(info [MARK] $< -> $@) 89 $(info [MARK] $< -> $@)
86 90
87 mkdir -p $(@D) 91 mkdir -p $(@D)
@@ -93,9 +97,9 @@ out/%.html: content/%.md .cache/meta/%.json $(CONTENT_TEMPLATES_SRC) metadata/*.
93 --template templates/base.html \ 97 --template templates/base.html \
94 --lua-filter scripts/metadata_filter.lua \ 98 --lua-filter scripts/metadata_filter.lua \
95 $(GLOBAL_METADATA) \ 99 $(GLOBAL_METADATA) \
100 --metadata-file .cache/assets.json \
96 --metadata-file "$(filter .cache/meta/%.json,$^)" \ 101 --metadata-file "$(filter .cache/meta/%.json,$^)" \
97 --metadata file_out="$@" \ 102 --metadata file_out="$@" \
98 --metadata style_hash="$(shell sha256sum out/style.css | cut -d ' ' -f 1)" \
99 $(PANDOC_FILTERS) \ 103 $(PANDOC_FILTERS) \
100 -o "$@" "$<" 104 -o "$@" "$<"
101 105
@@ -140,14 +144,8 @@ out/%.css: assets/css/%.scss $(CSS_SRC) | out
140 144
141 sass --load-path=node_modules "$<" | ./node_modules/.bin/postcss --use autoprefixer --no-map -o "$@" 145 sass --load-path=node_modules "$<" | ./node_modules/.bin/postcss --use autoprefixer --no-map -o "$@"
142 146
143out/%: content/% | out 147out/icons.svg: | out
144 $(info [COPY] $< -> $@) 148 $(info [ICON] $@)
145
146 mkdir -p $(@D)
147 cp "$<" "$@"
148
149icons: | out
150 $(info [ICON] out/icons.svg)
151 149
152 node ./node_modules/iro-icons/scripts/create_sprite.js \ 150 node ./node_modules/iro-icons/scripts/create_sprite.js \
153 asterisk \ 151 asterisk \
@@ -168,7 +166,16 @@ icons: | out
168 x \ 166 x \
169 chevron-left \ 167 chevron-left \
170 chevron-right \ 168 chevron-right \
171 "out/icons.svg" 169 "$@"
170
171out/%: content/% | out
172 $(info [COPY] $< -> $@)
173
174 mkdir -p $(@D)
175 cp "$<" "$@"
176
177.cache/hash: | .cache
178 mkdir -p .cache/hash
172 179
173.cache/meta: | .cache 180.cache/meta: | .cache
174 mkdir -p .cache/meta 181 mkdir -p .cache/meta
diff --git a/Makefile copy b/Makefile copy
deleted file mode 100644
index 52d4dd8..0000000
--- a/Makefile copy
+++ /dev/null
@@ -1,215 +0,0 @@
1export DEPLOY_TARGET = vulpes@94.130.78.123:/srv/http/volpeon.ink/
2
3-include Env.mk
4
5#
6# FILE GROUPS
7#
8
9PANDOC_FILTERS := $(patsubst %,--lua-filter %,$(wildcard filters/*.lua))
10GLOBAL_METADATA := $(patsubst %,--metadata-file %,$(wildcard metadata/*.yaml))
11
12CONTENT_SRC := $(shell find content -type f -name "*.md")
13FEED_SRC := $(shell grep -l "^feed: *true$$" $(CONTENT_SRC))
14CONTENT_TEMPLATES_SRC := $(shell find templates -type f -name "*.html")
15FEED_TEMPLATES_SRC := $(shell find templates -type f -name "*.xml")
16CSS_SRC := $(shell find assets/css -type f -name "*.scss")
17
18CONTENT_META := $(patsubst content/%.md,.cache/meta/%.json,$(CONTENT_SRC))
19CONTENT_FILES := $(patsubst content/%.md,out/%.html,$(CONTENT_SRC))
20FEED_FILES := $(patsubst content/%.md,out/%.xml,$(FEED_SRC))
21FONT_FILES := $(patsubst assets/fonts/%.ttf,out/%.woff2,$(wildcard assets/fonts/*.ttf))
22CSS_FILES := $(patsubst assets/css/%.scss,out/%.css,$(wildcard assets/css/style.scss))
23STATIC_FILES := $(patsubst content/%,out/%,$(shell find content -type f ! -name "*.md"))
24STATIC_HASHED_FILES := $(filter out/%.css out/%.js out/%.svg out/%.woff2,$(STATIC_FILES))
25
26#
27# TARGETS
28#
29
30all: content_meta content_files feed_files font_files css_files static_files icons
31
32content_meta: $(CONTENT_META)
33content_files: $(CONTENT_FILES)
34feed_files: $(FEED_FILES)
35font_files: $(FONT_FILES)
36css_files: $(CSS_FILES)
37static_files: $(STATIC_FILES)
38
39#
40# RULES
41#
42
43.SECONDEXPANSION:
44
45namespace = $(patsubst %/index,%,$(patsubst %.json,%,$(patsubst $(2)%,%,$(1))))
46
47subpages = $(patsubst content/%.md,.cache/meta/%.json, \
48 $(shell test -d $(patsubst .cache/meta%,content%,$(1)) && find $(patsubst .cache/meta%,content%,$(1)) -maxdepth 1 -type f -name "*.md" ! -name "index.md") \
49 $(shell test -d $(patsubst .cache/meta%,content%,$(1)) && find $(patsubst .cache/meta%,content%,$(1)) -mindepth 2 -maxdepth 2 -type f -name "index.md"))
50
51.cache/meta/%.json: content/%.md $$(call subpages,$$(call namespace,$$@,)) filters/*.lua scripts/subpages.lua scripts/subpages.jq scripts/metadata_tpl.json | .cache/meta
52 $(info [META] $< -> $@)
53
54 mkdir -p $(@D)
55 $(eval PAGES_FILES = $(filter .cache/meta/%.json,$^))
56 $(eval NAMESPACE = $(call namespace,$@,.cache/meta))
57 $(if $(PAGES_FILES),jq -s --arg namespace "$(NAMESPACE)" -f scripts/subpages.jq $(PAGES_FILES) > "$@.pages",echo "{}" > "$@.pages")
58 pandoc \
59 -f markdown-citations-implicit_figures \
60 -t html5 \
61 --wrap preserve \
62 --no-highlight \
63 --template scripts/metadata_tpl.json \
64 --metadata namespace="$(NAMESPACE)" \
65 --metadata file_out="$(patsubst .cache/meta/%.json,out/%.html,$@)" \
66 --metadata-file "$@.pages" \
67 $(PANDOC_FILTERS) \
68 -o "$@.meta" "$<"
69 pandoc \
70 -f markdown-citations-implicit_figures \
71 -t html5 \
72 --wrap preserve \
73 --lua-filter scripts/metadata_filter.lua \
74 --lua-filter scripts/subpages.lua \
75 $(GLOBAL_METADATA) \
76 --metadata-file "$@.meta" \
77 --metadata file_out="$@" \
78 $(PANDOC_FILTERS) \
79 -o "$@.content" "$<"
80 jq '. + { content: $$content }' --rawfile content "$@.content" "$@.meta" > "$@"
81 rm "$@.pages"
82 rm "$@.meta"
83 rm "$@.content"
84
85.cache/hash.json: $(STATIC_HASHED_FILES) | .cache
86 echo "$^"
87 shell sha256sum "$^" | sed -r 's/([0-9a-f]+) +.*\/(.*)/"\2": "\1"/'
88
89out/%.html: content/%.md .cache/meta/%.json .cache/hash.json $(CONTENT_TEMPLATES_SRC) metadata/*.yaml filters/*.lua scripts/metadata_filter.lua out/style.css | out
90 $(info [MARK] $< -> $@)
91
92 mkdir -p $(@D)
93 pandoc \
94 -f markdown-citations-implicit_figures \
95 -t html5 \
96 --wrap preserve \
97 --no-highlight \
98 --template templates/base.html \
99 --lua-filter scripts/metadata_filter.lua \
100 $(GLOBAL_METADATA) \
101 --metadata-file ".cache/hash.json" \
102 --metadata-file "$(filter .cache/meta/%.json,$^)" \
103 --metadata file_out="$@" \
104 $(PANDOC_FILTERS) \
105 -o "$@" "$<"
106
107out/%.xml: content/%.md .cache/meta/%.json $(FEED_TEMPLATES_SRC) metadata/*.yaml filters/*.lua scripts/metadata_filter.lua | out
108 $(info [FEED] $< -> $@)
109
110 mkdir -p $(@D)
111 pandoc \
112 -f markdown-citations-implicit_figures \
113 -t html5 \
114 --wrap preserve \
115 --no-highlight \
116 --template templates/feed.xml \
117 --lua-filter scripts/metadata_filter.lua \
118 $(GLOBAL_METADATA) \
119 --metadata-file "$(filter .cache/meta/%.json,$^)" \
120 --metadata file_out="$@" \
121 $(PANDOC_FILTERS) \
122 -o "$@" "$<"
123
124out/%/thumbnail.png: content/%/thumbnail.png | out
125 $(info [THMB] $< -> $@)
126
127 convert -thumbnail 550x280^ -gravity center -extent 550x280 "$<" png:- | pngquant -o "$@" -
128
129out/%/thumbnail.jpg: content/%/thumbnail.jpg | out
130 $(info [THMB] $< -> $@)
131
132 convert -thumbnail 550x280^ -gravity center -extent 550x280 "$<" ppm:- | cjpeg -quality 80 > "$@"
133
134out/%.woff2: assets/fonts/%.ttf assets/fonts/glyphs.txt | out
135 $(info [FONT] $< -> $@)
136
137 pyftsubset "$<" \
138 --text-file="assets/fonts/glyphs.txt" \
139 --layout-features+=ss09,dlig \
140 --flavor="woff2" \
141 --output-file="$@"
142
143out/%.css: assets/css/%.scss $(CSS_SRC) | out
144 $(info [SCSS] $< -> $@)
145
146 sass --load-path=node_modules "$<" | ./node_modules/.bin/postcss --use autoprefixer --no-map -o "$@"
147
148out/%: content/% | out
149 $(info [COPY] $< -> $@)
150
151 mkdir -p $(@D)
152 cp "$<" "$@"
153
154icons: | out
155 $(info [ICON] out/icons.svg)
156
157 node ./node_modules/iro-icons/scripts/create_sprite.js \
158 asterisk \
159 arrow-left \
160 arrow-right \
161 arrow-up-right \
162 shuffle \
163 envelope \
164 hash \
165 messages \
166 parallelogram \
167 globe \
168 image \
169 graph \
170 git-branch \
171 smile \
172 link \
173 x \
174 chevron-left \
175 chevron-right \
176 "out/icons.svg"
177
178.cache/hash: | .cache
179 mkdir -p .cache/hash
180
181.cache/meta: | .cache
182 mkdir -p .cache/meta
183
184.cache:
185 mkdir -p .cache
186
187out:
188 mkdir -p out
189
190#
191# UTILITIES
192#
193
194watch: all
195 while true; do \
196 inotifywait -qr -e modify -e create -e delete -e move assets content filters metadata scripts templates; \
197 $(MAKE); \
198 done
199
200serve: all
201 python -m http.server --bind 127.0.0.1 --directory out 8000
202
203dev: watch serve
204
205compress: all
206 pigz -R -k -9 -- `find out -type f -iregex '.*\\.\\(css\\|js\\|json\\|html\\|xml\\|txt\\|svg\\|ico\\)'`
207 brotli -k -- `find out -type f -iregex '.*\\.\\(css\\|js\\|json\\|html\\|xml\\|txt\\|svg\\|ico\\|woff\\)'`
208
209deploy: compress
210 rsync --progress --stats -rvz --delete out/ "$(DEPLOY_TARGET)"
211
212clean:
213 rm -rf out
214
215.PHONY: all watch serve dev deploy clean
diff --git a/filters/icons.lua b/filters/icons.lua
index 9e921f3..36d2108 100644
--- a/filters/icons.lua
+++ b/filters/icons.lua
@@ -4,7 +4,7 @@ function Str(el)
4 if icon then 4 if icon then
5 return pandoc.RawInline('html', 5 return pandoc.RawInline('html',
6 '<svg class="o-icon o-icon--inline" width="1em" height="1em" aria-hidden="true">\ 6 '<svg class="o-icon o-icon--inline" width="1em" height="1em" aria-hidden="true">\
7 <use href="/icons.svg#' .. icon .. '"></use>\ 7 <use href="$assets.icons_svg$#' .. icon .. '"></use>\
8 </svg>') 8 </svg>')
9 end 9 end
10 10
diff --git a/templates/base.html b/templates/base.html
index 4ffd690..6559a56 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -41,7 +41,7 @@
41 41
42 <title>$if(namespace.root.is_index)$$else$$title$ – $endif$$site.title$</title> 42 <title>$if(namespace.root.is_index)$$else$$title$ – $endif$$site.title$</title>
43 43
44 <link rel="preload" href="/style.css?$style_hash$" as="style" /> 44 <link rel="preload" href="$assets.style_css$" as="style" />
45 <link rel="preload" href="/IBMPlexSans-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous" /> 45 <link rel="preload" href="/IBMPlexSans-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous" />
46 <link rel="preload" href="/IBMPlexSans-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous" /> 46 <link rel="preload" href="/IBMPlexSans-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous" />
47 <link rel="preload" href="/IBMPlexSans-Italic.woff2" as="font" type="font/woff2" crossorigin="anonymous" /> 47 <link rel="preload" href="/IBMPlexSans-Italic.woff2" as="font" type="font/woff2" crossorigin="anonymous" />
@@ -49,7 +49,7 @@
49 <link rel="preload" href="/iosevka-term-ss09-regular.woff2" as="font" type="font/woff2" crossorigin="anonymous" /> 49 <link rel="preload" href="/iosevka-term-ss09-regular.woff2" as="font" type="font/woff2" crossorigin="anonymous" />
50 <link rel="preload" href="/iosevka-term-ss09-bold.woff2" as="font" type="font/woff2" crossorigin="anonymous" /> 50 <link rel="preload" href="/iosevka-term-ss09-bold.woff2" as="font" type="font/woff2" crossorigin="anonymous" />
51 51
52 <link rel="stylesheet" href="/style.css?$style_hash$" /> 52 <link rel="stylesheet" href="$assets.style_css$" />
53</head> 53</head>
54 54
55<body itemscope itemtype="https://schema.org/WebPage" class="t-no-js"> 55<body itemscope itemtype="https://schema.org/WebPage" class="t-no-js">
@@ -87,8 +87,8 @@ ${layouts/page()}
87 </div> 87 </div>
88 </footer> 88 </footer>
89 89
90 <script src="/main.js"></script> 90 <script src="$assets.main_js$"></script>
91 <!--script src="/snow.js"></script--> 91 <!--script src="$assets.snow_js$"></script-->
92</body> 92</body>
93 93
94</html> 94</html>
diff --git a/templates/layouts/exhibit.html b/templates/layouts/exhibit.html
index 3170305..fcc92a4 100644
--- a/templates/layouts/exhibit.html
+++ b/templates/layouts/exhibit.html
@@ -10,13 +10,13 @@
10 10
11 <button class="o-lightbox__nav-btn o-lightbox__nav-btn--prev o-action-button o-action-button--quiet o-action-button--round"> 11 <button class="o-lightbox__nav-btn o-lightbox__nav-btn--prev o-action-button o-action-button--quiet o-action-button--round">
12 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true"> 12 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true">
13 <use href="/icons.svg#chevron-left"></use> 13 <use href="$assets.icons_svg$#chevron-left"></use>
14 </svg> 14 </svg>
15 </button> 15 </button>
16 16
17 <button class="o-lightbox__nav-btn o-lightbox__nav-btn--next o-action-button o-action-button--quiet o-action-button--round"> 17 <button class="o-lightbox__nav-btn o-lightbox__nav-btn--next o-action-button o-action-button--quiet o-action-button--round">
18 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true"> 18 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true">
19 <use href="/icons.svg#chevron-right"></use> 19 <use href="$assets.icons_svg$#chevron-right"></use>
20 </svg> 20 </svg>
21 </button> 21 </button>
22 22
@@ -56,4 +56,4 @@ $body$
56 </div> 56 </div>
57</main> 57</main>
58 58
59<script src="/lightbox.js"></script> 59<script src="$assets.lightbox_js$"></script>
diff --git a/templates/layouts/page.html b/templates/layouts/page.html
index e40bf4c..53af7e0 100644
--- a/templates/layouts/page.html
+++ b/templates/layouts/page.html
@@ -40,7 +40,7 @@ $body$
40 <div class="o-lightbox"> 40 <div class="o-lightbox">
41 <button class="o-lightbox__close-btn o-action-button o-action-button--quiet o-action-button--round"> 41 <button class="o-lightbox__close-btn o-action-button o-action-button--quiet o-action-button--round">
42 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true"> 42 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true">
43 <use href="/icons.svg#x"></use> 43 <use href="$assets.icons_svg$#x"></use>
44 </svg> 44 </svg>
45 </button> 45 </button>
46 46
@@ -48,13 +48,13 @@ $body$
48 48
49 <button class="o-lightbox__nav-btn o-lightbox__nav-btn--prev o-action-button o-action-button--quiet o-action-button--round"> 49 <button class="o-lightbox__nav-btn o-lightbox__nav-btn--prev o-action-button o-action-button--quiet o-action-button--round">
50 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true"> 50 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true">
51 <use href="/icons.svg#chevron-left"></use> 51 <use href="$assets.icons_svg$#chevron-left"></use>
52 </svg> 52 </svg>
53 </button> 53 </button>
54 54
55 <button class="o-lightbox__nav-btn o-lightbox__nav-btn--next o-action-button o-action-button--quiet o-action-button--round"> 55 <button class="o-lightbox__nav-btn o-lightbox__nav-btn--next o-action-button o-action-button--quiet o-action-button--round">
56 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true"> 56 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true">
57 <use href="/icons.svg#chevron-right"></use> 57 <use href="$assets.icons_svg$#chevron-right"></use>
58 </svg> 58 </svg>
59 </button> 59 </button>
60 60
@@ -63,4 +63,4 @@ $body$
63 </div> 63 </div>
64</main> 64</main>
65 65
66<script src="/lightbox.js"></script> 66<script src="$assets.lightbox_js$"></script>
diff --git a/templates/partials/gallery_card.html b/templates/partials/gallery_card.html
index 40d3495..4aa274a 100644
--- a/templates/partials/gallery_card.html
+++ b/templates/partials/gallery_card.html
@@ -26,7 +26,7 @@ $if(it.thumbnail)$
26 $endif$ 26 $endif$
27 $if(it.icon)$ 27 $if(it.icon)$
28 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true"> 28 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true">
29 <use href="/icons.svg#$it.icon$"></use> 29 <use href="$assets.icons_svg$#$it.icon$"></use>
30 </svg> 30 </svg>
31 $endif$ 31 $endif$
32 <div class="l-media__block l-media__block--main"> 32 <div class="l-media__block l-media__block--main">
@@ -51,7 +51,7 @@ $if(it.thumbnail)$
51 </div> 51 </div>
52 $if(it.post_icon)$ 52 $if(it.post_icon)$
53 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true"> 53 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true">
54 <use href="/icons.svg#$it.post_icon$"></use> 54 <use href="$assets.icons_svg$#$it.post_icon$"></use>
55 </svg> 55 </svg>
56 $endif$ 56 $endif$
57 </div> 57 </div>
diff --git a/templates/partials/grid_card.html b/templates/partials/grid_card.html
index 8c7ea0a..4120169 100644
--- a/templates/partials/grid_card.html
+++ b/templates/partials/grid_card.html
@@ -13,7 +13,7 @@ $if(it.url)$
13 $endif$ 13 $endif$
14 $if(it.icon)$ 14 $if(it.icon)$
15 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true"> 15 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true">
16 <use href="/icons.svg#$it.icon$"></use> 16 <use href="$assets.icons_svg$#$it.icon$"></use>
17 </svg> 17 </svg>
18 $endif$ 18 $endif$
19 <div class="l-media__block l-media__block--main"> 19 <div class="l-media__block l-media__block--main">
@@ -38,7 +38,7 @@ $if(it.url)$
38 </div> 38 </div>
39 $if(it.post_icon)$ 39 $if(it.post_icon)$
40 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true"> 40 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true">
41 <use href="/icons.svg#$it.post_icon$"></use> 41 <use href="$assets.icons_svg$#$it.post_icon$"></use>
42 </svg> 42 </svg>
43 $endif$ 43 $endif$
44 </div> 44 </div>
diff --git a/templates/partials/list_card.html b/templates/partials/list_card.html
index dc9111e..539b7d3 100644
--- a/templates/partials/list_card.html
+++ b/templates/partials/list_card.html
@@ -13,7 +13,7 @@ $if(it.url)$
13 $endif$ 13 $endif$
14 $if(it.icon)$ 14 $if(it.icon)$
15 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true"> 15 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true">
16 <use href="/icons.svg#$it.icon$"></use> 16 <use href="$assets.icons_svg$#$it.icon$"></use>
17 </svg> 17 </svg>
18 $endif$ 18 $endif$
19 <div class="l-media__block l-media__block--main u-d-none@sm-hi"> 19 <div class="l-media__block l-media__block--main u-d-none@sm-hi">
@@ -54,7 +54,7 @@ $if(it.url)$
54 $endif$ 54 $endif$
55 $if(it.post_icon)$ 55 $if(it.post_icon)$
56 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true"> 56 <svg class="l-media__block o-icon" width="1em" height="1em" aria-hidden="true">
57 <use href="/icons.svg#$it.post_icon$"></use> 57 <use href="$assets.icons_svg$#$it.post_icon$"></use>
58 </svg> 58 </svg>
59 $endif$ 59 $endif$
60 </div> 60 </div>