{issued}

Styling & themes

Match the form to your brand. Every SDK exposes the same high-level properties — the object shape just maps to each platform's idioms.

Web platforms

Pass a theme object to Issued.init(...) (or the theme prop on the React / Vue components):

PropertyTypeDescription
mode'auto' | 'light' | 'dark'Color scheme. "auto" follows prefers-color-scheme.
primaryColorstringButton and accent color.
errorColorstringValidation error color.
successColorstringSuccess message color.
borderRadiusstringForm element corner radius (e.g. "8px").
fontFamilystringFont family for form text.
cssPrefixstringCustom CSS class prefix (default "issued").
js
Issued.init({
  projectId: "your-project-id",
  fields: { /* ... */ },
  theme: {
    mode: "auto",
    primaryColor: "#6366f1",
    errorColor: "#dc2626",
    successColor: "#059669",
    borderRadius: "8px",
    fontFamily: "Inter, sans-serif"
  }
});

Back-compat note: older examples use customization.theme: 'light' as a shortcut for mode. That still works but is deprecated — prefer theme.mode going forward.

Mobile platforms

Native SDKs expose a ThemeConfig struct with granular color control. Colors are hex strings.

swift
let theme = ThemeConfig(
    primaryColor: "#6366f1",
    backgroundColor: "#ffffff",
    textColor: "#1f2937",
    borderColor: "#d1d5db",
    cornerRadius: 8.0,
    fontFamily: "SF Pro Display"
)

CSS overrides (web)

If the theme object doesn't cover what you need, every rendered element has a class prefixed with cssPrefix (default issued). Target them directly:

css
.issued-form { max-width: 480px; }
.issued-field-label { font-weight: 600; }
.issued-submit-button { text-transform: uppercase; }

More configuration

For field setup, see fields reference. For runtime hooks, see callbacks.