-
+
{SelectedIcon ? (
) : null}
@@ -159,7 +159,7 @@ export default function DropdownSelect({
@@ -169,7 +169,7 @@ export default function DropdownSelect({
align="start"
sideOffset={6}
className={cn(
- "w-[var(--radix-popover-trigger-width)] min-w-[12rem] overflow-hidden rounded-md border border-slate-200 bg-white p-0 text-slate-900 shadow-lg",
+ "w-[var(--radix-popover-trigger-width)] min-w-[12rem] overflow-hidden rounded-md border border-border bg-popover p-0 text-popover-foreground shadow-lg",
contentClassName,
)}
>
@@ -184,7 +184,7 @@ export default function DropdownSelect({
/>
) : null}
-
+
{emptyMessage ?? "No results found."}
{options.map((option) => {
@@ -198,9 +198,9 @@ export default function DropdownSelect({
disabled={option.disabled}
onSelect={handleSelect}
className={cn(
- "flex items-center justify-between gap-2 rounded-lg px-4 py-3 text-sm text-gray-700 transition-colors data-[selected=true]:bg-gray-50 data-[selected=true]:text-gray-900",
+ "flex items-center justify-between gap-2 rounded-lg px-4 py-3 text-sm text-foreground transition-colors data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground",
isSelected && "font-semibold",
- !isSelected && "hover:bg-gray-50",
+ !isSelected && "hover:bg-accent hover:text-accent-foreground",
itemClassName,
)}
>
@@ -209,7 +209,7 @@ export default function DropdownSelect({
@@ -217,7 +217,7 @@ export default function DropdownSelect({
{option.label}
{isSelected ? (
-
+
) : null}
);
diff --git a/frontend/src/components/ui/input.tsx b/frontend/src/components/ui/input.tsx
index adda50e..1a94940 100644
--- a/frontend/src/components/ui/input.tsx
+++ b/frontend/src/components/ui/input.tsx
@@ -10,7 +10,7 @@ const Input = React.forwardRef<
ref={ref}
type={type}
className={cn(
- "flex h-11 w-full rounded-xl border border-[color:var(--border)] bg-[color:var(--surface)] px-4 text-sm text-strong shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--accent)]",
+ "app-input flex h-11 w-full rounded-xl border border-[color:var(--border)] [--input-bg:var(--surface)] [--input-text:var(--text)] bg-[color:var(--input-bg)] px-4 text-sm text-[color:var(--input-text)] shadow-sm placeholder:text-[color:var(--text-muted)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--accent)] disabled:cursor-not-allowed disabled:[--input-bg:var(--surface-muted)] disabled:[--input-text:var(--text-muted)]",
className,
)}
{...props}
diff --git a/frontend/src/components/ui/popover.tsx b/frontend/src/components/ui/popover.tsx
index 94c4940..800b5ce 100644
--- a/frontend/src/components/ui/popover.tsx
+++ b/frontend/src/components/ui/popover.tsx
@@ -19,7 +19,7 @@ const PopoverContent = React.forwardRef<
align={align}
sideOffset={sideOffset}
className={cn(
- "z-50 w-72 rounded-md border border-popover bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
+ "z-50 w-72 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
className,
)}
{...props}
diff --git a/frontend/src/components/ui/searchable-select.tsx b/frontend/src/components/ui/searchable-select.tsx
index 7863a5a..32fd34e 100644
--- a/frontend/src/components/ui/searchable-select.tsx
+++ b/frontend/src/components/ui/searchable-select.tsx
@@ -23,11 +23,11 @@ type SearchableSelectProps = {
};
const baseTriggerClassName =
- "w-auto h-auto rounded-xl border-2 border-gray-200 bg-white px-4 py-3 text-left text-sm font-semibold text-gray-700 shadow-sm transition-all duration-200 hover:border-gray-300 focus:border-gray-900 focus:ring-4 focus:ring-gray-100";
+ "h-auto w-auto rounded-xl border border-input bg-background px-4 py-3 text-left text-sm font-semibold text-foreground shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground focus:border-ring focus:ring-2 focus:ring-ring";
const baseContentClassName =
- "rounded-xl border-2 border-gray-200 bg-white shadow-xl";
+ "rounded-xl border border-border bg-popover shadow-xl";
const baseItemClassName =
- "px-4 py-3 text-sm text-gray-700 transition-colors data-[selected=true]:bg-gray-50 data-[selected=true]:text-gray-900 data-[selected=true]:font-semibold hover:bg-gray-50";
+ "px-4 py-3 text-sm text-foreground transition-colors data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[selected=true]:font-semibold hover:bg-accent hover:text-accent-foreground";
export default function SearchableSelect({
value,
diff --git a/frontend/src/components/ui/select.tsx b/frontend/src/components/ui/select.tsx
index d346a9d..fe47b28 100644
--- a/frontend/src/components/ui/select.tsx
+++ b/frontend/src/components/ui/select.tsx
@@ -18,7 +18,7 @@ const SelectTrigger = React.forwardRef<
ref={ref}
type="button"
className={cn(
- "flex h-11 w-full cursor-pointer items-center justify-between rounded-xl border border-[color:var(--border)] bg-[color:var(--surface)] px-4 text-sm text-strong shadow-sm focus:outline-none focus:ring-2 focus:ring-[color:var(--accent)] focus:ring-offset-2",
+ "flex h-11 w-full cursor-pointer items-center justify-between rounded-xl border border-input bg-background px-4 text-sm text-foreground shadow-sm focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
className,
)}
{...props}
@@ -71,9 +71,9 @@ const SelectContent = React.forwardRef<
>(({ className, children, position = "popper", ...props }, ref) => (
(({ className, ...props }, ref) => (
));
diff --git a/frontend/tailwind.config.cjs b/frontend/tailwind.config.cjs
index da4ed85..0a341a4 100644
--- a/frontend/tailwind.config.cjs
+++ b/frontend/tailwind.config.cjs
@@ -4,6 +4,41 @@ module.exports = {
content: ["./src/**/*.{ts,tsx}", "./app/**/*.{ts,tsx}"],
theme: {
extend: {
+ colors: {
+ border: "var(--border)",
+ input: "var(--input)",
+ ring: "var(--ring)",
+ background: "var(--background)",
+ foreground: "var(--foreground)",
+ primary: {
+ DEFAULT: "var(--primary)",
+ foreground: "var(--primary-foreground)",
+ },
+ secondary: {
+ DEFAULT: "var(--secondary)",
+ foreground: "var(--secondary-foreground)",
+ },
+ destructive: {
+ DEFAULT: "var(--destructive)",
+ foreground: "var(--destructive-foreground)",
+ },
+ muted: {
+ DEFAULT: "var(--muted)",
+ foreground: "var(--muted-foreground)",
+ },
+ accent: {
+ DEFAULT: "var(--accent-shadcn)",
+ foreground: "var(--accent-foreground)",
+ },
+ popover: {
+ DEFAULT: "var(--popover)",
+ foreground: "var(--popover-foreground)",
+ },
+ card: {
+ DEFAULT: "var(--card)",
+ foreground: "var(--card-foreground)",
+ },
+ },
fontFamily: {
heading: ["var(--font-heading)", "sans-serif"],
body: ["var(--font-body)", "sans-serif"],