9ae61432ba
F1: shadcn-style primitive set in components/ui (Button, Card, Badge, Input, Switch, Separator, Skeleton, Tooltip, DropdownMenu, Dialog, Sheet, Tabs, Table, Toast+useToast, ThemeToggle, PageHeader/StatCard/EmptyState) on Radix + cva. F2: Layout rebuilt on the new system — sidebar with primary nav (lucide icons) + favorites/saved-searches/mailbox/smart-folder sections, sticky topbar with search, sync status, theme toggle, digest toggle, and an account dropdown. All prior behavior preserved (auth, sync, collapse/section persistence, "/" search focus). App wrapped in ToastProvider + TooltipProvider. Build green. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
36 lines
1.1 KiB
React
36 lines
1.1 KiB
React
import { forwardRef } from 'react';
|
|
import { cn } from '../../lib/utils.js';
|
|
|
|
const Input = forwardRef(function Input({ className, type = 'text', ...props }, ref) {
|
|
return (
|
|
<input
|
|
ref={ref}
|
|
type={type}
|
|
className={cn(
|
|
'flex h-9 w-full rounded-md border border-input bg-card px-3 py-1 text-sm shadow-sm transition-colors',
|
|
'placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-ring',
|
|
'disabled:cursor-not-allowed disabled:opacity-50',
|
|
className
|
|
)}
|
|
{...props}
|
|
/>
|
|
);
|
|
});
|
|
|
|
const Textarea = forwardRef(function Textarea({ className, ...props }, ref) {
|
|
return (
|
|
<textarea
|
|
ref={ref}
|
|
className={cn(
|
|
'flex min-h-[72px] w-full rounded-md border border-input bg-card px-3 py-2 text-sm shadow-sm transition-colors',
|
|
'placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-ring',
|
|
'disabled:cursor-not-allowed disabled:opacity-50',
|
|
className
|
|
)}
|
|
{...props}
|
|
/>
|
|
);
|
|
});
|
|
|
|
export { Input, Textarea };
|