@atlaskit/atlassian-navigation
Version:
A horizontal navigation component for Atlassian products.
418 lines (353 loc) • 10.5 kB
Markdown
<!-- 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: ButtonFocusCSSProperties;
active: ButtonCSSProperties;
selected: ButtonCSSProperties;
selectedHover?: ButtonCSSProperties;
};
// @public (undocumented)
type ButtonCSSProperties = CSSProperties & {
boxShadow: string;
};
// @public (undocumented)
type ButtonFocusCSSProperties = {
boxShadow: string;
color: string;
backgroundColor: 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 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-->