From 564337997a7795335157241222e0f48cb6110be2 Mon Sep 17 00:00:00 2001 From: Yichen Jiang Date: Sun, 9 Aug 2026 00:15:10 +0800 Subject: [PATCH] feat(ui-primitives): outline-weight folder-open icon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The duotone folder_open_16 reads a rung heavier than the …Outline16 family — its 20%-opacity inner fill looks filled beside pure-outline neighbors — so an icon-button row mixing them looks mismatched. Same geometry, outline layer only; the workspace surfaces keep the duotone original. --- packages/client/ui-primitives/src/icons/index.tsx | 11 +++++++++++ packages/client/ui-primitives/tests/icons.spec.tsx | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/client/ui-primitives/src/icons/index.tsx b/packages/client/ui-primitives/src/icons/index.tsx index 5b99a0e71c..02f4913751 100644 --- a/packages/client/ui-primitives/src/icons/index.tsx +++ b/packages/client/ui-primitives/src/icons/index.tsx @@ -584,6 +584,17 @@ export const IconProjectAddOutline16 = ({ size = 16, className }: IconProps) => ) +/** + * folder_open_16, outline layer only: the duotone original above reads a rung + * heavier than the …Outline16 family, so an icon-button row mixing them looks + * mismatched — this is the same geometry without the 20%-opacity inner fill. + */ +export const IconFolderOpenOutline16 = ({ size = 16, className }: IconProps) => ( + + + +) + /** folder_open_16 (figma extract): outline at full ink + 20%-opacity inner fill riding the same currentColor. */ export const IconFolderOpen16 = ({ size = 16, className }: IconProps) => ( diff --git a/packages/client/ui-primitives/tests/icons.spec.tsx b/packages/client/ui-primitives/tests/icons.spec.tsx index 678eb9754e..1c558dd6cb 100644 --- a/packages/client/ui-primitives/tests/icons.spec.tsx +++ b/packages/client/ui-primitives/tests/icons.spec.tsx @@ -16,8 +16,8 @@ const icons = Object.fromEntries( const iconNames = Object.keys(icons) describe('ic_ds_ icon set', () => { - it('exports the full P-I set (46 deepsuite + 17 figma extracts + three product glyphs outside those sets)', () => { - expect(iconNames.length).toBe(66) + it('exports the full P-I set (46 deepsuite + 18 figma extracts + three product glyphs outside those sets)', () => { + expect(iconNames.length).toBe(67) }) it.each(iconNames)('%s renders an svg with currentColor fills and no hardcoded palette', (name) => {