fix(web): fix personalities page dark mode theming and wire to API (#540)
Some checks failed
ci/woodpecker/push/web Pipeline failed

Co-authored-by: Jason Woltje <jason@diversecanvas.com>
Co-committed-by: Jason Woltje <jason@diversecanvas.com>
This commit was merged in pull request #540.
This commit is contained in:
2026-02-27 10:59:04 +00:00
committed by jason.woltje
parent 36b4d8323d
commit c38bfae16c
3 changed files with 11 additions and 5 deletions

View File

@@ -91,7 +91,7 @@ export function SelectTrigger({
onClick={() => { onClick={() => {
setIsOpen(!isOpen); 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} {children}
</button> </button>
@@ -110,7 +110,7 @@ export function SelectContent({ children }: SelectContentProps): React.JSX.Eleme
if (!isOpen) return null; if (!isOpen) return null;
return ( 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} {children}
</div> </div>
); );
@@ -122,7 +122,7 @@ export function SelectItem({ value, children }: SelectItemProps): React.JSX.Elem
return ( return (
<div <div
onClick={() => onValueChange?.(value)} 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} {children}
</div> </div>

View File

@@ -250,6 +250,11 @@ export async function apiRequest<T>(endpoint: string, options: ApiRequestOptions
throw new Error(error.message); 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>); return await (response.json() as Promise<T>);
} catch (err: unknown) { } catch (err: unknown) {
if (err instanceof DOMException && err.name === "AbortError") { if (err instanceof DOMException && err.name === "AbortError") {

View File

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