Skip to content

feat(lib): Add List item component - #3618

Open
louismaximepiton wants to merge 24 commits into
mainfrom
ouds/main-lmp-add-list-item
Open

feat(lib): Add List item component#3618
louismaximepiton wants to merge 24 commits into
mainfrom
ouds/main-lmp-add-list-item

Conversation

@louismaximepiton

@louismaximepiton louismaximepiton commented Jun 24, 2026

Copy link
Copy Markdown
Member

Types of change

  • Non-breaking change
  • Breaking change (fix or feature that would change existing functionality and usage)

Related issues

Closes #2783.

Context & Motivation

Add the list-item to the component we officially support.

Description

TODO

Checklists

  • I have read the contributing guidelines
  • My change follows the developer guide
  • My change pass all tests
  • My change is compatible with a responsive display
  • I have added tests (Javascript unit test or visual) to cover my changes
  • My change introduces changes to the documentation that I have updated accordingly
    • Title and DOM structure is correct
    • Links have been updated (title changes impact links)
    • CSS for the documentation
  • I have checked all states and combinations of the component with my change
  • I have checked all the impacts for the other components and core behavior (grid, reboot, utilities)

Checklist (for Core Team only)

  • The changes need to be in the migration guide
  • The changes are well displayed in Storybook (be careful if example order has changed for DSM)
  • The changes are compatible with RTL
  • Manually test browser compatibility with BrowserStack (Chrome 120, Firefox 121, Edge 120, Safari 15.6, iOS Safari, Chrome & Firefox on Android)

Progression (for Core Team only)

Live previews

@netlify

netlify Bot commented Jun 24, 2026

Copy link
Copy Markdown

Deploy Preview for boosted ready!

Name Link
🔨 Latest commit 09d027a
🔍 Latest deploy log https://app.netlify.com/projects/boosted/deploys/6a7594ca515ac5000817d5e1
😎 Deploy Preview https://deploy-preview-3618--boosted.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

Base automatically changed from tokenator-update-tokens-20260624085816 to ouds/main July 3, 2026 12:12
@louismaximepiton
louismaximepiton marked this pull request as ready for review July 8, 2026 10:13
Copilot AI review requested due to automatic review settings July 8, 2026 10:13
@boosted-bot boosted-bot moved this from In Progress / Draft to Need Dev Review in 🟣 [Orange-Boosted-Bootstrap] PRs Board Jul 8, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces the new List item component to OUDS Web, including its core SCSS implementation, brand token additions (icons), and the documentation page + site plumbing needed to surface it in the docs.

Changes:

  • Added the new scss/_list-item.scss component and wired it into all 3 brand entrypoints.
  • Added documentation for List item (new MDX page) and new Astro shortcodes to render “asset” tabs in the docs.
  • Updated skeleton styling/docs and adjusted docs-site configuration (anchors depth, sidebar/cards, bundlewatch thresholds).

Reviewed changes

Copilot reviewed 21 out of 22 changed files in this pull request and generated 20 comments.

Show a summary per file
File Description
site/src/types/auto-import.d.ts Registers new shortcodes for auto-import in MDX/docs.
site/src/scss/_component-examples.scss Adds docs-only chip styling for tab UI (currently duplicates chip selected styles).
site/src/content/docs/components/skeleton.mdx Adds List item markup to skeleton documentation examples.
site/src/content/docs/components/list-item.mdx New List item documentation page and examples.
site/src/components/shortcodes/AssetsTab.astro New shortcode representing a single tab panel section.
site/src/components/shortcodes/AssetsNavTab.astro New shortcode rendering the tablist + tabpanels and hash navigation behavior.
site/data/sidebar-components.yml Adds “List item” to the components sidebar.
site/data/components-details.ts Adds component cards/snippets for List item variants.
site/data/_components-versions.yml Updates component “added in version” data (currently missing list-item types).
scss/_skeleton.scss Extends skeleton placeholder styling to .item-wrapper.
scss/_list-item.scss New SCSS implementation of the List item component.
packages/sosh/scss/tokens/_composite.scss Adds list-item navigation icons (brand-specific SVG data URLs).
packages/sosh/scss/ouds-web.scss Imports the new list-item component into the Sosh bundle.
packages/sosh/config.yml Increases docs anchors max depth to 6.
packages/orange/scss/tokens/_composite.scss Adds list-item navigation icons (brand-specific SVG data URLs).
packages/orange/scss/tokens/_component.scss Modifies auto-generated token output (should not be edited manually).
packages/orange/scss/ouds-web.scss Imports the new list-item component into the Orange bundle.
packages/orange/config.yml Increases docs anchors max depth to 6.
packages/orange-compact/scss/tokens/_composite.scss Adds list-item navigation icons (brand-specific SVG data URLs).
packages/orange-compact/scss/ouds-web.scss Imports the new list-item component into the Orange Compact bundle.
packages/orange-compact/config.yml Increases docs anchors max depth to 6.
.bundlewatch.config.json Raises bundle size limits to account for added CSS.

Comment thread scss/_list-item.scss Outdated
Comment thread scss/_list-item.scss
Comment thread scss/_list-item.scss
Comment thread scss/_list-item.scss
Comment thread scss/_list-item.scss Outdated
Comment thread site/src/content/docs/components/list-item.mdx Outdated
Comment thread site/src/content/docs/components/list-item.mdx
Comment thread site/src/content/docs/components/list-item.mdx Outdated
Comment thread site/src/content/docs/components/list-item.mdx Outdated
Comment thread site/src/scss/_component-examples.scss
Comment thread site/src/content/docs/components/list-item.mdx Outdated
Comment thread site/src/content/docs/components/list-item.mdx Outdated
</div>
</div>`} />

### Sizes

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know there is a common template to component pages.
However, sizes section is mentioned repeatedly before being read.
Maybe we should invert sizes and variants section to clarify the available sizes ?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes maybe, let's discuss it with other people

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure, in the Sizes paragraph we reference other variant so we would have the same problem but reversed... Although Sizes are always short paragraphs compared to Variants so it could make sense to switch

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand the reasons, but we should keep the same order everywhere.
I have the intuition that when we develop, we rather choose first the variant and then the size ? Though I have a small preference for keeping the current order.

@MaxLardenois MaxLardenois left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just some comment on my first pass, I have opinions ;)
I will try to suggest something for the approach section

I definitely think this group is not named correctly, it should be Items

@@ -39,6 +39,7 @@
@import "@ouds/web-common/scss/alert";
@import "@ouds/web-common/scss/progress";
@import "@ouds/web-common/scss/list-group";

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't we remove list group?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with Maxime

@@ -0,0 +1,1061 @@
---
title: List item

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the end, I think the name of the group should be Items

Yes it is not very descriptive but it's the common thing with these components.

Right now we have list item components that can be outside a list ! This is not understandable.

I understand the name of the design group is List item but I think we should still rename this page to Items without changing the design name (even though I think we should try to convince Maxime)

In any case we should have a plural like we determined for groups pages (like Badges, Buttons...)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a problem to break the plural rule that we had until now... And yes, the name is hard to understand.

Comment thread site/src/content/docs/components/list-item.mdx Outdated
Comment thread site/src/content/docs/components/list-item.mdx Outdated
Comment thread site/src/content/docs/components/list-item.mdx Outdated
Comment thread site/src/content/docs/components/list-item.mdx Outdated
Comment thread site/src/content/docs/components/list-item.mdx Outdated
Comment thread site/src/content/docs/components/list-item.mdx
@louismaximepiton
louismaximepiton force-pushed the ouds/main-lmp-add-list-item branch from 4c2ad89 to 3d1d201 Compare July 29, 2026 09:34
@louismaximepiton
louismaximepiton changed the base branch from main to tokenator-update-tokens-20260722113803 July 29, 2026 09:35
Base automatically changed from tokenator-update-tokens-20260722113803 to main August 6, 2026 14:38

@hannahiss hannahiss left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had to stop at #leading-container but it appears there that the texts about sizes is not very clear...

@@ -39,6 +39,7 @@
@import "@ouds/web-common/scss/alert";
@import "@ouds/web-common/scss/progress";
@import "@ouds/web-common/scss/list-group";

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with Maxime

@@ -0,0 +1,1061 @@
---
title: List item

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a problem to break the plural rule that we had until now... And yes, the name is hard to understand.

Comment on lines +127 to +128
- Navigation items, which allow navigation.
- Static items, which are not interactive.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should have static items first to respect the presentation order? (and static is simpler than interactive)

Comment on lines +130 to +137
The following table summarizes the different types of items and their categories.

<BsTable>
| Categories | Card | List |
| -------------- | -------------------- | -------------------- |
| *Static* | [Static card item](#static-card-item) | [Static list item](#static-list-item) |
| *Navigation* | [Navigation card item](#navigation-card-item) | [Navigation list item](#navigation-list-item) |
</BsTable>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ins't it redundant with the text just above?


For navigation items, a wrapping `<nav>` element can be added if it is an important navigation in the page.

In case of a complex navigation list item, you probably should link all the texts and components together by adding `[aria-describedby]` on the link in order to provide a valid accessible name for the link. The `[aria-describedby]` should point to the id of the element that contains the texts of the link.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
In case of a complex navigation list item, you probably should link all the texts and components together by adding `[aria-describedby]` on the link in order to provide a valid accessible name for the link. The `[aria-describedby]` should point to the id of the element that contains the texts of the link.
In case of a complex navigation list item, you probably should link all the texts and components together by adding `[aria-describedby]` on the link in order to provide a valid accessible name for the link. The `[aria-describedby]` should point to the ids of the elements that contain the texts of the link.

Add `.item-external` to the `.item-navigation` to indicate that the item is an external link. This will add an external link icon to the end of the item.

<Callout type="info">
For accessibility reasons, it is recommended to add a visually hidden text (or a visible one if the icon is far from the text) to indicate that the link opens an external resource. Take a look at [some more complete accessibility guidelines](https://a11y-guidelines.orange.com/en/web/develop/common-navigation/#warn-the-user-when-opening-a-new-window).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
For accessibility reasons, it is recommended to add a visually hidden text (or a visible one if the icon is far from the text) to indicate that the link opens an external resource. Take a look at [some more complete accessibility guidelines](https://a11y-guidelines.orange.com/en/web/develop/common-navigation/#warn-the-user-when-opening-a-new-window).
For accessibility reasons, it is recommended to add a `.visually-hidden` text (or a visible one if the icon is far from the text) to indicate that the link opens an external resource. Take a look at [some more complete accessibility guidelines](https://a11y-guidelines.orange.com/en/web/develop/common-navigation/#warn-the-user-when-opening-a-new-window).

Optionally, the `<a>` element can wrap the entire `.item` instead of just the label.

<Callout type="info" title="Accessibility">
ATs will read the entire item as a link. You can use the visually hidden text to provide additional context if needed. You won't need any `[aria-describedby]` as stated in our [accessibility section](#accessibility).

@hannahiss hannahiss Aug 7, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
ATs will read the entire item as a link. You can use the visually hidden text to provide additional context if needed. You won't need any `[aria-describedby]` as stated in our [accessibility section](#accessibility).
Screen readers will read the entire item as a link. You can use the `.visually-hidden` text to provide additional context if needed. You won't need any `[aria-describedby]` as stated in our [accessibility section](#accessibility).

<Callout type="info" title="Accessibility">
ATs will read the entire item as a link. You can use the visually hidden text to provide additional context if needed. You won't need any `[aria-describedby]` as stated in our [accessibility section](#accessibility).

Make sure to not use any interactive elements inside the item when using this variant, as it will create nested interactive elements which is not valid HTML and can cause accessibility issues.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Make sure to not use any interactive elements inside the item when using this variant, as it will create nested interactive elements which is not valid HTML and can cause accessibility issues.
Make sure not to use any interactive elements inside the item when using this variant, as it will create nested interactive elements which is not valid HTML and can cause accessibility issues.


Navigation card item is a UI element that displays a unit of information in an interactive, self-contained card, taking users to an internal or external destination.

The navigation card item is used when the content requires stronger visual grouping or prominence than a standard [navigation list item](#navigation-list-item). It may be displayed independently or within a card-based layout. Each card acts as a single navigation target and supports the necessary hover, pressed, and keyboard focus states.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did not understand this phrase... I thought navigation card item was for single usage whereas navigation list item was for a list?


Here is a list of the different assets that we support in the leading container, along with their corresponding classes and notes.

You can navigate through the different assets using the tabs below.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
You can navigate through the different assets using the tabs below.
You can navigate through the different assets using the filters below.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

⚛️ component css 📖 documentation Improvements or additions to documentation 🧰 library

Projects

Status: Need Dev Review

Development

Successfully merging this pull request may close these issues.

[OUDS] Create component - List Item

6 participants