Fix hamburger menu visibility and feature config format

- Fix z-index layering so hamburger menu appears above canvas
  - Lower canvas zIndex from 1000 to 1
  - Add zIndex={100} to Affix and Menu components
  - Add position="bottom-start" to prevent dropdown going off-screen

- Update feature configs to use string states instead of booleans
  - Convert all JSON configs from true/false to "on"/"off"/"coming-soon"/"pro"
  - Fix BASIC_FEATURE_CONFIG to enable core features for logged-in users
  - This fixes menu items not responding to clicks when authenticated

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Michael Mainguy 2025-12-21 12:00:37 -06:00
parent a7aa385d98
commit 5891dfd6b7
7 changed files with 90 additions and 90 deletions

View File

@ -1,26 +1,26 @@
{ {
"tier": "none", "tier": "basic",
"pages": { "pages": {
"examples": false, "examples": "coming-soon",
"documentation": false, "documentation": "coming-soon",
"pricing": false, "pricing": "coming-soon",
"vrExperience": true "vrExperience": "on"
}, },
"features": { "features": {
"createDiagram": false, "createDiagram": "on",
"createFromTemplate": false, "createFromTemplate": "coming-soon",
"manageDiagrams": false, "manageDiagrams": "on",
"shareCollaborate": false, "shareCollaborate": "coming-soon",
"privateDesigns": false, "privateDesigns": "coming-soon",
"encryptedDesigns": false, "encryptedDesigns": "pro",
"editData": false, "editData": "coming-soon",
"config": true, "config": "on",
"enterImmersive": true, "enterImmersive": "on",
"launchMetaQuest": true "launchMetaQuest": "on"
}, },
"limits": { "limits": {
"maxDiagrams": 0, "maxDiagrams": 10,
"maxCollaborators": 0, "maxCollaborators": 0,
"storageQuotaMB": 0 "storageQuotaMB": 200
} }
} }

View File

@ -1,22 +1,22 @@
{ {
"tier": "basic", "tier": "basic",
"pages": { "pages": {
"examples": true, "examples": "on",
"documentation": true, "documentation": "on",
"pricing": true, "pricing": "on",
"vrExperience": true "vrExperience": "on"
}, },
"features": { "features": {
"createDiagram": true, "createDiagram": "on",
"createFromTemplate": true, "createFromTemplate": "on",
"manageDiagrams": true, "manageDiagrams": "on",
"shareCollaborate": false, "shareCollaborate": "coming-soon",
"privateDesigns": true, "privateDesigns": "on",
"encryptedDesigns": false, "encryptedDesigns": "pro",
"editData": true, "editData": "on",
"config": true, "config": "on",
"enterImmersive": true, "enterImmersive": "on",
"launchMetaQuest": true "launchMetaQuest": "on"
}, },
"limits": { "limits": {
"maxDiagrams": 25, "maxDiagrams": 25,

View File

@ -1,22 +1,22 @@
{ {
"tier": "free", "tier": "free",
"pages": { "pages": {
"examples": true, "examples": "on",
"documentation": true, "documentation": "on",
"pricing": true, "pricing": "on",
"vrExperience": true "vrExperience": "on"
}, },
"features": { "features": {
"createDiagram": true, "createDiagram": "on",
"createFromTemplate": false, "createFromTemplate": "coming-soon",
"manageDiagrams": true, "manageDiagrams": "on",
"shareCollaborate": false, "shareCollaborate": "coming-soon",
"privateDesigns": false, "privateDesigns": "coming-soon",
"encryptedDesigns": false, "encryptedDesigns": "pro",
"editData": true, "editData": "on",
"config": true, "config": "on",
"enterImmersive": true, "enterImmersive": "on",
"launchMetaQuest": true "launchMetaQuest": "on"
}, },
"limits": { "limits": {
"maxDiagrams": 6, "maxDiagrams": 6,

View File

@ -1,22 +1,22 @@
{ {
"tier": "none", "tier": "none",
"pages": { "pages": {
"examples": false, "examples": "off",
"documentation": false, "documentation": "off",
"pricing": false, "pricing": "off",
"vrExperience": false "vrExperience": "off"
}, },
"features": { "features": {
"createDiagram": false, "createDiagram": "off",
"createFromTemplate": false, "createFromTemplate": "off",
"manageDiagrams": false, "manageDiagrams": "off",
"shareCollaborate": false, "shareCollaborate": "off",
"privateDesigns": false, "privateDesigns": "off",
"encryptedDesigns": false, "encryptedDesigns": "off",
"editData": false, "editData": "off",
"config": false, "config": "off",
"enterImmersive": false, "enterImmersive": "off",
"launchMetaQuest": false "launchMetaQuest": "off"
}, },
"limits": { "limits": {
"maxDiagrams": 0, "maxDiagrams": 0,

View File

@ -1,22 +1,22 @@
{ {
"tier": "pro", "tier": "pro",
"pages": { "pages": {
"examples": true, "examples": "on",
"documentation": true, "documentation": "on",
"pricing": true, "pricing": "on",
"vrExperience": true "vrExperience": "on"
}, },
"features": { "features": {
"createDiagram": true, "createDiagram": "on",
"createFromTemplate": true, "createFromTemplate": "on",
"manageDiagrams": true, "manageDiagrams": "on",
"shareCollaborate": true, "shareCollaborate": "on",
"privateDesigns": true, "privateDesigns": "on",
"encryptedDesigns": true, "encryptedDesigns": "on",
"editData": true, "editData": "on",
"config": true, "config": "on",
"enterImmersive": true, "enterImmersive": "on",
"launchMetaQuest": true "launchMetaQuest": "on"
}, },
"limits": { "limits": {
"maxDiagrams": -1, "maxDiagrams": -1,

View File

@ -222,7 +222,7 @@ export default function VrExperience() {
<VrTemplate> <VrTemplate>
{/* Guest Mode Banner - Non-aggressive, dismissible (hidden for demo) */} {/* Guest Mode Banner - Non-aggressive, dismissible (hidden for demo) */}
{!isAuthenticated && !guestBannerDismissed && dbName !== 'demo' && ( {!isAuthenticated && !guestBannerDismissed && dbName !== 'demo' && (
<Affix position={{top: 20, right: 20}} style={{maxWidth: 400}}> <Affix position={{top: 20, right: 20}} style={{maxWidth: 400}} zIndex={100}>
<Alert <Alert
variant="light" variant="light"
color="blue" color="blue"
@ -248,8 +248,8 @@ export default function VrExperience() {
<ConfigModal closeConfig={closeConfig} configOpened={configOpened}/> <ConfigModal closeConfig={closeConfig} configOpened={configOpened}/>
{createModal()} {createModal()}
{manageModal()} {manageModal()}
<Affix position={{top: 30, left: 60}}> <Affix position={{top: 30, left: 60}} zIndex={100}>
<Menu opened={menuOpened} onChange={setMenuOpened}> <Menu opened={menuOpened} onChange={setMenuOpened} position="bottom-start" zIndex={100}>
<Menu.Target> <Menu.Target>
<Burger opened={menuOpened} onClick={toggleMenu} size="xl"/> <Burger opened={menuOpened} onClick={toggleMenu} size="xl"/>
</Menu.Target> </Menu.Target>
@ -361,7 +361,7 @@ export default function VrExperience() {
left: 0, left: 0,
width: '100%', width: '100%',
height: '100%', height: '100%',
zIndex: 1000 zIndex: 1
}}/> }}/>
</div> </div>
{chatOpen && <ChatPanel onClose={() => setChatOpen(false)}/>} {chatOpen && <ChatPanel onClose={() => setChatOpen(false)}/>}

View File

@ -74,27 +74,27 @@ export const DEFAULT_FEATURE_CONFIG: FeatureConfig = {
export const BASIC_FEATURE_CONFIG: FeatureConfig = { export const BASIC_FEATURE_CONFIG: FeatureConfig = {
tier: 'basic', tier: 'basic',
pages: { pages: {
examples: 'off', examples: 'coming-soon',
documentation: 'off', documentation: 'coming-soon',
pricing: 'coming-soon', pricing: 'coming-soon',
vrExperience: 'on', vrExperience: 'on',
}, },
features: { features: {
createDiagram: 'on', createDiagram: 'on',
createFromTemplate: 'off', createFromTemplate: 'coming-soon',
manageDiagrams: 'off', manageDiagrams: 'on',
shareCollaborate: 'off', shareCollaborate: 'coming-soon',
privateDesigns: 'off', privateDesigns: 'coming-soon',
encryptedDesigns: 'off', encryptedDesigns: 'pro',
editData: 'off', editData: 'coming-soon',
config: 'off', config: 'on',
enterImmersive: 'off', enterImmersive: 'on',
launchMetaQuest: 'off', launchMetaQuest: 'on',
}, },
limits: { limits: {
maxDiagrams: 0, maxDiagrams: 10,
maxCollaborators: 0, maxCollaborators: 0,
storageQuotaMB: 0, storageQuotaMB: 200,
}, },
}; };