More tweaking

This commit is contained in:
Gregory Schier
2026-03-12 08:59:02 -07:00
parent 5e3ef70d93
commit 0b7705d915
11 changed files with 208 additions and 125 deletions

View File

@@ -0,0 +1,29 @@
import type { ActionInvocation } from '@yaakapp-internal/proxy-lib';
import { IconButton, type IconButtonProps } from '@yaakapp-internal/ui';
import { useCallback } from 'react';
import { useRpcMutation } from '../hooks/useRpcMutation';
import { useActionMetadata } from '../hooks/useActionMetadata';
type ActionIconButtonProps = Omit<IconButtonProps, 'onClick' | 'title'> & {
action: ActionInvocation;
title?: string;
};
export function ActionIconButton({ action, ...props }: ActionIconButtonProps) {
const meta = useActionMetadata(action);
const { mutate, isPending } = useRpcMutation('execute_action');
const onClick = useCallback(() => {
mutate(action);
}, [action, mutate]);
return (
<IconButton
{...props}
title={props.title ?? meta?.label ?? '…'}
disabled={props.disabled || isPending}
isLoading={isPending}
onClick={onClick}
/>
);
}