Filters
XRDFiltersVibeFilter
Vibe filter (Good For + Atmosphere + Noise Level) shown as a collapsible section in the filters sidebar.
XRDFiltersVibeFilter
Filter component for the Vibe group in the listings page sidebar. Surfaces 12 standardized vibe ids across three subgroups.
Usage
<UAccordion :items="[{ label: 'Vibe', slot: 'vibe', value: 'vibe' }]">
<template #vibe>
<XRDFiltersVibeFilter />
</template>
</UAccordion>
This component is already wired into XRDFilters (the sidebar index) — no manual setup required for the listing page.
Subgroups
The filter is rendered with three sub-headers:
- Good For — Date Night, Family, Business, Groups, Kids
- Atmosphere — Casual, Trendy, Intimate, Upscale
- Noise Level — Quiet, Moderate Noise, Lively
Each option is a checkbox. Multiple vibes combine with AND logic (a restaurant must have ALL selected vibes to appear in results).
Auto-hide for empty data
The component introspects the full restaurant list (via useRestaurantFilters().allRestaurants) and only shows vibes that at least one restaurant in the dataset has. So if your data doesn't include "Intimate" restaurants, that option won't appear.
AI Context
component: XRDFiltersVibeFilter
package: "@xenterprises/nuxt-x-restaurants"
use-when: >
Adding vibe-based filtering (Good For / Atmosphere / Noise) to the
listings sidebar. Combines with useVibes() for the standardized ids.
Auto-hides options not present in the data. Combines selections with
AND logic.
