mirror of
https://github.com/stackblitz-labs/bolt.diy
synced 2025-05-06 21:24:40 +00:00
consolidate sync & export items into an overflow menu
This commit is contained in:
parent
53a674dc58
commit
ba9de84ac4
@ -24,6 +24,7 @@ import { EditorPanel } from './EditorPanel';
|
|||||||
import { Preview } from './Preview';
|
import { Preview } from './Preview';
|
||||||
import useViewport from '~/lib/hooks';
|
import useViewport from '~/lib/hooks';
|
||||||
import { PushToGitHubDialog } from '~/components/@settings/tabs/connections/components/PushToGitHubDialog';
|
import { PushToGitHubDialog } from '~/components/@settings/tabs/connections/components/PushToGitHubDialog';
|
||||||
|
import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
|
||||||
|
|
||||||
interface WorkspaceProps {
|
interface WorkspaceProps {
|
||||||
chatStarted?: boolean;
|
chatStarted?: boolean;
|
||||||
@ -372,24 +373,11 @@ export const Workbench = memo(
|
|||||||
>
|
>
|
||||||
<div className="absolute inset-0 px-2 lg:px-6">
|
<div className="absolute inset-0 px-2 lg:px-6">
|
||||||
<div className="h-full flex flex-col bg-bolt-elements-background-depth-2 border border-bolt-elements-borderColor shadow-sm rounded-lg overflow-hidden">
|
<div className="h-full flex flex-col bg-bolt-elements-background-depth-2 border border-bolt-elements-borderColor shadow-sm rounded-lg overflow-hidden">
|
||||||
<div className="flex items-center px-3 py-2 border-b border-bolt-elements-borderColor">
|
<div className="flex items-center px-3 py-2 border-b border-bolt-elements-borderColor gap-1">
|
||||||
<Slider selected={selectedView} options={sliderOptions} setSelected={setSelectedView} />
|
<Slider selected={selectedView} options={sliderOptions} setSelected={setSelectedView} />
|
||||||
<div className="ml-auto" />
|
<div className="ml-auto" />
|
||||||
{selectedView === 'code' && (
|
{selectedView === 'code' && (
|
||||||
<div className="flex overflow-y-auto">
|
<div className="flex overflow-y-auto">
|
||||||
<PanelHeaderButton
|
|
||||||
className="mr-1 text-sm"
|
|
||||||
onClick={() => {
|
|
||||||
workbenchStore.downloadZip();
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<div className="i-ph:code" />
|
|
||||||
Download Code
|
|
||||||
</PanelHeaderButton>
|
|
||||||
<PanelHeaderButton className="mr-1 text-sm" onClick={handleSyncFiles} disabled={isSyncing}>
|
|
||||||
{isSyncing ? <div className="i-ph:spinner" /> : <div className="i-ph:cloud-arrow-down" />}
|
|
||||||
{isSyncing ? 'Syncing...' : 'Sync Files'}
|
|
||||||
</PanelHeaderButton>
|
|
||||||
<PanelHeaderButton
|
<PanelHeaderButton
|
||||||
className="mr-1 text-sm"
|
className="mr-1 text-sm"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
@ -399,12 +387,66 @@ export const Workbench = memo(
|
|||||||
<div className="i-ph:terminal" />
|
<div className="i-ph:terminal" />
|
||||||
Toggle Terminal
|
Toggle Terminal
|
||||||
</PanelHeaderButton>
|
</PanelHeaderButton>
|
||||||
<PanelHeaderButton className="mr-1 text-sm" onClick={() => setIsPushDialogOpen(true)}>
|
<DropdownMenu.Root>
|
||||||
<div className="i-ph:git-branch" />
|
<DropdownMenu.Trigger className="bg-transparent">
|
||||||
Push to GitHub
|
<button className="text-sm flex items-center gap-1 text-bolt-elements-item-contentDefault bg-transparent enabled:hover:text-bolt-elements-item-contentActive rounded-md p-1 enabled:hover:bg-bolt-elements-item-backgroundActive disabled:cursor-not-allowed">
|
||||||
</PanelHeaderButton>
|
<div className="i-ph:box-arrow-up" />
|
||||||
|
Sync & Export
|
||||||
|
</button>
|
||||||
|
</DropdownMenu.Trigger>
|
||||||
|
<DropdownMenu.Content
|
||||||
|
className={classNames(
|
||||||
|
'min-w-[240px] z-[250]',
|
||||||
|
'bg-white dark:bg-[#141414]',
|
||||||
|
'rounded-lg shadow-lg',
|
||||||
|
'border border-gray-200/50 dark:border-gray-800/50',
|
||||||
|
'animate-in fade-in-0 zoom-in-95',
|
||||||
|
'py-1',
|
||||||
|
)}
|
||||||
|
sideOffset={5}
|
||||||
|
align="end"
|
||||||
|
>
|
||||||
|
<DropdownMenu.Item
|
||||||
|
className={classNames(
|
||||||
|
'cursor-pointer flex items-center w-full px-4 py-2 text-sm text-bolt-elements-textPrimary hover:bg-bolt-elements-item-backgroundActive gap-2 rounded-md group relative',
|
||||||
|
)}
|
||||||
|
onClick={() => {
|
||||||
|
workbenchStore.downloadZip();
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<div className="i-ph:download-simple"></div>
|
||||||
|
<span>Download Code</span>
|
||||||
|
</div>
|
||||||
|
</DropdownMenu.Item>
|
||||||
|
<DropdownMenu.Item
|
||||||
|
className={classNames(
|
||||||
|
'cursor-pointer flex items-center w-full px-4 py-2 text-sm text-bolt-elements-textPrimary hover:bg-bolt-elements-item-backgroundActive gap-2 rounded-md group relative',
|
||||||
|
)}
|
||||||
|
onClick={handleSyncFiles}
|
||||||
|
disabled={isSyncing}
|
||||||
|
>
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
{isSyncing ? <div className="i-ph:spinner" /> : <div className="i-ph:cloud-arrow-down" />}
|
||||||
|
<span>{isSyncing ? 'Syncing...' : 'Sync Files'}</span>
|
||||||
|
</div>
|
||||||
|
</DropdownMenu.Item>
|
||||||
|
<DropdownMenu.Item
|
||||||
|
className={classNames(
|
||||||
|
'cursor-pointer flex items-center w-full px-4 py-2 text-sm text-bolt-elements-textPrimary hover:bg-bolt-elements-item-backgroundActive gap-2 rounded-md group relative',
|
||||||
|
)}
|
||||||
|
onClick={() => setIsPushDialogOpen(true)}
|
||||||
|
>
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<div className="i-ph:git-branch" />
|
||||||
|
Push to GitHub
|
||||||
|
</div>
|
||||||
|
</DropdownMenu.Item>
|
||||||
|
</DropdownMenu.Content>
|
||||||
|
</DropdownMenu.Root>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{selectedView === 'diff' && (
|
{selectedView === 'diff' && (
|
||||||
<FileModifiedDropdown fileHistory={fileHistory} onSelectFile={handleSelectFile} />
|
<FileModifiedDropdown fileHistory={fileHistory} onSelectFile={handleSelectFile} />
|
||||||
)}
|
)}
|
||||||
|
Loading…
Reference in New Issue
Block a user