Skip to content

Update icons to v2.2 and manage future updates - #3729

Merged
vprothais merged 67 commits into
mainfrom
main-his-update-icons-2.1
Aug 26, 2026
Merged

vprothais merged 67 commits into
mainfrom
main-his-update-icons-2.1

Conversation

@hannahiss

@hannahiss hannahiss commented Jul 29, 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 #3652

Context & Motivation

This PR is to update all OUDS icons to v2.1 across all 3 themes(Orange, Sosh, Orange Compact) and simplify the future updates of icons.

It updates the SVG paths in sprite and composite files, reorganizes icon naming, removes useless icons and adds two new build scripts for automated icon comparison/update.

Description


1. Composite Icons (_composite.scss) — All 3 Brands

The icon section of _composite.scss has been completely reorganized with clear section headers by component (// * Alert *, // * Badge *, // * Button *, etc.), replacing the previous flat layout. When identical icons are detected, they are reused to lighten the distributed css files.

Changes for Orange and Orange-compact component icons
New name Old name if diff. Component Prev. version Name updates Path updates Status
$alert-icon-success Alert 1.4 None None No changes
$alert-icon-info Alert 1.4 None None No changes
$alert-icon-warning-external Alert 1.4 None None No changes
$alert-icon-warning-internal Alert 1.4 None None No changes
$alert-icon-important Alert 1.4 None None No changes
$badge-icon-positive Badge 1.6 None Bug fix for "fill=white", simplified path from v1.7 Path updated
$badge-icon-info Badge 1.6 None Bug fix for "fill=white", simplified path from v1.7 Path updated
$badge-icon-warning-external Badge 1.6 None Bug fix for "fill=white", simplified path from v1.7 Path updated
$badge-icon-warning-internal Badge 1.6 None Bug fix for "fill=white", simplified path from v1.7 Path updated
$badge-icon-negative Badge 1.6 None Bug fix for "fill=white", simplified path in v1.7 Path updated
$breadcrumb-divider $breadcrumb-divider-icon Breadcrumb Unknown Renamed to match *-icon in the custom-props-map Add missing viewbox in 24 24 Renamed and path updated
$btn-previous-icon Button 1.4 None Small path changes (not tracked) Path updated
$btn-next-icon Button 1.4 None Small path changes (not tracked) Path updated
$btn-expurge-icon $cross-icon-stroke Button Unknown Now clearly identified as a component icon None Renamed
$bullet-list-marker-level-0 Bullet list Unknown None Viewbox in 24 24 Path updated
$bullet-list-marker-level-1 Bullet list Unknown None Viewbox in 24 24 Path updated
$bullet-list-marker-level-2 Bullet list Unknown None Viewbox in 24 24 Path updated
$bullet-list-empty-marker Bullet list Unknown None Viewbox in 24 24 Path updated
$bullet-list-marker-tick Bullet list Unknown None Viewbox in 24 24 Path updated
$checkbox-selected-icon $form-check-input-checked-bg-image Checkbox Unknown Now clearly identified as a component icon for Checkbox Viewbox in 24 24 Renamed and path updated
$checkbox-undetermined-icon $form-check-input-indeterminate-bg-image Checkbox Unknown Now clearly identified as a component icon for Checkbox Viewbox in 24 24 Renamed and path updated
$chip-tick-icon Chip Unknown None Viewbox in 24 24 Path updated
$link-previous-icon Used $chevron-icon Link Unknown Now clearly identified as a component icon for link Viewbox in 24 24 Added
$radio-button-selected-icon $form-check-radio-checked-bg-image Radio button Unknown Now clearly identified as a component icon for Radio button Viewbox in 24 24 Renamed and path updated
$select-input-chevron Select input Unknown None None Up to date - no changes
$select-input-expanded-chevron Select input Unknown None None Up to date - no changes
$switch-selected-icon $form-switch-checked-bg-image Switch Unknown Now clearly identified as a component icon for Switch Viewbox in 24 24 Renamed and path updated
Changes for Sosh component icons
New name Old name if diff. Component Prev. version Name updates Path updates Status
$alert-icon-success Alert 1.4 None None No changes
$alert-icon-info Alert 1.4 None None No changes
$alert-icon-warning-external Alert 1.4 None None No changes
$alert-icon-warning-internal Alert 1.4 None None No changes
$alert-icon-important Alert 1.4 None None No changes
$badge-icon-positive Badge 1.6 None None No changes
$badge-icon-info Badge 1.6 None None No changes
$badge-icon-warning-external Badge 1.6 None None No changes
$badge-icon-warning-internal Badge 1.6 None None No changes
$badge-icon-negative Badge 1.6 None None No changes
$breadcrumb-divider $breadcrumb-divider-icon Breadcrumb Unknown Renamed to match *-icon in the custom-props-map Small path changes (not tracked) Renamed and path updated
$btn-previous-icon Button 1.4 None Path changes (not tracked) Path updated
$btn-next-icon Button 1.4 None Path changes (not tracked) Path updated
$btn-expurge-icon $cross-icon-stroke Button Unknown Now clearly identified as a component icon None Renamed
$bullet-list-marker-level-0 Bullet list Unknown None None No changes
$bullet-list-marker-level-1 Bullet list Unknown None Path changes (not tracked) Path updated
$bullet-list-marker-level-2 Bullet list Unknown None Path changes (not tracked) Path updated
$bullet-list-empty-marker Bullet list Unknown None None No changes
$bullet-list-marker-tick Bullet list Unknown None Path changes (not tracked) Path updated
$checkbox-selected-icon $form-check-input-checked-bg-image Checkbox Unknown Now clearly identified as a component icon for Checkbox Small path changes and fill=white (not tracked) Renamed and path updated
$checkbox-undetermined-icon $form-check-input-indeterminate-bg-image Checkbox Unknown Now clearly identified as a component icon for Checkbox None Renamed
$chip-tick-icon Chip Unknown None Small path changes (not tracked) Path updated
$link-previous-icon Used $chevron-icon Link Unknown Now clearly identified as a component icon for link Path changes (not tracked) Added
$radio-button-selected-icon $form-check-radio-checked-bg-image Radio button Unknown Now clearly identified as a component icon for Radio button Path changes (not tracked) Renamed and path updated
$select-input-chevron Select input Unknown None Small path changes (not tracked) Path updated
$select-input-expanded-chevron Select input Unknown None Small path changes (not tracked) Path updated
$switch-selected-icon $form-switch-checked-bg-image Switch Unknown Now clearly identified as a component icon for Switch None Renamed
CSS Custom Properties Map Renamed

The $svg-as-custom-props map keys were renamed and the suffix '-icon' previously added in root is now visible in here to ease the search of these custom props usages. There are still supposed to follow a consistent -icon suffix convention:

Old Key New Key Comments
"chevron" "chevron-icon" Renamed and now only used for leagy usages (pagination, carousel and back-to-top legacy components)
"close" (removed) Its usage in close button has been replaced by the component icon $btn-expurge-icon where needed and this custom prop was no longer used (some legacy usages still remain pointing directly to $cross-icon or other icons in variables.scss
"success" "alert-success-icon" The custom prop has been renamed with 'alert' prefix, so that it is easy to understand it is the component icon from Alert
"info" "alert-info-icon" The custom prop has been renamed with 'alert' prefix, so that it is easy to understand it is the component icon from Alert
"warning" "alert-warning-icon" The custom prop has been renamed with 'alert' prefix, so that it is easy to understand it is the component icon from Alert
"warning-internal" "alert-warning-internal-icon" The custom prop has been renamed with 'alert' prefix, so that it is easy to understand it is the component icon from Alert
"error" "alert-error-icon" The custom prop has been renamed with 'alert' prefix, so that it is easy to understand it is the component icon from Alert

The new update script also adds duplicated icons inside this map (for now breadcrumb-divider-icon and btn-previous-icon so they can be reused without overloading the bundle.

Legacy Icons Preserved

The following legacy icons remain unchanged for backward compatibility with draft/legacy components, they should totally disappear over time:

  • $chevron-icon (pagination, carousel, back-to-top)
  • $cross-icon, $burger-icon, $burger-icon-small (header)
  • $add-icon, $remove-icon, $add-icon-sm, $remove-icon-sm (quantity-selector)
  • $play-icon, $pause-icon (carousel)
  • $helper-icon (text-input Bootstrap compatibility)

2. Sprite Icons (ouds-web-sprite.svg) — All 3 Brands

Icons renamed (ID changed)
# Old ID (main) New ID (branch) Old source New source (Solaris v2.1) Change details
1 alert-important functional-status-negative icon alert important-fill v1.4 functional/status-and-indicators/important-fill v2.1 Renamed + minor path adjustments
2 alert-warning-accessible functional-status-warning icon alert accessible warning v1.4 functional/status-and-indicators/warning-important-fill v2.1 Renamed, bicolor icon preserved
3 alert-info functional-status-info icon alert info-fill v1.4 functional/status-and-indicators/info-fill v2.1 Renamed + minor path adjustments
4 alert-success functional-status-positive icon alert tick-confirmation-fill v1.4 functional/status-and-indicators/tick-confirmation-fill v2.1 Renamed + minor path adjustments
5 file-earmark-richtext file-document Custom (1000×1000) functional/charts-and-files/file-document v2.1 Completely new icon (1000→24)
6 book-half information-manual Custom (1000×1000) functional/settings-and-tools/information-manual v2.1 Completely new icon (1000→24)
7 grid-fill display-grid Custom (1000×1000) functional/navigation/display-grid-square v2.1 Completely new icon (1000→24)
8 repair-tools multi-tool-repair Custom (960×960) communication/objects/multi-tool-repair v2.1 Completely new icon (960→24)
Icons redrawn (same ID, new paths)
# ID Old viewBox New viewBox Old source New source (Solaris v2.1) Change details
9 copy 0 0 1000 1000 0 0 24 24 Custom (1000×1000) functional/actions/copy v2.1 Completely redrawn
10 check2 0 0 1000 1000 0 0 24 24 Custom (1000×1000) functional/actions/form-tick-square-approve v2.1 Completely redrawn
11 design-token-figma 0 0 1000 1000 0 0 24 24 Custom (1000×1000) communication/design/design-token-figma v2.1 Completely redrawn
12 ui-auto-mode 0 0 1000 1000 0 0 24 24 Custom (1000×1000) functional/media/contrast v2.1 Completely redrawn
13 ui-dark-mode 0 0 1000 1000 0 0 24 24 Custom (1000×1000) functional/settings-and-tools/ui-dark-mode v2.1 Completely redrawn
14 ui-light-mode 0 0 1000 1000 0 0 24 24 Custom (1000×1000) functional/settings-and-tools/ui-light-mode v2.1 Completely redrawn
15 buy 0 0 1000 1000 0 0 24 24 Custom (1000×1000) functional/commerce/buy-shoping-basket v2.1 Completely redrawn
16 search 0 0 1000 1000 0 0 24 24 Custom (1000×1000) functional/actions/search v2.1 Completely redrawn
17 live-chat 0 0 1000 1000 0 0 24 24 Custom (1000×1000) functional/communications/live-chat v2.1 Completely redrawn + viewBox fixed
18 location-pin-compass 0 0 1000 1000 0 0 24 24 Custom (1000×1000) functional/transport-and-location/location-pin-compass v2.1 Completely redrawn + viewBox fixed
19 mobile-network-coverage 0 0 1000 1000 0 0 24 24 Custom (1000×1000) functional/status-and-indicators/mobile-network-coverage-signal v2.1 Completely redrawn + viewBox fixed
20 child-protection 0 0 1000 1000 0 0 24 24 Custom (1000×1000) communication/security-and-safety/child-protection v2.1 Completely redrawn + viewBox fixed
21 side-panel-show-chevron 0 0 960 960 0 0 24 24 Custom (960×960) functional/navigation/side-panel-show-chevron v2.1 Completely redrawn
22 bug 0 0 960 960 0 0 24 24 Custom (960×960) communication/technology/bug v2.1 Completely redrawn
23 message-talk 0 0 960 960 0 0 24 24 Custom (960×960) functional/social-and-engagement/message-talk v2.1 Completely redrawn
24 external-link 0 0 960 960 0 0 24 24 Custom (960×960) functional/actions/external-link v2.1 Completely redrawn. ⚠️ To be removed with tokens 2.6
Icons reformatted (same ID, minor changes)
# ID Change details
25 download style="fill-rule:evenodd"fill-rule="evenodd" clip-rule="evenodd"
26 settings style= → SVG attribute; minor coordinates fixed
27 trash style= → SVG attribute; coordinates adjusted (.6.599, 7.27.199, 1522.2)
28 component-atom Minor path data adjustments (.246.245, .641.637, etc.)
29 lightning-charge-fill Reformatted (single line), no path change
Icons kept unchanged
# ID Source (Solaris v2.1)
30 heart-empty functional/social-and-engagement/heart-recommend v2.1
31 lock-closed communication/security-and-safety/lock-closed v2.1
32 accessibility-vision communication/accessibility/accessibility-vision v2.1
33 hide functional/settings-and-tools/accessibility-hide v2.1
34 internet communication/technology/internet-world-connection v2.1
35 theme communication/design/theme v2.1
36 traffic-cone functional/transport-and-location/traffic-cone v2.1
Icons removed (no replacement)
# Old ID (main) Old source Reason
37 alert-warning- icon alert warning-external-shape v1.4 Redundant with accessible bicolor version
38 tick Custom (24×24) No longer needed
39 delete Custom (24×24) No longer needed
40 expurge Custom (24×24) No longer needed
41 chevron-expand Bootstrap Icons (16×16) No longer needed
42 globe2 Custom (1000×1000) Replaced by existing internet
43 magic Custom (1000×1000) No longer needed
44 menu-button-wide-fill Custom (1000×1000) No longer needed
45 palette2 Custom (1000×1000) Replaced by existing theme
46 braces-asterisk Custom (1000×1000) Replaced by multi-tool-repair
47 transfers Custom (1000×1000) No longer needed
48 ui-radios Custom (1000×1000) No longer needed
Summary
Change type Count Description
🏷️ Renamed 8 ID changed to match Solaris v2.1 naming convention
🔄 Redrawn 16 Same ID, paths fully replaced (1000/960 → 24 coordinate system)
🔧 Reformatted 5 Minor formatting or coordinate adjustments
— Unchanged 7 No modification from initial v2.1 import
🗑️ Removed 12 Icons deleted, no longer needed in docs
Total on main 48
Total on branch 36
⚠️ Notes
  • All remaining icons now use Solaris v2.1 except lightning-charge-fill (Bootstrap Icons legacy for Stackblitz).
  • All viewBoxes are now 0 0 24 24 (except lightning-charge-fill at 0 0 16 16).
  • external-link is marked for removal with tokens v2.6.
  • The file is now organized with section comments: Functional icons, Doc examples, Icon page examples, Header icons, Footer icons, Submenu icons.

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 Jul 29, 2026

Copy link
Copy Markdown

Deploy Preview for boosted ready!

Name Link
🔨 Latest commit a7e0ea6
🔍 Latest deploy log https://app.netlify.com/projects/boosted/deploys/6a8eb6a96b37f700088e0830
😎 Deploy Preview https://deploy-preview-3729--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.

Comment thread build/compare-composite-icons.mjs Fixed
hannahiss and others added 12 commits August 6, 2026 17:29
# Conflicts:
#	packages/orange-compact/scss/tokens/_composite.scss
#	packages/orange/scss/tokens/_composite.scss
#	packages/sosh/scss/tokens/_composite.scss
#	scss/_links.scss
#	scss/forms/_select-input.scss
#	scss/forms/_text-input.scss
#	scss/tests/snapshot-tests/__snapshots__/ouds-web-bootstrap.css
#	scss/tests/snapshot-tests/__snapshots__/ouds-web.css
#	site/static/orange-compact/docs/[version]/assets/img/ouds-web-sprite.svg
#	site/static/orange/docs/[version]/assets/img/ouds-web-sprite.svg
#	site/static/sosh/docs/[version]/assets/img/ouds-web-sprite.svg

@louismaximepiton louismaximepiton 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'm fine with it, just the output between sprite and composite looks completely different, is there any reason for this ?

<path fill-rule="evenodd"
d="M19.01 8.676c-.246-.1-.5-.193-.765-.28.506-2.05.198-4.603-1.135-5.22-1.104-.637-2.647-.273-4.354 1.023l.858.858c.928-.626 1.926-1.281 2.896-.841 1.054.772.798 2.527.577 3.848a19.641 19.641 0 0 0-2.585-.443c-.84-1.148-1.735-2.17-2.796-3.073C7.633.992 4.565 3.38 5.75 8.393c-5.262 1.608-5.208 5.617.032 7.198-1.138 4.807 1.636 7.313 5.587 4.153 1.867-1.48 3.33-3.422 4.533-5.484l-.654-1.294c-1.078 2.002-2.414 3.9-4.104 5.405-3.24 2.833-5.042 1.75-4.204-2.452.83.198 1.673.342 2.522.431.331.454.672.885 1.02 1.29l.858-.842c-.093-.108-.185-.22-.277-.332.285.01.3.016.59.017l1.007-1.213c-.847.028-1.694.008-2.538-.062a23.169 23.169 0 0 1-1.285-2.091l-.6 1.37c.106.18.215.358.325.534a17.553 17.553 0 0 1-1.333-.266c.124-.42.27-.849.436-1.284l.01.018.612-1.45-.006-.01a23.308 23.308 0 0 1 1.888-3.267 23.35 23.35 0 0 1 3.672.002c1.253 1.827 2.298 3.87 2.925 5.99l-.153.036-.988 1.413c.493-.079.97-.174 1.429-.285.628 3.08-.182 5.376-3.406 3.066l-.85.866c3.905 2.982 6.507.377 5.413-4.26 4.513-1.318 5.677-4.998.797-6.914ZM8.115 9.764c-.347.566-.889 1.736-1.186 2.343a19.578 19.578 0 0 0-.852 2.318c-4.047-1.372-4.103-3.47-.033-4.864.122.417.264.842.425 1.272l.804-1.352a9.099 9.099 0 0 1-.077-.254c.45-.11.923-.204 1.413-.282-.168.268-.333.54-.494.819Zm3.879-2.274c-.1 0-.701.01-.883.017.085-.104.17-.207.255-.307l-.85-.85c-.342.397-.678.822-1.005 1.268a19.62 19.62 0 0 0-2.604.445c-1.205-6.659 3.548-3.712 5.995-.556-.3-.01-.603-.016-.908-.017Zm8.431 5.58c-.515.52-1.612 1.066-2.506 1.352-.562-1.911-1.455-3.772-2.52-5.473.486.077.954.17 1.4.28-.033.115-.068.23-.105.347l.75 1.482c.195-.506.365-1.006.508-1.495 1.541.508 4.193 1.851 2.473 3.507Zm-8.431-2.964a1.921 1.921 0 1 0 0 3.843 1.921 1.921 0 0 0 0-3.843Z"
clip-rule="evenodd"/>
<path d="m19 8.7-.8-.3c.6-2 .2-4.6-1-5.2q-1.8-1-4.4 1l.8.9c1-.7 2-1.3 3-.9 1 .8.7 2.5.5 3.9l-2.6-.5q-1.2-1.6-2.8-3c-4-3.6-7.1-1.2-6 3.8C.5 10 .5 14 5.8 15.6c-1 4.8 1.7 7.3 5.7 4.1q2.7-2.2 4.5-5.4l-.7-1.3q-1.5 3-4 5.4C7.8 21.2 6 20 6.8 15.9l2.6.4 1 1.3.8-.8-.2-.3h.6l1-1.2H10L8.8 13l-.6 1.4.4.5-1.4-.2.5-1.3.6-1.5 1.9-3.2h3.6q2 2.7 3 6h-.2l-1 1.4 1.5-.3c.6 3.1-.2 5.4-3.5 3l-.8 1c3.9 3 6.5.3 5.4-4.3 4.5-1.3 5.7-5 .8-7M8.1 9.9 7 12l-.8 2.3C2 13.1 2 11 6 9.6l.4 1.2.8-1.3-.1-.3L8.6 9zM12 7.5h-1l.3-.3-.9-.9-1 1.3-2.6.5c-1.2-6.7 3.6-3.7 6-.6zm8.5 5.6a7 7 0 0 1-2.5 1.3q-.8-2.9-2.5-5.5l1.4.3-.1.4.7 1.5.6-1.5c1.5.5 4.1 1.8 2.4 3.5M12 10a2 2 0 1 0 0 3.8 2 2 0 0 0 0-3.8"/>

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
<path d="m19 8.7-.8-.3c.6-2 .2-4.6-1-5.2q-1.8-1-4.4 1l.8.9c1-.7 2-1.3 3-.9 1 .8.7 2.5.5 3.9l-2.6-.5q-1.2-1.6-2.8-3c-4-3.6-7.1-1.2-6 3.8C.5 10 .5 14 5.8 15.6c-1 4.8 1.7 7.3 5.7 4.1q2.7-2.2 4.5-5.4l-.7-1.3q-1.5 3-4 5.4C7.8 21.2 6 20 6.8 15.9l2.6.4 1 1.3.8-.8-.2-.3h.6l1-1.2H10L8.8 13l-.6 1.4.4.5-1.4-.2.5-1.3.6-1.5 1.9-3.2h3.6q2 2.7 3 6h-.2l-1 1.4 1.5-.3c.6 3.1-.2 5.4-3.5 3l-.8 1c3.9 3 6.5.3 5.4-4.3 4.5-1.3 5.7-5 .8-7M8.1 9.9 7 12l-.8 2.3C2 13.1 2 11 6 9.6l.4 1.2.8-1.3-.1-.3L8.6 9zM12 7.5h-1l.3-.3-.9-.9-1 1.3-2.6.5c-1.2-6.7 3.6-3.7 6-.6zm8.5 5.6a7 7 0 0 1-2.5 1.3q-.8-2.9-2.5-5.5l1.4.3-.1.4.7 1.5.6-1.5c1.5.5 4.1 1.8 2.4 3.5M12 10a2 2 0 1 0 0 3.8 2 2 0 0 0 0-3.8"/>
<path d="m19 8.7-.8-.3c.6-2 .2-4.6-1-5.2q-1.8-1-4.4 1l.8.9c1-.7 2-1.3 3-.9 1 .8.7 2.5.5 3.9l-2.6-.5q-1.2-1.6-2.8-3c-4-3.6-7.1-1.2-6 3.8C.5 10 .5 14 5.8 15.6c-1 4.8 1.7 7.3 5.7 4.1q2.7-2.2 4.5-5.4l-.7-1.3q-1.5 3-4 5.4C7.8 21.2 6 20 6.8 15.9l2.6.4 1 1.3.8-.8-.2-.3h.6l1-1.2H10L8.8 13l-.6 1.4.4.5-1.4-.2.5-1.3.6-1.5 1.9-3.2h3.6q2 2.7 3 6h-.2l-1 1.4 1.5-.3c.6 3.1-.2 5.4-3.5 3l-.8 1c3.9 3 6.5.3 5.4-4.3 4.5-1.3 5.7-5 .8-7M8.1 9.9 7 12l-.8 2.3C2 13.1 2 11 6 9.6l.4 1.2.8-1.3-.1-.3L8.6 9zM12 7.5h-1l.3-.3-.9-.9-1 1.3-2.6.5c-1.2-6.7 3.6-3.7 6-.6zm8.5 5.6a7 7 0 0 1-2.5 1.3q-.8-2.9-2.5-5.5l1.4.3-.1.4.7 1.5.6-1.5c1.5.5 4.1 1.8 2.4 3.5M12.5 10a2 2 0 1 0 0 3.8 2 2 0 0 0 0-3.8"/>

Looks better, but why we need it ? Maybe we can lower the svgo on sprite ?

<path d="M21.4 19.7 16 14.3a7.5 7.5 0 1 0-1.8 1.7l5.5 5.4h.8l1-.9v-.8M9.8 15a5.1 5.1 0 1 1 0-10.2 5.1 5.1 0 0 1 0 10.2"/>
</symbol>

<!-- *** EXAMPLES OF ICONS FOR FOOTERS *** -->

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.

Footer icons needs fill-rule=evenodd

@boosted-bot boosted-bot moved this from Need Dev Review to Need Lead Dev Review in 🟣 [Orange-Boosted-Bootstrap] PRs Board Aug 12, 2026
@louismaximepiton louismaximepiton changed the title Update icons to v2.1 and manage future updates Update icons to v2.2 and manage future updates Aug 12, 2026
@vprothais

Copy link
Copy Markdown
Collaborator

The banner in tarteaucitron doesn't seem like to have any icon anymore

For the tarteaucitron panel, I fixed the icon by pointing to --bs-alert-error-icon and --bs-alert-success-icon but this doesn't feel totally right since we're using here the component icons of alerts inside some buttons with text and icon, whereas we should technically use decorative icons. What do you think @vprothais ?

@hannahiss , I think it's ok, designer can technically use a functional icon in a button and the overview of the button component doesn't say otherwise. So let's stick to that.

Comment thread scss/_root.scss
// OUDS mod
@each $icon, $svg in $svg-as-custom-props {
--#{$prefix}#{$icon}-icon: #{escape-svg($svg)};
--#{$prefix}#{$icon}: #{escape-svg($svg)};

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.

The same change must be done in the dual mode documentation since we duplicated some part of root, including this icons generation.

Comment thread build/update-composite-icons.mjs Outdated
@@ -0,0 +1,701 @@
#!/usr/bin/env node

// update-component-icons.mjs

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.

Suggested change
// update-component-icons.mjs
// update-composite-icons.mjs

Comment thread build/update-composite-icons.mjs
for (const [lineIndex, line] of lines.entries()) {
const parsedComment = parseCommentPath(line)
if (parsedComment) {
pendingComment = { ...parsedComment, commentLineIndex: lineIndex }

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 used an Agent to review this logic and it detected a risk with the silent overwriting of pendingComment. Here is the review :

⚠️ Risk: silent loss of pendingComment during parsing
This parsing loop tracks a single pendingComment state between the icon comment line (// path v1.0) and the variable line that should follow it. This creates three scenarios where a comment can be silently dropped without any trace in the output:

  1. Two icon comments appear in a row without a variable line in between — the first pendingComment is overwritten by the second, with no indication that the first one was discarded.
  2. An icon comment is followed by another comment line that doesn't match the expected variable patterns — pendingComment is reset to null, silently discarding it.
  3. The last icon comment in the block is never followed by a variable line at all — the loop ends with a non-null pendingComment that is simply never used.

In all three cases, the corresponding icon entry is effectively skipped from the icon map and won't appear in the report (identical/modified/missing), even though it exists in the source file. Since the whole script relies on regex-based, line-by-line parsing of the SCSS file, any unexpected formatting drift (manual edits, inconsistent comment style, copy-paste errors) can trigger these cases without any visible error — the script will just complete "successfully" with fewer icons processed than expected.

Comment thread build/update-sprite-icons.mjs
@boosted-bot boosted-bot moved this from Need Lead Dev Review to Dev Review In Progress in 🟣 [Orange-Boosted-Bootstrap] PRs Board Aug 26, 2026
@boosted-bot boosted-bot moved this from Dev Review In Progress to Need Lead Dev Review in 🟣 [Orange-Boosted-Bootstrap] PRs Board Aug 26, 2026
@vprothais
vprothais merged commit cacf845 into main Aug 26, 2026
14 checks passed
@vprothais
vprothais deleted the main-his-update-icons-2.1 branch August 26, 2026 09:58
@github-project-automation github-project-automation Bot moved this from Need Lead Dev Review to Done in 🟣 [Orange-Boosted-Bootstrap] PRs Board Aug 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Development

Successfully merging this pull request may close these issues.

[OUDS] Update icons to version 2.1

6 participants