<!-- API Report Version: 2.3 -->

## API Report File for "@atlaskit/atlassian-navigation"

> Do not edit this file. This report is auto-generated using
> [API Extractor](https://api-extractor.com/).
> [Learn more about API reports](https://hello.atlassian.net/wiki/spaces/UR/pages/1825484529/Package+API+Reports)

### Table of contents

- [Main Entry Types](#main-entry-types)
- [Peer Dependencies](#peer-dependencies)

### Main Entry Types

<!--SECTION START: Main Entry Types-->

```ts
/// <reference types="lodash" />
/// <reference types="react" />

import { AllHTMLAttributes } from 'react';
import { ComponentType } from 'react';
import { CSSObject } from '@emotion/react';
import { CustomThemeButtonProps } from '@atlaskit/button/types';
import { CustomThemeButtonProps as CustomThemeButtonProps_2 } from '@atlaskit/button/custom-theme-button';
import { ElementType } from 'react';
import { ForwardRefExoticComponent } from 'react';
import { jsx } from '@emotion/react';
import { LogoProps } from '@atlaskit/logo';
import { MouseEvent as MouseEvent_2 } from 'react';
import noop from '@atlaskit/ds-lib/noop';
import { Provider } from 'react';
import { default as React_2 } from 'react';
import { ReactChild } from 'react';
import { ReactNode } from 'react';
import { ReactNodeArray } from 'react';
import { RefAttributes } from 'react';
import { ThemeProps } from '@atlaskit/button/custom-theme-button';
import { ThemeProps as ThemeProps_2 } from '@atlaskit/button';
import { ThemeTokens } from '@atlaskit/button/custom-theme-button';
import { ThemeTokens as ThemeTokens_2 } from '@atlaskit/button';

// @public
export const AppSwitcher: React_2.ForwardRefExoticComponent<
	BaseIconButtonProps & React_2.RefAttributes<any>
>;

// @public (undocumented)
export type AppSwitcherProps = BaseIconButtonProps;

// @public
export const AtlassianNavigation: (props: AtlassianNavigationProps) => jsx.JSX.Element;

// @public (undocumented)
export interface AtlassianNavigationProps {
	label: string;
	moreLabel?: ReactNode;
	primaryItems: ReactNodeArray;
	renderAppSwitcher?: React_2.ComponentType<{}>;
	renderCreate?: React_2.ComponentType<{}>;
	renderHelp?: React_2.ComponentType<{}>;
	renderNotifications?: React_2.ComponentType<{}>;
	renderProductHome: React_2.ComponentType<{}>;
	renderProfile?: React_2.ComponentType<{}>;
	renderSearch?: React_2.ComponentType<{}>;
	renderSettings?: React_2.ComponentType<{}>;
	renderSignIn?: React_2.ComponentType<{}>;
	testId?: string;
	theme?: NavigationTheme;
}

// @public (undocumented)
export const atlassianTheme: NavigationTheme;

// @public
interface BaseIconButtonProps {
	component?: CustomThemeButtonProps['component'];
	href?: string;
	id?: string;
	isDisabled?: boolean;
	isSelected?: boolean;
	onBlur?: React.FocusEventHandler<HTMLElement>;
	onClick?: (event: React.MouseEvent<HTMLElement>, analyticsEvent: any) => void;
	onFocus?: React.FocusEventHandler<HTMLElement>;
	onMouseDown?: React.MouseEventHandler<HTMLElement>;
	onMouseEnter?: React.MouseEventHandler<HTMLElement>;
	onMouseLeave?: React.MouseEventHandler<HTMLElement>;
	onMouseUp?: React.MouseEventHandler<HTMLElement>;
	target?: string;
	testId?: string;
	tooltip: React.ReactNode;
}

// @public (undocumented)
type ButtonCSSContext = {
	default: ButtonCSSProperties;
	hover: ButtonCSSProperties;
	focus: ButtonCSSProperties;
	active: ButtonCSSProperties;
	selected: ButtonCSSProperties;
	selectedHover?: ButtonCSSProperties;
};

// @public (undocumented)
type ButtonCSSProperties = CSSProperties & {
	boxShadow: string;
};

// @public (undocumented)
export type Colors = {
	backgroundColor: string;
	color: string;
};

// @public
export const Create: ({
	onClick,
	href,
	text,
	buttonTooltip,
	iconButtonTooltip,
	testId,
}: CreateProps) => jsx.JSX.Element;

// @public (undocumented)
export type CreateCSS = ButtonCSSContext;

// @public (undocumented)
export interface CreateProps {
	buttonTooltip?: React_2.ReactNode;
	href?: string;
	iconButtonTooltip?: React_2.ReactNode;
	onClick?: (e: React_2.MouseEvent<HTMLElement>, analyticsEvent: any) => void;
	testId?: string;
	text: string;
}

// @public (undocumented)
type CSSProperties = CSSObject & {
	backgroundColor: string;
	color: string;
};

// @public
export const CustomProductHome: (props: CustomProductHomeProps) => jsx.JSX.Element;

// @public (undocumented)
export interface CustomProductHomeProps {
	href?: string;
	iconAlt: string;
	iconUrl: string;
	logoAlt: string;
	logoMaxWidth?: number;
	logoUrl: string;
	onClick?: (event: MouseEvent_2<HTMLElement>) => void;
	onMouseDown?: (event: MouseEvent_2<HTMLElement>) => void;
	siteTitle?: string;
	testId?: string;
}

// @public (undocumented)
export const generateTheme: (themeColors: GenerateThemeArgs) => NavigationTheme;

// @public (undocumented)
export type GenerateThemeArgs = {
	name?: string;
	backgroundColor: string;
	highlightColor: string;
};

// @public
export const Help: React_2.ForwardRefExoticComponent<
	BaseIconButtonProps & {
		badge?: React_2.ComponentType<{}> | undefined;
	} & React_2.RefAttributes<any>
>;

// @public (undocumented)
export type HelpProps = BaseIconButtonProps & {
	badge?: ComponentType<{}>;
};

// @public (undocumented)
export const HORIZONTAL_GLOBAL_NAV_HEIGHT = 56;

// @public
export const IconButton: React_2.ForwardRefExoticComponent<
	BaseIconButtonProps & {
		icon: React_2.ReactChild | undefined;
		theme?:
			| ((current: (props: ThemeProps) => ThemeTokens, props: ThemeProps) => ThemeTokens)
			| undefined;
	} & React_2.RefAttributes<HTMLElement>
>;

// @public (undocumented)
export type IconButtonCSS = ButtonCSSContext;

// @public (undocumented)
export type IconButtonProps = BaseIconButtonProps & {
	icon: CustomThemeButtonProps['iconBefore'];
	theme?: CustomThemeButtonProps['theme'];
};

// @public (undocumented)
type LogoStyleProps = {
	iconGradientStart?: string;
	iconGradientStop?: string;
	iconColor?: string;
	textColor?: string;
};

// @public (undocumented)
export type Mode = {
	create: CreateCSS;
	iconButton: IconButtonCSS;
	navigation: NavigationCSS;
	primaryButton: PrimaryButtonCSS;
	productHome: ProductHomeCSS;
	search: SearchCSS;
	skeleton: SkeletonCSS;
};

// @public (undocumented)
export type NavigationCSS = CSSProperties;

// @public (undocumented)
export type NavigationTheme = {
	mode: Mode;
};

// @public
export const Notifications: React_2.ForwardRefExoticComponent<
	BaseIconButtonProps & {
		badge: React_2.ComponentType<{}>;
	} & React_2.RefAttributes<any>
>;

// @public (undocumented)
export type NotificationsProps = BaseIconButtonProps & {
	badge: ComponentType<{}>;
};

// @public
export const PrimaryButton: ForwardRefExoticComponent<
	Omit<CustomThemeButtonProps_2, 'appearance' | 'onClick'> & {
		component?: ComponentType<AllHTMLAttributes<HTMLElement>> | ElementType<any> | undefined;
		isHighlighted?: boolean | undefined;
		testId?: string | undefined;
		tooltip?: ReactNode;
		onClick?:
			| ((event: MouseEvent_2<HTMLElement, MouseEvent>, analyticsEvent: any) => void)
			| undefined;
	} & RefAttributes<HTMLElement>
>;

// @public (undocumented)
export type PrimaryButtonCSS = ButtonCSSContext;

// @public (undocumented)
export type PrimaryButtonProps = Omit<CustomThemeButtonProps, 'appearance' | 'onClick'> & {
	component?: ComponentType<AllHTMLAttributes<HTMLElement>> | ElementType<any>;
	isHighlighted?: boolean;
	testId?: string;
	tooltip?: React.ReactNode;
	onClick?: (event: React.MouseEvent<HTMLElement>, analyticsEvent: any) => void;
};

// @public
export const PrimaryDropdownButton: ForwardRefExoticComponent<
	Omit<PrimaryButtonProps, 'iconAfter'> & {
		isHighlighted?: boolean | undefined;
		testId?: string | undefined;
		tooltip?: ReactNode;
	} & RefAttributes<HTMLElement>
>;

// @public (undocumented)
export type PrimaryDropdownButtonProps = Omit<PrimaryButtonProps, 'iconAfter'> & {
	isHighlighted?: boolean;
	testId?: string;
	tooltip?: React.ReactNode;
};

// @public
export const PrimarySplitButton: ({
	children,
	isHighlighted,
}: PrimarySplitButtonProps) => jsx.JSX.Element;

// @public (undocumented)
type PrimarySplitButtonProps = {
	children: ReactNode;
	isHighlighted?: boolean;
};

// @public
export const ProductHome: ({
	icon: Icon,
	logo: Logo,
	siteTitle,
	onClick,
	href,
	onMouseDown,
	testId,
	logoMaxWidth,
	...rest
}: ProductHomeProps) => jsx.JSX.Element;

// @public (undocumented)
type ProductHomeCSS = CSSProperties & LogoStyleProps;

// @public (undocumented)
export interface ProductHomeProps {
	href?: string;
	icon: ComponentType<Partial<LogoProps>>;
	logo: ComponentType<Partial<LogoProps>>;
	logoMaxWidth?: number;
	onClick?: (event: MouseEvent_2<HTMLElement>) => void;
	onMouseDown?: (event: MouseEvent_2<HTMLElement>) => void;
	siteTitle?: string;
	testId?: string;
}

// @public
export const Profile: ForwardRefExoticComponent<
	BaseIconButtonProps & {
		icon: ReactChild | undefined;
		theme?:
			| ((current: (props: ThemeProps_2) => ThemeTokens_2, props: ThemeProps_2) => ThemeTokens_2)
			| undefined;
	} & RefAttributes<HTMLElement>
>;

// @public (undocumented)
export type ProfileProps = IconButtonProps;

// @public
export const Search: (props: SearchProps) => jsx.JSX.Element;

// @public (undocumented)
export type SearchCSS = {
	default: CSSProperties;
	focus: CSSObject;
	hover: CSSObject;
};

// @public (undocumented)
export type SearchProps = BaseIconButtonProps & {
	placeholder: string;
	label: string;
	value?: string;
};

// @public
export const Settings: React_2.ForwardRefExoticComponent<
	BaseIconButtonProps & React_2.RefAttributes<any>
>;

// @public (undocumented)
export type SettingsProps = BaseIconButtonProps;

// @public
export const SignIn: (props: SignInProps) => JSX.Element;

// @public (undocumented)
export type SignInProps = BaseIconButtonProps;

// @public (undocumented)
export type SkeletonCSS = CSSObject & {
	backgroundColor: string;
	opacity: number;
};

// @public
export const ThemeProvider: Provider<NavigationTheme>;

// @public
export const useOverflowStatus: () => {
	isVisible: boolean;
	openOverflowMenu: typeof noop;
	closeOverflowMenu: typeof noop;
};

// (No @packageDocumentation comment for this package)
```

<!--SECTION END: Main Entry Types-->

### Peer Dependencies

<!--SECTION START: Peer Dependencies-->

```json
{
	"react": "^16.8.0"
}
```

<!--SECTION END: Peer Dependencies-->
