mirror of
https://github.com/vercel/commerce.git
synced 2025-03-14 22:42:33 +00:00
Merge branch 'master' of https://github.com/okbel/e-comm-example
This commit is contained in:
commit
2c82348487
@ -1,6 +1,4 @@
|
||||
@import './font.css';
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
|
||||
:root {
|
||||
/* Spacing variables */
|
||||
@ -190,5 +188,3 @@ body {
|
||||
a {
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
@tailwind utilities;
|
||||
|
2
assets/tailwind.css
Normal file
2
assets/tailwind.css
Normal file
@ -0,0 +1,2 @@
|
||||
@tailwind base;
|
||||
@tailwind components;
|
1
assets/utils.css
Normal file
1
assets/utils.css
Normal file
@ -0,0 +1 @@
|
||||
@tailwind utilities;
|
@ -1,6 +1,6 @@
|
||||
.quantity {
|
||||
appearance: textfield;
|
||||
@apply w-6 border-gray-300 border mx-3 rounded text-center text-sm;
|
||||
@apply w-8 border-gray-300 border mx-3 rounded text-center text-sm;
|
||||
}
|
||||
|
||||
.quantity::-webkit-outer-spin-button,
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { Trash } from '@components/icon'
|
||||
import { Trash, Plus, Minus } from '@components/icon'
|
||||
import { useCommerce } from '@lib/bigcommerce'
|
||||
import useUpdateItem from '@lib/bigcommerce/cart/use-update-item'
|
||||
import useRemoveItem from '@lib/bigcommerce/cart/use-remove-item'
|
||||
@ -57,27 +57,29 @@ const CartItem = ({
|
||||
}, [item.quantity])
|
||||
|
||||
return (
|
||||
<li className="flex flex-row space-x-6">
|
||||
<li className="flex flex-row space-x-6 py-6">
|
||||
<div className="h-12 w-12 bg-violet"></div>
|
||||
<div className="flex-1 flex flex-col">
|
||||
<div className="flex-1 flex flex-col justify-between">
|
||||
<span>{item.name}</span>
|
||||
<div className="py-2">
|
||||
<div className="flex items-center">
|
||||
<button type="button" onClick={() => increaseQuantity(-1)}>
|
||||
-
|
||||
<Minus width={18} height={18} />
|
||||
</button>
|
||||
<input
|
||||
type="number"
|
||||
max={99}
|
||||
min={0}
|
||||
className={styles.quantity}
|
||||
value={quantity}
|
||||
onChange={handleQuantity}
|
||||
onBlur={handleBlur}
|
||||
/>
|
||||
<button type="button" onClick={() => increaseQuantity(1)}>
|
||||
+
|
||||
<Plus width={18} height={18} />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-col space-y-2">
|
||||
<div className="flex flex-col justify-between space-y-2">
|
||||
<span>{price}</span>
|
||||
<button
|
||||
className="flex justify-end"
|
||||
|
@ -1,10 +1,12 @@
|
||||
import { FC } from 'react'
|
||||
import cn from 'classnames'
|
||||
import { UserNav } from '@components/core'
|
||||
import { Button } from '@components/ui'
|
||||
import { Trash, Cross } from '@components/icon'
|
||||
import { ArrowLeft, Bag, Cross, Check } from '@components/icon'
|
||||
import { useUI } from '@components/ui/context'
|
||||
import { useCart } from '@lib/bigcommerce/cart'
|
||||
import CartItem from '../CartItem'
|
||||
import Link from '@components/ui/Link'
|
||||
|
||||
const CartSidebarView: FC = () => {
|
||||
const { data, isEmpty } = useCart()
|
||||
@ -14,42 +16,70 @@ const CartSidebarView: FC = () => {
|
||||
|
||||
console.log('CART', data, isEmpty)
|
||||
|
||||
// This should come from the API via hook I guess
|
||||
const error = null
|
||||
const success = null
|
||||
|
||||
return (
|
||||
<>
|
||||
<header className="px-4 py-6 sm:px-6 border-b border-gray-200">
|
||||
<div
|
||||
className={cn('h-full flex flex-col', {
|
||||
'bg-black text-white': isEmpty,
|
||||
'bg-red text-white': error,
|
||||
'bg-green text-white': success,
|
||||
})}
|
||||
>
|
||||
<header className="px-4 pt-6 pb-4 sm:px-6">
|
||||
<div className="flex items-start justify-between space-x-3">
|
||||
<div className="h-7 flex items-center">
|
||||
<button
|
||||
onClick={handleClose}
|
||||
aria-label="Close panel"
|
||||
className="text-gray-400 hover:text-gray-500 transition ease-in-out duration-150"
|
||||
className="hover:text-gray-500 transition ease-in-out duration-150"
|
||||
>
|
||||
<Cross className="h-6 w-6" />
|
||||
<ArrowLeft className="h-6 w-6" />
|
||||
</button>
|
||||
</div>
|
||||
<div className="space-y-1">
|
||||
<UserNav />
|
||||
</div>
|
||||
</div>
|
||||
{isEmpty ? (
|
||||
<h2 className="pt-6 text-lg leading-7 font-medium text-gray-900 uppercase">
|
||||
Your cart is currently empty
|
||||
</h2>
|
||||
) : (
|
||||
<h2 className="pt-6 text-lg leading-7 font-medium text-gray-900 uppercase">
|
||||
My Cart
|
||||
</h2>
|
||||
)}
|
||||
</header>
|
||||
|
||||
{isEmpty ? (
|
||||
<div className="flex-shrink-0 px-4 border-gray-200 py-5 sm:px-6">
|
||||
<Button onClick={handleClose}>Continue Shopping</Button>
|
||||
<div className="flex-1 px-4 flex flex-col justify-center items-center">
|
||||
<span className="border border-dashed border-white rounded-full flex items-center justify-center w-16 h-16">
|
||||
<Bag />
|
||||
</span>
|
||||
<h2 className="pt-6 text-xl font-light text-center">
|
||||
Your cart is empty.
|
||||
</h2>
|
||||
</div>
|
||||
) : error ? (
|
||||
<div className="flex-1 px-4 flex flex-col justify-center items-center">
|
||||
<span className="border border-white rounded-full flex items-center justify-center w-16 h-16">
|
||||
<Cross width={24} height={24} />
|
||||
</span>
|
||||
<h2 className="pt-6 text-xl font-light text-center">
|
||||
We couldn’t process the purchase. Please check your card information
|
||||
and try again.
|
||||
</h2>
|
||||
</div>
|
||||
) : success ? (
|
||||
<div className="flex-1 px-4 flex flex-col justify-center items-center">
|
||||
<span className="border border-white rounded-full flex items-center justify-center w-16 h-16">
|
||||
<Check />
|
||||
</span>
|
||||
<h2 className="pt-6 text-xl font-light text-center">
|
||||
Thank you for your order.
|
||||
</h2>
|
||||
</div>
|
||||
) : (
|
||||
<>
|
||||
<div className="px-4 sm:px-6 py-4 flex-1">
|
||||
<ul className="py-6 space-y-6 sm:py-0 sm:space-y-0 sm:divide-y sm:divide-gray-200">
|
||||
<div className="px-4 sm:px-6 flex-1">
|
||||
<h2 className="pt-6 pb-4 text-lg leading-7 font-medium text-gray-900 uppercase">
|
||||
My Cart
|
||||
</h2>
|
||||
<ul className="py-6 space-y-6 sm:py-0 sm:space-y-0 sm:divide-y sm:divide-gray-200 border-t border-gray-200">
|
||||
{items.map((item) => (
|
||||
<CartItem
|
||||
key={item.id}
|
||||
@ -60,11 +90,13 @@ const CartSidebarView: FC = () => {
|
||||
</ul>
|
||||
</div>
|
||||
<div className="flex-shrink-0 px-4 border-t border-gray-200 py-5 sm:px-6">
|
||||
<Button>Proceed to Checkout</Button>
|
||||
<Button href="/checkout" Component={Link} width="100%">
|
||||
Proceed to Checkout
|
||||
</Button>
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
</>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -1,13 +1,5 @@
|
||||
.root {
|
||||
@apply py-4 px-6 bg-black text-white flex flex-row justify-center items-center;
|
||||
}
|
||||
|
||||
.title {
|
||||
@apply text-white font-medium;
|
||||
}
|
||||
|
||||
.separator {
|
||||
@apply mx-3 bg-white;
|
||||
@apply mx-3 bg-gray-400;
|
||||
width: 1px;
|
||||
height: 20px;
|
||||
}
|
||||
@ -15,7 +7,3 @@
|
||||
.separator:before {
|
||||
content: '';
|
||||
}
|
||||
|
||||
.description {
|
||||
@apply text-white font-medium;
|
||||
}
|
||||
|
@ -9,12 +9,15 @@ interface Props {
|
||||
}
|
||||
|
||||
const Featurebar: FC<Props> = ({ title, description, className }) => {
|
||||
const rootClassName = cn(s.root, className)
|
||||
const rootClassName = cn(
|
||||
'hidden py-2 px-6 bg-gray-100 text-sm text-gray-600 md:flex flex-row justify-center items-center font-medium',
|
||||
className
|
||||
)
|
||||
return (
|
||||
<div className={rootClassName}>
|
||||
<span className={s.title}>{title}</span>
|
||||
<span>{title}</span>
|
||||
<span className={s.separator} />
|
||||
<span className={s.description}>{description}</span>
|
||||
<span>{description}</span>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
@ -1,7 +0,0 @@
|
||||
.root {
|
||||
@apply p-0 bg-black text-white;
|
||||
}
|
||||
|
||||
.container {
|
||||
@apply flex justify-between items-center flex-row px-4 py-5;
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
import cn from 'classnames'
|
||||
import { FC } from 'react'
|
||||
import s from './Footer.module.css'
|
||||
import { Container, Logo } from '@components/ui'
|
||||
import { Logo } from '@components/ui'
|
||||
import Link from 'next/link'
|
||||
|
||||
interface Props {
|
||||
className?: string
|
||||
@ -9,56 +9,58 @@ interface Props {
|
||||
}
|
||||
|
||||
const Footer: FC<Props> = ({ className }) => {
|
||||
const rootClassName = cn(s.root, className)
|
||||
const rootClassName = cn(
|
||||
'flex flex-col p-6 md:py-12 md:flex-row flex-wrap max-w-screen-xl m-auto',
|
||||
className
|
||||
)
|
||||
return (
|
||||
<footer className={rootClassName}>
|
||||
<Container className={s.container}>
|
||||
<div className="my-12 grid grid-cols-2 gap-8 xl:mt-0 xl:col-span-2 py-6">
|
||||
<div className="md:grid md:grid-cols-2 md:gap-8">
|
||||
<div className="">
|
||||
<div className="flex flex-row space-x-4 items-center">
|
||||
<span className="rounded-full border border-gray-300">
|
||||
<Logo />
|
||||
</span>
|
||||
<span>ACME</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mt-12 md:mt-0">
|
||||
<ul className="space-y-4">
|
||||
<li>
|
||||
<a
|
||||
href="#"
|
||||
className="text-base leading-6 text-gray-300 hover:text-white"
|
||||
>
|
||||
About
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href="#"
|
||||
className="text-base leading-6 text-gray-300 hover:text-white"
|
||||
>
|
||||
Terms of Use
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href="#"
|
||||
className="text-base leading-6 text-gray-300 hover:text-white"
|
||||
>
|
||||
Privacy Policy
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex justify-end mt-12 md:mt-0">
|
||||
© 2020 ACME, Inc. All rights reserved.
|
||||
</div>
|
||||
</div>
|
||||
<hr className="text-base leading-6 text-gray-400 xl:text-center border-t border-gray-700" />
|
||||
</Container>
|
||||
</footer>
|
||||
<div className="bg-black text-white">
|
||||
<footer className={rootClassName}>
|
||||
<Link href="/">
|
||||
<a className="flex flex-initial items-center md:items-start font-bold md:mr-24">
|
||||
<span className="rounded-full border border-gray-700 mr-2">
|
||||
<Logo />
|
||||
</span>
|
||||
<span>ACME</span>
|
||||
</a>
|
||||
</Link>
|
||||
|
||||
<ul className="flex flex-initial flex-col divide-y divide-gray-700 md:divide-y-0 my-12 md:my-0 md:flex-1">
|
||||
<li className="py-3 md:py-0 md:pb-4">
|
||||
<Link href="/about">
|
||||
<a className="text-gray-400 hover:text-white transition ease-in-out duration-100">
|
||||
About
|
||||
</a>
|
||||
</Link>
|
||||
</li>
|
||||
|
||||
<li className="py-3 md:py-0 md:pb-4">
|
||||
<Link href="/terms">
|
||||
<a className="text-gray-400 hover:text-white transition ease-in-out duration-100">
|
||||
Terms of Use
|
||||
</a>
|
||||
</Link>
|
||||
</li>
|
||||
|
||||
<li className="py-3 md:py-0 md:pb-4">
|
||||
<Link href="/privacy">
|
||||
<a className="text-gray-400 hover:text-white transition ease-in-out duration-100">
|
||||
Privacy Policy
|
||||
</a>
|
||||
</Link>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<small className="text-base">
|
||||
© 2020 ACME, Inc. All rights reserved.
|
||||
</small>
|
||||
|
||||
<hr
|
||||
className="hidden md:block mt-4 border-gray-700"
|
||||
style={{ flexBasis: '100%', height: 0 }}
|
||||
/>
|
||||
</footer>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@ interface Props {
|
||||
|
||||
const CoreLayout: FC<Props> = ({ className, children }) => {
|
||||
const rootClassName = cn(s.root, className)
|
||||
const { displaySidebar } = useUI()
|
||||
const { displaySidebar, closeSidebar } = useUI()
|
||||
|
||||
return (
|
||||
<div className={rootClassName}>
|
||||
@ -28,7 +28,7 @@ const CoreLayout: FC<Props> = ({ className, children }) => {
|
||||
<main className={s.main}>{children}</main>
|
||||
</Container>
|
||||
<Footer />
|
||||
<Sidebar show={displaySidebar}>
|
||||
<Sidebar show={displaySidebar} close={closeSidebar}>
|
||||
<CartSidebarView />
|
||||
</Sidebar>
|
||||
</div>
|
||||
|
@ -1,10 +1,3 @@
|
||||
.root {
|
||||
}
|
||||
|
||||
.container {
|
||||
@apply flex justify-between items-center flex-row px-6 h-20 relative;
|
||||
}
|
||||
|
||||
.link {
|
||||
@apply group text-gray-500 inline-flex items-center text-base leading-6 font-medium hover:text-gray-900 focus:outline-none focus:text-gray-900 transition ease-in-out duration-150 cursor-pointer;
|
||||
@apply group text-gray-500 inline-flex items-center text-base leading-6 font-medium hover:text-gray-900 focus:outline-none focus:text-gray-900 transition ease-in-out duration-100 cursor-pointer;
|
||||
}
|
||||
|
@ -10,25 +10,40 @@ interface Props {
|
||||
}
|
||||
|
||||
const Navbar: FC<Props> = ({ className }) => {
|
||||
const rootClassName = cn(s.root, className)
|
||||
const rootClassName = className
|
||||
return (
|
||||
<div className={rootClassName}>
|
||||
<Container>
|
||||
<div className={s.container}>
|
||||
<Link href="/">
|
||||
<span className="flex-0 cursor-pointer">
|
||||
<Logo />
|
||||
</span>
|
||||
</Link>
|
||||
<div className="flex flex-row h-full content-center flex-1 ml-10">
|
||||
<nav className="hidden flex-row items-center px-6 lg:flex space-x-4">
|
||||
<a className={s.link}>All</a>
|
||||
<a className={s.link}>Clothes</a>
|
||||
<a className={s.link}>Accesories</a>
|
||||
<div className="flex justify-between align-center flex-row p-4 md:p-6 relative">
|
||||
<div className="flex flex-1 items-center">
|
||||
<Link href="/">
|
||||
<a className="cursor-pointer">
|
||||
<Logo />
|
||||
</a>
|
||||
</Link>
|
||||
<nav className="space-x-4 ml-6 hidden md:block">
|
||||
<Link href="/">
|
||||
<a className={s.link}>All</a>
|
||||
</Link>
|
||||
<Link href="/">
|
||||
<a className={s.link}>Clothes</a>
|
||||
</Link>
|
||||
<Link href="/">
|
||||
<a className={s.link}>Accessories</a>
|
||||
</Link>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div className="md:flex flex-1 justify-center hidden">
|
||||
<Searchbar />
|
||||
</div>
|
||||
<UserNav />
|
||||
|
||||
<div className="flex flex-initial md:flex-1 justify-end">
|
||||
<UserNav />
|
||||
</div>
|
||||
</div>
|
||||
<div className="block flex pb-4 md:hidden px-4 md:px-6">
|
||||
<Searchbar />
|
||||
</div>
|
||||
</Container>
|
||||
</div>
|
||||
|
@ -1,13 +1,5 @@
|
||||
.root {
|
||||
@apply px-4 items-center hidden md:flex;
|
||||
}
|
||||
|
||||
.container {
|
||||
@apply relative rounded-lg flex flex-row text-sm items-center bg-accent-1;
|
||||
}
|
||||
|
||||
.input {
|
||||
@apply bg-transparent px-3 py-2 appearance-none w-full transition duration-150 ease-in-out rounded-lg text-accent-1 placeholder-accent-4;
|
||||
@apply bg-transparent px-3 py-2 appearance-none w-full transition duration-150 ease-in-out rounded-lg text-gray-600 placeholder-accent-4 pr-10;
|
||||
min-width: 300px;
|
||||
}
|
||||
|
||||
|
@ -8,22 +8,22 @@ interface Props {
|
||||
}
|
||||
|
||||
const Searchbar: FC<Props> = ({ className }) => {
|
||||
const rootClassName = cn(s.root, className)
|
||||
return (
|
||||
<div className={rootClassName}>
|
||||
<div className="flex-1 flex justify-between px-2">
|
||||
<div className={s.container}>
|
||||
<input className={s.input} placeholder="Search for products..." />
|
||||
<div className={s.iconContainer}>
|
||||
<svg className={s.icon} fill="currentColor" viewBox="0 0 20 20">
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className={cn(
|
||||
'relative rounded-lg text-sm bg-accent-1 text-gray-600 w-full',
|
||||
className
|
||||
)}
|
||||
>
|
||||
<input className={s.input} placeholder="Search for products..." />
|
||||
<div className={s.iconContainer}>
|
||||
<svg className={s.icon} fill="currentColor" viewBox="0 0 20 20">
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
@ -6,7 +6,11 @@
|
||||
}
|
||||
|
||||
.item {
|
||||
@apply mr-6 cursor-pointer relative;
|
||||
@apply mr-6 cursor-pointer relative transition ease-in-out duration-100;
|
||||
|
||||
&:hover {
|
||||
@apply text-gray-500;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
@apply mr-0;
|
||||
|
@ -16,17 +16,20 @@ const countItems = (count: number, items: any[]) =>
|
||||
items.reduce(countItem, count)
|
||||
|
||||
const UserNav: FC<Props> = ({ className }) => {
|
||||
const { openSidebar } = useUI()
|
||||
const { openSidebar, closeSidebar, displaySidebar } = useUI()
|
||||
const { data } = useCart()
|
||||
const itemsCount = Object.values(data?.line_items ?? {}).reduce(countItems, 0)
|
||||
|
||||
return (
|
||||
<nav className={cn(s.root, className)}>
|
||||
<ul className={s.list}>
|
||||
<li className={s.item} onClick={() => openSidebar()}>
|
||||
<li
|
||||
className={s.item}
|
||||
onClick={() => (displaySidebar ? closeSidebar() : openSidebar())}
|
||||
>
|
||||
<Bag />
|
||||
{itemsCount > 0 && (
|
||||
<span className="bg-black h-4 w-4 absolute rounded-full inset-3 text-white flex items-center justify-center font-bold text-xs">
|
||||
<span className="bg-black h-4 w-4 absolute rounded-full right-3 top-3 text-white flex items-center justify-center font-bold text-xs">
|
||||
{itemsCount}
|
||||
</span>
|
||||
)}
|
||||
|
27
components/icon/ArrowLeft.tsx
Normal file
27
components/icon/ArrowLeft.tsx
Normal file
@ -0,0 +1,27 @@
|
||||
const ArrowLeft = ({ ...props }) => {
|
||||
return (
|
||||
<svg
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
d="M19 12H5"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M12 19L5 12L12 5"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export default ArrowLeft
|
@ -5,26 +5,23 @@ const Bag = ({ ...props }) => {
|
||||
height="22"
|
||||
viewBox="0 0 20 22"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
stroke="currentColor"
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
d="M4 1L1 5V19C1 19.5304 1.21071 20.0391 1.58579 20.4142C1.96086 20.7893 2.46957 21 3 21H17C17.5304 21 18.0391 20.7893 18.4142 20.4142C18.7893 20.0391 19 19.5304 19 19V5L16 1H4Z"
|
||||
stroke="black"
|
||||
strokeWidth="1.5"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M1 5H19"
|
||||
stroke="black"
|
||||
strokeWidth="1.5"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M14 9C14 10.0609 13.5786 11.0783 12.8284 11.8284C12.0783 12.5786 11.0609 13 10 13C8.93913 13 7.92172 12.5786 7.17157 11.8284C6.42143 11.0783 6 10.0609 6 9"
|
||||
stroke="black"
|
||||
strokeWidth="1.5"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
|
21
components/icon/Check.tsx
Normal file
21
components/icon/Check.tsx
Normal file
@ -0,0 +1,21 @@
|
||||
const Check = ({ ...props }) => {
|
||||
return (
|
||||
<svg
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
d="M20 6L9 17L4 12"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export default Check
|
15
components/icon/Minus.tsx
Normal file
15
components/icon/Minus.tsx
Normal file
@ -0,0 +1,15 @@
|
||||
const Minus = ({ ...props }) => {
|
||||
return (
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" {...props}>
|
||||
<path
|
||||
d="M5 12H19"
|
||||
stroke="black"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export default Minus
|
22
components/icon/Plus.tsx
Normal file
22
components/icon/Plus.tsx
Normal file
@ -0,0 +1,22 @@
|
||||
const Plus = ({ ...props }) => {
|
||||
return (
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" {...props}>
|
||||
<path
|
||||
d="M12 5V19"
|
||||
stroke="black"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M5 12H19"
|
||||
stroke="black"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export default Plus
|
@ -2,3 +2,7 @@ export { default as Bag } from './Bag'
|
||||
export { default as Heart } from './Heart'
|
||||
export { default as Trash } from './Trash'
|
||||
export { default as Cross } from './Cross'
|
||||
export { default as ArrowLeft } from './ArrowLeft'
|
||||
export { default as Plus } from './Plus'
|
||||
export { default as Minus } from './Minus'
|
||||
export { default as Check } from './Check'
|
||||
|
@ -1,11 +1,9 @@
|
||||
.root {
|
||||
@apply relative w-full p-6 box-border overflow-hidden bg-no-repeat bg-center bg-cover transition ease-linear;
|
||||
@apply relative w-full box-border overflow-hidden bg-no-repeat bg-center bg-cover transition ease-linear cursor-pointer;
|
||||
|
||||
&:hover {
|
||||
@apply cursor-pointer;
|
||||
|
||||
& .squareBg {
|
||||
@apply inset-12;
|
||||
@apply scale-75;
|
||||
}
|
||||
|
||||
& .productTitle,
|
||||
@ -35,7 +33,7 @@
|
||||
&:nth-child(6n + 6) .productTitle,
|
||||
&:nth-child(6n + 6) .productPrice,
|
||||
&:nth-child(6n + 6) .wishlistButton {
|
||||
@apply bg-cyan text-black;
|
||||
@apply bg-cyan text-white;
|
||||
}
|
||||
}
|
||||
|
||||
@ -56,12 +54,19 @@
|
||||
}
|
||||
}
|
||||
|
||||
.squareBg,
|
||||
.productTitle,
|
||||
.productPrice,
|
||||
.wishlistButton {
|
||||
@apply transition ease-in-out duration-300;
|
||||
}
|
||||
|
||||
.squareBg {
|
||||
@apply cursor-pointer absolute inset-0 z-0 transition-all duration-75 ease-in-out bg-black;
|
||||
@apply transform absolute inset-0 z-0 bg-black;
|
||||
}
|
||||
|
||||
.productTitle {
|
||||
@apply p-3 h-14 bg-white text-black font-bold text-lg truncate leading-8 inline-flex transition ease-linear;
|
||||
@apply p-3 h-14 bg-white text-black font-bold text-lg truncate leading-8 inline-flex;
|
||||
max-width: calc(100% - 50px);
|
||||
|
||||
@screen lg {
|
||||
@ -70,9 +75,9 @@
|
||||
}
|
||||
|
||||
.productPrice {
|
||||
@apply px-6 py-1 pb-3 bg-white text-black font-semibold inline-block text-sm leading-6 transition ease-linear;
|
||||
@apply px-3 py-1 pb-2 bg-white text-black font-semibold inline-block text-sm leading-6;
|
||||
}
|
||||
|
||||
.wishlistButton {
|
||||
@apply w-14 h-14 flex items-center justify-center bg-white text-black font-semibold inline-block text-sm leading-6 cursor-pointer transition ease-linear;
|
||||
@apply w-10 h-10 flex items-center justify-center bg-white text-black font-semibold inline-block text-sm leading-6 cursor-pointer;
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ const ProductCard: FC<Props> = ({ className, node: p, variant }) => {
|
||||
<div className="flex flex-row justify-between box-border w-full z-10 relative">
|
||||
<div className="flex flex-col flex-1 overflow-hidden">
|
||||
<div className="flex-1">
|
||||
<h1 className={s.productTitle}>{p.name}</h1>
|
||||
<span className={s.productTitle}>{p.name}</span>
|
||||
</div>
|
||||
<div className="flex-0">
|
||||
<div className={s.productPrice}>${p.prices.price.value}</div>
|
||||
|
@ -1,5 +1,5 @@
|
||||
.root {
|
||||
@apply flex flex-row h-screen py-12;
|
||||
@apply flex flex-row h-screen py-12 px-6;
|
||||
}
|
||||
|
||||
.button {
|
||||
|
@ -1,5 +1,5 @@
|
||||
import cn from 'classnames'
|
||||
import { FC } from 'react'
|
||||
import { FC, useState } from 'react'
|
||||
import s from './ProductView.module.css'
|
||||
import { Button } from '@components/ui'
|
||||
import { Swatch } from '@components/product'
|
||||
@ -24,11 +24,22 @@ interface Props {
|
||||
product: Product
|
||||
}
|
||||
|
||||
interface Choices {
|
||||
size?: string | null
|
||||
color?: string | null
|
||||
}
|
||||
|
||||
const COLORS: Colors[] = ['pink', 'black', 'white']
|
||||
const SIZES = ['s', 'm', 'l', 'xl', 'xxl']
|
||||
|
||||
const ProductView: FC<Props> = ({ product, productData, className }) => {
|
||||
const addItem = useAddItem()
|
||||
const { openSidebar } = useUI()
|
||||
const [choices, setChoices] = useState<Choices>({
|
||||
size: null,
|
||||
color: null,
|
||||
})
|
||||
|
||||
const addToCart = async () => {
|
||||
// TODO: loading state by awating the promise
|
||||
await addItem({
|
||||
@ -38,6 +49,9 @@ const ProductView: FC<Props> = ({ product, productData, className }) => {
|
||||
openSidebar()
|
||||
}
|
||||
|
||||
const activeSize = choices.size
|
||||
const activeColor = choices.color
|
||||
|
||||
return (
|
||||
<div className={cn(s.root, className)}>
|
||||
<div className="absolute">
|
||||
@ -48,26 +62,44 @@ const ProductView: FC<Props> = ({ product, productData, className }) => {
|
||||
{productData.prices}
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex-1 h-full p-24">
|
||||
<div className="bg-violet h-full"></div>
|
||||
<div className="flex-1 h-48 p-24">
|
||||
<div className="bg-violet h-48"></div>
|
||||
</div>
|
||||
<div className="flex-1 flex flex-col">
|
||||
<section className="pb-4">
|
||||
<h2 className="uppercase font-medium">Color</h2>
|
||||
<div className="flex flex-row py-4">
|
||||
{COLORS.map((c) => (
|
||||
<Swatch key={c} color={c} />
|
||||
{COLORS.map((color) => (
|
||||
<Swatch
|
||||
key={color}
|
||||
color={color}
|
||||
active={color === activeColor}
|
||||
onClick={() =>
|
||||
setChoices((choices) => {
|
||||
return { ...choices, color }
|
||||
})
|
||||
}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
<section className="pb-4">
|
||||
<h2 className="uppercase font-medium">Size</h2>
|
||||
<div className="flex flex-row py-4">
|
||||
<Swatch size="S" />
|
||||
<Swatch size="M" />
|
||||
<Swatch size="L" />
|
||||
<Swatch size="XL" />
|
||||
<Swatch size="XXL" />
|
||||
{SIZES.map((size) => {
|
||||
return (
|
||||
<Swatch
|
||||
size={size.toUpperCase()}
|
||||
key={`size-${size}`}
|
||||
active={size === activeSize}
|
||||
onClick={() =>
|
||||
setChoices((choices) => {
|
||||
return { ...choices, size }
|
||||
})
|
||||
}
|
||||
/>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
</section>
|
||||
<section className="pb-12">
|
||||
|
@ -1,25 +1,29 @@
|
||||
.root {
|
||||
@apply h-12 w-12 bg-white rounded-full mr-3 border border-gray-200 inline-flex items-center justify-center cursor-pointer transition duration-75 ease-in-out;
|
||||
@apply h-12 w-12 bg-white text-black rounded-full mr-3 inline-flex items-center justify-center cursor-pointer transition duration-75 ease-in-out p-0 shadow-none;
|
||||
}
|
||||
|
||||
.active.size {
|
||||
@apply border-black;
|
||||
}
|
||||
|
||||
.active,
|
||||
.root:hover {
|
||||
@apply border-gray-700;
|
||||
@apply transform scale-110;
|
||||
}
|
||||
|
||||
.colorViolet {
|
||||
@apply bg-violet;
|
||||
@apply bg-violet !important;
|
||||
}
|
||||
|
||||
.colorPink {
|
||||
@apply bg-pink;
|
||||
@apply bg-pink !important;
|
||||
}
|
||||
|
||||
.colorBlack {
|
||||
@apply bg-black;
|
||||
@apply bg-black !important;
|
||||
}
|
||||
|
||||
.colorWhite,
|
||||
.size {
|
||||
@apply bg-white;
|
||||
@apply bg-white !important;
|
||||
@apply border border-gray-200;
|
||||
}
|
||||
|
@ -2,8 +2,10 @@ import cn from 'classnames'
|
||||
import { FC } from 'react'
|
||||
import s from './Swatch.module.css'
|
||||
import { Colors } from '@components/ui/types'
|
||||
import { Check } from '@components/icon'
|
||||
import Button, { ButtonProps } from '@components/ui/Button'
|
||||
|
||||
interface Props {
|
||||
interface Props extends ButtonProps {
|
||||
className?: string
|
||||
children?: any
|
||||
active?: boolean
|
||||
@ -11,7 +13,7 @@ interface Props {
|
||||
size?: string
|
||||
}
|
||||
|
||||
const Swatch: FC<Props> = ({ className, size, color, active }) => {
|
||||
const Swatch: FC<Props> = ({ className, size, color, active, ...props }) => {
|
||||
const rootClassName = cn(
|
||||
s.root,
|
||||
{
|
||||
@ -24,7 +26,25 @@ const Swatch: FC<Props> = ({ className, size, color, active }) => {
|
||||
},
|
||||
className
|
||||
)
|
||||
return <span className={rootClassName}>{size ? size : null}</span>
|
||||
|
||||
// TODO: technically this is a radio
|
||||
|
||||
return (
|
||||
<Button className={rootClassName} {...props}>
|
||||
{color && active && (
|
||||
<span
|
||||
className={cn('absolute', {
|
||||
'text-white': color !== 'white',
|
||||
'text-black': color === 'white',
|
||||
})}
|
||||
>
|
||||
<Check />
|
||||
</span>
|
||||
)}
|
||||
{size}
|
||||
</Button>
|
||||
)
|
||||
}
|
||||
|
||||
export default Swatch
|
||||
|
||||
|
@ -1,17 +1,17 @@
|
||||
.root {
|
||||
@apply cursor-pointer inline-flex px-10 rounded-sm border border-transparent leading-6 text-white bg-black transition ease-in-out duration-150 shadow-sm font-semibold text-center justify-center uppercase py-4 uppercase text-center;
|
||||
@apply cursor-pointer inline-flex px-10 rounded-sm leading-6 text-white bg-black transition ease-in-out duration-150 shadow-sm font-semibold text-center justify-center uppercase py-4 uppercase text-center focus:outline-none;
|
||||
}
|
||||
|
||||
.root:hover {
|
||||
@apply bg-white text-black border-black;
|
||||
@apply bg-gray-800;
|
||||
}
|
||||
|
||||
.root:focus {
|
||||
@apply border-gray-700 shadow-outline;
|
||||
@apply shadow-outline;
|
||||
}
|
||||
|
||||
.root:active {
|
||||
@apply bg-gray-700;
|
||||
.root[data-active] {
|
||||
@apply bg-gray-600;
|
||||
}
|
||||
|
||||
s.filled {
|
||||
|
@ -1,54 +1,74 @@
|
||||
import cn from 'classnames'
|
||||
import React, { ButtonHTMLAttributes } from 'react'
|
||||
import React, {
|
||||
forwardRef,
|
||||
ButtonHTMLAttributes,
|
||||
JSXElementConstructor,
|
||||
useRef,
|
||||
} from 'react'
|
||||
import mergeRefs from 'react-merge-refs'
|
||||
import { useButton } from 'react-aria'
|
||||
import s from './Button.module.css'
|
||||
|
||||
interface Props extends ButtonHTMLAttributes<HTMLButtonElement> {
|
||||
export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
||||
href?: string
|
||||
className?: string
|
||||
variant?: 'filled' | 'outlined' | 'flat' | 'none'
|
||||
active?: boolean
|
||||
type?: 'submit' | 'reset' | 'button'
|
||||
Component?: string | JSXElementConstructor<any>
|
||||
width?: string | number
|
||||
}
|
||||
|
||||
export default class Button extends React.Component<Props> {
|
||||
public render() {
|
||||
const {
|
||||
className,
|
||||
variant = 'filled',
|
||||
children,
|
||||
disabled = false,
|
||||
href,
|
||||
active,
|
||||
...rest
|
||||
} = this.props
|
||||
const Button: React.FC<ButtonProps> = forwardRef((props, buttonRef) => {
|
||||
const {
|
||||
className,
|
||||
variant = 'filled',
|
||||
children,
|
||||
href,
|
||||
active,
|
||||
onClick,
|
||||
disabled,
|
||||
width,
|
||||
Component = 'button',
|
||||
...rest
|
||||
} = props
|
||||
const ref = useRef<typeof Component>(null)
|
||||
const { buttonProps, isPressed } = useButton(
|
||||
{
|
||||
...props,
|
||||
// @ts-ignore onClick === onPress for our purposes
|
||||
onPress: onClick,
|
||||
isDisabled: disabled,
|
||||
elementType: Component,
|
||||
},
|
||||
ref
|
||||
)
|
||||
|
||||
let Component: React.ComponentType<
|
||||
React.AnchorHTMLAttributes<
|
||||
HTMLAnchorElement | HTMLButtonElement | HTMLDivElement
|
||||
> &
|
||||
React.ClassAttributes<HTMLButtonElement | HTMLAnchorElement>
|
||||
> = 'a' as any
|
||||
const rootClassName = cn(
|
||||
s.root,
|
||||
{
|
||||
[s.filled]: variant === 'filled',
|
||||
},
|
||||
className
|
||||
)
|
||||
|
||||
// Catch for buttons / span / stc.
|
||||
return (
|
||||
<Component
|
||||
className={rootClassName}
|
||||
href={href}
|
||||
aria-pressed={active}
|
||||
data-variant={variant}
|
||||
ref={mergeRefs([ref, buttonRef])}
|
||||
{...rest}
|
||||
{...buttonProps}
|
||||
style={{
|
||||
width,
|
||||
}}
|
||||
data-active={isPressed ? '' : undefined}
|
||||
>
|
||||
{children}
|
||||
</Component>
|
||||
)
|
||||
})
|
||||
|
||||
const rootClassName = cn(
|
||||
s.root,
|
||||
{
|
||||
[s.filled]: variant === 'filled',
|
||||
},
|
||||
className
|
||||
)
|
||||
|
||||
return (
|
||||
<Component
|
||||
className={rootClassName}
|
||||
href={href}
|
||||
aria-pressed={active}
|
||||
data-variant={variant}
|
||||
{...rest}
|
||||
>
|
||||
{children}
|
||||
</Component>
|
||||
)
|
||||
}
|
||||
}
|
||||
export default Button
|
||||
|
@ -1 +1,2 @@
|
||||
export { default } from './Button'
|
||||
export * from './Button'
|
||||
|
@ -1,5 +0,0 @@
|
||||
.root {
|
||||
@apply mx-auto max-w-screen-xl mx-auto px-6 sm:px-4 lg:px-10;
|
||||
display: inherit;
|
||||
max-width: 1440px;
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
import cn from 'classnames'
|
||||
import React, { FC } from 'react'
|
||||
import s from './Container.module.css'
|
||||
|
||||
interface Props {
|
||||
className?: string
|
||||
@ -9,7 +8,7 @@ interface Props {
|
||||
}
|
||||
|
||||
const Container: FC<Props> = ({ children, className, el = 'div' }) => {
|
||||
const rootClassName = cn(s.root, className)
|
||||
const rootClassName = cn('mx-auto max-w-screen-xl', className)
|
||||
|
||||
let Component: React.ComponentType<React.HTMLAttributes<
|
||||
HTMLDivElement
|
||||
|
@ -1,3 +0,0 @@
|
||||
.root {
|
||||
@apply bg-black py-12;
|
||||
}
|
@ -9,7 +9,7 @@ interface Props {
|
||||
}
|
||||
|
||||
const Hero: FC<Props> = ({ headline, description, className }) => {
|
||||
const rootClassName = cn(s.root, className)
|
||||
const rootClassName = cn('bg-black py-12 px-4 md:px-6', className)
|
||||
return (
|
||||
<div className={rootClassName}>
|
||||
<Container>
|
||||
|
11
components/ui/Link/Link.tsx
Normal file
11
components/ui/Link/Link.tsx
Normal file
@ -0,0 +1,11 @@
|
||||
import NextLink, { LinkProps as NextLinkProps } from 'next/link'
|
||||
|
||||
const Link: React.FC<NextLinkProps> = ({ href, children, ...props }) => {
|
||||
return (
|
||||
<NextLink href={href}>
|
||||
<a {...props}>{children}</a>
|
||||
</NextLink>
|
||||
)
|
||||
}
|
||||
|
||||
export default Link
|
1
components/ui/Link/index.ts
Normal file
1
components/ui/Link/index.ts
Normal file
@ -0,0 +1 @@
|
||||
export { default } from './Link'
|
@ -1,47 +1,88 @@
|
||||
import cn from 'classnames'
|
||||
import { FC } from 'react'
|
||||
import { FC, useRef } from 'react'
|
||||
import s from './Sidebar.module.css'
|
||||
import { Transition } from '@headlessui/react'
|
||||
import {
|
||||
useOverlay,
|
||||
usePreventScroll,
|
||||
useModal,
|
||||
OverlayContainer,
|
||||
} from '@react-aria/overlays'
|
||||
import { useDialog } from '@react-aria/dialog'
|
||||
import { FocusScope } from '@react-aria/focus'
|
||||
|
||||
interface Props {
|
||||
className?: string
|
||||
children?: any
|
||||
show?: boolean
|
||||
close: () => void
|
||||
}
|
||||
|
||||
const Sidebar: FC<Props> = ({ className, children, show = true }) => {
|
||||
const Sidebar: FC<Props> = ({ className, children, show = true, close }) => {
|
||||
const rootClassName = cn(s.root, className)
|
||||
|
||||
const ref = useRef<HTMLDivElement>(null)
|
||||
const { modalProps } = useModal()
|
||||
const { overlayProps } = useOverlay(
|
||||
{
|
||||
isOpen: show,
|
||||
onClose: close,
|
||||
isDismissable: true,
|
||||
},
|
||||
ref
|
||||
)
|
||||
const { dialogProps } = useDialog({}, ref)
|
||||
|
||||
usePreventScroll({
|
||||
isDisabled: !show,
|
||||
})
|
||||
|
||||
return (
|
||||
<Transition show={show}>
|
||||
<div className={rootClassName}>
|
||||
<div className="absolute inset-0 overflow-hidden">
|
||||
<Transition.Child
|
||||
enter="transition-opacity ease-linear duration-300"
|
||||
enterFrom="opacity-0"
|
||||
enterTo="opacity-100"
|
||||
leave="transition-opacity ease-linear duration-300"
|
||||
leaveFrom="opacity-100"
|
||||
leaveTo="opacity-0"
|
||||
>
|
||||
<div className="absolute inset-0 bg-black bg-opacity-25 transition-opacity" />
|
||||
</Transition.Child>
|
||||
<section className="absolute inset-y-0 right-0 pl-10 max-w-full flex sm:pl-16">
|
||||
<Transition.Child
|
||||
enter="transition ease-in-out duration-300 transform"
|
||||
enterFrom="translate-x-full"
|
||||
enterTo="translate-x-0"
|
||||
leave="transition ease-in-out duration-300 transform"
|
||||
leaveFrom="translate-x-0"
|
||||
leaveTo="translate-x-full"
|
||||
>
|
||||
<div className="h-full w-screen max-w-2xl">
|
||||
<div className="h-full flex flex-col space-y-6 bg-white shadow-xl overflow-y-auto">
|
||||
{children}
|
||||
</div>
|
||||
</div>
|
||||
</Transition.Child>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
<OverlayContainer>
|
||||
<FocusScope contain restoreFocus autoFocus>
|
||||
<div className={rootClassName}>
|
||||
<div className="absolute inset-0 overflow-hidden">
|
||||
<Transition.Child
|
||||
enter="transition-opacity ease-linear duration-300"
|
||||
enterFrom="opacity-0"
|
||||
enterTo="opacity-100"
|
||||
leave="transition-opacity ease-linear duration-300"
|
||||
leaveFrom="opacity-100"
|
||||
leaveTo="opacity-0"
|
||||
>
|
||||
<div
|
||||
className="absolute inset-0 bg-black bg-opacity-25 transition-opacity"
|
||||
// Close the sidebar when clicking on the backdrop
|
||||
onClick={close}
|
||||
/>
|
||||
</Transition.Child>
|
||||
<section
|
||||
className="absolute inset-y-0 right-0 pl-10 max-w-full flex sm:pl-16 outline-none"
|
||||
{...dialogProps}
|
||||
{...overlayProps}
|
||||
{...modalProps}
|
||||
ref={ref}
|
||||
>
|
||||
<Transition.Child
|
||||
enter="transition ease-in-out duration-300 transform"
|
||||
enterFrom="translate-x-full"
|
||||
enterTo="translate-x-0"
|
||||
leave="transition ease-in-out duration-300 transform"
|
||||
leaveFrom="translate-x-0"
|
||||
leaveTo="translate-x-full"
|
||||
>
|
||||
<div className="h-full w-screen max-w-md">
|
||||
<div className="h-full flex flex-col bg-white shadow-xl overflow-y-auto">
|
||||
{children}
|
||||
</div>
|
||||
</div>
|
||||
</Transition.Child>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</FocusScope>
|
||||
</OverlayContainer>
|
||||
</Transition>
|
||||
)
|
||||
}
|
||||
|
@ -29,7 +29,9 @@
|
||||
"next": "^9.5.4-canary.23",
|
||||
"postcss-nesting": "^7.0.1",
|
||||
"react": "^16.13.1",
|
||||
"react-aria": "^3.0.0",
|
||||
"react-dom": "^16.13.1",
|
||||
"react-merge-refs": "^1.1.0",
|
||||
"react-ticker": "^1.2.2",
|
||||
"swr": "^0.3.3"
|
||||
},
|
||||
|
@ -1,6 +1,9 @@
|
||||
import { FC } from 'react'
|
||||
import type { AppProps } from 'next/app'
|
||||
import { SSRProvider, OverlayProvider } from 'react-aria'
|
||||
import '@assets/global.css'
|
||||
import '@assets/tailwind.css'
|
||||
import '@assets/utils.css'
|
||||
|
||||
const Noop: FC = ({ children }) => <>{children}</>
|
||||
|
||||
@ -8,8 +11,12 @@ export default function MyApp({ Component, pageProps }: AppProps) {
|
||||
const Layout = (Component as any).Layout || Noop
|
||||
|
||||
return (
|
||||
<Layout>
|
||||
<Component {...pageProps} />
|
||||
</Layout>
|
||||
<SSRProvider>
|
||||
<OverlayProvider>
|
||||
<Layout>
|
||||
<Component {...pageProps} />
|
||||
</Layout>
|
||||
</OverlayProvider>
|
||||
</SSRProvider>
|
||||
)
|
||||
}
|
||||
|
@ -16,6 +16,8 @@ module.exports = {
|
||||
pink: '#FF0080',
|
||||
cyan: '#50E3C2',
|
||||
blue: '#0070F3',
|
||||
green: '#37B679',
|
||||
red: '#DA3C3C',
|
||||
primary: '#000',
|
||||
textColor: {
|
||||
primary: '#FFF',
|
||||
|
637
yarn.lock
637
yarn.lock
@ -1009,7 +1009,7 @@
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
"@babel/plugin-transform-typescript" "^7.10.4"
|
||||
|
||||
"@babel/runtime@7.11.2", "@babel/runtime@^7.0.0", "@babel/runtime@^7.8.4":
|
||||
"@babel/runtime@7.11.2", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.6.2", "@babel/runtime@^7.8.4":
|
||||
version "7.11.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736"
|
||||
integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==
|
||||
@ -1454,6 +1454,582 @@
|
||||
dependencies:
|
||||
mkdirp "^1.0.4"
|
||||
|
||||
"@react-aria/breadcrumbs@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/breadcrumbs/-/breadcrumbs-3.1.1.tgz#3af2e65117db495740ca0ff1c872c0fa0eb05597"
|
||||
integrity sha512-6yqza6lDQL4gZNASmMCVP7nwlNB492ld0AMs3ce7OJWC/30t/HAXOzrfENhnCvAZpk4y5Ow11q8YDrhj5x2jgQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/i18n" "^3.1.2"
|
||||
"@react-aria/interactions" "^3.2.1"
|
||||
"@react-aria/link" "^3.1.2"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-types/breadcrumbs" "^3.1.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-aria/button@^3.2.2":
|
||||
version "3.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/button/-/button-3.2.2.tgz#b10c1700e6b085a48b5a2ff4ffa46feb9931c34c"
|
||||
integrity sha512-iXJo58ST06wnh2zNpnyVgEHY8QulVGDO9LQRfBg/v3ZIIu0FAzag7dTzSijeZpppFuWM197YrFYTEouPXzhk4w==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/focus" "^3.2.2"
|
||||
"@react-aria/i18n" "^3.1.2"
|
||||
"@react-aria/interactions" "^3.2.1"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-stately/toggle" "^3.2.1"
|
||||
"@react-types/button" "^3.2.1"
|
||||
|
||||
"@react-aria/checkbox@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/checkbox/-/checkbox-3.2.1.tgz#493d9d584b4db474645a4565c4f899ee3a579f07"
|
||||
integrity sha512-XnypnlVIfhB3CD7eSjSds8hNkzHgnhu0t48I1D0jYdL1O6tQC4UytPdIqlemRYBVHDloZkWerbjenpHnxhv8iA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/label" "^3.1.1"
|
||||
"@react-aria/toggle" "^3.1.1"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-stately/checkbox" "^3.0.1"
|
||||
"@react-stately/toggle" "^3.2.1"
|
||||
"@react-types/checkbox" "^3.2.1"
|
||||
|
||||
"@react-aria/dialog@^3.1.2":
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/dialog/-/dialog-3.1.2.tgz#868970e7fdaa6ddb91a0d8d5b492778607d417fd"
|
||||
integrity sha512-CUHzLdcKxnQ1IpbJOJ3BIDe762QoTOFXZfDAheNiTi24ym85w7KkW7dnfJDK2+J5RY15c5KWooOZvTaBmIJ7Xw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/focus" "^3.2.2"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-stately/overlays" "^3.1.1"
|
||||
"@react-types/dialog" "^3.3.0"
|
||||
|
||||
"@react-aria/focus@^3.2.2":
|
||||
version "3.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.2.2.tgz#39fe763bc8b675331a8d4b1652589d3dd494a52d"
|
||||
integrity sha512-/E1KZWjC8sUiLwf5RoJHydPY0e6bT1o9+GRtyexj+GtY77kEZpES4Pcdmd+b5ZhefAhk26AOSHnnMcDMrGxBxg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/interactions" "^3.2.1"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
clsx "^1.1.1"
|
||||
|
||||
"@react-aria/i18n@^3.1.2":
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/i18n/-/i18n-3.1.2.tgz#a59fcd14f985aaa9047fcf3ff0d17fedfa26521e"
|
||||
integrity sha512-JFEeIQjiwgima2Ipz1s07puMujBMrlRXF4tUaKALR3851SM5zLbckePuNGHI4KMVK1ZfO5Br9jbUT60Mdotk3A==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/ssr" "^3.0.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
intl-messageformat "^2.2.0"
|
||||
|
||||
"@react-aria/interactions@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.2.1.tgz#ac009d553af37399b335980b390ccb727a778367"
|
||||
integrity sha512-ht78rUBzSZNYfBaEK3SzxbnP7YjZFmMJ31tUO8CqVKyl3/87qk5obmuJCUW3LsB2lgHciTYxwYZ1NjlaGRVxzg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-aria/label@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/label/-/label-3.1.1.tgz#03dc5c4813cd1f51760ba48783c186c2eeda1189"
|
||||
integrity sha512-9kZKJonYSXeY6hZULZrsujAb6uXDGEy8qPq0tjTVoTA3+gx26LOmLCLgvHFtxUK1e4s99rHmaSPdOtq5qu3EVQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-types/label" "^3.2.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-aria/link@^3.1.2":
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/link/-/link-3.1.2.tgz#0a39e44fb1a7bb30e2ef0c88e0f248462998c87a"
|
||||
integrity sha512-ONAyB+2irMSNnv2qZKw51AwYv1GzFXAn+N4nWxreI+TIzhAA6JBkMYT9I6JFqx51UwvGI+ys0YXAMJVIBeZRvA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/interactions" "^3.2.1"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-types/link" "^3.1.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-aria/listbox@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/listbox/-/listbox-3.2.1.tgz#b737e02efc7d1ab61e5c10124b1b78e6407d62d4"
|
||||
integrity sha512-wbpU4clknXlYcqsUtfhUqYG6vlCHSGlYvfTn/Y7pWTLpjgerLSe9uDGPBIzchK1uwzwqgCGB9PeUqMfAnoVe7A==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/interactions" "^3.2.1"
|
||||
"@react-aria/label" "^3.1.1"
|
||||
"@react-aria/selection" "^3.2.1"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-stately/list" "^3.2.1"
|
||||
"@react-types/listbox" "^3.1.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-aria/menu@^3.1.2":
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/menu/-/menu-3.1.2.tgz#8afa8e7f674640dc41d8e3052eafcefe0c9a257a"
|
||||
integrity sha512-4zTOYtT+1+EyiXuDvph6biUHJiTL3muTqWFA+U6wpUObJ2wjLC0sLO3gMa9i4OQXBWHB/wSCO8rAH6dLsXcsGA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/interactions" "^3.2.1"
|
||||
"@react-aria/overlays" "^3.4.0"
|
||||
"@react-aria/selection" "^3.2.1"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-stately/collections" "^3.2.1"
|
||||
"@react-stately/menu" "^3.2.1"
|
||||
"@react-stately/tree" "^3.1.2"
|
||||
"@react-types/button" "^3.2.1"
|
||||
"@react-types/menu" "^3.1.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-aria/meter@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/meter/-/meter-3.1.1.tgz#2b3bff2cc2b8c3f552a5edbea444ce9d9f073079"
|
||||
integrity sha512-Soh+jDEA7onv/wbbdhxUvNqnNp1WgHY3eMDjOXkGpTVozc8wUwMxBCwdPTIXnxMyvFXbzqYNGZOxF/9gsO32yg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/progress" "^3.1.1"
|
||||
"@react-types/meter" "^3.1.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-aria/overlays@^3.4.0":
|
||||
version "3.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/overlays/-/overlays-3.4.0.tgz#f5d6b20e32b63694054ff7d7b586f821d6f319b9"
|
||||
integrity sha512-rLfBhCZt/KbK6TwENJRuaN9nXsIAQ9DfIcPlIwniZSqycmKPGnqglHCk5cDcYZ5X+x6ASiQ7F+vLijQzDsL/bQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/i18n" "^3.1.2"
|
||||
"@react-aria/interactions" "^3.2.1"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-aria/visually-hidden" "^3.2.1"
|
||||
"@react-stately/overlays" "^3.1.1"
|
||||
"@react-types/button" "^3.2.1"
|
||||
"@react-types/overlays" "^3.2.1"
|
||||
dom-helpers "^3.3.1"
|
||||
|
||||
"@react-aria/progress@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/progress/-/progress-3.1.1.tgz#053b7c15a67ca4a4c9feb50f4a4f2f5c2345521f"
|
||||
integrity sha512-Y17ziWi5EoveF8QFQ+JyOvCjUCIYVNQUbr+TpuBossTQd3XEK/Dje0I/ZJ65q+tuBEtfnW2qoWpZzYCrQnGu9Q==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/i18n" "^3.1.2"
|
||||
"@react-aria/label" "^3.1.1"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-types/progress" "^3.1.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-aria/radio@^3.1.2":
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/radio/-/radio-3.1.2.tgz#b5ae516b04d6cb400381850947c7a4e704575134"
|
||||
integrity sha512-3wjXsRp+EGqwrgFKa77CECyFy5jCwM5hthHfSiAnAyluoUpvMTkniQkutNkHYnYm1GBd4MHzGrrNgpATNpx2Yg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/focus" "^3.2.2"
|
||||
"@react-aria/i18n" "^3.1.2"
|
||||
"@react-aria/interactions" "^3.2.1"
|
||||
"@react-aria/label" "^3.1.1"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-stately/radio" "^3.2.1"
|
||||
"@react-types/radio" "^3.1.1"
|
||||
|
||||
"@react-aria/searchfield@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/searchfield/-/searchfield-3.1.1.tgz#5fdd74d0b39633aebf2f66050a74d6cc03fd953f"
|
||||
integrity sha512-wM6EMCAytuG3XwLYBkesj+l8k17esFT7hmYqOrj56LZ7fYkP5vIA5kpgLudPpovbUCVAMN8IEp84qDVtl9khGA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/i18n" "^3.1.2"
|
||||
"@react-aria/interactions" "^3.2.1"
|
||||
"@react-aria/textfield" "^3.2.1"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-stately/searchfield" "^3.1.1"
|
||||
"@react-types/button" "^3.2.1"
|
||||
"@react-types/searchfield" "^3.1.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-aria/select@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/select/-/select-3.2.1.tgz#93f5d8243b7e4d34e3801c37d6536ce942026446"
|
||||
integrity sha512-FcU9nO2yiv0uWffxd5AGqI4ULwdEPhUk2R0qmv4sqGkZZnSxmp+Ow4TVvo1UVhEbpJsoah783hNE0QQcglBy+A==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/i18n" "^3.1.2"
|
||||
"@react-aria/interactions" "^3.2.1"
|
||||
"@react-aria/label" "^3.1.1"
|
||||
"@react-aria/menu" "^3.1.2"
|
||||
"@react-aria/selection" "^3.2.1"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-aria/visually-hidden" "^3.2.1"
|
||||
"@react-stately/select" "^3.1.1"
|
||||
"@react-types/button" "^3.2.1"
|
||||
"@react-types/select" "^3.1.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-aria/selection@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/selection/-/selection-3.2.1.tgz#c2c010c4c4350c2ac0e851fbaedc0cc3a9c0f18e"
|
||||
integrity sha512-IDQ1PrXoPR5s2hUbbwp+auoIpdV508VLdnOCyuIYzh+z8N3azmt5amDPjIZIUJ4FUmoJD/s63QzLGnCORGOvHw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/focus" "^3.2.2"
|
||||
"@react-aria/i18n" "^3.1.2"
|
||||
"@react-aria/interactions" "^3.2.1"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-stately/collections" "^3.2.1"
|
||||
"@react-stately/selection" "^3.2.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-aria/separator@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/separator/-/separator-3.1.1.tgz#bfcd71bb5ab50dc04a7f307b84bd77955f08002f"
|
||||
integrity sha512-VbiqQsTtKKMjvMcPVWgTbDHzx7qMP3VFC+y9cEVajicMwRoO4bn7kJgcSzainXpWx70bhT5RW1mt84fzxMF+Lg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-aria/ssr@^3.0.1":
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.0.1.tgz#5f7c111f9ecd184b8f6140139703c1ee552dca30"
|
||||
integrity sha512-rweMNcSkUO4YkcmgFIoZFvgPyHN2P9DOjq3VOHnZ8SG3Y4TTvSY6Iv90KgzeEfmWCUqqt65FYH4JgrpGNToEMw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
|
||||
"@react-aria/switch@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/switch/-/switch-3.1.1.tgz#a67239302908426dedc383a05bf7543190bec948"
|
||||
integrity sha512-VPuonUcZ0IFs3FAAL3cAWtZr95DH0nyzTWDgVfbfGQCz6zVcD1R6OlA0mUPEdqUl5jQamBvFIk/W/5KbtrpdQw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/toggle" "^3.1.1"
|
||||
"@react-stately/toggle" "^3.2.1"
|
||||
"@react-types/switch" "^3.1.1"
|
||||
|
||||
"@react-aria/textfield@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/textfield/-/textfield-3.2.1.tgz#dc6830acd11ecb40e36f3757cfcf09063d4d593f"
|
||||
integrity sha512-xswGi6TIU7IzHlxWqG7ZY97q77vEHMREjb2yxWJPA9peqfOTYKW6e5IIjFSrW2UiZrhx1MWmJ8/eelcVvxwPzQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/focus" "^3.2.2"
|
||||
"@react-aria/label" "^3.1.1"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
"@react-types/textfield" "^3.2.1"
|
||||
|
||||
"@react-aria/toggle@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/toggle/-/toggle-3.1.1.tgz#5a1e523af0a2425c4cd73dbeb9e9116c65ea7437"
|
||||
integrity sha512-24UKg5dsdNRkVBF5nvcBMwZ0w1az6RGyqdHKMfyZn5vci9q5AizHTc4KhU+KC9dCpTsEDHkVn1nQ6DamzEWJWw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/focus" "^3.2.2"
|
||||
"@react-aria/interactions" "^3.2.1"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-stately/toggle" "^3.2.1"
|
||||
"@react-types/checkbox" "^3.2.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
"@react-types/switch" "^3.1.1"
|
||||
|
||||
"@react-aria/tooltip@^3.0.0":
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/tooltip/-/tooltip-3.0.0.tgz#410aeed809369a94315712267fdbab9781fc7ac9"
|
||||
integrity sha512-ewiXUTcQGpRjsT92svluwseiAD7Xo/PIRxbmNdALVQoblytHIDN3psm+h/YidMJXdZQb7HVtfuXXZKAuSG9Ffw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/focus" "^3.2.2"
|
||||
"@react-aria/interactions" "^3.2.1"
|
||||
"@react-aria/overlays" "^3.4.0"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-stately/tooltip" "^3.0.0"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
"@react-types/tooltip" "^3.0.0"
|
||||
|
||||
"@react-aria/utils@^3.3.0":
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.3.0.tgz#8d5d026ce93e25839b4bc61d40839afaf15fd04d"
|
||||
integrity sha512-PPsOVr0bT3ErMrP5gDa/MDK5zUC7eWWZc+Tcxqrbluh6AFgiq2YLSnDwit+KMPDvj0R+Fx6G7Akt9XQG9r+COQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/ssr" "^3.0.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
clsx "^1.1.1"
|
||||
|
||||
"@react-aria/visually-hidden@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-aria/visually-hidden/-/visually-hidden-3.2.1.tgz#c022c562346140a473242448045add59269a74fd"
|
||||
integrity sha512-ba7bQD09MuzUghtPyrQoXHgQnRRfOu039roVKPz2em9gHD0Wy4ap2UPwlzx35KzNq6FdCzMDZeSZHSnUWlzKnw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-aria/interactions" "^3.2.1"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
clsx "^1.1.1"
|
||||
|
||||
"@react-stately/checkbox@^3.0.1":
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-stately/checkbox/-/checkbox-3.0.1.tgz#2e48a2085f1559549df62c1eda78299127acaf80"
|
||||
integrity sha512-5rUx31X2NX78+vu/Ig4F9u0GnCeLAKD9N+BeGZXzJ/pTBIxoS/iAd9hegic4HKeulSrdYgNEpy3MMUPxhM9BkQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-stately/toggle" "^3.2.1"
|
||||
"@react-stately/utils" "^3.1.1"
|
||||
"@react-types/checkbox" "^3.2.1"
|
||||
|
||||
"@react-stately/collections@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-stately/collections/-/collections-3.2.1.tgz#5feab101e5553e46732eb236a8b2bedaa290af39"
|
||||
integrity sha512-SoJyRoPjtsU/oT7pL/g//yg6T3YR/zsYNQOCzIu17MHvcNXWy/3e91toCErMKp4BKmJwSyMU3U7f7s/xs8dWmQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-stately/list@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-stately/list/-/list-3.2.1.tgz#355b4777447514d6f6d0f2c2433632b01ea7dd4d"
|
||||
integrity sha512-xtpwkomHHZvtZOFbY26VwtZ/z5QPMgYgUuJQsbSPIU8FfKmPQIc6sU/ICBYMKXnHGr4uMOoR17f9wDyPN9Skqg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-stately/collections" "^3.2.1"
|
||||
"@react-stately/selection" "^3.2.1"
|
||||
"@react-stately/utils" "^3.1.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-stately/menu@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-stately/menu/-/menu-3.2.1.tgz#314646217e5dd49fa1da6886d33f485d44d6f0dd"
|
||||
integrity sha512-8cpCynynjjn3qWNzrZMJEpsdk4tkXK9q3Xaw0ADqVym/NC/wPU3P3cqL4HY+ETar01tS2x8K23qYHbOZz0cQtQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-stately/overlays" "^3.1.1"
|
||||
"@react-stately/utils" "^3.1.1"
|
||||
"@react-types/menu" "^3.1.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-stately/overlays@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-stately/overlays/-/overlays-3.1.1.tgz#6c1a393b77148184f7b1df22ece832d694d5a8b4"
|
||||
integrity sha512-79YYXvmWKflezNPhc4fvXA1rDZurZvvEJcmbStNlR5Ryrnk/sQiOQCoVWooi2M4glSMT3UOTvD7YEnXxARcuIQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-stately/utils" "^3.1.1"
|
||||
"@react-types/overlays" "^3.2.1"
|
||||
|
||||
"@react-stately/radio@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-stately/radio/-/radio-3.2.1.tgz#d3fb0b28c2e7accdee47912c9802ab4a886a3092"
|
||||
integrity sha512-WGYMWCDJQOicFLf+bW2CbAnlRWaqsUd028WpsS41GWyIx/w7DVpUeGFwTSvyCXC5SCQZuambsWHgXNz8Ng5WIA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-stately/utils" "^3.1.1"
|
||||
"@react-types/radio" "^3.1.1"
|
||||
|
||||
"@react-stately/searchfield@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-stately/searchfield/-/searchfield-3.1.1.tgz#fcada7bff9cac5bc4ffed11ba9cd06b8513be72a"
|
||||
integrity sha512-asSTsM+H7kZB8XCIAQO0nqMm5onS+2d1yT351NEj42eAsliz5Zf/eZAsEo4Up8W77scDPxhFpaUigYMqjoFPyQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-stately/utils" "^3.1.1"
|
||||
"@react-types/searchfield" "^3.1.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-stately/select@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-stately/select/-/select-3.1.1.tgz#f49602ee7fc71f14550360bfa7c5becab58ac877"
|
||||
integrity sha512-cl63nW66IJPsn9WQjKvghAIFKdFKuU1txx4zdEGY9tcwB/Yc+bgniLGOOTExJqN/RdPW9uBny5jjWcc4OQXyJA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-stately/collections" "^3.2.1"
|
||||
"@react-stately/list" "^3.2.1"
|
||||
"@react-stately/menu" "^3.2.1"
|
||||
"@react-stately/selection" "^3.2.1"
|
||||
"@react-stately/utils" "^3.1.1"
|
||||
"@react-types/select" "^3.1.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-stately/selection@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-stately/selection/-/selection-3.2.1.tgz#b833c2325c6f1f08336753413abe2ebc8a4c77f9"
|
||||
integrity sha512-VSwccBJZ77VTae0vZaiLtWSo/AJ3InogSJvDA7OcLQr86P9PV6LJGgNsT46MKpZcy4Xkbu7WKQKZ4y1+5DKW1Q==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-stately/collections" "^3.2.1"
|
||||
"@react-stately/utils" "^3.1.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-stately/toggle@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-stately/toggle/-/toggle-3.2.1.tgz#8b10b5eb99c3c4df2c36d17a5f23b77773ed7722"
|
||||
integrity sha512-gZVuJ8OYoATUoXzdprsyx6O1w3wCrN+J0KnjhrjjKTrBG68n3pZH0p6dM0XpsaCzlSv0UgNa4fhHS3dYfr/ovw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-stately/utils" "^3.1.1"
|
||||
"@react-types/checkbox" "^3.2.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-stately/tooltip@^3.0.0":
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-stately/tooltip/-/tooltip-3.0.0.tgz#9735084496998663f9c4fee94c0bc6433bdaaef1"
|
||||
integrity sha512-2EDg6V5aGRMSAExCYvBAqt4+pd9lnDC4T0XPwQ7CkH/+MhZeSRiUDLSnx6tjUjOsSyw/Q8UmQ+sg/UHNyrZJGQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-stately/overlays" "^3.1.1"
|
||||
"@react-stately/utils" "^3.1.1"
|
||||
"@react-types/tooltip" "^3.0.0"
|
||||
|
||||
"@react-stately/tree@^3.1.2":
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@react-stately/tree/-/tree-3.1.2.tgz#54e49cc7fa283ce21d67f642522c8f281c58b309"
|
||||
integrity sha512-i3HOx/UQXA48qR5p/44JdX2lPb+3f3c2h/4YX+1fDtxjn0r/JkaEnPfo6zYTf40b7dU9mMOLWNF2qbGo59uIyQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
"@react-stately/collections" "^3.2.1"
|
||||
"@react-stately/selection" "^3.2.1"
|
||||
"@react-stately/utils" "^3.1.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-stately/utils@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.1.1.tgz#e2f2c3ef81cfc6850a3418cb0f050c33d123620a"
|
||||
integrity sha512-htG4TicI4SKxfD5sEKYGxlMeQ5/+TuWPtnhRMbRqdmqnfkVxO/PoaQeEF+xUMWM9VCZc69ZFH6Qen1eZ/JfFcQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.6.2"
|
||||
|
||||
"@react-types/breadcrumbs@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/breadcrumbs/-/breadcrumbs-3.1.1.tgz#d64709f7ec9c1f5d2b6c45af10323a852faf5df2"
|
||||
integrity sha512-+zmgqouZ+2CIKRDTjHHVjMqu9tlZv9zQltB89z+PZYZRnXeDH+nk0qvNTWsxq0O/+xGJgazAOu0lMXlvEF7WlQ==
|
||||
dependencies:
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-types/button@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/button/-/button-3.2.1.tgz#47170f8d7107115380dfd54ee3f699d3bef121de"
|
||||
integrity sha512-k4pyQ01Unkr+Jx5tGESSsbqDXID7s/sEXZbrT+JPx/3Ot4Du86mGjlDIOChd7Iq1koGBirJuGY8X5nk4zCUvdg==
|
||||
dependencies:
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-types/checkbox@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/checkbox/-/checkbox-3.2.1.tgz#971dfd8428e43ce34b063388d1c742bbba0a8dc6"
|
||||
integrity sha512-nm/j8JQWAayFEvs5Hicf9/DBrdnc/CwbXQtN3dC+ehERFu9BtxP6Bt6p7qmhvAJtuUnTh85+zY148BITiyQYtQ==
|
||||
dependencies:
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-types/dialog@^3.3.0":
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/dialog/-/dialog-3.3.0.tgz#60a2b53f250ee082b53aef9340c80f1afe654bc7"
|
||||
integrity sha512-63Vsr/UOZiaajlNDQUgWDi6v3EMenV1f8Cwh+L4lcyIJnbC6WeC2VEV3ld/TYVC0U58SQ0k7u2EIyHkWjc5kdQ==
|
||||
dependencies:
|
||||
"@react-types/overlays" "^3.2.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-types/label@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/label/-/label-3.2.1.tgz#7bbe06d318d0ad1c9c9e4480cac00574fe59e4ac"
|
||||
integrity sha512-wZsfyqF0hp2Z07VVVtaFdWluK+3fU47U6mUbxyoot166aThJdVNEk3yvaNvajWAKZU9cpdqQjrAzFBBTP1UNTw==
|
||||
dependencies:
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-types/link@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/link/-/link-3.1.1.tgz#6cbaa0b1e5cf1492dd59a8f8f645308848395306"
|
||||
integrity sha512-sTyr6fEjwBWXGp/7iU/+ncO0O8YHnf53ZdB7+vOZX+7w1smQ2yVAllRHrREcnEXijMBfuoWf2i0pNqgQBdmLwQ==
|
||||
dependencies:
|
||||
"@react-aria/interactions" "^3.2.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-types/listbox@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/listbox/-/listbox-3.1.1.tgz#b896303ccb87123cf59ee2c089953d7928497c9b"
|
||||
integrity sha512-HAljfdpbyLoJL9iwqz7Fw9MOmRwfzODeN+sr5ncE0eXJxnRBFhb5LjbjAN1dUBrKFBkv3etGlYu5HvX+PJjpew==
|
||||
dependencies:
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-types/menu@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/menu/-/menu-3.1.1.tgz#e5aa52ac07c083243540dd5da0790a85fd1628c6"
|
||||
integrity sha512-/xZWp4/3P/8dKFAGuzxz8IccSXvJH0TmHIk2/xnj2Eyw9152IfutIpOda3iswhjrx1LEkzUgdJ8bCdiebgg6QQ==
|
||||
dependencies:
|
||||
"@react-types/overlays" "^3.2.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-types/meter@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/meter/-/meter-3.1.1.tgz#1a89c77c0f847fc741984703a22af266eae1429f"
|
||||
integrity sha512-82dltyAhCIfyuwfyu+dijEUC08+G7imX3x7QVPSWIHfXusWbWXQG9YzBXJkmCoZlMPEMhEtA6l5niHM3gMD/Zg==
|
||||
dependencies:
|
||||
"@react-types/progress" "^3.1.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-types/overlays@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/overlays/-/overlays-3.2.1.tgz#8d01507319b824174d52e8df7670b3f1368295f9"
|
||||
integrity sha512-BOGCpTmbvAPJzwworQsv1gx2G3RmsKal7X4cT7hRipKJ0r/wE9kyBlCh69IzZ7piQSRiJW5Xfwb5Bcy5Pp9QAQ==
|
||||
dependencies:
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-types/progress@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/progress/-/progress-3.1.1.tgz#e2a99eab26e2b3117f65f78ccb320eae1cdbf693"
|
||||
integrity sha512-Q9mgDbUw7Dcexd2CAo/NRanQ+7btHYAzjphoVSrIUwTsmgg4/WsPjZ3fplVyyRnzoYEjME/b7Og5HZ+ZEFTvsA==
|
||||
dependencies:
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-types/radio@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/radio/-/radio-3.1.1.tgz#5b1b11ff3043ac902e8970e49260f2664da80e5e"
|
||||
integrity sha512-neInMjlbZyyGYYyeDJk9BcEejLczvsBiyk/swSUHmQ99eNIjK3ptUHTNdXM1xBBc3zI1SvBxOQr+uGeeEszvxw==
|
||||
dependencies:
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-types/searchfield@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/searchfield/-/searchfield-3.1.1.tgz#bbbb8984706c02559810328791cdfb8d418336a0"
|
||||
integrity sha512-qNVrO3bIM9TcZHVuU7QI12LHShosvp3D297xw/iGLQoyaL0/W68d4dJs5ujU5ZRj8/gGRhAQiparpRs9hiHkxw==
|
||||
dependencies:
|
||||
"@react-types/textfield" "^3.2.1"
|
||||
|
||||
"@react-types/select@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/select/-/select-3.1.1.tgz#226a96e04724f3e633f2a7acd1d18c29909418ef"
|
||||
integrity sha512-9B1+5bXKYHLdhr1BkfVbKDtwuMDlJgnw5FwDe046PQw4GcY+RL6MvdPodVSeSepPPndcGCGQJ4zGyL7CkLx0tw==
|
||||
dependencies:
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-types/shared@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.2.1.tgz#cbcffec02a7592f019916e4bd0807950a1376bcf"
|
||||
integrity sha512-Yi+zB+wvIGrxomjG7JZWsOPm8/tKPBtEsJI4cS2QbSho/bQWsw6xufJ6YlXxmx4BiBcktkp5VeP43E5nWqMQ5w==
|
||||
|
||||
"@react-types/switch@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/switch/-/switch-3.1.1.tgz#7909a8f7c2cb68ab7536efd03af3be3417e0eca3"
|
||||
integrity sha512-nI5J/1CrJrVANwgikXyPMqxWJ4UyefzE4Vz/TwTgoXQ9v+LRNo22wbisfh1EmJAlZ0E52X/iKViVaBroNty+EA==
|
||||
dependencies:
|
||||
"@react-types/checkbox" "^3.2.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-types/textfield@^3.2.1":
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/textfield/-/textfield-3.2.1.tgz#3976baf7e96f23a7a8622d44e59c213da4035dd2"
|
||||
integrity sha512-tGe7rw508MqWGydjwXLXxZlPE3PaWij6KL+yy06qnyS9jBRo/0tSM8tjKOlZVpsDE1kqZXbx2UyOUEmqHGq4dg==
|
||||
dependencies:
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@react-types/tooltip@^3.0.0":
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-types/tooltip/-/tooltip-3.0.0.tgz#3e6265137106e5d6c198a9e527846e90e67b8b59"
|
||||
integrity sha512-UYpSlzgPGIg95guI6ODQJhytVM/hW+QWvVKtu67PYvB6hWJnDV4LggAqQCd5eG/9kVZdLMrX3Z8CeR+eiubU+g==
|
||||
dependencies:
|
||||
"@react-types/overlays" "^3.2.1"
|
||||
"@react-types/shared" "^3.2.1"
|
||||
|
||||
"@samverschueren/stream-to-observable@^0.3.0":
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301"
|
||||
@ -2608,6 +3184,11 @@ clone-response@^1.0.2:
|
||||
dependencies:
|
||||
mimic-response "^1.0.0"
|
||||
|
||||
clsx@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
|
||||
integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==
|
||||
|
||||
code-point-at@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
|
||||
@ -3124,6 +3705,13 @@ dir-glob@^3.0.1:
|
||||
dependencies:
|
||||
path-type "^4.0.0"
|
||||
|
||||
dom-helpers@^3.3.1:
|
||||
version "3.4.0"
|
||||
resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8"
|
||||
integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.1.2"
|
||||
|
||||
dom-serializer@1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.0.1.tgz#79695eb49af3cd8abc8d93a73da382deb1ca0795"
|
||||
@ -4128,6 +4716,18 @@ inquirer@^7.3.3:
|
||||
strip-ansi "^6.0.0"
|
||||
through "^2.3.6"
|
||||
|
||||
intl-messageformat-parser@1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-1.4.0.tgz#b43d45a97468cadbe44331d74bb1e8dea44fc075"
|
||||
integrity sha1-tD1FqXRoytvkQzHXS7Ho3qRPwHU=
|
||||
|
||||
intl-messageformat@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-2.2.0.tgz#345bcd46de630b7683330c2e52177ff5eab484fc"
|
||||
integrity sha1-NFvNRt5jC3aDMwwuUhd/9eq0hPw=
|
||||
dependencies:
|
||||
intl-messageformat-parser "1.4.0"
|
||||
|
||||
invariant@^2.2.2, invariant@^2.2.4:
|
||||
version "2.2.4"
|
||||
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
|
||||
@ -6070,6 +6670,36 @@ rc@^1.2.8:
|
||||
minimist "^1.2.0"
|
||||
strip-json-comments "~2.0.1"
|
||||
|
||||
react-aria@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/react-aria/-/react-aria-3.0.0.tgz#f821f135059ff23b1a28750df223e048cd64222a"
|
||||
integrity sha512-06/645f+zRr/7TBwA6TY0DFl5uoyCQFfewE88yx+KdGgW5winDwCJZq8m9TqgqeMU6iZKygeaeCIUIb8qvkXmA==
|
||||
dependencies:
|
||||
"@react-aria/breadcrumbs" "^3.1.1"
|
||||
"@react-aria/button" "^3.2.2"
|
||||
"@react-aria/checkbox" "^3.2.1"
|
||||
"@react-aria/dialog" "^3.1.2"
|
||||
"@react-aria/focus" "^3.2.2"
|
||||
"@react-aria/i18n" "^3.1.2"
|
||||
"@react-aria/interactions" "^3.2.1"
|
||||
"@react-aria/label" "^3.1.1"
|
||||
"@react-aria/link" "^3.1.2"
|
||||
"@react-aria/listbox" "^3.2.1"
|
||||
"@react-aria/menu" "^3.1.2"
|
||||
"@react-aria/meter" "^3.1.1"
|
||||
"@react-aria/overlays" "^3.4.0"
|
||||
"@react-aria/progress" "^3.1.1"
|
||||
"@react-aria/radio" "^3.1.2"
|
||||
"@react-aria/searchfield" "^3.1.1"
|
||||
"@react-aria/select" "^3.2.1"
|
||||
"@react-aria/separator" "^3.1.1"
|
||||
"@react-aria/ssr" "^3.0.1"
|
||||
"@react-aria/switch" "^3.1.1"
|
||||
"@react-aria/textfield" "^3.2.1"
|
||||
"@react-aria/tooltip" "^3.0.0"
|
||||
"@react-aria/utils" "^3.3.0"
|
||||
"@react-aria/visually-hidden" "^3.2.1"
|
||||
|
||||
react-dom@^16.13.1:
|
||||
version "16.13.1"
|
||||
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f"
|
||||
@ -6085,6 +6715,11 @@ react-is@16.13.1, react-is@^16.8.1:
|
||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
|
||||
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
|
||||
|
||||
react-merge-refs@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/react-merge-refs/-/react-merge-refs-1.1.0.tgz#73d88b892c6c68cbb7a66e0800faa374f4c38b06"
|
||||
integrity sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==
|
||||
|
||||
react-refresh@0.8.3:
|
||||
version "0.8.3"
|
||||
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f"
|
||||
|
Loading…
x
Reference in New Issue
Block a user