Skip to content

Commit 968d652

Browse files
Bill LeoutsakosBill Leoutsakos
authored andcommitted
improvement(ui): share workflow panel tab buttons
1 parent ea31ca7 commit 968d652

2 files changed

Lines changed: 37 additions & 24 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { type ComponentProps, forwardRef } from 'react'
2+
import { Button, cn } from '@sim/emcn'
3+
4+
interface PanelTabButtonProps
5+
extends Omit<ComponentProps<typeof Button>, 'variant' | 'size' | 'iconSize' | 'iconPadding'> {
6+
active: boolean
7+
}
8+
9+
/** The workflow panel's compact tab treatment, with caller-owned selection. */
10+
export const PanelTabButton = forwardRef<HTMLButtonElement, PanelTabButtonProps>(
11+
({ active, className, ...props }, ref) => (
12+
<Button
13+
{...props}
14+
ref={ref}
15+
variant={active ? 'active' : 'ghost'}
16+
className={cn(
17+
'h-[28px] rounded-md border py-[5px] text-[12.5px]',
18+
active
19+
? 'border-[var(--border-1)]'
20+
: 'border-transparent hover-hover:border-[var(--border-1)] hover-hover:bg-[var(--surface-5)]',
21+
className
22+
)}
23+
/>
24+
)
25+
)
26+
PanelTabButton.displayName = 'PanelTabButton'

‎apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/panel.tsx‎

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ import {
5757
Editor,
5858
Toolbar,
5959
} from '@/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components'
60+
import { PanelTabButton } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/panel-tab-button'
6061
import {
6162
usePanelResize,
6263
useUsageLimits,
@@ -853,43 +854,29 @@ export const Panel = memo(function Panel() {
853854
<div className='flex shrink-0 items-center justify-between px-2 pt-3.5'>
854855
<div className='flex gap-1'>
855856
{isCopilotTabAvailable && (
856-
<Button
857-
className={`h-[28px] truncate rounded-md border py-[5px] text-[12.5px] ${
858-
_hasHydrated && activeTab === 'copilot'
859-
? 'border-[var(--border-1)]'
860-
: 'border-transparent hover-hover:border-[var(--border-1)] hover-hover:bg-[var(--surface-5)]'
861-
}`}
862-
variant={_hasHydrated && activeTab === 'copilot' ? 'active' : 'ghost'}
857+
<PanelTabButton
858+
active={_hasHydrated && activeTab === 'copilot'}
859+
className='truncate'
863860
onClick={() => handleTabClick('copilot')}
864861
data-tab-button='copilot'
865862
>
866863
Chat
867-
</Button>
864+
</PanelTabButton>
868865
)}
869-
<Button
870-
className={`h-[28px] rounded-md border py-[5px] text-[12.5px] ${
871-
_hasHydrated && activeTab === 'toolbar'
872-
? 'border-[var(--border-1)]'
873-
: 'border-transparent hover-hover:border-[var(--border-1)] hover-hover:bg-[var(--surface-5)]'
874-
}`}
875-
variant={_hasHydrated && activeTab === 'toolbar' ? 'active' : 'ghost'}
866+
<PanelTabButton
867+
active={_hasHydrated && activeTab === 'toolbar'}
876868
onClick={() => handleTabClick('toolbar')}
877869
data-tab-button='toolbar'
878870
>
879871
Toolbar
880-
</Button>
881-
<Button
882-
className={`h-[28px] rounded-md border py-[5px] text-[12.5px] ${
883-
_hasHydrated && activeTab === 'editor'
884-
? 'border-[var(--border-1)]'
885-
: 'border-transparent hover-hover:border-[var(--border-1)] hover-hover:bg-[var(--surface-5)]'
886-
}`}
887-
variant={_hasHydrated && activeTab === 'editor' ? 'active' : 'ghost'}
872+
</PanelTabButton>
873+
<PanelTabButton
874+
active={_hasHydrated && activeTab === 'editor'}
888875
onClick={() => handleTabClick('editor')}
889876
data-tab-button='editor'
890877
>
891878
Editor
892-
</Button>
879+
</PanelTabButton>
893880
</div>
894881
</div>
895882

0 commit comments

Comments
 (0)