@atlaskit/navigation-system 0.167.3 → 0.168.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/afm-volt/tsconfig.json +75 -0
- package/dist/cjs/entry-points/top-nav-items/index.js +8 -1
- package/dist/cjs/index.js +8 -1
- package/dist/cjs/ui/top-nav-items/nav-logo/app-logo.compiled.css +24 -0
- package/dist/cjs/ui/top-nav-items/nav-logo/app-logo.js +104 -0
- package/dist/cjs/ui/top-nav-items/nav-logo/logo-renderer.js +42 -0
- package/dist/cjs/ui/top-nav-items/{nav-logo.compiled.css → nav-logo/nav-logo.compiled.css} +1 -1
- package/dist/cjs/ui/top-nav-items/{nav-logo.js → nav-logo/nav-logo.js} +8 -33
- package/dist/cjs/ui/top-nav-items/themed/get-custom-theme-styles.js +1 -1
- package/dist/es2019/entry-points/top-nav-items/index.js +2 -1
- package/dist/es2019/index.js +2 -1
- package/dist/es2019/ui/top-nav-items/nav-logo/app-logo.compiled.css +24 -0
- package/dist/es2019/ui/top-nav-items/nav-logo/app-logo.js +94 -0
- package/dist/es2019/ui/top-nav-items/nav-logo/logo-renderer.js +35 -0
- package/dist/{esm/ui/top-nav-items → es2019/ui/top-nav-items/nav-logo}/nav-logo.compiled.css +1 -1
- package/dist/es2019/ui/top-nav-items/{nav-logo.js → nav-logo/nav-logo.js} +9 -36
- package/dist/es2019/ui/top-nav-items/themed/get-custom-theme-styles.js +1 -1
- package/dist/esm/entry-points/top-nav-items/index.js +2 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/ui/top-nav-items/nav-logo/app-logo.compiled.css +24 -0
- package/dist/esm/ui/top-nav-items/nav-logo/app-logo.js +95 -0
- package/dist/esm/ui/top-nav-items/nav-logo/logo-renderer.js +33 -0
- package/dist/{es2019/ui/top-nav-items → esm/ui/top-nav-items/nav-logo}/nav-logo.compiled.css +1 -1
- package/dist/esm/ui/top-nav-items/{nav-logo.js → nav-logo/nav-logo.js} +9 -34
- package/dist/esm/ui/top-nav-items/themed/get-custom-theme-styles.js +1 -1
- package/dist/types/entry-points/top-nav-items/index.d.ts +2 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/ui/top-nav-items/nav-logo/app-logo.d.ts +38 -0
- package/dist/types/ui/top-nav-items/nav-logo/logo-renderer.d.ts +14 -0
- package/dist/types/ui/top-nav-items/{nav-logo.d.ts → nav-logo/nav-logo.d.ts} +1 -1
- package/dist/types-ts4.5/entry-points/top-nav-items/index.d.ts +2 -1
- package/dist/types-ts4.5/index.d.ts +2 -1
- package/dist/types-ts4.5/ui/top-nav-items/nav-logo/app-logo.d.ts +38 -0
- package/dist/types-ts4.5/ui/top-nav-items/nav-logo/logo-renderer.d.ts +14 -0
- package/dist/types-ts4.5/ui/top-nav-items/{nav-logo.d.ts → nav-logo/nav-logo.d.ts} +1 -1
- package/examples/top-nav-side-nav-collapsed.tsx +1 -1
- package/examples/top-nav-with-long-name.tsx +63 -0
- package/examples/top-nav-with-temp-nav-app-icon.tsx +5 -5
- package/examples/top-navigation-stress.tsx +15 -12
- package/examples/top-navigation-theming-with-picker.tsx +17 -8
- package/examples/top-navigation-theming.tsx +16 -6
- package/examples/top-navigation.tsx +17 -7
- package/package.json +1 -1
- package/src/entry-points/top-nav-items/index.tsx +2 -1
- package/src/index.tsx +2 -1
- package/src/ui/page-layout/__tests__/informational-vr-tests/__snapshots__/top-nav/breakpoint-lg---with-min-widths--firefox.png +0 -0
- package/src/ui/page-layout/__tests__/informational-vr-tests/__snapshots__/top-nav/breakpoint-lg--firefox.png +0 -0
- package/src/ui/page-layout/__tests__/informational-vr-tests/__snapshots__/top-nav/breakpoint-md---with-min-widths--firefox.png +0 -0
- package/src/ui/page-layout/__tests__/informational-vr-tests/__snapshots__/top-nav/breakpoint-md--firefox.png +0 -0
- package/src/ui/page-layout/__tests__/informational-vr-tests/__snapshots__/top-nav/breakpoint-sm---with-min-widths--firefox.png +0 -0
- package/src/ui/page-layout/__tests__/informational-vr-tests/__snapshots__/top-nav/breakpoint-sm--firefox.png +0 -0
- package/src/ui/page-layout/__tests__/informational-vr-tests/__snapshots__/top-nav/breakpoint-xl---with-min-widths--firefox.png +0 -0
- package/src/ui/page-layout/__tests__/informational-vr-tests/__snapshots__/top-nav/breakpoint-xl--firefox.png +0 -0
- package/src/ui/page-layout/__tests__/informational-vr-tests/__snapshots__/top-nav/breakpoint-xs---with-min-widths--firefox.png +0 -0
- package/src/ui/page-layout/__tests__/informational-vr-tests/__snapshots__/top-nav/breakpoint-xs--firefox.png +0 -0
- package/src/ui/page-layout/side-nav/toggle-button.tsx +1 -9
- package/src/ui/top-nav-items/__tests__/informational-vr-tests/__snapshots__/top-navigation/long-product-name-tooltip--default.png +0 -0
- package/src/ui/top-nav-items/__tests__/informational-vr-tests/__snapshots__/top-navigation/nav-logo-hover---custom-theming--desktop.png +0 -0
- package/src/ui/top-nav-items/__tests__/informational-vr-tests/__snapshots__/top-navigation/nav-logo-hover--desktop.png +0 -0
- package/src/ui/top-nav-items/__tests__/informational-vr-tests/__snapshots__/top-navigation/nav-logo-pressed---custom-theming--desktop.png +0 -0
- package/src/ui/top-nav-items/__tests__/informational-vr-tests/__snapshots__/top-navigation/nav-logo-pressed---custom-theming--mobile.png +0 -0
- package/src/ui/top-nav-items/__tests__/informational-vr-tests/__snapshots__/top-navigation/nav-logo-pressed--desktop.png +0 -0
- package/src/ui/top-nav-items/__tests__/informational-vr-tests/top-navigation.vr.tsx +18 -0
- package/src/ui/top-nav-items/__tests__/unit/top-nav-items.test.tsx +1 -1
- package/src/ui/top-nav-items/__tests__/vr-tests/__snapshots__/top-navigation/theming-is-enabled--desktop--platform-team25-app-icon-tiles-true.png +0 -0
- package/src/ui/top-nav-items/__tests__/vr-tests/__snapshots__/top-navigation/top-navigation-example--desktop--platform-team25-app-icon-tiles-true.png +0 -0
- package/src/ui/top-nav-items/nav-logo/app-logo.tsx +213 -0
- package/src/ui/top-nav-items/nav-logo/logo-renderer.tsx +53 -0
- package/src/ui/top-nav-items/{nav-logo.tsx → nav-logo/nav-logo.tsx} +12 -43
- package/src/ui/top-nav-items/themed/get-custom-theme-styles.tsx +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# @atlassian/navigation-system
|
|
2
2
|
|
|
3
|
+
## 0.168.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#178562](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/178562)
|
|
8
|
+
[`ea3a94fc3c6b0`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/ea3a94fc3c6b0) -
|
|
9
|
+
Adds new AppNavLogo component for use with @atlaskit/logo that displays UI text next to the icon
|
|
10
|
+
at wider screen widths, rather than rendering a unique logo component.
|
|
11
|
+
|
|
3
12
|
## 0.167.3
|
|
4
13
|
|
|
5
14
|
### Patch Changes
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../../../tsconfig.entry-points.volt.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"declaration": true,
|
|
5
|
+
"target": "es5",
|
|
6
|
+
"outDir": "../../../../../volt/tsDist/@atlaskit__navigation-system/app",
|
|
7
|
+
"rootDir": "../",
|
|
8
|
+
"composite": true
|
|
9
|
+
},
|
|
10
|
+
"include": [
|
|
11
|
+
"../src/**/*.ts",
|
|
12
|
+
"../src/**/*.tsx"
|
|
13
|
+
],
|
|
14
|
+
"exclude": [
|
|
15
|
+
"../src/**/__tests__/*",
|
|
16
|
+
"../src/**/*.test.*",
|
|
17
|
+
"../src/**/test.*"
|
|
18
|
+
],
|
|
19
|
+
"references": [
|
|
20
|
+
{
|
|
21
|
+
"path": "../../../analytics/analytics-next/afm-volt/tsconfig.json"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"path": "../../avatar/afm-volt/tsconfig.json"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"path": "../../button/afm-volt/tsconfig.json"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"path": "../../css/afm-volt/tsconfig.json"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"path": "../../ds-lib/afm-volt/tsconfig.json"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"path": "../../icon/afm-volt/tsconfig.json"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"path": "../../layering/afm-volt/tsconfig.json"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"path": "../../logo/afm-volt/tsconfig.json"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"path": "../../../platform/feature-flags/afm-volt/tsconfig.json"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"path": "../../popup/afm-volt/tsconfig.json"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"path": "../../../pragmatic-drag-and-drop/core/afm-volt/tsconfig.json"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"path": "../../../pragmatic-drag-and-drop/hitbox/afm-volt/tsconfig.json"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"path": "../../../pragmatic-drag-and-drop/react-drop-indicator/afm-volt/tsconfig.json"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"path": "../../primitives/afm-volt/tsconfig.json"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"path": "../../../navigation/temp-nav-app-icons/afm-volt/tsconfig.json"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"path": "../../tokens/afm-volt/tsconfig.json"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"path": "../../tooltip/afm-volt/tsconfig.json"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"path": "../../visually-hidden/afm-volt/tsconfig.json"
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
}
|
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "AppLogo", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _appLogo.AppLogo;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
6
12
|
Object.defineProperty(exports, "AppSwitcher", {
|
|
7
13
|
enumerable: true,
|
|
8
14
|
get: function get() {
|
|
@@ -82,7 +88,8 @@ Object.defineProperty(exports, "Settings", {
|
|
|
82
88
|
}
|
|
83
89
|
});
|
|
84
90
|
var _appSwitcher = require("../../ui/top-nav-items/app-switcher");
|
|
85
|
-
var _navLogo = require("../../ui/top-nav-items/nav-logo");
|
|
91
|
+
var _navLogo = require("../../ui/top-nav-items/nav-logo/nav-logo");
|
|
92
|
+
var _appLogo = require("../../ui/top-nav-items/nav-logo/app-logo");
|
|
86
93
|
var _search = require("../../ui/top-nav-items/search");
|
|
87
94
|
var _chatButton = require("../../ui/top-nav-items/chat-button");
|
|
88
95
|
var _endItem = require("../../ui/top-nav-items/end-item");
|
package/dist/cjs/index.js
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "AppLogo", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _appLogo.AppLogo;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
6
12
|
Object.defineProperty(exports, "AppSwitcher", {
|
|
7
13
|
enumerable: true,
|
|
8
14
|
get: function get() {
|
|
@@ -313,7 +319,8 @@ var _panelSplitter = require("./ui/page-layout/panel-splitter/panel-splitter");
|
|
|
313
319
|
var _provider = require("./ui/page-layout/panel-splitter/provider");
|
|
314
320
|
var _topNavStart = require("./ui/page-layout/top-nav/top-nav-start");
|
|
315
321
|
var _appSwitcher = require("./ui/top-nav-items/app-switcher");
|
|
316
|
-
var _navLogo = require("./ui/top-nav-items/nav-logo");
|
|
322
|
+
var _navLogo = require("./ui/top-nav-items/nav-logo/nav-logo");
|
|
323
|
+
var _appLogo = require("./ui/top-nav-items/nav-logo/app-logo");
|
|
317
324
|
var _topNavMiddle = require("./ui/page-layout/top-nav/top-nav-middle");
|
|
318
325
|
var _search = require("./ui/top-nav-items/search");
|
|
319
326
|
var _chatButton = require("./ui/top-nav-items/chat-button");
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
._2rko19bv{border-radius:10px}
|
|
3
|
+
._18zr1b66{padding-inline:var(--ds-space-050,4px)}._18m915vq{overflow-y:hidden}
|
|
4
|
+
._1bsb1ris{width:max-content}
|
|
5
|
+
._1e0c1txw{display:flex}
|
|
6
|
+
._1e0cglyw{display:none}
|
|
7
|
+
._1o9zidpf{flex-shrink:0}
|
|
8
|
+
._1reo15vq{overflow-x:hidden}
|
|
9
|
+
._1toh1r31._1toh1r31{text-decoration-color:currentColor}
|
|
10
|
+
._1w901kw7._1w901kw7{color:inherit}
|
|
11
|
+
._4cvr1h6o{align-items:center}
|
|
12
|
+
._4t3izwfg{height:2pc}
|
|
13
|
+
._5jyqglyw._5jyqglyw{text-decoration-line:none}
|
|
14
|
+
._ahbq1b66{margin-inline-start:var(--ds-space-050,4px)}
|
|
15
|
+
._mrqmnqa1._mrqmnqa1{text-decoration-style:solid}
|
|
16
|
+
._p12f1tcg{max-width:24px}
|
|
17
|
+
._p12fnklw{max-width:20pc}
|
|
18
|
+
._uiztglyw{-webkit-user-select:none;-ms-user-select:none;user-select:none}
|
|
19
|
+
._y4tiv77o{padding-inline-end:var(--ds-space-025,2px)}
|
|
20
|
+
._irr3166n:hover{background-color:var(--ds-background-neutral-subtle-hovered,#091e420f)}
|
|
21
|
+
._irr31rps:hover{background-color:var(--ds-top-bar-button-background-hovered)}
|
|
22
|
+
._1di61wwy:active{background-color:var(--ds-background-neutral-subtle-pressed,#091e4224)!important}
|
|
23
|
+
._1di6yhlj:active{background-color:var(--ds-top-bar-button-background-pressed)!important}
|
|
24
|
+
@media (min-width:64rem){._10y418uv._10y418uv{display:initial}}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/* app-logo.tsx generated by @compiled/babel-plugin v0.36.1 */
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
Object.defineProperty(exports, "__esModule", {
|
|
7
|
+
value: true
|
|
8
|
+
});
|
|
9
|
+
exports.AppLogo = void 0;
|
|
10
|
+
require("./app-logo.compiled.css");
|
|
11
|
+
var _runtime = require("@compiled/react/runtime");
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
+
var _react2 = require("@compiled/react");
|
|
14
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
15
|
+
var _primitives = require("@atlaskit/primitives");
|
|
16
|
+
var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
|
|
17
|
+
var _hasCustomThemeContext = require("../themed/has-custom-theme-context");
|
|
18
|
+
var _logoRenderer = require("./logo-renderer");
|
|
19
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
20
|
+
var anchorStyles = {
|
|
21
|
+
root: "_2rko19bv _1e0c1txw _4cvr1h6o _4t3izwfg _1o9zidpf _1toh1r31 _5jyqglyw _mrqmnqa1 _1w901kw7",
|
|
22
|
+
newMargin: "_ahbq1b66",
|
|
23
|
+
newInteractionStates: "_irr3166n _1di61wwy",
|
|
24
|
+
newInteractionStatesCustomTheming: "_irr31rps _1di6yhlj"
|
|
25
|
+
};
|
|
26
|
+
var logoWrapperStyles = {
|
|
27
|
+
root: "_18zr1b66"
|
|
28
|
+
};
|
|
29
|
+
var iconContainerStyles = {
|
|
30
|
+
root: "_1reo15vq _18m915vq _1e0c1txw _p12f1tcg"
|
|
31
|
+
};
|
|
32
|
+
var logoTextStyles = {
|
|
33
|
+
root: "_1bsb1ris _p12fnklw _uiztglyw _y4tiv77o _1e0cglyw _10y418uv"
|
|
34
|
+
};
|
|
35
|
+
function isTextClamped(element) {
|
|
36
|
+
// Checking for vertical height rather than horizontal height.
|
|
37
|
+
// When text is "clamped", it's technically being clamped vertically! 🤯
|
|
38
|
+
return element.scrollHeight > element.clientHeight;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* __App logo__
|
|
43
|
+
*
|
|
44
|
+
* The app logo for the top navigation.
|
|
45
|
+
*
|
|
46
|
+
* To provide a responsive experience, label text will render next to an icon at larger viewports.
|
|
47
|
+
*/
|
|
48
|
+
var AppLogo = exports.AppLogo = function AppLogo(_ref) {
|
|
49
|
+
var name = _ref.name,
|
|
50
|
+
label = _ref.label,
|
|
51
|
+
href = _ref.href,
|
|
52
|
+
icon = _ref.icon,
|
|
53
|
+
onClick = _ref.onClick;
|
|
54
|
+
var ref = (0, _react.useRef)(null);
|
|
55
|
+
var nameRef = (0, _react.useRef)(null);
|
|
56
|
+
var hasCustomTheme = (0, _hasCustomThemeContext.useHasCustomTheme)();
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Show the tooltip if the name is truncated
|
|
60
|
+
*/
|
|
61
|
+
var canTooltipAppear = (0, _react.useCallback)(function () {
|
|
62
|
+
var text = nameRef.current;
|
|
63
|
+
return Boolean(text && isTextClamped(text));
|
|
64
|
+
}, []);
|
|
65
|
+
return /*#__PURE__*/_react.default.createElement(_primitives.Anchor, {
|
|
66
|
+
ref: ref,
|
|
67
|
+
"aria-label": label,
|
|
68
|
+
href: href
|
|
69
|
+
// @ts-expect-error - non-standard values for `borderRadius` and the custom theming interaction states
|
|
70
|
+
// eslint-disable-next-line @compiled/no-suppress-xcss
|
|
71
|
+
,
|
|
72
|
+
xcss: (0, _react2.cx)(anchorStyles.root, (0, _platformFeatureFlags.fg)('platform_design_system_nav_logo_interaction_states') && anchorStyles.newMargin, (0, _platformFeatureFlags.fg)('platform_design_system_nav_logo_interaction_states') && (hasCustomTheme ? anchorStyles.newInteractionStatesCustomTheming : anchorStyles.newInteractionStates)),
|
|
73
|
+
onClick: onClick
|
|
74
|
+
}, /*#__PURE__*/_react.default.createElement(_primitives.Inline, {
|
|
75
|
+
space: "space.075",
|
|
76
|
+
alignBlock: "center",
|
|
77
|
+
xcss: logoWrapperStyles.root,
|
|
78
|
+
"aria-label": label
|
|
79
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
80
|
+
className: (0, _runtime.ax)([iconContainerStyles.root])
|
|
81
|
+
}, /*#__PURE__*/_react.default.createElement(_logoRenderer.LogoRenderer, {
|
|
82
|
+
logoOrIcon: icon
|
|
83
|
+
})), /*#__PURE__*/_react.default.createElement("span", {
|
|
84
|
+
className: (0, _runtime.ax)([logoTextStyles.root])
|
|
85
|
+
}, /*#__PURE__*/_react.default.createElement(_tooltip.default, {
|
|
86
|
+
content: name,
|
|
87
|
+
position: "bottom",
|
|
88
|
+
ignoreTooltipPointerEvents: true,
|
|
89
|
+
hideTooltipOnMouseDown: true
|
|
90
|
+
// We don't need a duplicate hidden element containing tooltip content
|
|
91
|
+
// as the content of the tooltip matches what is rendered in the nav item.
|
|
92
|
+
,
|
|
93
|
+
isScreenReaderAnnouncementDisabled: true,
|
|
94
|
+
canAppear: canTooltipAppear
|
|
95
|
+
}, function (tooltipProps) {
|
|
96
|
+
return /*#__PURE__*/_react.default.createElement("span", tooltipProps, /*#__PURE__*/_react.default.createElement(_primitives.Text, {
|
|
97
|
+
"aria-hidden": true,
|
|
98
|
+
color: "inherit",
|
|
99
|
+
weight: "semibold",
|
|
100
|
+
maxLines: 1,
|
|
101
|
+
ref: nameRef
|
|
102
|
+
}, name));
|
|
103
|
+
}))));
|
|
104
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* logo-renderer.tsx generated by @compiled/babel-plugin v0.36.1 */
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.LogoRenderer = LogoRenderer;
|
|
9
|
+
exports.themedLogoText = exports.themedLogoIcon = void 0;
|
|
10
|
+
var _runtime = require("@compiled/react/runtime");
|
|
11
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
13
|
+
var _hasCustomThemeContext = require("../themed/has-custom-theme-context");
|
|
14
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
15
|
+
var themedLogoIcon = exports.themedLogoIcon = '--ds-top-bar-logo-icon';
|
|
16
|
+
var themedLogoText = exports.themedLogoText = '--ds-top-bar-logo-text';
|
|
17
|
+
function LogoRenderer(_ref) {
|
|
18
|
+
var logoOrIcon = _ref.logoOrIcon;
|
|
19
|
+
return (0, _platformFeatureFlags.fg)('jiv-20710-fix-nav-rerender') ? /*#__PURE__*/_react.default.createElement(LogoRendererMemo, {
|
|
20
|
+
logoOrIcon: logoOrIcon
|
|
21
|
+
}) : /*#__PURE__*/_react.default.createElement(LogoRendererNoMemo, {
|
|
22
|
+
logoOrIcon: logoOrIcon
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
var LogoRendererMemo = /*#__PURE__*/(0, _react.memo)(LogoRendererNoMemo);
|
|
26
|
+
function LogoRendererNoMemo(_ref2) {
|
|
27
|
+
var LogoOrIcon = _ref2.logoOrIcon;
|
|
28
|
+
var hasCustomTheme = (0, _hasCustomThemeContext.useHasCustomTheme)();
|
|
29
|
+
if (hasCustomTheme) {
|
|
30
|
+
return /*#__PURE__*/_react.default.createElement(LogoOrIcon, {
|
|
31
|
+
size: "small",
|
|
32
|
+
label: "",
|
|
33
|
+
iconColor: "var(".concat(themedLogoIcon, ")"),
|
|
34
|
+
textColor: "var(".concat(themedLogoText, ")")
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return /*#__PURE__*/_react.default.createElement(LogoOrIcon, {
|
|
38
|
+
size: "small",
|
|
39
|
+
label: "",
|
|
40
|
+
appearance: "brand"
|
|
41
|
+
});
|
|
42
|
+
}
|
|
@@ -12,13 +12,14 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
12
12
|
var _react2 = require("@compiled/react");
|
|
13
13
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
14
14
|
var _primitives = require("@atlaskit/primitives");
|
|
15
|
-
var _hasCustomThemeContext = require("
|
|
15
|
+
var _hasCustomThemeContext = require("../themed/has-custom-theme-context");
|
|
16
|
+
var _logoRenderer = require("./logo-renderer");
|
|
16
17
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
17
18
|
var themedLogoIcon = exports.themedLogoIcon = '--ds-top-bar-logo-icon';
|
|
18
19
|
var themedLogoText = exports.themedLogoText = '--ds-top-bar-logo-text';
|
|
19
20
|
var anchorStyles = {
|
|
20
21
|
root: "_2rkoiti9 _1e0c1txw _4cvr1h6o _4t3izwfg",
|
|
21
|
-
|
|
22
|
+
customLogoBorderRadius: "_2rko1l7b",
|
|
22
23
|
newMargin: "_ahbq1b66",
|
|
23
24
|
newInteractionStates: "_irr3166n _1di61wwy",
|
|
24
25
|
newInteractionStatesCustomTheming: "_irr31rps _1di6yhlj"
|
|
@@ -37,7 +38,7 @@ var logoContainerStyles = {
|
|
|
37
38
|
/**
|
|
38
39
|
* __Nav logo__
|
|
39
40
|
*
|
|
40
|
-
*
|
|
41
|
+
* Custom image logo for the top navigation.
|
|
41
42
|
*
|
|
42
43
|
* To provide a responsive experience, it requires both a logo and an icon component.
|
|
43
44
|
* The logo component will be used for large viewports, and the icon component will be used for small viewports.
|
|
@@ -87,41 +88,15 @@ var NavLogo = exports.NavLogo = function NavLogo(_ref) {
|
|
|
87
88
|
// @ts-expect-error - non-standard values for `borderRadius` and the custom theming interaction states
|
|
88
89
|
// eslint-disable-next-line @compiled/no-suppress-xcss
|
|
89
90
|
,
|
|
90
|
-
xcss: (0, _react2.cx)(anchorStyles.root, (0, _platformFeatureFlags.fg)('platform_design_system_nav_logo_interaction_states') && anchorStyles.
|
|
91
|
+
xcss: (0, _react2.cx)(anchorStyles.root, (0, _platformFeatureFlags.fg)('platform_design_system_nav_logo_interaction_states') && anchorStyles.customLogoBorderRadius, (0, _platformFeatureFlags.fg)('platform_design_system_nav_logo_interaction_states') && anchorStyles.newMargin, (0, _platformFeatureFlags.fg)('platform_design_system_nav_logo_interaction_states') && (hasCustomTheme ? anchorStyles.newInteractionStatesCustomTheming : anchorStyles.newInteractionStates)),
|
|
91
92
|
onClick: onClick
|
|
92
93
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
93
94
|
className: (0, _runtime.ax)([sharedIconOrLogoContainerStyles.root, iconContainerStyles.root, (0, _platformFeatureFlags.fg)('platform-team25-app-icon-tiles') && sharedIconOrLogoContainerStyles.appIconTilePaddingFlagged])
|
|
94
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
95
|
+
}, /*#__PURE__*/_react.default.createElement(_logoRenderer.LogoRenderer, {
|
|
95
96
|
logoOrIcon: icon
|
|
96
97
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
97
98
|
className: (0, _runtime.ax)([sharedIconOrLogoContainerStyles.root, logoContainerStyles.root, (0, _platformFeatureFlags.fg)('platform-team25-app-icon-tiles') && sharedIconOrLogoContainerStyles.appIconTilePaddingFlagged])
|
|
98
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
99
|
+
}, /*#__PURE__*/_react.default.createElement(_logoRenderer.LogoRenderer, {
|
|
99
100
|
logoOrIcon: logo
|
|
100
101
|
})));
|
|
101
|
-
};
|
|
102
|
-
function NavLogoRenderer(_ref2) {
|
|
103
|
-
var logoOrIcon = _ref2.logoOrIcon;
|
|
104
|
-
return (0, _platformFeatureFlags.fg)('jiv-20710-fix-nav-rerender') ? /*#__PURE__*/_react.default.createElement(NavLogoRendererMemo, {
|
|
105
|
-
logoOrIcon: logoOrIcon
|
|
106
|
-
}) : /*#__PURE__*/_react.default.createElement(NavLogoRendererNoMemo, {
|
|
107
|
-
logoOrIcon: logoOrIcon
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
var NavLogoRendererMemo = /*#__PURE__*/(0, _react.memo)(NavLogoRendererNoMemo);
|
|
111
|
-
function NavLogoRendererNoMemo(_ref3) {
|
|
112
|
-
var LogoOrIcon = _ref3.logoOrIcon;
|
|
113
|
-
var hasCustomTheme = (0, _hasCustomThemeContext.useHasCustomTheme)();
|
|
114
|
-
if (hasCustomTheme) {
|
|
115
|
-
return /*#__PURE__*/_react.default.createElement(LogoOrIcon, {
|
|
116
|
-
size: "small",
|
|
117
|
-
label: "",
|
|
118
|
-
iconColor: "var(".concat(themedLogoIcon, ")"),
|
|
119
|
-
textColor: "var(".concat(themedLogoText, ")")
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
return /*#__PURE__*/_react.default.createElement(LogoOrIcon, {
|
|
123
|
-
size: "small",
|
|
124
|
-
label: "",
|
|
125
|
-
appearance: "brand"
|
|
126
|
-
});
|
|
127
|
-
}
|
|
102
|
+
};
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.getCustomThemeStyles = getCustomThemeStyles;
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
-
var _navLogo = require("../nav-logo");
|
|
9
|
+
var _navLogo = require("../nav-logo/nav-logo");
|
|
10
10
|
var _button = require("./button");
|
|
11
11
|
var _colorUtils = require("./color-utils");
|
|
12
12
|
var _hex = require("./color-utils/formats/hex");
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { AppSwitcher } from '../../ui/top-nav-items/app-switcher';
|
|
2
|
-
export { NavLogo } from '../../ui/top-nav-items/nav-logo';
|
|
2
|
+
export { NavLogo } from '../../ui/top-nav-items/nav-logo/nav-logo';
|
|
3
|
+
export { AppLogo } from '../../ui/top-nav-items/nav-logo/app-logo';
|
|
3
4
|
export { Search } from '../../ui/top-nav-items/search';
|
|
4
5
|
export { ChatButton } from '../../ui/top-nav-items/chat-button';
|
|
5
6
|
export { EndItem } from '../../ui/top-nav-items/end-item';
|
package/dist/es2019/index.js
CHANGED
|
@@ -32,7 +32,8 @@ export { PanelSplitter } from './ui/page-layout/panel-splitter/panel-splitter';
|
|
|
32
32
|
export { PanelSplitterProvider } from './ui/page-layout/panel-splitter/provider';
|
|
33
33
|
export { TopNavStart } from './ui/page-layout/top-nav/top-nav-start';
|
|
34
34
|
export { AppSwitcher } from './ui/top-nav-items/app-switcher';
|
|
35
|
-
export { NavLogo } from './ui/top-nav-items/nav-logo';
|
|
35
|
+
export { NavLogo } from './ui/top-nav-items/nav-logo/nav-logo';
|
|
36
|
+
export { AppLogo } from './ui/top-nav-items/nav-logo/app-logo';
|
|
36
37
|
export { TopNavMiddle } from './ui/page-layout/top-nav/top-nav-middle';
|
|
37
38
|
export { Search } from './ui/top-nav-items/search';
|
|
38
39
|
export { ChatButton } from './ui/top-nav-items/chat-button';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
._2rko19bv{border-radius:10px}
|
|
3
|
+
._18zr1b66{padding-inline:var(--ds-space-050,4px)}._18m915vq{overflow-y:hidden}
|
|
4
|
+
._1bsb1ris{width:max-content}
|
|
5
|
+
._1e0c1txw{display:flex}
|
|
6
|
+
._1e0cglyw{display:none}
|
|
7
|
+
._1o9zidpf{flex-shrink:0}
|
|
8
|
+
._1reo15vq{overflow-x:hidden}
|
|
9
|
+
._1toh1r31._1toh1r31{text-decoration-color:currentColor}
|
|
10
|
+
._1w901kw7._1w901kw7{color:inherit}
|
|
11
|
+
._4cvr1h6o{align-items:center}
|
|
12
|
+
._4t3izwfg{height:2pc}
|
|
13
|
+
._5jyqglyw._5jyqglyw{text-decoration-line:none}
|
|
14
|
+
._ahbq1b66{margin-inline-start:var(--ds-space-050,4px)}
|
|
15
|
+
._mrqmnqa1._mrqmnqa1{text-decoration-style:solid}
|
|
16
|
+
._p12f1tcg{max-width:24px}
|
|
17
|
+
._p12fnklw{max-width:20pc}
|
|
18
|
+
._uiztglyw{-webkit-user-select:none;-ms-user-select:none;user-select:none}
|
|
19
|
+
._y4tiv77o{padding-inline-end:var(--ds-space-025,2px)}
|
|
20
|
+
._irr3166n:hover{background-color:var(--ds-background-neutral-subtle-hovered,#091e420f)}
|
|
21
|
+
._irr31rps:hover{background-color:var(--ds-top-bar-button-background-hovered)}
|
|
22
|
+
._1di61wwy:active{background-color:var(--ds-background-neutral-subtle-pressed,#091e4224)!important}
|
|
23
|
+
._1di6yhlj:active{background-color:var(--ds-top-bar-button-background-pressed)!important}
|
|
24
|
+
@media (min-width:64rem){._10y418uv._10y418uv{display:initial}}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/* app-logo.tsx generated by @compiled/babel-plugin v0.36.1 */
|
|
2
|
+
import "./app-logo.compiled.css";
|
|
3
|
+
import { ax, ix } from "@compiled/react/runtime";
|
|
4
|
+
import React, { useCallback, useRef } from 'react';
|
|
5
|
+
import { cx } from '@compiled/react';
|
|
6
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
7
|
+
import { Anchor, Inline, Text } from '@atlaskit/primitives';
|
|
8
|
+
import Tooltip from '@atlaskit/tooltip';
|
|
9
|
+
import { useHasCustomTheme } from '../themed/has-custom-theme-context';
|
|
10
|
+
import { LogoRenderer } from './logo-renderer';
|
|
11
|
+
const anchorStyles = {
|
|
12
|
+
root: "_2rko19bv _1e0c1txw _4cvr1h6o _4t3izwfg _1o9zidpf _1toh1r31 _5jyqglyw _mrqmnqa1 _1w901kw7",
|
|
13
|
+
newMargin: "_ahbq1b66",
|
|
14
|
+
newInteractionStates: "_irr3166n _1di61wwy",
|
|
15
|
+
newInteractionStatesCustomTheming: "_irr31rps _1di6yhlj"
|
|
16
|
+
};
|
|
17
|
+
const logoWrapperStyles = {
|
|
18
|
+
root: "_18zr1b66"
|
|
19
|
+
};
|
|
20
|
+
const iconContainerStyles = {
|
|
21
|
+
root: "_1reo15vq _18m915vq _1e0c1txw _p12f1tcg"
|
|
22
|
+
};
|
|
23
|
+
const logoTextStyles = {
|
|
24
|
+
root: "_1bsb1ris _p12fnklw _uiztglyw _y4tiv77o _1e0cglyw _10y418uv"
|
|
25
|
+
};
|
|
26
|
+
function isTextClamped(element) {
|
|
27
|
+
// Checking for vertical height rather than horizontal height.
|
|
28
|
+
// When text is "clamped", it's technically being clamped vertically! 🤯
|
|
29
|
+
return element.scrollHeight > element.clientHeight;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* __App logo__
|
|
34
|
+
*
|
|
35
|
+
* The app logo for the top navigation.
|
|
36
|
+
*
|
|
37
|
+
* To provide a responsive experience, label text will render next to an icon at larger viewports.
|
|
38
|
+
*/
|
|
39
|
+
export const AppLogo = ({
|
|
40
|
+
name,
|
|
41
|
+
label,
|
|
42
|
+
href,
|
|
43
|
+
icon,
|
|
44
|
+
onClick
|
|
45
|
+
}) => {
|
|
46
|
+
const ref = useRef(null);
|
|
47
|
+
const nameRef = useRef(null);
|
|
48
|
+
const hasCustomTheme = useHasCustomTheme();
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Show the tooltip if the name is truncated
|
|
52
|
+
*/
|
|
53
|
+
const canTooltipAppear = useCallback(() => {
|
|
54
|
+
const text = nameRef.current;
|
|
55
|
+
return Boolean(text && isTextClamped(text));
|
|
56
|
+
}, []);
|
|
57
|
+
return /*#__PURE__*/React.createElement(Anchor, {
|
|
58
|
+
ref: ref,
|
|
59
|
+
"aria-label": label,
|
|
60
|
+
href: href
|
|
61
|
+
// @ts-expect-error - non-standard values for `borderRadius` and the custom theming interaction states
|
|
62
|
+
// eslint-disable-next-line @compiled/no-suppress-xcss
|
|
63
|
+
,
|
|
64
|
+
xcss: cx(anchorStyles.root, fg('platform_design_system_nav_logo_interaction_states') && anchorStyles.newMargin, fg('platform_design_system_nav_logo_interaction_states') && (hasCustomTheme ? anchorStyles.newInteractionStatesCustomTheming : anchorStyles.newInteractionStates)),
|
|
65
|
+
onClick: onClick
|
|
66
|
+
}, /*#__PURE__*/React.createElement(Inline, {
|
|
67
|
+
space: "space.075",
|
|
68
|
+
alignBlock: "center",
|
|
69
|
+
xcss: logoWrapperStyles.root,
|
|
70
|
+
"aria-label": label
|
|
71
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
72
|
+
className: ax([iconContainerStyles.root])
|
|
73
|
+
}, /*#__PURE__*/React.createElement(LogoRenderer, {
|
|
74
|
+
logoOrIcon: icon
|
|
75
|
+
})), /*#__PURE__*/React.createElement("span", {
|
|
76
|
+
className: ax([logoTextStyles.root])
|
|
77
|
+
}, /*#__PURE__*/React.createElement(Tooltip, {
|
|
78
|
+
content: name,
|
|
79
|
+
position: "bottom",
|
|
80
|
+
ignoreTooltipPointerEvents: true,
|
|
81
|
+
hideTooltipOnMouseDown: true
|
|
82
|
+
// We don't need a duplicate hidden element containing tooltip content
|
|
83
|
+
// as the content of the tooltip matches what is rendered in the nav item.
|
|
84
|
+
,
|
|
85
|
+
isScreenReaderAnnouncementDisabled: true,
|
|
86
|
+
canAppear: canTooltipAppear
|
|
87
|
+
}, tooltipProps => /*#__PURE__*/React.createElement("span", tooltipProps, /*#__PURE__*/React.createElement(Text, {
|
|
88
|
+
"aria-hidden": true,
|
|
89
|
+
color: "inherit",
|
|
90
|
+
weight: "semibold",
|
|
91
|
+
maxLines: 1,
|
|
92
|
+
ref: nameRef
|
|
93
|
+
}, name))))));
|
|
94
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/* logo-renderer.tsx generated by @compiled/babel-plugin v0.36.1 */
|
|
2
|
+
import { ax, ix } from "@compiled/react/runtime";
|
|
3
|
+
import React, { memo } from 'react';
|
|
4
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
5
|
+
import { useHasCustomTheme } from '../themed/has-custom-theme-context';
|
|
6
|
+
export const themedLogoIcon = '--ds-top-bar-logo-icon';
|
|
7
|
+
export const themedLogoText = '--ds-top-bar-logo-text';
|
|
8
|
+
export function LogoRenderer({
|
|
9
|
+
logoOrIcon
|
|
10
|
+
}) {
|
|
11
|
+
return fg('jiv-20710-fix-nav-rerender') ? /*#__PURE__*/React.createElement(LogoRendererMemo, {
|
|
12
|
+
logoOrIcon: logoOrIcon
|
|
13
|
+
}) : /*#__PURE__*/React.createElement(LogoRendererNoMemo, {
|
|
14
|
+
logoOrIcon: logoOrIcon
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
const LogoRendererMemo = /*#__PURE__*/memo(LogoRendererNoMemo);
|
|
18
|
+
function LogoRendererNoMemo({
|
|
19
|
+
logoOrIcon: LogoOrIcon
|
|
20
|
+
}) {
|
|
21
|
+
const hasCustomTheme = useHasCustomTheme();
|
|
22
|
+
if (hasCustomTheme) {
|
|
23
|
+
return /*#__PURE__*/React.createElement(LogoOrIcon, {
|
|
24
|
+
size: "small",
|
|
25
|
+
label: "",
|
|
26
|
+
iconColor: `var(${themedLogoIcon})`,
|
|
27
|
+
textColor: `var(${themedLogoText})`
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return /*#__PURE__*/React.createElement(LogoOrIcon, {
|
|
31
|
+
size: "small",
|
|
32
|
+
label: "",
|
|
33
|
+
appearance: "brand"
|
|
34
|
+
});
|
|
35
|
+
}
|