Skip to content

feat(icons): add the unified Vector UI icon pack - #336

Draft
leoafarias wants to merge 3 commits into
mainfrom
conductor/vector-ui-unified-icon-families
Draft

leoafarias wants to merge 3 commits into
mainfrom
conductor/vector-ui-unified-icon-families

Conversation

@leoafarias

@leoafarias leoafarias commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Lands Angular, Soft, and Technical as sibling families under design/icons/ in one private pack ("private": true, BSD 3-Clause, copyright Leo Farias). This replaces the closed stacked pilots (feat(icons): add Angular icon-family pilot #244, feat(icons): add Soft icon pack pilot #254, feat(icons): add Technical icon pack pilot #253) with a single draft. It does not touch packages/remix_ui_icons or registry/icons.yaml.
  • One build (design/icons/build.py) runs each family's own constructor, then writes design/icons/catalog/index.html, which compares Angular, Soft, and Technical. Soft and Technical stay on their own primitives.
  • Warning still requires a visible text label at native 12, 16, and 24, outline and filled, in every family. Gap exceptions do not lift that rule.

Test plan

  • python build.py from design/icons on CPython 3.13. Family rebuilds match the recovered SVG bytes (Angular 288, Soft 72, Technical 72).
  • python tools/run_checks.py: pack tests, Angular asset/node/rebuild/pixel suite, Soft (19), Technical (28).
  • Open design/icons/catalog/index.html and read a row across Angular, Soft, and Technical, including every Warning cell. Dark surface toggle and a 390px viewport keep the three families on one row.
  • Human optical review of the shared 12, including Technical open questions (Search as viewfinder, CAD star as Favorite, Plus keyline, 12 px Link/Branch).
  • Do not merge while the pack is private: Angular's release gate stays closed, and there is no design sign-off or recognition study.

Made with Cursor


Open workspace in Conductor

Comment thread design/icons/angular/source/web/catalog.js Fixed
Comment thread design/icons/angular/source/web/catalog.js Fixed
Comment thread design/icons/angular/source/web/catalog.js Fixed
Comment thread design/icons/angular/source/web/catalog.js Fixed
if (typeof path !== 'string') throw new RangeError(`Unavailable drawing: ${name}/${appearance}/${master}`);
if (title !== null && (typeof title !== 'string' || !title.trim())) throw new TypeError('title must be a nonempty string or null');
const semantics = title === null ? 'aria-hidden="true"' : `role="img" aria-label="${escapeXML(title)}"`;
return `<svg xmlns="http://www.w3.org/2000/svg" width="${size}" height="${size}" viewBox="0 0 ${master} ${master}" fill="currentColor" fill-rule="evenodd" focusable="false" ${semantics}>${title === null ? '' : `<title>${escapeXML(title)}</title>`}<path d="${path}"/></svg>`;
if (typeof path !== 'string') throw new RangeError(`Unavailable drawing: ${name}/${appearance}/${master}`);
if (title !== null && (typeof title !== 'string' || !title.trim())) throw new TypeError('title must be a nonempty string or null');
const semantics = title === null ? 'aria-hidden="true"' : `role="img" aria-label="${escapeXML(title)}"`;
return `<svg xmlns="http://www.w3.org/2000/svg" width="${size}" height="${size}" viewBox="0 0 ${master} ${master}" fill="currentColor" fill-rule="evenodd" focusable="false" ${semantics}>${title === null ? '' : `<title>${escapeXML(title)}</title>`}<path d="${path}"/></svg>`;
Comment thread design/icons/angular/packages/web/render.mjs Fixed
@leoafarias
leoafarias force-pushed the conductor/vector-ui-unified-icon-families branch from 186f8c0 to 8585398 Compare October 29, 2026 21:28
leoafarias and others added 3 commits October 29, 2026 21:37
Land Angular, Soft, and Technical as sibling families in one private
package, with a single build, check suite, and comparison catalog.

Co-authored-by: Cursor <[email protected]>
@leoafarias
leoafarias force-pushed the conductor/vector-ui-unified-icon-families branch from 8585398 to 43e909d Compare October 29, 2026 21:38

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants