---
title: Location Info
description: Access detected jurisdiction, country, and region. Override geolocation for testing.
---
## 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>
  );
}
```
