@atlaskit/navigation-system 10.11.0 → 10.12.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 CHANGED
@@ -1,5 +1,27 @@
1
1
  # @atlassian/navigation-system
2
2
 
3
+ ## 10.12.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`5bca82622e866`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/5bca82622e866) -
8
+ [ux] `@atlaskit/navigation-system`: the side nav expand, collapse and flyout animations now use
9
+ the new Side Nav motion tokens (CSS keyframe animations) instead of `transform` transitions with
10
+ `@starting-style`, behind the `platform-dst-motion-uplift-sidenav` feature gate. When the gate is
11
+ off, the animations are unchanged.
12
+
13
+ ## 10.11.1
14
+
15
+ ### Patch Changes
16
+
17
+ - [`a4d2562b27fc6`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a4d2562b27fc6) -
18
+ Cleanup feature gate `platform_dst_nav4_side_nav_grid_area_fix`. The side nav's mobile `grid-area`
19
+ is now always scoped to `@media not (min-width: 64rem)`, the exact inverse of its desktop rule, so
20
+ the two can never both match at a given viewport and the side nav can no longer render in the
21
+ wrong grid area when Compiled's atomic rule ordering is non-deterministic (local development /
22
+ streaming SSR).
23
+ - Updated dependencies
24
+
3
25
  ## 10.11.0
4
26
 
5
27
  ### Minor Changes
@@ -6,6 +6,7 @@ props:
6
6
  packageName: '@atlaskit/navigation-system/top-nav-items'
7
7
  exports:
8
8
  - AppSwitcher
9
+ - AppLogo
9
10
  - CustomLogo
10
11
  - Notifications
11
12
  - Profile
@@ -22,13 +23,15 @@ props:
22
23
 
23
24
  ### AppSwitcher
24
25
 
25
- The trigger button for the app switcher.
26
+ The trigger button for the app switcher. Use the optional `icon` prop to replace the default app
27
+ switcher icon with a custom visual, such as a product logo.
26
28
 
27
29
  <TSMorphProps exportName="AppSwitcher" packageName="@atlaskit/navigation-system/top-nav-items" />
28
30
 
29
31
  ### AppLogo
30
32
 
31
- The app logo for the top navigation, when an app logo from `@atlaskit/logo` is used.
33
+ The app logo for the top navigation, when an app logo from `@atlaskit/logo` is used. Use the
34
+ optional `secondaryName` prop to display supporting context below the app name in wider viewports.
32
35
 
33
36
  <TSMorphProps exportName="AppLogo" packageName="@atlaskit/navigation-system/top-nav-items" />
34
37
 
@@ -11,6 +11,8 @@ import { TopNavStartToggleExample } from '../../examples/constellation/top-nav-i
11
11
  import { TopNavMiddleLayoutExample } from '../../examples/constellation/top-nav-items/top-nav-middle';
12
12
  import { TopNavEndLayoutExample } from '../../examples/constellation/top-nav-items/top-nav-end';
13
13
  import { AppLogoExample } from '../../examples/constellation/top-nav-items/app-logo';
14
+ import { AppLogoSecondaryNameExample } from '../../examples/constellation/top-nav-items/app-logo-secondary-name';
15
+ import { CustomAppSwitcherExample } from '../../examples/constellation/top-nav-items/custom-app-switcher';
14
16
  import { CustomLogoExample } from '../../examples/constellation/top-nav-items/custom-logo';
15
17
  import { CustomThemingLogoExample } from '../../examples/constellation/top-nav-items/custom-theming--logo';
16
18
  import { CustomThemingSearchExample } from '../../examples/constellation/top-nav-items/custom-theming--search';
@@ -45,6 +47,15 @@ landing page:
45
47
 
46
48
  <Example Component={TopNavStartLayoutExample} />
47
49
 
50
+ ### App switcher
51
+
52
+ App switcher opens the app switcher menu. By default, it uses the Atlassian app switcher icon.
53
+
54
+ Use the optional `icon` prop to replace the default icon with a custom visual, such as a product
55
+ logo. Continue to provide a meaningful `label` so the custom visual has an accessible name.
56
+
57
+ <Example Component={CustomAppSwitcherExample} />
58
+
48
59
  ### Side nav toggle button
49
60
 
50
61
  The side nav toggle button must be passed to `TopNavStart` through the `sideNavToggleButton` prop,
@@ -69,6 +80,14 @@ See the [responsive section](#responsive) for more information.
69
80
 
70
81
  <Example Component={AppLogoExample} />
71
82
 
83
+ #### Secondary name
84
+
85
+ Use the optional `secondaryName` prop to add supporting context below the app name, such as the
86
+ current experience or workspace. The supporting context is displayed in wider viewports and is
87
+ hidden with the app name at `s` breakpoints and below (less than 1024px).
88
+
89
+ <Example Component={AppLogoSecondaryNameExample} />
90
+
72
91
  ### Custom logo
73
92
 
74
93
  Custom logo provides a container for custom logo images with the following constraints:
@@ -1,4 +1,3 @@
1
- ._nd5l1b6c{grid-area:main/aside/aside/aside}
2
1
  ._191wglyw{border-inline-start:none}
3
2
  ._t51zglyw{border-inline-end:none}._152timx3{inset-block-start:calc(var(--n_bnrM, 0px) + var(--n_tNvM, 0px))}
4
3
  ._15yekb7n{--animation-direction:1}
@@ -7,22 +6,26 @@
7
6
  ._1bsb1ego{width:min(90%,20pc)}
8
7
  ._1e0c1txw{display:flex}
9
8
  ._1e0cglyw{display:none}
9
+ ._1p2s58oa{--exit-animation:var(--ds-sidenav-exit-left,200ms cubic-bezier(0.6,0,0.8,0.6) SlideOut100PercentLeft)}
10
10
  ._1pbycs5v{z-index:2}
11
11
  ._1pbyegat{z-index:4}
12
12
  ._2lx21bp4{flex-direction:column}
13
13
  ._4t3i1osq{height:100%}
14
14
  ._4t3ieqxy{height:calc(100vh - var(--n_bnrM, 0px) - var(--n_tNvM, 0px))}
15
15
  ._bfhk1bhr{background-color:var(--ds-surface-overlay,#fff)}
16
+ ._cjprp6j8{--enter-animation:var(--ds-sidenav-enter-left,250ms cubic-bezier(0,0.4,0,1) SlideIn100PercentLeft)}
16
17
  ._kqsw1if8{position:sticky}
17
18
  ._kqsw1n9t{position:fixed}
18
19
  ._t9ectl5p{transform:translateX(calc(var(--n_snvRsz, var(--n_snvW, 0px))))}
19
20
  ._u7coidpf{inset-block-end:0}
20
21
  ._vchhusvi{box-sizing:border-box}
22
+ [dir=rtl] ._1jq41dy6{--enter-animation:var(--ds-sidenav-enter-right,250ms cubic-bezier(0,0.4,0,1) SlideIn100PercentRight)}
23
+ [dir=rtl] ._2qe0k8f8{--exit-animation:var(--ds-sidenav-exit-right,200ms cubic-bezier(0.6,0,0.8,0.6) SlideOut100PercentRight)}
21
24
  [dir=rtl] ._65m41mrw{--animation-direction:-1}
22
- @media (prefers-reduced-motion:no-preference){._10t88iot{transition-property:transform,display}._1vrh1a5r{transition-behavior:allow-discrete}._xrrpfnf5{transition-duration:.2s}._1lh81gzg{grid-area:main}._1xq51mm8{transition-timing-function:cubic-bezier(0,.4,0,1)}@starting-style{._1nu51p9u{transform:translateX(calc(-100%*var(--animation-direction)))}}._1xq51ku9{transition-timing-function:cubic-bezier(.6,0,0,1)}}
25
+ @media (prefers-reduced-motion:no-preference){._10t81t0s{transition-property:display}._1vrh1a5r{transition-behavior:allow-discrete}._xrrpi9qs{transition-duration:var(--ds-duration-medium,.2s)}._10t88iot{transition-property:transform,display}._xrrpfnf5{transition-duration:.2s}._1lh81gzg{grid-area:main}._1xq51mm8{transition-timing-function:cubic-bezier(0,.4,0,1)}._k1affm5y{animation:var(--exit-animation)}@starting-style{._1nu51p9u{transform:translateX(calc(-100%*var(--animation-direction)))}}._1xq51ku9{transition-timing-function:cubic-bezier(.6,0,0,1)}._k1af10ed{animation:var(--enter-animation)}}
23
26
  @media (min-width:48rem){._14b5hc79{width:var(--n_snvRsz,var(--n_sNvw))}}
24
27
  @media (min-width:64rem){._165t56xv{height:calc(100vh - var(--n_bnrM, 0px))}._p0az1elq{transform:translateX(calc(var(--n_snvRsz, var(--n_snvW, 0px)) - var(--ds-border-width, 1px)))}._dm2518uv{display:initial}._dm25glyw{display:none}._qiln1gzg{grid-area:main}._p5clglyw{border-inline-end:none}._4ap31bhr{background-color:var(--ds-surface-overlay,#fff)}._scbp130s{box-shadow:var(--ds-shadow-overlay,0 8px 9pt #1e1f2126,0 0 1px #1e1f214f)}._qilnk0mc{grid-area:side-nav}._p5clia51{border-inline-end:var(--ds-border-width,1px) solid var(--ds-border,#0b120e24)}._4ap3vuon{background-color:var(--ds-surface,#fff)}._scbpglyw{box-shadow:none}}
25
- @media (prefers-reduced-motion:no-preference) and (min-width:64rem){._17ly8iot{transition-property:transform,display}._177m1a5r{transition-behavior:allow-discrete}._1sg81gzg{grid-area:main}._vgub1mm8{transition-timing-function:cubic-bezier(0,.4,0,1)}._hh1u1p9u{transform:translateX(calc(-100%*var(--animation-direction)))}@starting-style{._s2eg1p9u{transform:translateX(calc(-100%*var(--animation-direction)))}}._1sg8k0mc{grid-area:side-nav}._vgub1ku9{transition-timing-function:cubic-bezier(.6,0,0,1)}._hjoifnf5{transition-duration:.2s}}
28
+ @media (prefers-reduced-motion:no-preference) and (min-width:64rem){._17ly8iot{transition-property:transform,display}._177m1a5r{transition-behavior:allow-discrete}._1sg81gzg{grid-area:main}._n2infm5y{animation:var(--exit-animation)}._vgub1mm8{transition-timing-function:cubic-bezier(0,.4,0,1)}._hh1u1p9u{transform:translateX(calc(-100%*var(--animation-direction)))}._1sg8k0mc{grid-area:side-nav}._n2in10ed{animation:var(--enter-animation)}@starting-style{._s2eg1p9u{transform:translateX(calc(-100%*var(--animation-direction)))}}._vgub1ku9{transition-timing-function:cubic-bezier(.6,0,0,1)}._hjoifnf5{transition-duration:.2s}._hjoi1mzy{transition-duration:var(--ds-duration-long,.25s)}._hjoii9qs{transition-duration:var(--ds-duration-medium,.2s)}}
26
29
  @media (prefers-reduced-motion:no-preference) and (not (min-width:64rem)){._aadi1p9u{transform:translateX(calc(-100%*var(--animation-direction)))}}
27
30
  @media not (min-width:64rem){._89fi1b6c{grid-area:main/aside/aside/aside}}
28
- @supports not (-moz-appearance:none){@media (prefers-reduced-motion:no-preference){._139f8iot{transition-property:transform,display}._1tpvfnf5{transition-duration:.2s}._sylc1a5r{transition-behavior:allow-discrete}._1uwsjq3t{transform:translateX(-100%)}}@media (prefers-reduced-motion:no-preference){@starting-style{._oyeijq3t{transform:translateX(-100%)}}._139f8iot{transition-property:transform,display}._1tpvfnf5{transition-duration:.2s}._sylc1a5r{transition-behavior:allow-discrete}}}
31
+ @supports not (-moz-appearance:none){@media (prefers-reduced-motion:no-preference){._139f8iot{transition-property:transform,display}._1tpvfnf5{transition-duration:.2s}._sylc1a5r{transition-behavior:allow-discrete}._1uwsjq3t{transform:translateX(-100%)}}@media (prefers-reduced-motion:no-preference){@starting-style{._oyeijq3t{transform:translateX(-100%)}}._139f8iot{transition-property:transform,display}._1tpvfnf5{transition-duration:.2s}._sylc1a5r{transition-behavior:allow-discrete}}@media (prefers-reduced-motion:no-preference){._4xci10ed{animation:var(--enter-animation)}._1tpv1mzy{transition-duration:var(--ds-duration-long,.25s)}._sylc1a5r{transition-behavior:allow-discrete}}@media (prefers-reduced-motion:no-preference){._4xcifm5y{animation:var(--exit-animation)}._1tpvi9qs{transition-duration:var(--ds-duration-medium,.2s)}._sylc1a5r{transition-behavior:allow-discrete}}}
@@ -71,7 +71,7 @@ var panelSplitterPortalTargetStyles = {
71
71
  root: "_kqsw1n9t _1pbyegat _u7coidpf _t9ectl5p _4t3ieqxy _165t56xv _p0az1elq"
72
72
  };
73
73
  var styles = {
74
- root: "_191wglyw _t51zglyw _bfhk1bhr _16qs130s _vchhusvi _4t3ieqxy _152timx3 _kqsw1if8 _1bsb1ego _1pbycs5v _14b5hc79 _qilnk0mc _p5clia51 _4ap3vuon _scbpglyw",
74
+ root: "_191wglyw _t51zglyw _bfhk1bhr _16qs130s _vchhusvi _4t3ieqxy _152timx3 _kqsw1if8 _1bsb1ego _1pbycs5v _14b5hc79 _qilnk0mc _p5clia51 _4ap3vuon _scbpglyw _89fi1b6c",
75
75
  flyoutOpen: "_qiln1gzg _p5clglyw _4ap31bhr _scbp130s _139f8iot _1tpvfnf5 _sylc1a5r _oyeijq3t",
76
76
  flyoutAnimateClosed: "_1e0cglyw _qiln1gzg _139f8iot _1tpvfnf5 _sylc1a5r _1uwsjq3t",
77
77
  animationRTLSupport: "_15yekb7n _65m41mrw",
@@ -90,34 +90,28 @@ var styles = {
90
90
  };
91
91
 
92
92
  /**
93
- * Workaround for non-deterministic Compiled style ordering in local development. See MAGMA-4606.
93
+ * Styles for the side nav enter/exit animations when `platform-dst-motion-uplift-sidenav` is enabled.
94
94
  *
95
- * The mobile `grid-area` for the side nav, split out from `styles.root` so it can be gated. The
96
- * desktop rule (`gridArea: 'side-nav'`) lives in `styles.root` inside `@media (min-width: 64rem)`.
95
+ * These use the `motion.sidenav.*` tokens (keyframe animations) instead of the `transform` transitions
96
+ * with `@starting-style` used by `styles`.
97
97
  *
98
- * Why this is needed:
99
- * The mobile rule (unscoped) and the desktop rule (`@media (min-width: 64rem)`) compile to two atomic
100
- * rules of equal specificity a `@media` query adds no specificity so at desktop widths the winner
101
- * is decided purely by stylesheet insertion order (last wins). In production this is fine: Compiled's
102
- * stylesheet extraction sorts the media queries deterministically. But in local development stylesheet
103
- * extraction is disabled (https://github.com/atlassian-labs/compiled/issues/1306), so styles are
104
- * injected as inline `<style>` tags in whatever order components happen to render. Under streaming SSR
105
- * (Suspense), the desktop rule can be emitted earlier on the page by another component, leaving the
106
- * unscoped mobile rule last — so it wins on desktop and the side nav renders in the wrong grid area.
107
- *
108
- * - `mobileLegacy` (gate OFF): the original unscoped mobile rule, which exhibits the bug above.
109
- * - `mobile` (gate ON): the mobile rule scoped to `@media not (min-width: 64rem)`, the exact inverse
110
- * of the desktop `@media (min-width: 64rem)` rule. The two can never both match at a given viewport,
111
- * so insertion order no longer matters and the bug cannot occur.
112
- *
113
- * Cleaning up `fg('platform_dst_nav4_side_nav_grid_area_fix')` (gate fully rolled out):
114
- * 1. Move `gridAreaStyles.mobile`'s `@media not (min-width: 64rem)` grid-area rule back into
115
- * `styles.root`.
116
- * 2. Delete this entire block (`gridAreaStyles`) and the `fg(...)` branch in the `css` prop below.
98
+ * ⚠️ The `transition-duration` values below need to stay in sync with the duration baked into the tokens
99
+ * (`motion.sidenav.enter.*` is 250ms, `motion.sidenav.exit.*` is 200ms). The `display` property is
100
+ * transitioned (with `allow-discrete`) so the element stays rendered for the length of the exit animation
101
+ * if the transition is shorter than the animation, `display: none` applies early and the exit animation
102
+ * never runs.
117
103
  */
118
- var gridAreaStyles = {
119
- mobileLegacy: "_nd5l1b6c",
120
- mobile: "_89fi1b6c"
104
+ var motionUpliftStyles = {
105
+ animationRTLSupport: "_cjprp6j8 _1p2s58oa _1jq41dy6 _2qe0k8f8",
106
+ animationBaseStyles: "_10t81t0s _1vrh1a5r _xrrpi9qs",
107
+ expandAnimationMobile: "_k1af10ed",
108
+ collapseAnimationMobile: "_1lh81gzg _k1affm5y",
109
+ flyoutOpen: "_qiln1gzg _p5clglyw _4ap31bhr _scbp130s _4xci10ed _1tpv1mzy _sylc1a5r",
110
+ flyoutAnimateClosed: "_1e0cglyw _qiln1gzg _4xcifm5y _1tpvi9qs _sylc1a5r",
111
+ flyoutOpenFullHeightSidebar: "_n2in10ed _hjoi1mzy",
112
+ flyoutAnimateClosedFullHeightSidebar: "_dm25glyw _n2infm5y _hjoii9qs",
113
+ expandAnimationDesktop: "_1sg8k0mc _n2in10ed",
114
+ collapseAnimationDesktop: "_1sg81gzg _n2infm5y"
121
115
  };
122
116
  var fallbackDefaultWidth = 320;
123
117
  var onPeekStartDelayMs = exports.onPeekStartDelayMs = 500;
@@ -759,9 +753,10 @@ function SideNavInternal(_ref) {
759
753
  * Otherwise, the `@starting-style` rule will cause the sidebar to slide in initially.
760
754
  */
761
755
  var hasExpandedStateChanged = isExpandedStateDifferentFromInitial || hasExpandedStateChangedRef.current;
756
+ var isMotionUpliftEnabled = (0, _platformFeatureFlags.fg)('platform-dst-motion-uplift-sidenav');
762
757
 
763
758
  // This is only used for the regular expand and collapse animations, not the flyout animations.
764
- var shouldShowSidebarToggleAnimation = isFhsEnabled &&
759
+ var shouldShowSidebarToggleAnimation = (isMotionUpliftEnabled || isFhsEnabled) &&
765
760
  // We do not apply the animation styles on the initial render, as the `@starting-style` rule will cause the sidebar to
766
761
  // slide in initially.
767
762
  hasExpandedStateChanged &&
@@ -792,7 +787,7 @@ function SideNavInternal(_ref) {
792
787
  style: (0, _defineProperty2.default)({}, _constants.sideNavVar, clampedWidth),
793
788
  ref: mergedRef,
794
789
  "data-testid": testId,
795
- className: (0, _runtime.ax)([styles.root, (0, _platformFeatureFlags.fg)('platform_dst_nav4_side_nav_grid_area_fix') ? gridAreaStyles.mobile : gridAreaStyles.mobileLegacy, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop, isFhsEnabled && styles.animationRTLSupport, shouldShowSidebarToggleAnimation && styles.animationBaseStyles, isExpandedOnMobile && shouldShowSidebarToggleAnimation && styles.expandAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && styles.collapseAnimationMobile, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && styles.expandAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && styles.collapseAnimationDesktop, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && styles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && styles.flyoutAnimateClosed, ((sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close') && !isFirefox && isFhsEnabled && styles.flyoutBaseStylesFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && styles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar])
790
+ className: (0, _runtime.ax)([styles.root, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop, isMotionUpliftEnabled && motionUpliftStyles.animationRTLSupport, !isMotionUpliftEnabled && isFhsEnabled && styles.animationRTLSupport, shouldShowSidebarToggleAnimation && isMotionUpliftEnabled && motionUpliftStyles.animationBaseStyles, shouldShowSidebarToggleAnimation && !isMotionUpliftEnabled && styles.animationBaseStyles, isExpandedOnMobile && shouldShowSidebarToggleAnimation && isMotionUpliftEnabled && motionUpliftStyles.expandAnimationMobile, isExpandedOnMobile && shouldShowSidebarToggleAnimation && !isMotionUpliftEnabled && styles.expandAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && isMotionUpliftEnabled && motionUpliftStyles.collapseAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && !isMotionUpliftEnabled && styles.collapseAnimationMobile, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && isMotionUpliftEnabled && motionUpliftStyles.expandAnimationDesktop, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && !isMotionUpliftEnabled && styles.expandAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && isMotionUpliftEnabled && motionUpliftStyles.collapseAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && !isMotionUpliftEnabled && styles.collapseAnimationDesktop, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && isMotionUpliftEnabled && motionUpliftStyles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && !isMotionUpliftEnabled && styles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && isMotionUpliftEnabled && motionUpliftStyles.flyoutAnimateClosed, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && !isMotionUpliftEnabled && styles.flyoutAnimateClosed, ((sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close') && !isFirefox && isFhsEnabled && styles.flyoutBaseStylesFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && isMotionUpliftEnabled && motionUpliftStyles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && !isMotionUpliftEnabled && styles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && isMotionUpliftEnabled && motionUpliftStyles.flyoutAnimateClosedFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && !isMotionUpliftEnabled && styles.flyoutAnimateClosedFullHeightSidebar])
796
791
  }), /*#__PURE__*/_react.default.createElement(_dangerouslyHoistCssVarToDocumentRoot.DangerouslyHoistCssVarToDocumentRoot, {
797
792
  variableName: _constants.sideNavLiveWidthVar,
798
793
  value: "0px",
@@ -8,7 +8,7 @@
8
8
  ._2rkofajl{border-radius:var(--ds-radius-small,3px)}
9
9
  ._9v7aze3t:after{inset:var(--ds-space-0,0)}
10
10
  ._v5649dqc{transition:background .1s ease-out}
11
- ._v564o1g2{transition:var(--ds-button-hovered,background-color .15s cubic-bezier(.4,1,.6,1))}
11
+ ._v564k6bl{transition:var(--ds-button-hovered,background-color border-color .15s cubic-bezier(.4,1,.6,1))}
12
12
  ._zulp12x7{gap:var(--ds-space-075,6px)}
13
13
  ._18zrutpp{padding-inline:var(--ds-space-150,9pt)}
14
14
  ._18zrze3t{padding-inline:var(--ds-space-0,0)}
@@ -55,7 +55,7 @@
55
55
  ._30l3w5ct:hover{color:var(--ds-top-bar-button-selected-text)}
56
56
  ._9oik1r31:hover{text-decoration-color:currentColor}
57
57
  ._jf4cnqa1:hover{text-decoration-style:solid}
58
- ._1gglat8s:active{transition:var(--ds-button-pressed,background-color .15s cubic-bezier(.4,1,.6,1))}
58
+ ._1ggl5xtf:active{transition:var(--ds-button-pressed,background-color border-color .15s cubic-bezier(.4,1,.6,1))}
59
59
  ._j6xt1c9b:active{background:var(--ds-top-bar-button-disabled-background)}
60
60
  ._j6xt5sko:active{background:var(--ds-top-bar-button-primary-background-pressed)}
61
61
  ._j6xtnh62:active{background:var(--ds-top-bar-button-selected-background-pressed)}
@@ -20,7 +20,7 @@ var _excluded = ["appearance", "shape", "isSelected", "isDisabled"];
20
20
  var styles = {
21
21
  root: "_zulp12x7 _11c8fhey _2rkofajl _v5649dqc _4bfu1r31 _1hmsglyw _ajmmnqa1 _1rjcze3t _1e0c1txw _4cvr1h6o _1bah1h6o _4t3i5r7u _kqswh2mm _1nrm1r31 _1a3b1r31 _9oik1r31 _c2waglyw _4fprglyw _1bnxglyw _1iohnqa1 _5goinqa1 _jf4cnqa1",
22
22
  rootT26Shape: "_2rko1qi0",
23
- interactiveMotion: "_v564o1g2 _1gglat8s",
23
+ interactiveMotion: "_v564k6bl _1ggl5xtf",
24
24
  border: "_14mj1kw7 _9v7aze3t _1tv3nqa1 _39yqe4h9 _aetrb3bt _18postnw",
25
25
  selected: "_11q71qds _syazw5ct _8l3m15jn _f8pjw5ct _1053w5ct _19lcjrv1 _30l3w5ct _j6xtnh62 _9h8hw5ct",
26
26
  disabled: "_11q71c9b _syaz1i3i _8l3m1j28 _f8pj1i3i _10531i3i _19lc1c9b _30l31i3i _j6xt1c9b _9h8h1i3i"
@@ -8,7 +8,7 @@
8
8
  ._2rkofajl{border-radius:var(--ds-radius-small,3px)}
9
9
  ._9v7aze3t:after{inset:var(--ds-space-0,0)}
10
10
  ._v5649dqc{transition:background .1s ease-out}
11
- ._v564o1g2{transition:var(--ds-button-hovered,background-color .15s cubic-bezier(.4,1,.6,1))}
11
+ ._v564k6bl{transition:var(--ds-button-hovered,background-color border-color .15s cubic-bezier(.4,1,.6,1))}
12
12
  ._zulp12x7{gap:var(--ds-space-075,6px)}
13
13
  ._18zrutpp{padding-inline:var(--ds-space-150,9pt)}
14
14
  ._18zrze3t{padding-inline:var(--ds-space-0,0)}
@@ -55,7 +55,7 @@
55
55
  ._30l3w5ct:hover{color:var(--ds-top-bar-button-selected-text)}
56
56
  ._9oik1r31:hover{text-decoration-color:currentColor}
57
57
  ._jf4cnqa1:hover{text-decoration-style:solid}
58
- ._1gglat8s:active{transition:var(--ds-button-pressed,background-color .15s cubic-bezier(.4,1,.6,1))}
58
+ ._1ggl5xtf:active{transition:var(--ds-button-pressed,background-color border-color .15s cubic-bezier(.4,1,.6,1))}
59
59
  ._j6xt1c9b:active{background:var(--ds-top-bar-button-disabled-background)}
60
60
  ._j6xt5sko:active{background:var(--ds-top-bar-button-primary-background-pressed)}
61
61
  ._j6xtnh62:active{background:var(--ds-top-bar-button-selected-background-pressed)}
@@ -21,7 +21,7 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
21
21
  var styles = {
22
22
  root: "_zulp12x7 _11c8fhey _2rkofajl _v5649dqc _4bfu1r31 _1hmsglyw _ajmmnqa1 _1rjcze3t _1e0c1txw _4cvr1h6o _1bah1h6o _4t3i5r7u _kqswh2mm _1nrm1r31 _1a3b1r31 _9oik1r31 _c2waglyw _4fprglyw _1bnxglyw _1iohnqa1 _5goinqa1 _jf4cnqa1",
23
23
  rootT26Shape: "_2rko1qi0",
24
- interactiveMotion: "_v564o1g2 _1gglat8s",
24
+ interactiveMotion: "_v564k6bl _1ggl5xtf",
25
25
  border: "_14mj1kw7 _9v7aze3t _1tv3nqa1 _39yqe4h9 _aetrb3bt _18postnw",
26
26
  selected: "_11q71qds _syazw5ct _8l3m15jn _f8pjw5ct _1053w5ct _19lcjrv1 _30l3w5ct _j6xtnh62 _9h8hw5ct",
27
27
  disabled: "_11q71c9b _syaz1i3i _8l3m1j28 _f8pj1i3i _10531i3i _19lc1c9b _30l31i3i _j6xt1c9b _9h8h1i3i"
@@ -1,4 +1,3 @@
1
- ._nd5l1b6c{grid-area:main/aside/aside/aside}
2
1
  ._191wglyw{border-inline-start:none}
3
2
  ._t51zglyw{border-inline-end:none}._152timx3{inset-block-start:calc(var(--n_bnrM, 0px) + var(--n_tNvM, 0px))}
4
3
  ._15yekb7n{--animation-direction:1}
@@ -7,22 +6,26 @@
7
6
  ._1bsb1ego{width:min(90%,20pc)}
8
7
  ._1e0c1txw{display:flex}
9
8
  ._1e0cglyw{display:none}
9
+ ._1p2s58oa{--exit-animation:var(--ds-sidenav-exit-left,200ms cubic-bezier(0.6,0,0.8,0.6) SlideOut100PercentLeft)}
10
10
  ._1pbycs5v{z-index:2}
11
11
  ._1pbyegat{z-index:4}
12
12
  ._2lx21bp4{flex-direction:column}
13
13
  ._4t3i1osq{height:100%}
14
14
  ._4t3ieqxy{height:calc(100vh - var(--n_bnrM, 0px) - var(--n_tNvM, 0px))}
15
15
  ._bfhk1bhr{background-color:var(--ds-surface-overlay,#fff)}
16
+ ._cjprp6j8{--enter-animation:var(--ds-sidenav-enter-left,250ms cubic-bezier(0,0.4,0,1) SlideIn100PercentLeft)}
16
17
  ._kqsw1if8{position:sticky}
17
18
  ._kqsw1n9t{position:fixed}
18
19
  ._t9ectl5p{transform:translateX(calc(var(--n_snvRsz, var(--n_snvW, 0px))))}
19
20
  ._u7coidpf{inset-block-end:0}
20
21
  ._vchhusvi{box-sizing:border-box}
22
+ [dir=rtl] ._1jq41dy6{--enter-animation:var(--ds-sidenav-enter-right,250ms cubic-bezier(0,0.4,0,1) SlideIn100PercentRight)}
23
+ [dir=rtl] ._2qe0k8f8{--exit-animation:var(--ds-sidenav-exit-right,200ms cubic-bezier(0.6,0,0.8,0.6) SlideOut100PercentRight)}
21
24
  [dir=rtl] ._65m41mrw{--animation-direction:-1}
22
- @media (prefers-reduced-motion:no-preference){._10t88iot{transition-property:transform,display}._1vrh1a5r{transition-behavior:allow-discrete}._xrrpfnf5{transition-duration:.2s}._1lh81gzg{grid-area:main}._1xq51mm8{transition-timing-function:cubic-bezier(0,.4,0,1)}@starting-style{._1nu51p9u{transform:translateX(calc(-100%*var(--animation-direction)))}}._1xq51ku9{transition-timing-function:cubic-bezier(.6,0,0,1)}}
25
+ @media (prefers-reduced-motion:no-preference){._10t81t0s{transition-property:display}._1vrh1a5r{transition-behavior:allow-discrete}._xrrpi9qs{transition-duration:var(--ds-duration-medium,.2s)}._10t88iot{transition-property:transform,display}._xrrpfnf5{transition-duration:.2s}._1lh81gzg{grid-area:main}._1xq51mm8{transition-timing-function:cubic-bezier(0,.4,0,1)}._k1affm5y{animation:var(--exit-animation)}@starting-style{._1nu51p9u{transform:translateX(calc(-100%*var(--animation-direction)))}}._1xq51ku9{transition-timing-function:cubic-bezier(.6,0,0,1)}._k1af10ed{animation:var(--enter-animation)}}
23
26
  @media (min-width:48rem){._14b5hc79{width:var(--n_snvRsz,var(--n_sNvw))}}
24
27
  @media (min-width:64rem){._165t56xv{height:calc(100vh - var(--n_bnrM, 0px))}._p0az1elq{transform:translateX(calc(var(--n_snvRsz, var(--n_snvW, 0px)) - var(--ds-border-width, 1px)))}._dm2518uv{display:initial}._dm25glyw{display:none}._qiln1gzg{grid-area:main}._p5clglyw{border-inline-end:none}._4ap31bhr{background-color:var(--ds-surface-overlay,#fff)}._scbp130s{box-shadow:var(--ds-shadow-overlay,0 8px 9pt #1e1f2126,0 0 1px #1e1f214f)}._qilnk0mc{grid-area:side-nav}._p5clia51{border-inline-end:var(--ds-border-width,1px) solid var(--ds-border,#0b120e24)}._4ap3vuon{background-color:var(--ds-surface,#fff)}._scbpglyw{box-shadow:none}}
25
- @media (prefers-reduced-motion:no-preference) and (min-width:64rem){._17ly8iot{transition-property:transform,display}._177m1a5r{transition-behavior:allow-discrete}._1sg81gzg{grid-area:main}._vgub1mm8{transition-timing-function:cubic-bezier(0,.4,0,1)}._hh1u1p9u{transform:translateX(calc(-100%*var(--animation-direction)))}@starting-style{._s2eg1p9u{transform:translateX(calc(-100%*var(--animation-direction)))}}._1sg8k0mc{grid-area:side-nav}._vgub1ku9{transition-timing-function:cubic-bezier(.6,0,0,1)}._hjoifnf5{transition-duration:.2s}}
28
+ @media (prefers-reduced-motion:no-preference) and (min-width:64rem){._17ly8iot{transition-property:transform,display}._177m1a5r{transition-behavior:allow-discrete}._1sg81gzg{grid-area:main}._n2infm5y{animation:var(--exit-animation)}._vgub1mm8{transition-timing-function:cubic-bezier(0,.4,0,1)}._hh1u1p9u{transform:translateX(calc(-100%*var(--animation-direction)))}._1sg8k0mc{grid-area:side-nav}._n2in10ed{animation:var(--enter-animation)}@starting-style{._s2eg1p9u{transform:translateX(calc(-100%*var(--animation-direction)))}}._vgub1ku9{transition-timing-function:cubic-bezier(.6,0,0,1)}._hjoifnf5{transition-duration:.2s}._hjoi1mzy{transition-duration:var(--ds-duration-long,.25s)}._hjoii9qs{transition-duration:var(--ds-duration-medium,.2s)}}
26
29
  @media (prefers-reduced-motion:no-preference) and (not (min-width:64rem)){._aadi1p9u{transform:translateX(calc(-100%*var(--animation-direction)))}}
27
30
  @media not (min-width:64rem){._89fi1b6c{grid-area:main/aside/aside/aside}}
28
- @supports not (-moz-appearance:none){@media (prefers-reduced-motion:no-preference){._139f8iot{transition-property:transform,display}._1tpvfnf5{transition-duration:.2s}._sylc1a5r{transition-behavior:allow-discrete}._1uwsjq3t{transform:translateX(-100%)}}@media (prefers-reduced-motion:no-preference){@starting-style{._oyeijq3t{transform:translateX(-100%)}}._139f8iot{transition-property:transform,display}._1tpvfnf5{transition-duration:.2s}._sylc1a5r{transition-behavior:allow-discrete}}}
31
+ @supports not (-moz-appearance:none){@media (prefers-reduced-motion:no-preference){._139f8iot{transition-property:transform,display}._1tpvfnf5{transition-duration:.2s}._sylc1a5r{transition-behavior:allow-discrete}._1uwsjq3t{transform:translateX(-100%)}}@media (prefers-reduced-motion:no-preference){@starting-style{._oyeijq3t{transform:translateX(-100%)}}._139f8iot{transition-property:transform,display}._1tpvfnf5{transition-duration:.2s}._sylc1a5r{transition-behavior:allow-discrete}}@media (prefers-reduced-motion:no-preference){._4xci10ed{animation:var(--enter-animation)}._1tpv1mzy{transition-duration:var(--ds-duration-long,.25s)}._sylc1a5r{transition-behavior:allow-discrete}}@media (prefers-reduced-motion:no-preference){._4xcifm5y{animation:var(--exit-animation)}._1tpvi9qs{transition-duration:var(--ds-duration-medium,.2s)}._sylc1a5r{transition-behavior:allow-discrete}}}
@@ -58,7 +58,7 @@ const panelSplitterPortalTargetStyles = {
58
58
  root: "_kqsw1n9t _1pbyegat _u7coidpf _t9ectl5p _4t3ieqxy _165t56xv _p0az1elq"
59
59
  };
60
60
  const styles = {
61
- root: "_191wglyw _t51zglyw _bfhk1bhr _16qs130s _vchhusvi _4t3ieqxy _152timx3 _kqsw1if8 _1bsb1ego _1pbycs5v _14b5hc79 _qilnk0mc _p5clia51 _4ap3vuon _scbpglyw",
61
+ root: "_191wglyw _t51zglyw _bfhk1bhr _16qs130s _vchhusvi _4t3ieqxy _152timx3 _kqsw1if8 _1bsb1ego _1pbycs5v _14b5hc79 _qilnk0mc _p5clia51 _4ap3vuon _scbpglyw _89fi1b6c",
62
62
  flyoutOpen: "_qiln1gzg _p5clglyw _4ap31bhr _scbp130s _139f8iot _1tpvfnf5 _sylc1a5r _oyeijq3t",
63
63
  flyoutAnimateClosed: "_1e0cglyw _qiln1gzg _139f8iot _1tpvfnf5 _sylc1a5r _1uwsjq3t",
64
64
  animationRTLSupport: "_15yekb7n _65m41mrw",
@@ -77,34 +77,28 @@ const styles = {
77
77
  };
78
78
 
79
79
  /**
80
- * Workaround for non-deterministic Compiled style ordering in local development. See MAGMA-4606.
80
+ * Styles for the side nav enter/exit animations when `platform-dst-motion-uplift-sidenav` is enabled.
81
81
  *
82
- * The mobile `grid-area` for the side nav, split out from `styles.root` so it can be gated. The
83
- * desktop rule (`gridArea: 'side-nav'`) lives in `styles.root` inside `@media (min-width: 64rem)`.
82
+ * These use the `motion.sidenav.*` tokens (keyframe animations) instead of the `transform` transitions
83
+ * with `@starting-style` used by `styles`.
84
84
  *
85
- * Why this is needed:
86
- * The mobile rule (unscoped) and the desktop rule (`@media (min-width: 64rem)`) compile to two atomic
87
- * rules of equal specificity a `@media` query adds no specificity so at desktop widths the winner
88
- * is decided purely by stylesheet insertion order (last wins). In production this is fine: Compiled's
89
- * stylesheet extraction sorts the media queries deterministically. But in local development stylesheet
90
- * extraction is disabled (https://github.com/atlassian-labs/compiled/issues/1306), so styles are
91
- * injected as inline `<style>` tags in whatever order components happen to render. Under streaming SSR
92
- * (Suspense), the desktop rule can be emitted earlier on the page by another component, leaving the
93
- * unscoped mobile rule last — so it wins on desktop and the side nav renders in the wrong grid area.
94
- *
95
- * - `mobileLegacy` (gate OFF): the original unscoped mobile rule, which exhibits the bug above.
96
- * - `mobile` (gate ON): the mobile rule scoped to `@media not (min-width: 64rem)`, the exact inverse
97
- * of the desktop `@media (min-width: 64rem)` rule. The two can never both match at a given viewport,
98
- * so insertion order no longer matters and the bug cannot occur.
99
- *
100
- * Cleaning up `fg('platform_dst_nav4_side_nav_grid_area_fix')` (gate fully rolled out):
101
- * 1. Move `gridAreaStyles.mobile`'s `@media not (min-width: 64rem)` grid-area rule back into
102
- * `styles.root`.
103
- * 2. Delete this entire block (`gridAreaStyles`) and the `fg(...)` branch in the `css` prop below.
85
+ * ⚠️ The `transition-duration` values below need to stay in sync with the duration baked into the tokens
86
+ * (`motion.sidenav.enter.*` is 250ms, `motion.sidenav.exit.*` is 200ms). The `display` property is
87
+ * transitioned (with `allow-discrete`) so the element stays rendered for the length of the exit animation
88
+ * if the transition is shorter than the animation, `display: none` applies early and the exit animation
89
+ * never runs.
104
90
  */
105
- const gridAreaStyles = {
106
- mobileLegacy: "_nd5l1b6c",
107
- mobile: "_89fi1b6c"
91
+ const motionUpliftStyles = {
92
+ animationRTLSupport: "_cjprp6j8 _1p2s58oa _1jq41dy6 _2qe0k8f8",
93
+ animationBaseStyles: "_10t81t0s _1vrh1a5r _xrrpi9qs",
94
+ expandAnimationMobile: "_k1af10ed",
95
+ collapseAnimationMobile: "_1lh81gzg _k1affm5y",
96
+ flyoutOpen: "_qiln1gzg _p5clglyw _4ap31bhr _scbp130s _4xci10ed _1tpv1mzy _sylc1a5r",
97
+ flyoutAnimateClosed: "_1e0cglyw _qiln1gzg _4xcifm5y _1tpvi9qs _sylc1a5r",
98
+ flyoutOpenFullHeightSidebar: "_n2in10ed _hjoi1mzy",
99
+ flyoutAnimateClosedFullHeightSidebar: "_dm25glyw _n2infm5y _hjoii9qs",
100
+ expandAnimationDesktop: "_1sg8k0mc _n2in10ed",
101
+ collapseAnimationDesktop: "_1sg81gzg _n2infm5y"
108
102
  };
109
103
  const fallbackDefaultWidth = 320;
110
104
  export const onPeekStartDelayMs = 500;
@@ -747,9 +741,10 @@ function SideNavInternal({
747
741
  * Otherwise, the `@starting-style` rule will cause the sidebar to slide in initially.
748
742
  */
749
743
  const hasExpandedStateChanged = isExpandedStateDifferentFromInitial || hasExpandedStateChangedRef.current;
744
+ const isMotionUpliftEnabled = fg('platform-dst-motion-uplift-sidenav');
750
745
 
751
746
  // This is only used for the regular expand and collapse animations, not the flyout animations.
752
- const shouldShowSidebarToggleAnimation = isFhsEnabled &&
747
+ const shouldShowSidebarToggleAnimation = (isMotionUpliftEnabled || isFhsEnabled) &&
753
748
  // We do not apply the animation styles on the initial render, as the `@starting-style` rule will cause the sidebar to
754
749
  // slide in initially.
755
750
  hasExpandedStateChanged &&
@@ -783,7 +778,7 @@ function SideNavInternal({
783
778
  },
784
779
  ref: mergedRef,
785
780
  "data-testid": testId,
786
- className: ax([styles.root, fg('platform_dst_nav4_side_nav_grid_area_fix') ? gridAreaStyles.mobile : gridAreaStyles.mobileLegacy, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop, isFhsEnabled && styles.animationRTLSupport, shouldShowSidebarToggleAnimation && styles.animationBaseStyles, isExpandedOnMobile && shouldShowSidebarToggleAnimation && styles.expandAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && styles.collapseAnimationMobile, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && styles.expandAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && styles.collapseAnimationDesktop, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && styles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && styles.flyoutAnimateClosed, ((sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close') && !isFirefox && isFhsEnabled && styles.flyoutBaseStylesFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && styles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar])
781
+ className: ax([styles.root, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop, isMotionUpliftEnabled && motionUpliftStyles.animationRTLSupport, !isMotionUpliftEnabled && isFhsEnabled && styles.animationRTLSupport, shouldShowSidebarToggleAnimation && isMotionUpliftEnabled && motionUpliftStyles.animationBaseStyles, shouldShowSidebarToggleAnimation && !isMotionUpliftEnabled && styles.animationBaseStyles, isExpandedOnMobile && shouldShowSidebarToggleAnimation && isMotionUpliftEnabled && motionUpliftStyles.expandAnimationMobile, isExpandedOnMobile && shouldShowSidebarToggleAnimation && !isMotionUpliftEnabled && styles.expandAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && isMotionUpliftEnabled && motionUpliftStyles.collapseAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && !isMotionUpliftEnabled && styles.collapseAnimationMobile, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && isMotionUpliftEnabled && motionUpliftStyles.expandAnimationDesktop, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && !isMotionUpliftEnabled && styles.expandAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && isMotionUpliftEnabled && motionUpliftStyles.collapseAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && !isMotionUpliftEnabled && styles.collapseAnimationDesktop, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && isMotionUpliftEnabled && motionUpliftStyles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && !isMotionUpliftEnabled && styles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && isMotionUpliftEnabled && motionUpliftStyles.flyoutAnimateClosed, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && !isMotionUpliftEnabled && styles.flyoutAnimateClosed, ((sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close') && !isFirefox && isFhsEnabled && styles.flyoutBaseStylesFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && isMotionUpliftEnabled && motionUpliftStyles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && !isMotionUpliftEnabled && styles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && isMotionUpliftEnabled && motionUpliftStyles.flyoutAnimateClosedFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && !isMotionUpliftEnabled && styles.flyoutAnimateClosedFullHeightSidebar])
787
782
  }), /*#__PURE__*/React.createElement(DangerouslyHoistCssVarToDocumentRoot, {
788
783
  variableName: sideNavLiveWidthVar,
789
784
  value: "0px",
@@ -8,7 +8,7 @@
8
8
  ._2rkofajl{border-radius:var(--ds-radius-small,3px)}
9
9
  ._9v7aze3t:after{inset:var(--ds-space-0,0)}
10
10
  ._v5649dqc{transition:background .1s ease-out}
11
- ._v564o1g2{transition:var(--ds-button-hovered,background-color .15s cubic-bezier(.4,1,.6,1))}
11
+ ._v564k6bl{transition:var(--ds-button-hovered,background-color border-color .15s cubic-bezier(.4,1,.6,1))}
12
12
  ._zulp12x7{gap:var(--ds-space-075,6px)}
13
13
  ._18zrutpp{padding-inline:var(--ds-space-150,9pt)}
14
14
  ._18zrze3t{padding-inline:var(--ds-space-0,0)}
@@ -55,7 +55,7 @@
55
55
  ._30l3w5ct:hover{color:var(--ds-top-bar-button-selected-text)}
56
56
  ._9oik1r31:hover{text-decoration-color:currentColor}
57
57
  ._jf4cnqa1:hover{text-decoration-style:solid}
58
- ._1gglat8s:active{transition:var(--ds-button-pressed,background-color .15s cubic-bezier(.4,1,.6,1))}
58
+ ._1ggl5xtf:active{transition:var(--ds-button-pressed,background-color border-color .15s cubic-bezier(.4,1,.6,1))}
59
59
  ._j6xt1c9b:active{background:var(--ds-top-bar-button-disabled-background)}
60
60
  ._j6xt5sko:active{background:var(--ds-top-bar-button-primary-background-pressed)}
61
61
  ._j6xtnh62:active{background:var(--ds-top-bar-button-selected-background-pressed)}
@@ -11,7 +11,7 @@ import { getPrimitiveSpreadProps } from './get-primitives-spread-props';
11
11
  const styles = {
12
12
  root: "_zulp12x7 _11c8fhey _2rkofajl _v5649dqc _4bfu1r31 _1hmsglyw _ajmmnqa1 _1rjcze3t _1e0c1txw _4cvr1h6o _1bah1h6o _4t3i5r7u _kqswh2mm _1nrm1r31 _1a3b1r31 _9oik1r31 _c2waglyw _4fprglyw _1bnxglyw _1iohnqa1 _5goinqa1 _jf4cnqa1",
13
13
  rootT26Shape: "_2rko1qi0",
14
- interactiveMotion: "_v564o1g2 _1gglat8s",
14
+ interactiveMotion: "_v564k6bl _1ggl5xtf",
15
15
  border: "_14mj1kw7 _9v7aze3t _1tv3nqa1 _39yqe4h9 _aetrb3bt _18postnw",
16
16
  selected: "_11q71qds _syazw5ct _8l3m15jn _f8pjw5ct _1053w5ct _19lcjrv1 _30l3w5ct _j6xtnh62 _9h8hw5ct",
17
17
  disabled: "_11q71c9b _syaz1i3i _8l3m1j28 _f8pj1i3i _10531i3i _19lc1c9b _30l31i3i _j6xt1c9b _9h8h1i3i"
@@ -8,7 +8,7 @@
8
8
  ._2rkofajl{border-radius:var(--ds-radius-small,3px)}
9
9
  ._9v7aze3t:after{inset:var(--ds-space-0,0)}
10
10
  ._v5649dqc{transition:background .1s ease-out}
11
- ._v564o1g2{transition:var(--ds-button-hovered,background-color .15s cubic-bezier(.4,1,.6,1))}
11
+ ._v564k6bl{transition:var(--ds-button-hovered,background-color border-color .15s cubic-bezier(.4,1,.6,1))}
12
12
  ._zulp12x7{gap:var(--ds-space-075,6px)}
13
13
  ._18zrutpp{padding-inline:var(--ds-space-150,9pt)}
14
14
  ._18zrze3t{padding-inline:var(--ds-space-0,0)}
@@ -55,7 +55,7 @@
55
55
  ._30l3w5ct:hover{color:var(--ds-top-bar-button-selected-text)}
56
56
  ._9oik1r31:hover{text-decoration-color:currentColor}
57
57
  ._jf4cnqa1:hover{text-decoration-style:solid}
58
- ._1gglat8s:active{transition:var(--ds-button-pressed,background-color .15s cubic-bezier(.4,1,.6,1))}
58
+ ._1ggl5xtf:active{transition:var(--ds-button-pressed,background-color border-color .15s cubic-bezier(.4,1,.6,1))}
59
59
  ._j6xt1c9b:active{background:var(--ds-top-bar-button-disabled-background)}
60
60
  ._j6xt5sko:active{background:var(--ds-top-bar-button-primary-background-pressed)}
61
61
  ._j6xtnh62:active{background:var(--ds-top-bar-button-selected-background-pressed)}
@@ -10,7 +10,7 @@ import { getPrimitiveSpreadProps } from './get-primitives-spread-props';
10
10
  const styles = {
11
11
  root: "_zulp12x7 _11c8fhey _2rkofajl _v5649dqc _4bfu1r31 _1hmsglyw _ajmmnqa1 _1rjcze3t _1e0c1txw _4cvr1h6o _1bah1h6o _4t3i5r7u _kqswh2mm _1nrm1r31 _1a3b1r31 _9oik1r31 _c2waglyw _4fprglyw _1bnxglyw _1iohnqa1 _5goinqa1 _jf4cnqa1",
12
12
  rootT26Shape: "_2rko1qi0",
13
- interactiveMotion: "_v564o1g2 _1gglat8s",
13
+ interactiveMotion: "_v564k6bl _1ggl5xtf",
14
14
  border: "_14mj1kw7 _9v7aze3t _1tv3nqa1 _39yqe4h9 _aetrb3bt _18postnw",
15
15
  selected: "_11q71qds _syazw5ct _8l3m15jn _f8pjw5ct _1053w5ct _19lcjrv1 _30l3w5ct _j6xtnh62 _9h8hw5ct",
16
16
  disabled: "_11q71c9b _syaz1i3i _8l3m1j28 _f8pj1i3i _10531i3i _19lc1c9b _30l31i3i _j6xt1c9b _9h8h1i3i"
@@ -1,4 +1,3 @@
1
- ._nd5l1b6c{grid-area:main/aside/aside/aside}
2
1
  ._191wglyw{border-inline-start:none}
3
2
  ._t51zglyw{border-inline-end:none}._152timx3{inset-block-start:calc(var(--n_bnrM, 0px) + var(--n_tNvM, 0px))}
4
3
  ._15yekb7n{--animation-direction:1}
@@ -7,22 +6,26 @@
7
6
  ._1bsb1ego{width:min(90%,20pc)}
8
7
  ._1e0c1txw{display:flex}
9
8
  ._1e0cglyw{display:none}
9
+ ._1p2s58oa{--exit-animation:var(--ds-sidenav-exit-left,200ms cubic-bezier(0.6,0,0.8,0.6) SlideOut100PercentLeft)}
10
10
  ._1pbycs5v{z-index:2}
11
11
  ._1pbyegat{z-index:4}
12
12
  ._2lx21bp4{flex-direction:column}
13
13
  ._4t3i1osq{height:100%}
14
14
  ._4t3ieqxy{height:calc(100vh - var(--n_bnrM, 0px) - var(--n_tNvM, 0px))}
15
15
  ._bfhk1bhr{background-color:var(--ds-surface-overlay,#fff)}
16
+ ._cjprp6j8{--enter-animation:var(--ds-sidenav-enter-left,250ms cubic-bezier(0,0.4,0,1) SlideIn100PercentLeft)}
16
17
  ._kqsw1if8{position:sticky}
17
18
  ._kqsw1n9t{position:fixed}
18
19
  ._t9ectl5p{transform:translateX(calc(var(--n_snvRsz, var(--n_snvW, 0px))))}
19
20
  ._u7coidpf{inset-block-end:0}
20
21
  ._vchhusvi{box-sizing:border-box}
22
+ [dir=rtl] ._1jq41dy6{--enter-animation:var(--ds-sidenav-enter-right,250ms cubic-bezier(0,0.4,0,1) SlideIn100PercentRight)}
23
+ [dir=rtl] ._2qe0k8f8{--exit-animation:var(--ds-sidenav-exit-right,200ms cubic-bezier(0.6,0,0.8,0.6) SlideOut100PercentRight)}
21
24
  [dir=rtl] ._65m41mrw{--animation-direction:-1}
22
- @media (prefers-reduced-motion:no-preference){._10t88iot{transition-property:transform,display}._1vrh1a5r{transition-behavior:allow-discrete}._xrrpfnf5{transition-duration:.2s}._1lh81gzg{grid-area:main}._1xq51mm8{transition-timing-function:cubic-bezier(0,.4,0,1)}@starting-style{._1nu51p9u{transform:translateX(calc(-100%*var(--animation-direction)))}}._1xq51ku9{transition-timing-function:cubic-bezier(.6,0,0,1)}}
25
+ @media (prefers-reduced-motion:no-preference){._10t81t0s{transition-property:display}._1vrh1a5r{transition-behavior:allow-discrete}._xrrpi9qs{transition-duration:var(--ds-duration-medium,.2s)}._10t88iot{transition-property:transform,display}._xrrpfnf5{transition-duration:.2s}._1lh81gzg{grid-area:main}._1xq51mm8{transition-timing-function:cubic-bezier(0,.4,0,1)}._k1affm5y{animation:var(--exit-animation)}@starting-style{._1nu51p9u{transform:translateX(calc(-100%*var(--animation-direction)))}}._1xq51ku9{transition-timing-function:cubic-bezier(.6,0,0,1)}._k1af10ed{animation:var(--enter-animation)}}
23
26
  @media (min-width:48rem){._14b5hc79{width:var(--n_snvRsz,var(--n_sNvw))}}
24
27
  @media (min-width:64rem){._165t56xv{height:calc(100vh - var(--n_bnrM, 0px))}._p0az1elq{transform:translateX(calc(var(--n_snvRsz, var(--n_snvW, 0px)) - var(--ds-border-width, 1px)))}._dm2518uv{display:initial}._dm25glyw{display:none}._qiln1gzg{grid-area:main}._p5clglyw{border-inline-end:none}._4ap31bhr{background-color:var(--ds-surface-overlay,#fff)}._scbp130s{box-shadow:var(--ds-shadow-overlay,0 8px 9pt #1e1f2126,0 0 1px #1e1f214f)}._qilnk0mc{grid-area:side-nav}._p5clia51{border-inline-end:var(--ds-border-width,1px) solid var(--ds-border,#0b120e24)}._4ap3vuon{background-color:var(--ds-surface,#fff)}._scbpglyw{box-shadow:none}}
25
- @media (prefers-reduced-motion:no-preference) and (min-width:64rem){._17ly8iot{transition-property:transform,display}._177m1a5r{transition-behavior:allow-discrete}._1sg81gzg{grid-area:main}._vgub1mm8{transition-timing-function:cubic-bezier(0,.4,0,1)}._hh1u1p9u{transform:translateX(calc(-100%*var(--animation-direction)))}@starting-style{._s2eg1p9u{transform:translateX(calc(-100%*var(--animation-direction)))}}._1sg8k0mc{grid-area:side-nav}._vgub1ku9{transition-timing-function:cubic-bezier(.6,0,0,1)}._hjoifnf5{transition-duration:.2s}}
28
+ @media (prefers-reduced-motion:no-preference) and (min-width:64rem){._17ly8iot{transition-property:transform,display}._177m1a5r{transition-behavior:allow-discrete}._1sg81gzg{grid-area:main}._n2infm5y{animation:var(--exit-animation)}._vgub1mm8{transition-timing-function:cubic-bezier(0,.4,0,1)}._hh1u1p9u{transform:translateX(calc(-100%*var(--animation-direction)))}._1sg8k0mc{grid-area:side-nav}._n2in10ed{animation:var(--enter-animation)}@starting-style{._s2eg1p9u{transform:translateX(calc(-100%*var(--animation-direction)))}}._vgub1ku9{transition-timing-function:cubic-bezier(.6,0,0,1)}._hjoifnf5{transition-duration:.2s}._hjoi1mzy{transition-duration:var(--ds-duration-long,.25s)}._hjoii9qs{transition-duration:var(--ds-duration-medium,.2s)}}
26
29
  @media (prefers-reduced-motion:no-preference) and (not (min-width:64rem)){._aadi1p9u{transform:translateX(calc(-100%*var(--animation-direction)))}}
27
30
  @media not (min-width:64rem){._89fi1b6c{grid-area:main/aside/aside/aside}}
28
- @supports not (-moz-appearance:none){@media (prefers-reduced-motion:no-preference){._139f8iot{transition-property:transform,display}._1tpvfnf5{transition-duration:.2s}._sylc1a5r{transition-behavior:allow-discrete}._1uwsjq3t{transform:translateX(-100%)}}@media (prefers-reduced-motion:no-preference){@starting-style{._oyeijq3t{transform:translateX(-100%)}}._139f8iot{transition-property:transform,display}._1tpvfnf5{transition-duration:.2s}._sylc1a5r{transition-behavior:allow-discrete}}}
31
+ @supports not (-moz-appearance:none){@media (prefers-reduced-motion:no-preference){._139f8iot{transition-property:transform,display}._1tpvfnf5{transition-duration:.2s}._sylc1a5r{transition-behavior:allow-discrete}._1uwsjq3t{transform:translateX(-100%)}}@media (prefers-reduced-motion:no-preference){@starting-style{._oyeijq3t{transform:translateX(-100%)}}._139f8iot{transition-property:transform,display}._1tpvfnf5{transition-duration:.2s}._sylc1a5r{transition-behavior:allow-discrete}}@media (prefers-reduced-motion:no-preference){._4xci10ed{animation:var(--enter-animation)}._1tpv1mzy{transition-duration:var(--ds-duration-long,.25s)}._sylc1a5r{transition-behavior:allow-discrete}}@media (prefers-reduced-motion:no-preference){._4xcifm5y{animation:var(--exit-animation)}._1tpvi9qs{transition-duration:var(--ds-duration-medium,.2s)}._sylc1a5r{transition-behavior:allow-discrete}}}
@@ -62,7 +62,7 @@ var panelSplitterPortalTargetStyles = {
62
62
  root: "_kqsw1n9t _1pbyegat _u7coidpf _t9ectl5p _4t3ieqxy _165t56xv _p0az1elq"
63
63
  };
64
64
  var styles = {
65
- root: "_191wglyw _t51zglyw _bfhk1bhr _16qs130s _vchhusvi _4t3ieqxy _152timx3 _kqsw1if8 _1bsb1ego _1pbycs5v _14b5hc79 _qilnk0mc _p5clia51 _4ap3vuon _scbpglyw",
65
+ root: "_191wglyw _t51zglyw _bfhk1bhr _16qs130s _vchhusvi _4t3ieqxy _152timx3 _kqsw1if8 _1bsb1ego _1pbycs5v _14b5hc79 _qilnk0mc _p5clia51 _4ap3vuon _scbpglyw _89fi1b6c",
66
66
  flyoutOpen: "_qiln1gzg _p5clglyw _4ap31bhr _scbp130s _139f8iot _1tpvfnf5 _sylc1a5r _oyeijq3t",
67
67
  flyoutAnimateClosed: "_1e0cglyw _qiln1gzg _139f8iot _1tpvfnf5 _sylc1a5r _1uwsjq3t",
68
68
  animationRTLSupport: "_15yekb7n _65m41mrw",
@@ -81,34 +81,28 @@ var styles = {
81
81
  };
82
82
 
83
83
  /**
84
- * Workaround for non-deterministic Compiled style ordering in local development. See MAGMA-4606.
84
+ * Styles for the side nav enter/exit animations when `platform-dst-motion-uplift-sidenav` is enabled.
85
85
  *
86
- * The mobile `grid-area` for the side nav, split out from `styles.root` so it can be gated. The
87
- * desktop rule (`gridArea: 'side-nav'`) lives in `styles.root` inside `@media (min-width: 64rem)`.
86
+ * These use the `motion.sidenav.*` tokens (keyframe animations) instead of the `transform` transitions
87
+ * with `@starting-style` used by `styles`.
88
88
  *
89
- * Why this is needed:
90
- * The mobile rule (unscoped) and the desktop rule (`@media (min-width: 64rem)`) compile to two atomic
91
- * rules of equal specificity a `@media` query adds no specificity so at desktop widths the winner
92
- * is decided purely by stylesheet insertion order (last wins). In production this is fine: Compiled's
93
- * stylesheet extraction sorts the media queries deterministically. But in local development stylesheet
94
- * extraction is disabled (https://github.com/atlassian-labs/compiled/issues/1306), so styles are
95
- * injected as inline `<style>` tags in whatever order components happen to render. Under streaming SSR
96
- * (Suspense), the desktop rule can be emitted earlier on the page by another component, leaving the
97
- * unscoped mobile rule last — so it wins on desktop and the side nav renders in the wrong grid area.
98
- *
99
- * - `mobileLegacy` (gate OFF): the original unscoped mobile rule, which exhibits the bug above.
100
- * - `mobile` (gate ON): the mobile rule scoped to `@media not (min-width: 64rem)`, the exact inverse
101
- * of the desktop `@media (min-width: 64rem)` rule. The two can never both match at a given viewport,
102
- * so insertion order no longer matters and the bug cannot occur.
103
- *
104
- * Cleaning up `fg('platform_dst_nav4_side_nav_grid_area_fix')` (gate fully rolled out):
105
- * 1. Move `gridAreaStyles.mobile`'s `@media not (min-width: 64rem)` grid-area rule back into
106
- * `styles.root`.
107
- * 2. Delete this entire block (`gridAreaStyles`) and the `fg(...)` branch in the `css` prop below.
89
+ * ⚠️ The `transition-duration` values below need to stay in sync with the duration baked into the tokens
90
+ * (`motion.sidenav.enter.*` is 250ms, `motion.sidenav.exit.*` is 200ms). The `display` property is
91
+ * transitioned (with `allow-discrete`) so the element stays rendered for the length of the exit animation
92
+ * if the transition is shorter than the animation, `display: none` applies early and the exit animation
93
+ * never runs.
108
94
  */
109
- var gridAreaStyles = {
110
- mobileLegacy: "_nd5l1b6c",
111
- mobile: "_89fi1b6c"
95
+ var motionUpliftStyles = {
96
+ animationRTLSupport: "_cjprp6j8 _1p2s58oa _1jq41dy6 _2qe0k8f8",
97
+ animationBaseStyles: "_10t81t0s _1vrh1a5r _xrrpi9qs",
98
+ expandAnimationMobile: "_k1af10ed",
99
+ collapseAnimationMobile: "_1lh81gzg _k1affm5y",
100
+ flyoutOpen: "_qiln1gzg _p5clglyw _4ap31bhr _scbp130s _4xci10ed _1tpv1mzy _sylc1a5r",
101
+ flyoutAnimateClosed: "_1e0cglyw _qiln1gzg _4xcifm5y _1tpvi9qs _sylc1a5r",
102
+ flyoutOpenFullHeightSidebar: "_n2in10ed _hjoi1mzy",
103
+ flyoutAnimateClosedFullHeightSidebar: "_dm25glyw _n2infm5y _hjoii9qs",
104
+ expandAnimationDesktop: "_1sg8k0mc _n2in10ed",
105
+ collapseAnimationDesktop: "_1sg81gzg _n2infm5y"
112
106
  };
113
107
  var fallbackDefaultWidth = 320;
114
108
  export var onPeekStartDelayMs = 500;
@@ -750,9 +744,10 @@ function SideNavInternal(_ref) {
750
744
  * Otherwise, the `@starting-style` rule will cause the sidebar to slide in initially.
751
745
  */
752
746
  var hasExpandedStateChanged = isExpandedStateDifferentFromInitial || hasExpandedStateChangedRef.current;
747
+ var isMotionUpliftEnabled = fg('platform-dst-motion-uplift-sidenav');
753
748
 
754
749
  // This is only used for the regular expand and collapse animations, not the flyout animations.
755
- var shouldShowSidebarToggleAnimation = isFhsEnabled &&
750
+ var shouldShowSidebarToggleAnimation = (isMotionUpliftEnabled || isFhsEnabled) &&
756
751
  // We do not apply the animation styles on the initial render, as the `@starting-style` rule will cause the sidebar to
757
752
  // slide in initially.
758
753
  hasExpandedStateChanged &&
@@ -783,7 +778,7 @@ function SideNavInternal(_ref) {
783
778
  style: _defineProperty({}, sideNavVar, clampedWidth),
784
779
  ref: mergedRef,
785
780
  "data-testid": testId,
786
- className: ax([styles.root, fg('platform_dst_nav4_side_nav_grid_area_fix') ? gridAreaStyles.mobile : gridAreaStyles.mobileLegacy, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop, isFhsEnabled && styles.animationRTLSupport, shouldShowSidebarToggleAnimation && styles.animationBaseStyles, isExpandedOnMobile && shouldShowSidebarToggleAnimation && styles.expandAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && styles.collapseAnimationMobile, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && styles.expandAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && styles.collapseAnimationDesktop, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && styles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && styles.flyoutAnimateClosed, ((sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close') && !isFirefox && isFhsEnabled && styles.flyoutBaseStylesFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && styles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar])
781
+ className: ax([styles.root, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop, isMotionUpliftEnabled && motionUpliftStyles.animationRTLSupport, !isMotionUpliftEnabled && isFhsEnabled && styles.animationRTLSupport, shouldShowSidebarToggleAnimation && isMotionUpliftEnabled && motionUpliftStyles.animationBaseStyles, shouldShowSidebarToggleAnimation && !isMotionUpliftEnabled && styles.animationBaseStyles, isExpandedOnMobile && shouldShowSidebarToggleAnimation && isMotionUpliftEnabled && motionUpliftStyles.expandAnimationMobile, isExpandedOnMobile && shouldShowSidebarToggleAnimation && !isMotionUpliftEnabled && styles.expandAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && isMotionUpliftEnabled && motionUpliftStyles.collapseAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && !isMotionUpliftEnabled && styles.collapseAnimationMobile, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && isMotionUpliftEnabled && motionUpliftStyles.expandAnimationDesktop, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && !isMotionUpliftEnabled && styles.expandAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && isMotionUpliftEnabled && motionUpliftStyles.collapseAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && !isMotionUpliftEnabled && styles.collapseAnimationDesktop, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && isMotionUpliftEnabled && motionUpliftStyles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && !isMotionUpliftEnabled && styles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && isMotionUpliftEnabled && motionUpliftStyles.flyoutAnimateClosed, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && !isMotionUpliftEnabled && styles.flyoutAnimateClosed, ((sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close') && !isFirefox && isFhsEnabled && styles.flyoutBaseStylesFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && isMotionUpliftEnabled && motionUpliftStyles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && !isMotionUpliftEnabled && styles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && isMotionUpliftEnabled && motionUpliftStyles.flyoutAnimateClosedFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && !isMotionUpliftEnabled && styles.flyoutAnimateClosedFullHeightSidebar])
787
782
  }), /*#__PURE__*/React.createElement(DangerouslyHoistCssVarToDocumentRoot, {
788
783
  variableName: sideNavLiveWidthVar,
789
784
  value: "0px",
@@ -8,7 +8,7 @@
8
8
  ._2rkofajl{border-radius:var(--ds-radius-small,3px)}
9
9
  ._9v7aze3t:after{inset:var(--ds-space-0,0)}
10
10
  ._v5649dqc{transition:background .1s ease-out}
11
- ._v564o1g2{transition:var(--ds-button-hovered,background-color .15s cubic-bezier(.4,1,.6,1))}
11
+ ._v564k6bl{transition:var(--ds-button-hovered,background-color border-color .15s cubic-bezier(.4,1,.6,1))}
12
12
  ._zulp12x7{gap:var(--ds-space-075,6px)}
13
13
  ._18zrutpp{padding-inline:var(--ds-space-150,9pt)}
14
14
  ._18zrze3t{padding-inline:var(--ds-space-0,0)}
@@ -55,7 +55,7 @@
55
55
  ._30l3w5ct:hover{color:var(--ds-top-bar-button-selected-text)}
56
56
  ._9oik1r31:hover{text-decoration-color:currentColor}
57
57
  ._jf4cnqa1:hover{text-decoration-style:solid}
58
- ._1gglat8s:active{transition:var(--ds-button-pressed,background-color .15s cubic-bezier(.4,1,.6,1))}
58
+ ._1ggl5xtf:active{transition:var(--ds-button-pressed,background-color border-color .15s cubic-bezier(.4,1,.6,1))}
59
59
  ._j6xt1c9b:active{background:var(--ds-top-bar-button-disabled-background)}
60
60
  ._j6xt5sko:active{background:var(--ds-top-bar-button-primary-background-pressed)}
61
61
  ._j6xtnh62:active{background:var(--ds-top-bar-button-selected-background-pressed)}
@@ -13,7 +13,7 @@ import { getPrimitiveSpreadProps } from './get-primitives-spread-props';
13
13
  var styles = {
14
14
  root: "_zulp12x7 _11c8fhey _2rkofajl _v5649dqc _4bfu1r31 _1hmsglyw _ajmmnqa1 _1rjcze3t _1e0c1txw _4cvr1h6o _1bah1h6o _4t3i5r7u _kqswh2mm _1nrm1r31 _1a3b1r31 _9oik1r31 _c2waglyw _4fprglyw _1bnxglyw _1iohnqa1 _5goinqa1 _jf4cnqa1",
15
15
  rootT26Shape: "_2rko1qi0",
16
- interactiveMotion: "_v564o1g2 _1gglat8s",
16
+ interactiveMotion: "_v564k6bl _1ggl5xtf",
17
17
  border: "_14mj1kw7 _9v7aze3t _1tv3nqa1 _39yqe4h9 _aetrb3bt _18postnw",
18
18
  selected: "_11q71qds _syazw5ct _8l3m15jn _f8pjw5ct _1053w5ct _19lcjrv1 _30l3w5ct _j6xtnh62 _9h8hw5ct",
19
19
  disabled: "_11q71c9b _syaz1i3i _8l3m1j28 _f8pj1i3i _10531i3i _19lc1c9b _30l31i3i _j6xt1c9b _9h8h1i3i"
@@ -8,7 +8,7 @@
8
8
  ._2rkofajl{border-radius:var(--ds-radius-small,3px)}
9
9
  ._9v7aze3t:after{inset:var(--ds-space-0,0)}
10
10
  ._v5649dqc{transition:background .1s ease-out}
11
- ._v564o1g2{transition:var(--ds-button-hovered,background-color .15s cubic-bezier(.4,1,.6,1))}
11
+ ._v564k6bl{transition:var(--ds-button-hovered,background-color border-color .15s cubic-bezier(.4,1,.6,1))}
12
12
  ._zulp12x7{gap:var(--ds-space-075,6px)}
13
13
  ._18zrutpp{padding-inline:var(--ds-space-150,9pt)}
14
14
  ._18zrze3t{padding-inline:var(--ds-space-0,0)}
@@ -55,7 +55,7 @@
55
55
  ._30l3w5ct:hover{color:var(--ds-top-bar-button-selected-text)}
56
56
  ._9oik1r31:hover{text-decoration-color:currentColor}
57
57
  ._jf4cnqa1:hover{text-decoration-style:solid}
58
- ._1gglat8s:active{transition:var(--ds-button-pressed,background-color .15s cubic-bezier(.4,1,.6,1))}
58
+ ._1ggl5xtf:active{transition:var(--ds-button-pressed,background-color border-color .15s cubic-bezier(.4,1,.6,1))}
59
59
  ._j6xt1c9b:active{background:var(--ds-top-bar-button-disabled-background)}
60
60
  ._j6xt5sko:active{background:var(--ds-top-bar-button-primary-background-pressed)}
61
61
  ._j6xtnh62:active{background:var(--ds-top-bar-button-selected-background-pressed)}
@@ -12,7 +12,7 @@ import { getPrimitiveSpreadProps } from './get-primitives-spread-props';
12
12
  var styles = {
13
13
  root: "_zulp12x7 _11c8fhey _2rkofajl _v5649dqc _4bfu1r31 _1hmsglyw _ajmmnqa1 _1rjcze3t _1e0c1txw _4cvr1h6o _1bah1h6o _4t3i5r7u _kqswh2mm _1nrm1r31 _1a3b1r31 _9oik1r31 _c2waglyw _4fprglyw _1bnxglyw _1iohnqa1 _5goinqa1 _jf4cnqa1",
14
14
  rootT26Shape: "_2rko1qi0",
15
- interactiveMotion: "_v564o1g2 _1gglat8s",
15
+ interactiveMotion: "_v564k6bl _1ggl5xtf",
16
16
  border: "_14mj1kw7 _9v7aze3t _1tv3nqa1 _39yqe4h9 _aetrb3bt _18postnw",
17
17
  selected: "_11q71qds _syazw5ct _8l3m15jn _f8pjw5ct _1053w5ct _19lcjrv1 _30l3w5ct _j6xtnh62 _9h8hw5ct",
18
18
  disabled: "_11q71c9b _syaz1i3i _8l3m1j28 _f8pj1i3i _10531i3i _19lc1c9b _30l31i3i _j6xt1c9b _9h8h1i3i"
@@ -39,7 +39,7 @@ const documentation: StructuredContentSource = {
39
39
  {
40
40
  name: 'Top navigation',
41
41
  description: 'Basic usage of the top navigation bar.',
42
- source: path.resolve(packagePath, './examples/top-navigation.tsx'),
42
+ source: path.resolve(packagePath, './examples/top-navigation.vr.ap.tsx'),
43
43
  },
44
44
  ],
45
45
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/navigation-system",
3
- "version": "10.11.0",
3
+ "version": "10.12.0",
4
4
  "description": "The latest navigation system for Atlassian apps.",
5
5
  "repository": "https://bitbucket.org/atlassian/atlassian-frontend-mirror",
6
6
  "author": "Atlassian Pty Ltd",
@@ -54,8 +54,8 @@
54
54
  },
55
55
  "dependencies": {
56
56
  "@atlaskit/analytics-next": "^12.3.0",
57
- "@atlaskit/app-provider": "^5.2.0",
58
- "@atlaskit/avatar": "^26.4.0",
57
+ "@atlaskit/app-provider": "^5.3.0",
58
+ "@atlaskit/avatar": "^27.0.0",
59
59
  "@atlaskit/button": "^25.0.0",
60
60
  "@atlaskit/css": "^1.0.0",
61
61
  "@atlaskit/ds-lib": "^8.0.0",
@@ -70,7 +70,7 @@
70
70
  "@atlaskit/primitives": "^22.2.0",
71
71
  "@atlaskit/react-compiler-gating": "^0.2.0",
72
72
  "@atlaskit/side-nav-items": "^2.3.0",
73
- "@atlaskit/tokens": "^16.3.0",
73
+ "@atlaskit/tokens": "^16.6.0",
74
74
  "@atlaskit/tooltip": "^24.0.0",
75
75
  "@atlaskit/visually-hidden": "^4.2.0",
76
76
  "@babel/runtime": "^7.0.0",
@@ -90,28 +90,28 @@
90
90
  "@atlaskit/badge": "^21.0.0",
91
91
  "@atlaskit/banner": "^15.1.0",
92
92
  "@atlaskit/breadcrumbs": "^17.5.0",
93
- "@atlaskit/dropdown-menu": "^17.2.0",
93
+ "@atlaskit/dropdown-menu": "^18.0.0",
94
94
  "@atlaskit/flag": "^18.2.0",
95
- "@atlaskit/form": "^16.1.0",
95
+ "@atlaskit/form": "^17.0.0",
96
96
  "@atlaskit/heading": "^7.0.0",
97
- "@atlaskit/inline-dialog": "^19.2.0",
97
+ "@atlaskit/inline-dialog": "^20.0.0",
98
98
  "@atlaskit/link": "^5.0.0",
99
99
  "@atlaskit/lozenge": "^15.0.0",
100
- "@atlaskit/menu": "^9.2.0",
101
- "@atlaskit/modal-dialog": "^16.2.0",
100
+ "@atlaskit/menu": "^10.0.0",
101
+ "@atlaskit/modal-dialog": "^16.3.0",
102
102
  "@atlaskit/onboarding": "^15.1.0",
103
103
  "@atlaskit/page-header": "^13.1.0",
104
104
  "@atlaskit/page-layout": "^5.2.0",
105
- "@atlaskit/popper": "^9.0.0",
105
+ "@atlaskit/popper": "^9.1.0",
106
106
  "@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^3.0.0",
107
107
  "@atlaskit/select": "^22.6.0",
108
108
  "@atlaskit/skeleton": "^4.2.0",
109
- "@atlaskit/spotlight": "^3.0.0",
109
+ "@atlaskit/spotlight": "^4.0.0",
110
110
  "@atlaskit/textfield": "^10.0.0",
111
- "@atlaskit/top-layer": "^3.0.0",
111
+ "@atlaskit/top-layer": "^3.2.0",
112
112
  "@atlassian/feature-flags-test-utils": "^1.2.0",
113
113
  "@atlassian/gemini": "^1.51.0",
114
- "@atlassian/search-dialog": "^10.7.0",
114
+ "@atlassian/search-dialog": "^10.9.0",
115
115
  "@atlassian/ssr-tests": "workspace:^",
116
116
  "@atlassian/test-utils": "^1.1.0",
117
117
  "@atlassian/testing-library": "^0.11.0",
@@ -122,26 +122,6 @@
122
122
  "react": "^18.2.0",
123
123
  "react-dom": "^18.2.0"
124
124
  },
125
- "techstack": {
126
- "@atlassian/frontend": {
127
- "import-structure": "atlassian-conventions"
128
- },
129
- "@repo/internal": {
130
- "dom-events": "use-bind-event-listener",
131
- "design-tokens": [
132
- "color",
133
- "spacing",
134
- "motion"
135
- ],
136
- "deprecation": "no-deprecated-imports",
137
- "imports": [
138
- "import-no-extraneous-disable-for-examples-and-docs"
139
- ],
140
- "styling": [
141
- "emotion"
142
- ]
143
- }
144
- },
145
125
  "platform-feature-flags": {
146
126
  "platform-dst-top-layer": {
147
127
  "type": "boolean",
@@ -166,7 +146,7 @@
166
146
  "platform_dst_nav4_skip_link_a11y_1": {
167
147
  "type": "boolean"
168
148
  },
169
- "platform_dst_nav4_side_nav_grid_area_fix": {
149
+ "platform-dst-motion-uplift-sidenav": {
170
150
  "type": "boolean"
171
151
  },
172
152
  "platform-dst-motion-uplift-button": {