TheDocumentation 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.
Base* components are the foundation of the Real Estate Template’s design system. Every primitive lives in app/components/ui/ and is intentionally business-agnostic — a BaseButton knows nothing about properties, agents, or listings. All visual decisions (color, radius, shadow, typography) are driven by var(--color-*), var(--radius-*), and var(--shadow-*) CSS variables that the active theme injects at the :root. Swapping a theme file therefore rebrands the entire UI without touching a single component.
BaseButton
TheBaseButton component is the single entry point for all interactive actions in the template. Rather than rendering a fixed element, it selects the most semantically correct root element at runtime:
- An
<a>tag whenhrefis provided (external links,tel:,mailto:). - A
<NuxtLink>whentois provided (internal client-side navigation). - A native
<button>otherwise (form actions, JavaScript callbacks).
href or type.
Props
Controls the visual style of the button. All variants map to theme tokens, never hardcoded colors.
| Value | Appearance |
|---|---|
primary | Solid --color-primary background with --color-primary-foreground text |
secondary | Solid --color-secondary background with --color-secondary-foreground text |
outline | Transparent background with a --color-border border; hover fills --color-surface-muted |
ghost | Transparent background with no border; hover fills --color-surface-muted |
Controls height and horizontal padding.
| Value | Height | Padding | Font size |
|---|---|---|---|
sm | h-9 | px-3 | text-sm |
md | h-11 | px-5 | text-sm |
lg | h-12 | px-6 | text-base |
Internal route path passed to
<NuxtLink>. When provided, the button renders as a router link. Takes priority over the native <button> fallback.External URL. When provided, the button renders as an
<a> element. Takes the highest render priority over to and native button.Forwarded to the underlying
<a> element. When target="_blank" is set, the rel attribute automatically becomes "noopener noreferrer" unless overridden.Overrides the auto-computed
rel attribute. Only applies when href is provided.Native button type. Only applies when neither
href nor to is provided.When
true, adds w-full so the button stretches to fill its container. Useful for mobile-first CTAs inside cards or forms.Disables the native button. Applies
disabled:pointer-events-none disabled:opacity-50 via Tailwind.Slots
The default slot renders inside the button element. Combine it withBaseIcon to build icon + text or icon-only buttons.
Usage examples
BaseCard
BaseCard is a themed surface container used throughout the template — property cards, agent cards, development cards, contact forms, and feature panels all build on top of it. It provides two named slots: media for edge-to-edge content (images, maps) that renders without padding, and the default slot for padded body content.
Props
The HTML element or component to render as the card root. Pass
'article' for semantically meaningful cards (e.g. properties), 'li' when the card is inside a <ul> grid.Inner padding applied to the default slot content.
| Value | Class |
|---|---|
none | No padding |
sm | p-4 |
md | p-6 |
lg | p-8 |
Box shadow depth pulled from the theme shadow tokens
--shadow-sm, --shadow-md, and --shadow-lg.Border radius pulled from the theme radius tokens
--radius-md, --radius-lg, and --radius-xl.When
true, adds a transition-shadow hover effect that lifts the card to --shadow-md on pointer hover — used for clickable property, agent, and development cards.Slots
| Slot | Description |
|---|---|
media | Edge-to-edge content with no padding. Renders above the default slot. Ideal for cover images. |
default | Padded body content. Respects the padding prop. |
Usage examples
BaseBadge
BaseBadge renders a small pill-shaped label used for property status chips, operation type tags (For Sale / For Rent), agent specialty tags, and development status indicators. Brand variants (primary, secondary, accent) use solid theme colors. Status variants (success, warning, error) use a soft tinted background via CSS color-mix() so they stay legible on any theme without requiring dedicated foreground tokens.
Props
variant
'primary' | 'secondary' | 'accent' | 'neutral' | 'success' | 'warning' | 'error'
default:"'neutral'"
Determines background and text color.
| Value | Background | Text |
|---|---|---|
primary | --color-primary | --color-primary-foreground |
secondary | --color-secondary | --color-secondary-foreground |
accent | --color-accent | --color-accent-foreground |
neutral | --color-surface-muted | --color-foreground |
success | 14% tint of --color-success | --color-success |
warning | 16% tint of --color-warning | --color-warning |
error | 14% tint of --color-error | --color-error |
Controls padding and font size.
| Value | Classes |
|---|---|
sm | px-2 py-0.5 text-xs |
md | px-2.5 py-1 text-sm |
Slots
The default slot renders the badge label text. You can also place aBaseIcon inside for an icon-prefixed badge.
Usage examples
BaseContainer
BaseContainer is a thin layout utility that constrains content width and adds responsive horizontal padding. It uses --container-max-width from the theme token system rather than a hardcoded Tailwind max-w-7xl, so the maximum width can be adjusted per theme. By default it renders a <div>, but any semantic element can be substituted via the as prop.
Props
The HTML element to render as the container root. Common values:
'section', 'header', 'footer', 'nav', 'main'.Slots
The default slot holds the constrained content.Usage examples
BaseSection
BaseSection wraps page sections with consistent vertical rhythm and optional background tone. By default it renders a <section> element and automatically wraps its content in a BaseContainer. Set container to false for full-bleed backgrounds (e.g. hero panels, CTA bands).
Props
The HTML element to render as the section root.
Background tone applied to the section.
| Value | Background |
|---|---|
default | Transparent (inherits --color-background) |
muted | --color-surface-muted |
primary | --color-primary with --color-primary-foreground text |
Vertical padding applied to the section.
| Value | Classes |
|---|---|
none | No padding |
sm | py-8 sm:py-10 |
md | py-12 sm:py-16 |
lg | py-12 sm:py-16 lg:py-24 |
When
true (default), wraps content in a BaseContainer. Set to false for full-bleed content that spans the entire viewport width.Slots
The default slot holds the section content. Whencontainer is true, it is automatically wrapped in a BaseContainer.
Usage examples
BaseHeading
BaseHeading separates semantic heading level from visual size, solving a common accessibility pitfall where developers change the DOM heading tag just to get a different font size. The level prop controls which h1–h6 element is emitted; the size prop independently controls the visual scale. When size is omitted, a sensible default scale is applied based on level.
Props
The semantic HTML heading element to render (
h1 through h6). Always choose the correct heading for document structure — use size to adjust visual scale independently.The visual font size. When omitted, defaults to the size that maps to the
level:| Level | Default size |
|---|---|
1 | 3xl (text-4xl sm:text-5xl) |
2 | 2xl (text-3xl sm:text-4xl) |
3 | xl (text-3xl) |
4 | lg (text-2xl) |
5 | md (text-lg) |
6 | sm (text-base) |
When
true, uses --font-serif instead of --font-heading. Intended for luxury or editorial themes that pair a sans-serif body with a serif display font.Slots
The default slot renders the heading text content.Usage examples
BaseIcon
BaseIcon is a thin accessibility-focused wrapper around the Nuxt Icon component. It standardizes icon sizing across the template and handles the aria-label / aria-hidden toggle automatically: when a label is provided the icon is announced to assistive technology with role="img"; when omitted it is marked aria-hidden="true" so screen readers skip it as decorative.
Props
The Nuxt Icon name to render. The template uses
mdi:* (Material Design Icons) and simple-icons:* prefixes throughout. Examples: "mdi:bed-outline", "mdi:map-marker-outline", "simple-icons:tiktok".Applies a fixed width/height via Tailwind utility classes.
| Value | Classes |
|---|---|
sm | h-4 w-4 |
md | h-5 w-5 |
lg | h-6 w-6 |
xl | h-8 w-8 |
Accessible label. When provided, adds
role="img" and aria-label so the icon conveys meaning to screen reader users. When omitted, the icon is hidden from the accessibility tree as a purely decorative element.