Skip to content

Commit bdb2fc2

Browse files
committed
Refactor the VS Code panel layout by moving view components inside the Layout component and remove the unused Reddit icon
1 parent 9805b77 commit bdb2fc2

7 files changed

Lines changed: 168 additions & 138 deletions

File tree

‎packages/ui/src/components/editor/common/Icon/Icon.tsx‎

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import OpenRouter from '../../../../assets/icons/openrouter.svg'
2424
import OpenWebUI from '../../../../assets/icons/open-webui.svg'
2525
import Perplexity from '../../../../assets/icons/perplexity.svg'
2626
import Qwen from '../../../../assets/icons/qwen.svg'
27-
import Reddit from '../../../../assets/icons/reddit.svg'
2827
import Together from '../../../../assets/icons/together.svg'
2928
import X from '../../../../assets/icons/x.svg'
3029
import Yuanbao from '../../../../assets/icons/yuanbao.svg'
@@ -58,7 +57,6 @@ export namespace Icon {
5857
| 'OPEN_WEBUI'
5958
| 'PERPLEXITY'
6059
| 'QWEN'
61-
| 'REDDIT'
6260
| 'TOGETHER'
6361
| 'X'
6462
| 'YUANBAO'
@@ -151,9 +149,6 @@ export const Icon: React.FC<Icon.Props> = ({ variant }) => {
151149
case 'QWEN':
152150
icon = <Qwen />
153151
break
154-
case 'REDDIT':
155-
icon = <Reddit />
156-
break
157152
case 'TOGETHER':
158153
icon = <Together />
159154
break

‎packages/vscode/src/views/panel/frontend/Home/Home.tsx‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import { use_latest_donations } from './hooks/latest-donations-hook'
77
import cn from 'classnames'
88
import { post_message } from '../utils/post_message'
99
import { FrontendMessage } from '@/views/panel/types/messages'
10-
import { Layout } from '../components/Layout/Layout'
1110

1211
type Props = {
1312
vscode: any
@@ -37,7 +36,7 @@ export const Home: React.FC<Props> = (props) => {
3736
}
3837

3938
return (
40-
<Layout>
39+
<>
4140
<div className={styles['header']}>
4241
<div className={styles['header__left']}>
4342
<div className={styles['header__home']}>
@@ -121,6 +120,6 @@ export const Home: React.FC<Props> = (props) => {
121120
</div>
122121
</div>
123122
</Scrollable>
124-
</Layout>
123+
</>
125124
)
126125
}

‎packages/vscode/src/views/panel/frontend/Main/MainView/MainView.tsx‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import { WEB_MODES, API_MODES } from './modes'
2323
import { Header } from './components/Header'
2424
import cn from 'classnames'
2525
import { FileInPreview } from '@shared/types/file-in-preview'
26-
import { Layout } from '../../components/Layout/Layout'
2726

2827
dayjs.extend(relativeTime)
2928

@@ -175,7 +174,7 @@ export const MainView: React.FC<Props> = (props) => {
175174
}`
176175

177176
return (
178-
<Layout>
177+
<>
179178
<Header
180179
home_view_type={props.home_view_type}
181180
on_home_view_type_change={props.on_home_view_type_change}
@@ -345,6 +344,6 @@ export const MainView: React.FC<Props> = (props) => {
345344
)}
346345
</div>
347346
</Scrollable>
348-
</Layout>
347+
</>
349348
)
350349
}

‎packages/vscode/src/views/panel/frontend/Panel.module.scss‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@
77
z-index: 1;
88
height: 100vh;
99
width: 100%;
10+
}
11+
12+
.content {
13+
overflow: hidden;
14+
display: flex;
15+
flex-direction: column;
1016

1117
&--hidden {
1218
display: none;

‎packages/vscode/src/views/panel/frontend/Panel.tsx‎

Lines changed: 80 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { CommitMessageModal as UiCommitMessageModal } from '@ui/components/edito
1414
import { StageFilesModal as UiStageFilesModal } from '@ui/components/editor/panel/modals/StageFilesModal'
1515
import { use_panel } from './hooks/use-panel'
1616
import { LayoutContext } from './contexts/LayoutContext'
17+
import { Layout } from './components/Layout/Layout'
1718

1819
const vscode = acquireVsCodeApi()
1920

@@ -162,75 +163,85 @@ export const Panel = () => {
162163
return (
163164
<LayoutContext.Provider value={layout_context_value}>
164165
<div className={styles.container}>
165-
<div
166-
className={cn(styles.slot, {
167-
[styles['slot--hidden']]: active_view != 'main'
168-
})}
169-
>
170-
<Main
171-
scroll_reset_key={main_view_scroll_reset_key}
172-
vscode={vscode}
173-
on_preset_edit={(preset) => {
174-
post_message(vscode, {
175-
command: 'UPDATE_LAST_USED_PRESET',
176-
preset_name: preset.name
177-
})
178-
set_updating_preset(preset)
179-
set_updated_preset(preset)
180-
}}
181-
is_connected={is_connected}
182-
on_show_home={() => {
183-
set_active_view('home')
184-
}}
185-
ask_instructions={ask_instructions}
186-
edit_instructions={edit_instructions}
187-
no_context_instructions={no_context_instructions}
188-
code_completions_instructions={code_completions_instructions}
189-
set_instructions={handle_instructions_change}
190-
home_view_type={home_view_type}
191-
web_mode={web_mode}
192-
api_mode={api_mode}
193-
on_home_view_type_change={handle_home_view_type_change}
194-
has_active_editor={has_active_editor}
195-
has_active_selection={has_active_selection}
196-
on_web_mode_change={handle_web_mode_change}
197-
on_api_mode_change={handle_api_mode_change}
198-
response_history={response_history}
199-
selected_history_item_created_at={selected_history_item_created_at}
200-
on_selected_history_item_change={
201-
set_selected_history_item_created_at
202-
}
203-
chat_input_focus_and_select_key={chat_input_focus_and_select_key}
204-
chat_input_focus_key={chat_input_focus_key}
205-
context_size_warning_threshold={context_size_warning_threshold}
206-
/>
207-
</div>
208-
<div
209-
className={cn(styles.slot, {
210-
[styles['slot--hidden']]: active_view != 'home'
211-
})}
212-
>
213-
<Home
214-
vscode={vscode}
215-
is_active={active_view == 'home'}
216-
on_new_chat={() => {
217-
set_active_view('main')
218-
set_main_view_scroll_reset_key((k) => k + 1)
219-
handle_home_view_type_change(HOME_VIEW_TYPES.WEB)
220-
handle_web_mode_change('edit-context')
221-
set_chat_input_focus_and_select_key((k) => k + 1)
222-
}}
223-
on_api_call={() => {
224-
set_active_view('main')
225-
set_main_view_scroll_reset_key((k) => k + 1)
226-
handle_home_view_type_change(HOME_VIEW_TYPES.API)
227-
handle_api_mode_change('edit-context')
228-
set_chat_input_focus_and_select_key((k) => k + 1)
229-
}}
230-
are_donations_visible={are_donations_visible}
231-
on_toggle_donations_visibility={handle_donations_visibility_change}
232-
version={version}
233-
/>
166+
<div className={styles.slot}>
167+
<Layout>
168+
<div
169+
className={cn(styles.content, {
170+
[styles['content--hidden']]: active_view != 'main'
171+
})}
172+
>
173+
<Main
174+
scroll_reset_key={main_view_scroll_reset_key}
175+
vscode={vscode}
176+
on_preset_edit={(preset) => {
177+
post_message(vscode, {
178+
command: 'UPDATE_LAST_USED_PRESET',
179+
preset_name: preset.name
180+
})
181+
set_updating_preset(preset)
182+
set_updated_preset(preset)
183+
}}
184+
is_connected={is_connected}
185+
on_show_home={() => {
186+
set_active_view('home')
187+
}}
188+
ask_instructions={ask_instructions}
189+
edit_instructions={edit_instructions}
190+
no_context_instructions={no_context_instructions}
191+
code_completions_instructions={code_completions_instructions}
192+
set_instructions={handle_instructions_change}
193+
home_view_type={home_view_type}
194+
web_mode={web_mode}
195+
api_mode={api_mode}
196+
on_home_view_type_change={handle_home_view_type_change}
197+
has_active_editor={has_active_editor}
198+
has_active_selection={has_active_selection}
199+
on_web_mode_change={handle_web_mode_change}
200+
on_api_mode_change={handle_api_mode_change}
201+
response_history={response_history}
202+
selected_history_item_created_at={
203+
selected_history_item_created_at
204+
}
205+
on_selected_history_item_change={
206+
set_selected_history_item_created_at
207+
}
208+
chat_input_focus_and_select_key={
209+
chat_input_focus_and_select_key
210+
}
211+
chat_input_focus_key={chat_input_focus_key}
212+
context_size_warning_threshold={context_size_warning_threshold}
213+
/>
214+
</div>
215+
<div
216+
className={cn(styles.content, {
217+
[styles['content--hidden']]: active_view != 'home'
218+
})}
219+
>
220+
<Home
221+
vscode={vscode}
222+
is_active={active_view == 'home'}
223+
on_new_chat={() => {
224+
set_active_view('main')
225+
set_main_view_scroll_reset_key((k) => k + 1)
226+
handle_home_view_type_change(HOME_VIEW_TYPES.WEB)
227+
handle_web_mode_change('edit-context')
228+
set_chat_input_focus_and_select_key((k) => k + 1)
229+
}}
230+
on_api_call={() => {
231+
set_active_view('main')
232+
set_main_view_scroll_reset_key((k) => k + 1)
233+
handle_home_view_type_change(HOME_VIEW_TYPES.API)
234+
handle_api_mode_change('edit-context')
235+
set_chat_input_focus_and_select_key((k) => k + 1)
236+
}}
237+
are_donations_visible={are_donations_visible}
238+
on_toggle_donations_visibility={
239+
handle_donations_visibility_change
240+
}
241+
version={version}
242+
/>
243+
</div>
244+
</Layout>
234245
</div>
235246

236247
{updating_preset && (

‎packages/vscode/src/views/panel/frontend/components/Footer/Footer.module.scss‎

Lines changed: 45 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -7,57 +7,64 @@
77
padding: var(--padding-8px) var(--padding-12px);
88
border-top: 1px solid var(--vscode-sideBarSectionHeader-border);
99

10-
&__right {
11-
display: flex;
12-
gap: var(--padding-4px);
13-
}
14-
15-
&__button {
10+
&__left {
1611
display: flex;
17-
align-items: center;
18-
flex-shrink: 0;
1912
gap: var(--padding-4px);
20-
height: 24px;
21-
padding: 0 var(--padding-5px);
22-
border-radius: var(--border-radius-4px);
23-
color: var(--vscode-foreground);
2413

25-
&:disabled {
26-
opacity: var(--disabled-opacity);
27-
}
14+
&__button {
15+
display: flex;
16+
align-items: center;
17+
justify-content: center;
18+
height: 24px;
19+
width: 24px;
20+
border-radius: var(--border-radius-4px);
2821

29-
> svg {
30-
flex-shrink: 0;
31-
fill: var(--vscode-icon-foreground);
32-
width: 16px;
33-
height: 16px;
34-
}
22+
> svg {
23+
flex-shrink: 0;
24+
width: 16px;
25+
height: 16px;
26+
}
3527

36-
&--buy-me-a-coffee {
37-
background-color: #f7d600;
38-
transition: transform var(--transition-duration-150)
39-
var(--transition-timing-function);
28+
&--buy-me-a-coffee {
29+
background-color: #f7d600;
4030

41-
&:hover {
42-
transform: scale(0.95);
31+
> svg {
32+
fill: black;
33+
}
4334
}
4435

45-
> svg {
46-
fill: black;
36+
&--discord {
37+
background-color: #7289da;
38+
39+
> svg {
40+
fill: white;
41+
}
4742
}
4843
}
44+
}
45+
46+
&__right {
47+
display: flex;
48+
gap: var(--padding-4px);
4949

50-
&--filled {
51-
background-color: var(--vscode-list-hoverBackground);
52-
&:hover {
53-
background-color: var(--vscode-toolbar-hoverBackground);
50+
&__button {
51+
display: flex;
52+
align-items: center;
53+
flex-shrink: 0;
54+
gap: var(--padding-4px);
55+
height: 24px;
56+
padding: 0 var(--padding-5px);
57+
border-radius: var(--border-radius-4px);
58+
59+
&:disabled {
60+
opacity: var(--disabled-opacity);
5461
}
55-
}
5662

57-
&--outlined {
58-
border: 1px solid var(--vscode-commandCenter-inactiveBorder);
59-
&:hover:not(:disabled) {
60-
border-color: var(--vscode-commandCenter-activeBorder);
63+
&--outlined {
64+
border: 1px solid var(--vscode-commandCenter-inactiveBorder);
65+
&:hover:not(:disabled) {
66+
border-color: var(--vscode-commandCenter-activeBorder);
67+
}
6168
}
6269
}
6370
}

0 commit comments

Comments
 (0)