From 9a5e796bb43ed93629b76e2710319edeefeed9b0 Mon Sep 17 00:00:00 2001 From: sudoer777 Date: Fri, 9 Jun 2023 14:07:08 -0500 Subject: [PATCH] Add basic footer --- package.json | 1 + pnpm-lock.yaml | 138 ++++++++++++++++++++- src/components/ButtonSecondary.astro | 5 +- src/components/content/global/Footer.astro | 11 ++ src/components/content/global/Navbar.astro | 15 ++- src/components/content/index/Hero.astro | 4 +- src/components/content/index/Projects.mdx | 2 +- src/components/content/index/Socials.astro | 8 +- src/pages/index.astro | 14 ++- 9 files changed, 181 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 588bcf6..87e57e4 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ }, "devDependencies": { "@typescript-eslint/parser": "^5.59.8", + "astro-icon": "^0.8.0", "autoprefixer": "^10.4.14", "cssnano": "^6.0.1", "eslint": "^8.42.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dc9e2ba..7d71ada 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,6 +49,9 @@ devDependencies: '@typescript-eslint/parser': specifier: ^5.59.8 version: 5.59.8(eslint@8.42.0)(typescript@5.1.3) + astro-icon: + specifier: ^0.8.0 + version: 0.8.0 autoprefixer: specifier: ^10.4.14 version: 10.4.14(postcss@8.4.24) @@ -1599,6 +1602,14 @@ packages: - supports-color dev: true + /astro-icon@0.8.0: + resolution: {integrity: sha512-sCzhZcl46BIyLJVg89hq5J4uQABn2psmGvK4cUaxib+M/kBI3TrPy1w3g2O5h/WcrTHLVN9LyxjgkD4lEJJFpw==} + dependencies: + node-fetch: 3.3.1 + resolve-pkg: 2.0.0 + svgo: 2.8.0 + dev: true + /astro-imagetools@0.8.1(astro@2.5.7): resolution: {integrity: sha512-2E737IBqzuwkuK4FMYB9UmE1xmQWghn1HOHNMERrzZmGsKpGSAdQGo7nSnYwpy8amF+Do8sUx9wtCe2+6T4k+A==} engines: {node: ^14.15.0 || >=16.0.0} @@ -2099,6 +2110,16 @@ packages: postcss: 8.4.24 dev: true + /css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: true + /css-select@5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} dependencies: @@ -2109,6 +2130,14 @@ packages: nth-check: 2.1.1 dev: true + /css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: true + /css-tree@2.2.1: resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} @@ -2197,6 +2226,13 @@ packages: postcss: 8.4.24 dev: true + /csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + dev: true + /csso@5.0.5: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} @@ -2208,6 +2244,11 @@ packages: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true + /data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + dev: true + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -2368,6 +2409,14 @@ packages: esutils: 2.0.3 dev: true + /dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: true + /dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: @@ -2384,6 +2433,13 @@ packages: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: true + /domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + /domhandler@5.0.3: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} @@ -2391,6 +2447,14 @@ packages: domelementtype: 2.3.0 dev: true + /domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: true + /domutils@3.1.0: resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} dependencies: @@ -2431,6 +2495,10 @@ packages: once: 1.4.0 dev: false + /entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true + /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -2873,6 +2941,14 @@ packages: format: 0.2.2 dev: false + /fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: true + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -2966,6 +3042,13 @@ packages: engines: {node: '>=0.4.x'} dev: false + /formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: true + /fraction.js@4.2.0: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} @@ -4052,6 +4135,10 @@ packages: '@types/mdast': 3.0.11 dev: false + /mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: true + /mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} dev: true @@ -4523,12 +4610,26 @@ packages: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} dev: false + /node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: true + /node-emoji@1.11.0: resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} dependencies: lodash: 4.17.21 dev: false + /node-fetch@3.3.1: + resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: true + /node-releases@2.0.12: resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} @@ -5592,6 +5693,18 @@ packages: engines: {node: '>=4'} dev: true + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve-pkg@2.0.0: + resolution: {integrity: sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + /resolve@1.22.2: resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true @@ -5838,7 +5951,6 @@ packages: /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: false /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} @@ -5853,6 +5965,11 @@ packages: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: false + /stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: true + /stdin-discarder@0.1.0: resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6047,6 +6164,20 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + /svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + dev: true + /svgo@3.0.2: resolution: {integrity: sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==} engines: {node: '>=14.0.0'} @@ -6569,6 +6700,11 @@ packages: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} dev: false + /web-streams-polyfill@3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: true + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: diff --git a/src/components/ButtonSecondary.astro b/src/components/ButtonSecondary.astro index 78c10e3..a228cd5 100644 --- a/src/components/ButtonSecondary.astro +++ b/src/components/ButtonSecondary.astro @@ -1,9 +1,11 @@ --- +import { Icon } from 'astro-icon' export interface Props { link: string + icon?: string external?: boolean } -const { link, external } = Astro.props +const { link, icon, external } = Astro.props const buttonPaddingX = 'px-[.75rem]' const buttonPaddingY = 'py-[.5rem]' @@ -15,5 +17,6 @@ const buttonPaddingY = 'py-[.5rem]' rel={external ? 'noopener noreferrer' : ''} class={`rounded hover:bg-background-hover hover:text-font-hover focus-visible:bg-background-hover focus-visible:text-font-hover focus-visible:outline-none ${buttonPaddingX} ${buttonPaddingY}`} > + {icon && } diff --git a/src/components/content/global/Footer.astro b/src/components/content/global/Footer.astro index e69de29..502179d 100644 --- a/src/components/content/global/Footer.astro +++ b/src/components/content/global/Footer.astro @@ -0,0 +1,11 @@ +--- +const paddingX = 'px-[.75rem]' +const paddingY = 'py-[.5rem]' +--- + + diff --git a/src/components/content/global/Navbar.astro b/src/components/content/global/Navbar.astro index 18f6e7a..dade66d 100644 --- a/src/components/content/global/Navbar.astro +++ b/src/components/content/global/Navbar.astro @@ -16,19 +16,24 @@ const links: NavItem[] = [ ] const paddingX = 'px-[.75rem]' -const paddingY = 'py-[.5rem]' +const paddingY = 'py-[.25rem]' const spacing = 'space-x-[.25rem]' + +const mainButtonPaddingX = 'px-[.75rem]' +const mainButtonPaddingY = 'py-[.5rem]' ---
-
    - {homeText} { @@ -38,6 +43,6 @@ const spacing = 'space-x-[.25rem]' )) } -
+
diff --git a/src/components/content/index/Hero.astro b/src/components/content/index/Hero.astro index dfd1eb2..83e2299 100644 --- a/src/components/content/index/Hero.astro +++ b/src/components/content/index/Hero.astro @@ -15,7 +15,7 @@ const imageAlt = 'black and white portrait of myself' ---
-
+

{text[0]}

- +
diff --git a/src/components/content/index/Projects.mdx b/src/components/content/index/Projects.mdx index f8ac5dd..387f7e1 100644 --- a/src/components/content/index/Projects.mdx +++ b/src/components/content/index/Projects.mdx @@ -43,4 +43,4 @@ I also have other projects viewable on multiple git platforms, most of which cam from scratch. -Some other projects and activities I have worked on include Med Check [MetroHacks 2022], zzz [UTD SGDA 2023 Spring Jam], zzz [UTD SGDA 2022 Thanksgiving Jam], ZipVersionControl [FLL #1790, yrs 2017-2019], FIRST Tech Challenge roboics [2021-2022], and FIRST Lego League robotics [2013-2019, #1790]. +Some other projects and activities I have worked on include Med Check [MetroHacks 2022], zzz [UTD SGDA 2023 Spring Jam], zzz [UTD SGDA 2022 Thanksgiving Jam], ZipVersionControl [FLL #1790, yrs 2017-2019], FIRST Tech Challenge robotics [2021-2022], and FIRST Lego League robotics [2013-2019, #1790]. diff --git a/src/components/content/index/Socials.astro b/src/components/content/index/Socials.astro index 8fccc05..2371642 100644 --- a/src/components/content/index/Socials.astro +++ b/src/components/content/index/Socials.astro @@ -18,6 +18,7 @@ const socials: Social[] = [ name: 'Email', profile: 'contact@ethanreece.com', url: 'mailto:contact@ethanreece.com', + icon: 'heroicons:envelope-solid', extra: [ { name: 'PGP key', @@ -40,6 +41,11 @@ const socials: Social[] = [ profile: 'sudoer777', url: 'https://devpost.com/sudoer777', }, + { + name: 'GivePulse (UTD)', + profile: '', + url: '', + }, { name: 'LinkedIn', profile: '-ethanreece-', @@ -52,7 +58,7 @@ const socials: Social[] = [ { socials.map((s) => (
- + {s.name}: {s.profile} diff --git a/src/pages/index.astro b/src/pages/index.astro index cbc9128..38da327 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -13,10 +13,12 @@ const description = '' --- - - - - - - +
+ + + + + + +