forked from crowetic/commerce
Merge branch 'master' into arzafran/homepage-tweaks
This commit is contained in:
commit
58104bf3a0
@ -1,5 +1,3 @@
|
|||||||
@import './font.css';
|
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
--primary: white;
|
--primary: white;
|
||||||
--primary-2: #f1f3f5;
|
--primary-2: #f1f3f5;
|
||||||
@ -58,10 +56,6 @@
|
|||||||
--accents-9: #f8f9fa;
|
--accents-9: #f8f9fa;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fit {
|
|
||||||
min-height: calc(100vh - 88px - 41px);
|
|
||||||
}
|
|
||||||
|
|
||||||
*,
|
*,
|
||||||
*:before,
|
*:before,
|
||||||
*:after {
|
*:after {
|
3
assets/components.css
Normal file
3
assets/components.css
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.fit {
|
||||||
|
min-height: calc(100vh - 88px - 41px);
|
||||||
|
}
|
8
assets/main.css
Normal file
8
assets/main.css
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
@import 'tailwindcss/base';
|
||||||
|
@import './font.css';
|
||||||
|
@import './base.css';
|
||||||
|
|
||||||
|
@import 'tailwindcss/components';
|
||||||
|
@import './components.css';
|
||||||
|
|
||||||
|
@import 'tailwindcss/utilities';
|
@ -1,2 +0,0 @@
|
|||||||
@tailwind base;
|
|
||||||
@tailwind components;
|
|
@ -1 +0,0 @@
|
|||||||
@tailwind utilities;
|
|
@ -3,7 +3,8 @@ import cn from 'classnames'
|
|||||||
import Link from 'next/link'
|
import Link from 'next/link'
|
||||||
import type { Page } from '@lib/bigcommerce/api/operations/get-all-pages'
|
import type { Page } from '@lib/bigcommerce/api/operations/get-all-pages'
|
||||||
import getSlug from '@utils/get-slug'
|
import getSlug from '@utils/get-slug'
|
||||||
import { Logo } from '@components/ui'
|
import { Logo, Container } from '@components/ui'
|
||||||
|
import { Github } from '@components/icon'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
className?: string
|
className?: string
|
||||||
@ -14,53 +15,93 @@ interface Props {
|
|||||||
const LEGAL_PAGES = ['terms-of-use', 'shipping-returns', 'privacy-policy']
|
const LEGAL_PAGES = ['terms-of-use', 'shipping-returns', 'privacy-policy']
|
||||||
|
|
||||||
const Footer: FC<Props> = ({ className, pages }) => {
|
const Footer: FC<Props> = ({ className, pages }) => {
|
||||||
const rootClassName = cn(
|
const rootClassName = cn(className)
|
||||||
'flex flex-col p-6 md:py-12 md:flex-row flex-wrap max-w-screen-xl m-auto',
|
|
||||||
className
|
|
||||||
)
|
|
||||||
const { sitePages, legalPages } = getPages(pages)
|
const { sitePages, legalPages } = getPages(pages)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="bg-black text-white">
|
<footer className={rootClassName}>
|
||||||
<footer className={rootClassName}>
|
<Container>
|
||||||
<Link href="/">
|
<div className="grid grid-cols-1 lg:grid-cols-12 gap-8 border-b border-accents-2 py-12">
|
||||||
<a className="flex flex-initial items-center md:items-start font-bold md:mr-24">
|
<div className="col-span-1 lg:col-span-2">
|
||||||
<span className="rounded-full border border-gray-700 mr-2">
|
<Link href="/">
|
||||||
<Logo />
|
<a className="flex flex-initial items-center font-bold md:mr-24">
|
||||||
</span>
|
<span className="rounded-full border border-gray-700 mr-2">
|
||||||
<span>ACME</span>
|
<Logo />
|
||||||
</a>
|
</span>
|
||||||
</Link>
|
<span>ACME</span>
|
||||||
|
</a>
|
||||||
<ul className="flex flex-initial flex-col divide-y divide-gray-700 md:divide-y-0 my-12 md:my-0 md:flex-1">
|
</Link>
|
||||||
{sitePages.map((page) => (
|
</div>
|
||||||
<li key={page.url} className="py-3 md:py-0 md:pb-4">
|
<div className="col-span-1 lg:col-span-2">
|
||||||
<Link href={page.url!}>
|
<ul className="flex flex-initial flex-col md:flex-1">
|
||||||
<a className="text-gray-400 hover:text-white transition ease-in-out duration-100">
|
<li className="py-3 md:py-0 md:pb-4">
|
||||||
{page.name}
|
<Link href="/">
|
||||||
</a>
|
<a className="text-gray-400 hover:text-white transition ease-in-out duration-100">
|
||||||
</Link>
|
Home
|
||||||
</li>
|
</a>
|
||||||
))}
|
</Link>
|
||||||
</ul>
|
</li>
|
||||||
|
<li className="py-3 md:py-0 md:pb-4">
|
||||||
<ul className="flex flex-initial flex-col divide-y divide-gray-700 md:divide-y-0 my-12 md:my-0 md:flex-1">
|
<Link href="/">
|
||||||
{legalPages.map((page) => (
|
<a className="text-gray-400 hover:text-white transition ease-in-out duration-100">
|
||||||
<li key={page.url} className="py-3 md:py-0 md:pb-4">
|
Careers
|
||||||
<Link href={page.url!}>
|
</a>
|
||||||
<a className="text-gray-400 hover:text-white transition ease-in-out duration-100">
|
</Link>
|
||||||
{page.name}
|
</li>
|
||||||
</a>
|
<li className="py-3 md:py-0 md:pb-4">
|
||||||
</Link>
|
<Link href="/blog">
|
||||||
</li>
|
<a className="text-gray-400 hover:text-white transition ease-in-out duration-100">
|
||||||
))}
|
Blog
|
||||||
</ul>
|
</a>
|
||||||
|
</Link>
|
||||||
<small className="text-base">
|
</li>
|
||||||
© 2020 ACME, Inc. All rights reserved.
|
{sitePages.map((page) => (
|
||||||
</small>
|
<li key={page.url} className="py-3 md:py-0 md:pb-4">
|
||||||
</footer>
|
<Link href={page.url!}>
|
||||||
</div>
|
<a className="text-gray-400 hover:text-white transition ease-in-out duration-100">
|
||||||
|
{page.name}
|
||||||
|
</a>
|
||||||
|
</Link>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div className="col-span-1 lg:col-span-2">
|
||||||
|
<ul className="flex flex-initial flex-col md:flex-1">
|
||||||
|
{legalPages.map((page) => (
|
||||||
|
<li key={page.url} className="py-3 md:py-0 md:pb-4">
|
||||||
|
<Link href={page.url!}>
|
||||||
|
<a className="text-gray-400 hover:text-white transition ease-in-out duration-100">
|
||||||
|
{page.name}
|
||||||
|
</a>
|
||||||
|
</Link>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div className="col-span-1 lg:col-span-6 flex lg:justify-end text-white">
|
||||||
|
<div>
|
||||||
|
<Github />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="py-12 flex flex-col md:flex-row justify-between items-center space-y-4">
|
||||||
|
<div className="text-white">
|
||||||
|
<span>© 2020 ACME, Inc. All rights reserved.</span>
|
||||||
|
</div>
|
||||||
|
<div className="flex items-center text-accents-4">
|
||||||
|
<span>Crafted by</span>
|
||||||
|
<a href="https://vercel.com">
|
||||||
|
<img
|
||||||
|
src="/vercel.png"
|
||||||
|
alt="Vercel.com Logo"
|
||||||
|
className="inline-block h-6 ml-4"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</footer>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,17 +1,8 @@
|
|||||||
.dropdownMenu {
|
.dropdownMenu {
|
||||||
@apply fixed pt-6 right-0 z-20 w-full h-full;
|
@apply fixed right-0 mt-7 origin-top-right outline-none bg-primary z-40 w-full h-full;
|
||||||
|
|
||||||
@screen lg {
|
@screen lg {
|
||||||
@apply absolute right-0 w-screen;
|
@apply absolute border border-accents-1 shadow-lg w-56 h-auto;
|
||||||
max-width: 185px;
|
|
||||||
}
|
|
||||||
|
|
||||||
& .dropdownMenuContainer {
|
|
||||||
@apply flex-col py-6 bg-primary h-full justify-around;
|
|
||||||
|
|
||||||
@screen lg {
|
|
||||||
@apply border border-accents-1 shadow-lg py-2 h-auto;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
& .link {
|
& .link {
|
||||||
|
@ -4,21 +4,36 @@ import { useTheme } from 'next-themes'
|
|||||||
import cn from 'classnames'
|
import cn from 'classnames'
|
||||||
import s from './DropdownMenu.module.css'
|
import s from './DropdownMenu.module.css'
|
||||||
import { Moon, Sun } from '@components/icon'
|
import { Moon, Sun } from '@components/icon'
|
||||||
import { Menu } from '@headlessui/react'
|
import { Menu, Transition } from '@headlessui/react'
|
||||||
|
import { usePreventScroll } from '@react-aria/overlays'
|
||||||
interface DropdownMenuProps {
|
interface DropdownMenuProps {
|
||||||
onClose: () => void
|
onClose: () => void
|
||||||
|
open: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
const DropdownMenu: FC<DropdownMenuProps> = ({
|
const DropdownMenu: FC<DropdownMenuProps> = ({
|
||||||
onClose,
|
onClose,
|
||||||
children,
|
children,
|
||||||
|
open = false,
|
||||||
...props
|
...props
|
||||||
}) => {
|
}) => {
|
||||||
const { theme, setTheme } = useTheme()
|
const { theme, setTheme } = useTheme()
|
||||||
|
|
||||||
|
usePreventScroll({
|
||||||
|
isDisabled: !open,
|
||||||
|
})
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<nav className={cn(s.dropdownMenu)}>
|
<Transition
|
||||||
<Menu.Items className={s.dropdownMenuContainer}>
|
show={open}
|
||||||
|
enter="transition ease-out duration-100 z-20"
|
||||||
|
enterFrom="transform opacity-0 scale-95"
|
||||||
|
enterTo="transform opacity-100 scale-100"
|
||||||
|
leave="transition ease-in duration-75"
|
||||||
|
leaveFrom="transform opacity-100 scale-100"
|
||||||
|
leaveTo="transform opacity-0 scale-95"
|
||||||
|
>
|
||||||
|
<Menu.Items className={s.dropdownMenu}>
|
||||||
<Menu.Item>
|
<Menu.Item>
|
||||||
{({ active }) => <a className={s.link}>My Purchases</a>}
|
{({ active }) => <a className={s.link}>My Purchases</a>}
|
||||||
</Menu.Item>
|
</Menu.Item>
|
||||||
@ -54,7 +69,7 @@ const DropdownMenu: FC<DropdownMenuProps> = ({
|
|||||||
)}
|
)}
|
||||||
</Menu.Item>
|
</Menu.Item>
|
||||||
</Menu.Items>
|
</Menu.Items>
|
||||||
</nav>
|
</Transition>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,12 +2,11 @@ import Link from 'next/link'
|
|||||||
import cn from 'classnames'
|
import cn from 'classnames'
|
||||||
import s from './UserNav.module.css'
|
import s from './UserNav.module.css'
|
||||||
import { FC, useRef } from 'react'
|
import { FC, useRef } from 'react'
|
||||||
|
|
||||||
import { Avatar } from '@components/core'
|
import { Avatar } from '@components/core'
|
||||||
import { Heart, Bag } from '@components/icon'
|
import { Heart, Bag } from '@components/icon'
|
||||||
import { useUI } from '@components/ui/context'
|
import { useUI } from '@components/ui/context'
|
||||||
import DropdownMenu from './DropdownMenu'
|
import DropdownMenu from './DropdownMenu'
|
||||||
import { Menu, Transition } from '@headlessui/react'
|
import { Menu } from '@headlessui/react'
|
||||||
import useCart from '@lib/bigcommerce/cart/use-cart'
|
import useCart from '@lib/bigcommerce/cart/use-cart'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
@ -56,20 +55,10 @@ const UserNav: FC<Props> = ({ className, children, ...props }) => {
|
|||||||
<Menu>
|
<Menu>
|
||||||
{({ open }) => (
|
{({ open }) => (
|
||||||
<>
|
<>
|
||||||
<Menu.Button className="inline-flex justify-center">
|
<Menu.Button className="inline-flex justify-center rounded-full">
|
||||||
<Avatar />
|
<Avatar />
|
||||||
</Menu.Button>
|
</Menu.Button>
|
||||||
<Transition
|
<DropdownMenu onClose={closeDropdown} open={open} />
|
||||||
show={open}
|
|
||||||
enter="transition ease-out duration-100"
|
|
||||||
enterFrom="transform opacity-0 scale-95"
|
|
||||||
enterTo="transform opacity-100 scale-100"
|
|
||||||
leave="transition ease-in duration-75"
|
|
||||||
leaveFrom="transform opacity-100 scale-100"
|
|
||||||
leaveTo="transform opacity-0 scale-95"
|
|
||||||
>
|
|
||||||
<DropdownMenu onClose={closeDropdown} />
|
|
||||||
</Transition>
|
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
</Menu>
|
</Menu>
|
||||||
|
22
components/icon/DoubleChevron.tsx
Normal file
22
components/icon/DoubleChevron.tsx
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
const Sun = ({ ...props }) => {
|
||||||
|
return (
|
||||||
|
<svg
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M16 8.90482L12 4L8 8.90482M8 15.0952L12 20L16 15.0952"
|
||||||
|
stroke="white"
|
||||||
|
stroke-width="1.5"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Sun
|
20
components/icon/Github.tsx
Normal file
20
components/icon/Github.tsx
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
const Sun = ({ ...props }) => {
|
||||||
|
return (
|
||||||
|
<svg
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
fillRule="evenodd"
|
||||||
|
clipRule="evenodd"
|
||||||
|
d="M12 0C5.37 0 0 5.50583 0 12.3035C0 17.7478 3.435 22.3463 8.205 23.9765C8.805 24.0842 9.03 23.715 9.03 23.3921C9.03 23.0999 9.015 22.131 9.015 21.1005C6 21.6696 5.22 20.347 4.98 19.6549C4.845 19.3012 4.26 18.2092 3.75 17.917C3.33 17.6863 2.73 17.1173 3.735 17.1019C4.68 17.0865 5.355 17.9939 5.58 18.363C6.66 20.2239 8.385 19.701 9.075 19.3781C9.18 18.5783 9.495 18.04 9.84 17.7325C7.17 17.4249 4.38 16.3637 4.38 11.6576C4.38 10.3196 4.845 9.21227 5.61 8.35102C5.49 8.04343 5.07 6.78232 5.73 5.09058C5.73 5.09058 6.735 4.76762 9.03 6.3517C9.99 6.07487 11.01 5.93645 12.03 5.93645C13.05 5.93645 14.07 6.07487 15.03 6.3517C17.325 4.75224 18.33 5.09058 18.33 5.09058C18.99 6.78232 18.57 8.04343 18.45 8.35102C19.215 9.21227 19.68 10.3042 19.68 11.6576C19.68 16.3791 16.875 17.4249 14.205 17.7325C14.64 18.1169 15.015 18.8552 15.015 20.0086C15.015 21.6542 15 22.9768 15 23.3921C15 23.715 15.225 24.0995 15.825 23.9765C18.2072 23.1519 20.2773 21.5822 21.7438 19.4882C23.2103 17.3942 23.9994 14.8814 24 12.3035C24 5.50583 18.63 0 12 0Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Sun
|
@ -8,3 +8,4 @@ export { default as Minus } from './Minus'
|
|||||||
export { default as Check } from './Check'
|
export { default as Check } from './Check'
|
||||||
export { default as Sun } from './Sun'
|
export { default as Sun } from './Sun'
|
||||||
export { default as Moon } from './Moon'
|
export { default as Moon } from './Moon'
|
||||||
|
export { default as Github } from './Github'
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.productDisplay {
|
.productDisplay {
|
||||||
@apply relative flex px-0 pb-0 relative box-border col-span-7;
|
@apply relative flex px-0 pb-0 relative box-border col-span-1;
|
||||||
margin-right: -2rem;
|
margin-right: -2rem;
|
||||||
margin-left: -2rem;
|
margin-left: -2rem;
|
||||||
min-height: 400px;
|
min-height: 400px;
|
||||||
@ -17,7 +17,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@screen lg {
|
@screen lg {
|
||||||
@apply mx-0;
|
@apply mx-0 col-span-7;
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
@ -55,9 +55,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.sidebar {
|
.sidebar {
|
||||||
@apply flex flex-col col-span-5;
|
@apply flex flex-col col-span-1;
|
||||||
|
|
||||||
@screen lg {
|
@screen lg {
|
||||||
|
@apply col-span-5;
|
||||||
padding-top: 5rem;
|
padding-top: 5rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
|
import cn from 'classnames'
|
||||||
import { NextSeo } from 'next-seo'
|
import { NextSeo } from 'next-seo'
|
||||||
|
import s from './ProductView.module.css'
|
||||||
import { FC, useState, useEffect } from 'react'
|
import { FC, useState, useEffect } from 'react'
|
||||||
import type { ProductNode } from '@lib/bigcommerce/api/operations/get-product'
|
|
||||||
import { useUI } from '@components/ui/context'
|
import { useUI } from '@components/ui/context'
|
||||||
import { Button, Container } from '@components/ui'
|
import { Button, Container } from '@components/ui'
|
||||||
import { Swatch, ProductSlider } from '@components/product'
|
import { Swatch, ProductSlider } from '@components/product'
|
||||||
import useAddItem from '@lib/bigcommerce/cart/use-add-item'
|
import useAddItem from '@lib/bigcommerce/cart/use-add-item'
|
||||||
import { getProductOptions } from '../helpers'
|
|
||||||
import s from './ProductView.module.css'
|
|
||||||
import { isDesktop } from '@lib/browser'
|
import { isDesktop } from '@lib/browser'
|
||||||
import cn from 'classnames'
|
import type { ProductNode } from '@lib/bigcommerce/api/operations/get-product'
|
||||||
|
import { getProductOptions } from '../helpers'
|
||||||
interface Props {
|
interface Props {
|
||||||
className?: string
|
className?: string
|
||||||
children?: any
|
children?: any
|
||||||
@ -130,7 +130,7 @@ const ProductView: FC<Props> = ({ product, className }) => {
|
|||||||
))}
|
))}
|
||||||
<div className="pb-12">
|
<div className="pb-12">
|
||||||
<div
|
<div
|
||||||
className="pb-14 break-words"
|
className="pb-14 break-words w-full"
|
||||||
dangerouslySetInnerHTML={{ __html: product.description }}
|
dangerouslySetInnerHTML={{ __html: product.description }}
|
||||||
/>
|
/>
|
||||||
<Button
|
<Button
|
||||||
|
@ -2,13 +2,7 @@ import cn from 'classnames'
|
|||||||
import { FC, useRef } from 'react'
|
import { FC, useRef } from 'react'
|
||||||
import s from './Modal.module.css'
|
import s from './Modal.module.css'
|
||||||
import { useDialog } from '@react-aria/dialog'
|
import { useDialog } from '@react-aria/dialog'
|
||||||
import {
|
import { useOverlay, usePreventScroll, useModal } from '@react-aria/overlays'
|
||||||
useOverlay,
|
|
||||||
usePreventScroll,
|
|
||||||
useModal,
|
|
||||||
OverlayProvider,
|
|
||||||
OverlayContainer,
|
|
||||||
} from '@react-aria/overlays'
|
|
||||||
import { FocusScope } from '@react-aria/focus'
|
import { FocusScope } from '@react-aria/focus'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
.skeleton {
|
.skeleton {
|
||||||
@apply block rounded;
|
@apply block;
|
||||||
background-image: linear-gradient(
|
background-image: linear-gradient(
|
||||||
270deg,
|
270deg,
|
||||||
var(--accents-1),
|
var(--accents-1),
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
"next-seo": "^4.11.0",
|
"next-seo": "^4.11.0",
|
||||||
"next-themes": "^0.0.4",
|
"next-themes": "^0.0.4",
|
||||||
"nextjs-progressbar": "^0.0.6",
|
"nextjs-progressbar": "^0.0.6",
|
||||||
|
"postcss-import": "^13.0.0",
|
||||||
"postcss-nesting": "^7.0.1",
|
"postcss-nesting": "^7.0.1",
|
||||||
"react": "^16.14.0",
|
"react": "^16.14.0",
|
||||||
"react-aria": "^3.0.0",
|
"react-aria": "^3.0.0",
|
||||||
@ -43,7 +44,8 @@
|
|||||||
"react-swipeable-views": "^0.13.9",
|
"react-swipeable-views": "^0.13.9",
|
||||||
"react-swipeable-views-utils": "^0.14.0-alpha.0",
|
"react-swipeable-views-utils": "^0.14.0-alpha.0",
|
||||||
"react-ticker": "^1.2.2",
|
"react-ticker": "^1.2.2",
|
||||||
"swr": "^0.3.3"
|
"swr": "^0.3.3",
|
||||||
|
"tailwindcss": "^1.9"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@graphql-codegen/cli": "^1.17.10",
|
"@graphql-codegen/cli": "^1.17.10",
|
||||||
@ -65,7 +67,6 @@
|
|||||||
"postcss-flexbugs-fixes": "^4.2.1",
|
"postcss-flexbugs-fixes": "^4.2.1",
|
||||||
"postcss-preset-env": "^6.7.0",
|
"postcss-preset-env": "^6.7.0",
|
||||||
"prettier": "^2.1.2",
|
"prettier": "^2.1.2",
|
||||||
"tailwindcss": "^1.8.10",
|
|
||||||
"typescript": "^4.0.3"
|
"typescript": "^4.0.3"
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
import '@assets/global.css'
|
import '@assets/main.css'
|
||||||
import '@assets/tailwind.css'
|
|
||||||
import '@assets/utils.css'
|
|
||||||
|
|
||||||
// To be removed
|
// To be removed
|
||||||
import 'animate.css'
|
import 'animate.css'
|
||||||
|
BIN
public/us-flag.png
Normal file
BIN
public/us-flag.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 762 B |
BIN
public/vercel.png
Normal file
BIN
public/vercel.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.2 KiB |
27
yarn.lock
27
yarn.lock
@ -6439,6 +6439,11 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1:
|
|||||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
|
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
|
||||||
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
|
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
|
||||||
|
|
||||||
|
pify@^2.3.0:
|
||||||
|
version "2.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||||
|
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
|
||||||
|
|
||||||
pkg-dir@^4.1.0, pkg-dir@^4.2.0:
|
pkg-dir@^4.1.0, pkg-dir@^4.2.0:
|
||||||
version "4.2.0"
|
version "4.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
|
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
|
||||||
@ -6613,6 +6618,15 @@ postcss-image-set-function@^3.0.1:
|
|||||||
postcss "^7.0.2"
|
postcss "^7.0.2"
|
||||||
postcss-values-parser "^2.0.0"
|
postcss-values-parser "^2.0.0"
|
||||||
|
|
||||||
|
postcss-import@^13.0.0:
|
||||||
|
version "13.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-13.0.0.tgz#d6960cd9e3de5464743b04dd8cd9d870662f8b8c"
|
||||||
|
integrity sha512-LPUbm3ytpYopwQQjqgUH4S3EM/Gb9QsaSPP/5vnoi+oKVy3/mIk2sc0Paqw7RL57GpScm9MdIMUypw2znWiBpg==
|
||||||
|
dependencies:
|
||||||
|
postcss-value-parser "^4.0.0"
|
||||||
|
read-cache "^1.0.0"
|
||||||
|
resolve "^1.1.7"
|
||||||
|
|
||||||
postcss-initial@^3.0.0:
|
postcss-initial@^3.0.0:
|
||||||
version "3.0.2"
|
version "3.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d"
|
resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d"
|
||||||
@ -6827,7 +6841,7 @@ postcss-value-parser@^3.3.0:
|
|||||||
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
|
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
|
||||||
integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
|
integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
|
||||||
|
|
||||||
postcss-value-parser@^4.1.0:
|
postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0:
|
||||||
version "4.1.0"
|
version "4.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
|
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
|
||||||
integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
|
integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
|
||||||
@ -7139,6 +7153,13 @@ react@^16.14.0:
|
|||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
prop-types "^15.6.2"
|
prop-types "^15.6.2"
|
||||||
|
|
||||||
|
read-cache@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
|
||||||
|
integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=
|
||||||
|
dependencies:
|
||||||
|
pify "^2.3.0"
|
||||||
|
|
||||||
read-pkg-up@^7.0.1:
|
read-pkg-up@^7.0.1:
|
||||||
version "7.0.1"
|
version "7.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507"
|
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507"
|
||||||
@ -7419,7 +7440,7 @@ resolve-url@^0.2.1:
|
|||||||
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
|
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
|
||||||
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
|
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
|
||||||
|
|
||||||
resolve@^1.10.0, resolve@^1.14.2, resolve@^1.3.2, resolve@^1.8.1:
|
resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.3.2, resolve@^1.8.1:
|
||||||
version "1.18.1"
|
version "1.18.1"
|
||||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130"
|
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130"
|
||||||
integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==
|
integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==
|
||||||
@ -8017,7 +8038,7 @@ symbol-observable@^1.0.4, symbol-observable@^1.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
|
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
|
||||||
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
|
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
|
||||||
|
|
||||||
tailwindcss@^1.8.10:
|
tailwindcss@^1.9:
|
||||||
version "1.9.5"
|
version "1.9.5"
|
||||||
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-1.9.5.tgz#3339b790a68bc1f09a8efd8eb94cb05aed5235c2"
|
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-1.9.5.tgz#3339b790a68bc1f09a8efd8eb94cb05aed5235c2"
|
||||||
integrity sha512-Je5t1fAfyW333YTpSxF+8uJwbnrkpyBskDtZYgSMMKQbNp6QUhEKJ4g/JIevZjD2Zidz9VxLraEUq/yWOx6nQg==
|
integrity sha512-Je5t1fAfyW333YTpSxF+8uJwbnrkpyBskDtZYgSMMKQbNp6QUhEKJ4g/JIevZjD2Zidz9VxLraEUq/yWOx6nQg==
|
||||||
|
Loading…
x
Reference in New Issue
Block a user