Single entry point for all global config. Standalone — no framework dependency.
BcSetup.configure({
baseUrl: '/api',
auth: { type: 'bearer', token: () => localStorage.getItem('jwt') }
});Zero config also works — all defaults are sensible.
Merges partial config into current config. Can be called multiple times — each call merges, not replaces.
BcSetup.configure({
baseUrl: string; // Base URL for all API calls (default: '')
headers: Record<string, string | (() => string)>; // Extra headers for all requests
auth: {
type: 'bearer' | 'header' | 'cookie' | 'none'; // Auth strategy (default: 'none')
token?: string | (() => string | null); // For bearer type
headerName?: string; // For header type
headerValue?: string | (() => string | null); // For header type
};
responseTransformer?: (response: any) => { data: any[]; total: number }; // Global response transformer
validateOn: 'blur' | 'change' | 'submit' | 'manual'; // Default validation trigger (default: 'blur')
validationMessages: Record<string, string>; // Override default error messages
size: 'sm' | 'md' | 'lg'; // Default field size (default: 'md')
locale: string; // Locale for formatting (default: 'en')
theme: 'light' | 'dark' | 'system' | string; // Theme (default: 'light')
});Returns readonly snapshot of current config.
Returns resolved headers (auth + custom). Functions are called at resolve time.
Returns current base URL.
Returns localized validation message. Supports {0}, {1} placeholders.
Register reactive field rules. See reactivity.md.
BcSetup.reactivity({
'type': (value, form) => {
if (value === 'company') {
form.setRequired('tax_id', true);
}
}
});Register a custom named validator. See validation.md.
BcSetup.registerValidator('no-competitor', async (value) => {
if (String(value).endsWith('@competitor.com')) return 'Competitor emails not allowed';
return null;
});Reset all config to defaults. Useful for testing.
BcSetup auto-reads meta tags on page load:
<meta name="bc-base-url" content="/api">
<meta name="bc-auth-token" content="eyJhbG...">
<meta name="bc-theme" content="dark">BcSetup.configure({
auth: { type: 'bearer', token: () => localStorage.getItem('jwt') }
});BcSetup.configure({
auth: {
type: 'header',
headerName: 'X-API-Key',
headerValue: () => document.querySelector('meta[name=api-key]')?.content
}
});BcSetup.configure({
headers: {
'X-Tenant': 'company-a',
'Accept-Language': 'id'
}
});BcSetup.configure({
responseTransformer: (res) => ({
data: res.results || res.data || [],
total: res.total_count || res.total || 0
})
});