authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-09-21 22:17:23-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-09-21 22:17:23-07:00
logc26119ada3565dda55bc3e86fdf47c7f9088e4b5
treed9343e445f0df60acaf24ae1e9a4831f0ab812e0
parent5a61f50cce12685f70d530aa5fdf83d9c9b065d7
signature Signed by PGP key B5690EEEBB952194

refactor(web): drop className overrides that repeat the base styles (#12984)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

19 files changed, 28 insertions(+), 28 deletions(-)

apps/web/src/components/AppSidebarLayout.tsx+1-1
......@@ -244,7 +244,7 @@ export function AppSidebarLayout({ children }: { children: ReactNode }) {
244244 side="left"
245245 collapsible="offcanvas"
246246 data-app-sidebar=""
247 className="border-r border-sidebar-border bg-sidebar text-sidebar-foreground"
247 className="border-r border-sidebar-border"
248248 resizable={{
249249 maxWidth: sidebarMaximumWidth,
250250 minWidth: THREAD_SIDEBAR_MIN_WIDTH,
apps/web/src/components/BranchToolbarBranchSelector.tsx+1-1
......@@ -861,7 +861,7 @@ export function BranchToolbarBranchSelector({
861861 <div className="flex min-h-0 flex-1 flex-col overflow-hidden">
862862 <ComboboxEmpty>No refs found.</ComboboxEmpty>
863863 <div className="relative min-h-0 w-full max-h-56 flex-1 overflow-hidden">
864 <ComboboxListVirtualized className="size-full min-w-0 p-0">
864 <ComboboxListVirtualized>
865865 <LegendList<string>
866866 ref={branchListRef}
867867 data={filteredBranchPickerItems}
apps/web/src/components/ConfirmDialogHost.tsx+1-1
......@@ -75,7 +75,7 @@ export function ConfirmDialogHost() {
7575 if (!open) completeConfirmDialogClose();
7676 }}
7777 >
78 <AlertDialogPopup className="max-w-lg">
78 <AlertDialogPopup>
7979 <AlertDialogHeader>
8080 <AlertDialogTitle className="wrap-anywhere">{copy.title}</AlertDialogTitle>
8181 {copy.description ? (
apps/web/src/components/NoActiveThreadState.tsx+3-3
......@@ -5,7 +5,7 @@ import { WorkspacePageHeader } from "./WorkspacePageHeader";
55
66export function NoActiveThreadState() {
77 return (
8 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground">
8 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none">
99 <div className="flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden bg-background">
1010 <WorkspacePageHeader electron={isElectron} className="border-b border-border">
1111 {isElectron ? (
......@@ -22,8 +22,8 @@ export function NoActiveThreadState() {
2222 <Empty className="flex-1">
2323 <div className="w-full max-w-lg px-8 py-12">
2424 <EmptyHeader className="max-w-none">
25 <EmptyTitle className="text-foreground text-xl">Pick a thread to continue</EmptyTitle>
26 <EmptyDescription className="mt-2 text-sm text-muted-foreground/78">
25 <EmptyTitle className="text-foreground">Pick a thread to continue</EmptyTitle>
26 <EmptyDescription className="mt-2 text-muted-foreground/78">
2727 Select an existing thread or create a new one to get started.
2828 </EmptyDescription>
2929 </EmptyHeader>
apps/web/src/components/NoProjectsHero.tsx+2-2
......@@ -10,7 +10,7 @@ export function NoProjectsHero() {
1010 const openAddProject = useCallback(() => openCommandPalette({ open: "add-project" }), []);
1111
1212 return (
13 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground">
13 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none">
1414 <div className="flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden bg-background">
1515 <Empty className="flex-1">
1616 <div className="w-full max-w-lg px-8 py-12">
......@@ -18,7 +18,7 @@ export function NoProjectsHero() {
1818 <EmptyTitle className="text-foreground text-2xl sm:text-3xl">
1919 What should we work on?
2020 </EmptyTitle>
21 <EmptyDescription className="mt-2 text-sm text-muted-foreground/78">
21 <EmptyDescription className="mt-2 text-muted-foreground/78">
2222 Add a project to start your first thread.
2323 </EmptyDescription>
2424 <div className="mt-6 flex justify-center">
apps/web/src/components/ProjectScriptsControl.tsx+1-1
......@@ -158,7 +158,7 @@ export default function ProjectScriptsControl({
158158 >
159159 <ScriptIcon icon={fileScript.icon ?? "play"} className="size-4" />
160160 <MenuItemLabel className="truncate">{fileScript.name}</MenuItemLabel>
161 <MenuShortcut className="ms-auto">
161 <MenuShortcut>
162162 <DownloadIcon className="size-3.5" aria-label="Import" />
163163 </MenuShortcut>
164164 </MenuItem>
apps/web/src/components/ThreadRouteView.tsx+1-1
......@@ -207,7 +207,7 @@ export function ThreadRouteView({ target }: { target: ThreadRouteTarget }) {
207207 }
208208
209209 return (
210 <SidebarInset className="h-svh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground md:h-dvh">
210 <SidebarInset className="h-svh min-h-0 overflow-hidden overscroll-y-none md:h-dvh">
211211 {view}
212212 </SidebarInset>
213213 );
apps/web/src/components/chat/ModelPickerContent.tsx+1-1
......@@ -956,7 +956,7 @@ export const ModelPickerContent = memo(function ModelPickerContent(props: {
956956
957957 {/* Model list */}
958958 <div className="relative min-h-0 flex-1 overflow-hidden pr-px">
959 <ComboboxListVirtualized className="size-full min-w-0 p-0 not-empty:p-0">
959 <ComboboxListVirtualized className="not-empty:p-0">
960960 <LegendList<string>
961961 ref={modelListRef}
962962 data={filteredItemKeys}
apps/web/src/components/settings/FontFamilyPicker.tsx+1-1
......@@ -219,7 +219,7 @@ export function FontFamilyPicker({
219219 <div className="flex min-h-0 flex-1 flex-col overflow-hidden">
220220 <ComboboxEmpty>No fonts found.</ComboboxEmpty>
221221 <div className="relative min-h-0 max-h-72 w-full flex-1 overflow-hidden">
222 <ComboboxListVirtualized className="size-full min-w-0 p-0">
222 <ComboboxListVirtualized>
223223 <LegendList<string>
224224 ref={listRef}
225225 data={items}
apps/web/src/components/settings/SettingsPanels.tsx+1-1
......@@ -845,7 +845,7 @@ function TokenStreamingWarningDialog({
845845}) {
846846 return (
847847 <AlertDialog open={open} onOpenChange={onOpenChange}>
848 <AlertDialogPopup className="max-w-lg">
848 <AlertDialogPopup>
849849 <AlertDialogHeader>
850850 <AlertDialogTitle>Token by token is a worse experience</AlertDialogTitle>
851851 <AlertDialogDescription>
apps/web/src/components/settings/SettingsSidebarNav.tsx+1-1
......@@ -344,7 +344,7 @@ export function SettingsSidebarNav({ pathname }: { pathname: string }) {
344344 )}
345345 </SidebarGroup>
346346 </SidebarContent>
347 <SidebarFooter className="px-[var(--sidebar-content-inset)] py-1">
347 <SidebarFooter>
348348 <Suspense fallback={null}>
349349 <T3ConnectSidebarSignIn />
350350 </Suspense>
apps/web/src/components/sidebar/SidebarChrome.tsx+1-1
......@@ -221,7 +221,7 @@ export const SidebarUtilityMenu = memo(function SidebarUtilityMenu() {
221221
222222export const SidebarChromeFooter = memo(function SidebarChromeFooter() {
223223 return (
224 <SidebarFooter className="px-[var(--sidebar-content-inset)] py-1">
224 <SidebarFooter>
225225 <SidebarThreadUndoNotice />
226226 <SidebarProviderUpdatePill />
227227 <SidebarUpdateArchitectureWarning />
apps/web/src/components/ui/combobox.tsx+1-1
......@@ -247,7 +247,7 @@ function ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {
247247function ComboboxListVirtualized({ className, ...props }: ComboboxPrimitive.List.Props) {
248248 return (
249249 <ComboboxPrimitive.List
250 className={cn("not-empty:px-1 not-empty:py-1", className)}
250 className={cn("size-full min-w-0 not-empty:px-1 not-empty:py-1", className)}
251251 data-slot="combobox-list"
252252 {...props}
253253 />
apps/web/src/components/ui/sidebar.tsx+1-1
......@@ -558,7 +558,7 @@ function SidebarHeader({ className, ...props }: React.ComponentProps<"div">) {
558558function SidebarFooter({ className, ...props }: React.ComponentProps<"div">) {
559559 return (
560560 <div
561 className={cn("flex flex-col gap-2 p-2", className)}
561 className={cn("flex flex-col gap-2 px-[var(--sidebar-content-inset)] py-1", className)}
562562 data-sidebar="footer"
563563 data-slot="sidebar-footer"
564564 {...props}
apps/web/src/components/usage/UsagePage.tsx+1-1
......@@ -366,7 +366,7 @@ export function UsagePage() {
366366 );
367367
368368 return (
369 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground isolate">
369 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none isolate">
370370 <div className="flex min-h-0 min-w-0 flex-1 flex-col bg-background text-foreground">
371371 <WorkspacePageHeader electron={isElectron} className="h-auto">
372372 {topbarContent}
apps/web/src/routes/_chat.index.tsx+7-7
......@@ -90,11 +90,11 @@ function IndexDraftLanding() {
9090
9191function DraftStartError({ onRetry }: { readonly onRetry: () => void }) {
9292 return (
93 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground">
93 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none">
9494 <Empty className="flex-1">
9595 <EmptyHeader className="max-w-md">
96 <EmptyTitle className="text-foreground text-xl">Couldn’t start a new thread</EmptyTitle>
97 <EmptyDescription className="mt-2 text-sm text-muted-foreground/78">
96 <EmptyTitle className="text-foreground">Couldn’t start a new thread</EmptyTitle>
97 <EmptyDescription className="mt-2 text-muted-foreground/78">
9898 The project is still available. Try opening the draft again.
9999 </EmptyDescription>
100100 <div className="mt-5 flex justify-center">
......@@ -123,7 +123,7 @@ function HostedStaticOnboardingState() {
123123 : "Open Connections and add that machine using its pairing link. This app must be able to reach it.";
124124
125125 return (
126 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground">
126 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none">
127127 <div className="flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden bg-background">
128128 <WorkspacePageHeader electron={isElectron} className="border-b border-border">
129129 <div className="flex items-center gap-2">
......@@ -139,14 +139,14 @@ function HostedStaticOnboardingState() {
139139 <div className="mx-auto mb-5 flex size-11 items-center justify-center rounded-xl border border-border/70 bg-background/70 text-muted-foreground">
140140 <LinkIcon className="size-5" />
141141 </div>
142 <EmptyTitle className="text-foreground text-xl">
142 <EmptyTitle className="text-foreground">
143143 Connect to a computer running T3 Code
144144 </EmptyTitle>
145 <EmptyDescription className="mt-2 text-sm leading-relaxed text-muted-foreground/78">
145 <EmptyDescription className="mt-2 leading-relaxed text-muted-foreground/78">
146146 This app connects to T3 Code running on your computer or a server. Start the T3 Code
147147 desktop app or command-line server on that machine and keep it running.
148148 </EmptyDescription>
149 <EmptyDescription className="mt-2 text-sm leading-relaxed text-muted-foreground/78">
149 <EmptyDescription className="mt-2 leading-relaxed text-muted-foreground/78">
150150 {description}
151151 </EmptyDescription>
152152 <div className="mt-6 flex justify-center">
apps/web/src/routes/_chat.pull-requests.tsx+1-1
......@@ -2068,7 +2068,7 @@ function PullRequestsRouteView() {
20682068 }, [keybindings]);
20692069
20702070 return (
2071 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground">
2071 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none">
20722072 <div className="relative flex min-h-0 flex-1">
20732073 {pullRequestsSupported && rightPanelPresent ? openPanelControls : null}
20742074 <PullRequestsColumn {...columnProps} />
apps/web/src/routes/settings.tsx+1-1
......@@ -153,7 +153,7 @@ function SettingsContentLayout() {
153153 }, [navigateBackWithinApp]);
154154
155155 return (
156 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground isolate">
156 <SidebarInset className="h-dvh min-h-0 overflow-hidden overscroll-y-none isolate">
157157 <div className="flex min-h-0 min-w-0 flex-1 flex-col bg-background text-foreground">
158158 <WorkspacePageHeader electron={isElectron}>
159159 <div className="flex w-full items-center gap-3">
scripts/lint-restyle-ceiling.ts+1-1
......@@ -8,7 +8,7 @@ import * as NodeURL from "node:url";
88// components/ui exports are migrated to variants (see vite.config.ts). This gate keeps the
99// count from growing: CI fails when findings exceed the ceiling. Lower the ceiling when you
1010// migrate a file, and delete this script when the rule becomes an error.
11export const RESTYLE_CEILING = 1247;
11export const RESTYLE_CEILING = 1214;
1212
1313const RULE = "shadcn(no-restyle)";
1414