Card
Panel with optional title, content and image
import Card from "@intility/bifrost-react/Card";Basic Card
Cards can be used to display tiled information. Use sub-components
<Card.Title> and <Card.Content> for formatting. Cards stretch to full width
of their container by default, the examples on this page use
<AutoCol> for layout.
<Card>
<Card.Title>Card.Title</Card.Title>
<Card.Content>Wrap card text content in Card.Content.</Card.Content>
</Card>Image banner
The <Card.Image url='...' /> is designed to be used as a top image banner
(first child of the card).
<Card>
<Card.Image url="/card/meetingroom.png" />
<Card.Title>Card.Title</Card.Title>
<Card.Content>Wrap card text content in Card.Content.</Card.Content>
</Card>Aspect ratio vs height
Default
aspect ratio
for a <Card.Image> is set to 16/9 but can be customized through
aspectRatio prop.
If you want a fixed height, use the height prop instead. Resize window to see
the difference.
<Card>
<Card.Image url='/card/profilebg_transparent.png' aspectRatio='3/1' />
<Card.Title>3/1 aspect ratio</Card.Title>
<Card.Content>Image height responds to card width.</Card.Content>
</Card>
<Card>
<Card.Image url='/card/profilebg_transparent.png' height='100px' />
<Card.Title>100px image height</Card.Title>
<Card.Content>Clipping may occur.</Card.Content>
</Card>Card button
You can place a clickable <Card.Button> at the bottom of the card.
import { faShoppingCart } from "@fortawesome/pro-regular-svg-icons"; import Card from "@intility/bifrost-react/Card"; import AutoCol from "@intility/bifrost-react/AutoCol"; export default function () { return ( <AutoCol> <Card> <Card.Title>Card Title</Card.Title> <Card.Content>Wrap card text content in Card.Content.</Card.Content> <Card.Button onClick={() => alert("navigate to shop")}> Go to shop </Card.Button> </Card> </AutoCol> ); }
Clickable card
Or you can make a card clickable by wrapping its content in a link.
<Card>
<a href="#path">
<Card.Image url="/card/meetingroom.png" />
<Card.Title>Clickable card</Card.Title>
<Card.Content>Place the link as a child of Card</Card.Content>
</a>
</Card>Clickable sub-components spacing issues
You can also make only certain parts of a card clickable by wrapping only those parts in the link, but since the components are no longer siblings the spacing will be wrong and needs to be fixed manually.
<Card>
<Card.Image url='/card/meetingroom.png' />
<a href='#path'>
<Card.Title style={{ marginBottom: 0 }}>Clickable title only</Card.Title>
</a>
<Card.Content style={{ marginTop: 4 }}>
Wrap card text content in Card.Content.
</Card.Content>
</Card>
<Card>
<a href='#path'>
<Card.Image url='/card/meetingroom.png' />
<Card.Title style={{ marginBottom: 0 }}>Title and Image</Card.Title>
</a>
<Card.Content style={{ marginTop: 4 }}>
Wrap card text content in Card.Content.
</Card.Content>
</Card>Circular image or icon
Use <Card.Logo> for a circular image or icon. If preceded by a <Card.Image>
it will overlap the image.
Works best on cards with align='center'.
<Card align='center'>
<Card.Image url='/card/profilebg_transparent.png' aspectRatio='3/1' />
<Card.Logo imageUrl='/card/profile.png' />
<Card.Title>Ola Nordmann</Card.Title>
</Card>
<Card align='center'>
<Card.Logo icon={faShoppingCart} />
<Card.Content>Wrap card text content in Card.Content.</Card.Content>
<Card.Button>Go to shop</Card.Button>
</Card>Responsive padding
The padding prop can be one of:
'none': no padding for any screen width'small'(default): 12px for any screen width'medium': 12px for small screens, 16px for large (1280px+) screens'large': 16px for small screens, 24px for large (1280px+) screens
<Card padding='large'>
<Card.Image url='/card/meetingroom.png' />
<Card.Title>Large padding</Card.Title>
<Card.Content>
Resize window to get 16px for small screens, 24px for (1280px+) screens
</Card.Content>
</Card>
<Card padding='medium'>
<Card.Image url='/card/meetingroom.png' />
<Card.Title>Medium padding</Card.Title>
<Card.Content>
Resize window to get 12px for small screens, 16px for (1280px+) screens
</Card.Content>
</Card>
<Card>
<Card.Image url='/card/meetingroom.png' />
<Card.Title>Default card</Card.Title>
<Card.Content>Always 12px padding</Card.Content>
</Card>