- Rewrite messages.ts to plain string key maps (remove MessageDescriptor)
- Rewrite useMessages hook to expose t from useTranslations() directly
- Rename formatMessage → t across 193 consumer files
- Replace custom FormattedMessage component with next-intl t.rich()
- Update 52 language files to use rich text tags (<b>, <a>)
- Remove all direct imports from @/components/messages in favor of useMessages()
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rename SideMenu to NavMenu with visible group title labels and selected item highlighting
- Update react-zen to 0.242.0 and fix responsive breakpoints (xs -> base)
- Style floating tooltips with inverted background across WorldMap, charts, and WeeklyTraffic
- Add CSS variables for primary color and use IconLabel consistently
- Remove stray console.log from LoadingPanel
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove fixed width, position, and border on mobile
- Use 100% width when onItemClick is provided (mobile context)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add overflowY="auto" and flexGrow to menu container
- Menu now scrolls when content exceeds viewport height
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use single PanelLeft icon with muted color
- Align collapse button to right of header
- Bottom icons: horizontal (Row) when expanded, vertical (Column) when collapsed
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add collapse/expand button in header
- When collapsed: hide menu items and logo, show only toggle button
- Stack bottom icons vertically when collapsed
- Adjust grid layout to match collapsed nav width (60px vs 240px)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Skip domain-like segments (containing dots) when parsing the share path.
e.g., /share/slug/aol.com is treated as /share/slug
/share/slug/aol.com/events is treated as /share/slug/events
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change from [...shareId] catch-all to [slug]/[[...path]] structure
- Layout with ShareProvider now persists across sub-route navigation
- Add slug to ShareData context (separate from shareId UUID)
- Links now use slug instead of UUID for proper routing
- Remove unused ShareFooter and ShareHeader files
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Centralizes the single-section redirect logic in ShareProvider instead of
SharePage, reducing useEffect complexity and preventing children from
rendering during redirect.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update share API to return websiteId and parameters
- Create ShareNav component that filters nav items based on parameters
- Update SharePage to include navigation sidebar and route to correct page
- Support all website pages: overview, events, sessions, realtime, compare,
breakdown, goals, funnels, journeys, retention, utm, revenue, attribution
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>