UNPKG

@atlaskit/atlassian-navigation

Version:

A horizontal navigation component for Atlassian apps.

106 lines (104 loc) 4.48 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.PrimaryButton = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = require("react"); var _react2 = require("@emotion/react"); var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button")); var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip")); var _theme = require("../../theme"); var _styles = require("./styles"); var _excluded = ["children", "component", "isHighlighted", "isLoading", "isSelected", "onClick", "testId", "theme", "tooltip", "shortcut"]; /** * @jsxRuntime classic * @jsx jsx */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766 var VAR_BUTTON_SELECTED_COLOR = '--button-selected-color'; var VAR_BUTTON_SELECTED_BORDER_COLOR = '--button-selected-border-color'; var buttonBaseStyles = (0, _react2.css)({ display: 'flex', height: '100%', position: 'relative', alignItems: 'center', justifyContent: 'center', flexDirection: 'column' }); var buttonNoOpStyle = (0, _react2.css)({ '--noop': 1 }); var buttonHighlightedStyles = (0, _react2.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(".concat(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(".concat(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. */ var PrimaryButton = exports.PrimaryButton = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) { var children = props.children, component = props.component, isHighlighted = props.isHighlighted, isLoading = props.isLoading, isSelected = props.isSelected, onClick = props.onClick, testId = props.testId, theme = props.theme, tooltip = props.tooltip, shortcut = props.shortcut, rest = (0, _objectWithoutProperties2.default)(props, _excluded); var themeFromContext = (0, _theme.useTheme)(); var button = (0, _react2.jsx)("div", { style: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, 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" }, (0, _react2.jsx)(_customThemeButton.default, (0, _extends2.default)({ 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 || (0, _styles.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 (0, _react2.jsx)(_tooltip.default, { content: tooltip, hideTooltipOnClick: true, shortcut: shortcut }, button); } return button; });