Long description of card details providing more information.
2d ago
How do I build this example for myself?
Designs like this are rarely built top-to-bottom in a single pass. Instead, they typically start very simple, with further details and refinements added in layers.
To give you a sense of what this looks like, the following tutorial will guide you through the design process that you might go through when using Playroom. At any stage you can click the “Open in Playroom” button under the examples to view the design across themes and viewports.
Adding the basic content up front is a great place to start, allowing us to consider the hierarchy of information as we iterate. We’ll nest this content inside a Card and apply some basic formatting using Heading and Text. Product Designer
Braid Design Pty LtdMelbourneInformation Technology150k+Long description of card details providing more information.2d ago<Card>
<Heading level="4">Product Designer</Heading>
<Text>Braid Design Pty Ltd</Text>
<Text>Melbourne</Text>
<Text>Information Technology</Text>
<Text>150k+</Text>
<Text>Long description of card details providing more information.</Text>
<Text>2d ago</Text>
</Card>
You’ll notice that there is no space between components by default. This is actually a good thing! We now get to decide exactly how spaced out we want the content to be. To achieve this, we’ll use a Stack component which applies space evenly between its child elements. Product Designer
Braid Design Pty Ltd
Melbourne
Information Technology
150k+
Long description of card details providing more information.
2d ago
<Card>
<Stack space="large">
<Heading level="4">Product Designer</Heading>
<Text>Braid Design Pty Ltd</Text>
<Text>Melbourne</Text>
<Text>Information Technology</Text>
<Text>150k+</Text>
<Text>Long description of card details providing more information.</Text>
<Text>2d ago</Text>
</Stack>
</Card>
Grouping the content into sections can help provide structure to the information, and in turn, make it easier to digest. Let’s divide the information into four descrete sections — the header, metadata, body and footer. For this, we’ll start nesting new Stack components within our existing Stack. (Yeah, we realise this is a little mind bending at first!) Product Designer
Braid Design Pty Ltd
Melbourne
Information Technology
150k+
Long description of card details providing more information.
2d ago
<Card>
<Stack space="large">
<Stack space="small">
<Heading level="4">Product Designer</Heading>
<Text>Braid Design Pty Ltd</Text>
</Stack>
<Stack space="small">
<Text>Melbourne</Text>
<Text>Information Technology</Text>
<Text>150k+</Text>
</Stack>
<Text>Long description of card details providing more information.</Text>
<Text>2d ago</Text>
</Stack>
</Card>
Not all the information presented has the same priority. To improve readability, we can adjust the tone and/or the size of the information. In this case, pushing some details back to “secondary” and/or reducing their size can help focus the user’s attention. Product Designer
Braid Design Pty Ltd
Melbourne
Information Technology
150k+
Long description of card details providing more information.
2d ago
<Card>
<Stack space="large">
<Stack space="small">
<Heading level="4">Product Designer</Heading>
<Text>Braid Design Pty Ltd</Text>
</Stack>
<Stack space="small">
<Text tone="secondary">Melbourne</Text>
<Text tone="secondary">Information Technology</Text>
<Text tone="secondary">150k+</Text>
</Stack>
<Text>Long description of card details providing more information.</Text>
<Text size="small" tone="secondary">
2d ago
</Text>
</Stack>
</Card>
Icons can be used to serve as visual cues to complement data and introduce some more visual interest. Let’s add icons to our list of metadata. Product Designer
Braid Design Pty Ltd
Long description of card details providing more information.
2d ago
<Card>
<Stack space="large">
<Stack space="small">
<Heading level="4">Product Designer</Heading>
<Text>Braid Design Pty Ltd</Text>
</Stack>
<Stack space="small">
<Text icon={<IconLocation />} tone="secondary">
Melbourne
</Text>
<Text icon={<IconTag />} tone="secondary">
Information Technology
</Text>
<Text icon={<IconMoney />} tone="secondary">
150k+
</Text>
</Stack>
<Text>Long description of card details providing more information.</Text>
<Text size="small" tone="secondary">
2d ago
</Text>
</Stack>
</Card>
Let’s look at adding a visual cue to indicate that this job is new. To do this, we’ll add a Badge component to the top of our card. New
Product Designer
Braid Design Pty Ltd
Long description of card details providing more information.
2d ago
<Card>
<Stack space="large">
<Stack space="small">
<Badge tone="positive">New</Badge>
<Heading level="4">Product Designer</Heading>
<Text>Braid Design Pty Ltd</Text>
</Stack>
<Stack space="small">
<Text icon={<IconLocation />} tone="secondary">
Melbourne
</Text>
<Text icon={<IconTag />} tone="secondary">
Information Technology
</Text>
<Text icon={<IconMoney />} tone="secondary">
150k+
</Text>
</Stack>
<Text>Long description of card details providing more information.</Text>
<Text size="small" tone="secondary">
2d ago
</Text>
</Stack>
</Card>
Let’s also add a Rating alongside the company name. Ideally we want this to sit on the same line, but if it does not fit due to the length of the name or the size of the screen we want it to wrap below. For this we can use the Inline component. NOTE: Click through to the Playroom to see how this behaves across screen sizes.
Long description of card details providing more information.
2d ago
<Card>
<Stack space="large">
<Stack space="small">
<Badge tone="positive">New</Badge>
<Heading level="4">Product Designer</Heading>
<Inline alignY="center" space="small">
<Text>Braid Design Pty Ltd</Text>
<Rating rating={4.5} />
</Inline>
</Stack>
<Stack space="small">
<Text icon={<IconLocation />} tone="secondary">
Melbourne
</Text>
<Text icon={<IconTag />} tone="secondary">
Information Technology
</Text>
<Text icon={<IconMoney />} tone="secondary">
150k+
</Text>
</Stack>
<Text>Long description of card details providing more information.</Text>
<Text size="small" tone="secondary">
2d ago
</Text>
</Stack>
</Card>
Sometimes adding new features can necessitate changing the layout. First, we’ll use a Spread component to separate our content and action. NOTE: To make this easier to follow, we’ve replaced the job content with a Placeholder.
<Card>
<Spread space="small">
<Placeholder height={80} label="Job content" />
<Placeholder height={80} label="Save action" />
</Spread>
</Card>
For the save action we’ll use a ButtonIcon with an IconBookmark. We can now replace our “Save action” Placeholder with the ButtonIcon. <Card>
<Spread space="small">
<Placeholder height={80} label="Job content" />
<ButtonIcon
icon={<IconBookmark />}
id="save-7a"
label="Save job"
size="large"
variant="transparent"
/>
</Spread>
</Card>
Now that we’ve added the action, let’s reinstate our content by replacing the “Job content” Placeholder.
Long description of card details providing more information.
2d ago
<Card>
<Spread space="small">
<Stack space="large">
<Stack space="small">
<Badge tone="positive">New</Badge>
<Heading level="4">Product Designer</Heading>
<Inline alignY="center" space="small">
<Text>Braid Design Pty Ltd</Text>
<Rating rating={4.5} />
</Inline>
</Stack>
<Stack space="small">
<Text icon={<IconLocation />} tone="secondary">
Melbourne
</Text>
<Text icon={<IconTag />} tone="secondary">
Information Technology
</Text>
<Text icon={<IconMoney />} tone="secondary">
150k+
</Text>
</Stack>
<Text>Long description of card details providing more information.</Text>
<Text size="small" tone="secondary">
2d ago
</Text>
</Stack>
<ButtonIcon
icon={<IconBookmark />}
id="save-7b"
label="Save job"
size="large"
variant="transparent"
/>
</Spread>
</Card>
Now that we have all our elements in place we can polish until we are happy. Adjusting white space between elements, or even responsively, to achieve the desired goal.
Now that you are familiar with the code we have just written, this is a good chance to head over to Playroom and continue refining this design.
You may want to consider:
Using Hidden to reduce the amount of data shown on mobile, Specifying different spacing responsively using Stack, Adding a company logo. You can use Placeholder component if you don’t have hosted imagery to work with.