pagamio-frontend-commons-lib
Version:
Pagamio library for Frontend reusable components like the form engine and table container
66 lines (65 loc) • 2.4 kB
TypeScript
import type { FC, HTMLAttributeAnchorTarget, PropsWithChildren } from 'react';
import React from 'react';
interface AppSidebarPageItem {
href?: string;
target?: HTMLAttributeAnchorTarget;
icon?: FC;
label: string;
items?: AppSidebarPageItem[];
badge?: string;
roles?: string[];
forceDropdown?: boolean;
}
/**
* Props for the AppSidebarContext
* @interface AppSidebarContextProps
* @property {Object} desktop - Desktop sidebar state and controls
* @property {Object} mobile - Mobile sidebar state and controls
* @property {AppSidebarPageItem[]} pages - Array of sidebar page items
* @property {string} pathname - Current route pathname
* @property {React.ElementType} linkComponent - Component used for navigation links
*/
interface AppSidebarContextProps {
desktop: {
isCollapsed: boolean;
setCollapsed(value: boolean): void;
toggle(): void;
};
mobile: {
isOpen: boolean;
close(): void;
toggle(): void;
};
pages: AppSidebarPageItem[];
pathname: string;
linkComponent: React.ElementType;
}
/**
* Props for the AppSidebarProvider component
* @interface AppSidebarProviderProps
* @property {boolean} initialCollapsed - Initial collapsed state of desktop sidebar
* @property {AppSidebarPageItem[]} pages - Array of sidebar page items
* @property {string} pathname - Current route pathname
* @property {React.ElementType} linkComponent - Component used for navigation links
* @property {ReactNode} children - Child components
*/
interface AppSidebarProviderProps extends PropsWithChildren {
initialCollapsed: boolean;
pages: AppSidebarPageItem[];
pathname: string;
linkComponent: React.ElementType;
}
/**
* Provider component for sidebar state management
* @param {AppSidebarProviderProps} props - Component props
*/
declare const AppSidebarProvider: ({ initialCollapsed, children, pages, pathname, linkComponent, }: AppSidebarProviderProps) => import("react/jsx-runtime").JSX.Element;
/**
* Hook for accessing sidebar context
* @throws {Error} When used outside AppSidebarProvider
* @returns {AppSidebarContextProps} Sidebar context value
*/
declare const useAppSidebarContext: () => AppSidebarContextProps;
export default AppSidebarProvider;
export { useAppSidebarContext };
export type { AppSidebarContextProps, AppSidebarProviderProps, AppSidebarPageItem };