/**
* Default Tailwind classes for the TeamSettingsPage composer (startsim-o7s).
*
* Apps pass a partial override map to tint the page in their visual
* identity (indigo for vault, emerald for market, etc.). Each slot covers
* exactly one visual surface — section wrappers, headings, inline buttons,
* error rows.
*/
import type { MembersTableClassNames } from '../members-table-default-class-names'
import type { InviteMemberDialogClassNames } from '../invite-member-dialog-default-class-names'
import type { LeaveTeamDialogClassNames } from '../leave-team-dialog-default-class-names'
export interface TeamSettingsPageClassNames {
/** Outer page wrapper (controls overall spacing). */
root?: string
/** Header block (back link + page title + meta line). */
header?: string
/** "Back to environments" or equivalent breadcrumb link. */
backLink?: string
/** Page title (`Team & members`). */
title?: string
/** Subtitle line under the title (company · team name). */
subtitle?: string
/** Wrapper for a single page section (members / invitations / danger). */
section?: string
/** Row that pairs a section heading with its primary action button. */
sectionHeader?: string
/** Section H2 label (small uppercase tracking). */
sectionHeading?: string
/** Body text inside a section. */
sectionBody?: string
/** Border divider above the danger zone. */
dangerDivider?: string
/** Inline error text (mutation failures, validation hits). */
errorText?: string
/** Loading text ("Loading team…", "Loading members…"). */
loadingText?: string
/** Empty-state text ("No pending invitations.", etc). */
emptyText?: string
/** "Retry" button rendered next to inline errors. */
retryButton?: string
/** Wrapper of the pending-invitations table. */
invitationsTableWrapper?: string
/** The invitations
. */
invitationsTable?: string
/** Thead of the invitations table. */
invitationsThead?: string
/** Th cells of the invitations table. */
invitationsTh?: string
/** Tbody (divide-y normally). */
invitationsTbody?: string
/** Cell containing the email column. */
invitationsEmailCell?: string
/** Cell containing the role badge. */
invitationsRoleCell?: string
/** Role badge style. */
invitationsRoleBadge?: string
/** Cell containing the expiry. */
invitationsExpiryCell?: string
/** Cell containing the revoke action. */
invitationsActionsCell?: string
/** Revoke button text. */
invitationsRevokeButton?: string
/** Nested className maps for the embedded shared components. */
membersTable?: MembersTableClassNames
inviteDialog?: InviteMemberDialogClassNames
leaveDialog?: LeaveTeamDialogClassNames
}
export const TEAM_SETTINGS_PAGE_DEFAULTS: Required<
Omit<
TeamSettingsPageClassNames,
'membersTable' | 'inviteDialog' | 'leaveDialog'
>
> = {
root: 'space-y-8',
header: '',
backLink: 'text-sm text-primary hover:underline',
title: 'mt-2 text-xl font-semibold text-foreground',
subtitle: 'mt-1 text-sm text-muted-foreground',
section: 'space-y-3',
sectionHeader: 'flex items-center justify-between',
sectionHeading: 'text-sm font-semibold uppercase tracking-wide text-muted-foreground',
sectionBody: 'text-sm text-muted-foreground',
dangerDivider: 'space-y-3 border-t border-border pt-6',
errorText: 'text-sm text-destructive',
loadingText: 'text-sm text-muted-foreground',
emptyText: 'text-sm text-muted-foreground',
retryButton:
'rounded-lg border border-border px-3 py-1.5 text-sm text-foreground transition-colors hover:bg-muted',
invitationsTableWrapper:
'overflow-hidden rounded-xl border border-border bg-card',
invitationsTable: 'w-full text-sm',
invitationsThead: 'bg-muted/50 text-left text-xs uppercase text-muted-foreground',
invitationsTh: 'px-4 py-3 font-medium',
invitationsTbody: 'divide-y divide-border',
invitationsEmailCell: 'px-4 py-3 text-foreground',
invitationsRoleCell: 'px-4 py-3',
invitationsRoleBadge:
'inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-xs font-medium text-primary',
invitationsExpiryCell: 'px-4 py-3 text-muted-foreground',
invitationsActionsCell: 'px-4 py-3 text-right',
invitationsRevokeButton: 'text-sm text-destructive hover:underline',
}