@atlaskit/atlassian-navigation
Version:
A horizontal navigation component for Atlassian apps.
106 lines (104 loc) • 4.48 kB
JavaScript
"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;
});