domain
Connect SDK

White label

Apply your product identity with validated theme, logo, copy, and behavior options.

Pass customer-visible product identity through applicationName and whiteLabel. Domain0 validates every value before mounting the flow.

await domain0.connectDomain({
  client,
  connectionId,
  applicationName: 'Acme Cloud',
  whiteLabel: {
    logo: 'https://app.acme.com/brand/logo.svg',
    logoBackgroundColor: '#FFFFFF',
    theme: {
      colorMode: 'system',
      light: {
        surface: '#FFFFFF',
        text: '#111827',
        primary: '#172554',
        onPrimary: '#FFFFFF',
      },
      dark: {
        surface: '#111827',
        text: '#F9FAFB',
        primary: '#BFDBFE',
        onPrimary: '#172554',
      },
      dialogRadiusPx: 16,
      buttonRadiusPx: 8,
    },
    copy: {
      successTitle: { en: '{DOMAIN} is connected' },
      successButton: { en: 'Return to Acme' },
    },
  },
})

Company identity

OptionBehavior
applicationNamePlain-text product name, up to 120 characters
logoHTTPS image URL without embedded credentials
logoBackgroundColorOpaque #RRGGBB color
removeLogoBorderRemoves the default logo boundary
hideCompanyLogoHides the supplied logo
hideCompanyNameHides the supplied application name

Remote logos are fetched by the customer's browser. Host them on a stable HTTPS origin intended for public brand assets and avoid customer-specific URLs.

Theme

colorMode accepts light, dark, or system. Each palette supports:

TokenUsed for
surfaceDialog background
textPrimary text
mutedTextSecondary text
borderControls and separators
primaryPrimary controls
onPrimaryText on primary controls
linkLink text
focusKeyboard focus indicators
dangerError text and destructive emphasis
onDangerText on destructive controls

Colors use opaque uppercase or lowercase #RRGGBB input and are normalized. The backdrop uses #RRGGBBAA. Domain0 rejects palettes that fail the required text, control, link, or focus contrast.

Layout tokens are bounded:

TokenRange
widthPx320–960
dialogRadiusPx0–32
buttonRadiusPx0–32
inputRadiusPx0–32
fontWeight100–900 in steps of 50
boldFontWeight100–900, not lower than fontWeight

fontFamily accepts a bounded system-font stack. It does not load remote fonts or accept arbitrary CSS.

Custom copy

Copy can be an English string or an object with en plus translated values. English is required as the fallback.

FieldPlaceholder
initialSubtitleNone
providerLoginMessage{PROVIDER}
successTitle{DOMAIN}
successDescription{DOMAIN}
successButtonNone
manuallyScreen.stepByStepGuideNone

Copy is plain text, limited to 500 characters, and cannot contain HTML or unrecognized placeholders.

Behavior controls

OptionEffect
removeShareLoginHides the DNS-administrator sharing action
skipCongratulationsScreenCloses after verified success without the final screen
customProperties.manualConfiguration.disableScreenRemoves guided manual setup
customProperties.providerLogin.forwardLink.disableRemoves the sharing action at provider login
customProperties.providerLogin.gotoManualLink.disableRemoves the manual fallback link
copy.manuallyScreen.disableManualSetupDocumentationLinkHides the generic guide link

Contradictory options are rejected

Forced manual mode requires the manual screen and its entry link. DKIM guidance requires the success screen. The SDK rejects configurations that make the selected flow unreachable.

On this page