Components

CardFooter

CardFooter is used to append a visually distinct section to Card.

Examples #

Import Syntax #

import Card, { CardFooter } from 'mineral-ui/Card';

Note

Cards normally occupy the full available width of their container. The Cards here are width-constrained for illustration purposes.

Basic Usage #

CardFooter is used to add an extension to a Card. It can contain any children, but is best used with CardActions and CardBlock.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.

Footer Title Only

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.

Footer Title

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.
<DemoLayout>
  <Card>
    <CardBlock>{loremIpsum}</CardBlock>
    <CardFooter title="Footer Title Only" />
  </Card>

  <Card>
    <CardBlock>{loremIpsum}</CardBlock>
    <CardFooter>
      <CardActions>
        <Button minimal>Button 1</Button>
        <Button primary>Button 2</Button>
      </CardActions>
    </CardFooter>
  </Card>

  <Card>
    <CardBlock>{loremIpsum}</CardBlock>
    <CardFooter title="Footer Title">
      <CardBlock>{loremIpsum}</CardBlock>
      <CardActions>
        <Button minimal>Button 1</Button>
        <Button primary>Button 2</Button>
      </CardActions>
    </CardFooter>
  </Card>
</DemoLayout>

Expandable Footer #

Set expandable to true to allow the user to expand/collapse CardFooter. Note that a title must be provided to expandable CardFooters.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.

Collapsed by Default

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.

Expanded by Default

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.
<DemoLayout>
  <Card>
    <CardBlock>{loremIpsum}</CardBlock>
    <CardFooter title="Collapsed by Default" expandable>
      <CardBlock>{loremIpsum}</CardBlock>
    </CardFooter>
  </Card>

  <Card>
    <CardBlock>{loremIpsum}</CardBlock>
    <CardFooter title="Expanded by Default" expandable defaultIsOpen>
      <CardBlock>{loremIpsum}</CardBlock>
    </CardFooter>
  </Card>
</DemoLayout>

Controlled #

CardFooter controls its own state by default, and can optionally be managed by the application as a controlled component through the isOpen attribute. Callbacks for onOpen and onClose are also provided.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.

Footer Title

class App extends Component {
  constructor(props) {
    super(props);

    this.state = {
      isOpen: false
    };

    this.onOpen = this.onOpen.bind(this);
    this.onClose = this.onClose.bind(this);
    this.toggle = this.toggle.bind(this);
  }

  onOpen(event) {
    this.setState({ isOpen: true });
  }

  onClose(event) {
    this.setState({ isOpen: false });
  }

  toggle(event) {
    if (this.state.isOpen) {
      this.onClose(event);
    } else {
      this.onOpen(event);
    }
  }

  render() {
    const label = this.state.isOpen ? 'Collapse CardFooter' : 'Expand CardFooter';
    return (
      <DemoLayout ref={node => { this.demoLayout = node }}>
        <Card>
          <CardBlock>{loremIpsum}</CardBlock>
          <CardFooter
            expandable
            isOpen={this.state.isOpen}
            onOpen={this.onOpen}
            onClose={this.onClose}
            title="Footer Title">
            <CardBlock>{loremIpsum}</CardBlock>
          </CardFooter>
        </Card>
        <Button onClick={this.toggle}>{label}</Button>
      </DemoLayout>
    );
  }
}

Available Variants #

CardFooter is available in a few variants. Be sure to use the appropriate variant for your intent.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.

Success Footer Title

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.

Warning Footer Title

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.

Danger Footer Title

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.
<DemoLayout>
  <Card>
    <CardBlock>{loremIpsum}</CardBlock>
    <CardFooter title="Success Footer Title" variant="success">
      <CardBlock>{loremIpsum}</CardBlock>
    </CardFooter>
  </Card>

  <Card>
    <CardBlock>{loremIpsum}</CardBlock>
    <CardFooter title="Warning Footer Title" variant="warning">
      <CardBlock>{loremIpsum}</CardBlock>
    </CardFooter>
  </Card>

  <Card>
    <CardBlock>{loremIpsum}</CardBlock>
    <CardFooter title="Danger Footer Title" variant="danger">
      <CardBlock>{loremIpsum}</CardBlock>
    </CardFooter>
  </Card>
</DemoLayout>

Bidirectionality #

CardFooter reverses its alignment when the direction theme variable is set to rtl (right-to-left).

خدمة الجزر أبجد هوز. حتى على مستوى أسعار العقارات. الغلوتين. لا عقوبة. حتى الرعاية. ولكن الآن تنورة المؤلف والتغذية.

تذييل العنوان

<DemoLayout dir="rtl">
  <ThemeProvider theme={{ direction: 'rtl' }}>
    <Card>
      <CardBlock>{loremIpsum}</CardBlock>
      <CardFooter
        title="تذييل العنوان"
        expandable
        triggerTitle={isOpen => isOpen ? 'تصغير المحتويات' : 'قم بتوسيع المحتويات'}>
        <CardBlock>{loremIpsum}</CardBlock>
      </CardFooter>
    </Card>
  </ThemeProvider>
</DemoLayout>

API & Theme #

CardFooter Props #

The CardFooter component takes the following React props.

NameTypeDefaultDescription
childrenReact$Noderequired

Content of CardFooter

defaultIsOpenboolean

If expandable, expand CardFooter immediately upon initialization

expandableboolean

Display a trigger to expand/collapse CardFooter contents (title is required for this feature)

isOpenboolean

For use with controlled components, in which the app manages CardFooter state

onClose

If expandable, called when CardFooter is collapsed

onOpen

If expandable, called when CardFooter is expanded

titlestring | React$Element<*>

Title of the footer

triggerTitle

If expandable, title for expand/collapse trigger

variant'danger' | 'success' | 'warning'

Available variants

Undocumented properties, including as and css, will be applied to the root element.

CardFooter Theme Variables #

These variables can be used as hooks to override this component's style at either a local or global level. The theme referenced below is whatever theme is available from props to the instance of this component.

VariableValue
CardFooter_backgroundColortheme.well_backgroundColor
CardFooter_borderColortheme.borderColor
CardFooterRow_marginVerticaltheme.space_stack_sm
CardFooterRow_marginVerticalLasttheme.space_stack_md
CardFooterTitle_colortheme.h5_color
CardFooterTitle_fontSizetheme.h5_fontSize
CardFooterTitle_fontWeighttheme.h5_fontWeight

Usage #

When/How to Use #

Use CardFooter to add a visually differentiated section to your Card. It is best used for stateful information or functionality, particularly when paired with a variant. CardFooter must always be the last thing in a Card.

Best Practices #

Use "Title Case" for your footer title.

Card Title

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.

Card Footer Title

Use the appropriate variant for your intent.

Card Title

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.

Ready

Don't use a variant that differs from intent, as this will cause confusion.

Card Title

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.

Available

Don't put too much in a CardFooter, even if it's expandable. CardFooter content should be as brief as possible.

Card Title

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.

Card Footer Title

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mattis pretium massa. Aliquam erat volutpat. Nulla facilisi.
gradient placeholder