@@ -5,6 +5,7 @@ import { Select } from "@opencode-ai/ui/select"
55import { Switch } from "@opencode-ai/ui/switch"
66import { TextField } from "@opencode-ai/ui/text-field"
77import { Tooltip } from "@opencode-ai/ui/tooltip"
8+ import { Tag } from "@opencode-ai/ui/v2/badge-v2"
89import { useTheme , type ColorScheme } from "@opencode-ai/ui/theme/context"
910import { useDialog } from "@opencode-ai/ui/context/dialog"
1011import { useParams } from "@solidjs/router"
@@ -248,6 +249,50 @@ export const SettingsGeneral: Component = () => {
248249 triggerVariant : "settings" as const ,
249250 } )
250251
252+ const InterfaceSection = ( ) => (
253+ < div class = "flex flex-col gap-1" >
254+ < SettingsList >
255+ < SettingsRow
256+ title = {
257+ < span class = "flex items-center gap-2" >
258+ { language . t ( "settings.general.row.newInterface.title" ) }
259+ < Tag variant = "accent" > { language . t ( "settings.general.row.newInterface.badge" ) } </ Tag >
260+ </ span >
261+ }
262+ description = { language . t ( "settings.general.row.newInterface.description" ) }
263+ >
264+ < div data-action = "settings-new-layout-designs" >
265+ < Switch
266+ checked = { settings . general . newLayoutDesigns ( ) }
267+ onChange = { ( checked ) => {
268+ settings . general . setNewLayoutDesigns ( checked )
269+ if ( ! checked ) return
270+ void import ( "@/components/settings-v2" ) . then ( ( module ) => {
271+ void dialog . show ( ( ) => < module . DialogSettings /> )
272+ } )
273+ } }
274+ />
275+ </ div >
276+ </ SettingsRow >
277+ </ SettingsList >
278+ </ div >
279+ )
280+
281+ const InterfaceNoticeSection = ( ) => (
282+ < div class = "flex flex-col gap-1" >
283+ < SettingsList >
284+ < SettingsRow
285+ title = { language . t ( "settings.general.row.newInterfaceNotice.title" ) }
286+ description = { language . t ( "settings.general.row.newInterfaceNotice.description" ) }
287+ >
288+ < Button size = "small" variant = "ghost" onClick = { settings . general . dismissNewInterfaceNotice } >
289+ { language . t ( "settings.general.row.newInterfaceNotice.dismiss" ) }
290+ </ Button >
291+ </ SettingsRow >
292+ </ SettingsList >
293+ </ div >
294+ )
295+
251296 const GeneralSection = ( ) => (
252297 < div class = "flex flex-col gap-1" >
253298 < SettingsList >
@@ -335,23 +380,6 @@ export const SettingsGeneral: Component = () => {
335380 </ div >
336381 </ SettingsRow >
337382
338- < SettingsRow
339- title = { language . t ( "settings.general.row.newLayoutDesigns.title" ) }
340- description = { language . t ( "settings.general.row.newLayoutDesigns.description" ) }
341- >
342- < div data-action = "settings-new-layout-designs" >
343- < Switch
344- checked = { settings . general . newLayoutDesigns ( ) }
345- onChange = { ( checked ) => {
346- settings . general . setNewLayoutDesigns ( checked )
347- if ( ! checked ) return
348- void import ( "@/components/settings-v2" ) . then ( ( module ) => {
349- dialog . show ( ( ) => < module . DialogSettings /> )
350- } )
351- } }
352- />
353- </ div >
354- </ SettingsRow >
355383 </ SettingsList >
356384 </ div >
357385 )
@@ -718,6 +746,14 @@ export const SettingsGeneral: Component = () => {
718746 </ div >
719747
720748 < div class = "flex flex-col gap-8 w-full" >
749+ < Show when = { settings . general . layoutTransitionAvailable ( ) } >
750+ < InterfaceSection />
751+ </ Show >
752+
753+ < Show when = { settings . general . newInterfaceNoticeVisible ( ) } >
754+ < InterfaceNoticeSection />
755+ </ Show >
756+
721757 < GeneralSection />
722758
723759 < AppearanceSection />
0 commit comments