permission-js-react
Version:
React component for permission-js which makes it easy to add permissions in any React application
23 lines (19 loc) • 1.48 kB
TypeScript
import * as react_jsx_runtime from 'react/jsx-runtime';
import * as permission_js_core from 'permission-js-core';
import { BaseActions, BaseConditions, factoryPermission, CheckPermissions } from 'permission-js-core';
import { PropsWithChildren } from 'react';
type ReturnFactoryPermission<S extends string, A extends BaseActions<S>, C extends BaseConditions<S>> = ReturnType<typeof factoryPermission<S, A, C>>;
interface PermissionProviderProps<S extends string, A extends BaseActions<S>, C extends BaseConditions<S>> {
children: React.ReactNode | ((update: ReturnFactoryPermission<S, A, C>['update']) => React.ReactNode);
}
declare function factoryReactPermission<S extends string, A extends BaseActions<S>, C extends BaseConditions<S>>(): {
usePermission: () => {
can: <Subjects extends S, Action extends A[Subjects]>(args: CheckPermissions<Subjects, Action, C>) => boolean;
update: <Subject extends S>(subject: Subject, action: A[Subject][number], value: permission_js_core.Rules<S, A, C>[Subject][A[Subject][number]]) => void;
};
Can: <Subjects extends S, Action extends A[Subjects]>({ children, element, ...args }: PropsWithChildren<CheckPermissions<Subjects, Action, C> & {
element?: React.ReactNode;
}>) => React.ReactNode;
PermissionProvider: ({ children }: PermissionProviderProps<S, A, C>) => react_jsx_runtime.JSX.Element;
};
export { type PermissionProviderProps, type ReturnFactoryPermission, factoryReactPermission };