Conversation
This commit updates the icon usage across various components in the application, replacing instances of with . The changes include updates to HTML templates, stylesheets, and tests to ensure consistency with the new icon set. Additionally, the old Material Icons assets have been removed, and the new Material Symbols Outlined font has been added to the project. - Updated icon classes in component templates and styles. - Removed deprecated Material Icons assets. - Added new Material Symbols Outlined font files and styles. This transition aims to enhance the visual consistency and maintainability of the iconography used throughout the application.
|
Claude finished @rjvelazco's task in 1m 15s —— View job PR Final Review (Pass 3)
All three blocking items from prior reviews are resolved. The codebase is clean.
Full sweep — No Ready to merge. |
…ols Outlined This commit enhances the HTML structure of various components by ensuring consistent formatting for icon elements. Additionally, it refines the CSS for Material Symbols Outlined, improving readability and maintainability by aligning font-variation-settings across multiple stylesheets. - Updated HTML templates to format icon elements with proper indentation. - Refactored CSS to improve readability by breaking down font-variation-settings into multiple lines. - Ensured consistent usage of single quotes for font-family and other properties. These changes aim to enhance code clarity and maintainability across the application.
- Fix broken @font-face in legacy-custom-field.jsp that still referenced the deleted MaterialIcons-Regular.ttf (icons would 404 and render as literal ligature names) - Add unprefixed `font-feature-settings: 'liga'` alongside the webkit prefix so ligatures render on non-webkit browsers - Drop duplicate .material-symbols-outlined block from the block-editor suggestions component CSS; Angular Emulated encapsulation lets the global rule apply, so the local copy was just a maintenance hazard Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
@claude review again |
|
Claude finished @rjvelazco's task in 4m 37s —— View job PR Review: Material Icons → Material Symbols Outlined Migration
Overall AssessmentThis is a well-executed font migration. The approach is architecturally sound, the sweep is thorough, and the code is clean. A few items worth calling out below. What's Done WellClean shadow DOM strategy — Using Variable font axis defaults — Complete sweep — Grepping the whole codebase for leftover
Icon list audit — Sweeping 1778 → 1763 entries against the real codepoints file and documenting every removal/rename is excellent attention to detail. Issues & Concerns1.
|
… bundle
The webapp binary-field.js bundle still carried a scoped Angular rule
(.material-symbols-outlined[_ngcontent-%COMP%] { font-family: Material Icons })
from the previous suggestions.component.css. The rule's class selector
was swapped in the migration commit but the font-family reference was
missed — pointing at a font we've since deleted. Updates it to
'Material Symbols Outlined' so icons inside the block-editor suggestions
widget render until the bundle is regenerated from source.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
@claude final review |
|
Claude finished @rjvelazco's task in 2m 9s —— View job PR Final Review: Material Icons → Material Symbols Outlined
Final ReviewWhat's been resolved since prior reviews
All source files are clean — Grep across Issues still outstanding1.
|
| Item | Status |
|---|---|
All source .ts/.html/.scss/.css/.jsp/.vtl files clean |
✅ |
binary-field.js font-family patched |
✅ |
binary-field.js source/artifact divergence (known risk) |
|
dotcms-block-editor.js scoped font-family:Material Icons bug |
❌ not fixed — visual regression |
documentation.json stale entries (lines 161886, 174526) |
❌ still unaddressed after 2 reviews |
The dotcms-block-editor.js issue is the blocking one — it's a runtime visual regression in the block editor. The documentation.json entries are doc-only but have been pending for the full review cycle.
…les and docs - dotcms-block-editor.js: same scoped-CSS bug as binary-field.js — the .material-symbols-outlined[_ngcontent-%COMP%] rule still carried `font-family: Material Icons` referencing the deleted font. Swapped to 'Material Symbols Outlined' so icons inside the block-editor SPA render until the bundle is rebuilt from source. - documentation.json: two committed compodoc entries still referenced `font-family: 'Material Icons'` and `MaterialIcons-Regular.ttf` (suggestions.component styleUrlsData + a defaultValue fixture string). Patched the three stale font-family lines and the two ttf src URLs in-place instead of regenerating, since a full compodoc regen produced 340k lines of unrelated churn. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Picked up by nx format:write via the pre-commit hook — drive-by formatting, no behavior change. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…value
When the class rename reformatter broke `<span class="material-symbols-outlined">{{ icon }}</span>`
onto three lines, textContent gained leading/trailing whitespace and the
test `expect(icon.nativeElement.textContent).toBe('web')` started failing.
Trimming the read is more robust against prettier-driven template
reformatting than fighting the formatter.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
Migrates
core-webfrom the deprecated Material Icons font to Material Symbols Outlined (variable font). Closes #35447.The old Material Icons library is in maintenance mode; Material Symbols is the actively-maintained successor, ships the full icon set, and exposes variable-font axes (
FILL,wght,GRAD,opsz) so future UI states can morph icons without shipping extra font files.Video
video.mov
What changed
Font + CSS
MaterialSymbolsOutlined-Regular.woff2(variable font, weights 100–700) inapps/dotcms-ui/src/assets/.MaterialIcons-Regular.ttf,MaterialIconsOutlined-Regular.otf.libs/dotcms-scss/shared/_material-symbols-outlined.scssdefines the@font-face, the.material-symbols-outlinedclass (with sensible variable-axis defaults), and a:root { --mdc-icon-font: "Material Symbols Outlined" }override. Imported by the main Angular stylesheet and the JSP stylesheet — one source of truth for both the admin SPA and the legacy JSPs._material-icons.scss,material-icons.css, and the dev-onlymaterial-symbols-outlined.cssfor the template-builder Storybook updated to match.libs/dotcms-scss/jsp/css/dotcms.cssanddotCMS/src/main/webapp/html/css/dijit-dotcms/dotcms.css.Class migration
class="material-icons"replaced withclass="material-symbols-outlined"across Angular templates, SCSS (including::ng-deeprules), dotCMS JSPs, VTL default container, and legacy dojo JS.Webcomponents (
libs/dotcms-webcomponents)globalStyle: 'src/global/global.scss'registered so standalone builds / Storybook get the--mdc-icon-fontoverride too.@material/mwc-iconreadsfont-family: var(--mdc-icon-font, 'Material Icons')from its shadow DOM. By setting the variable at:rootin the consumer app, everymwc-iconinherits the new font across the shadow boundary — no component markup change needed.dot-contentlet-lock-icon: fixed latent bug — was rendering'locked', which is not a valid ligature in either Material Icons or Material Symbols. Now uses'lock'.dot-material-icon-picker:material-icon-classes.tsxagainst Google's Material Symbols Outlined codepoints file. 1778 → 1763 entries. 15 stale duplicates removed (e.g.play_circle_filled/play_circle_outline→ the FILL axis ofplay_circlehandles it now;panorama_*_selectsuffix dropped;person_add_alt_1→person_add). 1 true rename:wifi_tethering_error_rounded→wifi_tethering_error. 2 dropped with no equivalent:catching_pokemon,facebook.Acceptance criteria (from #35447)
core-webfor every Material Icons usage.@font-faceto Material Symbols Outlined..material-iconsclass usages with.material-symbols-outlined.FILL 0, wght 400, GRAD 0, opsz 24).Bundle impact
MaterialSymbolsOutlined-Regular.woff2— 3.7 MB (full variable font, all ~4,200 glyphs, 5 weight range, all axes).MaterialIconsOutlined-Regular.otf(~331 KB) +MaterialIcons-Regular.ttf(~347 KB) ≈ 678 KB.font-display: swap./dotAdmin/assets/, so browser cache amortizes the cost across sessions. If this is a concern I can follow up with a subsetted variant (only the icons actually referenced in the repo — ~200 unique names — which would bring it back under 500 KB).Out of scope
pi pi-…) and SVG-based icons — unchanged, as per the issue.dot-iconwrapper — deferred; this PR keeps the migration strictly to a font/class swap so it stays reviewable.Risk / things to watch during review
dot-select-button icon="…": This webcomponent takes the icon name as a prop. I auditeddot-select-button's own code and its e2e tests (code,backup,help— all valid), but consumer apps could still pass a stale Material Icons name. Worth a quick grep of the admin UI's<dot-select-buttonusages..material-iconsclass was swapped in JSPs anddotcms-block-editor.js, but those views are harder to exercise automatically — please sanity-check once in the running app.--mdc-icon-fontcrossing the shadow boundary. Verified locally that the override reachesmwc-icon's shadow root; if any report comes in of icons showing as literal text, that's the first thing to check in DevTools → Computedfont-family.This PR fixes: #35447