From cd632f295d896100207e1b02bfeb574175c07633 Mon Sep 17 00:00:00 2001
From: Mohamed Bassem <me@mbassem.com>
Date: Sun, 20 Apr 2025 23:49:24 +0000
Subject: ui(web): Reduce shadows, lighten some fonts, and a smaller editor.
 #1261

---
 apps/web/components/ui/input.tsx | 42 ++++++++++++++++++++++++++++++----------
 1 file changed, 32 insertions(+), 10 deletions(-)

(limited to 'apps/web/components/ui/input.tsx')

diff --git a/apps/web/components/ui/input.tsx b/apps/web/components/ui/input.tsx
index 5543446c..09f9def9 100644
--- a/apps/web/components/ui/input.tsx
+++ b/apps/web/components/ui/input.tsx
@@ -1,20 +1,42 @@
 import * as React from "react";
 import { cn } from "@/lib/utils";
+import { LucideIcon } from "lucide-react";
 
-export type InputProps = React.InputHTMLAttributes<HTMLInputElement>;
+export interface InputProps
+  extends React.InputHTMLAttributes<HTMLInputElement> {
+  startIcon?: LucideIcon;
+  endIcon?: LucideIcon;
+}
 
 const Input = React.forwardRef<HTMLInputElement, InputProps>(
-  ({ className, type, ...props }, ref) => {
+  ({ className, type, startIcon, endIcon, ...props }, ref) => {
+    const StartIcon = startIcon;
+    const EndIcon = endIcon;
+
     return (
-      <input
-        type={type}
-        className={cn(
-          "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
-          className,
+      <div className="relative w-full">
+        {StartIcon && (
+          <div className="absolute left-2 top-1/2 -translate-y-1/2 transform">
+            <StartIcon size={18} className="text-muted-foreground" />
+          </div>
+        )}
+        <input
+          type={type}
+          className={cn(
+            "flex h-10 w-full rounded-md border border-input bg-background px-4 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50",
+            startIcon ? "pl-8" : "",
+            endIcon ? "pr-8" : "",
+            className,
+          )}
+          ref={ref}
+          {...props}
+        />
+        {EndIcon && (
+          <div className="absolute right-3 top-1/2 -translate-y-1/2 transform">
+            <EndIcon className="text-muted-foreground" size={18} />
+          </div>
         )}
-        ref={ref}
-        {...props}
-      />
+      </div>
     );
   },
 );
-- 
cgit v1.2.3-70-g09d2

