Compare commits
8 Commits
Author | SHA1 | Date |
---|---|---|
Andrew Lalis | 210473b644 | |
Andrew Lalis | ffae35e276 | |
Andrew Lalis | 47f27a057c | |
Andrew Lalis | d1c0a996ad | |
Andrew Lalis | e934f870c1 | |
Andrew Lalis | 89fb848ab9 | |
Andrew Lalis | 48591e20dd | |
Andrew Lalis | 88c8e07758 |
|
@ -0,0 +1,12 @@
|
|||
# Homepage
|
||||
|
||||
This is the repository containing the source code for my homepage on the web.
|
||||
Within the `app/` directory, you'll find the Vue web-app project source files
|
||||
and generally the full content of the website.
|
||||
|
||||
The old version of my website is still stored for archival purposes in `old/`.
|
||||
|
||||
## Deploying
|
||||
|
||||
To deploy, simply execute `./upload.sh` from the repository's root directory.
|
||||
It'll build the web-app, and copy the files to the remote server.
|
|
@ -30,27 +30,27 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/helper-string-parser": {
|
||||
"version": "7.24.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
|
||||
"integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
|
||||
"version": "7.25.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz",
|
||||
"integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==",
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-validator-identifier": {
|
||||
"version": "7.24.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
|
||||
"integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
|
||||
"version": "7.25.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz",
|
||||
"integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==",
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/parser": {
|
||||
"version": "7.25.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz",
|
||||
"integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==",
|
||||
"version": "7.25.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz",
|
||||
"integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==",
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.25.4"
|
||||
"@babel/types": "^7.25.8"
|
||||
},
|
||||
"bin": {
|
||||
"parser": "bin/babel-parser.js"
|
||||
|
@ -60,12 +60,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/types": {
|
||||
"version": "7.25.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz",
|
||||
"integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==",
|
||||
"version": "7.25.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz",
|
||||
"integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==",
|
||||
"dependencies": {
|
||||
"@babel/helper-string-parser": "^7.24.8",
|
||||
"@babel/helper-validator-identifier": "^7.24.7",
|
||||
"@babel/helper-string-parser": "^7.25.7",
|
||||
"@babel/helper-validator-identifier": "^7.25.7",
|
||||
"to-fast-properties": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
|
@ -456,9 +456,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@eslint-community/regexpp": {
|
||||
"version": "4.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz",
|
||||
"integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==",
|
||||
"version": "4.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz",
|
||||
"integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
|
||||
|
@ -510,22 +510,22 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@eslint/js": {
|
||||
"version": "8.57.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
|
||||
"integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
|
||||
"version": "8.57.1",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
|
||||
"integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@humanwhocodes/config-array": {
|
||||
"version": "0.11.14",
|
||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
|
||||
"integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
|
||||
"version": "0.13.0",
|
||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
|
||||
"integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
|
||||
"deprecated": "Use @eslint/config-array instead",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@humanwhocodes/object-schema": "^2.0.2",
|
||||
"@humanwhocodes/object-schema": "^2.0.3",
|
||||
"debug": "^4.3.1",
|
||||
"minimatch": "^3.0.5"
|
||||
},
|
||||
|
@ -628,9 +628,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@rollup/rollup-android-arm-eabi": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.0.tgz",
|
||||
"integrity": "sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz",
|
||||
"integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
|
@ -641,9 +641,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-android-arm64": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.0.tgz",
|
||||
"integrity": "sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz",
|
||||
"integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
@ -654,9 +654,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-darwin-arm64": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.0.tgz",
|
||||
"integrity": "sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz",
|
||||
"integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
@ -667,9 +667,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-darwin-x64": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.0.tgz",
|
||||
"integrity": "sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz",
|
||||
"integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
@ -680,9 +680,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.0.tgz",
|
||||
"integrity": "sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz",
|
||||
"integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
|
@ -693,9 +693,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.0.tgz",
|
||||
"integrity": "sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz",
|
||||
"integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
|
@ -706,9 +706,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm64-gnu": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.0.tgz",
|
||||
"integrity": "sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz",
|
||||
"integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
@ -719,9 +719,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm64-musl": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.0.tgz",
|
||||
"integrity": "sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz",
|
||||
"integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
@ -732,9 +732,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.0.tgz",
|
||||
"integrity": "sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz",
|
||||
"integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
|
@ -745,9 +745,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.0.tgz",
|
||||
"integrity": "sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz",
|
||||
"integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
|
@ -758,9 +758,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-s390x-gnu": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.0.tgz",
|
||||
"integrity": "sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz",
|
||||
"integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==",
|
||||
"cpu": [
|
||||
"s390x"
|
||||
],
|
||||
|
@ -771,9 +771,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-x64-gnu": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.0.tgz",
|
||||
"integrity": "sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz",
|
||||
"integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
@ -784,9 +784,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-x64-musl": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.0.tgz",
|
||||
"integrity": "sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz",
|
||||
"integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
@ -797,9 +797,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-arm64-msvc": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.0.tgz",
|
||||
"integrity": "sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz",
|
||||
"integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
@ -810,9 +810,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-ia32-msvc": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.0.tgz",
|
||||
"integrity": "sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz",
|
||||
"integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
|
@ -823,9 +823,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-x64-msvc": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.0.tgz",
|
||||
"integrity": "sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz",
|
||||
"integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
@ -848,15 +848,15 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/@types/estree": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
|
||||
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
|
||||
"integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "20.16.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.1.tgz",
|
||||
"integrity": "sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==",
|
||||
"version": "20.16.11",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz",
|
||||
"integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"undici-types": "~6.19.2"
|
||||
|
@ -1054,9 +1054,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/@vitejs/plugin-vue": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.2.tgz",
|
||||
"integrity": "sha512-nY9IwH12qeiJqumTCLJLE7IiNx7HZ39cbHaysEUd+Myvbz9KAqd2yq+U01Kab1R/H1BmiyM2ShTYlNH32Fzo3A==",
|
||||
"version": "5.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.4.tgz",
|
||||
"integrity": "sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^18.0.0 || >=20.0.0"
|
||||
|
@ -1067,75 +1067,75 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@volar/language-core": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0.tgz",
|
||||
"integrity": "sha512-FTla+khE+sYK0qJP+6hwPAAUwiNHVMph4RUXpxf/FIPKUP61NFrVZorml4mjFShnueR2y9/j8/vnh09YwVdH7A==",
|
||||
"version": "2.4.6",
|
||||
"resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.6.tgz",
|
||||
"integrity": "sha512-FxUfxaB8sCqvY46YjyAAV6c3mMIq/NWQMVvJ+uS4yxr1KzOvyg61gAuOnNvgCvO4TZ7HcLExBEsWcDu4+K4E8A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@volar/source-map": "2.4.0"
|
||||
"@volar/source-map": "2.4.6"
|
||||
}
|
||||
},
|
||||
"node_modules/@volar/source-map": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0.tgz",
|
||||
"integrity": "sha512-2ceY8/NEZvN6F44TXw2qRP6AQsvCYhV2bxaBPWxV9HqIfkbRydSksTFObCF1DBDNBfKiZTS8G/4vqV6cvjdOIQ==",
|
||||
"version": "2.4.6",
|
||||
"resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.6.tgz",
|
||||
"integrity": "sha512-Nsh7UW2ruK+uURIPzjJgF0YRGP5CX9nQHypA2OMqdM2FKy7rh+uv3XgPnWPw30JADbKvZ5HuBzG4gSbVDYVtiw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@volar/typescript": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.0.tgz",
|
||||
"integrity": "sha512-9zx3lQWgHmVd+JRRAHUSRiEhe4TlzL7U7e6ulWXOxHH/WNYxzKwCvZD7WYWEZFdw4dHfTD9vUR0yPQO6GilCaQ==",
|
||||
"version": "2.4.6",
|
||||
"resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.6.tgz",
|
||||
"integrity": "sha512-NMIrA7y5OOqddL9VtngPWYmdQU03htNKFtAYidbYfWA0TOhyGVd9tfcP4TsLWQ+RBWDZCbBqsr8xzU0ZOxYTCQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@volar/language-core": "2.4.0",
|
||||
"@volar/language-core": "2.4.6",
|
||||
"path-browserify": "^1.0.1",
|
||||
"vscode-uri": "^3.0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-core": {
|
||||
"version": "3.4.38",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz",
|
||||
"integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==",
|
||||
"version": "3.5.12",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.12.tgz",
|
||||
"integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.24.7",
|
||||
"@vue/shared": "3.4.38",
|
||||
"@babel/parser": "^7.25.3",
|
||||
"@vue/shared": "3.5.12",
|
||||
"entities": "^4.5.0",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map-js": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-dom": {
|
||||
"version": "3.4.38",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz",
|
||||
"integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==",
|
||||
"version": "3.5.12",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz",
|
||||
"integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-core": "3.4.38",
|
||||
"@vue/shared": "3.4.38"
|
||||
"@vue/compiler-core": "3.5.12",
|
||||
"@vue/shared": "3.5.12"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-sfc": {
|
||||
"version": "3.4.38",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz",
|
||||
"integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==",
|
||||
"version": "3.5.12",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz",
|
||||
"integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.24.7",
|
||||
"@vue/compiler-core": "3.4.38",
|
||||
"@vue/compiler-dom": "3.4.38",
|
||||
"@vue/compiler-ssr": "3.4.38",
|
||||
"@vue/shared": "3.4.38",
|
||||
"@babel/parser": "^7.25.3",
|
||||
"@vue/compiler-core": "3.5.12",
|
||||
"@vue/compiler-dom": "3.5.12",
|
||||
"@vue/compiler-ssr": "3.5.12",
|
||||
"@vue/shared": "3.5.12",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.30.10",
|
||||
"postcss": "^8.4.40",
|
||||
"magic-string": "^0.30.11",
|
||||
"postcss": "^8.4.47",
|
||||
"source-map-js": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-ssr": {
|
||||
"version": "3.4.38",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz",
|
||||
"integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==",
|
||||
"version": "3.5.12",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz",
|
||||
"integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.4.38",
|
||||
"@vue/shared": "3.4.38"
|
||||
"@vue/compiler-dom": "3.5.12",
|
||||
"@vue/shared": "3.5.12"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-vue2": {
|
||||
|
@ -1149,9 +1149,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@vue/devtools-api": {
|
||||
"version": "6.6.3",
|
||||
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.3.tgz",
|
||||
"integrity": "sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw=="
|
||||
"version": "6.6.4",
|
||||
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
|
||||
"integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="
|
||||
},
|
||||
"node_modules/@vue/eslint-config-prettier": {
|
||||
"version": "9.0.0",
|
||||
|
@ -1192,12 +1192,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@vue/language-core": {
|
||||
"version": "2.0.29",
|
||||
"resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.29.tgz",
|
||||
"integrity": "sha512-o2qz9JPjhdoVj8D2+9bDXbaI4q2uZTHQA/dbyZT4Bj1FR9viZxDJnLcKVHfxdn6wsOzRgpqIzJEEmSSvgMvDTQ==",
|
||||
"version": "2.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.1.6.tgz",
|
||||
"integrity": "sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@volar/language-core": "~2.4.0-alpha.18",
|
||||
"@volar/language-core": "~2.4.1",
|
||||
"@vue/compiler-dom": "^3.4.0",
|
||||
"@vue/compiler-vue2": "^2.7.16",
|
||||
"@vue/shared": "^3.4.0",
|
||||
|
@ -1216,49 +1216,49 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@vue/reactivity": {
|
||||
"version": "3.4.38",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.38.tgz",
|
||||
"integrity": "sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==",
|
||||
"version": "3.5.12",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.12.tgz",
|
||||
"integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==",
|
||||
"dependencies": {
|
||||
"@vue/shared": "3.4.38"
|
||||
"@vue/shared": "3.5.12"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-core": {
|
||||
"version": "3.4.38",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.38.tgz",
|
||||
"integrity": "sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==",
|
||||
"version": "3.5.12",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.12.tgz",
|
||||
"integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==",
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.4.38",
|
||||
"@vue/shared": "3.4.38"
|
||||
"@vue/reactivity": "3.5.12",
|
||||
"@vue/shared": "3.5.12"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-dom": {
|
||||
"version": "3.4.38",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.38.tgz",
|
||||
"integrity": "sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==",
|
||||
"version": "3.5.12",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.12.tgz",
|
||||
"integrity": "sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==",
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.4.38",
|
||||
"@vue/runtime-core": "3.4.38",
|
||||
"@vue/shared": "3.4.38",
|
||||
"@vue/reactivity": "3.5.12",
|
||||
"@vue/runtime-core": "3.5.12",
|
||||
"@vue/shared": "3.5.12",
|
||||
"csstype": "^3.1.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/server-renderer": {
|
||||
"version": "3.4.38",
|
||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.38.tgz",
|
||||
"integrity": "sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==",
|
||||
"version": "3.5.12",
|
||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.12.tgz",
|
||||
"integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-ssr": "3.4.38",
|
||||
"@vue/shared": "3.4.38"
|
||||
"@vue/compiler-ssr": "3.5.12",
|
||||
"@vue/shared": "3.5.12"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "3.4.38"
|
||||
"vue": "3.5.12"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/shared": {
|
||||
"version": "3.4.38",
|
||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.38.tgz",
|
||||
"integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw=="
|
||||
"version": "3.5.12",
|
||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.12.tgz",
|
||||
"integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg=="
|
||||
},
|
||||
"node_modules/@vue/tsconfig": {
|
||||
"version": "0.5.1",
|
||||
|
@ -1267,9 +1267,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/acorn": {
|
||||
"version": "8.12.1",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
|
||||
"integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
|
||||
"version": "8.13.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz",
|
||||
"integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"acorn": "bin/acorn"
|
||||
|
@ -1468,12 +1468,12 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/debug": {
|
||||
"version": "4.3.6",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
|
||||
"integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
|
||||
"version": "4.3.7",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
|
||||
"integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ms": "2.1.2"
|
||||
"ms": "^2.1.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0"
|
||||
|
@ -1576,16 +1576,17 @@
|
|||
}
|
||||
},
|
||||
"node_modules/eslint": {
|
||||
"version": "8.57.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
|
||||
"integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
|
||||
"version": "8.57.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
|
||||
"integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
|
||||
"deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.2.0",
|
||||
"@eslint-community/regexpp": "^4.6.1",
|
||||
"@eslint/eslintrc": "^2.1.4",
|
||||
"@eslint/js": "8.57.0",
|
||||
"@humanwhocodes/config-array": "^0.11.14",
|
||||
"@eslint/js": "8.57.1",
|
||||
"@humanwhocodes/config-array": "^0.13.0",
|
||||
"@humanwhocodes/module-importer": "^1.0.1",
|
||||
"@nodelib/fs.walk": "^1.2.8",
|
||||
"@ungap/structured-clone": "^1.2.0",
|
||||
|
@ -1673,9 +1674,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-vue": {
|
||||
"version": "9.27.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.27.0.tgz",
|
||||
"integrity": "sha512-5Dw3yxEyuBSXTzT5/Ge1X5kIkRTQ3nvBn/VwPwInNiZBSJOO/timWMUaflONnFBzU6NhB68lxnCda7ULV5N7LA==",
|
||||
"version": "9.29.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.29.0.tgz",
|
||||
"integrity": "sha512-hamyjrBhNH6Li6R1h1VF9KHfshJlKgKEg3ARbGTn72CMNDSMhWbgC7NdkRDEh25AFW+4SDATzyNM+3gWuZii8g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.4.0",
|
||||
|
@ -1683,7 +1684,7 @@
|
|||
"natural-compare": "^1.4.0",
|
||||
"nth-check": "^2.1.1",
|
||||
"postcss-selector-parser": "^6.0.15",
|
||||
"semver": "^7.6.0",
|
||||
"semver": "^7.6.3",
|
||||
"vue-eslint-parser": "^9.4.3",
|
||||
"xml-name-validator": "^4.0.0"
|
||||
},
|
||||
|
@ -2248,9 +2249,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/magic-string": {
|
||||
"version": "0.30.11",
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
|
||||
"integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
|
||||
"version": "0.30.12",
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz",
|
||||
"integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==",
|
||||
"dependencies": {
|
||||
"@jridgewell/sourcemap-codec": "^1.5.0"
|
||||
}
|
||||
|
@ -2274,9 +2275,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/micromatch": {
|
||||
"version": "4.0.7",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
|
||||
"integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
|
||||
"version": "4.0.8",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
|
||||
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"braces": "^3.0.3",
|
||||
|
@ -2302,9 +2303,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/muggle-string": {
|
||||
|
@ -2346,9 +2347,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/npm-run-all2": {
|
||||
"version": "6.2.2",
|
||||
"resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.2.2.tgz",
|
||||
"integrity": "sha512-Q+alQAGIW7ZhKcxLt8GcSi3h3ryheD6xnmXahkMRVM5LYmajcUrSITm8h+OPC9RYWMV2GR0Q1ntTUCfxaNoOJw==",
|
||||
"version": "6.2.3",
|
||||
"resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.2.3.tgz",
|
||||
"integrity": "sha512-5RsxC7jEc/RjxOYBVdEfrJf5FsJ0pHA7jr2/OxrThXknajETCTYjigOCG3iaGjdYIKEQlDuCG0ir0T1HTva8pg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ansi-styles": "^6.2.1",
|
||||
|
@ -2505,9 +2506,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/picocolors": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
|
||||
"integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
|
||||
"integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw=="
|
||||
},
|
||||
"node_modules/picomatch": {
|
||||
"version": "2.3.1",
|
||||
|
@ -2534,9 +2535,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/pinia": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/pinia/-/pinia-2.2.2.tgz",
|
||||
"integrity": "sha512-ja2XqFWZC36mupU4z1ZzxeTApV7DOw44cV4dhQ9sGwun+N89v/XP7+j7q6TanS1u1tdbK4r+1BUx7heMaIdagA==",
|
||||
"version": "2.2.4",
|
||||
"resolved": "https://registry.npmjs.org/pinia/-/pinia-2.2.4.tgz",
|
||||
"integrity": "sha512-K7ZhpMY9iJ9ShTC0cR2+PnxdQRuwVIsXDO/WIEV/RnMC/vmSoKDTKW/exNQYPI+4ij10UjXqdNiEHwn47McANQ==",
|
||||
"dependencies": {
|
||||
"@vue/devtools-api": "^6.6.3",
|
||||
"vue-demi": "^0.14.10"
|
||||
|
@ -2584,9 +2585,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.4.41",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz",
|
||||
"integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==",
|
||||
"version": "8.4.47",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
|
||||
"integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
|
@ -2603,8 +2604,8 @@
|
|||
],
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.7",
|
||||
"picocolors": "^1.0.1",
|
||||
"source-map-js": "^1.2.0"
|
||||
"picocolors": "^1.1.0",
|
||||
"source-map-js": "^1.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10 || ^12 || >=14"
|
||||
|
@ -2737,12 +2738,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/rollup": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.0.tgz",
|
||||
"integrity": "sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==",
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz",
|
||||
"integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/estree": "1.0.5"
|
||||
"@types/estree": "1.0.6"
|
||||
},
|
||||
"bin": {
|
||||
"rollup": "dist/bin/rollup"
|
||||
|
@ -2752,22 +2753,22 @@
|
|||
"npm": ">=8.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@rollup/rollup-android-arm-eabi": "4.21.0",
|
||||
"@rollup/rollup-android-arm64": "4.21.0",
|
||||
"@rollup/rollup-darwin-arm64": "4.21.0",
|
||||
"@rollup/rollup-darwin-x64": "4.21.0",
|
||||
"@rollup/rollup-linux-arm-gnueabihf": "4.21.0",
|
||||
"@rollup/rollup-linux-arm-musleabihf": "4.21.0",
|
||||
"@rollup/rollup-linux-arm64-gnu": "4.21.0",
|
||||
"@rollup/rollup-linux-arm64-musl": "4.21.0",
|
||||
"@rollup/rollup-linux-powerpc64le-gnu": "4.21.0",
|
||||
"@rollup/rollup-linux-riscv64-gnu": "4.21.0",
|
||||
"@rollup/rollup-linux-s390x-gnu": "4.21.0",
|
||||
"@rollup/rollup-linux-x64-gnu": "4.21.0",
|
||||
"@rollup/rollup-linux-x64-musl": "4.21.0",
|
||||
"@rollup/rollup-win32-arm64-msvc": "4.21.0",
|
||||
"@rollup/rollup-win32-ia32-msvc": "4.21.0",
|
||||
"@rollup/rollup-win32-x64-msvc": "4.21.0",
|
||||
"@rollup/rollup-android-arm-eabi": "4.24.0",
|
||||
"@rollup/rollup-android-arm64": "4.24.0",
|
||||
"@rollup/rollup-darwin-arm64": "4.24.0",
|
||||
"@rollup/rollup-darwin-x64": "4.24.0",
|
||||
"@rollup/rollup-linux-arm-gnueabihf": "4.24.0",
|
||||
"@rollup/rollup-linux-arm-musleabihf": "4.24.0",
|
||||
"@rollup/rollup-linux-arm64-gnu": "4.24.0",
|
||||
"@rollup/rollup-linux-arm64-musl": "4.24.0",
|
||||
"@rollup/rollup-linux-powerpc64le-gnu": "4.24.0",
|
||||
"@rollup/rollup-linux-riscv64-gnu": "4.24.0",
|
||||
"@rollup/rollup-linux-s390x-gnu": "4.24.0",
|
||||
"@rollup/rollup-linux-x64-gnu": "4.24.0",
|
||||
"@rollup/rollup-linux-x64-musl": "4.24.0",
|
||||
"@rollup/rollup-win32-arm64-msvc": "4.24.0",
|
||||
"@rollup/rollup-win32-ia32-msvc": "4.24.0",
|
||||
"@rollup/rollup-win32-x64-msvc": "4.24.0",
|
||||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
|
@ -2846,9 +2847,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/source-map-js": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
|
||||
"integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
|
||||
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
|
@ -2890,9 +2891,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/synckit": {
|
||||
"version": "0.9.1",
|
||||
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz",
|
||||
"integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==",
|
||||
"version": "0.9.2",
|
||||
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz",
|
||||
"integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@pkgr/core": "^0.1.0",
|
||||
|
@ -2944,9 +2945,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/tslib": {
|
||||
"version": "2.6.3",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
|
||||
"integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
|
||||
"version": "2.8.0",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz",
|
||||
"integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/type-check": {
|
||||
|
@ -3008,13 +3009,13 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/vite": {
|
||||
"version": "5.4.2",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz",
|
||||
"integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==",
|
||||
"version": "5.4.9",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-5.4.9.tgz",
|
||||
"integrity": "sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"esbuild": "^0.21.3",
|
||||
"postcss": "^8.4.41",
|
||||
"postcss": "^8.4.43",
|
||||
"rollup": "^4.20.0"
|
||||
},
|
||||
"bin": {
|
||||
|
@ -3073,15 +3074,15 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/vue": {
|
||||
"version": "3.4.38",
|
||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.4.38.tgz",
|
||||
"integrity": "sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==",
|
||||
"version": "3.5.12",
|
||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.12.tgz",
|
||||
"integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.4.38",
|
||||
"@vue/compiler-sfc": "3.4.38",
|
||||
"@vue/runtime-dom": "3.4.38",
|
||||
"@vue/server-renderer": "3.4.38",
|
||||
"@vue/shared": "3.4.38"
|
||||
"@vue/compiler-dom": "3.5.12",
|
||||
"@vue/compiler-sfc": "3.5.12",
|
||||
"@vue/runtime-dom": "3.5.12",
|
||||
"@vue/server-renderer": "3.5.12",
|
||||
"@vue/shared": "3.5.12"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "*"
|
||||
|
@ -3117,11 +3118,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/vue-router": {
|
||||
"version": "4.4.3",
|
||||
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.3.tgz",
|
||||
"integrity": "sha512-sv6wmNKx2j3aqJQDMxLFzs/u/mjA9Z5LCgy6BE0f7yFWMjrPLnS/sPNn8ARY/FXw6byV18EFutn5lTO6+UsV5A==",
|
||||
"version": "4.4.5",
|
||||
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.5.tgz",
|
||||
"integrity": "sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==",
|
||||
"dependencies": {
|
||||
"@vue/devtools-api": "^6.6.3"
|
||||
"@vue/devtools-api": "^6.6.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/posva"
|
||||
|
@ -3131,13 +3132,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/vue-tsc": {
|
||||
"version": "2.0.29",
|
||||
"resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.29.tgz",
|
||||
"integrity": "sha512-MHhsfyxO3mYShZCGYNziSbc63x7cQ5g9kvijV7dRe1TTXBRLxXyL0FnXWpUF1xII2mJ86mwYpYsUmMwkmerq7Q==",
|
||||
"version": "2.1.6",
|
||||
"resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.1.6.tgz",
|
||||
"integrity": "sha512-f98dyZp5FOukcYmbFpuSCJ4Z0vHSOSmxGttZJCsFeX0M4w/Rsq0s4uKXjcSRsZqsRgQa6z7SfuO+y0HVICE57Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@volar/typescript": "~2.4.0-alpha.18",
|
||||
"@vue/language-core": "2.0.29",
|
||||
"@volar/typescript": "~2.4.1",
|
||||
"@vue/language-core": "2.1.6",
|
||||
"semver": "^7.5.4"
|
||||
},
|
||||
"bin": {
|
||||
|
|
|
@ -1,83 +1,11 @@
|
|||
<!--
|
||||
The main app just contains a RouterView that's populated entirely by the
|
||||
router and the user's currently selected route.
|
||||
-->
|
||||
<script setup lang="ts">
|
||||
import { RouterView } from 'vue-router'
|
||||
import NavLink from './components/NavLink.vue'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="bisection-container">
|
||||
<header class="page-bisection">
|
||||
<h1 class="site-header-text">Andrew Lalis</h1>
|
||||
<nav>
|
||||
<NavLink path="/">Home</NavLink>
|
||||
<NavLink path="/about">About</NavLink>
|
||||
<NavLink path="/software">Software</NavLink>
|
||||
<NavLink path="/gardening">Gardening</NavLink>
|
||||
<NavLink path="/logbook">Logbook</NavLink>
|
||||
<NavLink path="/contact">Contact</NavLink>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<RouterView v-slot="{ Component }">
|
||||
<Transition name="page">
|
||||
<Component :is="Component" class="page-bisection content-page" />
|
||||
</Transition>
|
||||
</RouterView>
|
||||
</div>
|
||||
<RouterView />
|
||||
</template>
|
||||
|
||||
<style>
|
||||
.bisection-container {
|
||||
text-align: center;
|
||||
}
|
||||
.page-bisection {
|
||||
width: 50ch;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
padding-left: 1rem;
|
||||
padding-right: 1rem;
|
||||
}
|
||||
.content-page {
|
||||
text-align: left;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.site-header-text {
|
||||
font-family: Sacramento;
|
||||
container-type: inline-size;
|
||||
font-size: calc(min(60px, max(5cqw, 42px)));
|
||||
text-align: right;
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.page-enter-active {
|
||||
transition: all 0.5s ease;
|
||||
}
|
||||
|
||||
.page-enter-from {
|
||||
opacity: 0;
|
||||
transform: translateX(30px);
|
||||
}
|
||||
|
||||
/*
|
||||
Activates once the left and right half of the page stack due to width constraints.
|
||||
We remove a lot of the vertical spacing to make things fit better.
|
||||
*/
|
||||
@media (width < calc(100ch - 2.5rem)) {
|
||||
.site-header-text {
|
||||
margin-top: 0;
|
||||
}
|
||||
.content-page {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Once the device width is smaller than one of the halves, sync the page half to the device width.
|
||||
*/
|
||||
@media (width < 50ch) {
|
||||
.page-bisection {
|
||||
width: calc(100% - 2rem);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
--background-color-2: rgb(34, 34, 34);
|
||||
--code-color: rgb(224, 226, 120);
|
||||
--success-color: rgb(118, 201, 118);
|
||||
--error-color: rgb(241, 64, 64);
|
||||
}
|
||||
|
||||
body {
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
<script setup lang="ts">
|
||||
defineProps<{
|
||||
species: any
|
||||
}>()
|
||||
</script>
|
||||
<template>
|
||||
<div class="garden-species-card">
|
||||
<div class="garden-species-card-content">
|
||||
<h3 v-text="species['Common Name']"></h3>
|
||||
<a
|
||||
:href="species['Reference']"
|
||||
v-text="species['Scientific Name']"
|
||||
class="link-out"
|
||||
style="font-style: italic"
|
||||
></a>
|
||||
<p>
|
||||
In the
|
||||
<span
|
||||
v-text="species['Family']"
|
||||
style="font-style: italic; color: var(--code-color)"
|
||||
></span>
|
||||
family.
|
||||
</p>
|
||||
<p>
|
||||
Flordia native:
|
||||
<span v-if="species['Florida Native'] === 'Yes'" style="color: var(--success-color)">
|
||||
Yes
|
||||
</span>
|
||||
<span v-if="species['Florida Native'] !== 'Yes'" style="color: var(--error-color)">No</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="garden-species-card-image">
|
||||
<img v-if="species['Image Link']" :src="species['Image Link']" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<style>
|
||||
.garden-species-card {
|
||||
background-color: var(--background-color-2);
|
||||
border-radius: 20px;
|
||||
padding: 1rem;
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
.garden-species-card > .garden-species-card-content > h3 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.25rem;
|
||||
font-family: OpenSans, sans-serif;
|
||||
}
|
||||
.garden-species-card > .garden-species-card-content > p {
|
||||
margin-top: 0.25rem;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
.garden-species-card-content {
|
||||
width: 50%;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
.garden-species-card-image {
|
||||
width: 50%;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
text-align: right;
|
||||
}
|
||||
.garden-species-card-image > img {
|
||||
max-height: 128px;
|
||||
max-width: 100%;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,12 @@
|
|||
<!--
|
||||
Displays a styled link using the provided link for the href and link text.
|
||||
-->
|
||||
<script setup lang="ts">
|
||||
defineProps<{
|
||||
link: string
|
||||
external?: boolean
|
||||
}>()
|
||||
</script>
|
||||
<template>
|
||||
<a :href="link" v-text="link" :class="external ? 'link-out' : 'link-local'"></a>
|
||||
</template>
|
|
@ -0,0 +1,687 @@
|
|||
/**
|
||||
* The following array is derived from my personal "species.ods" spreadsheet
|
||||
* where I track all species in my garden. I then export it as CSV, then
|
||||
* convert the CSV to JSON using an online tool.
|
||||
*/
|
||||
export const SPECIES = [
|
||||
{
|
||||
'Scientific Name': 'Ruellia caroliniensis',
|
||||
'Common Name': 'Carolina Petunia',
|
||||
Family: 'Acanthaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Ruellia_caroliniensis',
|
||||
'Image Link': 'https://www.fnps.org/assets/images/plants/Ruellia_caroliniana_SD.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: 'Total Species',
|
||||
'': 58
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Viburnum obovatum var. Densa',
|
||||
'Common Name': "Dwarf Walter's Viburnum",
|
||||
Family: 'Adoxaceae',
|
||||
Reference:
|
||||
'https://gardeningsolutions.ifas.ufl.edu/plants/trees-and-shrubs/shrubs/walters-viburnum/',
|
||||
'Image Link':
|
||||
'https://s3.amazonaws.com/eit-planttoolbox-prod/media/images/Viburnum_obovatum_D__0p36y8hAIvHU.jpeg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: 'Total Natives',
|
||||
'': 40
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Allium tuberosum',
|
||||
'Common Name': 'Garlic Chives',
|
||||
Family: 'Amaryllidaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Allium_tuberosum',
|
||||
'Image Link': 'https://hort.extension.wisc.edu/files/2015/12/Allium_tuberosum-ingarden1.jpg',
|
||||
'Florida Native': 'No',
|
||||
Current: 'Yes',
|
||||
Statistics: '% Native',
|
||||
'': '68.97%'
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Asclepias incarnata',
|
||||
'Common Name': 'Pink Swamp Milkweed',
|
||||
Family: 'Apocynaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Asclepias_incarnata',
|
||||
'Image Link':
|
||||
'https://sciotogardens.com/wp-content/uploads/2021/04/Asclepias-incarnata-Swamp-Milkweed-Flower-with-Bee.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: 'Milkweed Species',
|
||||
'': 4
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Asclepias perennis',
|
||||
'Common Name': 'Aquatic Milkweed',
|
||||
Family: 'Apocynaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Asclepias_perennis',
|
||||
'Image Link': 'https://www.fnps.org/assets/images/plants/Asclepias_perennis-Stibolt2.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: 'Current Species',
|
||||
'': 52
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Asclepias tuberosa',
|
||||
'Common Name': 'Butterfly Weed',
|
||||
Family: 'Apocynaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Asclepias_tuberosa',
|
||||
'Image Link':
|
||||
'https://www.gardenia.net/wp-content/uploads/2023/05/Asclepias-Tuberosa-Butterfly-Weed.webp',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Asclepias verticillata',
|
||||
'Common Name': 'Whorled Milkweed',
|
||||
Family: 'Apocynaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Asclepias_verticillata',
|
||||
'Image Link':
|
||||
'https://kb.jniplants.com/wp-content/uploads/2022/01/whorled-milkweed-asclepias-verticillata-ftimg.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Serenoa repens',
|
||||
'Common Name': 'Saw Palmetto',
|
||||
Family: 'Arecaceae',
|
||||
Reference: 'https://plants.ces.ncsu.edu/plants/serenoa-repens/',
|
||||
'Image Link': 'https://www.fnps.org/assets/images/plants/serenoa_repens_Denton.JPG',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Ageratina jucunda',
|
||||
'Common Name': 'Hammock Snakeroot',
|
||||
Family: 'Asteraceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Ageratina_jucunda',
|
||||
'Image Link':
|
||||
'https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Hammock_snakeroot_imported_from_iNaturalist_photo_334164824_on_10_September_2024.jpg/1200px-Hammock_snakeroot_imported_from_iNaturalist_photo_334164824_on_10_September_2024.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Coreopsis lanceolata',
|
||||
'Common Name': 'Lanceleaf Coreopsis',
|
||||
Family: 'Asteraceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Coreopsis_lanceolata',
|
||||
'Image Link':
|
||||
'https://upload.wikimedia.org/wikipedia/commons/b/bf/Coreopsis_lanceolata_Sterntaler.JPG',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Coreopsis leavenworthii',
|
||||
'Common Name': 'Leavenworth’s Coreopsis',
|
||||
Family: 'Asteraceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Coreopsis_leavenworthii',
|
||||
'Image Link':
|
||||
'https://www.flawildflowers.org/wp-content/uploads/2017/06/coreopsis_leavenworthii-e1591118903862.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'No',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Cosmos bipinnatus',
|
||||
'Common Name': 'Cosmos',
|
||||
Family: 'Asteraceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Cosmos_bipinnatus',
|
||||
'Image Link':
|
||||
'https://upload.wikimedia.org/wikipedia/commons/9/9c/Cosmos_bipinnatus_pink%2C_Burdwan%2C_West_Bengal%2C_India_10_01_2013.jpg',
|
||||
'Florida Native': 'No',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Liatris spicata',
|
||||
'Common Name': 'Dense Blazing Star',
|
||||
Family: 'Asteraceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Liatris_spicata',
|
||||
'Image Link':
|
||||
'https://s3.amazonaws.com/eit-planttoolbox-prod/media/images/Liatris_spicata_Hedwig_Storch_ccbysa30.JPG',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'No',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Melanthera nivea',
|
||||
'Common Name': 'Salt and Pepper Plant',
|
||||
Family: 'Asteraceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Melanthera_nivea',
|
||||
'Image Link': 'https://www.fnps.org/assets/images/plants/Melanthera%20nivea1-Stibolt.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Solidago fistulosa',
|
||||
'Common Name': 'Pinebarren Goldenrod',
|
||||
Family: 'Asteraceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Solidago_fistulosa',
|
||||
'Image Link': 'https://upload.wikimedia.org/wikipedia/commons/5/56/Solidago_fistulosa01.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Symphyotrichum lateriflorum',
|
||||
'Common Name': 'Calico Aster',
|
||||
Family: 'Asteraceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Symphyotrichum_lateriflorum',
|
||||
'Image Link':
|
||||
'https://s3.amazonaws.com/eit-planttoolbox-prod/media/images/Symphyotrichum-later_vMt4pemBxDbP.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Tithonia rotundifolia',
|
||||
'Common Name': 'Mexican Sunflower',
|
||||
Family: 'Asteraceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Tithonia_rotundifolia',
|
||||
'Image Link':
|
||||
'https://upload.wikimedia.org/wikipedia/commons/b/b6/Tithonia_rotundifolia_kz2.jpg',
|
||||
'Florida Native': 'No',
|
||||
Current: 'No',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Lonicera sempervirens',
|
||||
'Common Name': 'Coral Honeysuckle',
|
||||
Family: 'Caprifoliaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Lonicera_sempervirens',
|
||||
'Image Link':
|
||||
'https://upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Lonicera_sempervirens_2.jpg/1200px-Lonicera_sempervirens_2.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Sambucus nigra ssp. Canadensis',
|
||||
'Common Name': 'Common Elderberry',
|
||||
Family: 'Caprifoliaceae',
|
||||
Reference: 'https://www.wildflower.org/plants/result.php?id_plant=sanic4',
|
||||
'Image Link':
|
||||
'https://bluethumb.org/wp-content/uploads/sites/2/2024/03/sambucus_nigra_ssp_canadensis-800x800.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Tradescantia ohiensis',
|
||||
'Common Name': 'Spiderwort',
|
||||
Family: 'Commelinoideae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Tradescantia_ohiensis',
|
||||
'Image Link':
|
||||
'https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Tradescantia_ohiensis2.jpg/1200px-Tradescantia_ohiensis2.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Trandescantia zebrina',
|
||||
'Common Name': 'Inchplant',
|
||||
Family: 'Commelinoideae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Tradescantia_zebrina',
|
||||
'Image Link': 'https://hort.extension.wisc.edu/files/2015/12/T_zebrina-planting.jpg',
|
||||
'Florida Native': 'No',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Juniperus conferta',
|
||||
'Common Name': 'Blue Pacific Juniper',
|
||||
Family: 'Cupressaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Juniperus_conferta',
|
||||
'Image Link': 'https://upload.wikimedia.org/wikipedia/commons/9/9b/Juniperus_conferta.JPG',
|
||||
'Florida Native': 'No',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Cycas revoluta',
|
||||
'Common Name': 'King Sago Palm',
|
||||
Family: 'Cycadaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Cycas_revoluta',
|
||||
'Image Link': 'https://upload.wikimedia.org/wikipedia/commons/3/3b/Cycas_inflorescence.jpg',
|
||||
'Florida Native': 'No',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Dryopteris ludoviciana',
|
||||
'Common Name': 'Southern Wood Fern',
|
||||
Family: 'Dryopteridaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Dryopteris_ludoviciana',
|
||||
'Image Link':
|
||||
'https://upload.wikimedia.org/wikipedia/commons/d/d2/Southern_Wood_Fern_Dryopteris_ludoviciana_Leaves_3008px.JPG',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Erythrina herbacea',
|
||||
'Common Name': 'Coral Bean',
|
||||
Family: 'Fabaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Erythrina_herbacea',
|
||||
'Image Link':
|
||||
'https://warcapps.usgs.gov/PlantID/Image/GivenFile?id=3324&file=Erythrina%20herbacea_0001.JPG&size=w',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Mimosa strigillosa',
|
||||
'Common Name': 'Sunshine Mimosa',
|
||||
Family: 'Fabaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Mimosa_strigillosa',
|
||||
'Image Link':
|
||||
'https://www.flawildflowers.org/wp-content/uploads/2015/07/mimosa_strigillosa_ScottZona-CCBY-NC2.0.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Clinopodium brownei',
|
||||
'Common Name': 'Browne’s Savory',
|
||||
Family: 'Lamiaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Clinopodium_brownei',
|
||||
'Image Link':
|
||||
'https://www.flawildflowers.org/wp-content/uploads/2018/04/clinopodium_brownei-keim2-1-e1602619542587.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Melissa officinalis',
|
||||
'Common Name': 'Lemon Balm',
|
||||
Family: 'Lamiaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Lemon_balm',
|
||||
'Image Link':
|
||||
'https://www.gardenia.net/wp-content/uploads/2023/05/melissa-officinalis-780x520.webp',
|
||||
'Florida Native': 'No',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Nepeta cataria',
|
||||
'Common Name': 'Catnip',
|
||||
Family: 'Lamiaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Catnip',
|
||||
'Image Link':
|
||||
'https://i.etsystatic.com/27743352/r/il/77ac53/3780897667/il_fullxfull.3780897667_5dod.jpg',
|
||||
'Florida Native': 'No',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Ocimum basilicum',
|
||||
'Common Name': 'Basil',
|
||||
Family: 'Lamiaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Basil',
|
||||
'Image Link':
|
||||
'https://www.gardenia.net/wp-content/uploads/2023/04/Zr6xu4xq1jF7hLENb2aNtO9jsD7DS6GLZMw24RPF-780x520.webp',
|
||||
'Florida Native': 'No',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Ocimum campenchianum',
|
||||
'Common Name': 'Wild Sweet Basil',
|
||||
Family: 'Lamiaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Ocimum_campechianum',
|
||||
'Image Link': 'https://chalk.richmond.edu/flora-kaxil-kiuic/o/ocimum_campechianum_04s.JPG',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Origanum vulgare',
|
||||
'Common Name': 'Oregano',
|
||||
Family: 'Lamiaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Oregano',
|
||||
'Image Link':
|
||||
'https://s3.amazonaws.com/eit-planttoolbox-prod/media/images/Origanum-vulgare--Anna--CC-BY.jpg',
|
||||
'Florida Native': 'No',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Salvia azurea',
|
||||
'Common Name': 'Azure Sage',
|
||||
Family: 'Lamiaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Salvia_azurea',
|
||||
'Image Link': 'https://upload.wikimedia.org/wikipedia/commons/6/63/Salvia_azurea1.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'No',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Salvia coccinea',
|
||||
'Common Name': 'Tropical Sage',
|
||||
Family: 'Lamiaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Salvia_coccinea',
|
||||
'Image Link':
|
||||
'https://s3.amazonaws.com/eit-planttoolbox-prod/media/images/Salvia-coccinea--Carol-Foll--CC-BY-NC-ND.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Salvia misella',
|
||||
'Common Name': 'Creeping Sage',
|
||||
Family: 'Lamiaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Salvia_misella',
|
||||
'Image Link': 'https://upload.wikimedia.org/wikipedia/commons/7/77/Salvia_misella.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Salvia officinalis',
|
||||
'Common Name': 'Garden Sage',
|
||||
Family: 'Lamiaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Salvia_officinalis',
|
||||
'Image Link':
|
||||
'https://www.gardenia.net/wp-content/uploads/2023/05/salvia-officinalis-780x520.webp',
|
||||
'Florida Native': 'No',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Salvia rosmarinus',
|
||||
'Common Name': 'Rosemary',
|
||||
Family: 'Lamiaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Rosemary',
|
||||
'Image Link':
|
||||
'https://s3.amazonaws.com/eit-planttoolbox-prod/media/images/Rosmarinus-officinalis-Gil-Costa-CC-BY-NC-2-0.jpg',
|
||||
'Florida Native': 'No',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Teucrium canadense',
|
||||
'Common Name': 'American Germander',
|
||||
Family: 'Lamiaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Teucrium_canadense',
|
||||
'Image Link':
|
||||
'https://upload.wikimedia.org/wikipedia/commons/8/84/American_Germander_%282981720555%29.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Thymus vulgaris',
|
||||
'Common Name': 'English Thyme',
|
||||
Family: 'Lamiaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Thymus_vulgaris',
|
||||
'Image Link':
|
||||
'https://s3.amazonaws.com/eit-planttoolbox-prod/media/images/Thymus-vulgaris-argenteusPressebereich-Dehner-Garten-Center--CC-BY-ND.jpg',
|
||||
'Florida Native': 'No',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Kostelezkya pentacarpos',
|
||||
'Common Name': 'Saltmarsh Mallow',
|
||||
Family: 'Malvaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Kosteletzkya_pentacarpos',
|
||||
'Image Link':
|
||||
'https://upload.wikimedia.org/wikipedia/commons/9/94/Virginia_saltmarsh_mallow_%28Kosteletzkya_virginica%29_%287513257570%29.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Nephrolepis exaltata var. Petticoat',
|
||||
'Common Name': 'Petticoat Fern',
|
||||
Family: 'Nephrolepidaceae',
|
||||
Reference:
|
||||
'https://garden.org/plants/view/678483/Petticoat-Fern-Nephrolepis-exaltata-Petticoat/',
|
||||
'Image Link':
|
||||
'https://sprouthome.com/cdn/shop/products/NephroPetti10detail_sprout_800x.jpg?v=1656886021',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Nephrolepis obliterata',
|
||||
'Common Name': 'Kimberley Queen Fern',
|
||||
Family: 'Nephrolepidaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Nephrolepis_obliterata',
|
||||
'Image Link': 'https://d2seqvvyy3b8p2.cloudfront.net/3dcdfa0979c349fad87894ff597a80fc.jpg',
|
||||
'Florida Native': 'No',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Rivina humilis',
|
||||
'Common Name': 'Rouge Plant / Bloodberry',
|
||||
Family: 'Petiveriaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Rivina_humilis',
|
||||
'Image Link': 'https://www.gardenia.net/wp-content/uploads/2023/05/rivina-humilis.webp',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Aristida stricta',
|
||||
'Common Name': 'Wiregrass',
|
||||
Family: 'Poaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Aristida_stricta',
|
||||
'Image Link':
|
||||
'https://lh4.googleusercontent.com/proxy/nRFsygxXYmqmqPAkGwgiZWDKrNwhjl7yCjBWh0kC7HuEpo5kzrXiwfOvyqfS_V0QJ9Q3w-kMXw4lR_D8oNJpsDf9dU9BJF4TWIOBolZt_Q',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Eragrostis spectabilis',
|
||||
'Common Name': 'Purple Lovegrass',
|
||||
Family: 'Poaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Eragrostis_spectabilis',
|
||||
'Image Link':
|
||||
'https://s3.amazonaws.com/eit-planttoolbox-prod/media/images/Eragrostrum_spectabl_QNqsgDI5kmks.jfif',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Tripsacum floridana',
|
||||
'Common Name': 'Dwarf Fakahatchee Grass',
|
||||
Family: 'Poaceae',
|
||||
Reference: 'https://www.fnps.org/plant/tripsacum-floridanum',
|
||||
'Image Link': 'https://www.fnps.org/assets/images/plants/tripsacum_floridanum_0009Denton.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Hamelia patens',
|
||||
'Common Name': 'Firebush',
|
||||
Family: 'Rubiaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Hamelia_patens',
|
||||
'Image Link':
|
||||
'https://www.flawildflowers.org/wp-content/uploads/2014/05/hamelia_patens_keim.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Psychotria nervosa',
|
||||
'Common Name': 'Dwarf Shiny-Leaf Coffee',
|
||||
Family: 'Rubiaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Psychotria_nervosa',
|
||||
'Image Link':
|
||||
'https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Psychotria_nervosa_Florida.JPG/1200px-Psychotria_nervosa_Florida.JPG',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Capsicum annuum var. Cayenne',
|
||||
'Common Name': 'Cayenne Pepper',
|
||||
Family: 'Solanaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Cayenne_pepper',
|
||||
'Image Link':
|
||||
'https://s3.amazonaws.com/eit-planttoolbox-prod/media/images/Capsicum_annuum_Chil_AyfsPt9WpZrr.jpeg',
|
||||
'Florida Native': 'No',
|
||||
Current: 'No',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Capsicum annuum var. glabriusculum',
|
||||
'Common Name': 'Bird Pepper',
|
||||
Family: 'Solanaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Capsicum_annuum_var._glabriusculum',
|
||||
'Image Link': 'https://www.fnps.org/assets/images/plants/Capsicum_annuum_RH.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Capsicum annuum var. jalapeño',
|
||||
'Common Name': 'Jalapeño Pepper',
|
||||
Family: 'Solanaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Jalape%C3%B1o',
|
||||
'Image Link':
|
||||
'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Immature_jalapeno_capsicum_annuum_var_annuum.jpeg/1024px-Immature_jalapeno_capsicum_annuum_var_annuum.jpeg',
|
||||
'Florida Native': 'No',
|
||||
Current: 'No',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Strelitzia reginae',
|
||||
'Common Name': 'Bird of Paradise',
|
||||
Family: 'Strelitziaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Strelitzia_reginae',
|
||||
'Image Link':
|
||||
'https://upload.wikimedia.org/wikipedia/commons/thumb/5/55/Bird_of_Paradise_flower.JPG/1200px-Bird_of_Paradise_flower.JPG',
|
||||
'Florida Native': 'No',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Lantana camara var. Anne Marie',
|
||||
'Common Name': 'Anne Marie Lantana',
|
||||
Family: 'Verbenaceae',
|
||||
Reference: 'https://garden.org/plants/view/172550/Lantana-Lantana-camara-Anne-Marie/',
|
||||
'Image Link':
|
||||
'https://cdn11.bigcommerce.com/s-5ahp77r7un/images/stencil/1280x1280/products/2251/8704/Lantana_Anne_Marie_web__60642.1657546129.jpg?c=2',
|
||||
'Florida Native': 'No',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Lantana depressa var. Depressa',
|
||||
'Common Name': 'Pineland Lantana',
|
||||
Family: 'Verbenaceae',
|
||||
Reference: 'https://www.wildflower.org/plants/result.php?id_plant=LADED',
|
||||
'Image Link': 'https://florida.plantatlas.usf.edu/plantimage/Lantana_depressa7.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Lantana depressa var. Floridana',
|
||||
'Common Name': 'Florida Lantana',
|
||||
Family: 'Verbenaceae',
|
||||
Reference:
|
||||
'https://explorer.natureserve.org/Taxon/ELEMENT_GLOBAL.2.155560/Lantana_depressa_var_floridana',
|
||||
'Image Link': 'https://fsus.ncbg.unc.edu/img/orig/kb/kb_02227.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Lantana involucrata',
|
||||
'Common Name': 'Buttonsage Lantana',
|
||||
Family: 'Verbenaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Lantana_involucrata',
|
||||
'Image Link': 'https://upload.wikimedia.org/wikipedia/commons/6/6d/Lantana_involucrata.jpg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Viola sororia',
|
||||
'Common Name': 'Blue Violet',
|
||||
Family: 'Violaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Viola_sororia',
|
||||
'Image Link':
|
||||
'https://www.gardenia.net/wp-content/uploads/2023/04/xE7cZkfR0j4qirAl5q7pMR7b3SordMxYVpty5rsV-790x533.webp',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
},
|
||||
{
|
||||
'Scientific Name': 'Zamia integrifolia',
|
||||
'Common Name': 'Coontie Palm',
|
||||
Family: 'Zamiaceae',
|
||||
Reference: 'https://en.wikipedia.org/wiki/Zamia_integrifolia',
|
||||
'Image Link':
|
||||
'https://s3.amazonaws.com/eit-planttoolbox-prod/media/images/Zamia_integrifolia_a_CPKJilCHmLjh.jpeg',
|
||||
'Florida Native': 'Yes',
|
||||
Current: 'Yes',
|
||||
Statistics: '',
|
||||
'': ''
|
||||
}
|
||||
]
|
|
@ -5,33 +5,47 @@ import ContactView from '@/views/ContactView.vue'
|
|||
import SoftwareView from '@/views/SoftwareView.vue'
|
||||
import GardeningView from '@/views/GardeningView.vue'
|
||||
import LogBookView from '@/views/LogBookView.vue'
|
||||
import MainSite from '@/views/MainSite.vue'
|
||||
import GardenDetails from '@/views/GardenDetails.vue'
|
||||
|
||||
const router = createRouter({
|
||||
history: createWebHistory(import.meta.env.BASE_URL),
|
||||
routes: [
|
||||
// Most paths are nested under the MainSite component, which provides the
|
||||
// common header links and formatting.
|
||||
{
|
||||
path: '/',
|
||||
component: HomeView
|
||||
component: MainSite,
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
component: HomeView
|
||||
},
|
||||
{
|
||||
path: 'about',
|
||||
component: AboutView
|
||||
},
|
||||
{
|
||||
path: 'contact',
|
||||
component: ContactView
|
||||
},
|
||||
{
|
||||
path: 'software',
|
||||
component: SoftwareView
|
||||
},
|
||||
{
|
||||
path: 'gardening',
|
||||
component: GardeningView
|
||||
},
|
||||
{
|
||||
path: 'logbook',
|
||||
component: LogBookView
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/about',
|
||||
component: AboutView
|
||||
},
|
||||
{
|
||||
path: '/contact',
|
||||
component: ContactView
|
||||
},
|
||||
{
|
||||
path: '/software',
|
||||
component: SoftwareView
|
||||
},
|
||||
{
|
||||
path: '/gardening',
|
||||
component: GardeningView
|
||||
},
|
||||
{
|
||||
path: '/logbook',
|
||||
component: LogBookView
|
||||
path: '/garden-details',
|
||||
component: GardenDetails
|
||||
}
|
||||
]
|
||||
})
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
import { ref, computed } from 'vue'
|
||||
import { defineStore } from 'pinia'
|
||||
|
||||
export const useCounterStore = defineStore('counter', () => {
|
||||
const count = ref(0)
|
||||
const doubleCount = computed(() => count.value * 2)
|
||||
function increment() {
|
||||
count.value++
|
||||
}
|
||||
|
||||
return { count, doubleCount, increment }
|
||||
})
|
|
@ -25,7 +25,7 @@
|
|||
Server), and is served through Nginx and various firewalls.
|
||||
</p>
|
||||
<p>
|
||||
If you actually go and view the source code, you'll see a <code>deploy.sh</code> file.
|
||||
If you actually go and view the source code, you'll see an <code>upload.sh</code> file.
|
||||
Essentially, all I do is build the site locally, then upload the files. Pretty simple, right?
|
||||
</p>
|
||||
</main>
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
<script setup lang="ts">
|
||||
import GardenSpeciesCard from '@/components/GardenSpeciesCard.vue';
|
||||
import { SPECIES } from '@/garden_data';
|
||||
|
||||
const sortedSpecies = [...SPECIES].sort((a, b) =>
|
||||
a['Scientific Name'] > b['Scientific Name'] ? 1 : -1
|
||||
)
|
||||
</script>
|
||||
<template>
|
||||
<header>
|
||||
<h1>My Home's Garden</h1>
|
||||
</header>
|
||||
<main>
|
||||
<p>
|
||||
On this page, you'll find a list of all plants currently (or formerly)
|
||||
in my garden.
|
||||
</p>
|
||||
<p>
|
||||
I keep a spreadsheet of all the species in my garden (or that have been present in the past).
|
||||
In total, my garden currently has <strong>52 unique species</strong>, with
|
||||
<strong>37 native species</strong>.
|
||||
</p>
|
||||
<p>
|
||||
<a href="/gardening" class="link-local">Back to gardening</a>
|
||||
</p>
|
||||
|
||||
<div class="garden-cards-container">
|
||||
<GardenSpeciesCard v-for="species in sortedSpecies" :key="species['Scientific Name']" :species="species"
|
||||
style="width: 300px;" />
|
||||
</div>
|
||||
</main>
|
||||
</template>
|
||||
<style>
|
||||
h1 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
p {
|
||||
max-width: 50ch;
|
||||
margin: 1rem auto;
|
||||
}
|
||||
|
||||
.garden-cards-container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 1rem;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* No margins for the cards when in flex mode. */
|
||||
.garden-species-card {
|
||||
margin: 0;
|
||||
}
|
||||
</style>
|
|
@ -1,5 +1,18 @@
|
|||
<script setup lang="ts">
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<main>
|
||||
<p><em>This page is a work in progress. Please check back later.</em></p>
|
||||
<p>
|
||||
I'd like to call myself an avid gardener, with a particular interest in creating native-friendly garden habitats.
|
||||
</p>
|
||||
<p>
|
||||
I work on my own garden that I share with my partner, and I like to help out with others' too. So if you're
|
||||
thinking about killing your lawn and providing a space for non-invasive and native species to thrive,
|
||||
I'd be happy to help!
|
||||
</p>
|
||||
<p>
|
||||
<a href="/garden-details" class="link-local">Click here to view my home's garden.</a>
|
||||
</p>
|
||||
</main>
|
||||
</template>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<template>
|
||||
<main>
|
||||
<p>
|
||||
My name's Andrew, and I'm a software engineer, gardener, runner, home cook, and probably many
|
||||
My name's Andrew, and I'm a software engineer, pilot, gardener, runner, home cook, and probably many
|
||||
other things too, depending on who you ask. Welcome to my website!
|
||||
</p>
|
||||
<p>
|
||||
|
|
|
@ -0,0 +1,96 @@
|
|||
<!--
|
||||
The main scaffold for the website's basic pages, like home, about, contact, etc.
|
||||
It displays a simple header with links, alongside the selected page content in
|
||||
the router view component.
|
||||
|
||||
See src/router/index.ts to see the nested set of routes that use this component.
|
||||
-->
|
||||
<script setup lang="ts">
|
||||
import { RouterView } from 'vue-router'
|
||||
import NavLink from '@/components/NavLink.vue';
|
||||
</script>
|
||||
<template>
|
||||
<div class="bisection-container">
|
||||
<header class="page-bisection">
|
||||
<h1 class="site-header-text">Andrew Lalis</h1>
|
||||
<nav>
|
||||
<NavLink path="/">Home</NavLink>
|
||||
<NavLink path="/about">About</NavLink>
|
||||
<NavLink path="/software">Software</NavLink>
|
||||
<NavLink path="/gardening">Gardening</NavLink>
|
||||
<NavLink path="/logbook">Logbook</NavLink>
|
||||
<NavLink path="/contact">Contact</NavLink>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<RouterView v-slot="{ Component }">
|
||||
<Transition name="page">
|
||||
<Component :is="Component" class="page-bisection content-page" />
|
||||
</Transition>
|
||||
</RouterView>
|
||||
</div>
|
||||
</template>
|
||||
<style>
|
||||
.bisection-container {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.page-bisection {
|
||||
width: 50ch;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
padding-left: 1rem;
|
||||
padding-right: 1rem;
|
||||
}
|
||||
|
||||
.content-page {
|
||||
text-align: left;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.site-header-text {
|
||||
font-family: Sacramento;
|
||||
container-type: inline-size;
|
||||
font-size: calc(min(60px, max(5cqw, 42px)));
|
||||
text-align: right;
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 0;
|
||||
|
||||
/* Gradient text color for the header. */
|
||||
background-image: linear-gradient(90deg, var(--text-color), var(--code-color));
|
||||
color: transparent;
|
||||
background-clip: text;
|
||||
}
|
||||
|
||||
.page-enter-active {
|
||||
transition: all 0.5s ease;
|
||||
}
|
||||
|
||||
.page-enter-from {
|
||||
opacity: 0;
|
||||
transform: translateX(30px);
|
||||
}
|
||||
|
||||
/*
|
||||
Activates once the left and right half of the page stack due to width constraints.
|
||||
We remove a lot of the vertical spacing to make things fit better.
|
||||
*/
|
||||
@media (width < calc(100ch - 2.5rem)) {
|
||||
.site-header-text {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.content-page {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Once the device width is smaller than one of the halves, sync the page half to the device width.
|
||||
*/
|
||||
@media (width < 50ch) {
|
||||
.page-bisection {
|
||||
width: calc(100% - 2rem);
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -1,4 +1,5 @@
|
|||
<script setup lang="ts">
|
||||
import PlainLink from '@/components/PlainLink.vue'
|
||||
import SoftwareProjectTile from '@/components/SoftwareProjectTile.vue'
|
||||
</script>
|
||||
|
||||
|
@ -15,84 +16,108 @@ import SoftwareProjectTile from '@/components/SoftwareProjectTile.vue'
|
|||
it for collaboration and a projects that rely on GitHub's API integration.
|
||||
</p>
|
||||
|
||||
<SoftwareProjectTile
|
||||
name="Perfin"
|
||||
url="https://git.andrewlalis.com/andrew/perfin"
|
||||
:tags="['Java', 'JavaFX', 'Finance']"
|
||||
>
|
||||
<article>
|
||||
<SoftwareProjectTile
|
||||
name="Perfin"
|
||||
url="https://git.andrewlalis.com/andrew/perfin"
|
||||
:tags="['Java', 'JavaFX', 'Finance']"
|
||||
>
|
||||
<p>
|
||||
A desktop personal finance application that makes it easy to manage your accounts and
|
||||
transactions in a secure manner. Record transactions, track brokerage assets, and view
|
||||
graphs of your spending, total value, and more.
|
||||
</p>
|
||||
</SoftwareProjectTile>
|
||||
<SoftwareProjectTile
|
||||
name="Guerilla Gardening Map"
|
||||
url="https://guerilla-gardening.andrewlalis.com"
|
||||
:tags="['Dlang', 'Vue', 'Typescript']"
|
||||
>
|
||||
<p>
|
||||
A website for anonymously tracking and sharing information on
|
||||
<a href="https://en.wikipedia.org/wiki/Guerrilla_gardening" class="link-out"
|
||||
>Guerilla-Gardening</a
|
||||
>
|
||||
locations around the world.
|
||||
</p>
|
||||
</SoftwareProjectTile>
|
||||
<SoftwareProjectTile
|
||||
name="LiteList"
|
||||
url="https://litelist.andrewlalis.com"
|
||||
:tags="['Dlang', 'Vue', 'Typescript']"
|
||||
>
|
||||
<p>
|
||||
An extremely barebones web application to demonstrate the viability of my own HTTP server.
|
||||
It's just your average ToDo list app, with basic JWT-based authentication.
|
||||
</p>
|
||||
</SoftwareProjectTile>
|
||||
<SoftwareProjectTile
|
||||
name="Handy-Http"
|
||||
url="https://github.com/andrewlalis/handy-httpd"
|
||||
:tags="['Dlang']"
|
||||
>
|
||||
<p>
|
||||
An lightweight and flexible HTTP server implemented in the D programming language.
|
||||
Supports websockets, file serving, complex URL paths with path variables, and more!
|
||||
</p>
|
||||
</SoftwareProjectTile>
|
||||
<SoftwareProjectTile
|
||||
name="JavaFX Scene Router"
|
||||
url="https://git.andrewlalis.com/andrew/javafx-scene-router"
|
||||
:tags="['Java', 'JavaFX']"
|
||||
>
|
||||
<p>
|
||||
A <em>router</em> implementation for JavaFX desktop applications. Define a singleton
|
||||
<code>SceneRouter</code>, add some routes to it, and add the router's provided view
|
||||
component to your scene graph. Now you can navigate to different "pages" programmatically
|
||||
or with user-interaction.
|
||||
</p>
|
||||
</SoftwareProjectTile>
|
||||
<SoftwareProjectTile
|
||||
name="Gymboard"
|
||||
url="https://git.andrewlalis.com/andrew/Gymboard"
|
||||
:tags="['Java', 'Spring', 'Vue', 'Typescript', 'Dlang']"
|
||||
>
|
||||
<p>
|
||||
Proof-of-concept for a local gym leaderboard web application, where users post videos of
|
||||
their lifts to climb to the top of various leaderboards. Built using a
|
||||
<em>modular-monolith</em> software architecture.
|
||||
</p>
|
||||
</SoftwareProjectTile>
|
||||
<SoftwareProjectTile
|
||||
name="Streams"
|
||||
url="https://github.com/andrewlalis/streams"
|
||||
:tags="['Dlang']"
|
||||
>
|
||||
<p>
|
||||
A library that defines useful stream primitive types and implementations for IO, which
|
||||
serves as a convenient wrapper around platform-specific reading and writing operations for
|
||||
files, sockets, and more.
|
||||
</p>
|
||||
</SoftwareProjectTile>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<h3>Active Web Projects</h3>
|
||||
<p>
|
||||
A desktop personal finance application that makes it easy to manage your accounts and
|
||||
transactions in a secure manner. Record transactions, track brokerage assets, and view
|
||||
graphs of your spending, total value, and more.
|
||||
While some may have been mentioned above, the following list enumerates all of my active,
|
||||
publicly available web projects and where to find them.
|
||||
</p>
|
||||
</SoftwareProjectTile>
|
||||
<SoftwareProjectTile
|
||||
name="Guerilla Gardening Map"
|
||||
url="https://guerilla-gardening.andrewlalis.com"
|
||||
:tags="['Dlang', 'Vue', 'Typescript']"
|
||||
>
|
||||
<p>
|
||||
A website for anonymously tracking and sharing information on
|
||||
<a href="https://en.wikipedia.org/wiki/Guerrilla_gardening" class="link-out"
|
||||
>Guerilla-Gardening</a
|
||||
>
|
||||
locations around the world.
|
||||
</p>
|
||||
</SoftwareProjectTile>
|
||||
<SoftwareProjectTile
|
||||
name="LiteList"
|
||||
url="https://litelist.andrewlalis.com"
|
||||
:tags="['Dlang', 'Vue', 'Typescript']"
|
||||
>
|
||||
<p>
|
||||
An extremely barebones web application to demonstrate the viability of my own HTTP server.
|
||||
It's just your average ToDo list app, with basic JWT-based authentication.
|
||||
</p>
|
||||
</SoftwareProjectTile>
|
||||
<SoftwareProjectTile
|
||||
name="Handy-Http"
|
||||
url="https://github.com/andrewlalis/handy-httpd"
|
||||
:tags="['Dlang']"
|
||||
>
|
||||
<p>
|
||||
An lightweight and flexible HTTP server implemented in the D programming language. Supports
|
||||
websockets, file serving, complex URL paths with path variables, and more!
|
||||
</p>
|
||||
</SoftwareProjectTile>
|
||||
<SoftwareProjectTile
|
||||
name="JavaFX Scene Router"
|
||||
url="https://git.andrewlalis.com/andrew/javafx-scene-router"
|
||||
:tags="['Java', 'JavaFX']"
|
||||
>
|
||||
<p>
|
||||
A <em>router</em> implementation for JavaFX desktop applications. Define a singleton
|
||||
<code>SceneRouter</code>, add some routes to it, and add the router's provided view
|
||||
component to your scene graph. Now you can navigate to different "pages" programmatically or
|
||||
with user-interaction.
|
||||
</p>
|
||||
</SoftwareProjectTile>
|
||||
<SoftwareProjectTile
|
||||
name="Gymboard"
|
||||
url="https://git.andrewlalis.com/andrew/Gymboard"
|
||||
:tags="['Java', 'Spring', 'Vue', 'Typescript', 'Dlang']"
|
||||
>
|
||||
<p>
|
||||
Proof-of-concept for a local gym leaderboard web application, where users post videos of
|
||||
their lifts to climb to the top of various leaderboards. Built using a
|
||||
<em>modular-monolith</em> software architecture.
|
||||
</p>
|
||||
</SoftwareProjectTile>
|
||||
<SoftwareProjectTile
|
||||
name="Streams"
|
||||
url="https://github.com/andrewlalis/streams"
|
||||
:tags="['Dlang']"
|
||||
>
|
||||
<p>
|
||||
A library that defines useful stream primitive types and implementations for IO, which
|
||||
serves as a convenient wrapper around platform-specific reading and writing operations for
|
||||
files, sockets, and more.
|
||||
</p>
|
||||
</SoftwareProjectTile>
|
||||
<ul>
|
||||
<li>
|
||||
<PlainLink link="https://litelist.andrewlalis.com" external />
|
||||
</li>
|
||||
<li>
|
||||
<PlainLink link="https://guerilla-gardening.andrewlalis.com" external />
|
||||
</li>
|
||||
<li>
|
||||
<PlainLink link="https://d-package-search.andrewlalis.com" external />
|
||||
</li>
|
||||
<li>
|
||||
<PlainLink link="https://mc-servers.andrewlalis.com" external />
|
||||
</li>
|
||||
</ul>
|
||||
</article>
|
||||
</main>
|
||||
</template>
|
||||
<style></style>
|
||||
|
|
Loading…
Reference in New Issue