fix(web): fix personalities page dark mode theming and wire to API (#540)
Some checks failed
ci/woodpecker/push/web Pipeline failed
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:
@@ -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>
|
||||||
|
|||||||
@@ -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") {
|
||||||
|
|||||||
@@ -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}`);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user