forked from crowetic/commerce
* Moved everything * Figuring out how to make imports work * Updated exports * Added missing exports * Added @vercel/commerce-local to `site` * Updated commerce config * Updated exports and commerce config * Updated commerce hoc * Fixed exports in local * Added publish config * Updated imports in site * It's actually working * Don't use debugger in dev for better speeds * Improved DX when editing packages * Set up eslint with husky * Updated prettier config * Added prettier setup to every package * Moved bigcommerce * Moved Bigcommerce to src and package updates * Updated setup of bigcommerce * Moved definitions script * Moved commercejs * Move to src * Fixed types in commercejs * Moved kibocommerce * Moved kibocommerce to src * Added package/tsconfig to kibocommerce * Fixed imports and other things * Moved ordercloud * Moved ordercloud to src * Fixed imports * Added missing prettier files * Moved Saleor * Moved Saleor to src * Fixed imports * Replaced all imports to @commerce * Added prettierignore/rc to all providers * Moved shopify to src * Build shopify in packages * Moved Spree * Moved spree to src * Updated spree * Moved swell * Moved swell to src * Fixed type imports in swell * Moved Vendure to packages * Moved vendure to src * Fixed imports in vendure * Added codegen to saleor * Updated codegen setup for shopify * Added codegen to vendure * Added codegen to kibocommerce * Added all packages to site's deps * Updated codegen setup in bigcommerce * Minor fixes * Updated providers' names in site * Updated packages based on Bel's changes * Updated turbo to latest * Fixed ts complains * Set npm engine in root * New lockfile install * remove engines * Regen lockfile * Switched from npm to yarn * Updated typesVersions in all packages * Moved dep * Updated SWR to the just released 1.2.0 * Removed "isolatedModules" from packages * Updated list of providers and default * Updated swell declaration * Removed next import from kibocommerce * Added COMMERCE_PROVIDER log * Added another log * Updated turbo config * Updated docs * Removed test logs Co-authored-by: Jared Palmer <jared@jaredpalmer.com>
63 lines
1.4 KiB
TypeScript
63 lines
1.4 KiB
TypeScript
import cn from 'classnames'
|
|
import React from 'react'
|
|
import s from './Swatch.module.css'
|
|
import { Check } from '@components/icons'
|
|
import Button, { ButtonProps } from '@components/ui/Button'
|
|
import { isDark } from '@lib/colors'
|
|
interface SwatchProps {
|
|
active?: boolean
|
|
children?: any
|
|
className?: string
|
|
variant?: 'size' | 'color' | string
|
|
color?: string
|
|
label?: string | null
|
|
}
|
|
|
|
const Swatch: React.FC<Omit<ButtonProps, 'variant'> & SwatchProps> = ({
|
|
active,
|
|
className,
|
|
color = '',
|
|
label = null,
|
|
variant = 'size',
|
|
...props
|
|
}) => {
|
|
variant = variant?.toLowerCase()
|
|
|
|
if (label) {
|
|
label = label?.toLowerCase()
|
|
}
|
|
|
|
const swatchClassName = cn(
|
|
s.swatch,
|
|
{
|
|
[s.color]: color,
|
|
[s.active]: active,
|
|
[s.size]: variant === 'size',
|
|
[s.dark]: color ? isDark(color) : false,
|
|
[s.textLabel]: !color && label && label.length > 3,
|
|
},
|
|
className
|
|
)
|
|
|
|
return (
|
|
<Button
|
|
role="option"
|
|
aria-selected={active}
|
|
aria-label={variant && label ? `${variant} ${label}` : 'Variant Swatch'}
|
|
className={swatchClassName}
|
|
{...(label && color && { title: label })}
|
|
style={color ? { backgroundColor: color } : {}}
|
|
{...props}
|
|
>
|
|
{color && active && (
|
|
<span>
|
|
<Check />
|
|
</span>
|
|
)}
|
|
{!color ? label : null}
|
|
</Button>
|
|
)
|
|
}
|
|
|
|
export default React.memo(Swatch)
|