Skip to main content

CnTenantBadge

Compact badge that renders the active organisation's name (and optional letter icon) for multi-tenant Conduction apps. Wires to useTenantContext so it stays reactive on setActiveTenant() calls.

Spec: openspec/changes/multi-tenancy-context — REQ-MT-4.

When to use​

  • A multi-tenant app where the user belongs to more than one organisation and you want a always-visible cue of which tenant CRUD operations target.
  • A top-bar slot of CnAppRoot (#tenant-badge); the badge is also valid as a stand-alone element in any layout.

The badge auto-hides when the user has at most one organisation, so single-tenant deployments can mount it unconditionally.

Usage​

<template>
<CnAppRoot :manifest="manifest" :user-organisations="orgs">
<template #tenant-badge>
<CnTenantBadge :organisations="orgs" />
</template>
</CnAppRoot>
</template>

<script>
import { CnAppRoot, CnTenantBadge } from '@conduction/nextcloud-vue'
import manifest from './manifest.json'

export default {
components: { CnAppRoot, CnTenantBadge },
data() {
return { manifest, orgs: window.OCP?.initialState?.['myapp-orgs'] || [] }
},
}
</script>

Props​

PropTypeDefaultDescription
organisationsArray | nullnullFull list of organisations the current user belongs to. When supplied, the badge hides if organisations.length <= 1. When null (length unknown), the badge renders whenever an active organisation exists.
size'sm' | 'md''sm'Visual size. 'sm' is intended for the top-bar slot; 'md' is a larger variant for dashboard headers.
fallbackNamestring''Name shown when only the active UUID is known and the full organisation entity has not yet been resolved.

Reactive context​

CnTenantBadge reads from useTenantContext() via the tenantContextMixin. It re-renders whenever setActiveTenant() fires the tenantSwitch event — switching tenants updates the name and icon in place without remounting.

Auto-hide rules​

  • organisations is a non-null array of length <= 1 → hide.
  • No active organisation UUID AND no fallbackName → hide.
  • Otherwise render.

Accessibility​

The badge sets title="<organisation name>" on its wrapper for screen-reader hover affordance. The text is rendered with the same colour contrast as the surrounding --color-main-text token so it inherits theme + dark-mode styling.