mirror of
https://github.com/LukeHagar/unicorn-utterances.git
synced 2025-12-10 04:22:06 +00:00
chore: migrate mailing list to component, add SEO to collections layout, fix image loading
This commit is contained in:
174
package-lock.json
generated
174
package-lock.json
generated
@@ -13,19 +13,19 @@
|
||||
"probe-image-size": "^7.2.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@astrojs/image": "^0.9.1",
|
||||
"@astrojs/image": "^0.9.2",
|
||||
"@astrojs/mdx": "^0.11.4",
|
||||
"@astrojs/preact": "^1.1.1",
|
||||
"@remark-embedder/core": "^3.0.1",
|
||||
"@remark-embedder/transformer-oembed": "^3.0.0",
|
||||
"@types/classnames": "^2.3.1",
|
||||
"@types/node": "^18.8.2",
|
||||
"@types/node": "^18.8.3",
|
||||
"@types/parse5": "^7.0.0",
|
||||
"@types/uuid": "^8.3.4",
|
||||
"@typescript-eslint/eslint-plugin": "^5.39.0",
|
||||
"@typescript-eslint/parser": "^5.39.0",
|
||||
"@vercel/node": "^2.5.21",
|
||||
"astro": "^1.4.4",
|
||||
"@vercel/node": "^2.5.22",
|
||||
"astro": "^1.4.5",
|
||||
"astro-icon": "^0.7.3",
|
||||
"classnames": "^2.3.2",
|
||||
"dayjs": "^1.11.5",
|
||||
@@ -58,7 +58,7 @@
|
||||
"rollup-plugin-copy": "^3.4.0",
|
||||
"sass": "^1.55.0",
|
||||
"slash": "^5.0.0",
|
||||
"terser": "^5.15.0",
|
||||
"terser": "^5.15.1",
|
||||
"unified": "^10.1.2",
|
||||
"unist-util-replace-all-between": "^0.1.1",
|
||||
"unist-util-visit": "^4.1.1"
|
||||
@@ -218,9 +218,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@astrojs/image": {
|
||||
"version": "0.9.1",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/image/-/image-0.9.1.tgz",
|
||||
"integrity": "sha512-tnrL9tL539gIzkM9oqRd+asOePPUE/ehtQjmrcsTjJtQx8aPhKHEteJIMuDhby94wRhV6vMK1Wqt4u5DBf6GQQ==",
|
||||
"version": "0.9.2",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/image/-/image-0.9.2.tgz",
|
||||
"integrity": "sha512-kmCcV9Nwk43Ll3AZFMwAk7ljzQP+WkJuEcKU6svGgN1vSAPS7CUFTQNFCGt80ZIiP4YOF7NR172XDAlBTFi4YA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@altano/tiny-async-pool": "^1.0.2",
|
||||
@@ -2388,18 +2388,18 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@edge-runtime/primitives": {
|
||||
"version": "1.1.0-beta.34",
|
||||
"resolved": "https://registry.npmjs.org/@edge-runtime/primitives/-/primitives-1.1.0-beta.34.tgz",
|
||||
"integrity": "sha512-gFubu4qIqg1k6sOM2Ho/txFUE/vZCn057wGiY0NIQ8h6tySiUO5FULCaebPrp+Yfxb3ZCWqDLeWanQGFB3TYQQ==",
|
||||
"version": "1.1.0-beta.36",
|
||||
"resolved": "https://registry.npmjs.org/@edge-runtime/primitives/-/primitives-1.1.0-beta.36.tgz",
|
||||
"integrity": "sha512-Tji7SGWmn1+JGSnzFtWUoS7+kODIFprTyIAw0EBOVWEQKWfs7r0aTEm1XkJR0+d1jP9f0GB5LBKG/Z7KFyhx7g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@edge-runtime/vm": {
|
||||
"version": "1.1.0-beta.32",
|
||||
"resolved": "https://registry.npmjs.org/@edge-runtime/vm/-/vm-1.1.0-beta.32.tgz",
|
||||
"integrity": "sha512-G0SH80am2XjlK6oFI3RoKlg1SBS5ZAeqakYasfNhJEXqM7g7tsoh5jURMQcNxpLvo48XBTgHgAVEMzhAGgDPZg==",
|
||||
"version": "1.1.0-beta.36",
|
||||
"resolved": "https://registry.npmjs.org/@edge-runtime/vm/-/vm-1.1.0-beta.36.tgz",
|
||||
"integrity": "sha512-uPZmL7X+lKBFJsTg8nC0qPDBx4JGgpRqlgJi2s77g2NOtqitQOI90BfIKHZSSoMQEwTqfvAkpu2ui8nazOwHxA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@edge-runtime/primitives": "^1.1.0-beta.32"
|
||||
"@edge-runtime/primitives": "1.1.0-beta.36"
|
||||
}
|
||||
},
|
||||
"node_modules/@emmetio/abbreviation": {
|
||||
@@ -5961,9 +5961,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "18.8.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.2.tgz",
|
||||
"integrity": "sha512-cRMwIgdDN43GO4xMWAfJAecYn8wV4JbsOGHNfNUIDiuYkUYAR5ec4Rj7IO2SAhFPEfpPtLtUTbbny/TCT7aDwA==",
|
||||
"version": "18.8.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.3.tgz",
|
||||
"integrity": "sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/node-fetch": {
|
||||
@@ -6449,23 +6449,23 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vercel/build-utils": {
|
||||
"version": "5.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-5.5.3.tgz",
|
||||
"integrity": "sha512-T4MYD87rwocybIQzv4giRFYiisQqFLZOsPXn5tglQfnsB0DJM47l8VW9oFgGX2cJyp/px7C/ovdLrhwY/XWhYQ==",
|
||||
"version": "5.5.4",
|
||||
"resolved": "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-5.5.4.tgz",
|
||||
"integrity": "sha512-urAVFyrH6NTznN8bG1S4KHMpMwEaRXMRMeUXuMZXdGiznB83pACZ/5xpSzaLTIKrOrdYWVUrGcFjhLDMVRqCWQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@vercel/node": {
|
||||
"version": "2.5.21",
|
||||
"resolved": "https://registry.npmjs.org/@vercel/node/-/node-2.5.21.tgz",
|
||||
"integrity": "sha512-sJajTZYCDl4euWHuOgL5xzR7eLyi5Xv58j/QgI0tkOhMrREpqW9Jv2K2eSRDDuPDMbUgqqK14LodHApLlenizA==",
|
||||
"version": "2.5.22",
|
||||
"resolved": "https://registry.npmjs.org/@vercel/node/-/node-2.5.22.tgz",
|
||||
"integrity": "sha512-phlgW4qHGEt/yQ/nbGCd3vrFM0n48/MBbvmAKgTeVE/mjzdWxPnuSHNQlaipJkzfT3tv8kiiJu9ZoicuDoACTw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@edge-runtime/vm": "1.1.0-beta.32",
|
||||
"@edge-runtime/vm": "1.1.0-beta.36",
|
||||
"@types/node": "*",
|
||||
"@vercel/build-utils": "5.5.3",
|
||||
"@vercel/build-utils": "5.5.4",
|
||||
"@vercel/node-bridge": "3.0.0",
|
||||
"@vercel/static-config": "2.0.3",
|
||||
"edge-runtime": "1.1.0-beta.32",
|
||||
"edge-runtime": "1.1.0-beta.37",
|
||||
"esbuild": "0.14.47",
|
||||
"exit-hook": "2.2.1",
|
||||
"node-fetch": "2.6.7",
|
||||
@@ -7635,12 +7635,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/astro": {
|
||||
"version": "1.4.4",
|
||||
"resolved": "https://registry.npmjs.org/astro/-/astro-1.4.4.tgz",
|
||||
"integrity": "sha512-vxuHJ8C/3/NDau6EDUvi83JFDBK5Ylmo6VGAsUkdnutpGw77I4NoapoN56ANmU54ucYiu+x0apEPQvesY6GZiQ==",
|
||||
"version": "1.4.5",
|
||||
"resolved": "https://registry.npmjs.org/astro/-/astro-1.4.5.tgz",
|
||||
"integrity": "sha512-7uflNdFMsAONkEdtNRqP1XgtgdUhiiFfYd3DjtaoaskYhcnfKKYy8Lht0stIQaMtAqITIy0LLTDvDM/j8SfuUw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@astrojs/compiler": "^0.25.0",
|
||||
"@astrojs/compiler": "^0.26.0",
|
||||
"@astrojs/language-server": "^0.26.2",
|
||||
"@astrojs/markdown-remark": "^1.1.3",
|
||||
"@astrojs/telemetry": "^1.0.1",
|
||||
@@ -7749,9 +7749,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/astro/node_modules/@astrojs/compiler": {
|
||||
"version": "0.25.2",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-0.25.2.tgz",
|
||||
"integrity": "sha512-GE7uLvH7rSHuTHdMun+867TWsgYNYsaGuhvXsywcaabl4W4n/3b1kzgzrIsrXYBo51J0k6qD33mVdsHdvwv5rw==",
|
||||
"version": "0.26.1",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-0.26.1.tgz",
|
||||
"integrity": "sha512-GoRi4qB05u+bVcSlR9nu9HJfSUGFBcoUUb+WFimKSm9e/KPTy0STOMb/Q0mLIcloavF4KvEqAnd9ukX62ewoaA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/astro/node_modules/cookie": {
|
||||
@@ -10995,15 +10995,15 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/edge-runtime": {
|
||||
"version": "1.1.0-beta.32",
|
||||
"resolved": "https://registry.npmjs.org/edge-runtime/-/edge-runtime-1.1.0-beta.32.tgz",
|
||||
"integrity": "sha512-fbqqUF3OKynqtWgExhjyxXX2SwbkWuwmjUYhml3Sv8Y/vkrTxyTKrxS0MoxUy5sGPB3BBEtpopn36cQgwlOpAg==",
|
||||
"version": "1.1.0-beta.37",
|
||||
"resolved": "https://registry.npmjs.org/edge-runtime/-/edge-runtime-1.1.0-beta.37.tgz",
|
||||
"integrity": "sha512-IP0xYNmp0XXoXVnrAf/e67224ZkMUUBMyUUohVxWWI5XdyetIGRNWp3GifDy3LpbuE02yv42rgtoE+tm+whcLA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@edge-runtime/format": "^1.1.0-beta.32",
|
||||
"@edge-runtime/vm": "^1.1.0-beta.32",
|
||||
"@edge-runtime/format": "1.1.0-beta.33",
|
||||
"@edge-runtime/vm": "1.1.0-beta.36",
|
||||
"exit-hook": "2.2.1",
|
||||
"http-status": "1.5.2",
|
||||
"http-status": "1.5.3",
|
||||
"mri": "1.2.0",
|
||||
"picocolors": "1.0.0",
|
||||
"pretty-bytes": "5.6.0",
|
||||
@@ -17252,9 +17252,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/http-status": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/http-status/-/http-status-1.5.2.tgz",
|
||||
"integrity": "sha512-HzxX+/hV/8US1Gq4V6R6PgUmJ5Pt/DGATs4QhdEOpG8LrdS9/3UG2nnOvkqUpRks04yjVtV5p/NODjO+wvf6vg==",
|
||||
"version": "1.5.3",
|
||||
"resolved": "https://registry.npmjs.org/http-status/-/http-status-1.5.3.tgz",
|
||||
"integrity": "sha512-jCClqdnnwigYslmtfb28vPplOgoiZ0siP2Z8C5Ua+3UKbx410v+c+jT+jh1bbI4TvcEySuX0vd/CfFZFbDkJeQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 0.4.0"
|
||||
@@ -27347,9 +27347,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/terser": {
|
||||
"version": "5.15.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz",
|
||||
"integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==",
|
||||
"version": "5.15.1",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz",
|
||||
"integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
@@ -30401,9 +30401,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@astrojs/image": {
|
||||
"version": "0.9.1",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/image/-/image-0.9.1.tgz",
|
||||
"integrity": "sha512-tnrL9tL539gIzkM9oqRd+asOePPUE/ehtQjmrcsTjJtQx8aPhKHEteJIMuDhby94wRhV6vMK1Wqt4u5DBf6GQQ==",
|
||||
"version": "0.9.2",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/image/-/image-0.9.2.tgz",
|
||||
"integrity": "sha512-kmCcV9Nwk43Ll3AZFMwAk7ljzQP+WkJuEcKU6svGgN1vSAPS7CUFTQNFCGt80ZIiP4YOF7NR172XDAlBTFi4YA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@altano/tiny-async-pool": "^1.0.2",
|
||||
@@ -31965,18 +31965,18 @@
|
||||
"dev": true
|
||||
},
|
||||
"@edge-runtime/primitives": {
|
||||
"version": "1.1.0-beta.34",
|
||||
"resolved": "https://registry.npmjs.org/@edge-runtime/primitives/-/primitives-1.1.0-beta.34.tgz",
|
||||
"integrity": "sha512-gFubu4qIqg1k6sOM2Ho/txFUE/vZCn057wGiY0NIQ8h6tySiUO5FULCaebPrp+Yfxb3ZCWqDLeWanQGFB3TYQQ==",
|
||||
"version": "1.1.0-beta.36",
|
||||
"resolved": "https://registry.npmjs.org/@edge-runtime/primitives/-/primitives-1.1.0-beta.36.tgz",
|
||||
"integrity": "sha512-Tji7SGWmn1+JGSnzFtWUoS7+kODIFprTyIAw0EBOVWEQKWfs7r0aTEm1XkJR0+d1jP9f0GB5LBKG/Z7KFyhx7g==",
|
||||
"dev": true
|
||||
},
|
||||
"@edge-runtime/vm": {
|
||||
"version": "1.1.0-beta.32",
|
||||
"resolved": "https://registry.npmjs.org/@edge-runtime/vm/-/vm-1.1.0-beta.32.tgz",
|
||||
"integrity": "sha512-G0SH80am2XjlK6oFI3RoKlg1SBS5ZAeqakYasfNhJEXqM7g7tsoh5jURMQcNxpLvo48XBTgHgAVEMzhAGgDPZg==",
|
||||
"version": "1.1.0-beta.36",
|
||||
"resolved": "https://registry.npmjs.org/@edge-runtime/vm/-/vm-1.1.0-beta.36.tgz",
|
||||
"integrity": "sha512-uPZmL7X+lKBFJsTg8nC0qPDBx4JGgpRqlgJi2s77g2NOtqitQOI90BfIKHZSSoMQEwTqfvAkpu2ui8nazOwHxA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@edge-runtime/primitives": "^1.1.0-beta.32"
|
||||
"@edge-runtime/primitives": "1.1.0-beta.36"
|
||||
}
|
||||
},
|
||||
"@emmetio/abbreviation": {
|
||||
@@ -34713,9 +34713,9 @@
|
||||
}
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "18.8.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.2.tgz",
|
||||
"integrity": "sha512-cRMwIgdDN43GO4xMWAfJAecYn8wV4JbsOGHNfNUIDiuYkUYAR5ec4Rj7IO2SAhFPEfpPtLtUTbbny/TCT7aDwA==",
|
||||
"version": "18.8.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.3.tgz",
|
||||
"integrity": "sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/node-fetch": {
|
||||
@@ -35071,23 +35071,23 @@
|
||||
}
|
||||
},
|
||||
"@vercel/build-utils": {
|
||||
"version": "5.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-5.5.3.tgz",
|
||||
"integrity": "sha512-T4MYD87rwocybIQzv4giRFYiisQqFLZOsPXn5tglQfnsB0DJM47l8VW9oFgGX2cJyp/px7C/ovdLrhwY/XWhYQ==",
|
||||
"version": "5.5.4",
|
||||
"resolved": "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-5.5.4.tgz",
|
||||
"integrity": "sha512-urAVFyrH6NTznN8bG1S4KHMpMwEaRXMRMeUXuMZXdGiznB83pACZ/5xpSzaLTIKrOrdYWVUrGcFjhLDMVRqCWQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@vercel/node": {
|
||||
"version": "2.5.21",
|
||||
"resolved": "https://registry.npmjs.org/@vercel/node/-/node-2.5.21.tgz",
|
||||
"integrity": "sha512-sJajTZYCDl4euWHuOgL5xzR7eLyi5Xv58j/QgI0tkOhMrREpqW9Jv2K2eSRDDuPDMbUgqqK14LodHApLlenizA==",
|
||||
"version": "2.5.22",
|
||||
"resolved": "https://registry.npmjs.org/@vercel/node/-/node-2.5.22.tgz",
|
||||
"integrity": "sha512-phlgW4qHGEt/yQ/nbGCd3vrFM0n48/MBbvmAKgTeVE/mjzdWxPnuSHNQlaipJkzfT3tv8kiiJu9ZoicuDoACTw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@edge-runtime/vm": "1.1.0-beta.32",
|
||||
"@edge-runtime/vm": "1.1.0-beta.36",
|
||||
"@types/node": "*",
|
||||
"@vercel/build-utils": "5.5.3",
|
||||
"@vercel/build-utils": "5.5.4",
|
||||
"@vercel/node-bridge": "3.0.0",
|
||||
"@vercel/static-config": "2.0.3",
|
||||
"edge-runtime": "1.1.0-beta.32",
|
||||
"edge-runtime": "1.1.0-beta.37",
|
||||
"esbuild": "0.14.47",
|
||||
"exit-hook": "2.2.1",
|
||||
"node-fetch": "2.6.7",
|
||||
@@ -35913,12 +35913,12 @@
|
||||
"dev": true
|
||||
},
|
||||
"astro": {
|
||||
"version": "1.4.4",
|
||||
"resolved": "https://registry.npmjs.org/astro/-/astro-1.4.4.tgz",
|
||||
"integrity": "sha512-vxuHJ8C/3/NDau6EDUvi83JFDBK5Ylmo6VGAsUkdnutpGw77I4NoapoN56ANmU54ucYiu+x0apEPQvesY6GZiQ==",
|
||||
"version": "1.4.5",
|
||||
"resolved": "https://registry.npmjs.org/astro/-/astro-1.4.5.tgz",
|
||||
"integrity": "sha512-7uflNdFMsAONkEdtNRqP1XgtgdUhiiFfYd3DjtaoaskYhcnfKKYy8Lht0stIQaMtAqITIy0LLTDvDM/j8SfuUw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@astrojs/compiler": "^0.25.0",
|
||||
"@astrojs/compiler": "^0.26.0",
|
||||
"@astrojs/language-server": "^0.26.2",
|
||||
"@astrojs/markdown-remark": "^1.1.3",
|
||||
"@astrojs/telemetry": "^1.0.1",
|
||||
@@ -35980,9 +35980,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@astrojs/compiler": {
|
||||
"version": "0.25.2",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-0.25.2.tgz",
|
||||
"integrity": "sha512-GE7uLvH7rSHuTHdMun+867TWsgYNYsaGuhvXsywcaabl4W4n/3b1kzgzrIsrXYBo51J0k6qD33mVdsHdvwv5rw==",
|
||||
"version": "0.26.1",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-0.26.1.tgz",
|
||||
"integrity": "sha512-GoRi4qB05u+bVcSlR9nu9HJfSUGFBcoUUb+WFimKSm9e/KPTy0STOMb/Q0mLIcloavF4KvEqAnd9ukX62ewoaA==",
|
||||
"dev": true
|
||||
},
|
||||
"cookie": {
|
||||
@@ -38506,15 +38506,15 @@
|
||||
"dev": true
|
||||
},
|
||||
"edge-runtime": {
|
||||
"version": "1.1.0-beta.32",
|
||||
"resolved": "https://registry.npmjs.org/edge-runtime/-/edge-runtime-1.1.0-beta.32.tgz",
|
||||
"integrity": "sha512-fbqqUF3OKynqtWgExhjyxXX2SwbkWuwmjUYhml3Sv8Y/vkrTxyTKrxS0MoxUy5sGPB3BBEtpopn36cQgwlOpAg==",
|
||||
"version": "1.1.0-beta.37",
|
||||
"resolved": "https://registry.npmjs.org/edge-runtime/-/edge-runtime-1.1.0-beta.37.tgz",
|
||||
"integrity": "sha512-IP0xYNmp0XXoXVnrAf/e67224ZkMUUBMyUUohVxWWI5XdyetIGRNWp3GifDy3LpbuE02yv42rgtoE+tm+whcLA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@edge-runtime/format": "^1.1.0-beta.32",
|
||||
"@edge-runtime/vm": "^1.1.0-beta.32",
|
||||
"@edge-runtime/format": "1.1.0-beta.33",
|
||||
"@edge-runtime/vm": "1.1.0-beta.36",
|
||||
"exit-hook": "2.2.1",
|
||||
"http-status": "1.5.2",
|
||||
"http-status": "1.5.3",
|
||||
"mri": "1.2.0",
|
||||
"picocolors": "1.0.0",
|
||||
"pretty-bytes": "5.6.0",
|
||||
@@ -43114,9 +43114,9 @@
|
||||
}
|
||||
},
|
||||
"http-status": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/http-status/-/http-status-1.5.2.tgz",
|
||||
"integrity": "sha512-HzxX+/hV/8US1Gq4V6R6PgUmJ5Pt/DGATs4QhdEOpG8LrdS9/3UG2nnOvkqUpRks04yjVtV5p/NODjO+wvf6vg==",
|
||||
"version": "1.5.3",
|
||||
"resolved": "https://registry.npmjs.org/http-status/-/http-status-1.5.3.tgz",
|
||||
"integrity": "sha512-jCClqdnnwigYslmtfb28vPplOgoiZ0siP2Z8C5Ua+3UKbx410v+c+jT+jh1bbI4TvcEySuX0vd/CfFZFbDkJeQ==",
|
||||
"dev": true
|
||||
},
|
||||
"http2-wrapper": {
|
||||
@@ -50713,9 +50713,9 @@
|
||||
"peer": true
|
||||
},
|
||||
"terser": {
|
||||
"version": "5.15.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz",
|
||||
"integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==",
|
||||
"version": "5.15.1",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz",
|
||||
"integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/source-map": "^0.3.2",
|
||||
|
||||
10
package.json
10
package.json
@@ -32,19 +32,19 @@
|
||||
"prepare": "husky install"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@astrojs/image": "^0.9.1",
|
||||
"@astrojs/image": "^0.9.2",
|
||||
"@astrojs/mdx": "^0.11.4",
|
||||
"@astrojs/preact": "^1.1.1",
|
||||
"@remark-embedder/core": "^3.0.1",
|
||||
"@remark-embedder/transformer-oembed": "^3.0.0",
|
||||
"@types/classnames": "^2.3.1",
|
||||
"@types/node": "^18.8.2",
|
||||
"@types/node": "^18.8.3",
|
||||
"@types/parse5": "^7.0.0",
|
||||
"@types/uuid": "^8.3.4",
|
||||
"@typescript-eslint/eslint-plugin": "^5.39.0",
|
||||
"@typescript-eslint/parser": "^5.39.0",
|
||||
"@vercel/node": "^2.5.21",
|
||||
"astro": "^1.4.4",
|
||||
"@vercel/node": "^2.5.22",
|
||||
"astro": "^1.4.5",
|
||||
"astro-icon": "^0.7.3",
|
||||
"classnames": "^2.3.2",
|
||||
"dayjs": "^1.11.5",
|
||||
@@ -77,7 +77,7 @@
|
||||
"rollup-plugin-copy": "^3.4.0",
|
||||
"sass": "^1.55.0",
|
||||
"slash": "^5.0.0",
|
||||
"terser": "^5.15.0",
|
||||
"terser": "^5.15.1",
|
||||
"unified": "^10.1.2",
|
||||
"unist-util-replace-all-between": "^0.1.1",
|
||||
"unist-util-visit": "^4.1.1"
|
||||
|
||||
|
Before Width: | Height: | Size: 446 KiB After Width: | Height: | Size: 446 KiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
59
src/components/mailing-list/mailing-list-inline.astro
Normal file
59
src/components/mailing-list/mailing-list-inline.astro
Normal file
@@ -0,0 +1,59 @@
|
||||
<form
|
||||
action="https://app.convertkit.com/forms/1254394/subscriptions"
|
||||
class="seva-form formkit-form"
|
||||
method="post"
|
||||
style="border: none;"
|
||||
data-sv-form="1254394"
|
||||
data-uid="882d42bb6f"
|
||||
data-format="inline"
|
||||
data-version="5"
|
||||
data-options='{"settings":{"after_subscribe":{"action":"redirect","success_message":"Success! Now check your email to confirm your subscription.","redirect_url":"https://unicorn-utterances.com/confirm"},"analytics":{"google":null,"fathom":null,"facebook":null,"segment":null,"pinterest":null,"sparkloop":null,"googletagmanager":null},"modal":{"trigger":"timer","scroll_percentage":null,"timer":5,"devices":"all","show_once_every":15},"powered_by":{"show":false,"url":"https://convertkit.com/features/forms?utm_campaign=poweredby&utm_content=form&utm_medium=referral&utm_source=dynamic"},"recaptcha":{"enabled":false},"return_visitor":{"action":"hide","custom_content":""},"slide_in":{"display_in":"bottom_right","trigger":"timer","scroll_percentage":null,"timer":5,"devices":"all","show_once_every":15},"sticky_bar":{"display_in":"top","trigger":"timer","scroll_percentage":null,"timer":5,"devices":"all","show_once_every":15}},"version":"5"}'
|
||||
min-width="400 500 600 700 800"
|
||||
>
|
||||
<div data-style="clean">
|
||||
<ul
|
||||
class="formkit-alert formkit-alert-error"
|
||||
data-element="errors"
|
||||
data-group="alert"
|
||||
></ul>
|
||||
<div
|
||||
data-element="fields"
|
||||
data-stacked="false"
|
||||
class="seva-fields formkit-fields"
|
||||
>
|
||||
<div class="formkit-field">
|
||||
<input
|
||||
class="formkit-input"
|
||||
aria-label="Your first name"
|
||||
style="color: rgb(0, 0, 0); border-color: rgb(227, 227, 227); border-radius: 4px; font-weight: 400;"
|
||||
name="fields[first_name]"
|
||||
placeholder="Your first name"
|
||||
type="text"
|
||||
/>
|
||||
</div>
|
||||
<div class="formkit-field">
|
||||
<input
|
||||
class="formkit-input"
|
||||
name="email_address"
|
||||
style="color: rgb(0, 0, 0); border-color: rgb(227, 227, 227); border-radius: 4px; font-weight: 400;"
|
||||
aria-label="Your email address"
|
||||
placeholder="Your email address"
|
||||
required=""
|
||||
type="email"
|
||||
/>
|
||||
</div>
|
||||
<button
|
||||
data-element="submit"
|
||||
class="formkit-submit formkit-submit"
|
||||
style="color: rgb(255, 255, 255); background-color: rgb(18, 125, 179); border-radius: 4px; font-weight: 400;"
|
||||
>
|
||||
<div class="formkit-spinner">
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
</div>
|
||||
<span class="">Notify Me</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -1,12 +1,24 @@
|
||||
---
|
||||
import Document from "./document.astro";
|
||||
import SEO from "components/seo/seo.astro";
|
||||
import "../page-components/collections/collections.scss";
|
||||
import "../styles/post-body.scss";
|
||||
import "../styles/tabs.scss";
|
||||
import "../styles/shiki.scss";
|
||||
import "../styles/convertkit.scss";
|
||||
|
||||
const {frontmatter} = Astro.props;
|
||||
---
|
||||
|
||||
<Document>
|
||||
<div class="collectionsContainer">
|
||||
<SEO
|
||||
title={frontmatter.title}
|
||||
description={frontmatter.description}
|
||||
unicornsData={frontmatter.authorsMeta}
|
||||
publishedTime={frontmatter.published}
|
||||
type={frontmatter.type}
|
||||
shareImage={frontmatter.socialImg || frontmatter.coverImgPath}
|
||||
/>
|
||||
<slot />
|
||||
</div>
|
||||
</Document>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
import { Picture } from "@astrojs/image/components";
|
||||
|
||||
interface CollectionHeaderDefaultProps {
|
||||
coverImgPath: string;
|
||||
coverImgAspectRatio: number;
|
||||
coverImgPath: string | Promise<{default: {src: string, height: number, width: number, format: string}}>;
|
||||
coverImgAspectRatio?: number;
|
||||
collection: {
|
||||
title: string;
|
||||
description: string;
|
||||
@@ -11,8 +11,15 @@ interface CollectionHeaderDefaultProps {
|
||||
};
|
||||
}
|
||||
|
||||
const { coverImgPath, coverImgAspectRatio, collection } =
|
||||
let { coverImgPath, coverImgAspectRatio, collection } =
|
||||
Astro.props as CollectionHeaderDefaultProps;
|
||||
|
||||
// dynamic import of `coverImgPath`
|
||||
if (coverImgPath instanceof Promise && !coverImgAspectRatio) {
|
||||
const coverImgData = await coverImgPath;
|
||||
coverImgPath = coverImgData.default.src
|
||||
coverImgAspectRatio = coverImgData.default.width / coverImgData.default.height ;
|
||||
}
|
||||
---
|
||||
|
||||
<div class="listViewContent">
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
.collectionsContainer {
|
||||
padding-bottom: 4rem;
|
||||
|
||||
.topHeader {
|
||||
.topHeader {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: nowrap;
|
||||
@@ -16,17 +16,18 @@
|
||||
flex-direction: column;
|
||||
min-height: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bigImageContainer img, .smallImageContainer img {
|
||||
.bigImageContainer img,
|
||||
.smallImageContainer img {
|
||||
min-width: 100%;
|
||||
max-width: 100%;
|
||||
min-height: 100%;
|
||||
max-height: 100%;
|
||||
object-fit: contain;
|
||||
}
|
||||
}
|
||||
|
||||
.bigImageContainer {
|
||||
.bigImageContainer {
|
||||
flex-basis: 50%;
|
||||
position: relative;
|
||||
margin-right: 3.5rem;
|
||||
@@ -39,9 +40,9 @@
|
||||
@include until($endSmallScreenSize) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.smallImageContainer {
|
||||
.smallImageContainer {
|
||||
display: none;
|
||||
width: 60%;
|
||||
margin: 0 auto;
|
||||
@@ -49,74 +50,74 @@
|
||||
@include until($endSmallScreenSize) {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.topDescContainer {
|
||||
.topDescContainer {
|
||||
flex-basis: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.title {
|
||||
.title {
|
||||
@extend %beeg;
|
||||
color: var(--darkPrimary);
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
.description {
|
||||
@extend %headline-5;
|
||||
color: var(--lightPrimary);
|
||||
white-space: break-spaces;
|
||||
}
|
||||
}
|
||||
|
||||
.buttonContainer {
|
||||
.buttonContainer {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.collectionButton {
|
||||
.collectionButton {
|
||||
border: var(--cardOutlineStyle) !important;
|
||||
@extend %button;
|
||||
margin-right: 1rem !important;
|
||||
padding: 0.5rem !important;
|
||||
}
|
||||
}
|
||||
|
||||
.stitchedAreaContainer {
|
||||
.stitchedAreaContainer {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-top: 4rem;
|
||||
margin-bottom: 4rem;
|
||||
}
|
||||
}
|
||||
|
||||
.postsContainer {
|
||||
.postsContainer {
|
||||
background: var(--white);
|
||||
color: var(--lightPrimary);
|
||||
padding-bottom: 5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.postsInnerContainer {
|
||||
.postsInnerContainer {
|
||||
max-width: 800px;
|
||||
padding: 0 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
.chapterListingHeader {
|
||||
.chapterListingHeader {
|
||||
@extend %headline-1;
|
||||
margin-top: 4rem;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
.collectionPostList {
|
||||
.collectionPostList {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.postContainer {
|
||||
.postContainer {
|
||||
margin-bottom: 2rem;
|
||||
list-style: none;
|
||||
}
|
||||
}
|
||||
|
||||
.postLink {
|
||||
.postLink {
|
||||
text-decoration: none;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.orderContainer {
|
||||
.orderContainer {
|
||||
font-size: 2rem;
|
||||
flex-shrink: 0;
|
||||
background: var(--backgroundColor);
|
||||
@@ -129,27 +130,27 @@
|
||||
border: 4px dashed var(--lightPrimary);
|
||||
font-weight: bold;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
.postTitle {
|
||||
.postTitle {
|
||||
@extend %headline-4;
|
||||
margin-top: 0.25rem;
|
||||
margin-bottom: 0;
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
.noLink {
|
||||
.noLink {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
.postDesc {
|
||||
.postDesc {
|
||||
@extend %body-1;
|
||||
}
|
||||
}
|
||||
|
||||
.markdownContainer {
|
||||
.markdownContainer {
|
||||
color: var(--darkPrimary);
|
||||
padding: 0 2rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.collectionsContainer .topBorderArea {
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
associatedSeries: "Framework Field Guide",
|
||||
description: "A practical and free way to teach Angular, React, and Vue all at once, so you can choose the right tool for the job and learn the underlying concepts in depth.",
|
||||
authors: ["crutchcorn"],
|
||||
coverImg: "./cover.png",
|
||||
socialImg: "/framework_field_guide_social.png",
|
||||
coverImg: "/custom-content/collections/framework-field-guide/cover.png",
|
||||
socialImg: "/custom-content/collections/framework-field-guide/framework_field_guide_social.png",
|
||||
type: "book",
|
||||
published: "2023-01-01T13:45:00.284Z",
|
||||
layout: "../../../layouts/collections-mdx.astro",
|
||||
@@ -14,6 +14,8 @@
|
||||
|
||||
import CollectionHeaderDefault from '../../../page-components/collections/collection-header-default.astro';
|
||||
import CollectionTableOfContents from '../../../page-components/collections/collection-table-of-contents.astro';
|
||||
import MailingListInline from '../../../components/mailing-list/mailing-list-inline.astro';
|
||||
import {Picture} from '@astrojs/image/components';
|
||||
|
||||
export const buttons = [
|
||||
{
|
||||
@@ -66,7 +68,7 @@ export const chapterList = [
|
||||
},
|
||||
];
|
||||
|
||||
<CollectionHeaderDefault coverImgPath="/ffg-cover.png" coverImgAspectRatio={1} collection={frontmatter}/>
|
||||
<CollectionHeaderDefault coverImgPath={import('../public/custom-content/collections/framework-field-guide/cover.png')} collection={frontmatter}/>
|
||||
|
||||
<div style="display: flex; flex-wrap: nowrap;">
|
||||
<div>
|
||||
@@ -84,12 +86,12 @@ Don't want to learn all three? **That's okay.** You can easily select a single f
|
||||
</div>
|
||||
|
||||
<div class="hide-for-mobile hide-on-dark">
|
||||
<img src="./hiker_with_bag.png" height="100%" alt="" data-nozoom="true" />
|
||||
<Picture src={import('./hiker_with_bag.png')} widths={[230]} formats={['webp', 'png']} alt="" />
|
||||
</div>
|
||||
|
||||
|
||||
<div class="hide-for-mobile show-on-dark">
|
||||
<img src="./hiker_with_bag_dark.png" height="100%" alt="" data-nozoom="true" />
|
||||
<Picture src={import('./hiker_with_bag_dark.png')} widths={[230]} formats={['webp', 'png']} alt="" />
|
||||
</div>
|
||||
|
||||
|
||||
@@ -99,7 +101,7 @@ Don't want to learn all three? **That's okay.** You can easily select a single f
|
||||
|
||||
<div style="display: flex; align-items: center; justify-content: center; flex-wrap: wrap">
|
||||
<div style="margin: 1rem; width: 128px; flex-shrink: 0;">
|
||||
<img src="./crutchcorn.png" alt="" data-nozoom="true" />
|
||||
<Picture src={import('./crutchcorn.png')} widths={[128]} formats={['webp', 'png']} alt="" />
|
||||
</div>
|
||||
<p style="width: 1px; flex-grow: 1; flex-shrink: 1; min-width: 350px; font-weight: bold;">
|
||||
Hi! I'm <a href="https://crutchcorn.dev">Corbin Crutchley</a>, the author of
|
||||
@@ -139,64 +141,6 @@ while it's being worked on, feel free to [reach out to me on Twitter](https://tw
|
||||
Otherwise, if you want to be notified when the book releases, you can [join our Discord](https://discord.com/invite/FMcvc6T)
|
||||
or sign up to be notified via email when the book releases.
|
||||
|
||||
<form
|
||||
action="https://app.convertkit.com/forms/1254394/subscriptions"
|
||||
class="seva-form formkit-form"
|
||||
method="post"
|
||||
style="border: none;"
|
||||
data-sv-form="1254394"
|
||||
data-uid="882d42bb6f"
|
||||
data-format="inline"
|
||||
data-version="5"
|
||||
data-options='{"settings":{"after_subscribe":{"action":"redirect","success_message":"Success! Now check your email to confirm your subscription.","redirect_url":"https://unicorn-utterances.com/confirm"},"analytics":{"google":null,"fathom":null,"facebook":null,"segment":null,"pinterest":null,"sparkloop":null,"googletagmanager":null},"modal":{"trigger":"timer","scroll_percentage":null,"timer":5,"devices":"all","show_once_every":15},"powered_by":{"show":false,"url":"https://convertkit.com/features/forms?utm_campaign=poweredby&utm_content=form&utm_medium=referral&utm_source=dynamic"},"recaptcha":{"enabled":false},"return_visitor":{"action":"hide","custom_content":""},"slide_in":{"display_in":"bottom_right","trigger":"timer","scroll_percentage":null,"timer":5,"devices":"all","show_once_every":15},"sticky_bar":{"display_in":"top","trigger":"timer","scroll_percentage":null,"timer":5,"devices":"all","show_once_every":15}},"version":"5"}'
|
||||
min-width="400 500 600 700 800"
|
||||
>
|
||||
<div data-style="clean">
|
||||
<ul
|
||||
class="formkit-alert formkit-alert-error"
|
||||
data-element="errors"
|
||||
data-group="alert"
|
||||
></ul>
|
||||
<div
|
||||
data-element="fields"
|
||||
data-stacked="false"
|
||||
class="seva-fields formkit-fields"
|
||||
>
|
||||
<div class="formkit-field">
|
||||
<input
|
||||
class="formkit-input"
|
||||
aria-label="Your first name"
|
||||
style="color: rgb(0, 0, 0); border-color: rgb(227, 227, 227); border-radius: 4px; font-weight: 400;"
|
||||
name="fields[first_name]"
|
||||
placeholder="Your first name"
|
||||
type="text"
|
||||
/>
|
||||
</div>
|
||||
<div class="formkit-field">
|
||||
<input
|
||||
class="formkit-input"
|
||||
name="email_address"
|
||||
style="color: rgb(0, 0, 0); border-color: rgb(227, 227, 227); border-radius: 4px; font-weight: 400;"
|
||||
aria-label="Your email address"
|
||||
placeholder="Your email address"
|
||||
required=""
|
||||
type="email"
|
||||
/>
|
||||
</div>
|
||||
<button
|
||||
data-element="submit"
|
||||
class="formkit-submit formkit-submit"
|
||||
style="color: rgb(255, 255, 255); background-color: rgb(18, 125, 179); border-radius: 4px; font-weight: 400;"
|
||||
>
|
||||
<div class="formkit-spinner">
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
</div>
|
||||
<span class="">Notify Me</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<MailingListInline/>
|
||||
|
||||
> I promise you won't get spammed with emails if you sign up for notifications. Again, the book is free and we will never share or sell your email with anyone.
|
||||
|
||||
@@ -7,7 +7,7 @@ import PostTitleHeader from "src/page-components/blog-post/post-title-header/pos
|
||||
import PostMetadata from "src/page-components/blog-post/post-metadata/post-metadata.astro";
|
||||
import SuggestedArticles from "src/page-components/blog-post/suggested-articles/suggested-articles.astro";
|
||||
import TableOfContents from "components/table-of-contents/table-of-contents.astro";
|
||||
import MailingList from "components/mailing-list/mailing-list.astro";
|
||||
import MailingListFull from "components/mailing-list/mailing-list-full.astro";
|
||||
import Disqus from "components/disqus/disqus.astro";
|
||||
import { Icon } from "astro-icon";
|
||||
|
||||
@@ -123,7 +123,7 @@ const GHLink = `https://github.com/${siteMetadata.repoPath}/tree/master${siteMet
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
<MailingList />
|
||||
<MailingListFull />
|
||||
<div class="postBottom">
|
||||
<div class="btnLike prependIcon">
|
||||
<Icon height="36" width="36" name="message" />
|
||||
|
||||
Reference in New Issue
Block a user