contact.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <template><NuxtLayout name="default">
  2. <template #headline>{{ headline }}</template>
  3. <template #tagline>{{ tagline }}</template>
  4. <div class="container mx-auto max-w-screen-lg sm:px-12 px-2 mb-12 prose">
  5. <article class="body grid sm:grid-cols-2 grid-cols-1 gap-x-12 gap-y-0">
  6. <section class="links">
  7. <p>You can find me on these web sites…</p>
  8. <div class="text-center ml-2">
  9. <a href="https://blog.morpheu5.net"><client-only><fa-icon icon="fa-solid fa-blog" alt="MorphLog" style="color: black" aria-hidden="true" /></client-only></a>
  10. <a href="https://orcid.org/0000-0001-8665-6147"><client-only><fa-icon icon="fa-brands fa-orcid" alt="ORCID" style="color: #a6cf39" aria-hidden="true" /></client-only></a>
  11. <a href="https://www.linkedin.com/in/andreafranceschini"><client-only><fa-icon icon="fa-brands fa-linkedin" alt="LinkedIn" style="color: #0077b5" aria-hidden="true" /></client-only></a>
  12. <a href="https://github.com/Morpheu5"><client-only><fa-icon icon="fa-brands fa-github" alt="GitHub" style="color: black" aria-hidden="true" /></client-only></a>
  13. <a href="https://apps.apple.com/it/developer/andrea-franceschini/id454062630"><client-only><fa-icon icon="fa-brands fa-app-store-ios" alt="App Store" style="color: #2296f3" aria-hidden="true" /></client-only></a>
  14. <a href="http://play.google.com/store/apps/developer?id=Andrea+Franceschini&amp;hl=it_IT"><client-only><fa-icon icon="fa-brands fa-google-play" alt="Google Play" style="color: #3BCCFF" aria-hidden="true" /></client-only></a>
  15. </div>
  16. <div class="mt-4 text-center">
  17. <a href="https://twitter.com/morpheu5"><client-only><fa-icon icon="fa-brands fa-twitter" alt="Twitter" style="color: #55acee" aria-hidden="true" /></client-only></a>
  18. <a href="https://instagram.com/ilmoppe"><client-only><fa-icon icon="fa-brands fa-instagram" alt="Instagram" style="color: #E1306C" aria-hidden="true" /></client-only></a>
  19. <a href="https://www.flickr.com/photos/morpheu5"><client-only><fa-icon icon="fa-brands fa-flickr" alt="Flickr" style="color: #0062DD" aria-hidden="true" /></client-only></a>
  20. <a href="https://soundcloud.com/ilmoppe"><client-only><fa-icon icon="fa-brands fa-soundcloud" alt="SoundClound" style="color: #FE5000" aria-hidden="true" /></client-only></a>
  21. <a href="https://www.youtube.com/user/therealmorpheu5"><client-only><fa-icon icon="fa-brands fa-youtube" alt="YouTube" style="color: #FF0000" aria-hidden="true" /></client-only></a>
  22. <a href="https://deviantart.com/morpheu5"><client-only><fa-icon icon="fa-brands fa-deviantart" alt="DeviantArt" style="color: #4DC47D" aria-hidden="true" /></client-only></a>
  23. </div>
  24. </section>
  25. <section class="email">
  26. <p>… or drop me an email at<br /><a :href="`mailto:${emailUser}\u0040${emailDomain}`"><client-only><fa-icon icon="fa fa-envelope" alt="Email" aria-hidden="true" /></client-only>&ensp;{{emailUser}}{{'\u0040'}}{{emailDomain}}</a></p>
  27. </section>
  28. </article>
  29. </div>
  30. </NuxtLayout></template>
  31. <style lang="pcss" scoped>
  32. .links a {
  33. @apply text-4xl;
  34. @apply mr-6;
  35. @media screen(sm) {
  36. @apply text-5xl;
  37. }
  38. }
  39. </style>
  40. <script lang="ts" setup>
  41. definePageMeta({
  42. layout: false
  43. });
  44. const headline = "Contact";
  45. const tagline = "";
  46. const title = `${headline} ••• Andrea Franceschini, PhD`;
  47. const keywords = "contact, music, learning, tabletop, research, the open university, university of cambridge, isaac physics, reactable";
  48. const description = "Everything you need to know to get in touch with me.";
  49. useState('pageClasses', () => ['contact', 'page']);
  50. useHead({
  51. title,
  52. meta: [
  53. { property: 'keywords', content: keywords },
  54. { property: 'DC.Title', content: title },
  55. { property: 'twitter:title', content: title },
  56. { property: 'og:title', content: title },
  57. { property: 'description', content: description },
  58. { property: 'DC.Description', content: description },
  59. { property: 'twitter:description', content: description },
  60. { property: 'og:description', content: description },
  61. ]
  62. });
  63. const emailUser = computed(() => '\u0061\u006e\u0064\u0072\u0065\u0061\u002e\u0066\u0072\u0061\u006e\u0063\u0065\u0073\u0063\u0068\u0069\u006e\u0069');
  64. const emailDomain = computed(() => '\u0067\u006d\u0061\u0069\u006c\u002e\u0063\u006f\u006d');
  65. </script>