funkwhale/front/ui-docs/components/ui/card.md

7.3 KiB

Card

Funkwhale cards are used to contain textual information, links, and interactive buttons. You can use these to create visually pleasing links to content or to present information.

::: details Parameters

Props

interface Props extends Partial<RouterLinkProps> {
  title: string;
  category?: true | "h1" | "h2" | "h3" | "h4" | "h5";
  color?: Pastel;
  image?: string | { src: string; style?: "withPadding" };
  tags?: string[];
}

You have to set a title for the card by passing a title prop.

Style

  • Set --width on the element to override the default Card width.

:::

<Card title="For music lovers">
  Access your personal music
  collection from anywhere.
  Funkwhale gives you access to
  publication and sharing tools
  you can use to promote that
  your content across the web.
</Card>
Access your personal music collection from anywhere. Funkwhale gives you access to publication and sharing tools that you can use to promote your content across the web.

Add a :to prop, either containing an external link ("https://...") or a Vue Router destination:

<Card small title="Link"
  :to="{name: 'library.albums.detail', params: {id: album.id}}"
/>

Card as a Category header

Category cards are basic cards that contain only a title. To create a category card, pass a category prop.

<Card category
  title="Example Translations"
/>

Add an Image

Pass an image source to the image prop or set both image.src and image.style by passing an object.

<Card
  style="--width:208px"
  title="For music lovers"
  image="https://images.unsplash.com/photo-1524650359799-842906ca1c06?ixlib=rb-1.2.1&dl=te-nguyen-Wt7XT1R6sjU-unsplash.jpg&w=640&q=80&fm=jpg&crop=entropy&cs=tinysrgb">
/>


<Card
  style="--width:208px"
  title="For music lovers"
  :image="{ src:'https://images.unsplash.com/photo-1524650359799-842906ca1c06?ixlib=rb-1.2.1&dl=te-nguyen-Wt7XT1R6sjU-unsplash.jpg&w=640&q=80&fm=jpg&crop=entropy&cs=tinysrgb',
            style:'withPadding' }"
/>

Add an Icon

<Card
  title="Uploading..."
  image="https://images.unsplash.com/photo-1524650359799-842906ca1c06?ixlib=rb-1.2.1&dl=te-nguyen-Wt7XT1R6sjU-unsplash.jpg&w=640&q=80&fm=jpg&crop=entropy&cs=tinysrgb"
  icon="bi-cloud-arrow-up-fill"
/>

You can combine this prop with any other prop configuration. If you combine it with an image, keep an eye on the contrast ratio between the icon color and the image.

Add an Alert

<Card title="Your Collection">
  <template #alert>
    Please annotate all items with the required metadata.
  </template>
</Card>
Please annotate all items with the required metadata.

Items in this region are secondary and will be displayed smaller than the main content.

<Card title="My items">
  <template #alert> There are no items in this list </template>
  <template #footer>
    <Button variant="outline" icon="bi-upload" @click="alert('Uploaded. Press OK!')">
      Upload
    </Button>
    <Spacer style="flex-grow: 1" />
    <OptionsButton />
  </template>
</Card>

<template #alert>There are no items in this list

<template #footer> <Button variant="outline" icon="bi-upload" @click="alert('Uploaded. Press OK!')">Upload

Add an Action

Large Buttons or links at the bottom edge of the card serve as Call-to-Actions (CTA).

<Card title="Join an existing pod">
  The easiest way to get started with Funkwhale is to register an account on a public pod.
  <template #action>
    <Button @click="alert('Open the pod picker')">Action!
    </Button>
  </template>
</Card>
The easiest way to get started with Funkwhale is to register an account on a public pod. Action!

If there are multiple actions, they will be presented in a row:

<Card title="Delete this pod?">
  You cannot undo this action.
  <template #action>
    <Button style="justify-content: flex-start;" icon="bi-chevron-left" color="secondary" variant="ghost">
      Back
    </Button>
    <Button style="flex-grow:0;" color="destructive" @click="alert('Deleted')">
      Delete
    </Button>
  </template>
</Card>
You cannot undo this action. Back Delete

Add Tags

You can include tags on a card by adding a list of tags. These are rendered as pills.

<Card
  title="For music lovers"
  :tags="['rock', 'folk', 'punk']"
>
  Access your personal music collection from anywhere. Funkwhale gives you access to publication and sharing tools that you can use to promote your content across the web.
</Card>
Access your personal music collection from anywhere. Funkwhale gives you access to publication and sharing tools that you can use to promote your content across the web.