Add tailwind. Add stripped down hero component.

This commit is contained in:
jahooma 2021-12-01 13:58:00 -06:00
parent d49f785cee
commit 844a908118
10 changed files with 1695 additions and 106 deletions

195
web/components/hero.tsx Normal file
View File

@ -0,0 +1,195 @@
import { Fragment } from 'react'
import { Popover, Transition } from '@headlessui/react'
import { MenuIcon, XIcon } from '@heroicons/react/outline'
const navigation = [
{ name: 'Product', href: '#' },
{ name: 'Features', href: '#' },
{ name: 'Marketplace', href: '#' },
{ name: 'Company', href: '#' },
]
export const Hero = () => {
return (
<div className="relative overflow-hidden h-screen bg-gray-900">
<Popover as="header" className="relative">
<div className="pt-6">
<nav
className="relative max-w-7xl mx-auto flex items-center justify-between px-4 sm:px-6"
aria-label="Global"
>
<div className="flex items-center flex-1">
<div className="flex items-center justify-between w-full md:w-auto">
<a href="#">
<span className="sr-only">Workflow</span>
<img
className="h-8 w-auto sm:h-10"
src="/logo.png"
alt=""
/>
</a>
<div className="-mr-2 flex items-center md:hidden">
<Popover.Button className="bg-gray-900 rounded-md p-2 inline-flex items-center justify-center text-gray-400 hover:bg-gray-800 focus:outline-none focus:ring-2 focus-ring-inset focus:ring-white">
<span className="sr-only">Open main menu</span>
<MenuIcon className="h-6 w-6" aria-hidden="true" />
</Popover.Button>
</div>
</div>
{/* <div className="hidden space-x-8 md:flex md:ml-10">
{navigation.map((item) => (
<a key={item.name} href={item.href} className="text-base font-medium text-white hover:text-gray-300">
{item.name}
</a>
))}
</div> */}
</div>
{/* <div className="hidden md:flex md:items-center md:space-x-6">
<a href="#" className="text-base font-medium text-white hover:text-gray-300">
Log in
</a>
<a
href="#"
className="inline-flex items-center px-4 py-2 border border-transparent text-base font-medium rounded-md text-white bg-gray-600 hover:bg-gray-700"
>
Start free trial
</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 z-10 top-0 inset-x-0 p-2 transition transform origin-top md:hidden">
<div className="rounded-lg shadow-md bg-white ring-1 ring-black ring-opacity-5 overflow-hidden">
<div className="px-5 pt-4 flex items-center justify-between">
<div>
<img
className="h-8 w-auto"
src="https://tailwindui.com/img/logos/workflow-mark-indigo-600.svg"
alt=""
/>
</div>
<div className="-mr-2">
<Popover.Button className="bg-white rounded-md p-2 inline-flex items-center justify-center text-gray-400 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-600">
<span className="sr-only">Close menu</span>
<XIcon className="h-6 w-6" aria-hidden="true" />
</Popover.Button>
</div>
</div>
<div className="pt-5 pb-6">
<div className="px-2 space-y-1">
{navigation.map((item) => (
<a
key={item.name}
href={item.href}
className="block px-3 py-2 rounded-md text-base font-medium text-gray-900 hover:bg-gray-50"
>
{item.name}
</a>
))}
</div>
<div className="mt-6 px-5">
<a
href="#"
className="block text-center w-full py-3 px-4 rounded-md shadow bg-indigo-600 text-white font-medium hover:bg-indigo-700"
>
Start free trial
</a>
</div>
<div className="mt-6 px-5">
<p className="text-center text-base font-medium text-gray-500">
Existing customer?{' '}
<a href="#" className="text-gray-900 hover:underline">
Login
</a>
</p>
</div>
</div>
</div>
</Popover.Panel>
</Transition>
</Popover>
<main>
<div className="pt-10 sm:pt-16 lg:pt-8 lg:pb-14 lg:overflow-hidden">
<div className="mx-auto max-w-7xl lg:px-8">
<div className="lg:grid lg:grid-cols-2 lg:gap-8">
<div className="mx-auto max-w-md px-4 sm:max-w-2xl sm:px-6 sm:text-center lg:px-0 lg:text-left lg:flex lg:items-center">
<div className="lg:py-24">
{/* <a
href="#"
className="inline-flex items-center text-white bg-black rounded-full p-1 pr-2 sm:text-base lg:text-sm xl:text-base hover:text-gray-200"
>
<span className="px-3 py-0.5 text-white text-xs font-semibold leading-5 uppercase tracking-wide bg-indigo-500 rounded-full">
We're hiring
</span>
<span className="ml-4 text-sm">Visit our careers page</span>
<ChevronRightIcon className="ml-2 w-5 h-5 text-gray-500" aria-hidden="true" />
</a> */}
<h1 className="mt-4 text-4xl tracking-tight font-extrabold text-white sm:mt-5 sm:text-6xl lg:mt-6 xl:text-6xl">
<span className="block">Create your own</span>
<span className="block text-indigo-400">prediction markets</span>
</h1>
<p className="mt-3 text-base text-gray-300 sm:mt-5 sm:text-xl lg:text-lg xl:text-xl">
Create and resolve your own prediction markets to earn a percent of the bet volume. Powered by Solana smart contracts.
</p>
<div className="mt-10 sm:mt-12">
<form action="#" className="sm:max-w-xl sm:mx-auto lg:mx-0">
<div className="sm:flex">
<div className="min-w-0 flex-1">
<label htmlFor="email" className="sr-only">
Email address
</label>
<input
id="email"
type="email"
placeholder="Enter your email"
className="block w-full px-4 py-3 rounded-md border-0 text-base text-gray-900 placeholder-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-300 focus:ring-offset-gray-900"
/>
</div>
<div className="mt-3 sm:mt-0 sm:ml-3">
<button
type="submit"
className="block w-full py-3 px-4 rounded-md shadow bg-indigo-500 text-white font-medium hover:bg-indigo-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-300 focus:ring-offset-gray-900"
>
Keep me updated
</button>
</div>
</div>
{/* <p className="mt-3 text-sm text-gray-300 sm:mt-4">
Start your free 14-day trial, no credit card necessary. By providing your email, you agree to
our{' '}
<a href="#" className="font-medium text-white">
terms of service
</a>
.
</p> */}
</form>
</div>
</div>
</div>
<div className="mt-12 -mb-16 sm:-mb-48 lg:m-0 lg:relative">
<div className="mx-auto max-w-md px-4 sm:max-w-2xl sm:px-6 lg:max-w-none lg:px-0">
{/* Illustration taken from Lucid Illustrations: https://lucid.pixsellz.io/ */}
<img
className="w-full lg:absolute lg:inset-y-0 lg:left-0 lg:h-full lg:w-auto lg:max-w-none"
src="https://tailwindui.com/img/component-images/cloud-illustration-indigo-400.svg"
alt=""
/>
</div>
</div>
</div>
</div>
</div>
</main>
</div>
)
}

1559
web/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -8,6 +8,8 @@
"lint": "next lint"
},
"dependencies": {
"@headlessui/react": "^1.4.2",
"@heroicons/react": "^1.0.5",
"next": "12.0.4",
"react": "17.0.2",
"react-dom": "17.0.2"
@ -15,8 +17,12 @@
"devDependencies": {
"@types/node": "16.11.11",
"@types/react": "17.0.37",
"autoprefixer": "^10.2.6",
"eslint": "7.32.0",
"eslint-config-next": "12.0.4",
"postcss": "^8.3.5",
"tailwindcss": "^2.2.4",
"@tailwindcss/forms": "^0.3.4",
"typescript": "4.5.2"
}
}

View File

@ -1,4 +1,4 @@
import '../styles/globals.css'
import 'tailwindcss/tailwind.css'
import type { AppProps } from 'next/app'
function MyApp({ Component, pageProps }: AppProps) {

View File

@ -1,5 +1,7 @@
import type { NextPage } from 'next'
import Head from 'next/head'
import React from 'react'
import { LandingPage } from './landing-page'
const Home: NextPage = () => {
return (
@ -10,7 +12,7 @@ const Home: NextPage = () => {
<link rel="icon" href="/favicon.ico" />
</Head>
Welcome to Mantic Markets
<LandingPage />
</div>
)
}

View File

@ -0,0 +1,8 @@
import React from 'react'
import { Hero } from '../components/hero'
export const LandingPage = () => {
return (
<Hero />
)
}

8
web/postcss.config.js Normal file
View File

@ -0,0 +1,8 @@
// If you want to use other PostCSS plugins, see the following:
// https://tailwindcss.com/docs/using-with-preprocessors
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

BIN
web/public/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -4,6 +4,7 @@ body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
min-height: 100%;
}
a {

14
web/tailwind.config.js Normal file
View File

@ -0,0 +1,14 @@
module.exports = {
mode: 'jit',
purge: ['./pages/**/*.{js,ts,jsx,tsx}', './components/**/*.{js,ts,jsx,tsx}'],
darkMode: false, // or 'media' or 'class'
theme: {
extend: {},
},
variants: {
extend: {},
},
plugins: [
require('@tailwindcss/forms'),
],
}