@@ -183,8 +183,10 @@ const MapSystemComponent: React.FC = () => {
183183 Three component variants for different use cases (Map, CompactMap, FullscreenMap)
184184 </ li >
185185 < li > Interactive map with location markers and popups</ li >
186- < li > Location carousel with synchronized selection</ li >
186+ < li > Custom marker rendering with React components (renderMarker API)</ li >
187+ < li > Location carousel with synchronized selection and auto-expand</ li >
187188 < li > Inspector panel with detailed location information</ li >
189+ < li > Configurable popup bubbles (showPopup prop)</ li >
188190 < li > Loading, error, and empty states built-in</ li >
189191 < li > Responsive design (mobile/desktop)</ li >
190192 < li > Expand/collapse buttons for ChatGPT Apps SDK integration</ li >
@@ -896,6 +898,104 @@ const handleMapToggle = (fullscreen: boolean) => {
896898 </ div >
897899 </ section >
898900
901+ { /* Advanced Features */ }
902+ < section style = { { marginBottom : '64px' } } >
903+ < header style = { { marginBottom : '24px' } } >
904+ < h2 style = { { marginBottom : '8px' } } > Advanced Features</ h2 >
905+ < p style = { { color : 'var(--ai-color-text-secondary)' , margin : 0 , fontSize : '14px' } } >
906+ Additional map features for customization and interaction control.
907+ </ p >
908+ </ header >
909+
910+ < div style = { { display : 'flex' , flexDirection : 'column' , gap : '24px' } } >
911+ { /* Custom Markers */ }
912+ < div
913+ style = { {
914+ padding : '16px' ,
915+ background : 'var(--ai-color-bg-secondary)' ,
916+ borderRadius : '12px' ,
917+ border : '1px solid var(--ai-color-border-default)' ,
918+ } }
919+ >
920+ < h3 style = { { fontSize : '16px' , marginBottom : '8px' , fontWeight : 600 } } >
921+ Custom Marker Rendering
922+ </ h3 >
923+ < p style = { { margin : '0 0 12px' , fontSize : '14px' , color : 'var(--ai-color-text-secondary)' } } >
924+ Use the < code > renderMarker</ code > prop to customize map markers with your own React
925+ components. Supports global styling, per-location customization, and hybrid modes.
926+ </ p >
927+ < div style = { { fontSize : '13px' , color : 'var(--ai-color-text-secondary)' } } >
928+ < strong > See:</ strong > "Custom Markers" story in the sidebar for comprehensive examples
929+ including global markers, hybrid mode, per-location customization, performance optimization,
930+ and fallback patterns.
931+ </ div >
932+ </ div >
933+
934+ { /* Popup Control */ }
935+ < div
936+ style = { {
937+ padding : '16px' ,
938+ background : 'var(--ai-color-bg-secondary)' ,
939+ borderRadius : '12px' ,
940+ border : '1px solid var(--ai-color-border-default)' ,
941+ } }
942+ >
943+ < h3 style = { { fontSize : '16px' , marginBottom : '8px' , fontWeight : 600 } } >
944+ Popup Control
945+ </ h3 >
946+ < p style = { { margin : '0 0 12px' , fontSize : '14px' , color : 'var(--ai-color-text-secondary)' } } >
947+ Use < code > showPopup={ '{false}' } </ code > to disable marker popup bubbles when using external
948+ UI like Inspector panels or sidebars for location details.
949+ </ p >
950+ < div style = { { fontSize : '13px' , color : 'var(--ai-color-text-secondary)' } } >
951+ < strong > See:</ strong > "CompactMap" story → "Popup Control" section for side-by-side
952+ comparison of maps with and without popups.
953+ </ div >
954+ </ div >
955+
956+ { /* Scroll Wheel Zoom */ }
957+ < div
958+ style = { {
959+ padding : '16px' ,
960+ background : 'var(--ai-color-bg-secondary)' ,
961+ borderRadius : '12px' ,
962+ border : '1px solid var(--ai-color-border-default)' ,
963+ } }
964+ >
965+ < h3 style = { { fontSize : '16px' , marginBottom : '8px' , fontWeight : 600 } } >
966+ Scroll Wheel Zoom
967+ </ h3 >
968+ < p style = { { margin : '0' , fontSize : '14px' , color : 'var(--ai-color-text-secondary)' } } >
969+ Control zoom behavior with < code > scrollWheelZoom</ code > prop. Set to < code > true</ code > for
970+ native Leaflet scroll zoom (best for fullscreen), or < code > false</ code > (default) for
971+ custom pinch-to-zoom in embedded maps.
972+ </ p >
973+ </ div >
974+
975+ { /* Auto-Expand Carousel */ }
976+ < div
977+ style = { {
978+ padding : '16px' ,
979+ background : 'var(--ai-color-bg-secondary)' ,
980+ borderRadius : '12px' ,
981+ border : '1px solid var(--ai-color-border-default)' ,
982+ } }
983+ >
984+ < h3 style = { { fontSize : '16px' , marginBottom : '8px' , fontWeight : 600 } } >
985+ Auto-Expand on Carousel Click
986+ </ h3 >
987+ < p style = { { margin : '0 0 12px' , fontSize : '14px' , color : 'var(--ai-color-text-secondary)' } } >
988+ Set < code > autoExpandOnCarouselClick={ '{true}' } </ code > on < code > CompactMap</ code > to
989+ automatically expand to fullscreen when users click a carousel card. This provides faster
990+ access to detailed location information (one click instead of two).
991+ </ p >
992+ < div style = { { fontSize : '13px' , color : 'var(--ai-color-text-secondary)' } } >
993+ < strong > Default:</ strong > < code > false</ code > (users must click expand button manually)
994+ </ div >
995+ </ div >
996+ </ div >
997+ </ section >
998+
899999 { /* Related Components */ }
9001000 < section >
9011001 < header style = { { marginBottom : '16px' } } >
0 commit comments