Skip to content

Commit

Permalink
Add backgroundColor property to Container component
Browse files Browse the repository at this point in the history
  • Loading branch information
david0xd committed Dec 11, 2024
1 parent c7a6906 commit 4ef3253
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 2 deletions.
1 change: 1 addition & 0 deletions packages/snaps-sdk/src/jsx/components/Box.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ export type BoxProps = {
| 'space-around'
| undefined;
center?: boolean | undefined;
backgroundColor?: string | undefined;
};

const TYPE = 'Box';
Expand Down
3 changes: 2 additions & 1 deletion packages/snaps-sdk/src/jsx/components/Container.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { Text } from './Text';
describe('Container', () => {
it('renders a container element with a box', () => {
const result = (
<Container>
<Container backgroundColor="alternative">
<Box>
<Text>Hello world!</Text>
</Box>
Expand All @@ -18,6 +18,7 @@ describe('Container', () => {
type: 'Container',
key: null,
props: {
backgroundColor: 'alternative',
children: {
type: 'Box',
key: null,
Expand Down
9 changes: 8 additions & 1 deletion packages/snaps-sdk/src/jsx/components/Container.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,19 @@ import type { GenericSnapElement } from '../component';
import { createSnapComponent } from '../component';
import type { FooterElement } from './Footer';

/**
* Definition of container background colors.
*/
export type ContainerBackgroundColor = 'default' | 'alternative';

/**
* The props of the {@link Container} component.
*
* @property children - The Box and the Footer or the Box element.
*/
export type ContainerProps = {
children: [GenericSnapElement, FooterElement] | GenericSnapElement;
backgroundColor?: ContainerBackgroundColor | undefined;
};

const TYPE = 'Container';
Expand All @@ -17,10 +23,11 @@ const TYPE = 'Container';
* A container component, which is used to create a container with a box and a footer.
*
* @param props - The props of the component.
* @param props.backgroundColor - The color of the background.
* @param props.children - The Box and the Footer or the Box element.
* @returns A container element.
* @example
* <Container>
* <Container backgroundColor="ContainerBackgroundColor.Alternative">
* <Box>
* <Text>Hello world!</Text>
* </Box>
Expand Down
6 changes: 6 additions & 0 deletions packages/snaps-sdk/src/jsx/validation.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -756,6 +756,12 @@ describe('ContainerStruct', () => {
<Container>
<Text>Hello world!</Text>
</Container>,
<Container backgroundColor="default">
<Text>Hello world!</Text>
</Container>,
<Container backgroundColor="alternative">
<Text>Hello world!</Text>
</Container>,
<Container>
<Text>Hello world!</Text>
<Footer>
Expand Down
3 changes: 3 additions & 0 deletions packages/snaps-sdk/src/jsx/validation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -837,6 +837,9 @@ export const ContainerStruct: Describe<ContainerElement> = element(
[GenericSnapElement, FooterElement] | GenericSnapElement,
null
>,
backgroundColor: optional(
nullUnion([literal('default'), literal('alternative')]),
),
},
);

Expand Down

0 comments on commit 4ef3253

Please sign in to comment.