Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Ozcaar/real-estate-template/llms.txt
Use this file to discover all available pages before exploring further.
useSiteConfig() is the single composable every component uses to read the active agency identity and its resolved theme tokens at runtime. It is backed by Nuxt’s useState primitive, which means the value is serialized into the SSR payload and rehydrated on the client without an extra network round-trip — no flash of unstyled content, no mismatch between server and client renders. Components must never import siteConfig directly from ~/config/site.config; always go through useSiteConfig() so a future multi-tenant loader can swap the active agency without changing any component.
Signature
A reactive
Ref wrapping the active SiteConfig. The value is initialized from the static agency config on first call and shared across all components via the 'site-config' state key.SiteConfig Interface
Identity, contact details, social links, module toggles, locale settings, and currency for the active agency. See
AgencyConfig below.The resolved design-token set: color palette, font stacks, border-radius scale, shadow scale, and layout constraints. See
ThemeConfig below.AgencyConfig Reference
AgencyContactConfig
AgencySocialConfig
AgencyModulesConfig
modules.* to conditionally render their content — no code changes are needed to enable or disable a module across the whole site.
ThemeConfig Reference
--color-primary, --radius-md) so every component can reference them via var(--color-primary) without coupling to any specific hex value.
Basic Usage
Common Access Patterns
| Expression | Type | Description |
|---|---|---|
site.value.agency.name | string | Display name for the agency |
site.value.agency.slogan | string | undefined | Optional marketing slogan |
site.value.agency.logo | string | Logo path, served from public/ |
site.value.agency.currency | string | ISO 4217 currency code (e.g. 'USD', 'MXN') |
site.value.agency.measurementUnit | 'metric' | 'imperial' | Default area unit for the catalog |
site.value.agency.contact.phone | string | Agency phone number |
site.value.agency.contact.whatsapp | string | WhatsApp number (digits or formatted) |
site.value.agency.contact.email | string | Agency email address |
site.value.agency.contact.address | string | Physical address string |
site.value.agency.social.instagram | string | undefined | Instagram URL, if configured |
site.value.agency.modules.properties | boolean | Whether the properties module is enabled |
site.value.agency.modules.agents | boolean | Whether the agents module is enabled |
site.value.agency.defaultLocale | string | Default locale code (e.g. 'en', 'es') |
site.value.theme.colors.primary | string | Brand primary hex color |
site.value.theme.colors.background | string | Page background color |
site.value.theme.colors.surface | string | Card/panel background color |
site.value.theme.fonts.heading | string | Heading font stack |
site.value.theme.fonts.body | string | Body font stack |
Conditional Rendering with Module Toggles
Themodules object is the canonical way to gate UI sections. Check it in <template> to conditionally render navigation items and page sections:
SSR Safety and the useState Guarantee
useSiteConfig() calls useState<SiteConfig>('site-config', () => siteConfig) internally. The 'site-config' key is the shared state identifier: the first call during SSR initializes the state from the static agency config, and Nuxt serializes it into the HTML payload. When the client hydrates, useState reads the serialized value from the payload instead of re-running the factory function — so the initial value is identical on both sides and hydration never mismatches.
i18n Integration
AgencyConfig does not hold i18n-translated strings. Fields like agency.name, agency.contact.address, and agency.social.* are agency-owned content (not locale strings). Human-readable UI labels — page titles, section headings, button text — live in the locale files under ~/i18n/ and are accessed via useI18n(). Both composables are commonly used together: