fix(admin-ui): Lint all UI files (#3459)
This commit is contained in:
committed by
GitHub
parent
55febef7f1
commit
ad7d7fcd51
@@ -34,18 +34,18 @@ const Avatar: React.FC<AvatarProps> = ({
|
||||
return (
|
||||
<RadixAvatar.Root
|
||||
className={clsx(
|
||||
"w-full h-full items-center justify-center overflow-hidden select-none rounded-circle",
|
||||
"rounded-circle h-full w-full select-none items-center justify-center overflow-hidden",
|
||||
color
|
||||
)}
|
||||
>
|
||||
<RadixAvatar.Image
|
||||
src={user?.img}
|
||||
alt={username}
|
||||
className="object-cover w-full h-full rounded-circle"
|
||||
className="rounded-circle h-full w-full object-cover"
|
||||
/>
|
||||
<RadixAvatar.Fallback
|
||||
className={clsx(
|
||||
"w-full h-full flex items-center justify-center bg-inherit text-grey-0 rounded-circle",
|
||||
"text-grey-0 rounded-circle flex h-full w-full items-center justify-center bg-inherit",
|
||||
font
|
||||
)}
|
||||
>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import clsx from "clsx"
|
||||
import React from "react"
|
||||
import { useNavigate } from "react-router-dom"
|
||||
import ArrowLeftIcon from "../../fundamentals/icons/arrow-left-icon"
|
||||
|
||||
@@ -18,7 +17,7 @@ const BackButton = ({ path, label = "Go back", className }: Props) => {
|
||||
}}
|
||||
className={clsx("px-small py-xsmall", className)}
|
||||
>
|
||||
<div className="flex items-center gap-x-xsmall text-grey-50 inter-grey-40 inter-small-semibold">
|
||||
<div className="gap-x-xsmall text-grey-50 inter-grey-40 inter-small-semibold flex items-center">
|
||||
<ArrowLeftIcon size={20} />
|
||||
<span className="ml-1">{label}</span>
|
||||
</div>
|
||||
|
||||
@@ -12,13 +12,13 @@ const Checkbox = React.forwardRef(
|
||||
useImperativeHandle(ref, () => checkboxRef.current)
|
||||
return (
|
||||
<label
|
||||
className={clsx("flex items-center cursor-pointer", className)}
|
||||
className={clsx("flex cursor-pointer items-center", className)}
|
||||
htmlFor={id}
|
||||
>
|
||||
<input
|
||||
type="checkbox"
|
||||
ref={checkboxRef}
|
||||
className="form-checkbox w-[20px] h-[20px] rounded-base text-violet-60 focus:ring-0 mr-small border-grey-30"
|
||||
className="form-checkbox rounded-base text-violet-60 mr-small border-grey-30 h-[20px] w-[20px] focus:ring-0"
|
||||
value={value}
|
||||
id={id}
|
||||
{...rest}
|
||||
|
||||
@@ -12,7 +12,7 @@ const CustomHeader = ({
|
||||
|
||||
const year = date.getFullYear()
|
||||
return (
|
||||
<div className="flex w-full gap-4 items-center">
|
||||
<div className="flex w-full items-center gap-4">
|
||||
<div className="flex flex-1 items-center justify-end gap-3">
|
||||
<NativeSelect
|
||||
defaultValue={monthName}
|
||||
|
||||
@@ -50,13 +50,13 @@ const DatePicker: React.FC<DateTimePickerProps> = ({
|
||||
<PopoverPrimitive.Root open={isOpen} onOpenChange={setIsOpen}>
|
||||
<PopoverPrimitive.Trigger asChild>
|
||||
<button
|
||||
className={clsx("w-full rounded-rounded border ", {
|
||||
className={clsx("rounded-rounded w-full border ", {
|
||||
"shadow-input border-violet-60": isOpen,
|
||||
"border-grey-20": !isOpen,
|
||||
})}
|
||||
>
|
||||
<InputContainer className="border-0 shadown-none focus-within:shadow-none">
|
||||
<div className="w-full flex text-grey-50 pr-0.5 justify-between">
|
||||
<InputContainer className="shadown-none border-0 focus-within:shadow-none">
|
||||
<div className="text-grey-50 flex w-full justify-between pr-0.5">
|
||||
<InputHeader
|
||||
{...{
|
||||
label,
|
||||
@@ -76,15 +76,15 @@ const DatePicker: React.FC<DateTimePickerProps> = ({
|
||||
<PopoverPrimitive.Content
|
||||
side="top"
|
||||
sideOffset={8}
|
||||
className="rounded-rounded px-8 border border-grey-20 bg-grey-0 w-full shadow-dropdown"
|
||||
className="rounded-rounded border-grey-20 bg-grey-0 shadow-dropdown w-full border px-8"
|
||||
>
|
||||
<CalendarComponent date={tempDate} onChange={setTempDate} />
|
||||
<div className="flex w-full mb-8 mt-5">
|
||||
<div className="mb-8 mt-5 flex w-full">
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="medium"
|
||||
onClick={() => setIsOpen(false)}
|
||||
className="mr-2 w-1/3 flex justify-center border border-grey-20"
|
||||
className="border-grey-20 mr-2 flex w-1/3 justify-center border"
|
||||
>
|
||||
Cancel
|
||||
</Button>
|
||||
@@ -92,7 +92,7 @@ const DatePicker: React.FC<DateTimePickerProps> = ({
|
||||
size="medium"
|
||||
variant="primary"
|
||||
onClick={() => submitDate()}
|
||||
className="w-2/3 flex justify-center"
|
||||
className="flex w-2/3 justify-center"
|
||||
>{`Set ${label}`}</Button>
|
||||
</div>
|
||||
</PopoverPrimitive.Content>
|
||||
|
||||
@@ -49,13 +49,13 @@ const TimePicker: React.FC<DateTimePickerProps> = ({
|
||||
<PopoverPrimitive.Root open={isOpen} onOpenChange={setIsOpen}>
|
||||
<PopoverPrimitive.Trigger asChild>
|
||||
<button
|
||||
className={clsx("w-full rounded-rounded border ", {
|
||||
className={clsx("rounded-rounded w-full border ", {
|
||||
"shadow-input border-violet-60": isOpen,
|
||||
"border-grey-20": !isOpen,
|
||||
})}
|
||||
>
|
||||
<InputContainer className="border-0 shadown-none focus-within:shadow-none">
|
||||
<div className="w-full flex text-grey-50 pr-0.5 justify-between">
|
||||
<InputContainer className="shadown-none border-0 focus-within:shadow-none">
|
||||
<div className="text-grey-50 flex w-full justify-between pr-0.5">
|
||||
<InputHeader
|
||||
{...{
|
||||
label,
|
||||
@@ -66,7 +66,7 @@ const TimePicker: React.FC<DateTimePickerProps> = ({
|
||||
/>
|
||||
<ArrowDownIcon size={16} />
|
||||
</div>
|
||||
<div className="w-full items-center flex text-left text-grey-40">
|
||||
<div className="text-grey-40 flex w-full items-center text-left">
|
||||
<ClockIcon size={16} />
|
||||
<span className="mx-1">UTC</span>
|
||||
<span className="text-grey-90">
|
||||
@@ -79,7 +79,7 @@ const TimePicker: React.FC<DateTimePickerProps> = ({
|
||||
<PopoverPrimitive.Content
|
||||
side="top"
|
||||
sideOffset={8}
|
||||
className="rounded-rounded scrollbar-hide border px-6 pt-6 pb-4 border-grey-20 bg-grey-0 w-full flex shadow-dropdown"
|
||||
className="rounded-rounded scrollbar-hide border-grey-20 bg-grey-0 shadow-dropdown flex w-full border px-6 pt-6 pb-4"
|
||||
>
|
||||
<NumberScroller
|
||||
numbers={hourNumbers}
|
||||
@@ -92,7 +92,7 @@ const TimePicker: React.FC<DateTimePickerProps> = ({
|
||||
selected={selectedMinute}
|
||||
onSelect={(n) => setSelectedMinute(n)}
|
||||
/>
|
||||
<div className="absolute bottom-4 left-0 right-0 bg-gradient-to-b from-transparent to-grey-0 h-xlarge z-10" />
|
||||
<div className="to-grey-0 h-xlarge absolute bottom-4 left-0 right-0 z-10 bg-gradient-to-b from-transparent" />
|
||||
</PopoverPrimitive.Content>
|
||||
</PopoverPrimitive.Root>
|
||||
</div>
|
||||
|
||||
@@ -37,7 +37,7 @@ const Fade: React.FC<FadeProps> = ({
|
||||
|
||||
return (
|
||||
<div
|
||||
className={clsx("transition-all duration-100 z-50", classes, classname)}
|
||||
className={clsx("z-50 transition-all duration-100", classes, classname)}
|
||||
>
|
||||
{show ? children : null}
|
||||
</div>
|
||||
|
||||
@@ -77,7 +77,7 @@ const FileUploadField: React.FC<FileUploadFieldProps> = ({
|
||||
onDrop={handleFileDrop}
|
||||
onDragOver={(e) => e.preventDefault()}
|
||||
className={clsx(
|
||||
"flex flex-col select-none inter-base-regular text-grey-50 cursor-pointer items-center justify-center w-full h-full rounded-rounded border-2 border-dashed border-grey-20 transition-colors hover:border-violet-60 hover:text-grey-40",
|
||||
"inter-base-regular text-grey-50 rounded-rounded border-grey-20 hover:border-violet-60 hover:text-grey-40 flex h-full w-full cursor-pointer select-none flex-col items-center justify-center border-2 border-dashed transition-colors",
|
||||
className
|
||||
)}
|
||||
>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import clsx from "clsx"
|
||||
import React from "react"
|
||||
import TaxesIcon from "../../fundamentals/icons/taxes-icon"
|
||||
import Tooltip from "../tooltip"
|
||||
|
||||
@@ -10,7 +9,7 @@ type Props = {
|
||||
const IncludesTaxTooltip = ({ includesTax }: Props) => {
|
||||
return (
|
||||
<Tooltip content={includesTax ? "Tax incl. price" : "Tax excl. price"}>
|
||||
<div className="w-large h-large rounded-rounded border border-grey-20 flex items-center justify-center">
|
||||
<div className="w-large h-large rounded-rounded border-grey-20 flex items-center justify-center border">
|
||||
<TaxesIcon
|
||||
size={16}
|
||||
className={clsx({
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { ErrorMessage } from "@hookform/error-message"
|
||||
import clsx from "clsx"
|
||||
import React from "react"
|
||||
import { MultipleFieldErrors } from "react-hook-form"
|
||||
import Tooltip from "../tooltip"
|
||||
|
||||
@@ -22,7 +21,7 @@ const InputError = ({ errors, name, className }: InputErrorProps) => {
|
||||
render={({ message, messages }) => {
|
||||
return (
|
||||
<div
|
||||
className={clsx("text-rose-50 inter-small-regular mt-2", className)}
|
||||
className={clsx("inter-small-regular mt-2 text-rose-50", className)}
|
||||
>
|
||||
{messages ? (
|
||||
<MultipleMessages messages={messages} />
|
||||
@@ -43,12 +42,12 @@ const MultipleMessages = ({ messages }: { messages: MultipleFieldErrors }) => {
|
||||
const remainderErrors = errors.slice(1)
|
||||
|
||||
return (
|
||||
<div className="flex items-center gap-x-1 cursor-default">
|
||||
<div className="flex cursor-default items-center gap-x-1">
|
||||
<p>{displayedError}</p>
|
||||
{remainderErrors?.length > 0 && (
|
||||
<Tooltip
|
||||
content={
|
||||
<div className="text-rose-50 inter-small-regular">
|
||||
<div className="inter-small-regular text-rose-50">
|
||||
{remainderErrors.map((e, i) => {
|
||||
return (
|
||||
<p key={i}>
|
||||
|
||||
@@ -30,7 +30,7 @@ const Notification: React.FC<NotificationProps> = ({
|
||||
return (
|
||||
<ToasterContainer visible={toast.visible} className="w-[380px]">
|
||||
<div>{getIcon(type)}</div>
|
||||
<div className="flex flex-col ml-small mr-base gap-y-2xsmall flex-grow text-white">
|
||||
<div className="ml-small mr-base gap-y-2xsmall flex flex-grow flex-col text-white">
|
||||
<span className="inter-small-semibold">{title}</span>
|
||||
<span className="inter-small-regular text-grey-20">{message}</span>
|
||||
</div>
|
||||
|
||||
@@ -18,7 +18,7 @@ const NumberScroller: React.FC<NumberScrollerProps> = ({
|
||||
<div
|
||||
{...props}
|
||||
className={clsx(
|
||||
"flex flex-col time-list h-[305px] overflow-y-auto",
|
||||
"time-list flex h-[305px] flex-col overflow-y-auto",
|
||||
className
|
||||
)}
|
||||
>
|
||||
@@ -27,14 +27,14 @@ const NumberScroller: React.FC<NumberScrollerProps> = ({
|
||||
<div
|
||||
key={i}
|
||||
className={clsx(
|
||||
"w-[40px] h-[40px] last:mb-4 rounded inter-base-regular hover:bg-grey-20",
|
||||
"inter-base-regular hover:bg-grey-20 h-[40px] w-[40px] rounded last:mb-4",
|
||||
{
|
||||
"bg-violet-60 hover:bg-violet-50 text-grey-0 inter-base-semibold":
|
||||
"bg-violet-60 text-grey-0 inter-base-semibold hover:bg-violet-50":
|
||||
n === selected,
|
||||
}
|
||||
)}
|
||||
>
|
||||
<button onClick={() => onSelect(n)} className="w-full h-full py-2">
|
||||
<button onClick={() => onSelect(n)} className="h-full w-full py-2">
|
||||
{n.toLocaleString("en-US", { minimumIntegerDigits: 2 })}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import React from "react"
|
||||
|
||||
type OSShortcutProps = {
|
||||
winModifiers: string | string[]
|
||||
macModifiers: string | string[]
|
||||
@@ -38,8 +36,8 @@ const OSShortcut = ({ winModifiers, macModifiers, keys }: OSShortcutProps) => {
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="flex items-center text-grey-40">
|
||||
<p className="m-0 inter-base-semibold">
|
||||
<div className="text-grey-40 flex items-center">
|
||||
<p className="inter-base-semibold m-0">
|
||||
<span className="inter-base-semibold">{modifiers} </span>
|
||||
{input}
|
||||
</p>
|
||||
|
||||
@@ -32,7 +32,7 @@ const ErrorState: React.FC<SavingStateProps> = ({
|
||||
<div>
|
||||
<XCircleIcon size={20} className="text-rose-40" />
|
||||
</div>
|
||||
<div className="flex flex-col ml-small mr-base gap-y-2xsmall flex-grow">
|
||||
<div className="ml-small mr-base gap-y-2xsmall flex flex-grow flex-col">
|
||||
<span className="inter-small-semibold">{title}</span>
|
||||
<span className="inter-small-regular text-grey-50">{message}</span>
|
||||
</div>
|
||||
|
||||
@@ -54,21 +54,21 @@ const SaveNotification: React.FC<SaveNotificationProps> = ({
|
||||
}
|
||||
|
||||
return (
|
||||
<ToasterContainer visible={toast.visible} className="p-0 pl-base w-[448px]">
|
||||
<ToasterContainer visible={toast.visible} className="pl-base w-[448px] p-0">
|
||||
<div className="py-base">{getIcon(icon)}</div>
|
||||
<div className="flex flex-col ml-small mr-base gap-y-2xsmall flex-grow py-base">
|
||||
<div className="ml-small mr-base gap-y-2xsmall py-base flex flex-grow flex-col">
|
||||
<span className="inter-small-semibold">{title}</span>
|
||||
<span className="inter-small-regular text-grey-50">{message}</span>
|
||||
</div>
|
||||
<div className="flex flex-col inter-small-semibold border-l border-grey-20 h-full">
|
||||
<div className="inter-small-semibold border-grey-20 flex h-full flex-col border-l">
|
||||
<button
|
||||
onClick={handleSave}
|
||||
className="inter-small-semibold flex items-center justify-center h-1/2 border-b border-grey-20 px-base text-violet-60"
|
||||
className="inter-small-semibold border-grey-20 px-base text-violet-60 flex h-1/2 items-center justify-center border-b"
|
||||
>
|
||||
Publish
|
||||
</button>
|
||||
<button
|
||||
className="inter-small-semibold flex items-center justify-center h-1/2 px-base"
|
||||
className="inter-small-semibold px-base flex h-1/2 items-center justify-center"
|
||||
onClick={onDismiss}
|
||||
>
|
||||
Discard
|
||||
|
||||
@@ -19,7 +19,7 @@ const SavingState: React.FC<SavingStateProps> = ({
|
||||
<div>
|
||||
<Spinner variant="secondary" size="large" />
|
||||
</div>
|
||||
<div className="flex flex-col ml-small mr-base gap-y-2xsmall flex-grow">
|
||||
<div className="ml-small mr-base gap-y-2xsmall flex flex-grow flex-col">
|
||||
<span className="inter-small-semibold">{title}</span>
|
||||
<span className="inter-small-regular text-grey-50">{message}</span>
|
||||
</div>
|
||||
|
||||
@@ -32,7 +32,7 @@ const SuccessState: React.FC<SavingStateProps> = ({
|
||||
<div>
|
||||
<CheckCircleIcon size={20} className="text-emerald-40" />
|
||||
</div>
|
||||
<div className="flex flex-col ml-small mr-base gap-y-2xsmall flex-grow">
|
||||
<div className="ml-small mr-base gap-y-2xsmall flex flex-grow flex-col">
|
||||
<span className="inter-small-semibold">{title}</span>
|
||||
<span className="inter-small-regular text-grey-50">{message}</span>
|
||||
</div>
|
||||
|
||||
@@ -19,10 +19,10 @@ const Spinner: React.FC<SpinnerProps> = ({
|
||||
{ "h-[16px] w-[16px]": size === "small" }
|
||||
)}
|
||||
>
|
||||
<div className="flex items-center justify-center relative w-full h-full">
|
||||
<div className="relative flex h-full w-full items-center justify-center">
|
||||
<div
|
||||
className={clsx(
|
||||
"animate-ring border-2 h-4/5 w-4/5 rounded-circle border-transparent",
|
||||
"animate-ring rounded-circle h-4/5 w-4/5 border-2 border-transparent",
|
||||
{ "border-t-grey-0": variant === "primary" },
|
||||
{ "border-t-violet-60": variant === "secondary" }
|
||||
)}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import * as RadixSwitch from "@radix-ui/react-switch"
|
||||
import clsx from "clsx"
|
||||
import React from "react"
|
||||
|
||||
/**
|
||||
* A controlled switch component atom.
|
||||
@@ -11,12 +10,12 @@ function Switch(props: RadixSwitch.SwitchProps) {
|
||||
{...props}
|
||||
disabled={props.disabled}
|
||||
className={clsx(
|
||||
"w-8 h-[18px] rounded-full transition-bg bg-gray-300 radix-state-checked:bg-violet-60"
|
||||
"transition-bg radix-state-checked:bg-violet-60 h-[18px] w-8 rounded-full bg-gray-300"
|
||||
)}
|
||||
>
|
||||
<RadixSwitch.Thumb
|
||||
className={clsx(
|
||||
"w-2 h-2 bg-white rounded-full block transition-transform translate-x-[5px] radix-state-checked:translate-x-[19px]"
|
||||
"radix-state-checked:translate-x-[19px] block h-2 w-2 translate-x-[5px] rounded-full bg-white transition-transform"
|
||||
)}
|
||||
/>
|
||||
</RadixSwitch.Root>
|
||||
|
||||
@@ -11,17 +11,17 @@ export const Thumbnail = ({ src, className, size = "small" }: Props) => {
|
||||
return (
|
||||
<div
|
||||
className={clsx(
|
||||
"bg-grey-5 flex items-center justify-center overflow-hidden rounded-rounded",
|
||||
"bg-grey-5 rounded-rounded flex items-center justify-center overflow-hidden",
|
||||
{
|
||||
"w-[30px] h-10": size === "small",
|
||||
"w-9 h-12": size === "medium",
|
||||
"w-[170px] h-[226px]": size === "large",
|
||||
"h-10 w-[30px]": size === "small",
|
||||
"h-12 w-9": size === "medium",
|
||||
"h-[226px] w-[170px]": size === "large",
|
||||
},
|
||||
className
|
||||
)}
|
||||
>
|
||||
{src ? (
|
||||
<img src={src} className="object-cover object-center flex-1" />
|
||||
<img src={src} className="flex-1 object-cover object-center" />
|
||||
) : (
|
||||
<ImagePlaceholderIcon />
|
||||
)}
|
||||
|
||||
@@ -14,7 +14,7 @@ const ToasterContainer: React.FC<ToasterContainerProps> = ({
|
||||
return (
|
||||
<div
|
||||
className={clsx(
|
||||
"flex items-start bg-grey-90 p-base border rounded-rounded shadow-toaster mb-xsmall last:mb-0",
|
||||
"bg-grey-90 p-base rounded-rounded shadow-toaster mb-xsmall flex items-start border last:mb-0",
|
||||
{
|
||||
"animate-enter": visible,
|
||||
},
|
||||
|
||||
@@ -41,8 +41,8 @@ const Tooltip = ({
|
||||
align="center"
|
||||
className={clsx(
|
||||
"inter-small-semibold text-grey-50",
|
||||
"bg-grey-0 py-2 px-3 shadow-dropdown rounded-rounded",
|
||||
"border border-solid border-grey-20",
|
||||
"bg-grey-0 shadow-dropdown rounded-rounded py-2 px-3",
|
||||
"border-grey-20 border border-solid",
|
||||
"max-w-[220px]",
|
||||
className
|
||||
)}
|
||||
|
||||
@@ -60,10 +60,10 @@ const TwoStepDelete = forwardRef<HTMLButtonElement, Props>(
|
||||
return (
|
||||
<button
|
||||
className={clsx(
|
||||
"transition-all rounded-lg border flex items-center justify-center",
|
||||
"flex items-center justify-center rounded-lg border transition-all",
|
||||
{
|
||||
"bg-rose-50 border-rose-50 px-3 py-1.5": armed,
|
||||
"bg-transparent border-gray-20 p-1.5": !armed,
|
||||
"border-rose-50 bg-rose-50 px-3 py-1.5": armed,
|
||||
"border-gray-20 bg-transparent p-1.5": !armed,
|
||||
},
|
||||
{
|
||||
"!bg-grey-40 !border-grey-40 !p-1.5": deleting,
|
||||
@@ -75,14 +75,14 @@ const TwoStepDelete = forwardRef<HTMLButtonElement, Props>(
|
||||
ref={innerRef}
|
||||
>
|
||||
<div
|
||||
className={clsx("text-rose-50 inter-small-semibold", {
|
||||
className={clsx("inter-small-semibold text-rose-50", {
|
||||
hidden: armed || deleting,
|
||||
})}
|
||||
>
|
||||
{children || <TrashIcon className="text-grey-50" size={20} />}
|
||||
</div>
|
||||
<span
|
||||
className={clsx("text-white inter-small-semibold", {
|
||||
className={clsx("inter-small-semibold text-white", {
|
||||
hidden: !armed || deleting,
|
||||
})}
|
||||
>
|
||||
|
||||
@@ -23,7 +23,7 @@ const IconBadge: React.FC<IconBadgeProps> = ({
|
||||
<Badge
|
||||
variant={variant ?? "default"}
|
||||
className={clsx(
|
||||
"flex items-center justify-center aspect-square w-[40px] h-[40px] border-2 border-white outline outline-1 outline-grey-20",
|
||||
"outline-grey-20 flex aspect-square h-[40px] w-[40px] items-center justify-center border-2 border-white outline outline-1",
|
||||
className
|
||||
)}
|
||||
{...rest}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { FC } from "react"
|
||||
import { FC } from "react"
|
||||
import IconProps from "./types/icon-type"
|
||||
|
||||
const DownloadIcon: FC<IconProps> = (props) => {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { FC } from "react"
|
||||
import { FC } from "react"
|
||||
import IconProps from "./types/icon-type"
|
||||
|
||||
const FileIcon: FC<IconProps> = (props) => {
|
||||
|
||||
@@ -44,7 +44,6 @@ const SadFaceIcon: React.FC<IconProps> = ({
|
||||
strokeLinejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -43,7 +43,6 @@ const SidedMouthFaceIcon: React.FC<IconProps> = ({
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
/>
|
||||
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ import ImagePlaceholderIcon from "./icons/image-placeholder-icon"
|
||||
|
||||
const ImagePlaceholder = () => {
|
||||
return (
|
||||
<div className="flex items-center justify-center w-full h-full rounded-soft bg-grey-5">
|
||||
<div className="rounded-soft bg-grey-5 flex h-full w-full items-center justify-center">
|
||||
<ImagePlaceholderIcon size={12} />
|
||||
</div>
|
||||
)
|
||||
|
||||
@@ -25,7 +25,7 @@ const InputContainer: React.FC<InputContainerProps> = ({
|
||||
}
|
||||
}}
|
||||
className={clsx([
|
||||
`bg-grey-5 inter-base-regular w-full p-3 flex h-18 flex-col cursor-text border border-grey-20 focus-within:shadow-input focus-within:border-violet-60 rounded-rounded`,
|
||||
`bg-grey-5 inter-base-regular h-18 border-grey-20 focus-within:shadow-input focus-within:border-violet-60 rounded-rounded flex w-full cursor-text flex-col border p-3`,
|
||||
className,
|
||||
])}
|
||||
>
|
||||
|
||||
@@ -20,14 +20,14 @@ const InputHeader: React.FC<InputHeaderProps> = ({
|
||||
return (
|
||||
<div
|
||||
className={clsx(
|
||||
"w-full flex inter-small-semibold text-grey-50 items-center",
|
||||
"inter-small-semibold text-grey-50 flex w-full items-center",
|
||||
className
|
||||
)}
|
||||
>
|
||||
<label>{label}</label>
|
||||
{required && <div className="text-rose-50 "> *</div>}
|
||||
{tooltip || tooltipContent ? (
|
||||
<div className="flex ml-1.5">
|
||||
<div className="ml-1.5 flex">
|
||||
{tooltip || <IconTooltip content={tooltipContent} />}
|
||||
</div>
|
||||
) : null}
|
||||
|
||||
@@ -32,7 +32,7 @@ const Actionables: React.FC<ActionablesProps> = ({
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="small"
|
||||
className="w-xlarge h-xlarge focus-visible:outline-none focus-visible:shadow-input focus-visible:border-violet-60 focus:shadow-none"
|
||||
className="w-xlarge h-xlarge focus-visible:shadow-input focus-visible:border-violet-60 focus:shadow-none focus-visible:outline-none"
|
||||
>
|
||||
<MoreHorizontalIcon size={20} />
|
||||
</Button>
|
||||
@@ -43,7 +43,7 @@ const Actionables: React.FC<ActionablesProps> = ({
|
||||
|
||||
<DropdownMenu.Content
|
||||
sideOffset={5}
|
||||
className="border bg-grey-0 border-grey-20 rounded-rounded shadow-dropdown p-xsmall min-w-[200px] z-30"
|
||||
className="bg-grey-0 border-grey-20 rounded-rounded shadow-dropdown p-xsmall z-30 min-w-[200px] border"
|
||||
>
|
||||
{actions.map((action, i) => {
|
||||
return (
|
||||
@@ -52,9 +52,9 @@ const Actionables: React.FC<ActionablesProps> = ({
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="small"
|
||||
className={clsx("w-full justify-start flex", {
|
||||
className={clsx("flex w-full justify-start", {
|
||||
"text-rose-50": action?.variant === "danger",
|
||||
"opacity-50 select-none pointer-events-none":
|
||||
"pointer-events-none select-none opacity-50":
|
||||
action?.disabled,
|
||||
})}
|
||||
onClick={action?.onClick}
|
||||
@@ -97,7 +97,7 @@ const Actionables: React.FC<ActionablesProps> = ({
|
||||
onClick={action.onClick}
|
||||
>
|
||||
{action.icon ? (
|
||||
<div className="flex items-center gap-x-2xsmall">
|
||||
<div className="gap-x-2xsmall flex items-center">
|
||||
{action.icon}
|
||||
{action.label}
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { MutableRefObject, ReactNode } from "react"
|
||||
import React, { ReactNode } from "react"
|
||||
import StatusIndicator from "../../fundamentals/status-indicator"
|
||||
import Tooltip from "../../atoms/tooltip"
|
||||
import clsx from "clsx"
|
||||
@@ -16,18 +16,12 @@ export type ActivityCardProps = {
|
||||
export const ActivityCard: React.FC<ActivityCardProps> = (
|
||||
props: ActivityCardProps
|
||||
) => {
|
||||
const {
|
||||
key,
|
||||
title,
|
||||
icon,
|
||||
relativeTimeElapsed,
|
||||
shouldShowStatus,
|
||||
children
|
||||
} = props
|
||||
const { key, title, icon, relativeTimeElapsed, shouldShowStatus, children } =
|
||||
props
|
||||
|
||||
const date = !!props.date && new Date(props.date).toLocaleDateString(
|
||||
"en-us",
|
||||
{
|
||||
const date =
|
||||
!!props.date &&
|
||||
new Date(props.date).toLocaleDateString("en-us", {
|
||||
hour12: true,
|
||||
day: "2-digit",
|
||||
month: "short",
|
||||
@@ -40,47 +34,33 @@ export const ActivityCard: React.FC<ActivityCardProps> = (
|
||||
const getTimeElement = () => {
|
||||
return (
|
||||
<div className="flex cursor-default">
|
||||
{
|
||||
!!relativeTimeElapsed && (
|
||||
<span >{relativeTimeElapsed}</span>
|
||||
)
|
||||
}
|
||||
{
|
||||
shouldShowStatus &&
|
||||
<StatusIndicator variant={"primary"} className="ml-2"/>
|
||||
}
|
||||
{!!relativeTimeElapsed && <span>{relativeTimeElapsed}</span>}
|
||||
{shouldShowStatus && (
|
||||
<StatusIndicator variant={"primary"} className="ml-2" />
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<div key={key} className="mx-8 border-b last:border-b-0 border-grey-20">
|
||||
<div className="flex hover:bg-grey-5 -mx-8 px-8 py-6">
|
||||
<div className="relative w-full h-full">
|
||||
<div className="flex justify-between inter-small-semibold text-grey-90">
|
||||
<div key={key} className="border-grey-20 mx-8 border-b last:border-b-0">
|
||||
<div className="hover:bg-grey-5 -mx-8 flex px-8 py-6">
|
||||
<div className="relative h-full w-full">
|
||||
<div className="inter-small-semibold text-grey-90 flex justify-between">
|
||||
<div className="flex">
|
||||
{
|
||||
!!icon && icon
|
||||
}
|
||||
{!!icon && icon}
|
||||
<span>{title}</span>
|
||||
</div>
|
||||
|
||||
{
|
||||
((!!relativeTimeElapsed || shouldShowStatus)) && (
|
||||
formattedDate ? (
|
||||
<Tooltip content={formattedDate}>
|
||||
{getTimeElement()}
|
||||
</Tooltip>
|
||||
) : (
|
||||
getTimeElement()
|
||||
)
|
||||
)
|
||||
}
|
||||
{(!!relativeTimeElapsed || shouldShowStatus) &&
|
||||
(formattedDate ? (
|
||||
<Tooltip content={formattedDate}>{getTimeElement()}</Tooltip>
|
||||
) : (
|
||||
getTimeElement()
|
||||
))}
|
||||
</div>
|
||||
|
||||
<div className={clsx(!!icon && "pl-8")}>
|
||||
{children}
|
||||
</div>
|
||||
<div className={clsx(!!icon && "pl-8")}>{children}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+5
-5
@@ -87,10 +87,10 @@ const AmountAndCurrencyInput = ({
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="flex flex-col w-full">
|
||||
<div className="flex w-full flex-col">
|
||||
{label && <InputHeader label={label} className="mb-xsmall" />}
|
||||
<div className="focus-within:shadow-focus-border rounded-rounded">
|
||||
<div className="relative bg-grey-5 rounded-rounded h-10 shadow-border focus-within:shadow-cta transition-colors">
|
||||
<div className="bg-grey-5 rounded-rounded shadow-border focus-within:shadow-cta relative h-10 transition-colors">
|
||||
<NextSelect
|
||||
customStyles={{
|
||||
control:
|
||||
@@ -107,7 +107,7 @@ const AmountAndCurrencyInput = ({
|
||||
value={value.currency}
|
||||
onChange={onCurrencyChange}
|
||||
/>
|
||||
<div className="absolute left-[92px] inset-y-0 right-0 flex items-center pl-xsmall pr-base inter-base-regular h-10">
|
||||
<div className="pl-xsmall pr-base inter-base-regular absolute inset-y-0 left-[92px] right-0 flex h-10 items-center">
|
||||
<AmountField
|
||||
ref={inputRef}
|
||||
step={step}
|
||||
@@ -118,9 +118,9 @@ const AmountAndCurrencyInput = ({
|
||||
allowNegativeValue={false}
|
||||
placeholder="-"
|
||||
decimalScale={decimal_digits}
|
||||
className="bg-transparent outline-none outline-0 w-full remove-number-spinner leading-base text-grey-90 font-normal caret-violet-60 placeholder-grey-40 text-right"
|
||||
className="remove-number-spinner leading-base text-grey-90 caret-violet-60 placeholder-grey-40 w-full bg-transparent text-right font-normal outline-none outline-0"
|
||||
/>
|
||||
<div className="flex items-center min-w-[16px] ml-2xsmall">
|
||||
<div className="ml-2xsmall flex min-w-[16px] items-center">
|
||||
<p className="text-grey-40 w-full text-right">{symbol_native}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import clsx from "clsx"
|
||||
import React, { useEffect, useState } from "react"
|
||||
import { useEffect, useState } from "react"
|
||||
import AmountField from "react-currency-input-field"
|
||||
import { currencies } from "../../../utils/currencies"
|
||||
import InputError from "../../atoms/input-error"
|
||||
@@ -22,9 +22,8 @@ const AmountInput = ({
|
||||
value,
|
||||
onChange,
|
||||
}: Props) => {
|
||||
const { symbol_native, decimal_digits } = currencies[
|
||||
currencyCode.toUpperCase()
|
||||
]
|
||||
const { symbol_native, decimal_digits } =
|
||||
currencies[currencyCode.toUpperCase()]
|
||||
|
||||
const getFormattedValue = (value: number) => {
|
||||
return `${value / 10 ** decimal_digits}`
|
||||
@@ -57,7 +56,7 @@ const AmountInput = ({
|
||||
{label && <InputHeader label={label} className="mb-xsmall" />}
|
||||
<div
|
||||
className={clsx(
|
||||
"w-full flex items-center bg-grey-5 border border-gray-20 px-base py-xsmall rounded-rounded h-10 focus-within:shadow-input focus-within:border-violet-60 inter-base-regular",
|
||||
"bg-grey-5 border-gray-20 px-base py-xsmall rounded-rounded focus-within:shadow-input focus-within:border-violet-60 inter-base-regular flex h-10 w-full items-center border",
|
||||
{
|
||||
"border-rose-50": errors && name && errors[name],
|
||||
}
|
||||
@@ -67,7 +66,7 @@ const AmountInput = ({
|
||||
<p>{currencyCode.toUpperCase()}</p>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center gap-2xsmall w-full">
|
||||
<div className="gap-2xsmall flex w-full items-center">
|
||||
<AmountField
|
||||
step={step}
|
||||
value={formattedValue}
|
||||
@@ -77,9 +76,9 @@ const AmountInput = ({
|
||||
allowNegativeValue={false}
|
||||
placeholder="-"
|
||||
decimalScale={decimal_digits}
|
||||
className="bg-transparent outline-none outline-0 w-full remove-number-spinner leading-base text-grey-90 font-normal caret-violet-60 placeholder-grey-40 text-right"
|
||||
className="remove-number-spinner leading-base text-grey-90 caret-violet-60 placeholder-grey-40 w-full bg-transparent text-right font-normal outline-none outline-0"
|
||||
/>
|
||||
<div className="flex items-center min-w-[16px] ml-2xsmall">
|
||||
<div className="ml-2xsmall flex min-w-[16px] items-center">
|
||||
<p className="text-grey-40 w-full text-right">{symbol_native}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -37,7 +37,7 @@ const AvailabilityDuration: React.FC<AvailabilityDurationProps> = ({
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div className="grid grid-cols-3 grid-rows-2 gap-x-xsmall gap-y-base mt-xlarge">
|
||||
<div className="gap-x-xsmall gap-y-base mt-xlarge grid grid-cols-3 grid-rows-2">
|
||||
<InputField
|
||||
label="Years"
|
||||
type="number"
|
||||
|
||||
@@ -19,14 +19,14 @@ const BannerCard: React.FC<BannerCardProps> & {
|
||||
Footer: React.FC
|
||||
} = ({ title, thumbnail, actions, children }) => {
|
||||
return (
|
||||
<div className="rounded-rounded border bg-grey-0 border-grey-20 w-full p-base medium:p-xlarge">
|
||||
<div className="flex gap-large items-start">
|
||||
<div className="rounded-rounded bg-grey-0 border-grey-20 p-base medium:p-xlarge w-full border">
|
||||
<div className="gap-large flex items-start">
|
||||
{thumbnail && (
|
||||
<div className="min-w-[72px] min-h-[72px] w-[72px] h-[72px] rounded-base overflow-hidden">
|
||||
<div className="rounded-base h-[72px] min-h-[72px] w-[72px] min-w-[72px] overflow-hidden">
|
||||
<img
|
||||
src={thumbnail}
|
||||
alt="Thumbnail"
|
||||
className="w-full h-full object-cover"
|
||||
className="h-full w-full object-cover"
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
@@ -48,7 +48,7 @@ const Description: React.FC<BannerCardDescriptionProps> = ({
|
||||
}) => {
|
||||
return (
|
||||
<div>
|
||||
<p className="inter-small-regular text-grey-50 max-w-[460px] line-clamp-2">
|
||||
<p className="inter-small-regular text-grey-50 line-clamp-2 max-w-[460px]">
|
||||
{children}
|
||||
</p>
|
||||
{cta && (
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { ReactNode } from "react"
|
||||
import { ReactNode } from "react"
|
||||
|
||||
type Props = {
|
||||
fileName: string
|
||||
@@ -8,31 +8,27 @@ type Props = {
|
||||
}
|
||||
|
||||
const BatchJobFileCard = ({ fileName, fileSize, icon, onClick }: Props) => {
|
||||
const preparedOnClick = (onClick ?? (() => void 0))
|
||||
const preparedOnClick = onClick ?? (() => void 0)
|
||||
|
||||
return (
|
||||
<div
|
||||
className="flex items-center w-full cursor-pointer mt-4"
|
||||
className="mt-4 flex w-full cursor-pointer items-center"
|
||||
onClick={preparedOnClick}
|
||||
>
|
||||
<div
|
||||
className="flex items-center justify-center p-2.5 border border-grey-20 rounded-lg"
|
||||
className="border-grey-20 flex items-center justify-center rounded-lg border p-2.5"
|
||||
title={fileName}
|
||||
>
|
||||
{!!icon && icon}
|
||||
</div>
|
||||
|
||||
<div className="text-left relative w-full pl-4">
|
||||
<div
|
||||
className="overflow-hidden truncate inter-small-regular max-w-[80%]"
|
||||
>
|
||||
<div className="relative w-full pl-4 text-left">
|
||||
<div className="inter-small-regular max-w-[80%] overflow-hidden truncate">
|
||||
{fileName}
|
||||
</div>
|
||||
|
||||
{!!fileSize && (
|
||||
<div className="text-grey-40 inter-small-regular">
|
||||
{fileSize}
|
||||
</div>
|
||||
<div className="text-grey-40 inter-small-regular">{fileSize}</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -20,7 +20,7 @@ const Breadcrumb: React.FC<BreadcrumbProps> = ({
|
||||
return (
|
||||
<div
|
||||
className={clsx(
|
||||
"w-full flex items-center inter-small-semibold text-grey-50 mb-4",
|
||||
"inter-small-semibold text-grey-50 mb-4 flex w-full items-center",
|
||||
className
|
||||
)}
|
||||
{...props}
|
||||
|
||||
@@ -22,9 +22,8 @@ type TCollapsibleTreeContext = {
|
||||
toggle: () => void
|
||||
}
|
||||
|
||||
const CollapsibleTreeContext = React.createContext<TCollapsibleTreeContext | null>(
|
||||
null
|
||||
)
|
||||
const CollapsibleTreeContext =
|
||||
React.createContext<TCollapsibleTreeContext | null>(null)
|
||||
|
||||
export const CollapsibleTree: CollapsibleTreeType = ({ children }) => {
|
||||
const [open, setOpen] = React.useState(false)
|
||||
@@ -66,7 +65,7 @@ const CollapsibleTreeContent: React.FC<CollapsibleTreeContentProps> = ({
|
||||
return (
|
||||
<div
|
||||
className={clsx(
|
||||
"pl-5 mt-xsmall",
|
||||
"mt-xsmall pl-5",
|
||||
{
|
||||
hidden: !open,
|
||||
"animate-fade-in-top": open,
|
||||
@@ -100,15 +99,15 @@ const CollapsibleTreeParent: React.FC<CollapsibleTreeParentProps> = ({
|
||||
<Container className={className}>
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="gap-x-small flex items-center">{children}</div>
|
||||
<div className="flex items-center gap-x-xsmall">
|
||||
<div className="gap-x-xsmall flex items-center">
|
||||
{actions && (
|
||||
<Actionables customTrigger={Trigger()} actions={actions} />
|
||||
)}
|
||||
<div className="h-5 w-px rounded-circle bg-grey-20" />
|
||||
<div className="rounded-circle bg-grey-20 h-5 w-px" />
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="small"
|
||||
className="p-[6px] text-grey-50"
|
||||
className="text-grey-50 p-[6px]"
|
||||
onClick={toggle}
|
||||
>
|
||||
{open ? <MinusIcon size={20} /> : <PlusIcon size={20} />}
|
||||
@@ -137,16 +136,16 @@ const CollapsibleTreeLeaf: React.FC<CollapsibleTreeLeafProps> = ({
|
||||
return (
|
||||
<div
|
||||
className={clsx(
|
||||
"col-tree flex items-center relative pb-xsmall last:pb-0",
|
||||
"col-tree pb-xsmall relative flex items-center last:pb-0",
|
||||
className
|
||||
)}
|
||||
>
|
||||
<div className="absolute top-0 left-0 bottom-0">
|
||||
<div className="border-l border-dashed border-grey-20 h-1/2 w-px" />
|
||||
<div className="h-1/2 border-l border-dashed border-grey-20 w-px bottom-half-dash" />
|
||||
<div className="border-grey-20 h-1/2 w-px border-l border-dashed" />
|
||||
<div className="border-grey-20 bottom-half-dash h-1/2 w-px border-l border-dashed" />
|
||||
</div>
|
||||
<div className="w-[13px] h-px border-t border-grey-20 border-dashed mr-xsmall" />
|
||||
<Container className="w-full flex items-center justify-between inter-small-regular">
|
||||
<div className="border-grey-20 mr-xsmall h-px w-[13px] border-t border-dashed" />
|
||||
<Container className="inter-small-regular flex w-full items-center justify-between">
|
||||
{children}
|
||||
{actions && (
|
||||
<Actionables
|
||||
@@ -169,7 +168,7 @@ const Container: React.FC<{ className?: string }> = ({
|
||||
return (
|
||||
<div
|
||||
className={clsx(
|
||||
"rounded-rounded border border-grey-20 py-2xsmall px-small",
|
||||
"rounded-rounded border-grey-20 py-2xsmall px-small border",
|
||||
className
|
||||
)}
|
||||
>
|
||||
@@ -180,7 +179,7 @@ const Container: React.FC<{ className?: string }> = ({
|
||||
|
||||
const Trigger = () => {
|
||||
return (
|
||||
<Button variant="ghost" size="small" className="p-[6px] text-grey-50">
|
||||
<Button variant="ghost" size="small" className="text-grey-50 p-[6px]">
|
||||
<MoreHorizontalIcon size={20} />
|
||||
</Button>
|
||||
)
|
||||
|
||||
@@ -22,11 +22,11 @@ const CustomerAvatarItem: React.FC<CustomerAvatarItemProps> = ({
|
||||
: "-"
|
||||
|
||||
return (
|
||||
<div className="flex items-center py-1.5 w-full">
|
||||
<div className="w-[24px] h-[24px]">
|
||||
<div className="flex w-full items-center py-1.5">
|
||||
<div className="h-[24px] w-[24px]">
|
||||
<Avatar user={customer} color={color} />
|
||||
</div>
|
||||
<span className="pl-2.5 w-40 truncate">{identifier}</span>
|
||||
<span className="w-40 truncate pl-2.5">{identifier}</span>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ const EmojiPicker: React.FC<indexProps> = ({ onEmojiClick }) => {
|
||||
variant="ghost"
|
||||
size="small"
|
||||
type="button"
|
||||
className="focus:border-none focus:shadow-none text-grey-40 hover:text-violet-60 p-0 h-5 w-5"
|
||||
className="text-grey-40 hover:text-violet-60 h-5 w-5 p-0 focus:border-none focus:shadow-none"
|
||||
>
|
||||
<HappyIcon size={20} />
|
||||
</Button>
|
||||
@@ -24,7 +24,7 @@ const EmojiPicker: React.FC<indexProps> = ({ onEmojiClick }) => {
|
||||
|
||||
<DropdownMenu.Content
|
||||
sideOffset={5}
|
||||
className="border bg-grey-0 border-grey-20 rounded-rounded shadow-dropdown overflow-hidden min-w-[200px] z-30"
|
||||
className="bg-grey-0 border-grey-20 rounded-rounded shadow-dropdown z-30 min-w-[200px] overflow-hidden border"
|
||||
>
|
||||
<Picker
|
||||
onEmojiClick={(emojiData) => onEmojiClick(emojiData.emoji)}
|
||||
|
||||
@@ -52,13 +52,13 @@ const FilterDropdownContainer = ({
|
||||
<RadixPopover.Content
|
||||
sideOffset={8}
|
||||
style={heightStyle}
|
||||
className="bg-grey-0 overflow-y-auto rounded-rounded shadow-dropdown max-w-[272px] py-4 z-40"
|
||||
className="bg-grey-0 rounded-rounded shadow-dropdown z-40 max-w-[272px] overflow-y-auto py-4"
|
||||
>
|
||||
<div className="flex px-4 pb-4 border-b border-grey-20">
|
||||
<div className="border-grey-20 flex border-b px-4 pb-4">
|
||||
<Button
|
||||
size="small"
|
||||
tabIndex={-1}
|
||||
className="mr-2 border border-grey-20"
|
||||
className="border-grey-20 mr-2 border"
|
||||
variant="ghost"
|
||||
onClick={() => onClear()}
|
||||
>
|
||||
@@ -76,7 +76,7 @@ const FilterDropdownContainer = ({
|
||||
</div>
|
||||
{React.Children.map(children, (child) => {
|
||||
return (
|
||||
<div className="border-b border-grey-20 py-2 px-4 last:pb-0 last:border-0">
|
||||
<div className="border-grey-20 border-b py-2 px-4 last:border-0 last:pb-0">
|
||||
{child}
|
||||
</div>
|
||||
)
|
||||
|
||||
@@ -96,7 +96,7 @@ const FilterDropdownItem = ({
|
||||
>
|
||||
<RadixCollapsible.Trigger
|
||||
className={clsx(
|
||||
"py-1.5 px-3 flex w-full items-center hover:bg-grey-5 rounded justify-between",
|
||||
"hover:bg-grey-5 flex w-full items-center justify-between rounded py-1.5 px-3",
|
||||
{
|
||||
"inter-small-semibold": open,
|
||||
"inter-small-regular": !open,
|
||||
@@ -105,7 +105,7 @@ const FilterDropdownItem = ({
|
||||
>
|
||||
<div className="flex items-center">
|
||||
<div
|
||||
className={`w-5 h-5 flex justify-center text-grey-0 border-grey-30 border rounded-base ${
|
||||
className={`text-grey-0 border-grey-30 rounded-base flex h-5 w-5 justify-center border ${
|
||||
open && "bg-violet-60"
|
||||
}`}
|
||||
>
|
||||
@@ -130,17 +130,17 @@ const FilterDropdownItem = ({
|
||||
</RadixCollapsible.Trigger>
|
||||
<RadixCollapsible.Content className="w-full">
|
||||
{hasPrev && (
|
||||
<div className="py-2 pl-6 flex">
|
||||
<div className="flex py-2 pl-6">
|
||||
<button
|
||||
onClick={handlePrev}
|
||||
className="font-semibold hover:text-violet-60 text-grey-90"
|
||||
className="hover:text-violet-60 text-grey-90 font-semibold"
|
||||
>
|
||||
Back
|
||||
</button>
|
||||
</div>
|
||||
)}
|
||||
{isLoading ? (
|
||||
<div className="py-1 flex justify-center items-center">
|
||||
<div className="flex items-center justify-center py-1">
|
||||
<Spinner size={"large"} variant={"secondary"} />
|
||||
</div>
|
||||
) : filterTitle === "Date" ? (
|
||||
@@ -167,7 +167,7 @@ const FilterDropdownItem = ({
|
||||
return (
|
||||
<div
|
||||
className={clsx(
|
||||
"w-full flex hover:bg-grey-20 my-1 py-1.5 pl-6 items-center rounded",
|
||||
"hover:bg-grey-20 my-1 flex w-full items-center rounded py-1.5 pl-6",
|
||||
{
|
||||
"inter-small-semibold": checked[value],
|
||||
"inter-small-regular": !checked[value],
|
||||
@@ -177,7 +177,7 @@ const FilterDropdownItem = ({
|
||||
onClick={() => onCheck(value)}
|
||||
>
|
||||
<div
|
||||
className={`w-5 h-5 flex justify-center text-grey-0 border-grey-30 border mr-2 rounded-base ${
|
||||
className={`text-grey-0 border-grey-30 rounded-base mr-2 flex h-5 w-5 justify-center border ${
|
||||
checked[value] === true && "bg-violet-60"
|
||||
}`}
|
||||
>
|
||||
@@ -201,10 +201,10 @@ const FilterDropdownItem = ({
|
||||
})
|
||||
)}
|
||||
{hasMore && (
|
||||
<div className="py-2 pl-6 flex">
|
||||
<div className="flex py-2 pl-6">
|
||||
<button
|
||||
onClick={handleNext}
|
||||
className="font-semibold hover:text-violet-60 text-grey-90"
|
||||
className="hover:text-violet-60 text-grey-90 font-semibold"
|
||||
>
|
||||
Show more
|
||||
</button>
|
||||
@@ -417,7 +417,7 @@ const DateFilter = ({
|
||||
case DateFilters.InTheLast:
|
||||
case DateFilters.OlderThan:
|
||||
return (
|
||||
<div className="flex flex-col w-full">
|
||||
<div className="flex w-full flex-col">
|
||||
<InputField
|
||||
className="pt-0 pb-1"
|
||||
type="number"
|
||||
@@ -429,7 +429,7 @@ const DateFilter = ({
|
||||
/>
|
||||
<RightPopover
|
||||
trigger={
|
||||
<div className="flex w-full items-center justify-between bg-grey-5 border border-grey-20 rounded inter-small-semibold text-grey-90 px-3 py-1.5">
|
||||
<div className="bg-grey-5 border-grey-20 inter-small-semibold text-grey-90 flex w-full items-center justify-between rounded border px-3 py-1.5">
|
||||
<label>{daysMonthsValue}</label>
|
||||
<span className="text-grey-50">
|
||||
<ArrowRightIcon size={16} />
|
||||
@@ -449,10 +449,10 @@ const DateFilter = ({
|
||||
case DateFilters.After:
|
||||
case DateFilters.Before:
|
||||
return (
|
||||
<div className="flex flex-col w-full">
|
||||
<div className="flex w-full flex-col">
|
||||
<RightPopover
|
||||
trigger={
|
||||
<div className="flex w-full items-center justify-between bg-grey-5 border border-grey-20 rounded inter-small-semibold text-grey-90 px-3 py-1.5">
|
||||
<div className="bg-grey-5 border-grey-20 inter-small-semibold text-grey-90 flex w-full items-center justify-between rounded border px-3 py-1.5">
|
||||
<label>
|
||||
{startDate ? moment(startDate).format("MM.DD.YYYY") : "-"}
|
||||
</label>
|
||||
@@ -477,7 +477,7 @@ const DateFilter = ({
|
||||
<div className="pl-9">
|
||||
<RightPopover
|
||||
trigger={
|
||||
<div className="flex w-full items-center justify-between bg-grey-5 border border-grey-20 rounded inter-small-semibold text-grey-90 px-3 py-1.5">
|
||||
<div className="bg-grey-5 border-grey-20 inter-small-semibold text-grey-90 flex w-full items-center justify-between rounded border px-3 py-1.5">
|
||||
<label>{currentFilter}</label>
|
||||
<span className="text-grey-50">
|
||||
<ArrowRightIcon size={16} />
|
||||
@@ -506,7 +506,7 @@ const PopoverOptions = ({ options, onClick, selectedItem }) => {
|
||||
onClick(item)
|
||||
}}
|
||||
className={clsx(
|
||||
"px-3 py-1.5 my-1 flex items-center rounded hover:bg-grey-5 cursor-pointer",
|
||||
"hover:bg-grey-5 my-1 flex cursor-pointer items-center rounded px-3 py-1.5",
|
||||
{
|
||||
"inter-small-semibold": item === selectedItem,
|
||||
"inter-small-regular": item !== selectedItem,
|
||||
@@ -515,15 +515,15 @@ const PopoverOptions = ({ options, onClick, selectedItem }) => {
|
||||
>
|
||||
<div
|
||||
className={clsx(
|
||||
"rounded-full flex items-center justify-center mr-2 w-4 h-4",
|
||||
"mr-2 flex h-4 w-4 items-center justify-center rounded-full",
|
||||
{
|
||||
"border-2 border-violet-60": item === selectedItem,
|
||||
"border border-grey-30 ": item !== selectedItem,
|
||||
"border-violet-60 border-2": item === selectedItem,
|
||||
"border-grey-30 border ": item !== selectedItem,
|
||||
}
|
||||
)}
|
||||
>
|
||||
{item === selectedItem && (
|
||||
<div className="rounded-full w-2 h-2 bg-violet-60" />
|
||||
<div className="bg-violet-60 h-2 w-2 rounded-full" />
|
||||
)}
|
||||
</div>
|
||||
{item}
|
||||
@@ -535,7 +535,7 @@ const PopoverOptions = ({ options, onClick, selectedItem }) => {
|
||||
|
||||
const RightPopover = ({ trigger, children }) => (
|
||||
<RadixPopover.Root>
|
||||
<RadixPopover.Trigger className="w-full my-1">
|
||||
<RadixPopover.Trigger className="my-1 w-full">
|
||||
{trigger}
|
||||
</RadixPopover.Trigger>
|
||||
<RadixPopover.Content
|
||||
@@ -543,7 +543,7 @@ const RightPopover = ({ trigger, children }) => (
|
||||
align="start"
|
||||
alignOffset={-8}
|
||||
sideOffset={20}
|
||||
className="flex flex-col bg-grey-0 rounded-rounded shadow-dropdown p-2 top-2/4"
|
||||
className="bg-grey-0 rounded-rounded shadow-dropdown top-2/4 flex flex-col p-2"
|
||||
>
|
||||
{children}
|
||||
</RadixPopover.Content>
|
||||
|
||||
@@ -25,13 +25,13 @@ const SaveFilterItem: React.FC<SaveFilterItemProps> = ({
|
||||
return (
|
||||
<div className="mt-2 flex w-full">
|
||||
<InputField
|
||||
className="pt-0 pb-1 max-w-[172px]"
|
||||
className="max-w-[172px] pt-0 pb-1"
|
||||
placeholder="Name your filter..."
|
||||
onChange={(e) => setName(e.target.value)}
|
||||
value={name}
|
||||
/>
|
||||
<Button
|
||||
className="border ml-2 border-grey-20"
|
||||
className="border-grey-20 ml-2 border"
|
||||
variant="ghost"
|
||||
size="small"
|
||||
onClick={onSave}
|
||||
|
||||
@@ -43,7 +43,7 @@ export const FilterTab: React.FC<FilterTabProps> = ({
|
||||
onKeyUp={handleKeyPress}
|
||||
onClick={handleClick}
|
||||
className={clsx(
|
||||
"flex items-center bg-grey-5 border border-grey-20 inter-small-regular px-2 h-6 text-grey-50 rounded-rounded focus-visible:outline-none focus-visible:shadow-input focus-visible:border-violet-60 flex items-center space-x-1",
|
||||
"bg-grey-5 border-grey-20 inter-small-regular text-grey-50 rounded-rounded focus-visible:shadow-input focus-visible:border-violet-60 flex flex h-6 items-center items-center space-x-1 border px-2 focus-visible:outline-none",
|
||||
{
|
||||
["bg-violet-5 border-violet-60 text-violet-60 "]: isActive,
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ const FormErrorToaster: React.FC<FormErrorToasterProps> = ({
|
||||
<div>
|
||||
<XCircleIcon size={20} className="text-rose-40" />
|
||||
</div>
|
||||
<div className="flex flex-col ml-small mr-base gap-y-2xsmall flex-grow text-grey-0">
|
||||
<div className="ml-small mr-base gap-y-2xsmall text-grey-0 flex flex-grow flex-col">
|
||||
<span className="inter-small-semibold">{title}</span>
|
||||
<span className="inter-small-regular text-grey-20">{message}</span>
|
||||
</div>
|
||||
|
||||
@@ -39,7 +39,7 @@ const FormToasterContainer: React.FC<FormToasterContainerProps> & {
|
||||
const content = useMemo(() => {
|
||||
if (isLoading) {
|
||||
return (
|
||||
<div className="flex items-center p-base gap-x-base">
|
||||
<div className="p-base gap-x-base flex items-center">
|
||||
<span>
|
||||
<Spinner />
|
||||
</span>
|
||||
@@ -49,7 +49,7 @@ const FormToasterContainer: React.FC<FormToasterContainerProps> & {
|
||||
} else {
|
||||
return (
|
||||
<>
|
||||
<div className="flex items-center p-base gap-x-base">
|
||||
<div className="p-base gap-x-base flex items-center">
|
||||
<span>{icon}</span>
|
||||
<span className="inter-small-regular">{unsavedChangesMessage}</span>
|
||||
</div>
|
||||
@@ -67,7 +67,7 @@ const FormToasterContainer: React.FC<FormToasterContainerProps> & {
|
||||
})}
|
||||
{...toast?.ariaProps}
|
||||
>
|
||||
<div className="flex items-center rounded-rounded bg-grey-90 h-[72px] w-[344px] text-grey-0 justify-between">
|
||||
<div className="rounded-rounded bg-grey-90 text-grey-0 flex h-[72px] w-[344px] items-center justify-between">
|
||||
{content}
|
||||
</div>
|
||||
</div>
|
||||
@@ -76,10 +76,10 @@ const FormToasterContainer: React.FC<FormToasterContainerProps> & {
|
||||
|
||||
const Actions: React.FC = ({ children }) => {
|
||||
return (
|
||||
<div className="border-l border-grey-70 h-full">
|
||||
<div className="border-grey-70 h-full border-l">
|
||||
{Children.map(children, (child) => {
|
||||
return (
|
||||
<div className="flex items-center justify-center border-b border-grey-70 last:border-none h-1/2 w-[72px]">
|
||||
<div className="border-grey-70 flex h-1/2 w-[72px] items-center justify-center border-b last:border-none">
|
||||
{child}
|
||||
</div>
|
||||
)
|
||||
@@ -96,7 +96,7 @@ const DiscardButton: React.FC<HTMLAttributes<HTMLButtonElement>> = ({
|
||||
return (
|
||||
<button
|
||||
className={clsx(
|
||||
"flex items-center justify-center text-white inter-small-semibold h-full w-full",
|
||||
"inter-small-semibold flex h-full w-full items-center justify-center text-white",
|
||||
className
|
||||
)}
|
||||
{...props}
|
||||
@@ -114,7 +114,7 @@ const ActionButton: React.FC<HTMLAttributes<HTMLButtonElement>> = ({
|
||||
return (
|
||||
<button
|
||||
className={clsx(
|
||||
"flex items-center justify-center text-white inter-small-semibold h-full w-full",
|
||||
"inter-small-semibold flex h-full w-full items-center justify-center text-white",
|
||||
className
|
||||
)}
|
||||
{...props}
|
||||
@@ -133,7 +133,7 @@ const MultiActionButton: React.FC<MultiActionButtonProps> = ({
|
||||
<Dropdown.Root>
|
||||
<Dropdown.Trigger
|
||||
className={clsx(
|
||||
"inter-small-semibold flex items-center justify-center h-full w-full",
|
||||
"inter-small-semibold flex h-full w-full items-center justify-center",
|
||||
className
|
||||
)}
|
||||
>
|
||||
@@ -142,7 +142,7 @@ const MultiActionButton: React.FC<MultiActionButtonProps> = ({
|
||||
</Dropdown.Trigger>
|
||||
|
||||
<Dropdown.Content
|
||||
className="rounded-rounded flex bg-grey-90 text-white p-xsmall flex-col min-w-[208px]"
|
||||
className="rounded-rounded bg-grey-90 p-xsmall flex min-w-[208px] flex-col text-white"
|
||||
sideOffset={10}
|
||||
>
|
||||
{actions.map((action, i) => {
|
||||
@@ -150,7 +150,7 @@ const MultiActionButton: React.FC<MultiActionButtonProps> = ({
|
||||
<Dropdown.Item key={i}>
|
||||
<button
|
||||
onClick={action.onClick}
|
||||
className="p-2xsmall hover:bg-grey-80 hover:outline-none inter-small-semibold rounded-base text-left flex items-center w-full"
|
||||
className="p-2xsmall hover:bg-grey-80 inter-small-semibold rounded-base flex w-full items-center text-left hover:outline-none"
|
||||
>
|
||||
{action.icon && (
|
||||
<span className="text-grey-0 mr-xsmall">
|
||||
|
||||
@@ -71,7 +71,7 @@ const GeneratingInput = React.forwardRef(
|
||||
ref={inputRef}
|
||||
value={value}
|
||||
onChange={handleChange}
|
||||
className="bg-inherit outline-none outline-0 w-full remove-number-spinner leading-base text-grey-90 font-normal caret-violet-60 placeholder-grey-40"
|
||||
className="remove-number-spinner leading-base text-grey-90 caret-violet-60 placeholder-grey-40 w-full bg-inherit font-normal outline-none outline-0"
|
||||
placeholder={placeholder}
|
||||
autoComplete="off"
|
||||
name={name}
|
||||
|
||||
@@ -5,7 +5,7 @@ type GridInputProps = React.InputHTMLAttributes<HTMLInputElement>
|
||||
const GridInput: React.FC<GridInputProps> = ({ value, ...props }) => {
|
||||
return (
|
||||
<input
|
||||
className="outline-none outline-0 leading-base bg-transparent py-4 px-2 w-full h-full border rounded-rounded border-transparent inter-small-regular placeholder:text-grey-40 focus-within:shadow-input focus-within:border focus-within:border-violet-60"
|
||||
className="leading-base rounded-rounded inter-small-regular placeholder:text-grey-40 focus-within:shadow-input focus-within:border-violet-60 h-full w-full border border-transparent bg-transparent py-4 px-2 outline-none outline-0 focus-within:border"
|
||||
value={value}
|
||||
{...props}
|
||||
/>
|
||||
|
||||
@@ -13,7 +13,7 @@ const HotKeyAction = ({ label, hotKey, icon, onAction }: HotKeyActionProps) => {
|
||||
return (
|
||||
<div className="flex items-center gap-2">
|
||||
<span className="text-grey-0 inter-small-semibold">{label}</span>
|
||||
<div className="inter-small-semibold text-grey-30 flex items-center justify-center w-[24px] h-[24px] rounded bg-grey-70">
|
||||
<div className="inter-small-semibold text-grey-30 bg-grey-70 flex h-[24px] w-[24px] items-center justify-center rounded">
|
||||
{icon}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -18,11 +18,11 @@ const IconTooltip: React.FC<IconTooltipProps> = ({
|
||||
const icon = (type: IconTooltipProps["type"]) => {
|
||||
switch (type) {
|
||||
case "warning":
|
||||
return <AlertIcon size={size} className="flex text-orange-40" />
|
||||
return <AlertIcon size={size} className="text-orange-40 flex" />
|
||||
case "error":
|
||||
return <XCircleIcon size={size} className="flex text-rose-40" />
|
||||
return <XCircleIcon size={size} className="text-rose-40 flex" />
|
||||
default:
|
||||
return <InfoIcon size={size} className="flex text-grey-40" />
|
||||
return <InfoIcon size={size} className="text-grey-40 flex" />
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ const IndeterminateCheckbox = React.forwardRef<
|
||||
<div className="flex h-full items-center">
|
||||
<div
|
||||
onClick={handleClick}
|
||||
className={`flex h-5 w-5 cursor-pointer justify-center rounded-base border border-grey-30 text-grey-0 ${
|
||||
className={`rounded-base border-grey-30 text-grey-0 flex h-5 w-5 cursor-pointer justify-center border ${
|
||||
rest.disabled
|
||||
? checked
|
||||
? "bg-gray-300"
|
||||
|
||||
@@ -52,12 +52,12 @@ const SigninInput = React.forwardRef(
|
||||
return (
|
||||
<div
|
||||
className={clsx(
|
||||
"w-[320px] h-[48px] mb-xsmall last:mb-0 border rounded-rounded overflow-hidden",
|
||||
"mb-xsmall rounded-rounded h-[48px] w-[320px] overflow-hidden border last:mb-0",
|
||||
"bg-grey-5 inter-base-regular placeholder:text-grey-40",
|
||||
"focus-within:shadow-input focus-within:border-violet-60",
|
||||
"flex items-center",
|
||||
{
|
||||
"pointer-events-none focus-within:shadow-none focus-within:border-none text-grey-40":
|
||||
"text-grey-40 pointer-events-none focus-within:border-none focus-within:shadow-none":
|
||||
props.readOnly,
|
||||
},
|
||||
className
|
||||
@@ -68,7 +68,7 @@ const SigninInput = React.forwardRef(
|
||||
)}
|
||||
<input
|
||||
className={clsx(
|
||||
"outline-none outline-0 remove-number-spinner leading-base bg-transparent w-full py-3 px-4",
|
||||
"remove-number-spinner leading-base w-full bg-transparent py-3 px-4 outline-none outline-0",
|
||||
{
|
||||
"pl-xsmall": props.readOnly,
|
||||
}
|
||||
@@ -86,7 +86,7 @@ const SigninInput = React.forwardRef(
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => setShowPassword(!showPassword)}
|
||||
className="text-grey-40 px-4 focus:outline-none focus:text-violet-60"
|
||||
className="text-grey-40 focus:text-violet-60 px-4 focus:outline-none"
|
||||
>
|
||||
{showPassword ? <EyeIcon /> : <EyeOffIcon />}
|
||||
</button>
|
||||
|
||||
@@ -29,8 +29,8 @@ const JSONView = ({ data }: JSONViewProps) => {
|
||||
<div className="px-base py-xsmall rounded-rounded bg-grey-5 w-full">
|
||||
<Collapsible.Root open={expanded} onOpenChange={setExpanded}>
|
||||
<Collapsible.Trigger asChild>
|
||||
<div className="flex items-center justify-between cursor-pointer">
|
||||
<div className="flex items-center gap-x-xsmall inter-base-regular">
|
||||
<div className="flex cursor-pointer items-center justify-between">
|
||||
<div className="gap-x-xsmall inter-base-regular flex items-center">
|
||||
<p className="inter-base-semibold">
|
||||
{expanded ? "{" : length > 0 ? "{ ... }" : "{}"}
|
||||
</p>
|
||||
@@ -66,9 +66,9 @@ const JSONView = ({ data }: JSONViewProps) => {
|
||||
shouldExpandNode={() => false}
|
||||
/>
|
||||
</div>
|
||||
<div className="flex items-center justify-between w-full">
|
||||
<div className="flex w-full items-center justify-between">
|
||||
{expanded && <p className="inter-base-semibold">{`}`}</p>}
|
||||
<div className="flex items-center gap-x-xsmall text-grey-50 inter-small-regular">
|
||||
<div className="gap-x-xsmall text-grey-50 inter-small-regular flex items-center">
|
||||
{isCopied && (
|
||||
<span className="animate-fade-in-right">Copied!</span>
|
||||
)}
|
||||
|
||||
@@ -26,7 +26,7 @@ type BasicFocusModalProps = {
|
||||
const FocusModal: IFocusModal = ({ className, children }) => (
|
||||
<div
|
||||
className={clsx(
|
||||
"absolute inset-0 bg-grey-0 z-50 flex flex-col items-center",
|
||||
"bg-grey-0 absolute inset-0 z-50 flex flex-col items-center",
|
||||
className
|
||||
)}
|
||||
>
|
||||
@@ -37,7 +37,7 @@ const FocusModal: IFocusModal = ({ className, children }) => (
|
||||
FocusModal.Header = ({ children, className }) => (
|
||||
<div
|
||||
className={clsx(
|
||||
"w-full border-b py-4 border-b-grey-20 flex justify-center",
|
||||
"border-b-grey-20 flex w-full justify-center border-b py-4",
|
||||
className
|
||||
)}
|
||||
>
|
||||
@@ -46,7 +46,7 @@ FocusModal.Header = ({ children, className }) => (
|
||||
)
|
||||
|
||||
FocusModal.Main = ({ children, className }) => (
|
||||
<div className={clsx("w-full px-8 overflow-y-auto h-full", className)}>
|
||||
<div className={clsx("h-full w-full overflow-y-auto px-8", className)}>
|
||||
{children}
|
||||
</div>
|
||||
)
|
||||
@@ -79,12 +79,12 @@ const BasicFocusModalHeader: React.FC<BasicFocusModalProps> = ({
|
||||
}) => {
|
||||
return (
|
||||
<FocusModal.Header>
|
||||
<div className="medium:w-8/12 w-full px-8 flex justify-between">
|
||||
<div className="medium:w-8/12 flex w-full justify-between px-8">
|
||||
<Button
|
||||
size="small"
|
||||
variant="ghost"
|
||||
onClick={handleClose}
|
||||
className="border rounded-rounded w-8 h-8"
|
||||
className="rounded-rounded h-8 w-8 border"
|
||||
>
|
||||
<CrossIcon size={20} />
|
||||
</Button>
|
||||
@@ -93,7 +93,7 @@ const BasicFocusModalHeader: React.FC<BasicFocusModalProps> = ({
|
||||
onClick={handleClose}
|
||||
size="small"
|
||||
variant="ghost"
|
||||
className="border rounded-rounded"
|
||||
className="rounded-rounded border"
|
||||
>
|
||||
{cancelText || "Cancel"}
|
||||
</Button>
|
||||
|
||||
@@ -43,7 +43,7 @@ type ModalType = React.FC<ModalProps> & {
|
||||
|
||||
const Overlay: React.FC<React.PropsWithChildren> = ({ children }) => {
|
||||
return (
|
||||
<Dialog.Overlay className="fixed top-0 bottom-0 left-0 right-0 z-50 grid overflow-y-auto bg-grey-90/40 place-items-center">
|
||||
<Dialog.Overlay className="bg-grey-90/40 fixed top-0 bottom-0 left-0 right-0 z-50 grid place-items-center overflow-y-auto">
|
||||
{children}
|
||||
</Dialog.Overlay>
|
||||
)
|
||||
@@ -57,7 +57,7 @@ const Content: React.FC<React.PropsWithChildren> = ({ children }) => {
|
||||
return (
|
||||
<Dialog.Content
|
||||
style={style}
|
||||
className="overflow-x-hidden min-w-modal rounded-rounded bg-grey-0"
|
||||
className="min-w-modal rounded-rounded bg-grey-0 overflow-x-hidden"
|
||||
>
|
||||
{children}
|
||||
</Dialog.Content>
|
||||
@@ -125,7 +125,7 @@ Modal.Content = ({ children, className }) => {
|
||||
Modal.Header = ({ handleClose = undefined, children }) => {
|
||||
return (
|
||||
<div
|
||||
className="flex items-center w-full px-8 py-6 border-b"
|
||||
className="flex w-full items-center border-b px-8 py-6"
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
>
|
||||
<div className="flex flex-grow">{children}</div>
|
||||
|
||||
@@ -112,13 +112,13 @@ const LayeredModal: React.FC<LayeredModalProps> = ({
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="small"
|
||||
className="w-8 h-8 border text-grey-50"
|
||||
className="text-grey-50 h-8 w-8 border"
|
||||
onClick={screen.onBack}
|
||||
>
|
||||
<UTurnIcon size={20} />
|
||||
</Button>
|
||||
<div className="flex items-center gap-x-2xsmall">
|
||||
<h2 className="ml-4 inter-xlarge-semibold">{screen.title}</h2>
|
||||
<div className="gap-x-2xsmall flex items-center">
|
||||
<h2 className="inter-xlarge-semibold ml-4">{screen.title}</h2>
|
||||
{screen.subtitle && (
|
||||
<span className="inter-xlarge-regular text-grey-50">
|
||||
({screen.subtitle})
|
||||
|
||||
@@ -139,7 +139,7 @@ const SteppedModal: React.FC<SteppedProps> = ({
|
||||
>
|
||||
<Modal.Body
|
||||
className={clsx(
|
||||
"transition-transform flex flex-col justify-between duration-100 max-h-full"
|
||||
"flex max-h-full flex-col justify-between transition-transform duration-100"
|
||||
)}
|
||||
>
|
||||
<Modal.Header handleClose={resetAndClose}>
|
||||
@@ -149,20 +149,20 @@ const SteppedModal: React.FC<SteppedProps> = ({
|
||||
(lastScreenIsSummary &&
|
||||
context.currentStep !== steps.length - 1 && (
|
||||
<div className="flex items-center">
|
||||
<span className="text-grey-50 inter-small-regular w-[70px] mr-4">{`Step ${
|
||||
<span className="text-grey-50 inter-small-regular mr-4 w-[70px]">{`Step ${
|
||||
context.currentStep + 1
|
||||
} of ${steps.length}`}</span>
|
||||
{steps.map((_, i) => (
|
||||
<span
|
||||
key={i}
|
||||
className={clsx(
|
||||
"w-2 h-2 rounded-full mr-3",
|
||||
"mr-3 h-2 w-2 rounded-full",
|
||||
{
|
||||
"bg-grey-20": i > context.currentStep,
|
||||
"bg-violet-60": context.currentStep >= i,
|
||||
},
|
||||
{
|
||||
"outline-4 outline outline-violet-20":
|
||||
"outline-violet-20 outline outline-4":
|
||||
context.currentStep === i,
|
||||
}
|
||||
)}
|
||||
@@ -175,7 +175,7 @@ const SteppedModal: React.FC<SteppedProps> = ({
|
||||
<Modal.Content>{steps[context.currentStep]}</Modal.Content>
|
||||
</Modal.Body>
|
||||
<Modal.Footer>
|
||||
<div className="flex justify-end w-full gap-x-xsmall">
|
||||
<div className="gap-x-xsmall flex w-full justify-end">
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="small"
|
||||
|
||||
@@ -23,7 +23,7 @@ const NativeSelect: NativeSelectType = ({
|
||||
return (
|
||||
<RadixSelect.Root {...props}>
|
||||
<RadixSelect.SelectTrigger
|
||||
className="flex items-center inter-base-semibold gap-3 px-2"
|
||||
className="inter-base-semibold flex items-center gap-3 px-2"
|
||||
{...triggerProps}
|
||||
>
|
||||
<RadixSelect.Value />
|
||||
@@ -33,13 +33,13 @@ const NativeSelect: NativeSelectType = ({
|
||||
</RadixSelect.SelectTrigger>
|
||||
<RadixSelect.Content
|
||||
position="popper"
|
||||
className="rounded-rounded scrollbar-hide border px-2 py-2 border-grey-20 bg-grey-0 w-full flex shadow-dropdown z-[9999] max-h-[305px] overflow-y-auto"
|
||||
className="rounded-rounded scrollbar-hide border-grey-20 bg-grey-0 shadow-dropdown z-[9999] flex max-h-[305px] w-full overflow-y-auto border px-2 py-2"
|
||||
>
|
||||
<RadixSelect.ScrollUpButton className="h-[25px] flex items-center justify-center bg-gradient-to-b from-transparent to-grey-0">
|
||||
<RadixSelect.ScrollUpButton className="to-grey-0 flex h-[25px] items-center justify-center bg-gradient-to-b from-transparent">
|
||||
<ChevronUpIcon size={ICON_SIZE} />
|
||||
</RadixSelect.ScrollUpButton>
|
||||
<RadixSelect.Viewport className="p-2">{children}</RadixSelect.Viewport>
|
||||
<RadixSelect.ScrollDownButton className="h-[25px] flex items-center justify-center bg-gradient-to-b from-transparent to-grey-0">
|
||||
<RadixSelect.ScrollDownButton className="to-grey-0 flex h-[25px] items-center justify-center bg-gradient-to-b from-transparent">
|
||||
<ChevronDownIcon size={ICON_SIZE} />
|
||||
</RadixSelect.ScrollDownButton>
|
||||
</RadixSelect.Content>
|
||||
@@ -52,7 +52,7 @@ type ItemProps = RadixSelect.SelectItemProps
|
||||
const Item: React.FC<ItemProps> = ({ children, ...props }) => (
|
||||
<RadixSelect.Item
|
||||
className={clsx(
|
||||
"flex relative justify-start py-1.5 px-9 items-center inter-base-regular rounded hover:bg-grey-10"
|
||||
"inter-base-regular hover:bg-grey-10 relative flex items-center justify-start rounded py-1.5 px-9"
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
|
||||
@@ -44,17 +44,17 @@ const NoteInput: React.FC<NoteInputProps> = ({ onSubmit }) => {
|
||||
return (
|
||||
<form>
|
||||
<div
|
||||
className="flex items-center py-xsmall px-small bg-grey-5 border border-grey-20 rounded-rounded"
|
||||
className="py-xsmall px-small bg-grey-5 border-grey-20 rounded-rounded flex items-center border"
|
||||
onClick={() => inputRef.current?.focus()}
|
||||
>
|
||||
<div className="flex items-center gap-x-small flex-grow">
|
||||
<div className="gap-x-small flex flex-grow items-center">
|
||||
<EmojiPicker onEmojiClick={handleAddEmoji} />
|
||||
<input
|
||||
type="text"
|
||||
placeholder="Write a note..."
|
||||
value={note}
|
||||
onChange={(e) => setNote(e.target.value)}
|
||||
className="flex-grow bg-transparent inter-base-regular placeholder:text-grey-40 focus:outline-none"
|
||||
className="inter-base-regular placeholder:text-grey-40 flex-grow bg-transparent focus:outline-none"
|
||||
ref={inputRef}
|
||||
id="note-input"
|
||||
autoComplete="off"
|
||||
|
||||
@@ -12,7 +12,7 @@ const NotificationBell: React.FC<NotificationBellProps> = ({
|
||||
...attributes
|
||||
}) => {
|
||||
return (
|
||||
<Button className="w-8 h-8" size="small" {...attributes}>
|
||||
<Button className="h-8 w-8" size="small" {...attributes}>
|
||||
{hasNotifications ? <BellNotiIcon /> : <BellIcon />}
|
||||
</Button>
|
||||
)
|
||||
|
||||
@@ -18,17 +18,17 @@ const NumberedItem: React.FC<NumberedItemProps> = ({
|
||||
description,
|
||||
}) => {
|
||||
return (
|
||||
<div className="p-base border rounded-rounded flex gap-base justify-between items-center">
|
||||
<div className="flex overflow-hidden gap-base w-full">
|
||||
<div className="p-base rounded-rounded gap-base flex items-center justify-between border">
|
||||
<div className="gap-base flex w-full overflow-hidden">
|
||||
<div>
|
||||
<Badge
|
||||
className="inter-base-semibold flex justify-center items-center w-[40px] h-[40px]"
|
||||
className="inter-base-semibold flex h-[40px] w-[40px] items-center justify-center"
|
||||
variant="default"
|
||||
>
|
||||
§{index}
|
||||
</Badge>
|
||||
</div>
|
||||
<div className="truncate flex flex-col justify-center flex-1 w-full">
|
||||
<div className="flex w-full flex-1 flex-col justify-center truncate">
|
||||
<div className="inter-small-semibold">{title}</div>
|
||||
{description &&
|
||||
(typeof description === "string" ? (
|
||||
|
||||
@@ -21,7 +21,7 @@ const RMAShippingPrice: React.FC<RMAShippingPriceProps> = ({
|
||||
setUseCustomShippingPrice,
|
||||
}) => {
|
||||
return useCustomShippingPrice ? (
|
||||
<div className="flex items-end mt-4 gap-x-base w-full">
|
||||
<div className="gap-x-base mt-4 flex w-full items-end">
|
||||
<AmountInput
|
||||
label={`Shipping price (${inclTax ? "incl. tax" : "excl. tax"})`}
|
||||
currencyCode={currencyCode}
|
||||
@@ -30,7 +30,7 @@ const RMAShippingPrice: React.FC<RMAShippingPriceProps> = ({
|
||||
/>
|
||||
<Button
|
||||
onClick={() => setUseCustomShippingPrice(false)}
|
||||
className="w-10 h-10 text-grey-40"
|
||||
className="text-grey-40 h-10 w-10"
|
||||
variant="ghost"
|
||||
size="small"
|
||||
>
|
||||
@@ -38,11 +38,11 @@ const RMAShippingPrice: React.FC<RMAShippingPriceProps> = ({
|
||||
</Button>
|
||||
</div>
|
||||
) : (
|
||||
<div className="flex w-full mt-4 justify-end">
|
||||
<div className="mt-4 flex w-full justify-end">
|
||||
<Button
|
||||
onClick={() => setUseCustomShippingPrice(true)}
|
||||
variant="ghost"
|
||||
className="border border-grey-20"
|
||||
className="border-grey-20 border"
|
||||
size="small"
|
||||
>
|
||||
Add custom price
|
||||
|
||||
@@ -18,7 +18,7 @@ const SalesChannelsList = ({ salesChannels, showMax = 3 }: Props) => {
|
||||
{salesChannels
|
||||
.slice(0, showMax)
|
||||
.map((salesChannel, index, slicedArray) => (
|
||||
<span className="ml-1 inter-base-regular text-grey-90 first-of-type:ml-0">
|
||||
<span className="inter-base-regular text-grey-90 ml-1 first-of-type:ml-0">
|
||||
{salesChannel.name}
|
||||
{index < slicedArray.length - 1 && ", "}
|
||||
</span>
|
||||
@@ -34,7 +34,7 @@ const SalesChannelsList = ({ salesChannels, showMax = 3 }: Props) => {
|
||||
}
|
||||
side="top"
|
||||
>
|
||||
<span className="ml-1 text-grey-50">
|
||||
<span className="text-grey-50 ml-1">
|
||||
+ {salesChannels.length - showMax} more
|
||||
</span>
|
||||
</Tooltip>
|
||||
|
||||
@@ -31,7 +31,7 @@ const SearchBar: React.FC = () => {
|
||||
<>
|
||||
<button
|
||||
onClick={() => setShowSearchModal(true)}
|
||||
className="flex basis-1/2 items-center px-small py-[6px]"
|
||||
className="px-small flex basis-1/2 items-center py-[6px]"
|
||||
>
|
||||
<SearchIcon className="text-grey-40" />
|
||||
<div className="ml-5">
|
||||
|
||||
@@ -15,10 +15,10 @@ const Section: React.FC<SectionProps> = ({
|
||||
}) => {
|
||||
return (
|
||||
<div>
|
||||
<div className="flex items-center mb-2xsmall">
|
||||
<div className="mb-2xsmall flex items-center">
|
||||
<h3 className="inter-base-semibold">{title}</h3>
|
||||
{tooltip && (
|
||||
<div className="flex items-center ml-1.5">
|
||||
<div className="ml-1.5 flex items-center">
|
||||
<IconTooltip content={tooltip} />
|
||||
</div>
|
||||
)}
|
||||
|
||||
+7
-7
@@ -34,7 +34,7 @@ export const AdjacentContainer = forwardRef<
|
||||
ref
|
||||
) => {
|
||||
return (
|
||||
<div className="flex flex-col gap-y-xsmall w-full" ref={ref}>
|
||||
<div className="gap-y-xsmall flex w-full flex-col" ref={ref}>
|
||||
{label && (
|
||||
<label
|
||||
className="inter-small-semibold text-grey-50"
|
||||
@@ -77,7 +77,7 @@ export const SelectContainer = <
|
||||
"--has-value": hasValue,
|
||||
},
|
||||
clsx(
|
||||
"relative pointer-events-auto",
|
||||
"pointer-events-auto relative",
|
||||
{ "text-grey-40": isDisabled },
|
||||
className
|
||||
)
|
||||
@@ -116,7 +116,7 @@ export const ValueContainer = <
|
||||
"value-container--has-value": hasValue,
|
||||
},
|
||||
clsx(
|
||||
"group flex items-center flex-wrap relative scrolling-touch overflow-hidden flex-1",
|
||||
"scrolling-touch group relative flex flex-1 flex-wrap items-center overflow-hidden",
|
||||
{
|
||||
"gap-2xsmall": isMulti,
|
||||
},
|
||||
@@ -125,14 +125,14 @@ export const ValueContainer = <
|
||||
)}
|
||||
>
|
||||
{value?.length > 0 && (
|
||||
<div className="h-7 bg-grey-20 text-grey-50 px-small inter-small-semibold flex items-center rounded-rounded gap-x-2xsmall cursor-default">
|
||||
<div className="bg-grey-20 text-grey-50 px-small inter-small-semibold rounded-rounded gap-x-2xsmall flex h-7 cursor-default items-center">
|
||||
<span>{value.length}</span>
|
||||
</div>
|
||||
)}
|
||||
<div className="relative grow">
|
||||
{children}
|
||||
{value?.length > 0 && inputValue === "" && (
|
||||
<span className="absolute top-1/2 -translate-y-1/2 inter-base-regular text-grey-50">
|
||||
<span className="inter-base-regular text-grey-50 absolute top-1/2 -translate-y-1/2">
|
||||
{selectedPlaceholder || label || "Selected"}
|
||||
</span>
|
||||
)}
|
||||
@@ -151,7 +151,7 @@ export const ValueContainer = <
|
||||
"value-container--has-value": hasValue,
|
||||
},
|
||||
clsx(
|
||||
"flex items-center flex-wrap relative scrolling-touch overflow-hidden flex-1",
|
||||
"scrolling-touch relative flex flex-1 flex-wrap items-center overflow-hidden",
|
||||
{
|
||||
"gap-2xsmall": isMulti,
|
||||
},
|
||||
@@ -181,7 +181,7 @@ export const IndicatorsContainer = <
|
||||
{
|
||||
"indicators-container": true,
|
||||
},
|
||||
clsx("text-grey-50 flex items-center gap-x-small px-small", className)
|
||||
clsx("text-grey-50 gap-x-small px-small flex items-center", className)
|
||||
)}
|
||||
>
|
||||
{children}
|
||||
|
||||
+2
-2
@@ -38,7 +38,7 @@ const Control = <
|
||||
"control--menu-is-open": menuIsOpen,
|
||||
},
|
||||
clsx(
|
||||
"flex p-0 overflow-hidden rounded-rounded border border-gray-20 bg-grey-5 focus-within:shadow-cta transition-colors focus-within:border-violet-60 box-border pl-small",
|
||||
"rounded-rounded border-gray-20 bg-grey-5 focus-within:shadow-cta focus-within:border-violet-60 pl-small box-border flex overflow-hidden border p-0 transition-colors",
|
||||
{
|
||||
"h-xlarge": size === "sm",
|
||||
"h-10": size === "md" || !size,
|
||||
@@ -50,7 +50,7 @@ const Control = <
|
||||
>
|
||||
<div
|
||||
className={clsx(
|
||||
"flex items-center flex-1",
|
||||
"flex flex-1 items-center",
|
||||
customStyles?.inner_control
|
||||
)}
|
||||
>
|
||||
|
||||
+11
-11
@@ -53,7 +53,7 @@ const Menu = <
|
||||
className={cx(
|
||||
{ menu: true },
|
||||
clsx(
|
||||
"absolute w-full overflow-hidden border-border z-[60] bg-grey-0 rounded-rounded border border-grey-20 shadow-dropdown mb-base",
|
||||
"border-border bg-grey-0 rounded-rounded border-grey-20 shadow-dropdown mb-base absolute z-[60] w-full overflow-hidden border",
|
||||
{
|
||||
"top-[calc(100%+8px)]": placement === "bottom",
|
||||
"bottom-full": placement === "top",
|
||||
@@ -178,7 +178,7 @@ export const MenuList = <
|
||||
"menu-list": true,
|
||||
"menu-list--is-multi": isMulti,
|
||||
},
|
||||
clsx("overflow-y-auto flex flex-col py-xsmall no-scrollbar", className)
|
||||
clsx("py-xsmall no-scrollbar flex flex-col overflow-y-auto", className)
|
||||
)}
|
||||
>
|
||||
{isMulti && selectAll && (
|
||||
@@ -208,14 +208,14 @@ export const LoadingMessage = <
|
||||
return (
|
||||
<div
|
||||
className={clsx(
|
||||
"w-full flex items-center px-base transition-colors hover:bg-grey-5",
|
||||
"px-base hover:bg-grey-5 flex w-full items-center transition-colors",
|
||||
{
|
||||
"h-xlarge": size === "sm",
|
||||
"h-10": size === "md" || !size,
|
||||
}
|
||||
)}
|
||||
>
|
||||
<div className="bg-grey-10 animate-pulse w-1/4 h-xsmall rounded-rounded" />
|
||||
<div className="bg-grey-10 h-xsmall rounded-rounded w-1/4 animate-pulse" />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -271,9 +271,9 @@ export const Option = <
|
||||
"option--is-focused": isFocused,
|
||||
},
|
||||
clsx(
|
||||
"flex items-center justify-between py-xsmall px-base transition-colors hover:bg-grey-5",
|
||||
"py-xsmall px-base hover:bg-grey-5 flex items-center justify-between transition-colors",
|
||||
{
|
||||
"text-grey-30 select-none cursor-not-allowed": isDisabled,
|
||||
"text-grey-30 cursor-not-allowed select-none": isDisabled,
|
||||
"bg-grey-10": isFocused && !isDisabled,
|
||||
hidden: hideSelectedOptions && isSelected,
|
||||
},
|
||||
@@ -290,13 +290,13 @@ export const Option = <
|
||||
tabIndex={isDisabled ? -1 : 0}
|
||||
{...innerProps}
|
||||
>
|
||||
<div className="flex items-center gap-x-small flex-1">
|
||||
<div className="gap-x-small flex flex-1 items-center">
|
||||
{isMulti && (
|
||||
<CheckboxAdornment isSelected={isSelected} isDisabled={isDisabled} />
|
||||
)}
|
||||
<div
|
||||
className={clsx(
|
||||
"flex items-center justify-between gap-x-xsmall inter-base-regular flex-1",
|
||||
"gap-x-xsmall inter-base-regular flex flex-1 items-center justify-between",
|
||||
{
|
||||
truncate: !!truncateOption,
|
||||
}
|
||||
@@ -306,14 +306,14 @@ export const Option = <
|
||||
<span className="w-full">{children}</span>
|
||||
|
||||
{suffix && (
|
||||
<span className="inter-base-regular justify-self-end text-grey-50">
|
||||
<span className="inter-base-regular text-grey-50 justify-self-end">
|
||||
{suffix}
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
{!isMulti && (
|
||||
<div className="w-5 ml-xsmall">
|
||||
<div className="ml-xsmall w-5">
|
||||
{isSelected && <CheckIcon size={16} />}
|
||||
</div>
|
||||
)}
|
||||
@@ -328,7 +328,7 @@ const CheckboxAdornment = ({
|
||||
return (
|
||||
<div
|
||||
className={clsx(
|
||||
`w-base h-base flex justify-center text-grey-0 border-grey-30 border rounded-base transition-colors`,
|
||||
`w-base h-base text-grey-0 border-grey-30 rounded-base flex justify-center border transition-colors`,
|
||||
{
|
||||
"bg-violet-60 border-violet-60": isSelected,
|
||||
"bg-grey-5": isDisabled,
|
||||
|
||||
+33
-28
@@ -1,13 +1,12 @@
|
||||
import clsx from "clsx";
|
||||
import React from "react";
|
||||
import clsx from "clsx"
|
||||
import {
|
||||
GroupBase,
|
||||
MultiValueGenericProps,
|
||||
MultiValueProps,
|
||||
MultiValueRemoveProps
|
||||
} from "react-select";
|
||||
import CrossIcon from "../../../../fundamentals/icons/cross-icon";
|
||||
import { optionIsFixed } from "../utils";
|
||||
GroupBase,
|
||||
MultiValueGenericProps,
|
||||
MultiValueProps,
|
||||
MultiValueRemoveProps,
|
||||
} from "react-select"
|
||||
import CrossIcon from "../../../../fundamentals/icons/cross-icon"
|
||||
import { optionIsFixed } from "../utils"
|
||||
|
||||
const MultiValue = <
|
||||
Option,
|
||||
@@ -31,12 +30,15 @@ const MultiValue = <
|
||||
<Container
|
||||
data={data}
|
||||
innerProps={{
|
||||
className: cx({
|
||||
"multi-value": true,
|
||||
"multi-value--is-disabled": isDisabled,
|
||||
}, clsx({
|
||||
"bg-grey-70 text-grey-0": isFocused
|
||||
})),
|
||||
className: cx(
|
||||
{
|
||||
"multi-value": true,
|
||||
"multi-value--is-disabled": isDisabled,
|
||||
},
|
||||
clsx({
|
||||
"bg-grey-70 text-grey-0": isFocused,
|
||||
})
|
||||
),
|
||||
...innerProps,
|
||||
}}
|
||||
selectProps={selectProps}
|
||||
@@ -83,31 +85,34 @@ export const MultiValueContainer = <
|
||||
children,
|
||||
innerProps: { className },
|
||||
}: MultiValueGenericProps<Option, IsMulti, Group>) => {
|
||||
return (
|
||||
<span className={clsx("flex items-center gap-x-2xsmall py-2xsmall pl-small pr-2.5 rounded-rounded transition-colors bg-grey-20 text-grey-50 inter-small-semibold", className)}>{children}</span>
|
||||
)
|
||||
return (
|
||||
<span
|
||||
className={clsx(
|
||||
"gap-x-2xsmall py-2xsmall pl-small rounded-rounded bg-grey-20 text-grey-50 inter-small-semibold flex items-center pr-2.5 transition-colors",
|
||||
className
|
||||
)}
|
||||
>
|
||||
{children}
|
||||
</span>
|
||||
)
|
||||
}
|
||||
|
||||
export const MultiValueRemove = <
|
||||
Option = unknown,
|
||||
IsMulti extends boolean = boolean,
|
||||
Group extends GroupBase<Option> = GroupBase<Option>
|
||||
>(
|
||||
>(
|
||||
props: MultiValueRemoveProps<Option, IsMulti, Group>
|
||||
) => {
|
||||
const { children, innerProps, data } = props;
|
||||
const { children, innerProps, data } = props
|
||||
|
||||
if (optionIsFixed(data) && data.isFixed) {
|
||||
return null;
|
||||
return null
|
||||
}
|
||||
|
||||
return (
|
||||
<div
|
||||
{...innerProps}
|
||||
role="button"
|
||||
className="text-grey-40"
|
||||
>
|
||||
<div {...innerProps} role="button" className="text-grey-40">
|
||||
{children || <CrossIcon size={16} />}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
)
|
||||
}
|
||||
|
||||
+1
-2
@@ -1,5 +1,4 @@
|
||||
import clsx from "clsx"
|
||||
import React from "react"
|
||||
import { GroupBase, PlaceholderProps } from "react-select"
|
||||
|
||||
const Placeholder = <
|
||||
@@ -20,7 +19,7 @@ const Placeholder = <
|
||||
placeholder: true,
|
||||
},
|
||||
clsx(
|
||||
"absolute top-1/2 -translate-y-1/2 select-none inter-base-regular text-grey-50",
|
||||
"inter-base-regular text-grey-50 absolute top-1/2 -translate-y-1/2 select-none",
|
||||
className
|
||||
)
|
||||
)}
|
||||
|
||||
+2
-3
@@ -1,5 +1,4 @@
|
||||
import clsx from "clsx"
|
||||
import React from "react"
|
||||
import { GroupBase, SingleValueProps } from "react-select"
|
||||
import { hasPrefix } from "../utils"
|
||||
|
||||
@@ -26,12 +25,12 @@ const SingleValue = <
|
||||
"single-value--is-disabled": isDisabled,
|
||||
},
|
||||
clsx(
|
||||
"overflow-hidden absolute top-1/2 -translate-y-1/2 whitespace-nowrap overflow-ellipsis",
|
||||
"absolute top-1/2 -translate-y-1/2 overflow-hidden overflow-ellipsis whitespace-nowrap",
|
||||
className
|
||||
)
|
||||
)}
|
||||
>
|
||||
<div className="flex items-center gap-x-xsmall inter-base-regular">
|
||||
<div className="gap-x-xsmall inter-base-regular flex items-center">
|
||||
{prefix && <span className="inter-base-semibold">{prefix}</span>}
|
||||
{children}
|
||||
</div>
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import type { MutableRefObject, ReactElement, RefAttributes } from "react"
|
||||
import React, { forwardRef } from "react"
|
||||
import { forwardRef } from "react"
|
||||
import type { GroupBase, SelectInstance } from "react-select"
|
||||
import type { CreatableProps } from "react-select/creatable"
|
||||
import CreatableReactSelect from "react-select/creatable"
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import clsx from "clsx"
|
||||
import React from "react"
|
||||
import {
|
||||
ClearIndicatorProps,
|
||||
components,
|
||||
@@ -39,7 +38,7 @@ const MultiValueLabel = <
|
||||
return (
|
||||
<div
|
||||
{...innerProps}
|
||||
className={clsx("bg-grey-5 mx-0 inter-base-regular p-0", {
|
||||
className={clsx("bg-grey-5 inter-base-regular mx-0 p-0", {
|
||||
"after:content-[',']": !isLast,
|
||||
})}
|
||||
>
|
||||
@@ -59,9 +58,9 @@ const Menu = <
|
||||
return (
|
||||
<components.Menu
|
||||
className={clsx("!rounded-rounded", {
|
||||
"-mt-1 z-60":
|
||||
"z-60 -mt-1":
|
||||
!props.selectProps.isSearchable && props.menuPlacement === "bottom",
|
||||
"mb-3 z-60":
|
||||
"z-60 mb-3":
|
||||
!props.selectProps.isSearchable && props.menuPlacement === "top",
|
||||
})}
|
||||
{...props}
|
||||
@@ -95,7 +94,7 @@ const Placeholder = <
|
||||
props: PlaceholderProps<Option, IsMulti, Group>
|
||||
) => {
|
||||
return props.selectProps.menuIsOpen ? null : (
|
||||
<components.Placeholder {...props} className="!mx-0 !text-grey-40" />
|
||||
<components.Placeholder {...props} className="!text-grey-40 !mx-0" />
|
||||
)
|
||||
}
|
||||
|
||||
@@ -142,7 +141,7 @@ const SelectContainer = <
|
||||
props: ContainerProps<Option, IsMulti, Group>
|
||||
) => {
|
||||
return (
|
||||
<div className="bg-grey-5 h-10 border border-grey-20 rounded-rounded focus-within:shadow-cta focus-within:border-violet-60 px-small">
|
||||
<div className="bg-grey-5 border-grey-20 rounded-rounded focus-within:shadow-cta focus-within:border-violet-60 px-small h-10 border">
|
||||
<components.SelectContainer {...props} />
|
||||
</div>
|
||||
)
|
||||
@@ -164,8 +163,8 @@ const Input = <
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="w-full flex items-center h-full space-between">
|
||||
<div className="w-full flex items-center">
|
||||
<div className="space-between flex h-full w-full items-center">
|
||||
<div className="flex w-full items-center">
|
||||
<span className="text-grey-40 mr-2">
|
||||
<SearchIcon size={16} />
|
||||
</span>
|
||||
@@ -190,7 +189,7 @@ const ClearIndicator = <
|
||||
return (
|
||||
<div
|
||||
{...innerProps}
|
||||
className="hover:bg-grey-10 text-grey-50 rounded cursor-pointer"
|
||||
className="hover:bg-grey-10 text-grey-50 cursor-pointer rounded"
|
||||
>
|
||||
<XCircleIcon size={16} />
|
||||
</div>
|
||||
@@ -201,7 +200,7 @@ const CheckboxAdornment = ({ isSelected }: { isSelected: boolean }) => {
|
||||
return (
|
||||
<div
|
||||
className={clsx(
|
||||
`w-5 h-5 flex justify-center text-grey-0 border-grey-30 border rounded-base`,
|
||||
`text-grey-0 border-grey-30 rounded-base flex h-5 w-5 justify-center border`,
|
||||
{
|
||||
"bg-violet-60": isSelected,
|
||||
}
|
||||
@@ -219,18 +218,18 @@ const RadioAdornment = ({ isSelected }: { isSelected: boolean }) => {
|
||||
<div
|
||||
className={clsx(
|
||||
"radio-outer-ring outline-0",
|
||||
"shrink-0 w-[20px] h-[20px] rounded-circle",
|
||||
"rounded-circle h-[20px] w-[20px] shrink-0",
|
||||
{
|
||||
"shadow-[0_0_0_1px] shadow-[#D1D5DB]": !isSelected,
|
||||
"shadow-[0_0_0_2px] shadow-violet-60": isSelected,
|
||||
"shadow-violet-60 shadow-[0_0_0_2px]": isSelected,
|
||||
}
|
||||
)}
|
||||
>
|
||||
{isSelected && (
|
||||
<div
|
||||
className={clsx(
|
||||
"group flex items-center justify-center w-full h-full relative",
|
||||
"after:absolute after:inset-0 after:m-auto after:block after:w-[12px] after:h-[12px] after:bg-violet-60 after:rounded-circle"
|
||||
"group relative flex h-full w-full items-center justify-center",
|
||||
"after:bg-violet-60 after:rounded-circle after:absolute after:inset-0 after:m-auto after:block after:h-[12px] after:w-[12px]"
|
||||
)}
|
||||
/>
|
||||
)}
|
||||
@@ -248,7 +247,7 @@ const NoOptionsMessage = <
|
||||
}: NoticeProps<Option, IsMulti, Group>) => {
|
||||
return (
|
||||
<div
|
||||
className="text-grey-50 inter-small-semibold text-center p-xsmall"
|
||||
className="text-grey-50 inter-small-semibold p-xsmall text-center"
|
||||
{...innerProps}
|
||||
>
|
||||
<p>{isLoading ? "Loading..." : "No options"}</p>
|
||||
@@ -267,12 +266,12 @@ const Option = <
|
||||
return (
|
||||
<components.Option
|
||||
{...props}
|
||||
className="my-1 py-0 px-2 bg-grey-0 active:bg-grey-0"
|
||||
className="bg-grey-0 active:bg-grey-0 my-1 py-0 px-2"
|
||||
>
|
||||
<div
|
||||
className={`item-renderer h-full hover:bg-grey-10 py-2 px-2 cursor-pointer rounded`}
|
||||
className={`item-renderer hover:bg-grey-10 h-full cursor-pointer rounded py-2 px-2`}
|
||||
>
|
||||
<div className="items-center h-full flex">
|
||||
<div className="flex h-full items-center">
|
||||
{props.data?.value !== "all" && props.data?.label !== "Select All" ? (
|
||||
<>
|
||||
{props.isMulti ? (
|
||||
@@ -280,7 +279,7 @@ const Option = <
|
||||
) : (
|
||||
<RadioAdornment isSelected={props.isSelected} />
|
||||
)}
|
||||
<span className="ml-3 text-grey-90 inter-base-regular">
|
||||
<span className="text-grey-90 inter-base-regular ml-3">
|
||||
{props.data.label}
|
||||
</span>
|
||||
</>
|
||||
|
||||
@@ -32,10 +32,10 @@ const ShippingOption: React.FC<ShippingOptionProps> = ({
|
||||
onEdit,
|
||||
}) => {
|
||||
return (
|
||||
<div className="flex items-baseline justify-between p-base rounded-base border border-grey-20">
|
||||
<div className="p-base rounded-base border-grey-20 flex items-baseline justify-between border">
|
||||
<div className="truncate">
|
||||
<div className="flex items-center">
|
||||
<p className="inter-small-semibold truncate mr-xsmall">
|
||||
<p className="inter-small-semibold mr-xsmall truncate">
|
||||
{option.name} {option.data.name && `(${option.data.name})`}{" "}
|
||||
</p>
|
||||
{option.admin_only && <Badge variant="primary">Not on website</Badge>}
|
||||
@@ -45,7 +45,7 @@ const ShippingOption: React.FC<ShippingOptionProps> = ({
|
||||
{option.amount !== undefined &&
|
||||
`${option.amount / 100} ${currency_code.toUpperCase()}`}
|
||||
{option.requirements.length
|
||||
? option.requirements.map(r => {
|
||||
? option.requirements.map((r) => {
|
||||
const type =
|
||||
r.type === "max_subtotal" ? "Max. subtotal" : "Min. subtotal"
|
||||
return ` - ${type}: ${
|
||||
|
||||
@@ -8,11 +8,11 @@ const SidebarCompanyLogo: React.FC<SidebarCompanyLogoProps> = ({
|
||||
storeName,
|
||||
}: SidebarCompanyLogoProps) => {
|
||||
return (
|
||||
<div className="flex items-center bg-grey-0 px-2.5 pb-6 w-full mb-4">
|
||||
<div className="w-[32px] h-[32px] flex items-center justify-center bg-grey-90 text-grey-0 rounded">
|
||||
<div className="bg-grey-0 mb-4 flex w-full items-center px-2.5 pb-6">
|
||||
<div className="bg-grey-90 text-grey-0 flex h-[32px] w-[32px] items-center justify-center rounded">
|
||||
<div>{storeName?.slice(0, 1) || "M"}</div>
|
||||
</div>
|
||||
<span className="font-semibold ml-2.5">{storeName}</span>
|
||||
<span className="ml-2.5 font-semibold">{storeName}</span>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ const SidebarMenuItem: React.FC<SidebarMenuItemProps> & {
|
||||
trigger={
|
||||
<NavLink className={classNameFn} to={pageLink}>
|
||||
<span className="items-start">{icon}</span>
|
||||
<span className="ml-3 group-[.is-active]:text-grey-90">{text}</span>
|
||||
<span className="group-[.is-active]:text-grey-90 ml-3">{text}</span>
|
||||
</NavLink>
|
||||
}
|
||||
>
|
||||
@@ -62,7 +62,7 @@ const SubItem = ({ pageLink, text }: SidebarMenuSubitemProps) => {
|
||||
|
||||
return (
|
||||
<NavLink className={classNameFn} to={pageLink}>
|
||||
<span className="ml-3 text-grey-90 text-small">{text}</span>
|
||||
<span className="text-grey-90 text-small ml-3">{text}</span>
|
||||
</NavLink>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -16,11 +16,11 @@ const SidebarTeamMember: React.FC<SidebarTeamMemberProps> = ({
|
||||
: user.email
|
||||
|
||||
return (
|
||||
<div className="flex items-center bg-inherit px-2.5 py-1.5 w-full">
|
||||
<div className="w-[24px] h-[24px]">
|
||||
<div className="flex w-full items-center bg-inherit px-2.5 py-1.5">
|
||||
<div className="h-[24px] w-[24px]">
|
||||
<Avatar user={user} color={color} />
|
||||
</div>
|
||||
<span className="pl-2.5 w-40 truncate">{fullName}</span>
|
||||
<span className="w-40 truncate pl-2.5">{fullName}</span>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ const StatusSelector: React.FC<StatusSelectorProps> = ({
|
||||
</DropdownMenu.Trigger>
|
||||
<DropdownMenu.Content
|
||||
sideOffset={5}
|
||||
className="border bg-grey-0 border-grey-20 rounded-rounded shadow-dropdown p-xsmall min-w-[200px] z-30"
|
||||
className="bg-grey-0 border-grey-20 rounded-rounded shadow-dropdown p-xsmall z-30 min-w-[200px] border"
|
||||
>
|
||||
<DropdownMenu.Item>
|
||||
{
|
||||
|
||||
@@ -24,7 +24,7 @@ const SwitchableItem: React.FC<SwitchableItemProps> = ({
|
||||
<div>
|
||||
<div className="flex items-start justify-between">
|
||||
<div className="flex flex-col">
|
||||
<div className="flex items-center gap-x-2xsmall">
|
||||
<div className="gap-x-2xsmall flex items-center">
|
||||
<p className="inter-base-semibold">{title}</p>
|
||||
{tooltip && <IconTooltip content={tooltip} />}
|
||||
</div>
|
||||
@@ -39,7 +39,7 @@ const SwitchableItem: React.FC<SwitchableItemProps> = ({
|
||||
</div>
|
||||
<div
|
||||
className={clsx(
|
||||
"transition-[max-height,opacity] duration-500 ease-in-out overflow-hidden",
|
||||
"overflow-hidden transition-[max-height,opacity] duration-500 ease-in-out",
|
||||
{
|
||||
"max-h-[1000px] opacity-100": open,
|
||||
"max-h-0 opacity-0": !open,
|
||||
|
||||
@@ -7,7 +7,7 @@ import Button from "../../fundamentals/button"
|
||||
import CrossIcon from "../../fundamentals/icons/cross-icon"
|
||||
import Checkbox from "../../atoms/checkbox"
|
||||
|
||||
/******************** TYPES ********************/
|
||||
/** ****************** TYPES ********************/
|
||||
|
||||
type Field = {
|
||||
id: string
|
||||
@@ -36,7 +36,7 @@ type FieldMenuItemProps = {
|
||||
onChange: () => void
|
||||
}
|
||||
|
||||
/******************** COMPONENTS ********************/
|
||||
/** ****************** COMPONENTS ********************/
|
||||
|
||||
/**
|
||||
* Table field chip component.
|
||||
@@ -44,7 +44,7 @@ type FieldMenuItemProps = {
|
||||
function Chip(props: ChipProps) {
|
||||
const { remove, short } = props
|
||||
return (
|
||||
<div className="rounded-lg h-[32px] inline-flex gap-1 shrink-0 items-center text-small text-grey-70 border border-gray-70 px-3 mr-1 last:mr-2">
|
||||
<div className="text-small text-grey-70 border-gray-70 mr-1 inline-flex h-[32px] shrink-0 items-center gap-1 rounded-lg border px-3 last:mr-2">
|
||||
{short}
|
||||
<CrossIcon
|
||||
className="text-grey-40 cursor-pointer"
|
||||
@@ -64,7 +64,7 @@ function FieldMenuItem(props: FieldMenuItemProps) {
|
||||
<DropdownMenu.Item>
|
||||
<Checkbox
|
||||
checked={checked}
|
||||
className="px-[6px] mx-2 h-[32px] hover:bg-grey-10 rounded text-small"
|
||||
className="hover:bg-grey-10 text-small mx-2 h-[32px] rounded px-[6px]"
|
||||
onChange={onChange}
|
||||
label={
|
||||
typeof field.label === "function"
|
||||
@@ -76,7 +76,7 @@ function FieldMenuItem(props: FieldMenuItemProps) {
|
||||
)
|
||||
}
|
||||
|
||||
/******************** CONTAINERS ********************/
|
||||
/** ****************** CONTAINERS ********************/
|
||||
|
||||
/**
|
||||
* The dropdown menu for selecting currently active table fields.
|
||||
@@ -132,9 +132,9 @@ function FieldsMenu(props: FieldsMenuProps) {
|
||||
<Button
|
||||
onClick={onTriggerClick}
|
||||
variant="secondary"
|
||||
className="rounded-lg h-[32px] px-3 text-small font-semibold text-grey-90 inline-flex"
|
||||
className="text-small text-grey-90 inline-flex h-[32px] rounded-lg px-3 font-semibold"
|
||||
>
|
||||
<span className="flex whitespace-nowrap items-center gap-1">
|
||||
<span className="flex items-center gap-1 whitespace-nowrap">
|
||||
Add fields <PlusIcon size={14} />
|
||||
</span>
|
||||
</Button>
|
||||
@@ -142,7 +142,7 @@ function FieldsMenu(props: FieldsMenuProps) {
|
||||
|
||||
<DropdownMenu.Content
|
||||
ref={contentRef}
|
||||
className="w-[240px] bg-white shadow rounded-xl p-2"
|
||||
className="w-[240px] rounded-xl bg-white p-2 shadow"
|
||||
>
|
||||
{fields.map((f) => (
|
||||
<FieldMenuItem
|
||||
@@ -179,8 +179,8 @@ function TableFieldsFilters(props: TableFieldsFilterProps) {
|
||||
const visibleFields = _selected.map((id) => fields.find((f) => f.id === id))
|
||||
|
||||
return (
|
||||
<div className="flex-wrap flex items-center gap-y-2">
|
||||
<span className="text-small font-semibold whitespace-nowrap text-gray-500 mr-2">
|
||||
<div className="flex flex-wrap items-center gap-y-2">
|
||||
<span className="text-small mr-2 whitespace-nowrap font-semibold text-gray-500">
|
||||
Currently editing these fields:
|
||||
</span>
|
||||
|
||||
|
||||
@@ -40,16 +40,16 @@ export const TablePagination = <T,>({
|
||||
return (
|
||||
<div
|
||||
className={clsx(
|
||||
"inter-small-regular flex items-center justify-between text-grey-50",
|
||||
"inter-small-regular text-grey-50 flex items-center justify-between",
|
||||
className
|
||||
)}
|
||||
>
|
||||
<div>
|
||||
<p>{`${from} – ${to} of ${count} results`}</p>
|
||||
</div>
|
||||
<div className="flex items-center gap-x-small">
|
||||
<div className="gap-x-small flex items-center">
|
||||
<p>{`${getState().pagination.pageIndex + 1} of ${getPageCount()}`}</p>
|
||||
<div className="flex items-center gap-x-2xsmall">
|
||||
<div className="gap-x-2xsmall flex items-center">
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="small"
|
||||
|
||||
@@ -19,7 +19,7 @@ export const TableToasterContainer = ({
|
||||
})}
|
||||
{...toast?.ariaProps}
|
||||
>
|
||||
<div className="flex items-center rounded-rounded bg-grey-90 px-base py-3.5">
|
||||
<div className="rounded-rounded bg-grey-90 px-base flex items-center py-3.5">
|
||||
{children}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -24,7 +24,7 @@ const FilteringOptions: React.FC<FilteringOptionProps> = ({
|
||||
return (
|
||||
<div
|
||||
className={clsx(
|
||||
"inter-small-regular flex text-grey-50 mr-6 last:mr-0",
|
||||
"inter-small-regular text-grey-50 mr-6 flex last:mr-0",
|
||||
className
|
||||
)}
|
||||
{...props}
|
||||
@@ -34,11 +34,11 @@ const FilteringOptions: React.FC<FilteringOptionProps> = ({
|
||||
<DropdownMenu.Trigger
|
||||
asChild
|
||||
className={clsx(
|
||||
"inter-small-regular text-grey-50 flex items-center pl-1.5 pr-0.5 rounded active:bg-grey-5 hover:bg-grey-5",
|
||||
"inter-small-regular text-grey-50 active:bg-grey-5 hover:bg-grey-5 flex items-center rounded pl-1.5 pr-0.5",
|
||||
{ "bg-grey-5": open }
|
||||
)}
|
||||
>
|
||||
<div className="flex align-center">
|
||||
<div className="align-center flex">
|
||||
{selected}
|
||||
<div className="text-grey-40 h-min">
|
||||
<ChevronDownIcon size={16} />
|
||||
@@ -47,7 +47,7 @@ const FilteringOptions: React.FC<FilteringOptionProps> = ({
|
||||
</DropdownMenu.Trigger>
|
||||
<DropdownMenu.Content
|
||||
sideOffset={8}
|
||||
className="bg-grey-0 p-2 border border-grey-20 rounded-rounded shadow-dropdown"
|
||||
className="bg-grey-0 border-grey-20 rounded-rounded shadow-dropdown border p-2"
|
||||
>
|
||||
{options.map((opt, idx) => (
|
||||
<DropdownMenu.DropdownMenuItem
|
||||
@@ -58,9 +58,9 @@ const FilteringOptions: React.FC<FilteringOptionProps> = ({
|
||||
}}
|
||||
disabled={typeof opt.count !== "undefined" && opt.count < 1}
|
||||
className={clsx(
|
||||
"py-1.5 my-1 w-48 px-3 flex items-center rounded text-grey-90 hover:border-0 hover:outline-none inter-small-semibold",
|
||||
"text-grey-90 inter-small-semibold my-1 flex w-48 items-center rounded py-1.5 px-3 hover:border-0 hover:outline-none",
|
||||
{
|
||||
"cursor-pointer hover:bg-grey-10":
|
||||
"hover:bg-grey-10 cursor-pointer":
|
||||
typeof opt.count === "undefined" || opt.count > 0,
|
||||
}
|
||||
)}
|
||||
@@ -71,7 +71,7 @@ const FilteringOptions: React.FC<FilteringOptionProps> = ({
|
||||
</span>
|
||||
)}
|
||||
<div
|
||||
className={clsx("ml-3 w-full flex justify-between", {
|
||||
className={clsx("ml-3 flex w-full justify-between", {
|
||||
"ml-7": selected !== opt.title,
|
||||
"text-grey-30": (opt.count || 0) < 1,
|
||||
})}
|
||||
|
||||
@@ -20,7 +20,7 @@ const TableSearch: React.FC<TableSearchProps> = ({
|
||||
return (
|
||||
<div
|
||||
className={clsx(
|
||||
"inter-small-regular mt-1 transition-color flex text-grey-50 items-center mb-1 pl-1 py-1.5 rounded-rounded border border-grey-20 min-w-content w-60 focus-within:shadow-input focus-within:border-violet-60 bg-grey-5",
|
||||
"inter-small-regular transition-color text-grey-50 rounded-rounded border-grey-20 min-w-content focus-within:shadow-input focus-within:border-violet-60 bg-grey-5 mt-1 mb-1 flex w-60 items-center border py-1.5 pl-1",
|
||||
className
|
||||
)}
|
||||
{...props}
|
||||
@@ -33,7 +33,7 @@ const TableSearch: React.FC<TableSearchProps> = ({
|
||||
type="text"
|
||||
value={searchValue}
|
||||
className={clsx(
|
||||
"focus:outline-none focus:border-none inter-small-regular w-full bg-transparent focus:text-grey-90 caret-violet-60 placeholder:inter-small-regular placeholder-grey-40"
|
||||
"inter-small-regular focus:text-grey-90 caret-violet-60 placeholder:inter-small-regular placeholder-grey-40 w-full bg-transparent focus:border-none focus:outline-none"
|
||||
)}
|
||||
placeholder={placeholder}
|
||||
onChange={(e) => {
|
||||
|
||||
@@ -22,7 +22,7 @@ const TagGrid: React.FC<TagGridProps> = ({ tags, badgeVariant }) => {
|
||||
const remainder = tags.length - columns
|
||||
|
||||
return (
|
||||
<div className="flex items-center gap-x-2xsmall w-1/2" ref={containerRef}>
|
||||
<div className="gap-x-2xsmall flex w-1/2 items-center" ref={containerRef}>
|
||||
{visibleTags?.map((tag, index) => {
|
||||
return (
|
||||
<Badge className="mr-2xsmall" key={index} variant={badgeVariant}>
|
||||
|
||||
@@ -175,19 +175,20 @@ const TagInput: React.FC<TagInputProps> = ({
|
||||
>
|
||||
<div
|
||||
className={clsx(
|
||||
"h-auto min-h-[40px] bg-grey-5 shadow-border focus-within:outline-4 focus-within:outline focus-within:outline-violet-60/10 transition-colors focus-within:shadow-focus-border rounded-rounded flex items-center px-3 box-border",
|
||||
"bg-grey-5 shadow-border focus-within:outline-violet-60/10 focus-within:shadow-focus-border rounded-rounded box-border flex h-auto min-h-[40px] items-center px-3 transition-colors focus-within:outline focus-within:outline-4",
|
||||
{
|
||||
"shadow-error-border focus-within:shadow-error-border focus-within:outline-rose-60/10": invalid,
|
||||
"shadow-error-border focus-within:shadow-error-border focus-within:outline-rose-60/10":
|
||||
invalid,
|
||||
}
|
||||
)}
|
||||
>
|
||||
<div className="h-full">
|
||||
<div className="w-full gap-xsmall flex flex-wrap box-border h-28px py-1.5">
|
||||
<div className="gap-xsmall h-28px box-border flex w-full flex-wrap py-1.5">
|
||||
{values.map((v, index) => (
|
||||
<div
|
||||
key={index}
|
||||
className={clsx(
|
||||
"flex items-center justify-center whitespace-nowrap w-max bg-grey-20 rounded-rounded px-3 py-1 gap-x-1",
|
||||
"bg-grey-20 rounded-rounded flex w-max items-center justify-center gap-x-1 whitespace-nowrap px-3 py-1",
|
||||
{
|
||||
["!bg-grey-90"]: index === highlighted,
|
||||
}
|
||||
@@ -195,7 +196,7 @@ const TagInput: React.FC<TagInputProps> = ({
|
||||
>
|
||||
<span
|
||||
className={clsx(
|
||||
"inline-block text-grey-50 inter-small-semibold",
|
||||
"text-grey-50 inter-small-semibold inline-block",
|
||||
{
|
||||
["text-grey-20"]: index === highlighted,
|
||||
}
|
||||
@@ -204,7 +205,7 @@ const TagInput: React.FC<TagInputProps> = ({
|
||||
{v}
|
||||
</span>
|
||||
<CrossIcon
|
||||
className="inline cursor-pointer text-grey-40"
|
||||
className="text-grey-40 inline cursor-pointer"
|
||||
size="16"
|
||||
onClick={() => handleRemove(index)}
|
||||
/>
|
||||
@@ -216,7 +217,7 @@ const TagInput: React.FC<TagInputProps> = ({
|
||||
onBlur={handleBlur}
|
||||
onKeyDown={handleKeyDown}
|
||||
onChange={handleInput}
|
||||
className={clsx("focus:outline-none bg-transparent flex-1")}
|
||||
className={clsx("flex-1 bg-transparent focus:outline-none")}
|
||||
placeholder={values?.length ? "" : placeholder} // only visible if no tags exist
|
||||
{...props}
|
||||
/>
|
||||
|
||||
@@ -75,17 +75,17 @@ const TextArea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(
|
||||
)}
|
||||
<div
|
||||
className={clsx(
|
||||
"w-full flex flex-col focus-within:shadow-input focus-within:border-violet-60 px-small py-xsmall bg-grey-5 border border-grey-20 rounded-rounded",
|
||||
"focus-within:shadow-input focus-within:border-violet-60 px-small py-xsmall bg-grey-5 border-grey-20 rounded-rounded flex w-full flex-col border",
|
||||
{
|
||||
"border-rose-50 focus-within:shadow-cta focus-within:shadow-rose-60/10 focus-within:border-rose-50":
|
||||
"focus-within:shadow-cta focus-within:shadow-rose-60/10 border-rose-50 focus-within:border-rose-50":
|
||||
errors && name && errors[name],
|
||||
}
|
||||
)}
|
||||
>
|
||||
<textarea
|
||||
className={clsx(
|
||||
"relative text-justify overflow-hidden focus:overflow-auto resize-none bg-inherit outline-none outline-0",
|
||||
"w-full remove-number-spinner leading-base text-grey-90 font-normal caret-violet-60 placeholder-grey-40",
|
||||
"relative resize-none overflow-hidden bg-inherit text-justify outline-none outline-0 focus:overflow-auto",
|
||||
"remove-number-spinner leading-base text-grey-90 caret-violet-60 placeholder-grey-40 w-full font-normal",
|
||||
"line-clamp-[var(--lines)] focus:line-clamp-none"
|
||||
)}
|
||||
style={
|
||||
|
||||
@@ -8,7 +8,7 @@ type EventActionablesProps = {
|
||||
|
||||
const EventActionables: React.FC<EventActionablesProps> = ({ actions }) => {
|
||||
const EventTrigger = (
|
||||
<button className="btn-ghost py-0 px-2xsmall flex justify-center items-center focus:outline-none focus:ring-2 rounded-base focus:ring-violet-40">
|
||||
<button className="btn-ghost px-2xsmall rounded-base focus:ring-violet-40 flex items-center justify-center py-0 focus:outline-none focus:ring-2">
|
||||
<MoreHorizontalIcon size={20} />
|
||||
</button>
|
||||
)
|
||||
|
||||
@@ -48,12 +48,12 @@ const EventContainer: React.FC<EventContainerProps> = ({
|
||||
return (
|
||||
<div className="mb-base">
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="flex items-center gap-x-xsmall">
|
||||
<div className="gap-x-xsmall flex items-center">
|
||||
<div className={clsx("h-5 w-5", iconColor)}>{icon}</div>
|
||||
<div className="inter-small-semibold">{title}</div>
|
||||
<div className="inter-small-regular text-grey-50"></div>
|
||||
</div>
|
||||
<div className="flex items-center gap-x-xsmall">
|
||||
<div className="gap-x-xsmall flex items-center">
|
||||
{noNotification && (
|
||||
<Tooltip content="Notifications related to this event are disabled">
|
||||
<BellOffIcon size={20} className="text-grey-40" />
|
||||
@@ -71,8 +71,8 @@ const EventContainer: React.FC<EventContainerProps> = ({
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex gap-x-xsmall">
|
||||
<div className="flex w-5 justify-center pt-base">
|
||||
<div className="gap-x-xsmall flex">
|
||||
<div className="pt-base flex w-5 justify-center">
|
||||
{!isFirst && <div className="min-h-[24px] w-px" />}
|
||||
</div>
|
||||
<div className="inter-small-regular mt-2xsmall w-full">
|
||||
@@ -90,7 +90,7 @@ const EventContainer: React.FC<EventContainerProps> = ({
|
||||
{midNode}
|
||||
</div>
|
||||
{children && isExpanded && (
|
||||
<div className="mt-small w-full pb-base">{children}</div>
|
||||
<div className="mt-small pb-base w-full">{children}</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+4
-4
@@ -16,9 +16,9 @@ const EventItemContainer: React.FC<EventItemContainerProps> = ({ item }) => {
|
||||
return null
|
||||
}
|
||||
return (
|
||||
<div className="flex items-center gap-x-small mb-base last:mb-0">
|
||||
<div className="gap-x-small mb-base flex items-center last:mb-0">
|
||||
{item.thumbnail && (
|
||||
<div className="h-10 w-[30px] rounded-base overflow-hidden">
|
||||
<div className="rounded-base h-10 w-[30px] overflow-hidden">
|
||||
<img
|
||||
src={item.thumbnail}
|
||||
alt={`Thumbnail for ${item.title}`}
|
||||
@@ -26,8 +26,8 @@ const EventItemContainer: React.FC<EventItemContainerProps> = ({ item }) => {
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
<div className="flex flex-col inter-small-regular w-full">
|
||||
<div className="flex items-center justify-between w-full">
|
||||
<div className="inter-small-regular flex w-full flex-col">
|
||||
<div className="flex w-full items-center justify-between">
|
||||
<p>{item.title}</p>
|
||||
<span className="inter-small-semibold text-violet-60">{`x${item.quantity}`}</span>
|
||||
</div>
|
||||
|
||||
@@ -49,7 +49,7 @@ const Note: React.FC<NoteProps> = ({ event }) => {
|
||||
isFirst={event.first}
|
||||
>
|
||||
<div
|
||||
className={clsx("rounded-2xl px-base py-base", {
|
||||
className={clsx("px-base py-base rounded-2xl", {
|
||||
"bg-grey-5": !isMe,
|
||||
"bg-violet-5 text-violet-90": isMe,
|
||||
})}
|
||||
|
||||
+3
-3
@@ -67,11 +67,11 @@ const ResendModal: React.FC<ResendModalProps> = ({
|
||||
</div>
|
||||
</Modal.Content>
|
||||
<Modal.Footer>
|
||||
<div className="flex w-full h-8 justify-end">
|
||||
<div className="flex h-8 w-full justify-end">
|
||||
<div className="flex">
|
||||
<Button
|
||||
variant="ghost"
|
||||
className="mr-2 w-32 text-small justify-center"
|
||||
className="text-small mr-2 w-32 justify-center"
|
||||
size="large"
|
||||
onClick={handleCancel}
|
||||
>
|
||||
@@ -79,7 +79,7 @@ const ResendModal: React.FC<ResendModalProps> = ({
|
||||
</Button>
|
||||
<Button
|
||||
size="large"
|
||||
className="w-32 text-small justify-center"
|
||||
className="text-small w-32 justify-center"
|
||||
variant="primary"
|
||||
type="submit"
|
||||
disabled={isLoading}
|
||||
|
||||
+12
-14
@@ -45,9 +45,8 @@ const getInfo = (edit: OrderEdit): { type: string; user_id: string } => {
|
||||
}
|
||||
|
||||
const EditCreated: React.FC<EditCreatedProps> = ({ event }) => {
|
||||
const { isModalVisible, showModal, setActiveOrderEdit } = useContext(
|
||||
OrderEditContext
|
||||
)
|
||||
const { isModalVisible, showModal, setActiveOrderEdit } =
|
||||
useContext(OrderEditContext)
|
||||
|
||||
const { order_edit: orderEdit, isFetching } = useAdminOrderEdit(event.edit.id)
|
||||
|
||||
@@ -90,8 +89,7 @@ const EditCreated: React.FC<EditCreatedProps> = ({ event }) => {
|
||||
const onConfirmEditClicked = async () => {
|
||||
const shouldDelete = await forceConfirmDialog({
|
||||
heading: "Delete Confirm",
|
||||
text:
|
||||
"By force confirming you allow the order edit to be fulfilled. You will still have to reconcile payments manually after confirming.",
|
||||
text: "By force confirming you allow the order edit to be fulfilled. You will still have to reconcile payments manually after confirming.",
|
||||
confirmText: "Yes, Force Confirm",
|
||||
cancelText: "No, Cancel",
|
||||
})
|
||||
@@ -149,7 +147,7 @@ const EditCreated: React.FC<EditCreatedProps> = ({ event }) => {
|
||||
{type === "created" ? (
|
||||
<>
|
||||
<Button
|
||||
className="w-full border border-grey-20"
|
||||
className="border-grey-20 w-full border"
|
||||
size="small"
|
||||
variant="ghost"
|
||||
onClick={onContinueEdit}
|
||||
@@ -158,7 +156,7 @@ const EditCreated: React.FC<EditCreatedProps> = ({ event }) => {
|
||||
</Button>
|
||||
<TwoStepDelete
|
||||
onDelete={onDeleteOrderEditClicked}
|
||||
className="w-full border border-grey-20"
|
||||
className="border-grey-20 w-full border"
|
||||
>
|
||||
Delete the order edit
|
||||
</TwoStepDelete>
|
||||
@@ -166,7 +164,7 @@ const EditCreated: React.FC<EditCreatedProps> = ({ event }) => {
|
||||
) : (
|
||||
<>
|
||||
<Button
|
||||
className="w-full border border-grey-20"
|
||||
className="border-grey-20 w-full border"
|
||||
size="small"
|
||||
variant="ghost"
|
||||
onClick={onCopyConfirmationLinkClicked}
|
||||
@@ -174,7 +172,7 @@ const EditCreated: React.FC<EditCreatedProps> = ({ event }) => {
|
||||
Copy Confirmation-Request Link
|
||||
</Button>
|
||||
<Button
|
||||
className="w-full border border-grey-20"
|
||||
className="border-grey-20 w-full border"
|
||||
size="small"
|
||||
variant="ghost"
|
||||
onClick={onConfirmEditClicked}
|
||||
@@ -184,7 +182,7 @@ const EditCreated: React.FC<EditCreatedProps> = ({ event }) => {
|
||||
|
||||
<TwoStepDelete
|
||||
onDelete={onCancelOrderEditClicked}
|
||||
className="w-full border border-grey-20"
|
||||
className="border-grey-20 w-full border"
|
||||
>
|
||||
Cancel Order Edit
|
||||
</TwoStepDelete>
|
||||
@@ -220,7 +218,7 @@ const OrderEditChanges = ({ orderEdit }) => {
|
||||
)
|
||||
|
||||
return (
|
||||
<div className="flex flex-col gap-y-base">
|
||||
<div className="gap-y-base flex flex-col">
|
||||
{added.length > 0 && (
|
||||
<div>
|
||||
<span className="inter-small-regular text-grey-50">Added</span>
|
||||
@@ -264,9 +262,9 @@ const OrderEditChangeItem: React.FC<OrderEditChangeItemProps> = ({
|
||||
const lineItem = isAdd ? change.line_item : change.original_line_item
|
||||
|
||||
return (
|
||||
<div className="flex gap-x-base mt-xsmall">
|
||||
<div className="gap-x-base mt-xsmall flex">
|
||||
<div>
|
||||
<div className="flex h-[40px] w-[30px] rounded-rounded overflow-hidden">
|
||||
<div className="rounded-rounded flex h-[40px] w-[30px] overflow-hidden">
|
||||
{lineItem?.thumbnail ? (
|
||||
<img src={lineItem.thumbnail} className="object-cover" />
|
||||
) : (
|
||||
@@ -281,7 +279,7 @@ const OrderEditChangeItem: React.FC<OrderEditChangeItemProps> = ({
|
||||
<CopyToClipboard value={lineItem?.variant?.sku} iconSize={14} />
|
||||
)}
|
||||
</span>
|
||||
<span className="flex inter-small-regular text-grey-50">
|
||||
<span className="inter-small-regular text-grey-50 flex">
|
||||
{lineItem?.variant?.options?.map((option) => option.value)}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -16,7 +16,7 @@ export const ByLine: React.FC<ByLineProps> = ({ user }) => {
|
||||
!first_name && !last_name ? email : `${first_name || ""} ${last_name || ""}`
|
||||
|
||||
return (
|
||||
<div className="flex inter-small-regular items-center text-grey-50">
|
||||
<div className="inter-small-regular text-grey-50 flex items-center">
|
||||
By
|
||||
<span className="w-base h-base mx-xsmall">
|
||||
<Avatar user={user} font="inter-xsmall-semibold" />
|
||||
|
||||
+2
-2
@@ -59,7 +59,7 @@ const PaymentRequired: React.FC<RequestedProps> = ({ event }) => {
|
||||
>
|
||||
<Button
|
||||
size="small"
|
||||
className="w-full border border-grey-20 mb-xsmall"
|
||||
className="border-grey-20 mb-xsmall w-full border"
|
||||
variant="ghost"
|
||||
onClick={onCopyPaymentLinkClicked}
|
||||
>
|
||||
@@ -67,7 +67,7 @@ const PaymentRequired: React.FC<RequestedProps> = ({ event }) => {
|
||||
</Button>
|
||||
<Button
|
||||
size="small"
|
||||
className="w-full border border-grey-20"
|
||||
className="border-grey-20 w-full border"
|
||||
variant="ghost"
|
||||
onClick={onMarkAsPaidClicked}
|
||||
>
|
||||
|
||||
+1
-1
@@ -49,7 +49,7 @@ const RefundRequired: React.FC<RequestedProps> = ({ event }) => {
|
||||
onClick={() => setShowRefundModal(true)}
|
||||
variant="ghost"
|
||||
size="small"
|
||||
className="w-full border border-grey-20 mb-xsmall text-rose-50"
|
||||
className="border-grey-20 mb-xsmall w-full border text-rose-50"
|
||||
>
|
||||
Refund
|
||||
{formatAmountWithSymbol({
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ const EditRequested: React.FC<RequestedProps> = ({ event }) => {
|
||||
}
|
||||
>
|
||||
<Button
|
||||
className="w-full border border-grey-20 mb-5"
|
||||
className="border-grey-20 mb-5 w-full border"
|
||||
size="small"
|
||||
variant="ghost"
|
||||
onClick={() => setShowResend(true)}
|
||||
|
||||
@@ -2,7 +2,7 @@ import React from "react"
|
||||
import { OrderPlacedEvent } from "../../../hooks/use-build-timeline"
|
||||
import { formatAmountWithSymbol } from "../../../utils/prices"
|
||||
import CheckCircleIcon from "../../fundamentals/icons/check-circle-icon"
|
||||
import EventContainer, { EventIconColor } from "./event-container"
|
||||
import EventContainer from "./event-container"
|
||||
|
||||
type OrderPlacedProps = {
|
||||
event: OrderPlacedEvent
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user