refactor(nexus): drop soft shadows in app chrome (phase 4)

This commit is contained in:
Nexus Dev 2026-04-11 16:28:53 +00:00
parent d3141ac534
commit 547e526279
13 changed files with 16 additions and 16 deletions

View file

@ -200,7 +200,7 @@ export function ChatMessageList({
<Button <Button
variant="outline" variant="outline"
size="icon" size="icon"
className="h-8 w-8 rounded-full shadow-md" className="h-8 w-8 rounded-full"
onClick={jumpToBottom} onClick={jumpToBottom}
aria-label="Scroll to latest message" aria-label="Scroll to latest message"
> >

View file

@ -128,7 +128,7 @@ function SortableCompanyItem({
isSelected isSelected
? "rounded-[14px]" ? "rounded-[14px]"
: "rounded-[22px] group-hover:rounded-[14px]", : "rounded-[22px] group-hover:rounded-[14px]",
isDragging && "shadow-lg", isDragging && "ring-1 ring-primary/40",
)} )}
/> />
{hasLiveAgents && ( {hasLiveAgents && (

View file

@ -21,7 +21,7 @@ export function IconDownloadBar({ selectedCount, onDownload, onClear }: IconDown
if (selectedCount === 0) return null; if (selectedCount === 0) return null;
return ( return (
<div className="sticky bottom-0 z-10 flex items-center gap-3 rounded-t-md border border-border bg-card px-4 py-3 shadow-lg"> <div className="sticky bottom-0 z-10 flex items-center gap-3 rounded-t-md border border-border bg-card px-4 py-3">
<Button <Button
type="button" type="button"
onClick={() => onDownload(format)} onClick={() => onDownload(format)}

View file

@ -136,9 +136,9 @@ function KanbanCard({
style={style} style={style}
{...attributes} {...attributes}
{...listeners} {...listeners}
className={`rounded-md border bg-card p-2.5 cursor-grab active:cursor-grabbing transition-shadow ${ className={`rounded-md border bg-card p-2.5 cursor-grab active:cursor-grabbing ${
isDragging && !isOverlay ? "opacity-30" : "" isDragging && !isOverlay ? "opacity-30" : ""
} ${isOverlay ? "shadow-lg ring-1 ring-primary/20" : "hover:shadow-sm"}`} } ${isOverlay ? "ring-1 ring-primary/40" : ""}`}
> >
<Link <Link
to={`/issues/${issue.identifier ?? issue.id}`} to={`/issues/${issue.identifier ?? issue.id}`}

View file

@ -176,7 +176,7 @@ export function Layout() {
> >
<a <a
href="#main-content" href="#main-content"
className="sr-only focus:not-sr-only focus:fixed focus:left-3 focus:top-3 focus:z-[200] focus:rounded-md focus:bg-background focus:px-3 focus:py-2 focus:text-sm focus:font-medium focus:shadow-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-ring" className="sr-only focus:not-sr-only focus:fixed focus:left-3 focus:top-3 focus:z-[200] focus:rounded-md focus:bg-background focus:px-3 focus:py-2 focus:text-sm focus:font-medium focus:outline-none focus-visible:ring-2 focus-visible:ring-ring"
> >
Skip to Main Content Skip to Main Content
</a> </a>

View file

@ -641,7 +641,7 @@ export const MarkdownEditor = forwardRef<MarkdownEditorRef, MarkdownEditorProps>
{mentionActive && filteredMentions.length > 0 && {mentionActive && filteredMentions.length > 0 &&
createPortal( createPortal(
<div <div
className="fixed z-[9999] min-w-[180px] max-w-[calc(100vw-16px)] max-h-[200px] overflow-y-auto rounded-md border border-border bg-popover shadow-md" className="fixed z-[9999] min-w-[180px] max-w-[calc(100vw-16px)] max-h-[200px] overflow-y-auto rounded-md border border-border bg-popover"
style={{ style={{
top: Math.min(mentionState.viewportTop + 4, window.innerHeight - 208), top: Math.min(mentionState.viewportTop + 4, window.innerHeight - 208),
left: Math.max(8, Math.min(mentionState.viewportLeft, window.innerWidth - 188)), left: Math.max(8, Math.min(mentionState.viewportLeft, window.innerWidth - 188)),

View file

@ -46,7 +46,7 @@ export function NotificationPermissionPrompt({ agentResponseCount }: Notificatio
}; };
return ( return (
<div className="fixed bottom-20 left-4 right-4 md:bottom-auto md:top-16 md:left-auto md:right-4 md:max-w-sm z-50 bg-card border border-border rounded-lg shadow-lg p-4"> <div className="fixed bottom-20 left-4 right-4 md:bottom-auto md:top-16 md:left-auto md:right-4 md:max-w-sm z-50 bg-card border border-border rounded-lg p-4">
<p className="text-sm font-semibold">Stay in the loop</p> <p className="text-sm font-semibold">Stay in the loop</p>
<p className="text-xs text-muted-foreground mt-1"> <p className="text-xs text-muted-foreground mt-1">
Get notified when your agents complete tasks or need input. Get notified when your agents complete tasks or need input.

View file

@ -70,7 +70,7 @@ export function ScrollToBottom() {
return ( return (
<button <button
onClick={scroll} onClick={scroll}
className="fixed bottom-[calc(1.5rem+5rem+env(safe-area-inset-bottom))] right-6 z-40 flex h-9 w-9 items-center justify-center rounded-full border border-border bg-background shadow-md hover:bg-accent transition-colors md:bottom-6" className="fixed bottom-[calc(1.5rem+5rem+env(safe-area-inset-bottom))] right-6 z-40 flex h-9 w-9 items-center justify-center rounded-full border border-border bg-background hover:bg-accent transition-colors md:bottom-6"
aria-label="Scroll to bottom" aria-label="Scroll to bottom"
> >
<ArrowDown className="h-4 w-4" /> <ArrowDown className="h-4 w-4" />

View file

@ -35,7 +35,7 @@ function AnimatedToast({
return ( return (
<li <li
className={cn( className={cn(
"pointer-events-auto rounded-sm border shadow-lg backdrop-blur-xl transition-[transform,opacity] duration-200 ease-out", "pointer-events-auto rounded-sm border backdrop-blur-xl transition-[transform,opacity] duration-200 ease-out",
visible visible
? "translate-y-0 opacity-100" ? "translate-y-0 opacity-100"
: "translate-y-3 opacity-0", : "translate-y-3 opacity-0",

View file

@ -39,7 +39,7 @@ export function ApiKeyEntryForm({ onSave, onError }: ApiKeyEntryFormProps) {
value={provider} value={provider}
onChange={(e) => setProvider(e.target.value)} onChange={(e) => setProvider(e.target.value)}
disabled={saved} disabled={saved}
className="flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50" className="flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm transition-colors focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50"
> >
{PROVIDERS.map((p) => ( {PROVIDERS.map((p) => (
<option key={p.value} value={p.value}> <option key={p.value} value={p.value}>

View file

@ -796,7 +796,7 @@ function TranscriptCommandGroup({
<span <span
key={index} key={index}
className={cn( className={cn(
"inline-flex h-6 w-6 items-center justify-center rounded-full border shadow-sm", "inline-flex h-6 w-6 items-center justify-center rounded-full border",
index > 0 && "-ml-1.5", index > 0 && "-ml-1.5",
isRunning isRunning
? "border-primary/25 bg-primary/[0.08] text-primary" ? "border-primary/25 bg-primary/[0.08] text-primary"
@ -919,7 +919,7 @@ function TranscriptToolGroup({
<span <span
key={`${item.ts}-${index}`} key={`${item.ts}-${index}`}
className={cn( className={cn(
"inline-flex h-6 w-6 items-center justify-center rounded-full border shadow-sm", "inline-flex h-6 w-6 items-center justify-center rounded-full border",
index > 0 && "-ml-1.5", index > 0 && "-ml-1.5",
isItemRunning isItemRunning
? "border-primary/25 bg-primary/[0.08] text-primary" ? "border-primary/25 bg-primary/[0.08] text-primary"

View file

@ -939,7 +939,7 @@ export function AgentDetail() {
: "opacity-0 pointer-events-none" : "opacity-0 pointer-events-none"
)} )}
> >
<div className="flex items-center gap-2 bg-background/90 backdrop-blur-sm border border-border rounded-lg px-3 py-1.5 shadow-lg"> <div className="flex items-center gap-2 bg-background/90 backdrop-blur-sm border border-border rounded-lg px-3 py-1.5">
<Button <Button
variant="ghost" variant="ghost"
size="sm" size="sm"
@ -3810,7 +3810,7 @@ function LogViewer({ run, adapterType }: { run: HeartbeatRun; adapterType: strin
className={cn( className={cn(
"rounded-md px-2.5 py-1 text-[11px] font-medium capitalize transition-colors", "rounded-md px-2.5 py-1 text-[11px] font-medium capitalize transition-colors",
transcriptMode === mode transcriptMode === mode
? "bg-accent text-foreground shadow-sm" ? "bg-accent text-foreground shadow-[inset_0_4px_25px_rgba(0,0,0,0.14)]"
: "text-muted-foreground hover:text-foreground", : "text-muted-foreground hover:text-foreground",
)} )}
onClick={() => setTranscriptMode(mode)} onClick={() => setTranscriptMode(mode)}

View file

@ -137,7 +137,7 @@ function ColorPicker({
aria-label="Change project color" aria-label="Change project color"
/> />
{open && ( {open && (
<div className="absolute top-full left-0 mt-2 p-2 bg-popover border border-border rounded-lg shadow-lg z-50 w-max"> <div className="absolute top-full left-0 mt-2 p-2 bg-popover border border-border rounded-lg z-50 w-max">
<div className="grid grid-cols-5 gap-1.5"> <div className="grid grid-cols-5 gap-1.5">
{PROJECT_COLORS.map((color) => ( {PROJECT_COLORS.map((color) => (
<button <button