UNPKG

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
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 };