diff --git a/apps/web/src/components/chat/ComposerControl.tsx b/apps/web/src/components/chat/ComposerControl.tsx index 1d139fcd578ed..cea1e3e7dbbbc 100644 --- a/apps/web/src/components/chat/ComposerControl.tsx +++ b/apps/web/src/components/chat/ComposerControl.tsx @@ -24,10 +24,9 @@ function composerControlClassName( : "h-7 gap-1.5 px-2.5 font-medium text-secondary-label [&_svg:not([class*='text-'])]:text-muted-foreground hover:text-foreground sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4", "aria-pressed:surface-selected-soft aria-pressed:text-strong-foreground aria-pressed:hover:surface-ghost-hover", variant === "settings" - ? "surface-raised text-foreground hover:surface-raised-hover data-pressed:surface-raised-hover" + ? "surface-well text-foreground" : "hover:surface-ghost-hover data-pressed:surface-ghost-hover", - // Settings rows set it beside `SelectTrigger size="sm"`, so it takes the same heights. - variant === "settings" && size === "sm" && "h-8 sm:h-7", + variant === "settings" && "h-7 sm:h-7", className, ); } diff --git a/apps/web/src/components/settings/ProjectSettingsPanel.tsx b/apps/web/src/components/settings/ProjectSettingsPanel.tsx index a64fe8a3e747c..a57b9a37c3ff0 100644 --- a/apps/web/src/components/settings/ProjectSettingsPanel.tsx +++ b/apps/web/src/components/settings/ProjectSettingsPanel.tsx @@ -115,6 +115,7 @@ function CheckoutGroupingSelect({ member }: { member: SidebarProjectGroupMember }} > - + {(value: string) => value === ACTIVE_ACCOUNT ? ( diff --git a/apps/web/src/components/settings/TelemetryExportSettings.tsx b/apps/web/src/components/settings/TelemetryExportSettings.tsx index fa106ea89781c..a64af6d18136b 100644 --- a/apps/web/src/components/settings/TelemetryExportSettings.tsx +++ b/apps/web/src/components/settings/TelemetryExportSettings.tsx @@ -209,7 +209,7 @@ function TelemetryExportForm() {
} > - - {enabled} of {THREAD_DETAILS_ITEMS.length} on - - + {enabled} of {THREAD_DETAILS_ITEMS.length} on diff --git a/apps/web/src/components/sidebar/SidebarChrome.tsx b/apps/web/src/components/sidebar/SidebarChrome.tsx index 94e9ca2f919ff..5ec9b2fdb32a3 100644 --- a/apps/web/src/components/sidebar/SidebarChrome.tsx +++ b/apps/web/src/components/sidebar/SidebarChrome.tsx @@ -13,6 +13,7 @@ import { SidebarStageBackdrop, useEnvironmentStageLabel, } from "../SidebarStageBackdrop"; +import { TooltipProvider } from "../ui/tooltip"; import { Badge } from "../ui/badge"; import { T3Wordmark } from "../T3Wordmark"; import { @@ -168,41 +169,43 @@ const SidebarUtilityMenu = memo(function SidebarUtilityMenu() { }; return ( - - {isOnUtilityPage ? ( - - - - Back - - - ) : ( - // Keep the three utilities in the design's compact, icon-only row. - -
- } - label="Settings" - onClick={handleSettingsClick} - /> - {pullRequestsSupported ? ( + + + {isOnUtilityPage ? ( + + + + Back + + + ) : ( + // Keep the three utilities in the design's compact, icon-only row. + +
} - label="Pull Requests" - onClick={handlePullRequestsClick} + icon={} + label="Settings" + onClick={handleSettingsClick} /> - ) : null} - } - label="Usage" - onClick={handleUsageClick} - /> -
-
- )} - - -
+ {pullRequestsSupported ? ( + } + label="Pull Requests" + onClick={handlePullRequestsClick} + /> + ) : null} + } + label="Usage" + onClick={handleUsageClick} + /> +
+
+ )} + + +
+ ); }); diff --git a/apps/web/src/components/ui/button.tsx b/apps/web/src/components/ui/button.tsx index 1fa0de11f24cb..08550657a1394 100644 --- a/apps/web/src/components/ui/button.tsx +++ b/apps/web/src/components/ui/button.tsx @@ -122,6 +122,8 @@ const contentButtonVariants = cva("outline-none", { "action-row-destructive": "flex h-7.5 items-center gap-2 rounded-control px-2 text-start text-label text-destructive-foreground hover:surface-ghost-hover focus-visible:surface-ghost-hover disabled:pointer-events-none disabled:opacity-64", tab: "inline-flex h-7 min-w-0 max-w-80 cursor-pointer items-center gap-1.75 rounded-control px-2.5 text-left text-control text-muted-foreground [-webkit-app-region:no-drag] hover:surface-ghost-hover hover:text-foreground focus-visible:inset-ring-2 focus-visible:inset-ring-ring", + breadcrumb: + "inline-flex h-7 min-w-0 cursor-pointer items-center gap-1.75 rounded-control px-2.5 text-left text-control [&>:first-child]:shrink-0 text-muted-foreground [-webkit-app-region:no-drag] hover:surface-ghost-hover hover:text-foreground focus-visible:inset-ring-2 focus-visible:inset-ring-ring", "tab-close": "flex size-4 cursor-pointer items-center justify-center rounded-kbd text-foreground opacity-0 [-webkit-app-region:no-drag] group-hover/tab:opacity-100 focus-visible:opacity-100 focus-visible:inset-ring-2 focus-visible:inset-ring-ring", }, diff --git a/apps/web/src/components/ui/input.tsx b/apps/web/src/components/ui/input.tsx index 63318621fc500..2c76fb9d0197f 100644 --- a/apps/web/src/components/ui/input.tsx +++ b/apps/web/src/components/ui/input.tsx @@ -4,7 +4,7 @@ import type * as React from "react"; import { cn } from "~/lib/utils"; type InputProps = Omit, "size"> & { - size?: "sm" | "compact" | "default" | "lg" | number; + size?: "sm" | "compact" | "settings" | "default" | "lg" | number; font?: "default" | "mono"; placeholderTone?: "default" | "dim"; unstyled?: boolean; @@ -25,6 +25,8 @@ function Input({ placeholderTone === "dim" && "placeholder:text-dim-foreground", size === "compact" && "h-7 px-[calc(--spacing(2.5)-1px)] text-meta leading-7 sm:h-7 sm:leading-7", + size === "settings" && + "h-6.5 px-[calc(--spacing(2.5)-1px)] leading-6.5 sm:h-6.5 sm:leading-6.5", size === "sm" && "h-7.5 px-[calc(--spacing(2.5)-1px)] leading-7.5 sm:h-6.5 sm:leading-6.5", size === "lg" && "h-9.5 leading-9.5 sm:h-8.5 sm:leading-8.5", props.type === "search" && diff --git a/apps/web/src/components/ui/number-field.tsx b/apps/web/src/components/ui/number-field.tsx index d71a8f6729c49..55918d4127f87 100644 --- a/apps/web/src/components/ui/number-field.tsx +++ b/apps/web/src/components/ui/number-field.tsx @@ -12,7 +12,7 @@ export function NumberField({ size = "default", ...props }: NumberFieldPrimitive.Root.Props & { - size?: "sm" | "default"; + size?: "sm" | "compact" | "default"; }): React.ReactElement { const generatedId = React.useId(); const fieldId = id ?? generatedId; @@ -54,7 +54,7 @@ export function NumberFieldDecrement({ return ( & - Pick, "size"> & { leadingIcon?: React.ReactNode }) { + Pick, "size" | "variant"> & { + leadingIcon?: React.ReactNode; + }) { const defaultProps = { - className: cn(selectTriggerVariants({ size }), className), + className: cn(selectTriggerVariants({ size, variant }), className), "data-slot": "select-trigger", type: render ? undefined : ("button" as const), };