Skip to content

DataBsFooter

The DataBsFooter component provides a branded application footer with customizable content areas. It features the Data Competence Center (DCC) branding by default, including an animated logo, and supports flexible slot-based customization for left, center, and right sections arranged in a three-column grid.

Logo
Custom Organization
Custom tagline
Contact: info@example.com

Features

  • Default DCC Branding: Includes Data Competence Center logo and information
  • Animated Logo: Interactive logo with random hover animations (heartbeat or rotate)
  • Default Center Content: Includes DisclaimerButton and ChangelogsButton by default
  • Flexible Slot System: Three slots for left, center, and right sections
  • Size Prop: Supports "sm" and "md" sizes for compact or standard logo display
  • Responsive Design: Adapts to mobile and desktop screens
  • External Link: Logo links to official DCC website
  • Accessibility: Proper link attributes for external navigation
  • Typography: Subtle text styling with gray color scheme

Props

PropTypeRequiredDefaultDescription
size"sm" | "md"No"md"Controls the logo size. "sm" renders a 32px logo, "md" renders a 48px logo.

Slots

SlotDescriptionDefault Content
leftContent for the left sectionDCC logo with animated hover effect and organization information
centerContent for the center sectionDisclaimerButton (ghost variant) and ChangelogsButton
rightContent for the right sectionEmpty <div>

Usage

Basic Implementation

Display the footer with default DCC branding and default center content:

vue
<template>
    <DataBsFooter />
</template>

This displays:

  • Animated DCC logo linking to https://www.bs.ch/ki
  • "Datenwissenschaften und KI" text
  • "Developed with ♥ by DCC - Data Competence Center" tagline (hidden on mobile)
  • DisclaimerButton and ChangelogsButton in the center section

Compact Size

Use the size prop for a smaller logo, useful in dense layouts:

vue
<template>
    <DataBsFooter size="sm">
        <template #right>
            <UButton icon="i-lucide-message-square">Feedback</UButton>
        </template>
    </DataBsFooter>
</template>

With Custom Center Content

Override the default center content with links or additional information:

vue
<template>
    <DataBsFooter>
        <template #center>
            <nav class="flex flex-wrap justify-center gap-4">
                <a href="/privacy" class="hover:underline">Privacy Policy</a>
                <a href="/terms" class="hover:underline">Terms of Service</a>
                <a href="/contact" class="hover:underline">Contact</a>
            </nav>
        </template>
    </DataBsFooter>
</template>

TIP

Overriding the center slot replaces the default DisclaimerButton and ChangelogsButton. Include them manually if you want to retain access to those flows from the footer.

With Right Content

Add version information or social links:

vue
<template>
    <DataBsFooter>
        <template #right>
            <div class="text-right space-y-1">
                <div>Version 1.2.3</div>
                <div class="flex gap-2 justify-end">
                    <a href="https://github.com/your-repo" target="_blank" rel="noopener noreferrer">
                        <UIcon name="i-lucide-github" />
                    </a>
                    <a href="https://twitter.com/your-handle" target="_blank" rel="noopener noreferrer">
                        <UIcon name="i-lucide-twitter" />
                    </a>
                </div>
            </div>
        </template>
    </DataBsFooter>
</template>

Complete Customization

Override the default branding and use all slots:

vue
<template>
    <DataBsFooter>
        <template #left>
            <div class="flex items-center gap-3">
                <img src="/logo.svg" alt="Company Logo" width="40" />
                <div class="hidden sm:block">
                    <div class="font-semibold">My Organization</div>
                    <div>Building the future</div>
                </div>
            </div>
        </template>

        <template #center>
            <div class="flex flex-wrap gap-3 justify-center text-xs">
                <a href="/about" class="hover:underline">About</a>
                <a href="/privacy" class="hover:underline">Privacy</a>
                <a href="/terms" class="hover:underline">Terms</a>
            </div>
        </template>

        <template #right>
            <div class="text-right text-xs">
                <div>© 2024 My Organization</div>
                <div>All rights reserved</div>
            </div>
        </template>

    </DataBsFooter>
</template>

Component Structure

The DataBsFooter uses a three-column grid layout:

vue
<div class="px-6">
    <div class="grid grid-cols-3 items-center justify-between gap-4 text-xs text-gray-500">
        <!-- Left Section -->
        <slot name="left">
            <!-- Default: Animated DCC logo and branding -->
        </slot>

        <!-- Center Section -->
        <slot name="center">
            <!-- Default: DisclaimerButton + ChangelogsButton -->
        </slot>

        <!-- Right Section -->
        <slot name="right">
            <!-- Default: empty div -->
        </slot>
    </div>
</div>

Responsive Behavior

On mobile devices (< 640px):

  • The organization text in the default left section is hidden
  • Only the logo is visible
  • Content in custom slots should also consider mobile layouts

Developed with ❤️ by the DCC. Documentation released under the MIT License.