ConciergeDrawer
Site-wide slide-in chat panel for Dex, the Contentstack developer experience assistant (built on Contentstack Concierge). Fixed to the right edge, opened from the header "Ask Dex" trigger or the ⌘I / Ctrl+I shortcut. Mounted once in app/layout.tsx inside ConciergeProvider.
Props
None. All chat and open/close state comes from useConcierge().
Usage
import { ConciergeDrawer } from "@/components/organisms/ConciergeDrawer";
// app/layout.tsx, inside <ConciergeProvider>
<ConciergeDrawer />Open it from anywhere with the context:
const { openDrawer, toggleDrawer } = useConcierge();Behavior
- Slides in from the right (
translate-xtransition,z-[60], above thez-50header). - Mobile: full width with a dimmed backdrop (click to close). Desktop: starts at
max-w-mdand can expand tomax-w-3xl/xl:max-w-4xlwithout leaving the page. - Header bar actions: new conversation, widen/narrow panel, close.
- Escape closes; focus returns to the previously focused element. Panel is
inertwhile closed. - Empty state shows a greeting plus compact
SuggestedQuestions; composer auto-focuses on open. - Wide mode expands the panel (
md:max-w-3xl,xl:max-w-4xl); chat content uses the full panel width.
Notes
- Dex is drawer-only. There is no standalone Dex route.
- Set
CONCIERGE_ENABLED=falseto hide the drawer, header trigger, ⌘I / Ctrl+I shortcut, and disablePOST /api/concierge. - Requires
CONCIERGE_API_KEYon the server viaPOST /api/concierge. Optionally enrich prompts with site MCP content (default). SetCONCIERGE_SITE_CONTEXT_ENABLED=falsefor native Digital Concierge only.