UNPKG

@atlaskit/atlassian-navigation

Version:

A horizontal navigation component for Atlassian apps.

102 lines (100 loc) 3.42 kB
import _extends from "@babel/runtime/helpers/extends"; /** * @jsxRuntime classic * @jsx jsx */ import { forwardRef } from 'react'; // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766 import { css, jsx } from '@emotion/react'; import Button from '@atlaskit/button/custom-theme-button'; import Tooltip from '@atlaskit/tooltip'; import { useTheme } from '../../theme'; import { getPrimaryButtonTheme } from './styles'; const VAR_BUTTON_SELECTED_COLOR = '--button-selected-color'; const VAR_BUTTON_SELECTED_BORDER_COLOR = '--button-selected-border-color'; const buttonBaseStyles = css({ display: 'flex', height: '100%', position: 'relative', alignItems: 'center', justifyContent: 'center', flexDirection: 'column' }); const buttonNoOpStyle = css({ '--noop': 1 }); const buttonHighlightedStyles = css({ // eslint-disable-next-line @atlaskit/design-system/no-nested-styles, @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors -- Ignored via go/DSP-18766 '&& > *': { color: `var(${VAR_BUTTON_SELECTED_COLOR})` }, // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-selectors -- Ignored via go/DSP-18766 '&:after': { height: 3, position: 'absolute', backgroundColor: `var(${VAR_BUTTON_SELECTED_BORDER_COLOR})`, borderStartEndRadius: "var(--ds-radius-xsmall, 1px)", borderStartStartRadius: "var(--ds-radius-xsmall, 1px)", content: '""', insetBlockEnd: 0, insetInlineEnd: "var(--ds-space-050, 4px)", insetInlineStart: "var(--ds-space-050, 4px)" } }); /** * __Primary button__ * * A primary button allows you to add top-level navigation items. * Should be passed into `AtlassianNavigation`'s `primaryItems` prop. * * - [Examples](https://atlassian.design/components/atlassian-navigation/examples#dropdown-menu) * - [Code](https://atlassian.design/components/atlassian-navigation/code) * * @deprecated `@atlaskit/atlassian-navigation` is deprecated. Use `@atlaskit/navigation-system` instead. */ export const PrimaryButton = /*#__PURE__*/forwardRef((props, ref) => { const { children, component, isHighlighted, isLoading, isSelected, onClick, testId, theme, tooltip, shortcut, ...rest } = props; const themeFromContext = useTheme(); const button = jsx("div", { style: { [VAR_BUTTON_SELECTED_COLOR]: themeFromContext.mode.primaryButton.selected.color, [VAR_BUTTON_SELECTED_BORDER_COLOR]: themeFromContext.mode.primaryButton.selected.borderColor }, css: [buttonBaseStyles, isHighlighted && buttonHighlightedStyles], role: "listitem", "data-vc": "primary-button" }, jsx(Button, _extends({ appearance: "primary", component: component, isLoading: isLoading, isSelected: isSelected, onClick: onClick, ref: ref, testId: testId // eslint-disable-next-line @repo/internal/react/no-unsafe-overrides, @atlaskit/design-system/no-unsafe-style-overrides , theme: theme || getPrimaryButtonTheme(themeFromContext), css: [buttonNoOpStyle] // Typescript working for css mismatch error // These are all explicit, leaving it in just in case }, rest), children)); if (tooltip) { return jsx(Tooltip, { content: tooltip, hideTooltipOnClick: true, shortcut: shortcut }, button); } return button; });