Skip to content

Conversation

@adamrasheed
Copy link
Collaborator

@adamrasheed adamrasheed commented Dec 11, 2025

✍️ Proposed changes

Fixes a bug where the fill prop was not being passed to the underlying SVG component when using icons created through createIconComponent. Previously, the fill prop was being absorbed by the spread operator but not explicitly passed to the SVGComponent, causing the fill color to not apply correctly.

🎟️ Jira ticket: LG-5766

✅ Checklist

  • I have added stories/tests that prove my fix is effective or that my feature works
  • I have added necessary documentation (if appropriate)
  • I have run pnpm changeset and documented my changes

🧪 How to test changes

  1. Import the Icon component and render it with a fill prop: <Icon glyph="Edit" fill="red" />
  2. Verify that the SVG icon displays with the specified fill color
  3. Run the new test with pnpm test --filter=@leafygreen-ui/icon to confirm the fix
  4. View the new Icon -> Custom story in Storybook

@changeset-bot
Copy link

changeset-bot bot commented Dec 11, 2025

🦋 Changeset detected

Latest commit: b7843ad

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 74 packages
Name Type
@leafygreen-ui/icon Patch
@lg-charts/chart-card Patch
@lg-charts/core Patch
@lg-charts/legend Patch
@lg-chat/chat-layout Patch
@lg-chat/input-bar Patch
@lg-chat/message-feed Patch
@lg-chat/message-feedback Patch
@lg-chat/message-prompts Patch
@lg-chat/message-rating Patch
@lg-chat/message Patch
@lg-chat/rich-links Patch
@lg-chat/suggestions Patch
@leafygreen-ui/avatar Patch
@leafygreen-ui/banner Patch
@leafygreen-ui/callout Patch
@leafygreen-ui/canvas-header Patch
@leafygreen-ui/chip Patch
@leafygreen-ui/code-editor Patch
@leafygreen-ui/code Patch
@leafygreen-ui/combobox Patch
@leafygreen-ui/confirmation-modal Patch
@leafygreen-ui/context-drawer Patch
@leafygreen-ui/copyable Patch
@leafygreen-ui/date-picker Patch
@leafygreen-ui/drawer Patch
@leafygreen-ui/expandable-card Patch
@leafygreen-ui/feature-walls Patch
@leafygreen-ui/form-field Patch
@leafygreen-ui/form-footer Patch
@leafygreen-ui/guide-cue Patch
@leafygreen-ui/icon-button Patch
@leafygreen-ui/info-sprinkle Patch
@leafygreen-ui/input-option Patch
@leafygreen-ui/menu Patch
@leafygreen-ui/modal Patch
@leafygreen-ui/number-input Patch
@leafygreen-ui/pagination Patch
@leafygreen-ui/password-input Patch
@leafygreen-ui/pipeline Patch
@leafygreen-ui/preview-card Patch
@leafygreen-ui/progress-bar Patch
@leafygreen-ui/search-input Patch
@leafygreen-ui/segmented-control Patch
@leafygreen-ui/select Patch
@leafygreen-ui/side-nav Patch
@leafygreen-ui/skeleton-loader Patch
@leafygreen-ui/split-button Patch
@leafygreen-ui/stepper Patch
@leafygreen-ui/table Patch
@leafygreen-ui/tabs Patch
@leafygreen-ui/text-area Patch
@leafygreen-ui/toast Patch
@leafygreen-ui/toggle Patch
@leafygreen-ui/toolbar Patch
@leafygreen-ui/tooltip Patch
@leafygreen-ui/typography Patch
@leafygreen-ui/vertical-stepper Patch
@leafygreen-ui/wizard Patch
@lg-charts/drag-provider Patch
@lg-chat/chat-window Patch
@lg-tools/storybook-decorators Patch
@lg-chat/lg-markdown Patch
@leafygreen-ui/text-input Patch
@leafygreen-ui/marketing-modal Patch
@leafygreen-ui/inline-definition Patch
@lg-chat/title-bar Patch
@leafygreen-ui/checkbox Patch
@leafygreen-ui/empty-state Patch
@leafygreen-ui/loading-indicator Patch
@leafygreen-ui/ordered-list Patch
@leafygreen-ui/radio-group Patch
@leafygreen-ui/section-nav Patch
@lg-tools/storybook-addon Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions
Copy link
Contributor

github-actions bot commented Dec 11, 2025

Size Change: +134 B (+0.01%)

Total Size: 1.81 MB

Filename Size Change
packages/icon/dist/esm/index.js 109 kB +39 B (+0.04%)
packages/icon/dist/umd/index.js 109 kB +95 B (+0.09%)
ℹ️ View Unchanged
Filename Size
charts/chart-card/dist/esm/index.js 2.79 kB
charts/chart-card/dist/umd/index.js 2.94 kB
charts/colors/dist/esm/index.js 530 B
charts/colors/dist/umd/index.js 657 B
charts/core/dist/esm/index.js 16.4 kB
charts/core/dist/umd/index.js 16.7 kB
charts/drag-provider/dist/esm/index.js 1.37 kB
charts/drag-provider/dist/umd/index.js 1.49 kB
charts/legend/dist/esm/index.js 1.53 kB
charts/legend/dist/umd/index.js 1.68 kB
charts/series-provider/dist/esm/index.js 1.28 kB
charts/series-provider/dist/umd/index.js 1.41 kB
chat/chat-layout/dist/esm/index.js 5.29 kB
chat/chat-layout/dist/umd/index.js 5.5 kB
chat/chat-window/dist/esm/index.js 1 kB
chat/chat-window/dist/umd/index.js 1.2 kB
chat/input-bar/dist/esm/index.js 5.91 kB
chat/input-bar/dist/umd/index.js 6.1 kB
chat/leafygreen-chat-provider/dist/esm/index.js 267 B
chat/leafygreen-chat-provider/dist/umd/index.js 427 B
chat/lg-markdown/dist/esm/index.js 2.15 kB
chat/lg-markdown/dist/umd/index.js 2.29 kB
chat/message-feed/dist/esm/index.js 2.2 kB
chat/message-feed/dist/umd/index.js 2.36 kB
chat/message-feedback/dist/esm/index.js 4.05 kB
chat/message-feedback/dist/umd/index.js 4.22 kB
chat/message-prompts/dist/esm/index.js 2.34 kB
chat/message-prompts/dist/umd/index.js 2.5 kB
chat/message-rating/dist/esm/index.js 1.55 kB
chat/message-rating/dist/umd/index.js 1.73 kB
chat/message/dist/esm/index.js 6.34 kB
chat/message/dist/umd/index.js 6.61 kB
chat/rich-links/dist/esm/index.js 2.4 kB
chat/rich-links/dist/umd/index.js 2.59 kB
chat/suggestions/dist/esm/index.js 1.66 kB
chat/suggestions/dist/esm/testing/index.js 55 B
chat/suggestions/dist/umd/index.js 1.84 kB
chat/suggestions/dist/umd/testing/index.js 113 B
chat/title-bar/dist/esm/index.js 936 B
chat/title-bar/dist/umd/index.js 1.11 kB
packages/a11y/dist/esm/index.js 1.71 kB
packages/a11y/dist/umd/index.js 1.83 kB
packages/avatar/dist/esm/index.js 3.51 kB
packages/avatar/dist/umd/index.js 3.69 kB
packages/badge/dist/esm/index.js 1.47 kB
packages/badge/dist/umd/index.js 1.67 kB
packages/banner/dist/esm/index.js 3.2 kB
packages/banner/dist/umd/index.js 3.5 kB
packages/button/dist/esm/constants.js 121 B
packages/button/dist/esm/index.js 4.8 kB
packages/button/dist/esm/testing/index.js 321 B
packages/button/dist/umd/constants.js 262 B
packages/button/dist/umd/index.js 4.99 kB
packages/button/dist/umd/testing/index.js 443 B
packages/callout/dist/esm/index.js 1.55 kB
packages/callout/dist/umd/index.js 1.74 kB
packages/canvas-header/dist/esm/index.js 3.04 kB
packages/canvas-header/dist/umd/index.js 3.21 kB
packages/card/dist/esm/index.js 1.51 kB
packages/card/dist/umd/index.js 1.69 kB
packages/checkbox/dist/esm/index.js 4.28 kB
packages/checkbox/dist/umd/index.js 4.48 kB
packages/chip/dist/esm/index.js 3.22 kB
packages/chip/dist/umd/index.js 3.41 kB
packages/code-editor/dist/esm/index.js 19 kB
packages/code-editor/dist/esm/testing/index.js 4.19 kB
packages/code-editor/dist/umd/index.js 19.3 kB
packages/code-editor/dist/umd/testing/index.js 4.33 kB
packages/code/dist/esm/index.js 10.5 kB
packages/code/dist/esm/testing/index.js 11.4 kB
packages/code/dist/umd/index.js 11.2 kB
packages/code/dist/umd/testing/index.js 12 kB
packages/combobox/dist/esm/index.js 11.8 kB
packages/combobox/dist/umd/index.js 12.1 kB
packages/compound-component/dist/esm/index.js 1.09 kB
packages/compound-component/dist/umd/index.js 1.17 kB
packages/confirmation-modal/dist/esm/index.js 2.63 kB
packages/confirmation-modal/dist/umd/index.js 2.84 kB
packages/context-drawer/dist/esm/index.js 3.12 kB
packages/context-drawer/dist/esm/testing/index.js 3.52 kB
packages/context-drawer/dist/umd/index.js 3.28 kB
packages/context-drawer/dist/umd/testing/index.js 3.67 kB
packages/copyable/dist/esm/index.js 2.91 kB
packages/copyable/dist/umd/index.js 3.1 kB
packages/date-picker/dist/esm/index.js 13.8 kB
packages/date-picker/dist/umd/index.js 14.2 kB
packages/date-utils/dist/esm/index.js 2.7 kB
packages/date-utils/dist/esm/testing/index.js 1.35 kB
packages/date-utils/dist/umd/index.js 2.8 kB
packages/date-utils/dist/umd/testing/index.js 1.49 kB
packages/descendants/dist/esm/index.js 2.84 kB
packages/descendants/dist/umd/index.js 2.95 kB
packages/drawer/dist/esm/index.js 7.94 kB
packages/drawer/dist/esm/testing/index.js 490 B
packages/drawer/dist/umd/index.js 8.13 kB
packages/drawer/dist/umd/testing/index.js 610 B
packages/emotion/dist/esm/index.js 357 B
packages/emotion/dist/umd/index.js 571 B
packages/empty-state/dist/esm/index.js 1.76 kB
packages/empty-state/dist/umd/index.js 1.93 kB
packages/expandable-card/dist/esm/index.js 2.96 kB
packages/expandable-card/dist/esm/testing/index.js 3.48 kB
packages/expandable-card/dist/umd/index.js 3.18 kB
packages/expandable-card/dist/umd/testing/index.js 3.67 kB
packages/feature-walls/dist/esm/index.js 6.74 kB
packages/feature-walls/dist/umd/index.js 6.99 kB
packages/form-field/dist/esm/index.js 4.37 kB
packages/form-field/dist/umd/index.js 4.53 kB
packages/form-footer/dist/esm/index.js 1.77 kB
packages/form-footer/dist/umd/index.js 1.98 kB
packages/gallery-indicator/dist/esm/index.js 1.5 kB
packages/gallery-indicator/dist/esm/testing/index.js 351 B
packages/gallery-indicator/dist/umd/index.js 1.66 kB
packages/gallery-indicator/dist/umd/testing/index.js 481 B
packages/guide-cue/dist/esm/index.js 5.17 kB
packages/guide-cue/dist/umd/index.js 5.37 kB
packages/hooks/dist/esm/index.js 3.65 kB
packages/hooks/dist/umd/index.js 3.79 kB
packages/icon-button/dist/esm/index.js 2.28 kB
packages/icon-button/dist/umd/index.js 2.49 kB
packages/icon/dist/esm/ActivityFeed.js 1.18 kB
packages/icon/dist/esm/AddFile.js 964 B
packages/icon/dist/esm/AIModel.js 1.68 kB
packages/icon/dist/esm/AllProducts.js 1.05 kB
packages/icon/dist/esm/AnalyticsNode.js 821 B
packages/icon/dist/esm/Apps.js 660 B
packages/icon/dist/esm/Array.js 781 B
packages/icon/dist/esm/ArrowDown.js 892 B
packages/icon/dist/esm/ArrowLeft.js 895 B
packages/icon/dist/esm/ArrowRight.js 890 B
packages/icon/dist/esm/ArrowUp.js 887 B
packages/icon/dist/esm/Award.js 1.3 kB
packages/icon/dist/esm/Beaker.js 1.3 kB
packages/icon/dist/esm/Bell.js 857 B
packages/icon/dist/esm/Biometric.js 1.39 kB
packages/icon/dist/esm/Boolean.js 706 B
packages/icon/dist/esm/Building.js 851 B
packages/icon/dist/esm/Bulb.js 891 B
packages/icon/dist/esm/Calendar.js 852 B
packages/icon/dist/esm/Camera.js 934 B
packages/icon/dist/esm/Cap.js 1.04 kB
packages/icon/dist/esm/CaretDown.js 726 B
packages/icon/dist/esm/CaretLeft.js 725 B
packages/icon/dist/esm/CaretRight.js 720 B
packages/icon/dist/esm/CaretUp.js 725 B
packages/icon/dist/esm/ChartFilled.js 819 B
packages/icon/dist/esm/Charts.js 805 B
packages/icon/dist/esm/Checkmark.js 850 B
packages/icon/dist/esm/CheckmarkWithCircle.js 912 B
packages/icon/dist/esm/ChevronDown.js 824 B
packages/icon/dist/esm/ChevronLeft.js 822 B
packages/icon/dist/esm/ChevronRight.js 833 B
packages/icon/dist/esm/ChevronUp.js 812 B
packages/icon/dist/esm/Circle.js 602 B
packages/icon/dist/esm/Clock.js 874 B
packages/icon/dist/esm/ClockWithArrow.js 1.13 kB
packages/icon/dist/esm/Clone.js 759 B
packages/icon/dist/esm/Cloud.js 926 B
packages/icon/dist/esm/Code.js 1.11 kB
packages/icon/dist/esm/CodeBlock.js 1.06 kB
packages/icon/dist/esm/Coin.js 1.16 kB
packages/icon/dist/esm/Colon.js 717 B
packages/icon/dist/esm/Config.js 1.01 kB
packages/icon/dist/esm/Connect.js 1.15 kB
packages/icon/dist/esm/Copy.js 1.11 kB
packages/icon/dist/esm/CreditCard.js 688 B
packages/icon/dist/esm/CurlyBraces.js 1.26 kB
packages/icon/dist/esm/Cursor.js 806 B
packages/icon/dist/esm/Dashboard.js 828 B
packages/icon/dist/esm/Database.js 1.26 kB
packages/icon/dist/esm/Diagram.js 899 B
packages/icon/dist/esm/Diagram2.js 905 B
packages/icon/dist/esm/Diagram3.js 884 B
packages/icon/dist/esm/Disconnect.js 1.1 kB
packages/icon/dist/esm/Download.js 1.03 kB
packages/icon/dist/esm/Drag.js 869 B
packages/icon/dist/esm/Edit.js 765 B
packages/icon/dist/esm/Ellipsis.js 758 B
packages/icon/dist/esm/Email.js 948 B
packages/icon/dist/esm/EmptyDatabase.js 3.44 kB
packages/icon/dist/esm/EmptyFolder.js 1.33 kB
packages/icon/dist/esm/Eraser.js 1.01 kB
packages/icon/dist/esm/Escalation.js 910 B
packages/icon/dist/esm/Export.js 1.02 kB
packages/icon/dist/esm/Favorite.js 970 B
packages/icon/dist/esm/Federation.js 1.27 kB
packages/icon/dist/esm/File.js 793 B
packages/icon/dist/esm/Filter.js 779 B
packages/icon/dist/esm/Folder.js 694 B
packages/icon/dist/esm/Format.js 1.1 kB
packages/icon/dist/esm/FullScreenEnter.js 943 B
packages/icon/dist/esm/FullScreenExit.js 952 B
packages/icon/dist/esm/Function.js 1.92 kB
packages/icon/dist/esm/Gauge.js 964 B
packages/icon/dist/esm/GlobeAmericas.js 890 B
packages/icon/dist/esm/glyphCommon-cTThlth0.js 825 B
packages/icon/dist/esm/GovernmentBuilding.js 931 B
packages/icon/dist/esm/Guide.js 1.22 kB
packages/icon/dist/esm/Hash.js 1.07 kB
packages/icon/dist/esm/HiddenSecondaryNode.js 2.31 kB
packages/icon/dist/esm/Highlight.js 1.1 kB
packages/icon/dist/esm/Home.js 1.03 kB
packages/icon/dist/esm/HorizontalDrag.js 876 B
packages/icon/dist/esm/Import.js 1.01 kB
packages/icon/dist/esm/ImportantWithCircle.js 792 B
packages/icon/dist/esm/InfoWithCircle.js 825 B
packages/icon/dist/esm/InternalEmployee.js 1.1 kB
packages/icon/dist/esm/InviteUser.js 1.11 kB
packages/icon/dist/esm/Key.js 926 B
packages/icon/dist/esm/Laptop.js 910 B
packages/icon/dist/esm/LightningBolt.js 790 B
packages/icon/dist/esm/Link.js 1.25 kB
packages/icon/dist/esm/List.js 939 B
packages/icon/dist/esm/Lock.js 879 B
packages/icon/dist/esm/LogIn.js 951 B
packages/icon/dist/esm/LogOut.js 1.01 kB
packages/icon/dist/esm/MagnifyingGlass.js 859 B
packages/icon/dist/esm/Megaphone.js 830 B
packages/icon/dist/esm/Menu.js 753 B
packages/icon/dist/esm/Minus.js 703 B
packages/icon/dist/esm/Mobile.js 698 B
packages/icon/dist/esm/Moon.js 870 B
packages/icon/dist/esm/MultiDirectionArrow.js 906 B
packages/icon/dist/esm/MultiLayers.js 1.83 kB
packages/icon/dist/esm/NavCollapse.js 924 B
packages/icon/dist/esm/NavExpand.js 934 B
packages/icon/dist/esm/NoFilter.js 911 B
packages/icon/dist/esm/NotAllowed.js 808 B
packages/icon/dist/esm/Note.js 842 B
packages/icon/dist/esm/NumberedList.js 1.7 kB
packages/icon/dist/esm/OpenNewTab.js 1.1 kB
packages/icon/dist/esm/OutlineFavorite.js 1.23 kB
packages/icon/dist/esm/Package.js 1.08 kB
packages/icon/dist/esm/Pause.js 753 B
packages/icon/dist/esm/Pending.js 732 B
packages/icon/dist/esm/Person.js 908 B
packages/icon/dist/esm/PersonGroup.js 1.1 kB
packages/icon/dist/esm/PersonWithLock.js 1.1 kB
packages/icon/dist/esm/Pin.js 854 B
packages/icon/dist/esm/Play.js 736 B
packages/icon/dist/esm/Plus.js 757 B
packages/icon/dist/esm/PlusWithCircle.js 787 B
packages/icon/dist/esm/Primary.js 804 B
packages/icon/dist/esm/Project.js 843 B
packages/icon/dist/esm/QuestionMarkWithCircle.js 1.13 kB
packages/icon/dist/esm/Read.js 1.42 kB
packages/icon/dist/esm/Recommended.js 1.58 kB
packages/icon/dist/esm/Redo.js 1.06 kB
packages/icon/dist/esm/Refresh.js 1.13 kB
packages/icon/dist/esm/Relationship.js 852 B
packages/icon/dist/esm/ReplicaSet.js 997 B
packages/icon/dist/esm/Resize.js 825 B
packages/icon/dist/esm/Resource.js 1.14 kB
packages/icon/dist/esm/Return.js 909 B
packages/icon/dist/esm/Revert.js 943 B
packages/icon/dist/esm/Router.js 1.6 kB
packages/icon/dist/esm/Save.js 1.32 kB
packages/icon/dist/esm/SearchIndex.js 1.45 kB
packages/icon/dist/esm/Secondary.js 1.03 kB
packages/icon/dist/esm/Serverless.js 976 B
packages/icon/dist/esm/Settings.js 1.39 kB
packages/icon/dist/esm/ShardedCluster.js 1.35 kB
packages/icon/dist/esm/Shell.js 900 B
packages/icon/dist/esm/Shield.js 1.3 kB
packages/icon/dist/esm/Shirt.js 855 B
packages/icon/dist/esm/Shortcut.js 1.4 kB
packages/icon/dist/esm/SMS.js 864 B
packages/icon/dist/esm/SortAscending.js 947 B
packages/icon/dist/esm/SortDescending.js 939 B
packages/icon/dist/esm/Sparkle.js 1.25 kB
packages/icon/dist/esm/SplitHorizontal.js 719 B
packages/icon/dist/esm/SplitVertical.js 718 B
packages/icon/dist/esm/Stitch.js 754 B
packages/icon/dist/esm/Stop.js 609 B
packages/icon/dist/esm/Streaming.js 1.7 kB
packages/icon/dist/esm/String.js 857 B
packages/icon/dist/esm/Sun.js 1.07 kB
packages/icon/dist/esm/Support.js 937 B
packages/icon/dist/esm/Sweep.js 964 B
packages/icon/dist/esm/Table.js 742 B
packages/icon/dist/esm/Tag.js 781 B
packages/icon/dist/esm/TemporaryTable.js 967 B
packages/icon/dist/esm/ThumbsDown.js 1.05 kB
packages/icon/dist/esm/ThumbsUp.js 1.04 kB
packages/icon/dist/esm/TimeSeries.js 1.08 kB
packages/icon/dist/esm/TimeSeriesCollection.js 1.21 kB
packages/icon/dist/esm/Trash.js 770 B
packages/icon/dist/esm/Undo.js 1.06 kB
packages/icon/dist/esm/University.js 1.25 kB
packages/icon/dist/esm/Unlock.js 947 B
packages/icon/dist/esm/Unsorted.js 991 B
packages/icon/dist/esm/UpDownCarets.js 845 B
packages/icon/dist/esm/Upload.js 1.03 kB
packages/icon/dist/esm/VerticalEllipsis.js 768 B
packages/icon/dist/esm/View.js 903 B
packages/icon/dist/esm/Visibility.js 1.06 kB
packages/icon/dist/esm/VisibilityOff.js 1.44 kB
packages/icon/dist/esm/Warning.js 839 B
packages/icon/dist/esm/Wizard.js 1.15 kB
packages/icon/dist/esm/Wrench.js 1.15 kB
packages/icon/dist/esm/Write.js 1.43 kB
packages/icon/dist/esm/X.js 879 B
packages/icon/dist/esm/XWithCircle.js 824 B
packages/icon/dist/umd/ActivityFeed.js 2.04 kB
packages/icon/dist/umd/AddFile.js 1.81 kB
packages/icon/dist/umd/AIModel.js 2.56 kB
packages/icon/dist/umd/AllProducts.js 1.88 kB
packages/icon/dist/umd/AnalyticsNode.js 1.65 kB
packages/icon/dist/umd/Apps.js 1.48 kB
packages/icon/dist/umd/Array.js 1.6 kB
packages/icon/dist/umd/ArrowDown.js 1.73 kB
packages/icon/dist/umd/ArrowLeft.js 1.74 kB
packages/icon/dist/umd/ArrowRight.js 1.73 kB
packages/icon/dist/umd/ArrowUp.js 1.73 kB
packages/icon/dist/umd/Award.js 2.17 kB
packages/icon/dist/umd/Beaker.js 2.16 kB
packages/icon/dist/umd/Bell.js 1.69 kB
packages/icon/dist/umd/Biometric.js 2.26 kB
packages/icon/dist/umd/Boolean.js 1.53 kB
packages/icon/dist/umd/Building.js 1.68 kB
packages/icon/dist/umd/Bulb.js 1.73 kB
packages/icon/dist/umd/Calendar.js 1.68 kB
packages/icon/dist/umd/Camera.js 1.77 kB
packages/icon/dist/umd/Cap.js 1.89 kB
packages/icon/dist/umd/CaretDown.js 1.55 kB
packages/icon/dist/umd/CaretLeft.js 1.55 kB
packages/icon/dist/umd/CaretRight.js 1.55 kB
packages/icon/dist/umd/CaretUp.js 1.55 kB
packages/icon/dist/umd/ChartFilled.js 1.65 kB
packages/icon/dist/umd/Charts.js 1.62 kB
packages/icon/dist/umd/Checkmark.js 1.69 kB
packages/icon/dist/umd/CheckmarkWithCircle.js 1.76 kB
packages/icon/dist/umd/ChevronDown.js 1.65 kB
packages/icon/dist/umd/ChevronLeft.js 1.65 kB
packages/icon/dist/umd/ChevronRight.js 1.67 kB
packages/icon/dist/umd/ChevronUp.js 1.64 kB
packages/icon/dist/umd/Circle.js 1.42 kB
packages/icon/dist/umd/Clock.js 1.71 kB
packages/icon/dist/umd/ClockWithArrow.js 2 kB
packages/icon/dist/umd/Clone.js 1.58 kB
packages/icon/dist/umd/Cloud.js 1.77 kB
packages/icon/dist/umd/Code.js 1.98 kB
packages/icon/dist/umd/CodeBlock.js 1.91 kB
packages/icon/dist/umd/Coin.js 2.02 kB
packages/icon/dist/umd/Colon.js 1.54 kB
packages/icon/dist/umd/Config.js 1.85 kB
packages/icon/dist/umd/Connect.js 2.01 kB
packages/icon/dist/umd/Copy.js 1.96 kB
packages/icon/dist/umd/CreditCard.js 1.51 kB
packages/icon/dist/umd/CurlyBraces.js 2.12 kB
packages/icon/dist/umd/Cursor.js 1.64 kB
packages/icon/dist/umd/Dashboard.js 1.65 kB
packages/icon/dist/umd/Database.js 2.11 kB
packages/icon/dist/umd/Diagram.js 1.73 kB
packages/icon/dist/umd/Diagram2.js 1.74 kB
packages/icon/dist/umd/Diagram3.js 1.71 kB
packages/icon/dist/umd/Disconnect.js 1.95 kB
packages/icon/dist/umd/Download.js 1.87 kB
packages/icon/dist/umd/Drag.js 1.7 kB
packages/icon/dist/umd/Edit.js 1.6 kB
packages/icon/dist/umd/Ellipsis.js 1.57 kB
packages/icon/dist/umd/Email.js 1.79 kB
packages/icon/dist/umd/EmptyDatabase.js 4.4 kB
packages/icon/dist/umd/EmptyFolder.js 2.18 kB
packages/icon/dist/umd/Eraser.js 1.86 kB
packages/icon/dist/umd/Escalation.js 1.76 kB
packages/icon/dist/umd/Export.js 1.87 kB
packages/icon/dist/umd/Favorite.js 1.82 kB
packages/icon/dist/umd/Federation.js 2.15 kB
packages/icon/dist/umd/File.js 1.62 kB
packages/icon/dist/umd/Filter.js 1.61 kB
packages/icon/dist/umd/Folder.js 1.52 kB
packages/icon/dist/umd/Format.js 1.94 kB
packages/icon/dist/umd/FullScreenEnter.js 1.77 kB
packages/icon/dist/umd/FullScreenExit.js 1.78 kB
packages/icon/dist/umd/Function.js 2.84 kB
packages/icon/dist/umd/Gauge.js 1.82 kB
packages/icon/dist/umd/GlobeAmericas.js 1.73 kB
packages/icon/dist/umd/GovernmentBuilding.js 1.76 kB
packages/icon/dist/umd/Guide.js 2.08 kB
packages/icon/dist/umd/Hash.js 1.92 kB
packages/icon/dist/umd/HiddenSecondaryNode.js 3.2 kB
packages/icon/dist/umd/Highlight.js 1.97 kB
packages/icon/dist/umd/Home.js 1.88 kB
packages/icon/dist/umd/HorizontalDrag.js 1.7 kB
packages/icon/dist/umd/Import.js 1.86 kB
packages/icon/dist/umd/ImportantWithCircle.js 1.62 kB
packages/icon/dist/umd/InfoWithCircle.js 1.65 kB
packages/icon/dist/umd/InternalEmployee.js 1.95 kB
packages/icon/dist/umd/InviteUser.js 1.96 kB
packages/icon/dist/umd/Key.js 1.76 kB
packages/icon/dist/umd/Laptop.js 1.75 kB
packages/icon/dist/umd/LightningBolt.js 1.62 kB
packages/icon/dist/umd/Link.js 2.13 kB
packages/icon/dist/umd/List.js 1.76 kB
packages/icon/dist/umd/Lock.js 1.72 kB
packages/icon/dist/umd/LogIn.js 1.79 kB
packages/icon/dist/umd/LogOut.js 1.85 kB
packages/icon/dist/umd/MagnifyingGlass.js 1.69 kB
packages/icon/dist/umd/Megaphone.js 1.67 kB
packages/icon/dist/umd/Menu.js 1.57 kB
packages/icon/dist/umd/Minus.js 1.53 kB
packages/icon/dist/umd/Mobile.js 1.52 kB
packages/icon/dist/umd/Moon.js 1.71 kB
packages/icon/dist/umd/MultiDirectionArrow.js 1.74 kB
packages/icon/dist/umd/MultiLayers.js 2.71 kB
packages/icon/dist/umd/NavCollapse.js 1.76 kB
packages/icon/dist/umd/NavExpand.js 1.77 kB
packages/icon/dist/umd/NoFilter.js 1.76 kB
packages/icon/dist/umd/NotAllowed.js 1.64 kB
packages/icon/dist/umd/Note.js 1.67 kB
packages/icon/dist/umd/NumberedList.js 2.58 kB
packages/icon/dist/umd/OpenNewTab.js 1.96 kB
packages/icon/dist/umd/OutlineFavorite.js 2.09 kB
packages/icon/dist/umd/Package.js 1.93 kB
packages/icon/dist/umd/Pause.js 1.57 kB
packages/icon/dist/umd/Pending.js 1.55 kB
packages/icon/dist/umd/Person.js 1.75 kB
packages/icon/dist/umd/PersonGroup.js 1.95 kB
packages/icon/dist/umd/PersonWithLock.js 1.95 kB
packages/icon/dist/umd/Pin.js 1.69 kB
packages/icon/dist/umd/Play.js 1.56 kB
packages/icon/dist/umd/Plus.js 1.58 kB
packages/icon/dist/umd/PlusWithCircle.js 1.61 kB
packages/icon/dist/umd/Primary.js 1.63 kB
packages/icon/dist/umd/Project.js 1.67 kB
packages/icon/dist/umd/QuestionMarkWithCircle.js 1.99 kB
packages/icon/dist/umd/Read.js 2.29 kB
packages/icon/dist/umd/Recommended.js 2.47 kB
packages/icon/dist/umd/Redo.js 1.93 kB
packages/icon/dist/umd/Refresh.js 2 kB
packages/icon/dist/umd/Relationship.js 1.68 kB
packages/icon/dist/umd/ReplicaSet.js 1.84 kB
packages/icon/dist/umd/Resize.js 1.65 kB
packages/icon/dist/umd/Resource.js 1.99 kB
packages/icon/dist/umd/Return.js 1.75 kB
packages/icon/dist/umd/Revert.js 1.8 kB
packages/icon/dist/umd/Router.js 2.46 kB
packages/icon/dist/umd/Save.js 2.18 kB
packages/icon/dist/umd/SearchIndex.js 2.32 kB
packages/icon/dist/umd/Secondary.js 1.87 kB
packages/icon/dist/umd/Serverless.js 1.83 kB
packages/icon/dist/umd/Settings.js 2.26 kB
packages/icon/dist/umd/ShardedCluster.js 2.21 kB
packages/icon/dist/umd/Shell.js 1.75 kB
packages/icon/dist/umd/Shield.js 2.19 kB
packages/icon/dist/umd/Shirt.js 1.69 kB
packages/icon/dist/umd/Shortcut.js 2.27 kB
packages/icon/dist/umd/SMS.js 1.7 kB
packages/icon/dist/umd/SortAscending.js 1.78 kB
packages/icon/dist/umd/SortDescending.js 1.77 kB
packages/icon/dist/umd/Sparkle.js 2.11 kB
packages/icon/dist/umd/SplitHorizontal.js 1.54 kB
packages/icon/dist/umd/SplitVertical.js 1.54 kB
packages/icon/dist/umd/Stitch.js 1.57 kB
packages/icon/dist/umd/Stop.js 1.43 kB
packages/icon/dist/umd/Streaming.js 2.59 kB
packages/icon/dist/umd/String.js 1.69 kB
packages/icon/dist/umd/Sun.js 1.91 kB
packages/icon/dist/umd/Support.js 1.78 kB
packages/icon/dist/umd/Sweep.js 1.8 kB
packages/icon/dist/umd/Table.js 1.56 kB
packages/icon/dist/umd/Tag.js 1.6 kB
packages/icon/dist/umd/TemporaryTable.js 1.81 kB
packages/icon/dist/umd/ThumbsDown.js 1.9 kB
packages/icon/dist/umd/ThumbsUp.js 1.9 kB
packages/icon/dist/umd/TimeSeries.js 1.95 kB
packages/icon/dist/umd/TimeSeriesCollection.js 2.08 kB
packages/icon/dist/umd/Trash.js 1.6 kB
packages/icon/dist/umd/Undo.js 1.92 kB
packages/icon/dist/umd/University.js 2.11 kB
packages/icon/dist/umd/Unlock.js 1.79 kB
packages/icon/dist/umd/Unsorted.js 1.83 kB
packages/icon/dist/umd/UpDownCarets.js 1.67 kB
packages/icon/dist/umd/Upload.js 1.88 kB
packages/icon/dist/umd/VerticalEllipsis.js 1.58 kB
packages/icon/dist/umd/View.js 1.73 kB
packages/icon/dist/umd/Visibility.js 1.91 kB
packages/icon/dist/umd/VisibilityOff.js 2.31 kB
packages/icon/dist/umd/Warning.js 1.67 kB
packages/icon/dist/umd/Wizard.js 2.03 kB
packages/icon/dist/umd/Wrench.js 2.01 kB
packages/icon/dist/umd/Write.js 2.3 kB
packages/icon/dist/umd/X.js 1.71 kB
packages/icon/dist/umd/XWithCircle.js 1.65 kB
packages/info-sprinkle/dist/esm/index.js 1.83 kB
packages/info-sprinkle/dist/umd/index.js 2.04 kB
packages/inline-definition/dist/esm/index.js 1.71 kB
packages/inline-definition/dist/umd/index.js 1.89 kB
packages/input-option/dist/esm/index.js 2.67 kB
packages/input-option/dist/umd/index.js 2.82 kB
packages/leafygreen-provider/dist/esm/index.js 1.87 kB
packages/leafygreen-provider/dist/umd/index.js 2.03 kB
packages/lib/dist/esm/index.js 3.28 kB
packages/lib/dist/umd/index.js 3.43 kB
packages/loading-indicator/dist/esm/index.js 3.94 kB
packages/loading-indicator/dist/esm/page-loader/index.js 2.86 kB
packages/loading-indicator/dist/esm/spinner/index.js 2.32 kB
packages/loading-indicator/dist/esm/testing/index.js 316 B
packages/loading-indicator/dist/umd/index.js 4.1 kB
packages/loading-indicator/dist/umd/testing/index.js 441 B
packages/logo/dist/esm/index.js 39 kB
packages/logo/dist/umd/index.js 39.4 kB
packages/marketing-modal/dist/esm/index.js 3.55 kB
packages/marketing-modal/dist/umd/index.js 3.75 kB
packages/menu/dist/esm/index.js 8.15 kB
packages/menu/dist/umd/index.js 8.43 kB
packages/modal/dist/esm/index.js 3.32 kB
packages/modal/dist/esm/testing/index.js 278 B
packages/modal/dist/umd/index.js 3.46 kB
packages/modal/dist/umd/testing/index.js 399 B
packages/number-input/dist/esm/index.js 5.69 kB
packages/number-input/dist/umd/index.js 5.85 kB
packages/ordered-list/dist/esm/index.js 1.33 kB
packages/ordered-list/dist/umd/index.js 1.5 kB
packages/pagination/dist/esm/index.js 1.7 kB
packages/pagination/dist/umd/index.js 1.94 kB
packages/palette/dist/esm/index.js 411 B
packages/palette/dist/umd/index.js 561 B
packages/password-input/dist/esm/index.js 4.55 kB
packages/password-input/dist/umd/index.js 4.75 kB
packages/pipeline/dist/esm/index.js 7.85 kB
packages/pipeline/dist/umd/index.js 8.12 kB
packages/polymorphic/dist/esm/index.js 1.27 kB
packages/polymorphic/dist/umd/index.js 1.41 kB
packages/popover/dist/esm/index.js 5.25 kB
packages/popover/dist/umd/index.js 5.4 kB
packages/portal/dist/esm/index.js 923 B
packages/portal/dist/umd/index.js 1.09 kB
packages/preview-card/dist/esm/index.js 2.35 kB
packages/preview-card/dist/esm/testing/index.js 2.68 kB
packages/preview-card/dist/umd/index.js 2.5 kB
packages/preview-card/dist/umd/testing/index.js 2.81 kB
packages/progress-bar/dist/esm/index.js 5.55 kB
packages/progress-bar/dist/esm/testing/index.js 507 B
packages/progress-bar/dist/umd/index.js 5.8 kB
packages/progress-bar/dist/umd/testing/index.js 635 B
packages/radio-box-group/dist/esm/index.js 2.87 kB
packages/radio-box-group/dist/umd/index.js 3 kB
packages/radio-group/dist/esm/index.js 3.25 kB
packages/radio-group/dist/umd/index.js 3.4 kB
packages/resizable/dist/esm/index.js 2.48 kB
packages/resizable/dist/umd/index.js 2.58 kB
packages/ripple/dist/esm/index.js 954 B
packages/ripple/dist/umd/index.js 1.05 kB
packages/search-input/dist/esm/index.js 5.91 kB
packages/search-input/dist/umd/index.js 6.11 kB
packages/section-nav/dist/esm/index.js 2.62 kB
packages/section-nav/dist/esm/testing/index.js 2.85 kB
packages/section-nav/dist/umd/index.js 2.76 kB
packages/section-nav/dist/umd/testing/index.js 3.03 kB
packages/segmented-control/dist/esm/index.js 5.44 kB
packages/segmented-control/dist/umd/index.js 5.59 kB
packages/select/dist/esm/index.js 8.67 kB
packages/select/dist/esm/testing/index.js 752 B
packages/select/dist/umd/index.js 8.87 kB
packages/select/dist/umd/testing/index.js 893 B
packages/side-nav/dist/esm/index.js 7.48 kB
packages/side-nav/dist/umd/index.js 7.72 kB
packages/skeleton-loader/dist/esm/index.js 3.25 kB
packages/skeleton-loader/dist/umd/index.js 3.47 kB
packages/split-button/dist/esm/index.js 3.56 kB
packages/split-button/dist/umd/index.js 3.75 kB
packages/stepper/dist/esm/index.js 3.48 kB
packages/stepper/dist/umd/index.js 3.69 kB
packages/table/dist/esm/index.js 8.04 kB
packages/table/dist/esm/testing/index.js 694 B
packages/table/dist/umd/index.js 8.27 kB
packages/table/dist/umd/testing/index.js 814 B
packages/tabs/dist/esm/index.js 5.14 kB
packages/tabs/dist/esm/testing/index.js 597 B
packages/tabs/dist/umd/index.js 5.29 kB
packages/tabs/dist/umd/testing/index.js 717 B
packages/testing-lib/dist/esm/index.js 3.34 kB
packages/testing-lib/dist/umd/index.js 3.56 kB
packages/testing-lib/dist/umd/renderHookServer17.js 385 B
packages/testing-lib/dist/umd/renderHookServer18.js 593 B
packages/text-area/dist/esm/index.js 2.2 kB
packages/text-area/dist/esm/testing/index.js 466 B
packages/text-area/dist/umd/index.js 2.36 kB
packages/text-area/dist/umd/testing/index.js 604 B
packages/text-input/dist/esm/index.js 2.5 kB
packages/text-input/dist/esm/testing/index.js 520 B
packages/text-input/dist/umd/index.js 2.68 kB
packages/text-input/dist/umd/testing/index.js 654 B
packages/toast/dist/esm/index.js 8.28 kB
packages/toast/dist/umd/index.js 8.56 kB
packages/toggle/dist/esm/index.js 3 kB
packages/toggle/dist/esm/testing/index.js 276 B
packages/toggle/dist/umd/index.js 3.19 kB
packages/toggle/dist/umd/testing/index.js 407 B
packages/tokens/dist/esm/index.js 3.14 kB
packages/tokens/dist/umd/index.js 3.25 kB
packages/toolbar/dist/esm/index.js 3.33 kB
packages/toolbar/dist/esm/testing/index.js 527 B
packages/toolbar/dist/umd/index.js 3.44 kB
packages/toolbar/dist/umd/testing/index.js 643 B
packages/tooltip/dist/esm/index.js 4.42 kB
packages/tooltip/dist/umd/index.js 4.7 kB
packages/typography/dist/esm/index.js 5.8 kB
packages/typography/dist/umd/index.js 5.95 kB
packages/vertical-stepper/dist/esm/index.js 3.19 kB
packages/vertical-stepper/dist/umd/index.js 3.39 kB
packages/wizard/dist/esm/index.js 2.36 kB
packages/wizard/dist/esm/testing/index.js 430 B
packages/wizard/dist/umd/index.js 2.51 kB
packages/wizard/dist/umd/testing/index.js 547 B
tools/build/dist/esm/index.js 6.56 kB
tools/build/dist/umd/cli.js 6.7 kB
tools/build/dist/umd/index.js 6.83 kB
tools/cli/dist/esm/index.js 2.54 kB
tools/cli/dist/umd/index.js 2.71 kB
tools/codemods/dist/_virtual/_rollupPluginBabelHelpers.js 936 B
tools/codemods/dist/codemods/loading-spinner-v5/transform.js 650 B
tools/codemods/dist/codemods/modal-v20/transform.js 727 B
tools/codemods/dist/codemods/named-exports/transform.js 764 B
tools/codemods/dist/codemods/popover-v12/transform.js 1.1 kB
tools/codemods/dist/codemods/tabs-v17/transform.js 368 B
tools/codemods/dist/constants.js 148 B
tools/codemods/dist/esm/_virtual/_rollupPluginBabelHelpers.mjs 928 B
tools/codemods/dist/esm/codemods/loading-spinner-v5/transform.mjs 646 B
tools/codemods/dist/esm/codemods/modal-v20/transform.mjs 731 B
tools/codemods/dist/esm/codemods/named-exports/transform.mjs 751 B
tools/codemods/dist/esm/codemods/popover-v12/transform.mjs 1.09 kB
tools/codemods/dist/esm/codemods/tabs-v17/transform.mjs 366 B
tools/codemods/dist/esm/constants.mjs 148 B
tools/codemods/dist/esm/index.js 3.4 kB
tools/codemods/dist/esm/types.mjs 765 B
tools/codemods/dist/esm/utils/imports/getImportSpecifiersForDeclaration.mjs 280 B
tools/codemods/dist/esm/utils/imports/hasNamedImport.mjs 179 B
tools/codemods/dist/esm/utils/imports/mergeImportSpecifiers.mjs 261 B
tools/codemods/dist/esm/utils/jsx/getJSXAttributes.mjs 160 B
tools/codemods/dist/esm/utils/jsx/insertJSXComment/insertJSXComment.mjs 369 B
tools/codemods/dist/esm/utils/transformations/addJSXAttributes/addJSXAttributes.mjs 412 B
tools/codemods/dist/esm/utils/transformations/consolidateJSXAttributes/consolidateJSXAttributes.mjs 665 B
tools/codemods/dist/esm/utils/transformations/removeJSXAttributes/removeJSXAttributes.mjs 360 B
tools/codemods/dist/esm/utils/transformations/replaceJSXAttributes/replaceJSXAttributes.mjs 278 B
tools/codemods/dist/types.js 765 B
tools/codemods/dist/umd/index.js 3.64 kB
tools/codemods/dist/utils/imports/getImportSpecifiersForDeclaration.js 283 B
tools/codemods/dist/utils/imports/hasNamedImport.js 183 B
tools/codemods/dist/utils/imports/mergeImportSpecifiers.js 260 B
tools/codemods/dist/utils/jsx/getJSXAttributes.js 164 B
tools/codemods/dist/utils/jsx/insertJSXComment/insertJSXComment.js 371 B
tools/codemods/dist/utils/transformations/addJSXAttributes/addJSXAttributes.js 410 B
tools/codemods/dist/utils/transformations/consolidateJSXAttributes/consolidateJSXAttributes.js 664 B
tools/codemods/dist/utils/transformations/removeJSXAttributes/removeJSXAttributes.js 364 B
tools/codemods/dist/utils/transformations/replaceJSXAttributes/replaceJSXAttributes.js 282 B
tools/create/dist/esm/index.js 4.31 kB
tools/create/dist/umd/index.js 4.48 kB
tools/eslint-plugin/dist/esm/index.js 1.08 kB
tools/eslint-plugin/dist/umd/index.js 1.18 kB
tools/install/dist/esm/index.js 2.22 kB
tools/install/dist/umd/index.js 2.38 kB
tools/link/dist/esm/index.js 5.3 kB
tools/link/dist/umd/index.js 5.44 kB
tools/lint/dist/esm/index.js 4.11 kB
tools/lint/dist/umd/index.js 4.25 kB
tools/meta/dist/esm/index.js 1.71 kB
tools/meta/dist/umd/index.js 1.85 kB
tools/prompt-kit/dist/esm/index.js 2.27 kB
tools/prompt-kit/dist/umd/index.js 2.41 kB
tools/slackbot/dist/esm/index.js 4.8 kB
tools/slackbot/dist/umd/index.js 4.97 kB
tools/storybook-addon/dist/esm/index.js 2.22 kB
tools/storybook-addon/dist/esm/main.js 2.22 kB
tools/storybook-addon/dist/esm/manager.js 554 B
tools/storybook-addon/dist/esm/preview.js 1.69 kB
tools/storybook-addon/dist/umd/index.js 2.34 kB
tools/storybook-addon/dist/umd/main.js 2.34 kB
tools/storybook-addon/dist/umd/manager.js 691 B
tools/storybook-addon/dist/umd/preview.js 1.81 kB
tools/storybook-decorators/dist/esm/index.js 3.28 kB
tools/storybook-decorators/dist/umd/index.js 3.56 kB
tools/storybook-utils/dist/esm/index.js 2.77 kB
tools/storybook-utils/dist/umd/index.js 2.9 kB
tools/test-harnesses/dist/esm/index.js 1.78 kB
tools/test-harnesses/dist/umd/index.js 1.91 kB
tools/test/dist/esm/index.js 1.68 kB
tools/test/dist/umd/index.js 1.82 kB
tools/update/dist/esm/index.js 725 B
tools/update/dist/umd/index.js 893 B
tools/validate/dist/esm/index.js 5.75 kB
tools/validate/dist/umd/index.js 5.98 kB

compressed-size-action

@adamrasheed adamrasheed marked this pull request as ready for review December 11, 2025 06:43
@adamrasheed adamrasheed requested a review from a team as a code owner December 11, 2025 06:43
@adamrasheed adamrasheed requested review from TheSonOfThomp, Copilot and tsck and removed request for a team December 11, 2025 06:43
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes icon fill support by explicitly passing the fill prop through the createIconComponent function to the underlying SVG components. The change ensures that the fill prop (which is converted to a CSS color property by the generated icon components) is properly threaded through the icon wrapper.

Key changes:

  • Modified createIconComponent to explicitly destructure and pass the fill prop to SVG components
  • Added test coverage to verify that the fill prop correctly applies CSS color styling

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
packages/icon/src/createIconComponent.tsx Explicitly destructures fill from props and passes it to the SVG component
packages/icon/src/Icon.spec.tsx Adds test to verify fill prop applies CSS color correctly

@adamrasheed adamrasheed marked this pull request as draft December 11, 2025 18:50
@adamrasheed adamrasheed marked this pull request as ready for review December 12, 2025 21:57
@github-actions
Copy link
Contributor

Coverage after merging ar/LG-5766-icon-fix into main will be

79.13%

Coverage Report for Changed Files
FileStmtsBranchesFuncsLinesUncovered Lines
packages/icon/src
   createIconComponent.tsx100%100%100%100%
   testUtils.tsx100%100%100%100%

test('`fill` prop applies CSS color correctly', () => {
const { container } = render(<Icon glyph="Edit" fill="red" />);
const svg = container.querySelector('svg');
expect(svg).toBeTruthy();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
expect(svg).toBeTruthy();
expect(svg).toBeInTheDocument();

'@leafygreen-ui/icon': patch
---

Fixed an issue where icons generated through createIconComponent were not passing in fill value correctly
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Fixed an issue where icons generated through createIconComponent were not passing in fill value correctly
Fixed an issue where icons generated through `createIconComponent` were not passing in fill value correctly

Comment on lines +38 to +39

return createGlyphComponent(key, val);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What happens if val is not a valid svg element?

Comment on lines +20 to +22
export const MockSVGRGlyphWithChildren = createMockSVGRComponent(
'mock-glyph-with-children',
);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When would we need this? What is this testing?

Comment on lines +23 to +26
export const CustomSVGRGlyph = createMockSVGRComponent('custom-svgr-glyph');
export const AnotherCustomGlyph = createMockSVGRComponent(
'another-custom-glyph',
);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to pre-define 3 separate test glyphs?

test('applies numeric size to height and width', () => {
render(<GlyphComponent size={24} />);
const glyph = screen.getByTestId('mock-glyph');
expectSize(glyph, '24');
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO it's cleaner and less brittle to explicitly write the assertions

expect(glyph).toHaveAttribute('height', 24);
expect(glyph).toHaveAttribute('width', 24);

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, I'm surprised Jest/ESlint isn't complaining about a test without an explicit expect statement. Must've gotten rid of that rule

Comment on lines +28 to +36
/**
* Size enum values and their expected pixel values for testing
*/
export const sizeTestCases = [
{ size: 'small', enumValue: 'Small', expected: '14' },
{ size: 'default', enumValue: 'Default', expected: '16' },
{ size: 'large', enumValue: 'Large', expected: '20' },
{ size: 'xlarge', enumValue: 'XLarge', expected: '24' },
] as const;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where is this used?

};

// Pre-built mock components for common test scenarios
export const MockSVGRGlyph = createMockSVGRComponent('mock-glyph');
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Technically it's not a "mock" glyph, it's a test component

test('applies fill as CSS color', () => {
render(<GlyphComponent fill="red" />);
const glyph = screen.getByTestId('mock-glyph');
expectFillColor(glyph, 'red');
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

similarly, might be cleaner to just have the explicit assertion here.

Tests are one place where DRY can be more trouble than it's worth

Comment on lines +102 to +108
test('does not apply fill style when fill is not provided', () => {
render(<GlyphComponent />);
const glyph = screen.getByTestId('mock-glyph');
// When no fill is provided, no fill-related class should be applied
// The glyph should still render without error
expect(glyph).toBeInTheDocument();
});
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this isn't testing what the title says

Comment on lines +110 to +116
test('applies fill alongside other props', () => {
render(<GlyphComponent fill="blue" className="custom-class" size={32} />);
const glyph = screen.getByTestId('mock-glyph');
expect(glyph).toHaveClass('custom-class');
expectSize(glyph, '32');
expectFillColor(glyph, 'blue');
});
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure this is necessary

Comment on lines +128 to +133
test('applies multiple classNames to the SVG element', () => {
render(<GlyphComponent className="class-one class-two" />);
const glyph = screen.getByTestId('mock-glyph');
expect(glyph).toHaveClass('class-one');
expect(glyph).toHaveClass('class-two');
});
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not necessary

Comment on lines +135 to +142
test('applies className alongside fill style', () => {
render(<GlyphComponent className="custom-class" fill="green" />);
const glyph = screen.getByTestId('mock-glyph');
expect(glyph).toHaveClass('custom-class');
// fill applies a CSS class for the color style
const classList = Array.from(glyph.classList);
expect(classList.length).toBeGreaterThan(1);
});
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not necessary

expect(ariaLabelledBy).toContain('icon-title');
});

test('combines title ID with aria-labelledby when both are provided', () => {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we also check for the title element?

Comment on lines +275 to +294
describe('different glyph names', () => {
test('handles PascalCase glyph names correctly', () => {
const GlyphComponent = createGlyphComponent(
'MyCustomGlyph',
MockSVGRGlyph,
);
expect(GlyphComponent.displayName).toBe('MyCustomGlyph');
render(<GlyphComponent />);
const glyph = screen.getByTestId('mock-glyph');
expect(glyph).toHaveAttribute('aria-label', 'My Custom Glyph Icon');
});

test('handles single word glyph names correctly', () => {
const GlyphComponent = createGlyphComponent('Edit', MockSVGRGlyph);
expect(GlyphComponent.displayName).toBe('Edit');
render(<GlyphComponent />);
const glyph = screen.getByTestId('mock-glyph');
expect(glyph).toHaveAttribute('aria-label', 'Edit Icon');
});
});
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not necessary

Comment on lines +102 to +108
const RawSVGGlyph = createMockSVGRComponent('raw-svg-glyph');

const customSVGGlyphs = {
RawSVG: createGlyphComponent('RawSVG', RawSVGGlyph),
};

const IconComponent = createIconComponent(customSVGGlyphs);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're not testing the case where the SVG element is passed into createIconComponent directly
i.e.

const IconComponent = createIconComponent({ RawSVG: RawSVGGlyph });

});
});

describe('title prop with custom SVGR glyphs', () => {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure if this is necessary

Comment on lines +213 to +220
test('applies multiple classNames to glyph SVG element', () => {
render(
<IconComponent glyph="CustomGlyph" className="class-one class-two" />,
);
const glyph = screen.getByTestId('custom-svgr-glyph');
expect(glyph).toHaveClass('class-one');
expect(glyph).toHaveClass('class-two');
});
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not necessary

Comment on lines +222 to +235
test('applies className alongside fill style', () => {
render(
<IconComponent
glyph="CustomGlyph"
className="custom-class"
fill="red"
/>,
);
const glyph = screen.getByTestId('custom-svgr-glyph');
expect(glyph).toHaveClass('custom-class');
// fill applies a CSS class for the color style
const classList = Array.from(glyph.classList);
expect(classList.length).toBeGreaterThan(1);
});
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not necessary

Comment on lines +238 to +269
describe('className prop with generated glyphs', () => {
const IconComponent = createIconComponent(generatedGlyphs);

test('applies className to generated glyph SVG element', () => {
render(<IconComponent glyph="Edit" className="generated-glyph-class" />);
const glyph = screen.getByRole('img');
expect(glyph).toHaveClass('generated-glyph-class');
});

test('applies multiple classNames to generated glyph', () => {
render(<IconComponent glyph="Edit" className="class-one class-two" />);
const glyph = screen.getByRole('img');
expect(glyph).toHaveClass('class-one');
expect(glyph).toHaveClass('class-two');
});
});

describe('className prop with custom SVGs', () => {
const RawSVGGlyph = createMockSVGRComponent('raw-svg-for-class');

const customSVGGlyphs = {
RawSVG: createGlyphComponent('RawSVG', RawSVGGlyph),
};

const IconComponent = createIconComponent(customSVGGlyphs);

test('applies className to custom SVG components', () => {
render(<IconComponent glyph="RawSVG" className="my-custom-class" />);
const glyph = screen.getByTestId('raw-svg-for-class');
expect(glyph).toHaveClass('my-custom-class');
});
});
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not necessary

test('applies numeric size to glyph', () => {
render(<IconComponent glyph="CustomGlyph" size={24} />);
const glyph = screen.getByTestId('custom-svgr-glyph');
expectSize(glyph, '24');
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same comment about explicit expect

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.

3 participants