diff --git a/TODO.md b/TODO.md
index 0a3b557..65e1eba 100644
--- a/TODO.md
+++ b/TODO.md
@@ -14,13 +14,26 @@
- [X] ~~*initial front-page.php*~~ [2021-07-06]
- [X] ~~*create social-icons working for front page*~~ [2021-07-06]
- [X] ~~*create About page and suitable page.php for it & other generic pages*~~ [2021-07-06]
- - [ ] create some blog entries
- - [ ] create Blog page and is index.php also ok for it?
+ - [X] ~~*create some blog entries*~~ [2021-07-06]
+- [X] ~~*properly incorporate favicons (meta links etc)*~~ [2021-07-07]
+ - [X] ~~*include pubkey asc file, others??*~~ [2021-07-07]
+- [ ] purgecss/webpack config for production
+ - [ ] clear dist folder and test building again
+- [ ] continue main work
+ - [ ] confirm content-article.php ok for multi-post blog page index listing
+ - [ ] single-post blog post view?
+ - [ ] syntax highlighting?
- [ ] create Resume page and decide on using general or specific template
- [ ] create Portfolio placeholder page
-- [ ] properly incorporate favicons (meta links etc)
- - [ ] include pubkey asc file, others??
-- [ ] purgecss/webpack config for production
+ - [ ] sidebar or footer for blog pages? meta info etc?
+ - [ ] footer for non-front-page that isn't stuck to bottom right?
- [ ] double-check npm run build output to ensure it's all working
- [ ] ...
-- [ ] profit!
\ No newline at end of file
+- [ ] profit!
+- [ ] TRANSFER TO PRODUCTION
+ - [ ] content/settings (db export?)
+ - [ ] contents of assets/cp-to-root folder: copy to root of wordpress install
+- [ ] use wordpress for filebrowser login auth?
+- [ ] Plugins for security and optimization
+ - [ ] jetpack? markdown from that one?
+ - [ ] indieweb stuff?
diff --git a/assets/cp-to-root/DF185CEE29A3D443_public_key.asc b/assets/cp-to-root/DF185CEE29A3D443_public_key.asc
new file mode 100644
index 0000000..9f28bc1
--- /dev/null
+++ b/assets/cp-to-root/DF185CEE29A3D443_public_key.asc
@@ -0,0 +1,283 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+e5r+RW29Vo/2GFBv3M6ri1Ks0ZR6f27JusGHqRrq1lDavMHSGKyzjUhFr4yXCvGD
+Kanilb8vlLMrp+vhLTp1SrVqoar2nVBhaaMuaJVAt/JbZX7SvmY8Vk7Xw3SuW2rN
+OvCHV2BEV6Y2CmuGVb1WmvOn40FL+Su4An+nm1JAP37Nr4DKbdzNe0MVAOwW5nR8
+gKpIl7C71JEPSHW2LFtkq95o2DtuNagqgPlqujpEsvsSlV60y6Xh8isOqm3Mg2Za
+2ixgls/cRo6xT4H+J36UsvXKRMh3zrNiIYBVqz+lmx3mHOUc2EqFoQTGECib3yDo
+XX2XhpzGV/cZAEYnJ5FkcJV0AcnuhuOC1iPkek1Sc0isZNbCS1ze7hoq4tYjB9qR
+16V1RPrUA9vhUmSwg2XDCmxZvLQGLobZwCIE/JrJz6IXBJtoKK+Rly5h4gLJzCEx
+MFyzVivissjzeCRnObYoYpwPr1WFrIObX/Ksh7j2ltK9uHL82jmK9l1PGUV1KiFq
+U/NqmyZzETor9y/RuOBKwmmcKrKRIk4WZK+yrKyfPOIVSSX7bTSvtYbS26cp+MfU
+M2VpPBqUYnam/XtkYjIMRB2ZUvgAnMWlN+JBESjyltxqsqeRFjM3VvcD6gLztKuV
+vh3FQaZ/T1rL3RFwHpCtRwmBTQqayjJmzAMYMazNuBdMRwM0Cl7nHFifCTmaEKWX
+lqniwQxNgi7WMAFSEFZWzuWdIchMBz2g8kpCZWsdfL6JLy4GKYk1YF96mosW8tnS
++MfeOWR9WkK+rKI6zhrllkroSZTqpE43HCkyE7Oas25jyT14y+Qkf64yJayF0pPi
+Jnmsa1ZOBSKVxjxsBhVsSE/JTTdHHgt5MKweN2xNGuMhrA122K5m3njI4x9DJTXa
+MyIYS6ypyCCLWKxzxTIWFSMhiIcsu8TrJYRygYQQTQry8XiAQRxtva6cJVU24IE/
+IWpFc/lHGYyViUkf1A2bhHzH12vvHtxH3oitYw1FKMRQRGWsPPy/klhQyFqy55Vs
+9FgbVllDFVabeTtYvK4WjQBLsnX9X5rbjf8A1Q5uv5bhUR0VPQV52hbCSS0D1FiF
+Jk9Wc2qZkfrW19uoHrn3piJyVuCLiJnWVtgMcfmWstdLpAFE8WXQASQlrGUW5K9B
+deRjNOpRBZLHIdqclg8n2HxCs0cRUBa1spmKswuLmeVS9fJWzwRj9onc6RFi7krF
+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
+RTODRGTX9jLa4mheVr8lXWT7OJ/0ytL8FCS0Joy5dELZK0XRM7NCgnGTDIxpHwjJ
+fZK0KRSX6ROiqJJgiCcQ50O9HbHTNaIXQpLvRdGONjGTBJ//2YkCTgQTAQoAOBYh
+BFTJtnukJGmoayyZKd8YXO4po9RDBQJbooCLAhsDBQsJCAcCBhUKCQgLAgQWAgMB
+Ah4BAheAAAoJEN8YXO4po9RDeO4P/2ZZHSfw4iCryp//6m79DaRmX5DsaDdT+Ben
+Vk2ARP9OKsLF0yw0b+jLwyXwzZSPT3oNNoW695GitBs2SLwpgG+tKKoOQUA9tGCU
+km1ukSCJMbytMZKdS3ho9EsEQ4WHcKjfrPDbxXbk94jwr9XANaH6UADBZv5C02FI
+TnWPsUmVpVwR9TM9pT4voE7teJgudli7lN3dm03OWAy4clIQyPKtCWUwPz9r4+Pi
+yssw80uCmFAZqDC4Ap0xqGOPp0nDSu8nFYg0dPTLrm6m5+MQWQ5wnBmwG2yWENN5
+5ajs2PsHueXj9w62bG7lH7rvipQSH34tlc2CQhoQFDZpxPueEKwuMotcUhzTM36L
+q1SxSvUyZ2s3+X+RRxNdVDpyhuHDKV75jqbfouXDzvUQlo88d7OHvUFZPHI0uL9a
+qSm3Rp5eri+i9lFrgActvw0zSvjrGwN8hHZ5Rv3EyopMzp3oXC3s3AQ+cAK27b1z
+4fn4a3FfCLSS2ngj0LIogLUZ/RYv3UZqIq3xi7zE5G/PzspByuzZgVRL+LWDfrEw
+T90FZYf9JZZ+WeBfDw14sWSRxqGyw/GvzYTQT5KQ6WXhjAMx78VYO1G+LrTDTT17
+L8DdSXY2WoOlm/vslffTl98vpStSkAPmfLcVmyMGu9th7KhgaprScdKxaa/Hyg2a
+M/yAWtTPtDVBZGFtIFBpb250ZWsgKE5FVyBNQUlOIDIwMTgpIDxkYW1la3Bpb250
+ZWtAZ21haWwuY29tPokCTgQTAQoAOBYhBFTJtnukJGmoayyZKd8YXO4po9RDBQJb
+ooC6AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEN8YXO4po9RDQgYQALsU
+El9PUdIT0+u5RC5A1iepYGcs0yM0ac1Qp5rRPM2jvfBmqE/0obIF9clx3IY+Rfyv
+adAz/9qzMDWax+qP2hkff3/2Uoy8LWUyyba/XcyOhol4cVbTgRsSeWJIigk6DIgV
+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
+x+RdIZL07hf4loFu
+=dyLD
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/assets/cp-to-root/android-chrome-192x192.png b/assets/cp-to-root/android-chrome-192x192.png
new file mode 100755
index 0000000..fac3f62
Binary files /dev/null and b/assets/cp-to-root/android-chrome-192x192.png differ
diff --git a/assets/cp-to-root/android-chrome-512x512.png b/assets/cp-to-root/android-chrome-512x512.png
new file mode 100755
index 0000000..4bb6d05
Binary files /dev/null and b/assets/cp-to-root/android-chrome-512x512.png differ
diff --git a/assets/cp-to-root/browserconfig.xml b/assets/cp-to-root/browserconfig.xml
new file mode 100755
index 0000000..f9c2e67
--- /dev/null
+++ b/assets/cp-to-root/browserconfig.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ #2b5797
+
+
+
diff --git a/assets/cp-to-root/favicon.ico b/assets/cp-to-root/favicon.ico
new file mode 100755
index 0000000..40ad989
Binary files /dev/null and b/assets/cp-to-root/favicon.ico differ
diff --git a/assets/cp-to-root/keybase.txt b/assets/cp-to-root/keybase.txt
new file mode 100755
index 0000000..745f035
--- /dev/null
+++ b/assets/cp-to-root/keybase.txt
@@ -0,0 +1,57 @@
+==================================================================
+https://keybase.io/adampiontek
+--------------------------------------------------------------------
+
+I hereby claim:
+
+ * I am an admin of https://73k.us
+ * I am adampiontek (https://keybase.io/adampiontek) on keybase.
+ * I have a public key ASAC1N4cUJgo-XdWbfHCv-Ts59VWScxDIl2z3TzRC7GLVQo
+
+To do so, I am signing this object:
+
+{
+ "body": {
+ "key": {
+ "eldest_kid": "01202813155ef2aa55c8d0b721bec0c3f708be8b2bec6e0ab0cdfee4a5439da5b4710a",
+ "host": "keybase.io",
+ "kid": "012002d4de1c509828f977566df1c2bfe4ece7d55649cc43225db3dd3cd10bb18b550a",
+ "uid": "7137a9f7aab18f6d03d84e88e0815919",
+ "username": "adampiontek"
+ },
+ "merkle_root": {
+ "ctime": 1537382503,
+ "hash": "2f9a68efbf80c0e105dd2cb25bfd658f19e1f2f768e6d1ab8cf3a7b250e1de73452ae0f090020472ee4b294ae2e677f19ef7cc99ec18582ff859b91646a60918",
+ "hash_meta": "12b0c6750a262e6ec91be8f5c1e1e0238d61fce069756c2c8e7329748c746560",
+ "seqno": 3633563
+ },
+ "service": {
+ "entropy": "qBHvAztfyekNI2UWFHU2tLLm",
+ "hostname": "73k.us",
+ "protocol": "https:"
+ },
+ "type": "web_service_binding",
+ "version": 2
+ },
+ "client": {
+ "name": "keybase.io go client",
+ "version": "2.7.0"
+ },
+ "ctime": 1537382525,
+ "expire_in": 504576000,
+ "prev": "bd679d68f8b8b1cea0c64aad1d09c97b85ff6cbedd1a3eb6bbc8fb45001f9eae",
+ "seqno": 23,
+ "tag": "signature"
+}
+
+which yields the signature:
+
+hKRib2R5hqhkZXRhY2hlZMOpaGFzaF90eXBlCqNrZXnEIwEgAtTeHFCYKPl3Vm3xwr/k7OfVVknMQyJds9080Quxi1UKp3BheWxvYWTESpcCF8QgvWedaPi4sc6gxkqtHQnJe4X/bL7dGj62u8j7RQAfnq7EINGlFWYyaoF5To5v8x58Z8VQguWyPcLWQ3VtJCQ8CpiuAgHCo3NpZ8RA8tvCrcDGhqcQdQxJfB92kJAFBi2uoohP00ioXpYH0i9LsfbK52HX+Mo8tyx2bjUTUf3rCZZWrlZAbj+DUki9A6hzaWdfdHlwZSCkaGFzaIKkdHlwZQildmFsdWXEIJUXz44TMmGELdJUmMEpNI4kuoGqiHufTSAugViNVLxRo3RhZ80CAqd2ZXJzaW9uAQ==
+
+And finally, I am proving ownership of this host by posting or
+appending to this document.
+
+View my publicly-auditable identity here: https://keybase.io/adampiontek
+
+==================================================================
+
diff --git a/assets/cp-to-root/mstile-150x150.png b/assets/cp-to-root/mstile-150x150.png
new file mode 100755
index 0000000..c862ca9
Binary files /dev/null and b/assets/cp-to-root/mstile-150x150.png differ
diff --git a/assets/cp-to-root/qpalpha.jpg b/assets/cp-to-root/qpalpha.jpg
new file mode 100755
index 0000000..f3a386f
Binary files /dev/null and b/assets/cp-to-root/qpalpha.jpg differ
diff --git a/assets/cp-to-root/robots.txt b/assets/cp-to-root/robots.txt
new file mode 100644
index 0000000..5624fa1
--- /dev/null
+++ b/assets/cp-to-root/robots.txt
@@ -0,0 +1,47 @@
+# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
+#
+# To ban all spiders from the entire site uncomment the next two lines:
+# User-agent: *
+# Disallow: /
+
+User-agent: *
+Crawl-delay: 5
+Disallow: /pcasts/
+Disallow: /flux/
+Disallow: /znc/
+Disallow: /lounge/
+Disallow: /books/
+Disallow: /fs-adam/
+Disallow: /wol/
+Disallow: /asrv/
+Disallow: /komga/
+
+User-agent: PetalBot
+Disallow: /git/
+
+User-agent: MJ12bot
+Disallow: /git/
+
+User-agent: SemrushBot
+Disallow: /git/
+
+User-agent: ZoominfoBot
+Disallow: /git/
+
+User-agent: DotBot
+Disallow: /git/
+
+User-agent: MauiBot
+Disallow: /git/
+
+User-agent: AhrefsBot
+Disallow: /git/
+
+User-agent: Discordbot
+Disallow: /git/
+
+User-agent: BLEXBot
+Disallow: /git/
+
+User-agent: YandexBot
+Disallow: /git/
diff --git a/assets/cp-to-root/thatsjotuncock.gif b/assets/cp-to-root/thatsjotuncock.gif
new file mode 100755
index 0000000..81714b2
Binary files /dev/null and b/assets/cp-to-root/thatsjotuncock.gif differ
diff --git a/assets/cp-to-root/vpalpha.jpg b/assets/cp-to-root/vpalpha.jpg
new file mode 100755
index 0000000..97ef8d4
Binary files /dev/null and b/assets/cp-to-root/vpalpha.jpg differ
diff --git a/assets/css/app.scss b/assets/css/app.scss
index 8aa4d4d..167a466 100644
--- a/assets/css/app.scss
+++ b/assets/css/app.scss
@@ -171,4 +171,7 @@ blockquote {
}
.post li {
line-height: 1.75rem;
+}
+.more-link {
+ @extend .fs-6;
}
\ No newline at end of file
diff --git a/assets/images/apple-touch-icon.png b/assets/images/apple-touch-icon.png
new file mode 100755
index 0000000..a2221a6
Binary files /dev/null and b/assets/images/apple-touch-icon.png differ
diff --git a/assets/images/favicon-16x16.png b/assets/images/favicon-16x16.png
new file mode 100755
index 0000000..246cd42
Binary files /dev/null and b/assets/images/favicon-16x16.png differ
diff --git a/assets/images/favicon.png b/assets/images/favicon-32x32.png
similarity index 100%
rename from assets/images/favicon.png
rename to assets/images/favicon-32x32.png
diff --git a/assets/images/safari-pinned-tab.svg b/assets/images/safari-pinned-tab.svg
new file mode 100755
index 0000000..aaea245
--- /dev/null
+++ b/assets/images/safari-pinned-tab.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/images/site.webmanifest b/assets/images/site.webmanifest
new file mode 100755
index 0000000..936df66
--- /dev/null
+++ b/assets/images/site.webmanifest
@@ -0,0 +1,19 @@
+{
+ "name": "Adam Pion73k",
+ "short_name": "Adam Pion73k",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}
diff --git a/assets/images/svg/icon-chart.svg b/assets/images/svg/icon-chart.svg
deleted file mode 100644
index a607c69..0000000
--- a/assets/images/svg/icon-chart.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/images/svg/icon-gear.svg b/assets/images/svg/icon-gear.svg
deleted file mode 100644
index 4b60edc..0000000
--- a/assets/images/svg/icon-gear.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/images/svg/icon-growth.svg b/assets/images/svg/icon-growth.svg
deleted file mode 100644
index 1d5c6af..0000000
--- a/assets/images/svg/icon-growth.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/images/svg/icon-instagram.svg b/assets/images/svg/icon-instagram.svg
deleted file mode 100644
index d015d51..0000000
--- a/assets/images/svg/icon-instagram.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/images/svg/icon-knowledge.svg b/assets/images/svg/icon-knowledge.svg
deleted file mode 100644
index 46d5e49..0000000
--- a/assets/images/svg/icon-knowledge.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/images/svg/icon-mark-white.svg b/assets/images/svg/icon-mark-white.svg
deleted file mode 100644
index d5132bd..0000000
--- a/assets/images/svg/icon-mark-white.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/assets/images/svg/icon-person.svg b/assets/images/svg/icon-person.svg
deleted file mode 100644
index fd2cc26..0000000
--- a/assets/images/svg/icon-person.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/images/svg/icon-ribbon.svg b/assets/images/svg/icon-ribbon.svg
deleted file mode 100644
index 1bd4af4..0000000
--- a/assets/images/svg/icon-ribbon.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/images/svg/icon-search.svg b/assets/images/svg/icon-search.svg
deleted file mode 100644
index be29964..0000000
--- a/assets/images/svg/icon-search.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/images/svg/icon-toolbox.svg b/assets/images/svg/icon-toolbox.svg
deleted file mode 100644
index b422623..0000000
--- a/assets/images/svg/icon-toolbox.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/images/svg/icon-twitter.svg b/assets/images/svg/icon-twitter.svg
deleted file mode 100644
index 7a4a820..0000000
--- a/assets/images/svg/icon-twitter.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/images/svg/monitor-window.svg b/assets/images/svg/monitor-window.svg
deleted file mode 100644
index 5126243..0000000
--- a/assets/images/svg/monitor-window.svg
+++ /dev/null
@@ -1,40 +0,0 @@
-
\ No newline at end of file
diff --git a/header.php b/header.php
index a1f1270..67e8fc7 100644
--- a/header.php
+++ b/header.php
@@ -15,9 +15,33 @@ namespace WP_73k;
>
-
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/home.php b/home.php
deleted file mode 100644
index fe6378f..0000000
--- a/home.php
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-=6.0.0"
- },
- "funding": {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- }
- },
- "node_modules/@fullhuman/postcss-purgecss/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@fullhuman/postcss-purgecss/node_modules/supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/@mdi/svg": {
"version": "5.9.55",
"resolved": "https://registry.npmjs.org/@mdi/svg/-/svg-5.9.55.tgz",
@@ -3011,14 +2962,6 @@
"@popperjs/core": "^2.9.2"
}
},
- "node_modules/bootstrap-icons": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.5.0.tgz",
- "integrity": "sha512-44feMc7DE1Ccpsas/1wioN8ewFJNquvi5FewA06wLnqct7CwMdGDVy41ieHaacogzDqLfG8nADIvMNp9e4bfbA==",
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -3662,15 +3605,6 @@
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
"integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w=="
},
- "node_modules/commander": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
- "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/commondir": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
@@ -6331,6 +6265,19 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/glob-all": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.2.1.tgz",
+ "integrity": "sha512-x877rVkzB3ipid577QOp+eQCR6M5ZyiwrtaYgrX/z3EThaSPFtLDwBXFHc3sH1cG0R0vFYI5SRYeWMMSEyXkUw==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.2",
+ "yargs": "^15.3.1"
+ },
+ "bin": {
+ "glob-all": "bin/glob-all"
+ }
+ },
"node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -10607,40 +10554,45 @@
"node": ">=6"
}
},
- "node_modules/purgecss": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz",
- "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==",
+ "node_modules/purgecss-webpack-plugin": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/purgecss-webpack-plugin/-/purgecss-webpack-plugin-4.0.3.tgz",
+ "integrity": "sha512-YqmHRuKqjPhB+f/kURHYwlUR2QDcS8NSpCWrgQNICsSd8S2+tj40SDBav5b8KaSPQ8b/uXqrJxa/SnLyHK4BvQ==",
"dev": true,
"dependencies": {
- "commander": "^5.0.0",
+ "purgecss": "^4.0.3",
+ "webpack": "^5.4.0",
+ "webpack-sources": "^2.0.0"
+ },
+ "peerDependencies": {
+ "webpack": "*"
+ }
+ },
+ "node_modules/purgecss-webpack-plugin/node_modules/commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/purgecss-webpack-plugin/node_modules/purgecss": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-4.0.3.tgz",
+ "integrity": "sha512-PYOIn5ibRIP34PBU9zohUcCI09c7drPJJtTDAc0Q6QlRz2/CHQ8ywGLdE7ZhxU2VTqB7p5wkvj5Qcm05Rz3Jmw==",
+ "dev": true,
+ "dependencies": {
+ "commander": "^6.0.0",
"glob": "^7.0.0",
- "postcss": "7.0.32",
+ "postcss": "^8.2.1",
"postcss-selector-parser": "^6.0.2"
},
"bin": {
- "purgecss": "bin/purgecss"
+ "purgecss": "bin/purgecss.js"
}
},
- "node_modules/purgecss/node_modules/postcss": {
- "version": "7.0.32",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
- "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- }
- },
- "node_modules/purgecss/node_modules/source-map": {
+ "node_modules/purgecss-webpack-plugin/node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
@@ -10649,16 +10601,17 @@
"node": ">=0.10.0"
}
},
- "node_modules/purgecss/node_modules/supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "node_modules/purgecss-webpack-plugin/node_modules/webpack-sources": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.0.tgz",
+ "integrity": "sha512-WyOdtwSvOML1kbgtXbTDnEW0jkJ7hZr/bDByIwszhWd/4XX1A3XMkrbFMsuH4+/MfLlZCUzlAdg4r7jaGKEIgQ==",
"dev": true,
"dependencies": {
- "has-flag": "^3.0.0"
+ "source-list-map": "^2.0.1",
+ "source-map": "^0.6.1"
},
"engines": {
- "node": ">=6"
+ "node": ">=10.13.0"
}
},
"node_modules/q": {
@@ -15186,44 +15139,6 @@
"resolved": "https://registry.npmjs.org/@fontsource/source-serif-pro/-/source-serif-pro-4.4.5.tgz",
"integrity": "sha512-icJ8kegbcJpsrRa2oRyMNpDnws6aFmHNSDYVqf8E9gZdxBWO9a9qTaxMXKdI5NtyjZ6nsq/UOK3PgaQ4AERy6A=="
},
- "@fullhuman/postcss-purgecss": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-2.3.0.tgz",
- "integrity": "sha512-qnKm5dIOyPGJ70kPZ5jiz0I9foVOic0j+cOzNDoo8KoCf6HjicIZ99UfO2OmE7vCYSKAAepEwJtNzpiiZAh9xw==",
- "dev": true,
- "requires": {
- "postcss": "7.0.32",
- "purgecss": "^2.3.0"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.32",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
- "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
"@mdi/svg": {
"version": "5.9.55",
"resolved": "https://registry.npmjs.org/@mdi/svg/-/svg-5.9.55.tgz",
@@ -16329,11 +16244,6 @@
"integrity": "sha512-1Ge963tyEQWJJ+8qtXFU6wgmAVj9gweEjibUdbmcCEYsn38tVwRk8107rk2vzt6cfQcRr3SlZ8aQBqaD8aqf+Q==",
"requires": {}
},
- "bootstrap-icons": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.5.0.tgz",
- "integrity": "sha512-44feMc7DE1Ccpsas/1wioN8ewFJNquvi5FewA06wLnqct7CwMdGDVy41ieHaacogzDqLfG8nADIvMNp9e4bfbA=="
- },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -16851,12 +16761,6 @@
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
"integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w=="
},
- "commander": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
- "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
- "dev": true
- },
"commondir": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
@@ -18926,6 +18830,16 @@
"path-is-absolute": "^1.0.0"
}
},
+ "glob-all": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.2.1.tgz",
+ "integrity": "sha512-x877rVkzB3ipid577QOp+eQCR6M5ZyiwrtaYgrX/z3EThaSPFtLDwBXFHc3sH1cG0R0vFYI5SRYeWMMSEyXkUw==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.2",
+ "yargs": "^15.3.1"
+ }
+ },
"glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -22098,27 +22012,33 @@
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
},
- "purgecss": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz",
- "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==",
+ "purgecss-webpack-plugin": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/purgecss-webpack-plugin/-/purgecss-webpack-plugin-4.0.3.tgz",
+ "integrity": "sha512-YqmHRuKqjPhB+f/kURHYwlUR2QDcS8NSpCWrgQNICsSd8S2+tj40SDBav5b8KaSPQ8b/uXqrJxa/SnLyHK4BvQ==",
"dev": true,
"requires": {
- "commander": "^5.0.0",
- "glob": "^7.0.0",
- "postcss": "7.0.32",
- "postcss-selector-parser": "^6.0.2"
+ "purgecss": "^4.0.3",
+ "webpack": "^5.4.0",
+ "webpack-sources": "^2.0.0"
},
"dependencies": {
- "postcss": {
- "version": "7.0.32",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
- "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+ "commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "dev": true
+ },
+ "purgecss": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-4.0.3.tgz",
+ "integrity": "sha512-PYOIn5ibRIP34PBU9zohUcCI09c7drPJJtTDAc0Q6QlRz2/CHQ8ywGLdE7ZhxU2VTqB7p5wkvj5Qcm05Rz3Jmw==",
"dev": true,
"requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
+ "commander": "^6.0.0",
+ "glob": "^7.0.0",
+ "postcss": "^8.2.1",
+ "postcss-selector-parser": "^6.0.2"
}
},
"source-map": {
@@ -22127,13 +22047,14 @@
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "webpack-sources": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.0.tgz",
+ "integrity": "sha512-WyOdtwSvOML1kbgtXbTDnEW0jkJ7hZr/bDByIwszhWd/4XX1A3XMkrbFMsuH4+/MfLlZCUzlAdg4r7jaGKEIgQ==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "source-list-map": "^2.0.1",
+ "source-map": "^0.6.1"
}
}
}
diff --git a/package.json b/package.json
index 2289af6..c94cdf4 100644
--- a/package.json
+++ b/package.json
@@ -18,7 +18,6 @@
"@mdi/svg": "^5.x",
"@popperjs/core": "^2.x",
"bootstrap": "^5.x",
- "bootstrap-icons": "^1.x",
"hamburgers": "^1.x",
"postcss-custom-properties": "^9.1.1",
"postcss-import": "^12.0.1",
@@ -28,7 +27,6 @@
"devDependencies": {
"@babel/core": "^7.x",
"@babel/preset-env": "^7.x",
- "@fullhuman/postcss-purgecss": "^2.3.0",
"autoprefixer": "^10.x",
"babel-loader": "^8.x",
"browser-sync": "^2.26.10",
@@ -39,11 +37,13 @@
"css-loader": "^5.x",
"css-minimizer-webpack-plugin": "^3.x",
"file-loader": "^6.2.0",
+ "glob-all": "^3.2.1",
"imagemin-webpack-plugin": "^2.4.2",
"mini-css-extract-plugin": "^1.x",
"postcss": "^8.2.6",
"postcss-loader": "^5.0.0",
"postcss-scss": "^3.0.4",
+ "purgecss-webpack-plugin": "^4.0.2",
"sass": "^1.x",
"sass-loader": "^12.x",
"svg-sprite-loader": "^6.x",
diff --git a/src/classes.php b/src/classes.php
index 5093943..d736462 100644
--- a/src/classes.php
+++ b/src/classes.php
@@ -64,4 +64,4 @@ add_filter( 'wp_nav_menu_objects', function($items, $args) {
}
}
return $items;
-}, 1, 2 );
\ No newline at end of file
+}, 1, 2 );
diff --git a/webpack.config.js b/webpack.config.js
index 0875fe3..b127630 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -1,53 +1,35 @@
-const path = require('path');
+const path = require('path');
+const glob = require("glob-all");
+const MiniCssExtractPlugin = require('mini-css-extract-plugin');
+const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
+const CopyWebpackPlugin = require('copy-webpack-plugin');
+const SpriteLoaderPlugin = require("svg-sprite-loader/plugin");
-const MiniCssExtractPlugin = require('mini-css-extract-plugin');
-const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
-const CopyWebpackPlugin = require('copy-webpack-plugin');
-const SpriteLoaderPlugin = require("svg-sprite-loader/plugin");
+const ImageminPlugin = require('imagemin-webpack-plugin').default;
+const BrowserSyncPlugin = require('browser-sync-webpack-plugin');
+const PurgecssPlugin = require("purgecss-webpack-plugin");
-const ImageminPlugin = require('imagemin-webpack-plugin').default;
-const BrowserSyncPlugin = require('browser-sync-webpack-plugin');
-const PurgeCSS = require('@fullhuman/postcss-purgecss');
-
-const isProduction = 'production' === process.env.NODE_ENV;
+const isProduction = 'production' === process.env.NODE_ENV;
// Set the build prefix.
let prefix = isProduction ? '.min' : '';
-// Set the PostCSS Plugins.
-const post_css_plugins = [
- require('postcss-import'),
- require('postcss-nested'),
- require('postcss-custom-properties'),
- require('autoprefixer')
-]
-
-// Add PurgeCSS for production builds.
-if ( isProduction ) {
- post_css_plugins.push(
- PurgeCSS({
- content: [
- './*.php',
- './src/**/*.php',
- './page-templates/*.php',
- './assets/images/**/*.svg',
- './../../mu-plugins/app/src/components/**/*.php',
- ],
- // Use Extractor configuration from Tailwind Docs
- // https://tailwindcss.com/docs/controlling-file-size#setting-up-purge-css-manually
- defaultExtractor: content => {
- // Capture as liberally as possible, including things like `h-(screen-1.5)`
- const broadMatches = content.match(/[^<>"'`\s]*[^<>"'`\s:]/g) || []
-
- // Capture classes within other delimiters like .block(class="w-1/2") in Pug
- const innerMatches = content.match(/[^<>"'`\s.()]*[^<>"'`\s.():]/g) || []
-
- return broadMatches.concat(innerMatches)
- },
- whitelistPatterns: getCSSWhitelistPatterns()
- })
- )
-}
+// // Add PurgeCSS for production builds.
+// if ( isProduction ) {
+// post_css_plugins.push(
+// PurgeCSS({
+// content: [
+// './*.php',
+// './src/**/*.php',
+// './page-templates/*.php',
+// './content-templates/*.php',
+// './assets/images/**/*.svg',
+// './../../mu-plugins/app/src/components/**/*.php',
+// ],
+// whitelistPatterns: getCSSWhitelistPatterns()
+// })
+// )
+// }
const config = {
entry: './assets/js/main.js',
@@ -142,7 +124,25 @@ const config = {
}]
}),
new ImageminPlugin({ test: /\.(jpe?g|png|gif)$/i })
- ]
+ ].concat(
+ isProduction
+ ? [
+ new PurgecssPlugin({
+ paths: glob.sync([
+ './*.php',
+ './src/**/*.php',
+ './page-templates/*.php',
+ './content-templates/*.php',
+ // './assets/images/**/*.svg',
+ // './../../mu-plugins/app/src/components/**/*.php',
+ ]),
+ safelist: {
+ greedy: getCSSWhitelistPatterns(),
+ },
+ }),
+ ]
+ : []
+ )
}
// Fire up a local server if requested