import React from 'react';
import { ButtonProps } from '@bigbinary/neetoui';
import Rename from './Rename.js';
interface NavLinkProps {
activeClassName?: string | undefined;
activeStyle?: React.CSSProperties | undefined;
disabled?: boolean | undefined;
exact?: boolean | undefined;
strict?: boolean | undefined;
isActive?: () => boolean;
}
type TooltipPropType = {
content: string;
position: string;
};
type HomeButtonPropType = {
tooltip: TooltipPropType;
icon: React.ReactNode;
};
type MenuItemPropType = {
key: string;
label: string;
onClick?: () => void;
disabled?: boolean;
isDisabled?: boolean;
tooltipProps?: {
content: string;
};
};
type MoreOptionsPropType = {
isVertical?: boolean;
dropdownButtonProps?: {
size?: string;
className?: string;
};
menuItems?: MenuItemPropType[];
};
type HeaderLinkPropType = {
key: string;
to: string;
label: string;
className?: string;
labelProps?: {
lineHeight?: string;
};
moreOptions?: MoreOptionsPropType;
} & NavLinkProps;
type RightActionBlockPropTypes = {
isDraftBlockHidden: boolean;
previewDraftUrl: string;
isResetDraftButtonVisible: boolean;
onResetClick: () => void;
isResetting: boolean;
isPublishDisabled: boolean;
isPublishing: boolean;
handlePublish: () => void;
isPublishPreviewDisabled: boolean;
previewPublishedUrl: string;
isPublishButtonVisible: boolean;
isResetAlertOpen: boolean;
setIsResetAlertOpen: () => void;
handleReset: () => void;
publishAlertTitle: string;
publishAlertDescription: string;
publishButtonProps: ButtonProps;
};
type NavigationLinkPropsType = {
headerLinks: HeaderLinkPropType[];
maxVisibleLinks?: number;
};
type OverflowLinksPropsType = {
overflowLinks: HeaderLinkPropType[];
};
type LeftBlockPropTypes = {
homeButtonProps?: HomeButtonPropType;
homeUrl: string;
renameProps?: Rename;
children?: React.ReactNode;
};
/**
*
* A common component to use as navigation header with support for nested dropdown menus.
*
* @example
*
* import NavigationHeader from "@bigbinary/neeto-molecules/NavigationHeader";
*
* const Page = () => (
* }
* rightActionBlock={
*
* }
* navigationLinks={
*
* }
* />
* );
* @endexample
* To specify the content to be rendered in the left side of the
*
* NavigationHeader.
*
* @example
*
* import NavigationHeader from "@bigbinary/neeto-molecules/NavigationHeader";
*
* const Page = () => (
* noop,
* }}
* />
* }
* rightActionBlock={
*
* }
* navigationLinks={
*
* }
* />
* );
* @endexample
* To specify the content to be rendered at the center of the NavigationHeader.
*
* Each object in the headerLinks array can have the following properties:
*
* @example
*
* import NavigationHeader from "@bigbinary/neeto-molecules/NavigationHeader";
*
* const Page = () => (
* console.log("Settings clicked")
* },
* {
* key: "preferences",
* label: "Preferences",
* disabled: true,
* tooltipProps: {
* content: "This feature is coming soon"
* }
* }
* ]
* }
* },
* ]}
* maxVisibleLinks={3}
* />
* }
* rightActionBlock={
*
* }
* leftActionBlock={}
* />
* );
* @endexample
* To specify the content to be rendered in the right side of the
*
* NavigationHeader
*
* @example
*
* import NavigationHeader from "@bigbinary/neeto-molecules/NavigationHeader";
*
* const Page = () => (
*
* }
* navigationLinks={
*
* }
* leftActionBlock={}
* />
* );
* @endexample
*/
declare const NavigationHeader: React.FC<{
leftActionBlock?: React.ReactNode;
navigationLinks?: React.ReactNode;
rightActionBlock?: React.ReactNode;
}> & {
RightActionBlock: React.FC;
NavigationLinks: React.FC;
LeftActionBlock: React.FC;
OverflowLinks: React.FC;
};
export { NavigationHeader as default };