saleor-apps-redis_apl/packages/ui/src/semantic-chip.tsx
Lukasz Ostrowski 24615cf7c1
Add SemanticChip shared component (#471)
* feat:  add empty packages/ui

* feat: ⚗️ move taxes app-grid to packages/ui

* build: ⬆️ upgrade macaw-ui in packages/ui

* build: ⬆️ upgrade macaw even harder

* add app sdk

* Fix app-sdk version

* Add SemanticChip

* update lock

---------

Co-authored-by: Adrian Pilarczyk <adrianpilarczyk314@gmail.com>
2023-05-16 20:41:52 +02:00

53 lines
1.3 KiB
TypeScript

import { BoxProps, Chip, ChipProps, Text, TextProps } from "@saleor/macaw-ui/next";
const colorPropsBorderMapping: Record<ChipProps["variant"], BoxProps["borderColor"]> = {
default: "neutralSubdued",
warning: "criticalDefault",
error: "criticalDefault",
success: "neutralDefault",
};
const colorPropsTextMapping: Record<ChipProps["variant"], BoxProps["color"]> = {
default: "textNeutralPlain",
warning: "textCriticalDefault",
error: "textCriticalDefault",
success: "text2Decorative",
};
const colorPropsBgMapping: Record<ChipProps["variant"], BoxProps["backgroundColor"]> = {
default: "surfaceNeutralHighlight",
warning: "surfaceNeutralHighlight",
error: "surfaceCriticalSubdued",
success: "decorativeSurfaceSubdued2",
};
interface ChipTextProps extends ChipProps {
variant?: "default" | "warning" | "error" | "success";
innerTextProps?: TextProps;
}
export const SemanticChip = ({
variant = "default",
children,
size,
innerTextProps,
...props
}: ChipTextProps) => {
return (
<Chip
backgroundColor={colorPropsBgMapping[variant]}
borderColor={colorPropsBorderMapping[variant]}
size={size}
{...props}
>
<Text
color={colorPropsTextMapping[variant]}
size={size}
variant={"caption"}
{...innerTextProps}
>
{children}
</Text>
</Chip>
);
};