Skip to content

Instantly share code, notes, and snippets.

@danielotieno
Last active February 1, 2023 10:16
Show Gist options
  • Save danielotieno/7be6649413c3876a40d44545b33cc534 to your computer and use it in GitHub Desktop.
Save danielotieno/7be6649413c3876a40d44545b33cc534 to your computer and use it in GitHub Desktop.
/*
This example requires some changes to your config:
```
// tailwind.config.js
const colors = require('tailwindcss/colors')
module.exports = {
// ...
theme: {
extend: {
colors: {
'warm-gray': colors.warmGray,
teal: colors.teal,
},
},
},
plugins: [
// ...
require('@tailwindcss/forms'),
],
}
```
*/
import { Fragment } from 'react'
import { Popover, Transition } from '@headlessui/react'
import { Bars3Icon, EnvelopeIcon, PhoneIcon, XMarkIcon } from '@heroicons/react/24/outline'
const navigation = [
{ name: 'Changelog', href: '#' },
{ name: 'About', href: '#' },
{ name: 'Partners', href: '#' },
{ name: 'News', href: '#' },
]
const offices = [
{ id: 1, city: 'Los Angeles', address: ['4556 Brendan Ferry', 'Los Angeles, CA 90210'] },
{ id: 2, city: 'New York', address: ['886 Walter Streets', 'New York, NY 12345'] },
{ id: 3, city: 'Toronto', address: ['7363 Cynthia Pass', 'Toronto, ON N3Y 4H8'] },
{ id: 4, city: 'London', address: ['114 Cobble Lane', 'London N1 2EF'] },
]
const footerNavigation = {
solutions: [
{ name: 'Marketing', href: '#' },
{ name: 'Analytics', href: '#' },
{ name: 'Commerce', href: '#' },
{ name: 'Insights', href: '#' },
],
support: [
{ name: 'Pricing', href: '#' },
{ name: 'Documentation', href: '#' },
{ name: 'Guides', href: '#' },
{ name: 'API Status', href: '#' },
],
company: [
{ name: 'About', href: '#' },
{ name: 'Blog', href: '#' },
{ name: 'Jobs', href: '#' },
{ name: 'Press', href: '#' },
{ name: 'Partners', href: '#' },
],
legal: [
{ name: 'Claim', href: '#' },
{ name: 'Privacy', href: '#' },
{ name: 'Terms', href: '#' },
],
social: [
{
name: 'Facebook',
href: '#',
icon: (props) => (
<svg fill="currentColor" viewBox="0 0 24 24" {...props}>
<path
fillRule="evenodd"
d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z"
clipRule="evenodd"
/>
</svg>
),
},
{
name: 'Instagram',
href: '#',
icon: (props) => (
<svg fill="currentColor" viewBox="0 0 24 24" {...props}>
<path
fillRule="evenodd"
d="M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 015.45 2.525c.636-.247 1.363-.416 2.427-.465C8.901 2.013 9.256 2 11.685 2h.63zm-.081 1.802h-.468c-2.456 0-2.784.011-3.807.058-.975.045-1.504.207-1.857.344-.467.182-.8.398-1.15.748-.35.35-.566.683-.748 1.15-.137.353-.3.882-.344 1.857-.047 1.023-.058 1.351-.058 3.807v.468c0 2.456.011 2.784.058 3.807.045.975.207 1.504.344 1.857.182.466.399.8.748 1.15.35.35.683.566 1.15.748.353.137.882.3 1.857.344 1.054.048 1.37.058 4.041.058h.08c2.597 0 2.917-.01 3.96-.058.976-.045 1.505-.207 1.858-.344.466-.182.8-.398 1.15-.748.35-.35.566-.683.748-1.15.137-.353.3-.882.344-1.857.048-1.055.058-1.37.058-4.041v-.08c0-2.597-.01-2.917-.058-3.96-.045-.976-.207-1.505-.344-1.858a3.097 3.097 0 00-.748-1.15 3.098 3.098 0 00-1.15-.748c-.353-.137-.882-.3-1.857-.344-1.023-.047-1.351-.058-3.807-.058zM12 6.865a5.135 5.135 0 110 10.27 5.135 5.135 0 010-10.27zm0 1.802a3.333 3.333 0 100 6.666 3.333 3.333 0 000-6.666zm5.338-3.205a1.2 1.2 0 110 2.4 1.2 1.2 0 010-2.4z"
clipRule="evenodd"
/>
</svg>
),
},
{
name: 'Twitter',
href: '#',
icon: (props) => (
<svg fill="currentColor" viewBox="0 0 24 24" {...props}>
<path d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84" />
</svg>
),
},
{
name: 'GitHub',
href: '#',
icon: (props) => (
<svg fill="currentColor" viewBox="0 0 24 24" {...props}>
<path
fillRule="evenodd"
d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
clipRule="evenodd"
/>
</svg>
),
},
{
name: 'Dribbble',
href: '#',
icon: (props) => (
<svg fill="currentColor" viewBox="0 0 24 24" {...props}>
<path
fillRule="evenodd"
d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10c5.51 0 10-4.48 10-10S17.51 2 12 2zm6.605 4.61a8.502 8.502 0 011.93 5.314c-.281-.054-3.101-.629-5.943-.271-.065-.141-.12-.293-.184-.445a25.416 25.416 0 00-.564-1.236c3.145-1.28 4.577-3.124 4.761-3.362zM12 3.475c2.17 0 4.154.813 5.662 2.148-.152.216-1.443 1.941-4.48 3.08-1.399-2.57-2.95-4.675-3.189-5A8.687 8.687 0 0112 3.475zm-3.633.803a53.896 53.896 0 013.167 4.935c-3.992 1.063-7.517 1.04-7.896 1.04a8.581 8.581 0 014.729-5.975zM3.453 12.01v-.26c.37.01 4.512.065 8.775-1.215.25.477.477.965.694 1.453-.109.033-.228.065-.336.098-4.404 1.42-6.747 5.303-6.942 5.629a8.522 8.522 0 01-2.19-5.705zM12 20.547a8.482 8.482 0 01-5.239-1.8c.152-.315 1.888-3.656 6.703-5.337.022-.01.033-.01.054-.022a35.318 35.318 0 011.823 6.475 8.4 8.4 0 01-3.341.684zm4.761-1.465c-.086-.52-.542-3.015-1.659-6.084 2.679-.423 5.022.271 5.314.369a8.468 8.468 0 01-3.655 5.715z"
clipRule="evenodd"
/>
</svg>
),
},
],
}
export default function Example() {
return (
<div className="bg-white">
<Popover as="header" className="relative">
<div className="bg-warm-gray-50">
<nav
className="relative mx-auto flex max-w-7xl items-center justify-between px-6 pt-6 xl:px-8"
aria-label="Global"
>
<div className="flex flex-1 items-center">
<div className="flex w-full items-center justify-between lg:w-auto">
<a href="#">
<span className="sr-only">Your Company</span>
<img
className="h-8 w-auto sm:h-10"
src="https://tailwindui.com/img/logos/mark.svg?color=teal&shade=500"
alt=""
/>
</a>
<div className="-mr-2 flex items-center lg:hidden">
<Popover.Button className="focus-ring-inset inline-flex items-center justify-center rounded-md bg-warm-gray-50 p-2 text-warm-gray-400 hover:bg-warm-gray-100 focus:outline-none focus:ring-2 focus:ring-teal-500">
<span className="sr-only">Open main menu</span>
<Bars3Icon className="h-6 w-6" aria-hidden="true" />
</Popover.Button>
</div>
</div>
<div className="hidden space-x-10 lg:ml-10 lg:flex">
{navigation.map((item) => (
<a
key={item.name}
href={item.href}
className="text-base font-medium text-warm-gray-500 hover:text-warm-gray-900"
>
{item.name}
</a>
))}
</div>
</div>
<div className="hidden lg:flex lg:items-center lg:space-x-6">
<a
href="#"
className="rounded-md border border-transparent bg-warm-gray-100 py-2 px-6 text-base font-medium text-warm-gray-900 hover:bg-warm-gray-200"
>
Login
</a>
</div>
</nav>
</div>
<Transition
as={Fragment}
enter="duration-150 ease-out"
enterFrom="opacity-0 scale-95"
enterTo="opacity-100 scale-100"
leave="duration-100 ease-in"
leaveFrom="opacity-100 scale-100"
leaveTo="opacity-0 scale-95"
>
<Popover.Panel focus className="absolute inset-x-0 top-0 z-30 origin-top transform p-2 transition lg:hidden">
<div className="overflow-hidden rounded-lg bg-white shadow-lg ring-1 ring-black ring-opacity-5">
<div className="flex items-center justify-between px-5 pt-4">
<div>
<img
className="h-8 w-auto"
src="https://tailwindui.com/img/logos/mark.svg?color=teal&shade=500"
alt=""
/>
</div>
<div className="-mr-2">
<Popover.Button className="inline-flex items-center justify-center rounded-md bg-white p-2 text-warm-gray-400 hover:bg-warm-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-teal-500">
<span className="sr-only">Close menu</span>
<XMarkIcon className="h-6 w-6" aria-hidden="true" />
</Popover.Button>
</div>
</div>
<div className="pt-5 pb-6">
<div className="space-y-1 px-2">
{navigation.map((item) => (
<a
key={item.name}
href={item.href}
className="block rounded-md px-3 py-2 text-base font-medium text-warm-gray-900 hover:bg-warm-gray-50"
>
{item.name}
</a>
))}
</div>
<div className="mt-6 px-5">
<a
href="#"
className="block w-full rounded-md border border-transparent bg-teal-500 py-2 px-4 text-center font-medium text-white shadow hover:bg-teal-600"
>
Login
</a>
</div>
</div>
</div>
</Popover.Panel>
</Transition>
</Popover>
<main className="overflow-hidden">
{/* Header */}
<div className="bg-warm-gray-50">
<div className="py-24 lg:py-32">
<div className="relative z-10 mx-auto max-w-7xl pl-4 pr-8 sm:px-6 lg:px-8">
<h1 className="text-4xl font-bold tracking-tight text-warm-gray-900 sm:text-5xl lg:text-6xl">
Get in touch
</h1>
<p className="mt-6 max-w-3xl text-xl text-warm-gray-500">
Vel nunc non ut montes, viverra tempor. Proin lectus nibh phasellus morbi non morbi. In elementum urna
ut volutpat. Sagittis et vel et fermentum amet consequat.
</p>
</div>
</div>
</div>
{/* Contact section */}
<section className="relative bg-white" aria-labelledby="contact-heading">
<div className="absolute h-1/2 w-full bg-warm-gray-50" aria-hidden="true" />
{/* Decorative dot pattern */}
<div className="relative mx-auto max-w-7xl px-6 lg:px-8">
<svg
className="absolute top-0 right-0 z-0 -translate-y-16 translate-x-1/2 transform sm:translate-x-1/4 md:-translate-y-24 lg:-translate-y-72"
width={404}
height={384}
fill="none"
viewBox="0 0 404 384"
aria-hidden="true"
>
<defs>
<pattern
id="64e643ad-2176-4f86-b3d7-f2c5da3b6a6d"
x={0}
y={0}
width={20}
height={20}
patternUnits="userSpaceOnUse"
>
<rect x={0} y={0} width={4} height={4} className="text-warm-gray-200" fill="currentColor" />
</pattern>
</defs>
<rect width={404} height={384} fill="url(#64e643ad-2176-4f86-b3d7-f2c5da3b6a6d)" />
</svg>
</div>
<div className="mx-auto max-w-7xl px-6 lg:px-8">
<div className="relative bg-white shadow-xl">
<h2 id="contact-heading" className="sr-only">
Contact us
</h2>
<div className="grid grid-cols-1 lg:grid-cols-3">
{/* Contact information */}
<div className="relative overflow-hidden bg-gradient-to-b from-teal-500 to-teal-600 py-10 px-6 sm:px-10 xl:p-12">
{/* Decorative angle backgrounds */}
<div className="pointer-events-none absolute inset-0 sm:hidden" aria-hidden="true">
<svg
className="absolute inset-0 h-full w-full"
width={343}
height={388}
viewBox="0 0 343 388"
fill="none"
preserveAspectRatio="xMidYMid slice"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M-99 461.107L608.107-246l707.103 707.107-707.103 707.103L-99 461.107z"
fill="url(#linear1)"
fillOpacity=".1"
/>
<defs>
<linearGradient
id="linear1"
x1="254.553"
y1="107.554"
x2="961.66"
y2="814.66"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#fff" />
<stop offset={1} stopColor="#fff" stopOpacity={0} />
</linearGradient>
</defs>
</svg>
</div>
<div
className="pointer-events-none absolute top-0 right-0 bottom-0 hidden w-1/2 sm:block lg:hidden"
aria-hidden="true"
>
<svg
className="absolute inset-0 h-full w-full"
width={359}
height={339}
viewBox="0 0 359 339"
fill="none"
preserveAspectRatio="xMidYMid slice"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M-161 382.107L546.107-325l707.103 707.107-707.103 707.103L-161 382.107z"
fill="url(#linear2)"
fillOpacity=".1"
/>
<defs>
<linearGradient
id="linear2"
x1="192.553"
y1="28.553"
x2="899.66"
y2="735.66"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#fff" />
<stop offset={1} stopColor="#fff" stopOpacity={0} />
</linearGradient>
</defs>
</svg>
</div>
<div
className="pointer-events-none absolute top-0 right-0 bottom-0 hidden w-1/2 lg:block"
aria-hidden="true"
>
<svg
className="absolute inset-0 h-full w-full"
width={160}
height={678}
viewBox="0 0 160 678"
fill="none"
preserveAspectRatio="xMidYMid slice"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M-161 679.107L546.107-28l707.103 707.107-707.103 707.103L-161 679.107z"
fill="url(#linear3)"
fillOpacity=".1"
/>
<defs>
<linearGradient
id="linear3"
x1="192.553"
y1="325.553"
x2="899.66"
y2="1032.66"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#fff" />
<stop offset={1} stopColor="#fff" stopOpacity={0} />
</linearGradient>
</defs>
</svg>
</div>
<h3 className="text-lg font-medium text-white">Contact information</h3>
<p className="mt-6 max-w-3xl text-base text-teal-50">
Nullam risus blandit ac aliquam justo ipsum. Quam mauris volutpat massa dictumst amet. Sapien tortor
lacus arcu.
</p>
<dl className="mt-8 space-y-6">
<dt>
<span className="sr-only">Phone number</span>
</dt>
<dd className="flex text-base text-teal-50">
<PhoneIcon className="h-6 w-6 flex-shrink-0 text-teal-200" aria-hidden="true" />
<span className="ml-3">+1 (555) 123-4567</span>
</dd>
<dt>
<span className="sr-only">Email</span>
</dt>
<dd className="flex text-base text-teal-50">
<EnvelopeIcon className="h-6 w-6 flex-shrink-0 text-teal-200" aria-hidden="true" />
<span className="ml-3">support@workcation.com</span>
</dd>
</dl>
<ul role="list" className="mt-8 flex space-x-12">
<li>
<a className="text-teal-200 hover:text-teal-100" href="#">
<span className="sr-only">Facebook</span>
<svg className="h-7 w-7" aria-hidden="true" fill="currentColor" viewBox="0 0 24 24">
<path
fillRule="evenodd"
d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z"
clipRule="evenodd"
/>
</svg>
</a>
</li>
<li>
<a className="text-teal-200 hover:text-teal-100" href="#">
<span className="sr-only">GitHub</span>
<svg className="h-7 w-7" aria-hidden="true" fill="currentColor" viewBox="0 0 24 24">
<path
fillRule="evenodd"
d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
clipRule="evenodd"
/>
</svg>
</a>
</li>
<li>
<a className="text-teal-200 hover:text-teal-100" href="#">
<span className="sr-only">Twitter</span>
<svg className="h-7 w-7" aria-hidden="true" fill="currentColor" viewBox="0 0 24 24">
<path d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84" />
</svg>
</a>
</li>
</ul>
</div>
{/* Contact form */}
<div className="py-10 px-6 sm:px-10 lg:col-span-2 xl:p-12">
<h3 className="text-lg font-medium text-warm-gray-900">Send us a message</h3>
<form action="#" method="POST" className="mt-6 grid grid-cols-1 gap-y-6 sm:grid-cols-2 sm:gap-x-8">
<div>
<label htmlFor="first-name" className="block text-sm font-medium text-warm-gray-900">
First name
</label>
<div className="mt-1">
<input
type="text"
name="first-name"
id="first-name"
autoComplete="given-name"
className="block w-full rounded-md border-warm-gray-300 py-3 px-4 text-warm-gray-900 shadow-sm focus:border-teal-500 focus:ring-teal-500"
/>
</div>
</div>
<div>
<label htmlFor="last-name" className="block text-sm font-medium text-warm-gray-900">
Last name
</label>
<div className="mt-1">
<input
type="text"
name="last-name"
id="last-name"
autoComplete="family-name"
className="block w-full rounded-md border-warm-gray-300 py-3 px-4 text-warm-gray-900 shadow-sm focus:border-teal-500 focus:ring-teal-500"
/>
</div>
</div>
<div>
<label htmlFor="email" className="block text-sm font-medium text-warm-gray-900">
Email
</label>
<div className="mt-1">
<input
id="email"
name="email"
type="email"
autoComplete="email"
className="block w-full rounded-md border-warm-gray-300 py-3 px-4 text-warm-gray-900 shadow-sm focus:border-teal-500 focus:ring-teal-500"
/>
</div>
</div>
<div>
<div className="flex justify-between">
<label htmlFor="phone" className="block text-sm font-medium text-warm-gray-900">
Phone
</label>
<span id="phone-optional" className="text-sm text-warm-gray-500">
Optional
</span>
</div>
<div className="mt-1">
<input
type="text"
name="phone"
id="phone"
autoComplete="tel"
className="block w-full rounded-md border-warm-gray-300 py-3 px-4 text-warm-gray-900 shadow-sm focus:border-teal-500 focus:ring-teal-500"
aria-describedby="phone-optional"
/>
</div>
</div>
<div className="sm:col-span-2">
<label htmlFor="subject" className="block text-sm font-medium text-warm-gray-900">
Subject
</label>
<div className="mt-1">
<input
type="text"
name="subject"
id="subject"
className="block w-full rounded-md border-warm-gray-300 py-3 px-4 text-warm-gray-900 shadow-sm focus:border-teal-500 focus:ring-teal-500"
/>
</div>
</div>
<div className="sm:col-span-2">
<div className="flex justify-between">
<label htmlFor="message" className="block text-sm font-medium text-warm-gray-900">
Message
</label>
<span id="message-max" className="text-sm text-warm-gray-500">
Max. 500 characters
</span>
</div>
<div className="mt-1">
<textarea
id="message"
name="message"
rows={4}
className="block w-full rounded-md border-warm-gray-300 py-3 px-4 text-warm-gray-900 shadow-sm focus:border-teal-500 focus:ring-teal-500"
aria-describedby="message-max"
defaultValue={''}
/>
</div>
</div>
<div className="sm:col-span-2 sm:flex sm:justify-end">
<button
type="submit"
className="mt-2 inline-flex w-full items-center justify-center rounded-md border border-transparent bg-teal-500 px-6 py-3 text-base font-medium text-white shadow-sm hover:bg-teal-600 focus:outline-none focus:ring-2 focus:ring-teal-500 focus:ring-offset-2 sm:w-auto"
>
Submit
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</section>
{/* Contact grid */}
<section aria-labelledby="offices-heading">
<div className="mx-auto max-w-7xl py-24 px-6 sm:py-32 lg:px-8">
<h2 id="offices-heading" className="text-3xl font-bold tracking-tight text-warm-gray-900">
Our offices
</h2>
<p className="mt-6 max-w-3xl text-lg text-warm-gray-500">
Varius facilisi mauris sed sit. Non sed et duis dui leo, vulputate id malesuada non. Cras aliquet purus
dui laoreet diam sed lacus, fames.
</p>
<div className="mt-10 grid grid-cols-1 gap-10 sm:grid-cols-2 lg:grid-cols-4">
{offices.map((office) => (
<div key={office.id}>
<h3 className="text-lg font-medium text-warm-gray-900">{office.city}</h3>
<p className="mt-2 text-base text-warm-gray-500">
{office.address.map((line) => (
<span key={line} className="block">
{line}
</span>
))}
</p>
</div>
))}
</div>
</div>
</section>
</main>
<footer className="bg-warm-gray-900" aria-labelledby="footer-heading">
<h2 id="footer-heading" className="sr-only">
Footer
</h2>
<div className="mx-auto max-w-7xl py-12 px-6 lg:py-16 lg:px-8">
<div className="xl:grid xl:grid-cols-3 xl:gap-8">
<div className="space-y-8 xl:col-span-1">
<img
className="h-10"
src="https://tailwindui.com/img/logos/mark.svg?color=warmGray&shade=400"
alt="Company name"
/>
<p className="text-base text-warm-gray-400">
Making the world a better place through constructing elegant hierarchies.
</p>
<div className="flex space-x-6">
{footerNavigation.social.map((item) => (
<a key={item.name} href={item.href} className="text-warm-gray-400 hover:text-warm-gray-300">
<span className="sr-only">{item.name}</span>
<item.icon className="h-6 w-6" aria-hidden="true" />
</a>
))}
</div>
</div>
<div className="mt-12 grid grid-cols-2 gap-8 xl:col-span-2 xl:mt-0">
<div className="md:grid md:grid-cols-2 md:gap-8">
<div>
<h3 className="text-base font-medium text-warm-gray-200">Solutions</h3>
<ul role="list" className="mt-4 space-y-4">
{footerNavigation.solutions.map((item) => (
<li key={item.name}>
<a href={item.href} className="text-base text-warm-gray-400 hover:text-warm-gray-300">
{item.name}
</a>
</li>
))}
</ul>
</div>
<div className="mt-12 md:mt-0">
<h3 className="text-base font-medium text-warm-gray-200">Support</h3>
<ul role="list" className="mt-4 space-y-4">
{footerNavigation.support.map((item) => (
<li key={item.name}>
<a href={item.href} className="text-base text-warm-gray-400 hover:text-warm-gray-300">
{item.name}
</a>
</li>
))}
</ul>
</div>
</div>
<div className="md:grid md:grid-cols-2 md:gap-8">
<div>
<h3 className="text-base font-medium text-warm-gray-200">Company</h3>
<ul role="list" className="mt-4 space-y-4">
{footerNavigation.company.map((item) => (
<li key={item.name}>
<a href={item.href} className="text-base text-warm-gray-400 hover:text-warm-gray-300">
{item.name}
</a>
</li>
))}
</ul>
</div>
<div className="mt-12 md:mt-0">
<h3 className="text-base font-medium text-warm-gray-200">Legal</h3>
<ul role="list" className="mt-4 space-y-4">
{footerNavigation.legal.map((item) => (
<li key={item.name}>
<a href={item.href} className="text-base text-warm-gray-400 hover:text-warm-gray-300">
{item.name}
</a>
</li>
))}
</ul>
</div>
</div>
</div>
</div>
<div className="mt-12 border-t border-warm-gray-700 pt-8">
<p className="text-base text-warm-gray-400 xl:text-center">
&copy; 2020 Your Company, Inc. All rights reserved.
</p>
</div>
</div>
</footer>
</div>
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment