Bridge UI

Classes

Override Bridge UI component class slots from the provider or per instance.

Most components accept a classes prop that targets internal parts (root, icon, label, …). You can set those slots once in the provider or on a single instance. Layers merge with Tailwind-aware concatenation so provider styles and instance styles compose.

Provider registry

Use components.<Name>.classes for app-wide slot defaults:

<script setup lang="ts">
import { BridgeUIProvider } from "@bridge-ui/vue";
</script>

<template>
  <BridgeUIProvider
    :components="{
      Button: {
        classes: {
          root: 'uppercase tracking-wide',
        },
      },
      Alert: {
        classes: {
          root: 'border-l-4',
          title: 'font-semibold',
        },
      },
    }"
  >
    <slot />
  </BridgeUIProvider>
</template>
import { BridgeUIProvider } from "@bridge-ui/react";
import type { PropsWithChildren } from "react";

export default function ProviderClasses({ children }: PropsWithChildren) {
  return (
    <BridgeUIProvider
      components={{
        Button: {
          classes: {
            root: "uppercase tracking-wide",
          },
        },
        Alert: {
          classes: {
            root: "border-l-4",
            title: "font-semibold",
          },
        },
      }}
    >
      {children}
    </BridgeUIProvider>
  );
}

Per-instance overrides

Pass classes on the component to refine or extend the registry:

Merge order for each slot: provider classes → instance classes. Conflicting Tailwind utilities are resolved with tailwind-merge.

Root class vs slots

  • Use the framework root class (class on Vue, className on React) for the outermost element when the component forwards it.
  • Use classes for named internal parts documented in each component’s API table.

Example Button slots: root, startIcon, endIcon, icon, loading.

Typing

After loading Framework augments (see Type overrides), components.Button.classes is typed as ButtonClasses instead of a loose object.

Next steps

  • Tokens — register new visual tokens, not only classes
  • Default props — change size/color defaults
  • Button — full slot and API reference