c15t
Version:
Headless JavaScript consent management platform for cookie banners, privacy preferences, consent storage, and script gating.
97 lines (75 loc) • 2.49 kB
Markdown
title: Location Info
description: Reference page for location info.
group: reference
## locationInfo
The `locationInfo` state contains the user's detected geographic information:
```tsx
const { locationInfo } = useConsentManager();
if (locationInfo) {
console.log(locationInfo.jurisdiction); // 'GDPR', 'CCPA', etc.
console.log(locationInfo.countryCode); // 'DE', 'US', etc.
console.log(locationInfo.regionCode); // 'BY', 'CA', etc.
}
```
`locationInfo` is `null` until the backend responds with geolocation data (or in offline mode if no overrides are set).
## Jurisdiction Codes
|Code|Region|Consent Model|
|--|--|--|
|`GDPR`|European Union|opt-in|
|`UK_GDPR`|United Kingdom|opt-in|
|`CH`|Switzerland|opt-in|
|`BR`|Brazil (LGPD)|opt-in|
|`APPI`|Japan|opt-in|
|`PIPA`|South Korea|opt-in|
|`PIPEDA`|Canada (excl. Quebec)|opt-out|
|`QC_LAW25`|Quebec, Canada|opt-in|
|`CCPA`|California, USA|opt-out|
|`AU`|Australia|opt-out|
|`NONE`|No jurisdiction|null model|
## setOverrides()
Override detected values for testing or manual configuration. This triggers a re-fetch of consent banner data with the new values:
```tsx
const { setOverrides } = useConsentManager();
// Override country (triggers jurisdiction detection)
await setOverrides({ country: 'DE' });
// Override language
await setOverrides({ language: 'de' });
// Override both
await setOverrides({ country: 'US', region: 'CA', language: 'es' });
```
## setLocationInfo()
Directly set location info without triggering a re-fetch:
```tsx
const { setLocationInfo } = useConsentManager();
setLocationInfo({
jurisdiction: 'GDPR',
countryCode: 'DE',
regionCode: 'BY',
});
```
## Testing Different Jurisdictions
A development-only component for testing consent behavior across jurisdictions:
```tsx
function JurisdictionTester() {
const { setOverrides, model, locationInfo } = useConsentManager();
const testCases = [
{ label: 'GDPR', country: 'DE' },
{ label: 'CCPA', country: 'US', region: 'CA' },
{ label: 'PIPEDA', country: 'CA', region: undefined },
{ label: 'QC_LAW25', country: 'CA', region: 'QC' },
{ label: 'NONE', country: 'US', region: 'TX' },
];
return (
<div>
<p>Current: {locationInfo?.jurisdiction ?? 'none'} → model: {model}</p>
{testCases.map((tc) => (
<button key={tc.label} onClick={() => setOverrides({ country: tc.country, region: tc.region })}>
Test as {tc.label}
</button>
))}
</div>
);
}
```