Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bldrs",
"version": "1.0.1894",
"version": "1.0.1898",
"main": "src/index.jsx",
"license": "AGPL-3.0",
"homepage": "https://github.com/bldrs-ai/Share",
Expand Down
8 changes: 6 additions & 2 deletions src/BaseRoutes.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import PopupCallback from './Components/Auth/PopupCallback'
import {checkOPFSAvailability, setUpGlobalDebugFunctions} from './OPFS/utils'
import ShareRoutes from './ShareRoutes'
import Styles from './Styles'
import About from './pages/About'
import MarketingAbout from './pages/marketing/MarketingAbout'
import MarketingPricing from './pages/marketing/MarketingPricing'
import MarketingServices from './pages/marketing/MarketingServices'
import Ipsum from './pages/Ipsum'
import Privacy from './pages/Privacy'
import TOS from './pages/TOS'
Expand Down Expand Up @@ -185,7 +187,9 @@ export default function BaseRoutes({testElt = null}) {
)
}
/>
<Route path='about' element={<About/>}/>
<Route path='about' element={<MarketingAbout/>}/>
<Route path='pricing' element={<MarketingPricing/>}/>
<Route path='services' element={<MarketingServices/>}/>
<Route path='privacy' element={<Privacy/>}/>
<Route path='tos' element={<TOS/>}/>
<Route path='ipsum' element={<Ipsum/>}/>
Expand Down
42 changes: 27 additions & 15 deletions src/Components/About/AboutControl.jsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
import React, {ReactElement, useEffect, useState} from 'react'
import {isFirst, setVisited} from '../../privacy/firstTime'
import useStore from '../../store/useStore'
import {ControlButtonWithHashState} from '../Buttons'
import {TooltipIconButton} from '../Buttons'
import {LogoB} from '../Logo/Logo'
import AboutDialog from './AboutDialog'
import OnboardingOverlay from '../Onboarding/OnboardingOverlay'
import {HASH_PREFIX_ABOUT} from './hashState'
import PkgJson from '../../../package.json'


/**
* Button to toggle About panel on and off. Default state is open until
* firstTime cookie is set, then closed.
* Button to toggle About panel on and off.
*
* - First-time visitors: shows the AboutDialog splash screen
* - Returning visitors: navigates to the /about marketing page
*
* @return {ReactElement}
*/
Expand Down Expand Up @@ -62,23 +63,34 @@ export default function AboutControl() {
setIsOnboardingOverlayVisible(false)
}

// Logo click: first-time visitors see splash dialog, returning users go to marketing page
// Opens in a new tab to preserve the user's model state and viewer context
const handleLogoClick = () => {
if (isFirst()) {
setIsAboutVisible(true)
} else {
window.open('/about', '_blank')
}
}

return (
<>
<ControlButtonWithHashState
<TooltipIconButton
title={`About Bldrs\n${PkgJson.version}`}
icon={<LogoB/>}
isDialogDisplayed={isAboutVisible}
setIsDialogDisplayed={setIsAboutVisible}
hashPrefix={HASH_PREFIX_ABOUT}
onClick={handleLogoClick}
placement='right'
selected={isAboutVisible}
variant='control'
color='success'
size='small'
dataTestId={testId}
>
<AboutDialog
isDialogDisplayed={isAboutVisible}
setIsDialogDisplayed={setIsAboutVisible}
onClose={handleDialogClose}
/>
</ControlButtonWithHashState>
/>
<AboutDialog
isDialogDisplayed={isAboutVisible}
setIsDialogDisplayed={setIsAboutVisible}
onClose={handleDialogClose}
/>
{onboardingOverlaySource === 'about' && (
<OnboardingOverlay
isVisible={isOnboardingOverlayVisible}
Expand Down
Loading