Skip to content

Commit 761f997

Browse files
Merge pull request #519 from buildo/expand_modal_and_chip_config
Expand modal and chip config
2 parents b9288c8 + 93f4921 commit 761f997

File tree

7 files changed

+47
-14
lines changed

7 files changed

+47
-14
lines changed

packages/bento-design-system/src/Chip/Chip.css.ts

+15-6
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
import { createVar, style } from "@vanilla-extract/css";
22
import { bentoSprinkles } from "../internal";
3+
import { strictRecipe } from "../util/strictRecipe";
34

4-
export const chip = bentoSprinkles({
5-
color: "textPrimary",
6-
textTransform: "uppercase",
7-
display: "flex",
8-
alignItems: "center",
9-
justifyContent: "center",
5+
export const chipRecipe = strictRecipe({
6+
base: bentoSprinkles({
7+
color: "textPrimary",
8+
display: "flex",
9+
alignItems: "center",
10+
justifyContent: "center",
11+
}),
12+
variants: {
13+
uppercase: {
14+
true: bentoSprinkles({
15+
textTransform: "uppercase",
16+
}),
17+
},
18+
},
1019
});
1120

1221
export const maxWidth = createVar();

packages/bento-design-system/src/Chip/Chip.tsx

+11-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
Body,
1212
} from "..";
1313
import { BentoSprinkles } from "../internal";
14-
import { chip, ellipsedLabel, maxWidth } from "./Chip.css";
14+
import { chipRecipe, ellipsedLabel, maxWidth } from "./Chip.css";
1515
import { useDefaultMessages } from "../util/useDefaultMessages";
1616
import { assignInlineVars } from "@vanilla-extract/dynamic";
1717
import { useBentoConfig } from "../BentoConfigContext";
@@ -46,6 +46,7 @@ type Props = {
4646
icon?: FunctionComponent<IconProps>;
4747
/** Truncate and show ellipsis after a number of characters */
4848
maxCharacters?: number;
49+
uppercase?: boolean;
4950
} & DismissProps;
5051

5152
const defaultColorsMapping: Record<DefaultColor, BentoSprinkles["background"]> = {
@@ -61,7 +62,14 @@ const defaultColorsMapping: Record<DefaultColor, BentoSprinkles["background"]> =
6162
pink: "softPink",
6263
};
6364

64-
export function Chip({ color, label: _label, icon, maxCharacters, ...dismissProps }: Props) {
65+
export function Chip({
66+
color,
67+
label: _label,
68+
icon,
69+
maxCharacters,
70+
uppercase,
71+
...dismissProps
72+
}: Props) {
6573
const config = useBentoConfig().chip;
6674
const colorsMapping = { ...defaultColorsMapping, ...config.customColors };
6775

@@ -87,7 +95,7 @@ export function Chip({ color, label: _label, icon, maxCharacters, ...dismissProp
8795
<Box
8896
paddingX={config.paddingX}
8997
paddingY={config.paddingY}
90-
className={chip}
98+
className={chipRecipe({ uppercase: uppercase ?? config.uppercase })}
9199
background={colorsMapping[color]}
92100
borderRadius={config.radius}
93101
>

packages/bento-design-system/src/Chip/Config.ts

+1
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@ export type ChipConfig = {
1818
[k in ChipCustomColors]: BentoSprinkles["background"];
1919
};
2020
radius: BentoSprinkles["borderRadius"];
21+
uppercase: boolean;
2122
};

packages/bento-design-system/src/Modal/Config.ts

+1
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,5 @@ export type ModalConfig = {
1919
titleIconSize: IconProps["size"];
2020
defaultErrorBannerWidth: NonNullable<ActionsProps["errorBannerWidth"]>;
2121
actionsSize: NonNullable<ActionsProps["size"]>;
22+
internalSpacing: BentoSprinkles["gap"];
2223
};

packages/bento-design-system/src/Modal/Modal.tsx

+12-5
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {
88
Box,
99
Column,
1010
Columns,
11-
Inset,
1211
Actions,
1312
} from "..";
1413
import { useOverlay, usePreventScroll, useModal } from "@react-aria/overlays";
@@ -102,7 +101,11 @@ export function Modal(props: Props) {
102101

103102
return (
104103
<CustomModal {...props} aria-label={props.title}>
105-
<Inset spaceX={config.paddingX} spaceY={config.paddingY}>
104+
<Box
105+
paddingX={config.paddingX}
106+
paddingTop={config.paddingY}
107+
paddingBottom={config.internalSpacing}
108+
>
106109
<Columns space={16} alignY="top">
107110
<Columns space={16} alignY="center">
108111
{icon && <Column width="content">{icon}</Column>}
@@ -120,11 +123,15 @@ export function Modal(props: Props) {
120123
/>
121124
</Column>
122125
</Columns>
123-
</Inset>
126+
</Box>
124127
<Box className={modalBody} paddingX={config.paddingX}>
125128
{props.children}
126129
</Box>
127-
<Inset spaceX={config.paddingX} spaceY={config.paddingY}>
130+
<Box
131+
paddingX={config.paddingX}
132+
paddingTop={config.internalSpacing}
133+
paddingBottom={config.paddingY}
134+
>
128135
<Actions
129136
primaryAction={
130137
props.primaryAction
@@ -137,7 +144,7 @@ export function Modal(props: Props) {
137144
error={props.error}
138145
errorBannerWidth={props.errorBannerWidth || config.defaultErrorBannerWidth}
139146
/>
140-
</Inset>
147+
</Box>
141148
</CustomModal>
142149
);
143150
}

packages/bento-design-system/src/util/defaultConfigs.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ export const chip: ChipConfig = {
169169
spacingAfterLabel: 8,
170170
customColors: {},
171171
radius: "circledX",
172+
uppercase: true,
172173
};
173174

174175
export const decorativeDivider: DecorativeDividerConfig = {
@@ -383,6 +384,7 @@ export const modal: ModalConfig = {
383384
titleIconSize: 24,
384385
defaultErrorBannerWidth: "content",
385386
actionsSize: "large",
387+
internalSpacing: 24,
386388
};
387389

388390
export const navigation: NavigationConfig = {

packages/storybook/stories/Components/Chip.stories.tsx

+5
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,8 @@ export const MaxWidth = createStory({
3939
color: "blue",
4040
maxCharacters: 10,
4141
});
42+
43+
export const LowerCase = createStory({
44+
color: "blue",
45+
uppercase: false,
46+
});

0 commit comments

Comments
 (0)