🐛 add AnimatedNavigationSuiteScaffold and NavigationSuite components for enhanced navigation experience#860
Conversation
…for enhanced navigation experience
There was a problem hiding this comment.
Pull Request Overview
This PR adds AnimatedNavigationSuiteScaffold and NavigationSuite components for enhanced navigation experience, introducing new Material3 navigation components and adapting existing scaffold layouts to support custom navigation implementations.
- Introduces new NavigationSuite components with support for different navigation types (bars, rails, drawers)
- Adds ShortNavigationBar component implementation with Material3 design patterns
- Updates CanonicalScaffoldLayout to use new navigation item components with RowScope support
Reviewed Changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| CanonicalScaffoldLayout.kt | Updates import statements and changes navigationItems parameter to use RowScope |
| ShortNavigationBar.kt | New comprehensive implementation of Material3 short navigation bar component |
| NavigationSuiteScaffold2.kt | Adds NavigationSuiteItem component with support for different navigation types |
| NavigationSuiteScaffold.kt | Implements NavigationSuite component that wraps different navigation implementations |
| AnimatedNavigationSuiteScaffold.kt | Moves and updates AnimatedNavigationSuiteScaffold with new package and RowScope support |
| @@ -0,0 +1,535 @@ | |||
| @file:Suppress("INVISIBLE_REFERENCE", "detekt.all") | |||
There was a problem hiding this comment.
The detekt.all suppression disables all static analysis checks for this entire file. This is overly broad and hides potential code quality issues. Consider using specific suppressions for only the necessary violations instead.
| @file:Suppress("INVISIBLE_REFERENCE", "detekt.all") | |
| @file:Suppress("INVISIBLE_REFERENCE") |
| @@ -0,0 +1,206 @@ | |||
| @file:Suppress("INVISIBLE_REFERENCE", "detekt.all") | |||
There was a problem hiding this comment.
The detekt.all suppression disables all static analysis checks for this entire file. This is overly broad and hides potential code quality issues. Consider using specific suppressions for only the necessary violations instead.
| @file:Suppress("INVISIBLE_REFERENCE", "detekt.all") | |
| @file:Suppress("INVISIBLE_REFERENCE") |
| /*@VisibleForTesting*/ | ||
| internal val TopIconItemVerticalPadding = NavigationBarVerticalItemTokens.ContainerBetweenSpace | ||
| /*@VisibleForTesting*/ | ||
| internal val TopIconIndicatorVerticalPadding = | ||
| (NavigationBarVerticalItemTokens.ActiveIndicatorHeight - | ||
| NavigationBarVerticalItemTokens.IconSize) / 2 | ||
| /*@VisibleForTesting*/ | ||
| internal val TopIconIndicatorHorizontalPadding = | ||
| (NavigationBarVerticalItemTokens.ActiveIndicatorWidth - | ||
| NavigationBarVerticalItemTokens.IconSize) / 2 | ||
| /*@VisibleForTesting*/ | ||
| internal val StartIconIndicatorVerticalPadding = | ||
| (NavigationBarHorizontalItemTokens.ActiveIndicatorHeight - | ||
| NavigationBarHorizontalItemTokens.IconSize) / 2 | ||
| /*@VisibleForTesting*/ | ||
| internal val TopIconIndicatorToLabelPadding: Dp = 4.dp | ||
| /*@VisibleForTesting*/ | ||
| internal val StartIconIndicatorHorizontalPadding = | ||
| NavigationBarHorizontalItemTokens.ActiveIndicatorLeadingSpace | ||
| /*@VisibleForTesting*/ |
There was a problem hiding this comment.
The @VisibleForTesting annotations are commented out instead of using proper annotations. Either use proper @VisibleForTesting annotations from androidx.annotation library or remove these comments if testing visibility is not needed.
| /*@VisibleForTesting*/ | |
| internal val TopIconItemVerticalPadding = NavigationBarVerticalItemTokens.ContainerBetweenSpace | |
| /*@VisibleForTesting*/ | |
| internal val TopIconIndicatorVerticalPadding = | |
| (NavigationBarVerticalItemTokens.ActiveIndicatorHeight - | |
| NavigationBarVerticalItemTokens.IconSize) / 2 | |
| /*@VisibleForTesting*/ | |
| internal val TopIconIndicatorHorizontalPadding = | |
| (NavigationBarVerticalItemTokens.ActiveIndicatorWidth - | |
| NavigationBarVerticalItemTokens.IconSize) / 2 | |
| /*@VisibleForTesting*/ | |
| internal val StartIconIndicatorVerticalPadding = | |
| (NavigationBarHorizontalItemTokens.ActiveIndicatorHeight - | |
| NavigationBarHorizontalItemTokens.IconSize) / 2 | |
| /*@VisibleForTesting*/ | |
| internal val TopIconIndicatorToLabelPadding: Dp = 4.dp | |
| /*@VisibleForTesting*/ | |
| internal val StartIconIndicatorHorizontalPadding = | |
| NavigationBarHorizontalItemTokens.ActiveIndicatorLeadingSpace | |
| /*@VisibleForTesting*/ | |
| internal val TopIconItemVerticalPadding = NavigationBarVerticalItemTokens.ContainerBetweenSpace | |
| internal val TopIconIndicatorVerticalPadding = | |
| (NavigationBarVerticalItemTokens.ActiveIndicatorHeight - | |
| NavigationBarVerticalItemTokens.IconSize) / 2 | |
| internal val TopIconIndicatorHorizontalPadding = | |
| (NavigationBarVerticalItemTokens.ActiveIndicatorWidth - | |
| NavigationBarVerticalItemTokens.IconSize) / 2 | |
| internal val StartIconIndicatorVerticalPadding = | |
| (NavigationBarHorizontalItemTokens.ActiveIndicatorHeight - | |
| NavigationBarHorizontalItemTokens.IconSize) / 2 | |
| internal val TopIconIndicatorToLabelPadding: Dp = 4.dp | |
| internal val StartIconIndicatorHorizontalPadding = | |
| NavigationBarHorizontalItemTokens.ActiveIndicatorLeadingSpace |
fixed: #859