Skip to content

Commit 5b304d6

Browse files
committed
app screenshots
1 parent 7a52981 commit 5b304d6

File tree

6 files changed

+175
-0
lines changed

6 files changed

+175
-0
lines changed

src/components/DemoPage.jsx

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,27 @@ import { DynamicDataProvider } from '../context/DynamicDataContext';
88
import { FaFileAlt, FaGithub, FaArrowDown, FaArrowUp } from 'react-icons/fa'; // Added arrow icons
99
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
1010
import { atomDark } from 'react-syntax-highlighter/dist/esm/styles/prism';
11+
import { FaChevronLeft, FaChevronRight } from 'react-icons/fa';
12+
import demoChat from './pics/demo_chat.png';
13+
import demoMemory from './pics/demo_memory.png';
14+
import demoPopup from './pics/demo_popup.png';
15+
import demoSuggestions from './pics/demo_suggestions.png';
16+
17+
1118

1219
const DemoPage = () => {
1320
const [selectedHour, setSelectedHour] = useState(1); // Default to 1 PM
1421
const [abstractExpanded, setAbstractExpanded] = useState(false); // State for abstract toggle
1522
const [activeChats, setActiveChats] = useState([]);
1623
const navigate = useNavigate();
24+
const screenshots = [
25+
{ src: demoSuggestions, caption: 'The GUMBO App is a working desktop app, displaying suggestions to users live as they use their computer.' },
26+
{ src: demoMemory, caption: 'The Memory page allows users to view the raw propositions in their GUM, and edit, delete, or add propositions.' },
27+
{ src: demoPopup, caption: 'GUMBO suggestions can be accessed easily from anywhere through a popup that can be opened at the bottom left of the screen' },
28+
{ src: demoChat, caption: 'Hitting "Start Chat" on a suggestion gives the user more detail into the suggestion and a view of what GUMBO has already completed for the user. Users can continue the conversation with GUMBO in the chat.' },
29+
];
30+
const [shotIdx, setShotIdx] = useState(0);
31+
1732

1833
// Ensure we match the key type in dynamicData (keys as strings)
1934
const currentData = dynamicData[selectedHour.toString()] || { carousel: [], suggestions: [], activity: "" };
@@ -364,6 +379,76 @@ if __name__ == "__main__":
364379
We then deploy GUMBO with N=5 participants for 5 days, with the system observing the participants' screens. This longitudinal evaluation replicated our results with the underlying GUM. Additionally, participants identified a meaningful number of useful and well-executed suggestions completed by GUMBO. Two of the five participants found particularly high value in the system and asked to continue running it on their computer after the study concluded. Our evaluations also highlight limitations and boundary conditions of GUM and GUMBO, including privacy considerations and overly candid propositions. Please read our <a href="https://arxiv.org" target="_blank" rel="noopener noreferrer" style={{ color: '#ff9d9d' }}>paper</a> for more details!
365380

366381
</p>
382+
383+
{/* ───────────── GUMBO Desktop App screenshots ───────────── */}
384+
<h3
385+
style={{
386+
color: 'var(--color-main-text)',
387+
margin: '20px 0 15px 0',
388+
fontSize: '1.5em',
389+
fontWeight: 600,
390+
}}
391+
>
392+
The GUMBO Desktop App
393+
</h3>
394+
<p
395+
style={{
396+
lineHeight: 1.6,
397+
margin: '0 0 20px 0',
398+
fontSize: '15px',
399+
}}
400+
>
401+
We built a fully-functional macOS GUMBO client. Below are a couple of
402+
screenshots that showcase the interface and key features.
403+
</p>
404+
405+
{/* screenshot carousel */}
406+
<section>
407+
<h2>The GUMBO Desktop App</h2>
408+
<p>
409+
We built a working complete GUMBO Mac desktop app; below are screenshots.
410+
</p>
411+
412+
<div className="app-screenshot-container">
413+
<button
414+
aria-label="Previous screenshot"
415+
onClick={() =>
416+
setShotIdx(i => (i - 1 + screenshots.length) % screenshots.length)
417+
}
418+
className="app-screenshot-arrow app-screenshot-arrow--left"
419+
>
420+
<FaChevronLeft />
421+
</button>
422+
423+
<img
424+
src={screenshots[shotIdx].src}
425+
alt={`GUMBO screenshot ${shotIdx + 1}`}
426+
className="app-screenshot-image"
427+
/>
428+
429+
<button
430+
aria-label="Next screenshot"
431+
onClick={() =>
432+
setShotIdx(i => (i + 1) % screenshots.length)
433+
}
434+
className="app-screenshot-arrow app-screenshot-arrow--right"
435+
>
436+
<FaChevronRight />
437+
</button>
438+
</div>
439+
</section>
440+
{/* caption */}
441+
<p
442+
style={{
443+
textAlign: 'center',
444+
marginTop: '12px',
445+
fontSize: '14px',
446+
color: 'var(--color-secondary-text)',
447+
}}
448+
>
449+
{screenshots[shotIdx].caption}
450+
</p>
451+
367452

368453
<h3 style={{
369454
color: 'var(--color-main-text)',

src/components/pics/demo_chat.png

782 KB
Loading

src/components/pics/demo_memory.png

156 KB
Loading

src/components/pics/demo_popup.png

766 KB
Loading
179 KB
Loading

src/index.css

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,3 +407,93 @@ body,
407407
padding-top: 0;
408408
}
409409
}
410+
411+
.app-screenshot-container {
412+
position: relative;
413+
width: 100%;
414+
max-width: 1000px;
415+
margin: 0 auto;
416+
display: flex;
417+
justify-content: center;
418+
}
419+
420+
@media (max-width: 1400px) {
421+
.app-screenshot-container {
422+
max-width: 800px;
423+
}
424+
}
425+
426+
@media (max-width: 1000px) {
427+
.app-screenshot-container {
428+
max-width: 600px;
429+
}
430+
}
431+
432+
@media (max-width: 800px) {
433+
.app-screenshot-container {
434+
max-width: 400px;
435+
}
436+
}
437+
438+
@media (max-width: 600px) {
439+
.app-screenshot-container {
440+
max-width: 300px;
441+
}
442+
}
443+
444+
@media (max-width: 500px) {
445+
.app-screenshot-container {
446+
max-width: 240px;
447+
}
448+
}
449+
450+
.app-screenshot-arrow {
451+
position: absolute;
452+
top: 50%;
453+
transform: translateY(-50%);
454+
background: none;
455+
border: none;
456+
cursor: pointer;
457+
font-size: 2.5rem;
458+
color: var(--color-main-text);
459+
}
460+
461+
462+
463+
.app-screenshot-arrow--left {
464+
left: -70px;
465+
}
466+
467+
.app-screenshot-arrow--right {
468+
right: -70px;
469+
}
470+
471+
@media (max-width: 1400px) {
472+
.app-screenshot-arrow--left {
473+
left: -60px;
474+
}
475+
476+
.app-screenshot-arrow--right {
477+
right: -60px;
478+
}
479+
}
480+
481+
@media (max-width: 800px) {
482+
.app-screenshot-arrow {
483+
font-size: 1.75rem;
484+
}
485+
486+
.app-screenshot-arrow--left {
487+
left: -50px;
488+
}
489+
490+
.app-screenshot-arrow--right {
491+
right: -50px;
492+
}
493+
}
494+
495+
.app-screenshot-image {
496+
width: 100%;
497+
border-radius: 6px;
498+
box-shadow: 0 2px 8px rgba(0,0,0,0.3);
499+
}

0 commit comments

Comments
 (0)