diff --git a/design-system/packages/design-tokens/src/system.tokens.json b/design-system/packages/design-tokens/src/system.tokens.json index d75b439bfb..e9d436646b 100644 --- a/design-system/packages/design-tokens/src/system.tokens.json +++ b/design-system/packages/design-tokens/src/system.tokens.json @@ -543,12 +543,21 @@ "expandedPaddingInline": { "$value": "0.625rem" } }, "icon": { - "$type": "dimension", - "size2xs": { "$value": "8px" }, - "sizeXs": { "$value": "12px" }, - "sizeSm": { "$value": "14px" }, - "sizeMd": { "$value": "16px" }, - "sizeLg": { "$value": "24px" } + "size2xs": { "$type": "dimension", "$value": "8px" }, + "sizeXs": { "$type": "dimension", "$value": "12px" }, + "sizeSm": { "$type": "dimension", "$value": "14px" }, + "sizeMd": { "$type": "dimension", "$value": "16px" }, + "sizeLg": { "$type": "dimension", "$value": "24px" }, + "strokeWidth": { + "$description": "Default optical line weight for Lucide-based interface icons.", + "$type": "number", + "$value": 1.6 + }, + "strokeWidthStrong": { + "$description": "Stronger optical line weight for compact navigation and other emphasized icon groups.", + "$type": "number", + "$value": 2 + } }, "height": { "$type": "dimension", diff --git a/design-system/packages/design-tokens/tests/contract.test.mjs b/design-system/packages/design-tokens/tests/contract.test.mjs index fe12312f3b..2fd10a15b2 100644 --- a/design-system/packages/design-tokens/tests/contract.test.mjs +++ b/design-system/packages/design-tokens/tests/contract.test.mjs @@ -72,6 +72,8 @@ test("Icon geometry exposes every catalog size without product semantics", () => assert.equal(tokens["control.icon.sizeSm"], "14px"); assert.equal(tokens["control.icon.sizeMd"], "16px"); assert.equal(tokens["control.icon.sizeLg"], "24px"); + assert.equal(tokens["control.icon.strokeWidth"], 1.6); + assert.equal(tokens["control.icon.strokeWidthStrong"], 2); }); test("TabGroup geometry preserves the capsule selected and outline contract", async () => { diff --git a/design-system/packages/ui/src/components/Icon/Icon.tsx b/design-system/packages/ui/src/components/Icon/Icon.tsx index e0e95dcd1a..dc295051b8 100644 --- a/design-system/packages/ui/src/components/Icon/Icon.tsx +++ b/design-system/packages/ui/src/components/Icon/Icon.tsx @@ -242,8 +242,6 @@ interface IconBaseProps export type IconProps = IconBaseProps & IconSource; -const LINE_ICON_STROKE_WIDTH = 1.6; - export const Icon = forwardRef(function Icon({ className, glyph: LineGlyph, @@ -285,7 +283,7 @@ export const Icon = forwardRef(function Icon({