Repository navigation
Conversation
Contributor
Code Metrics Report
Details | | main (eb44189) | #636 (01e487d) | +/- |
|---------------------|----------------|----------------|-------|
+ | Coverage | 89.3% | 89.3% | +0.0% |
| Files | 227 | 231 | +4 |
| Lines | 7240 | 7258 | +18 |
+ | Covered | 6470 | 6488 | +18 |
- | Test Execution Time | 2m32s | 2m46s | +14s |Code coverage of files in pull request scope (78.7% → 82.0%, patch 100.0%)
Reported by octocov |
IzumiSy
marked this pull request as ready for review
October 22, 2026 05:01
Contributor
Author
|
@copilot resolve the merge conflicts in this pull request |
# Conflicts: # packages/core/src/components/sidebar/primitives.tsx Co-authored-by: IzumiSy <982850+IzumiSy@users.noreply.github.com>
Contributor
Resolved the conflict and merged |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
Compact navigation and action lists are useful in page content and tables of contents, not only inside the Sidebar. Rebuilding those rows separately duplicates presentation and makes spacing, active states, and nested lists drift from the Sidebar.
Provide an independent ItemList that works without AppShell, Sidebar, or router providers while keeping route matching, translated labels, and permissions with the caller.
Screen shot
Design Decision
Share presentation without Sidebar behavior
Extract
components/internals/item-list-baseas the internal presentation layer shared by the publicItemListand the existing Sidebar. The dependency direction is consumer → shared base; ItemList and Sidebar do not depend on each other.flowchart TD ItemList["Public ItemList<br/>components/item-list"] --> Base["Internal item-list-base<br/>components/internals/item-list-base"] Sidebar["Sidebar components"] --> Primitives["Sidebar primitives<br/>components/sidebar/primitives.tsx"] Primitives --> Baseitem-list-baseowns the sharedListRoot,ListItem,ListButton,ListSub, andListLabelprimitives: list structure, row styling, nested-list indentation, and render composition. It is not exported from the package root and is not a consumer API.ItemListcomposes those primitives into independent items, expandable groups, flat sections, and separators, including disabled-link handling. The caller owns route matching, translated labels, permissions, andaria-current.The
item-list-basename distinguishes this internal foundation from the publicitem-listcomponent. Sharing the presentation avoids maintaining two copies without making content lists depend on Sidebar providers or behavior.Preserve native controls and composition
Use ordinary lists, buttons, and supplied links instead of introducing menu or selection-widget behavior. Linked groups keep navigation separate from expansion, and active styling does not imply current-page or selection semantics.
Let Base UI and rendered components supply their own button defaults. Removing an explicit
type: undefinedpreserves AppShell Button's non-submit default when composed throughrender, preventing accidental form submissions.Summary
render={<Button />}regression.