fix(web): fix personalities page dark mode theming and wire to API #540

Merged
jason.woltje merged 1 commits from fix/personalities-page into main 2026-02-27 10:59:06 +00:00
3 changed files with 11 additions and 5 deletions

View File

@@ -91,7 +91,7 @@ export function SelectTrigger({
onClick={() => {
setIsOpen(!isOpen);
}}
className={`flex h-10 w-full items-center justify-between rounded-md border border-gray-300 bg-white px-3 py-2 text-sm ${className}`}
className={`flex h-10 w-full items-center justify-between rounded-md border border-border bg-bg px-3 py-2 text-sm text-text ${className}`}
>
{children}
</button>
@@ -110,7 +110,7 @@ export function SelectContent({ children }: SelectContentProps): React.JSX.Eleme
if (!isOpen) return null;
return (
<div className="absolute z-50 mt-1 max-h-60 w-full overflow-auto rounded-md border border-gray-300 bg-white shadow-lg">
<div className="absolute z-50 mt-1 max-h-60 w-full overflow-auto rounded-md border border-border bg-surface shadow-md">
{children}
</div>
);
@@ -122,7 +122,7 @@ export function SelectItem({ value, children }: SelectItemProps): React.JSX.Elem
return (
<div
onClick={() => onValueChange?.(value)}
className="cursor-pointer px-3 py-2 text-sm hover:bg-gray-100"
className="cursor-pointer px-3 py-2 text-sm text-text hover:bg-surface-2"
>
{children}
</div>

View File

@@ -250,6 +250,11 @@ export async function apiRequest<T>(endpoint: string, options: ApiRequestOptions
throw new Error(error.message);
}
// 204 No Content responses have no body — return undefined cast to T
if (response.status === 204) {
return undefined as T;
}
return await (response.json() as Promise<T>);
} catch (err: unknown) {
if (err instanceof DOMException && err.name === "AbortError") {

View File

@@ -73,7 +73,8 @@ export async function updatePersonality(
/**
* Delete a personality
* The DELETE endpoint returns 204 No Content on success.
*/
export async function deletePersonality(id: string): Promise<Record<string, never>> {
return apiDelete<Record<string, never>>(`/api/personalities/${id}`);
export async function deletePersonality(id: string): Promise<void> {
await apiDelete<undefined>(`/api/personalities/${id}`);
}