From 59d57e29cc69f0346f7079912a9ce5f31f627862 Mon Sep 17 00:00:00 2001 From: vicky-comeau <110498164+vicky-comeau@users.noreply.github.com> Date: Tue, 21 Nov 2023 10:42:39 -0500 Subject: [PATCH] Feature: [HOP-48] Create svg-icons (#93) Co-authored-by: alexandre.asselin Co-authored-by: Alexandre Asselin --- .changeset/few-actors-attack.md | 5 + .github/workflows/ci.yml | 6 +- .nvmrc | 1 + package.json | 11 +- packages/components/package.json | 1 - packages/styled-system/package.json | 1 - packages/svg-icons/.eslintrc.json | 5 + packages/svg-icons/README.md | 40 + packages/svg-icons/jest.config.ts | 12 + packages/svg-icons/package.json | 50 + packages/svg-icons/scripts/build.ts | 31 + packages/svg-icons/scripts/constants.ts | 5 + packages/svg-icons/scripts/generate-icons.ts | 62 + packages/svg-icons/scripts/svgo-config.ts | 61 + packages/svg-icons/src/icons/16px/Add.svg | 3 + .../svg-icons/src/icons/16px/AddCalendar.svg | 3 + packages/svg-icons/src/icons/16px/AddUser.svg | 3 + .../svg-icons/src/icons/16px/AngleDown.svg | 3 + .../svg-icons/src/icons/16px/AngleLeft.svg | 3 + .../svg-icons/src/icons/16px/AngleRight.svg | 3 + packages/svg-icons/src/icons/16px/AngleUp.svg | 3 + packages/svg-icons/src/icons/16px/Archive.svg | 3 + .../svg-icons/src/icons/16px/ArrowDown.svg | 3 + .../svg-icons/src/icons/16px/ArrowLeft.svg | 3 + .../svg-icons/src/icons/16px/ArrowRight.svg | 3 + packages/svg-icons/src/icons/16px/ArrowUp.svg | 3 + .../svg-icons/src/icons/16px/ArrowsUpDown.svg | 3 + packages/svg-icons/src/icons/16px/Bars.svg | 3 + .../svg-icons/src/icons/16px/Basketball.svg | 5 + packages/svg-icons/src/icons/16px/Bento.svg | 11 + packages/svg-icons/src/icons/16px/Bold.svg | 3 + packages/svg-icons/src/icons/16px/Book.svg | 3 + .../svg-icons/src/icons/16px/Bookmark.svg | 3 + packages/svg-icons/src/icons/16px/Bullet.svg | 3 + .../svg-icons/src/icons/16px/Bullseye.svg | 3 + packages/svg-icons/src/icons/16px/CSV.svg | 3 + .../svg-icons/src/icons/16px/Calendar.svg | 3 + packages/svg-icons/src/icons/16px/Camera.svg | 3 + packages/svg-icons/src/icons/16px/Car.svg | 3 + .../svg-icons/src/icons/16px/CaretDown.svg | 3 + .../src/icons/16px/CaretDownSolid.svg | 3 + packages/svg-icons/src/icons/16px/CaretUp.svg | 3 + .../svg-icons/src/icons/16px/CaretUpSolid.svg | 3 + packages/svg-icons/src/icons/16px/Cat.svg | 3 + .../svg-icons/src/icons/16px/ChartBar.svg | 3 + .../svg-icons/src/icons/16px/ChartLine.svg | 3 + .../svg-icons/src/icons/16px/ChartPie.svg | 4 + .../svg-icons/src/icons/16px/Checkmark.svg | 3 + .../svg-icons/src/icons/16px/Cherries.svg | 3 + .../src/icons/16px/CircleAngleLeft.svg | 3 + .../src/icons/16px/CircleAngleRight.svg | 3 + packages/svg-icons/src/icons/16px/Clock.svg | 3 + .../svg-icons/src/icons/16px/CollapseLeft.svg | 3 + .../src/icons/16px/CollapseRight.svg | 3 + packages/svg-icons/src/icons/16px/Comment.svg | 3 + .../svg-icons/src/icons/16px/CommentCheck.svg | 3 + packages/svg-icons/src/icons/16px/Copy.svg | 3 + packages/svg-icons/src/icons/16px/Count.svg | 5 + packages/svg-icons/src/icons/16px/Delete.svg | 3 + packages/svg-icons/src/icons/16px/Dismiss.svg | 3 + packages/svg-icons/src/icons/16px/Dollar.svg | 3 + .../svg-icons/src/icons/16px/Download.svg | 3 + packages/svg-icons/src/icons/16px/Edit.svg | 3 + packages/svg-icons/src/icons/16px/Exit.svg | 3 + .../svg-icons/src/icons/16px/EyeHidden.svg | 5 + .../svg-icons/src/icons/16px/EyeVisible.svg | 3 + .../svg-icons/src/icons/16px/FileCheck.svg | 3 + packages/svg-icons/src/icons/16px/Filter.svg | 3 + packages/svg-icons/src/icons/16px/Five.svg | 3 + packages/svg-icons/src/icons/16px/Flag.svg | 3 + .../svg-icons/src/icons/16px/Football.svg | 3 + packages/svg-icons/src/icons/16px/Four.svg | 3 + packages/svg-icons/src/icons/16px/Gauge.svg | 3 + packages/svg-icons/src/icons/16px/Gift.svg | 3 + packages/svg-icons/src/icons/16px/Graph.svg | 3 + packages/svg-icons/src/icons/16px/Grid.svg | 3 + packages/svg-icons/src/icons/16px/Grip.svg | 8 + packages/svg-icons/src/icons/16px/Home.svg | 3 + packages/svg-icons/src/icons/16px/Info.svg | 3 + packages/svg-icons/src/icons/16px/Italic.svg | 3 + packages/svg-icons/src/icons/16px/Kebab.svg | 5 + .../svg-icons/src/icons/16px/Lightbulb.svg | 3 + packages/svg-icons/src/icons/16px/Link.svg | 3 + packages/svg-icons/src/icons/16px/Lock.svg | 3 + .../svg-icons/src/icons/16px/LockedNote.svg | 3 + packages/svg-icons/src/icons/16px/Mail.svg | 3 + .../svg-icons/src/icons/16px/Microphone.svg | 3 + .../src/icons/16px/MicrophoneDisabled.svg | 5 + packages/svg-icons/src/icons/16px/Minus.svg | 3 + packages/svg-icons/src/icons/16px/Move.svg | 3 + .../svg-icons/src/icons/16px/NewComment.svg | 4 + .../svg-icons/src/icons/16px/NewFilter.svg | 4 + packages/svg-icons/src/icons/16px/NewGift.svg | 4 + packages/svg-icons/src/icons/16px/NewNote.svg | 4 + .../src/icons/16px/NewNotification.svg | 4 + .../svg-icons/src/icons/16px/NewSticky.svg | 4 + packages/svg-icons/src/icons/16px/NewTab.svg | 3 + .../svg-icons/src/icons/16px/NewTemplate.svg | 4 + packages/svg-icons/src/icons/16px/NewTip.svg | 4 + packages/svg-icons/src/icons/16px/Note.svg | 3 + .../svg-icons/src/icons/16px/Notebook.svg | 3 + .../svg-icons/src/icons/16px/Notification.svg | 3 + packages/svg-icons/src/icons/16px/One.svg | 3 + .../svg-icons/src/icons/16px/OpenSmile.svg | 3 + .../svg-icons/src/icons/16px/OrderedList.svg | 8 + .../svg-icons/src/icons/16px/Organization.svg | 3 + packages/svg-icons/src/icons/16px/PDF.svg | 3 + packages/svg-icons/src/icons/16px/Pause.svg | 3 + packages/svg-icons/src/icons/16px/Peace.svg | 3 + packages/svg-icons/src/icons/16px/Percent.svg | 3 + packages/svg-icons/src/icons/16px/Pin.svg | 3 + .../svg-icons/src/icons/16px/PinSolid.svg | 3 + packages/svg-icons/src/icons/16px/Play.svg | 3 + .../svg-icons/src/icons/16px/PlaySolid.svg | 3 + packages/svg-icons/src/icons/16px/Plus.svg | 3 + .../svg-icons/src/icons/16px/Progress.svg | 3 + .../svg-icons/src/icons/16px/Question.svg | 3 + .../svg-icons/src/icons/16px/Reaction.svg | 3 + .../svg-icons/src/icons/16px/Recurring.svg | 3 + packages/svg-icons/src/icons/16px/Refresh.svg | 3 + .../svg-icons/src/icons/16px/Reminder.svg | 3 + packages/svg-icons/src/icons/16px/Remove.svg | 3 + .../src/icons/16px/RemoveCalendar.svg | 4 + .../svg-icons/src/icons/16px/RemoveUser.svg | 4 + packages/svg-icons/src/icons/16px/Reply.svg | 3 + packages/svg-icons/src/icons/16px/Report.svg | 3 + packages/svg-icons/src/icons/16px/Rewind.svg | 3 + packages/svg-icons/src/icons/16px/Rocket.svg | 3 + packages/svg-icons/src/icons/16px/Search.svg | 3 + packages/svg-icons/src/icons/16px/Section.svg | 3 + packages/svg-icons/src/icons/16px/Send.svg | 3 + .../svg-icons/src/icons/16px/Settings.svg | 3 + packages/svg-icons/src/icons/16px/Share.svg | 3 + packages/svg-icons/src/icons/16px/Shared.svg | 3 + packages/svg-icons/src/icons/16px/Shield.svg | 3 + packages/svg-icons/src/icons/16px/Sort.svg | 5 + .../svg-icons/src/icons/16px/Sparkles.svg | 3 + packages/svg-icons/src/icons/16px/Sprout.svg | 3 + packages/svg-icons/src/icons/16px/Star.svg | 3 + .../svg-icons/src/icons/16px/StarSolid.svg | 3 + .../svg-icons/src/icons/16px/StartOver.svg | 3 + packages/svg-icons/src/icons/16px/Sticky.svg | 3 + .../src/icons/16px/Strikethrough.svg | 3 + .../svg-icons/src/icons/16px/Substract.svg | 3 + packages/svg-icons/src/icons/16px/Success.svg | 3 + packages/svg-icons/src/icons/16px/Tag.svg | 3 + packages/svg-icons/src/icons/16px/Team.svg | 3 + .../svg-icons/src/icons/16px/Template.svg | 3 + packages/svg-icons/src/icons/16px/Three.svg | 3 + .../svg-icons/src/icons/16px/ThumbsDown.svg | 3 + .../svg-icons/src/icons/16px/ThumbsUp.svg | 3 + packages/svg-icons/src/icons/16px/Tip.svg | 3 + packages/svg-icons/src/icons/16px/Two.svg | 3 + .../svg-icons/src/icons/16px/Unarchive.svg | 3 + .../svg-icons/src/icons/16px/Underline.svg | 3 + .../src/icons/16px/UnorderedList.svg | 8 + packages/svg-icons/src/icons/16px/Upsell.svg | 3 + packages/svg-icons/src/icons/16px/User.svg | 4 + packages/svg-icons/src/icons/16px/Video.svg | 3 + .../svg-icons/src/icons/16px/VideoCamera.svg | 3 + .../src/icons/16px/VideoCameraDisabled.svg | 3 + packages/svg-icons/src/icons/16px/Warning.svg | 3 + packages/svg-icons/src/icons/24px/Add.svg | 3 + .../svg-icons/src/icons/24px/AddCalendar.svg | 3 + packages/svg-icons/src/icons/24px/AddUser.svg | 4 + .../svg-icons/src/icons/24px/AngleDown.svg | 3 + .../svg-icons/src/icons/24px/AngleLeft.svg | 3 + .../svg-icons/src/icons/24px/AngleRight.svg | 3 + packages/svg-icons/src/icons/24px/AngleUp.svg | 3 + packages/svg-icons/src/icons/24px/Archive.svg | 3 + .../svg-icons/src/icons/24px/ArrowDown.svg | 3 + .../svg-icons/src/icons/24px/ArrowLeft.svg | 3 + .../svg-icons/src/icons/24px/ArrowRight.svg | 3 + packages/svg-icons/src/icons/24px/ArrowUp.svg | 3 + .../svg-icons/src/icons/24px/ArrowsUpDown.svg | 3 + packages/svg-icons/src/icons/24px/Bars.svg | 3 + .../svg-icons/src/icons/24px/Basketball.svg | 5 + packages/svg-icons/src/icons/24px/Bento.svg | 11 + packages/svg-icons/src/icons/24px/Bold.svg | 3 + packages/svg-icons/src/icons/24px/Book.svg | 3 + .../svg-icons/src/icons/24px/Bookmark.svg | 3 + packages/svg-icons/src/icons/24px/Bullet.svg | 3 + .../svg-icons/src/icons/24px/Bullseye.svg | 3 + packages/svg-icons/src/icons/24px/CSV.svg | 3 + .../svg-icons/src/icons/24px/Calendar.svg | 3 + packages/svg-icons/src/icons/24px/Camera.svg | 3 + packages/svg-icons/src/icons/24px/Car.svg | 3 + .../svg-icons/src/icons/24px/CaretDown.svg | 3 + .../src/icons/24px/CaretDownSolid.svg | 3 + packages/svg-icons/src/icons/24px/CaretUp.svg | 3 + .../svg-icons/src/icons/24px/CaretUpSolid.svg | 3 + packages/svg-icons/src/icons/24px/Cat.svg | 11 + .../svg-icons/src/icons/24px/ChartBar.svg | 3 + .../svg-icons/src/icons/24px/ChartLine.svg | 3 + .../svg-icons/src/icons/24px/ChartPie.svg | 4 + .../svg-icons/src/icons/24px/Checkmark.svg | 3 + .../svg-icons/src/icons/24px/Cherries.svg | 3 + .../src/icons/24px/CircleAngleLeft.svg | 3 + .../src/icons/24px/CircleAngleRight.svg | 3 + packages/svg-icons/src/icons/24px/Clock.svg | 3 + .../svg-icons/src/icons/24px/CollapseLeft.svg | 3 + .../src/icons/24px/CollapseRight.svg | 3 + packages/svg-icons/src/icons/24px/Comment.svg | 3 + .../svg-icons/src/icons/24px/CommentCheck.svg | 3 + packages/svg-icons/src/icons/24px/Copy.svg | 3 + packages/svg-icons/src/icons/24px/Count.svg | 5 + packages/svg-icons/src/icons/24px/Delete.svg | 3 + packages/svg-icons/src/icons/24px/Dismiss.svg | 3 + packages/svg-icons/src/icons/24px/Dollar.svg | 3 + .../svg-icons/src/icons/24px/Download.svg | 3 + packages/svg-icons/src/icons/24px/Edit.svg | 3 + packages/svg-icons/src/icons/24px/Exit.svg | 3 + .../svg-icons/src/icons/24px/EyeHidden.svg | 5 + .../svg-icons/src/icons/24px/EyeVisible.svg | 3 + .../svg-icons/src/icons/24px/FileCheck.svg | 3 + packages/svg-icons/src/icons/24px/Filter.svg | 3 + packages/svg-icons/src/icons/24px/Five.svg | 3 + packages/svg-icons/src/icons/24px/Flag.svg | 3 + .../svg-icons/src/icons/24px/Football.svg | 3 + packages/svg-icons/src/icons/24px/Four.svg | 3 + packages/svg-icons/src/icons/24px/Gauge.svg | 3 + packages/svg-icons/src/icons/24px/Gift.svg | 3 + packages/svg-icons/src/icons/24px/Graph.svg | 3 + packages/svg-icons/src/icons/24px/Grid.svg | 3 + packages/svg-icons/src/icons/24px/Grip.svg | 4 + packages/svg-icons/src/icons/24px/Home.svg | 3 + packages/svg-icons/src/icons/24px/Info.svg | 3 + packages/svg-icons/src/icons/24px/Italic.svg | 3 + packages/svg-icons/src/icons/24px/Kebab.svg | 3 + .../svg-icons/src/icons/24px/Lightbulb.svg | 3 + packages/svg-icons/src/icons/24px/Link.svg | 3 + packages/svg-icons/src/icons/24px/Lock.svg | 3 + .../svg-icons/src/icons/24px/LockedNote.svg | 3 + packages/svg-icons/src/icons/24px/Mail.svg | 3 + .../svg-icons/src/icons/24px/Microphone.svg | 3 + .../src/icons/24px/MicrophoneDisabled.svg | 5 + packages/svg-icons/src/icons/24px/Minus.svg | 3 + packages/svg-icons/src/icons/24px/Move.svg | 3 + .../svg-icons/src/icons/24px/NewComment.svg | 4 + .../svg-icons/src/icons/24px/NewFilter.svg | 4 + packages/svg-icons/src/icons/24px/NewGift.svg | 4 + packages/svg-icons/src/icons/24px/NewNote.svg | 4 + .../src/icons/24px/NewNotification.svg | 4 + .../svg-icons/src/icons/24px/NewSticky.svg | 4 + packages/svg-icons/src/icons/24px/NewTab.svg | 3 + .../svg-icons/src/icons/24px/NewTemplate.svg | 4 + packages/svg-icons/src/icons/24px/NewTip.svg | 4 + packages/svg-icons/src/icons/24px/Note.svg | 3 + .../svg-icons/src/icons/24px/Notebook.svg | 3 + .../svg-icons/src/icons/24px/Notification.svg | 3 + packages/svg-icons/src/icons/24px/One.svg | 3 + .../svg-icons/src/icons/24px/OpenSmile.svg | 3 + .../svg-icons/src/icons/24px/OrderedList.svg | 9 + .../svg-icons/src/icons/24px/Organization.svg | 3 + packages/svg-icons/src/icons/24px/PDF.svg | 3 + packages/svg-icons/src/icons/24px/Pause.svg | 3 + packages/svg-icons/src/icons/24px/Peace.svg | 3 + packages/svg-icons/src/icons/24px/Percent.svg | 3 + packages/svg-icons/src/icons/24px/Pin.svg | 3 + .../svg-icons/src/icons/24px/PinSolid.svg | 3 + packages/svg-icons/src/icons/24px/Play.svg | 3 + .../svg-icons/src/icons/24px/PlaySolid.svg | 3 + packages/svg-icons/src/icons/24px/Plus.svg | 3 + .../svg-icons/src/icons/24px/Progress.svg | 3 + .../svg-icons/src/icons/24px/Question.svg | 3 + .../svg-icons/src/icons/24px/Reaction.svg | 3 + .../svg-icons/src/icons/24px/Recurring.svg | 3 + packages/svg-icons/src/icons/24px/Refresh.svg | 3 + .../svg-icons/src/icons/24px/Reminder.svg | 3 + packages/svg-icons/src/icons/24px/Remove.svg | 3 + .../src/icons/24px/RemoveCalendar.svg | 4 + .../svg-icons/src/icons/24px/RemoveUser.svg | 4 + packages/svg-icons/src/icons/24px/Reply.svg | 3 + packages/svg-icons/src/icons/24px/Report.svg | 3 + packages/svg-icons/src/icons/24px/Rewind.svg | 3 + packages/svg-icons/src/icons/24px/Rocket.svg | 3 + packages/svg-icons/src/icons/24px/Search.svg | 3 + packages/svg-icons/src/icons/24px/Section.svg | 3 + packages/svg-icons/src/icons/24px/Send.svg | 3 + .../svg-icons/src/icons/24px/Settings.svg | 3 + packages/svg-icons/src/icons/24px/Share.svg | 3 + packages/svg-icons/src/icons/24px/Shared.svg | 3 + packages/svg-icons/src/icons/24px/Shield.svg | 3 + packages/svg-icons/src/icons/24px/Sort.svg | 5 + .../svg-icons/src/icons/24px/Sparkles.svg | 3 + packages/svg-icons/src/icons/24px/Sprout.svg | 3 + packages/svg-icons/src/icons/24px/Star.svg | 3 + .../svg-icons/src/icons/24px/StarSolid.svg | 3 + .../svg-icons/src/icons/24px/StartOver.svg | 3 + packages/svg-icons/src/icons/24px/Sticky.svg | 3 + .../src/icons/24px/Strikethrough.svg | 3 + .../svg-icons/src/icons/24px/Substract.svg | 3 + packages/svg-icons/src/icons/24px/Success.svg | 3 + packages/svg-icons/src/icons/24px/Tag.svg | 3 + packages/svg-icons/src/icons/24px/Team.svg | 3 + .../svg-icons/src/icons/24px/Template.svg | 3 + packages/svg-icons/src/icons/24px/Three.svg | 3 + .../svg-icons/src/icons/24px/ThumbsDown.svg | 3 + .../svg-icons/src/icons/24px/ThumbsUp.svg | 3 + packages/svg-icons/src/icons/24px/Tip.svg | 3 + packages/svg-icons/src/icons/24px/Two.svg | 3 + .../svg-icons/src/icons/24px/Unarchive.svg | 3 + .../svg-icons/src/icons/24px/Underline.svg | 3 + .../src/icons/24px/UnorderedList.svg | 8 + packages/svg-icons/src/icons/24px/Upsell.svg | 3 + packages/svg-icons/src/icons/24px/User.svg | 4 + packages/svg-icons/src/icons/24px/Video.svg | 3 + .../svg-icons/src/icons/24px/VideoCamera.svg | 3 + .../src/icons/24px/VideoCameraDisabled.svg | 3 + packages/svg-icons/src/icons/24px/Warning.svg | 3 + packages/svg-icons/src/icons/32px/Add.svg | 3 + .../svg-icons/src/icons/32px/AddCalendar.svg | 3 + packages/svg-icons/src/icons/32px/AddUser.svg | 4 + .../svg-icons/src/icons/32px/AngleDown.svg | 3 + .../svg-icons/src/icons/32px/AngleLeft.svg | 3 + .../svg-icons/src/icons/32px/AngleRight.svg | 3 + packages/svg-icons/src/icons/32px/AngleUp.svg | 3 + packages/svg-icons/src/icons/32px/Archive.svg | 3 + .../svg-icons/src/icons/32px/ArrowDown.svg | 3 + .../svg-icons/src/icons/32px/ArrowLeft.svg | 3 + .../svg-icons/src/icons/32px/ArrowRight.svg | 3 + packages/svg-icons/src/icons/32px/ArrowUp.svg | 3 + .../svg-icons/src/icons/32px/ArrowsUpDown.svg | 3 + packages/svg-icons/src/icons/32px/Bars.svg | 3 + .../svg-icons/src/icons/32px/Basketball.svg | 6 + packages/svg-icons/src/icons/32px/Bento.svg | 5 + packages/svg-icons/src/icons/32px/Bold.svg | 3 + packages/svg-icons/src/icons/32px/Book.svg | 3 + .../svg-icons/src/icons/32px/Bookmark.svg | 3 + packages/svg-icons/src/icons/32px/Bullet.svg | 3 + .../svg-icons/src/icons/32px/Bullseye.svg | 3 + packages/svg-icons/src/icons/32px/CSV.svg | 3 + .../svg-icons/src/icons/32px/Calendar.svg | 3 + packages/svg-icons/src/icons/32px/Camera.svg | 3 + packages/svg-icons/src/icons/32px/Car.svg | 3 + .../svg-icons/src/icons/32px/CaretDown.svg | 3 + .../src/icons/32px/CaretDownSolid.svg | 3 + packages/svg-icons/src/icons/32px/CaretUp.svg | 3 + .../svg-icons/src/icons/32px/CaretUpSolid.svg | 3 + packages/svg-icons/src/icons/32px/Cat.svg | 11 + .../svg-icons/src/icons/32px/ChartBar.svg | 3 + .../svg-icons/src/icons/32px/ChartLine.svg | 3 + .../svg-icons/src/icons/32px/ChartPie.svg | 4 + .../svg-icons/src/icons/32px/Checkmark.svg | 3 + .../svg-icons/src/icons/32px/Cherries.svg | 3 + .../src/icons/32px/CircleAngleLeft.svg | 3 + .../src/icons/32px/CircleAngleRight.svg | 3 + packages/svg-icons/src/icons/32px/Clock.svg | 3 + .../svg-icons/src/icons/32px/CollapseLeft.svg | 6 + .../src/icons/32px/CollapseRight.svg | 3 + packages/svg-icons/src/icons/32px/Comment.svg | 3 + .../svg-icons/src/icons/32px/CommentCheck.svg | 3 + packages/svg-icons/src/icons/32px/Copy.svg | 3 + packages/svg-icons/src/icons/32px/Count.svg | 5 + packages/svg-icons/src/icons/32px/Delete.svg | 3 + packages/svg-icons/src/icons/32px/Dismiss.svg | 3 + packages/svg-icons/src/icons/32px/Dollar.svg | 3 + .../svg-icons/src/icons/32px/Download.svg | 3 + packages/svg-icons/src/icons/32px/Edit.svg | 3 + packages/svg-icons/src/icons/32px/Exit.svg | 3 + .../svg-icons/src/icons/32px/EyeHidden.svg | 5 + .../svg-icons/src/icons/32px/EyeVisible.svg | 3 + .../svg-icons/src/icons/32px/FileCheck.svg | 3 + packages/svg-icons/src/icons/32px/Filter.svg | 3 + packages/svg-icons/src/icons/32px/Five.svg | 3 + packages/svg-icons/src/icons/32px/Flag.svg | 3 + .../svg-icons/src/icons/32px/Football.svg | 3 + packages/svg-icons/src/icons/32px/Four.svg | 3 + packages/svg-icons/src/icons/32px/Gauge.svg | 10 + packages/svg-icons/src/icons/32px/Gift.svg | 3 + packages/svg-icons/src/icons/32px/Graph.svg | 3 + packages/svg-icons/src/icons/32px/Grid.svg | 3 + packages/svg-icons/src/icons/32px/Grip.svg | 8 + packages/svg-icons/src/icons/32px/Home.svg | 3 + packages/svg-icons/src/icons/32px/Info.svg | 3 + packages/svg-icons/src/icons/32px/Italic.svg | 3 + packages/svg-icons/src/icons/32px/Kebab.svg | 3 + .../svg-icons/src/icons/32px/Lightbulb.svg | 3 + packages/svg-icons/src/icons/32px/Link.svg | 3 + packages/svg-icons/src/icons/32px/Lock.svg | 3 + .../svg-icons/src/icons/32px/LockedNote.svg | 3 + packages/svg-icons/src/icons/32px/Mail.svg | 3 + .../svg-icons/src/icons/32px/Microphone.svg | 3 + .../src/icons/32px/MicrophoneDisabled.svg | 5 + packages/svg-icons/src/icons/32px/Minus.svg | 3 + packages/svg-icons/src/icons/32px/Move.svg | 3 + .../svg-icons/src/icons/32px/NewComment.svg | 4 + .../svg-icons/src/icons/32px/NewFilter.svg | 4 + packages/svg-icons/src/icons/32px/NewGift.svg | 4 + packages/svg-icons/src/icons/32px/NewNote.svg | 4 + .../src/icons/32px/NewNotification.svg | 4 + .../svg-icons/src/icons/32px/NewSticky.svg | 4 + packages/svg-icons/src/icons/32px/NewTab.svg | 3 + .../svg-icons/src/icons/32px/NewTemplate.svg | 4 + packages/svg-icons/src/icons/32px/NewTip.svg | 4 + packages/svg-icons/src/icons/32px/Note.svg | 3 + .../svg-icons/src/icons/32px/Notebook.svg | 3 + .../svg-icons/src/icons/32px/Notification.svg | 3 + packages/svg-icons/src/icons/32px/One.svg | 3 + .../svg-icons/src/icons/32px/OpenSmile.svg | 3 + .../svg-icons/src/icons/32px/OrderedList.svg | 9 + .../svg-icons/src/icons/32px/Organization.svg | 3 + packages/svg-icons/src/icons/32px/PDF.svg | 3 + packages/svg-icons/src/icons/32px/Pause.svg | 3 + packages/svg-icons/src/icons/32px/Peace.svg | 3 + packages/svg-icons/src/icons/32px/Percent.svg | 3 + packages/svg-icons/src/icons/32px/Pin.svg | 3 + .../svg-icons/src/icons/32px/PinSolid.svg | 3 + packages/svg-icons/src/icons/32px/Play.svg | 3 + .../svg-icons/src/icons/32px/PlaySolid.svg | 3 + packages/svg-icons/src/icons/32px/Plus.svg | 3 + .../svg-icons/src/icons/32px/Progress.svg | 3 + .../svg-icons/src/icons/32px/Question.svg | 3 + .../svg-icons/src/icons/32px/Reaction.svg | 3 + .../svg-icons/src/icons/32px/Recurring.svg | 3 + packages/svg-icons/src/icons/32px/Refresh.svg | 3 + .../svg-icons/src/icons/32px/Reminder.svg | 3 + packages/svg-icons/src/icons/32px/Remove.svg | 3 + .../src/icons/32px/RemoveCalendar.svg | 4 + .../svg-icons/src/icons/32px/RemoveUser.svg | 4 + packages/svg-icons/src/icons/32px/Reply.svg | 3 + packages/svg-icons/src/icons/32px/Report.svg | 3 + packages/svg-icons/src/icons/32px/Rewind.svg | 3 + packages/svg-icons/src/icons/32px/Rocket.svg | 3 + packages/svg-icons/src/icons/32px/Search.svg | 3 + packages/svg-icons/src/icons/32px/Section.svg | 3 + packages/svg-icons/src/icons/32px/Send.svg | 3 + .../svg-icons/src/icons/32px/Settings.svg | 3 + packages/svg-icons/src/icons/32px/Share.svg | 3 + packages/svg-icons/src/icons/32px/Shared.svg | 3 + packages/svg-icons/src/icons/32px/Shield.svg | 3 + packages/svg-icons/src/icons/32px/Sort.svg | 5 + .../svg-icons/src/icons/32px/Sparkles.svg | 3 + packages/svg-icons/src/icons/32px/Sprout.svg | 3 + packages/svg-icons/src/icons/32px/Star.svg | 3 + .../svg-icons/src/icons/32px/StarSolid.svg | 3 + .../svg-icons/src/icons/32px/StartOver.svg | 3 + packages/svg-icons/src/icons/32px/Sticky.svg | 3 + .../src/icons/32px/Strikethrough.svg | 3 + .../svg-icons/src/icons/32px/Substract.svg | 3 + packages/svg-icons/src/icons/32px/Success.svg | 3 + packages/svg-icons/src/icons/32px/Tag.svg | 3 + packages/svg-icons/src/icons/32px/Team.svg | 3 + .../svg-icons/src/icons/32px/Template.svg | 3 + packages/svg-icons/src/icons/32px/Three.svg | 3 + .../svg-icons/src/icons/32px/ThumbsDown.svg | 3 + .../svg-icons/src/icons/32px/ThumbsUp.svg | 3 + packages/svg-icons/src/icons/32px/Tip.svg | 3 + packages/svg-icons/src/icons/32px/Two.svg | 3 + .../svg-icons/src/icons/32px/Unarchive.svg | 3 + .../svg-icons/src/icons/32px/Underline.svg | 3 + .../src/icons/32px/UnorderedList.svg | 8 + packages/svg-icons/src/icons/32px/Upsell.svg | 3 + packages/svg-icons/src/icons/32px/User.svg | 4 + packages/svg-icons/src/icons/32px/Video.svg | 3 + .../svg-icons/src/icons/32px/VideoCamera.svg | 3 + .../src/icons/32px/VideoCameraDisabled.svg | 3 + packages/svg-icons/src/icons/32px/Warning.svg | 3 + packages/svg-icons/swc.jest.ts | 6 + .../tests/jest/validate-svgs.test.ts | 135 + packages/svg-icons/tsconfig.json | 5 + packages/tokens/package.json | 5 +- pnpm-lock.yaml | 5708 +++++++++-------- 463 files changed, 5103 insertions(+), 2537 deletions(-) create mode 100644 .changeset/few-actors-attack.md create mode 100644 .nvmrc create mode 100644 packages/svg-icons/.eslintrc.json create mode 100644 packages/svg-icons/README.md create mode 100644 packages/svg-icons/jest.config.ts create mode 100644 packages/svg-icons/package.json create mode 100644 packages/svg-icons/scripts/build.ts create mode 100644 packages/svg-icons/scripts/constants.ts create mode 100644 packages/svg-icons/scripts/generate-icons.ts create mode 100644 packages/svg-icons/scripts/svgo-config.ts create mode 100644 packages/svg-icons/src/icons/16px/Add.svg create mode 100644 packages/svg-icons/src/icons/16px/AddCalendar.svg create mode 100644 packages/svg-icons/src/icons/16px/AddUser.svg create mode 100644 packages/svg-icons/src/icons/16px/AngleDown.svg create mode 100644 packages/svg-icons/src/icons/16px/AngleLeft.svg create mode 100644 packages/svg-icons/src/icons/16px/AngleRight.svg create mode 100644 packages/svg-icons/src/icons/16px/AngleUp.svg create mode 100644 packages/svg-icons/src/icons/16px/Archive.svg create mode 100644 packages/svg-icons/src/icons/16px/ArrowDown.svg create mode 100644 packages/svg-icons/src/icons/16px/ArrowLeft.svg create mode 100644 packages/svg-icons/src/icons/16px/ArrowRight.svg create mode 100644 packages/svg-icons/src/icons/16px/ArrowUp.svg create mode 100644 packages/svg-icons/src/icons/16px/ArrowsUpDown.svg create mode 100644 packages/svg-icons/src/icons/16px/Bars.svg create mode 100644 packages/svg-icons/src/icons/16px/Basketball.svg create mode 100644 packages/svg-icons/src/icons/16px/Bento.svg create mode 100644 packages/svg-icons/src/icons/16px/Bold.svg create mode 100644 packages/svg-icons/src/icons/16px/Book.svg create mode 100644 packages/svg-icons/src/icons/16px/Bookmark.svg create mode 100644 packages/svg-icons/src/icons/16px/Bullet.svg create mode 100644 packages/svg-icons/src/icons/16px/Bullseye.svg create mode 100644 packages/svg-icons/src/icons/16px/CSV.svg create mode 100644 packages/svg-icons/src/icons/16px/Calendar.svg create mode 100644 packages/svg-icons/src/icons/16px/Camera.svg create mode 100644 packages/svg-icons/src/icons/16px/Car.svg create mode 100644 packages/svg-icons/src/icons/16px/CaretDown.svg create mode 100644 packages/svg-icons/src/icons/16px/CaretDownSolid.svg create mode 100644 packages/svg-icons/src/icons/16px/CaretUp.svg create mode 100644 packages/svg-icons/src/icons/16px/CaretUpSolid.svg create mode 100644 packages/svg-icons/src/icons/16px/Cat.svg create mode 100644 packages/svg-icons/src/icons/16px/ChartBar.svg create mode 100644 packages/svg-icons/src/icons/16px/ChartLine.svg create mode 100644 packages/svg-icons/src/icons/16px/ChartPie.svg create mode 100644 packages/svg-icons/src/icons/16px/Checkmark.svg create mode 100644 packages/svg-icons/src/icons/16px/Cherries.svg create mode 100644 packages/svg-icons/src/icons/16px/CircleAngleLeft.svg create mode 100644 packages/svg-icons/src/icons/16px/CircleAngleRight.svg create mode 100644 packages/svg-icons/src/icons/16px/Clock.svg create mode 100644 packages/svg-icons/src/icons/16px/CollapseLeft.svg create mode 100644 packages/svg-icons/src/icons/16px/CollapseRight.svg create mode 100644 packages/svg-icons/src/icons/16px/Comment.svg create mode 100644 packages/svg-icons/src/icons/16px/CommentCheck.svg create mode 100644 packages/svg-icons/src/icons/16px/Copy.svg create mode 100644 packages/svg-icons/src/icons/16px/Count.svg create mode 100644 packages/svg-icons/src/icons/16px/Delete.svg create mode 100644 packages/svg-icons/src/icons/16px/Dismiss.svg create mode 100644 packages/svg-icons/src/icons/16px/Dollar.svg create mode 100644 packages/svg-icons/src/icons/16px/Download.svg create mode 100644 packages/svg-icons/src/icons/16px/Edit.svg create mode 100644 packages/svg-icons/src/icons/16px/Exit.svg create mode 100644 packages/svg-icons/src/icons/16px/EyeHidden.svg create mode 100644 packages/svg-icons/src/icons/16px/EyeVisible.svg create mode 100644 packages/svg-icons/src/icons/16px/FileCheck.svg create mode 100644 packages/svg-icons/src/icons/16px/Filter.svg create mode 100644 packages/svg-icons/src/icons/16px/Five.svg create mode 100644 packages/svg-icons/src/icons/16px/Flag.svg create mode 100644 packages/svg-icons/src/icons/16px/Football.svg create mode 100644 packages/svg-icons/src/icons/16px/Four.svg create mode 100644 packages/svg-icons/src/icons/16px/Gauge.svg create mode 100644 packages/svg-icons/src/icons/16px/Gift.svg create mode 100644 packages/svg-icons/src/icons/16px/Graph.svg create mode 100644 packages/svg-icons/src/icons/16px/Grid.svg create mode 100644 packages/svg-icons/src/icons/16px/Grip.svg create mode 100644 packages/svg-icons/src/icons/16px/Home.svg create mode 100644 packages/svg-icons/src/icons/16px/Info.svg create mode 100644 packages/svg-icons/src/icons/16px/Italic.svg create mode 100644 packages/svg-icons/src/icons/16px/Kebab.svg create mode 100644 packages/svg-icons/src/icons/16px/Lightbulb.svg create mode 100644 packages/svg-icons/src/icons/16px/Link.svg create mode 100644 packages/svg-icons/src/icons/16px/Lock.svg create mode 100644 packages/svg-icons/src/icons/16px/LockedNote.svg create mode 100644 packages/svg-icons/src/icons/16px/Mail.svg create mode 100644 packages/svg-icons/src/icons/16px/Microphone.svg create mode 100644 packages/svg-icons/src/icons/16px/MicrophoneDisabled.svg create mode 100644 packages/svg-icons/src/icons/16px/Minus.svg create mode 100644 packages/svg-icons/src/icons/16px/Move.svg create mode 100644 packages/svg-icons/src/icons/16px/NewComment.svg create mode 100644 packages/svg-icons/src/icons/16px/NewFilter.svg create mode 100644 packages/svg-icons/src/icons/16px/NewGift.svg create mode 100644 packages/svg-icons/src/icons/16px/NewNote.svg create mode 100644 packages/svg-icons/src/icons/16px/NewNotification.svg create mode 100644 packages/svg-icons/src/icons/16px/NewSticky.svg create mode 100644 packages/svg-icons/src/icons/16px/NewTab.svg create mode 100644 packages/svg-icons/src/icons/16px/NewTemplate.svg create mode 100644 packages/svg-icons/src/icons/16px/NewTip.svg create mode 100644 packages/svg-icons/src/icons/16px/Note.svg create mode 100644 packages/svg-icons/src/icons/16px/Notebook.svg create mode 100644 packages/svg-icons/src/icons/16px/Notification.svg create mode 100644 packages/svg-icons/src/icons/16px/One.svg create mode 100644 packages/svg-icons/src/icons/16px/OpenSmile.svg create mode 100644 packages/svg-icons/src/icons/16px/OrderedList.svg create mode 100644 packages/svg-icons/src/icons/16px/Organization.svg create mode 100644 packages/svg-icons/src/icons/16px/PDF.svg create mode 100644 packages/svg-icons/src/icons/16px/Pause.svg create mode 100644 packages/svg-icons/src/icons/16px/Peace.svg create mode 100644 packages/svg-icons/src/icons/16px/Percent.svg create mode 100644 packages/svg-icons/src/icons/16px/Pin.svg create mode 100644 packages/svg-icons/src/icons/16px/PinSolid.svg create mode 100644 packages/svg-icons/src/icons/16px/Play.svg create mode 100644 packages/svg-icons/src/icons/16px/PlaySolid.svg create mode 100644 packages/svg-icons/src/icons/16px/Plus.svg create mode 100644 packages/svg-icons/src/icons/16px/Progress.svg create mode 100644 packages/svg-icons/src/icons/16px/Question.svg create mode 100644 packages/svg-icons/src/icons/16px/Reaction.svg create mode 100644 packages/svg-icons/src/icons/16px/Recurring.svg create mode 100644 packages/svg-icons/src/icons/16px/Refresh.svg create mode 100644 packages/svg-icons/src/icons/16px/Reminder.svg create mode 100644 packages/svg-icons/src/icons/16px/Remove.svg create mode 100644 packages/svg-icons/src/icons/16px/RemoveCalendar.svg create mode 100644 packages/svg-icons/src/icons/16px/RemoveUser.svg create mode 100644 packages/svg-icons/src/icons/16px/Reply.svg create mode 100644 packages/svg-icons/src/icons/16px/Report.svg create mode 100644 packages/svg-icons/src/icons/16px/Rewind.svg create mode 100644 packages/svg-icons/src/icons/16px/Rocket.svg create mode 100644 packages/svg-icons/src/icons/16px/Search.svg create mode 100644 packages/svg-icons/src/icons/16px/Section.svg create mode 100644 packages/svg-icons/src/icons/16px/Send.svg create mode 100644 packages/svg-icons/src/icons/16px/Settings.svg create mode 100644 packages/svg-icons/src/icons/16px/Share.svg create mode 100644 packages/svg-icons/src/icons/16px/Shared.svg create mode 100644 packages/svg-icons/src/icons/16px/Shield.svg create mode 100644 packages/svg-icons/src/icons/16px/Sort.svg create mode 100644 packages/svg-icons/src/icons/16px/Sparkles.svg create mode 100644 packages/svg-icons/src/icons/16px/Sprout.svg create mode 100644 packages/svg-icons/src/icons/16px/Star.svg create mode 100644 packages/svg-icons/src/icons/16px/StarSolid.svg create mode 100644 packages/svg-icons/src/icons/16px/StartOver.svg create mode 100644 packages/svg-icons/src/icons/16px/Sticky.svg create mode 100644 packages/svg-icons/src/icons/16px/Strikethrough.svg create mode 100644 packages/svg-icons/src/icons/16px/Substract.svg create mode 100644 packages/svg-icons/src/icons/16px/Success.svg create mode 100644 packages/svg-icons/src/icons/16px/Tag.svg create mode 100644 packages/svg-icons/src/icons/16px/Team.svg create mode 100644 packages/svg-icons/src/icons/16px/Template.svg create mode 100644 packages/svg-icons/src/icons/16px/Three.svg create mode 100644 packages/svg-icons/src/icons/16px/ThumbsDown.svg create mode 100644 packages/svg-icons/src/icons/16px/ThumbsUp.svg create mode 100644 packages/svg-icons/src/icons/16px/Tip.svg create mode 100644 packages/svg-icons/src/icons/16px/Two.svg create mode 100644 packages/svg-icons/src/icons/16px/Unarchive.svg create mode 100644 packages/svg-icons/src/icons/16px/Underline.svg create mode 100644 packages/svg-icons/src/icons/16px/UnorderedList.svg create mode 100644 packages/svg-icons/src/icons/16px/Upsell.svg create mode 100644 packages/svg-icons/src/icons/16px/User.svg create mode 100644 packages/svg-icons/src/icons/16px/Video.svg create mode 100644 packages/svg-icons/src/icons/16px/VideoCamera.svg create mode 100644 packages/svg-icons/src/icons/16px/VideoCameraDisabled.svg create mode 100644 packages/svg-icons/src/icons/16px/Warning.svg create mode 100644 packages/svg-icons/src/icons/24px/Add.svg create mode 100644 packages/svg-icons/src/icons/24px/AddCalendar.svg create mode 100644 packages/svg-icons/src/icons/24px/AddUser.svg create mode 100644 packages/svg-icons/src/icons/24px/AngleDown.svg create mode 100644 packages/svg-icons/src/icons/24px/AngleLeft.svg create mode 100644 packages/svg-icons/src/icons/24px/AngleRight.svg create mode 100644 packages/svg-icons/src/icons/24px/AngleUp.svg create mode 100644 packages/svg-icons/src/icons/24px/Archive.svg create mode 100644 packages/svg-icons/src/icons/24px/ArrowDown.svg create mode 100644 packages/svg-icons/src/icons/24px/ArrowLeft.svg create mode 100644 packages/svg-icons/src/icons/24px/ArrowRight.svg create mode 100644 packages/svg-icons/src/icons/24px/ArrowUp.svg create mode 100644 packages/svg-icons/src/icons/24px/ArrowsUpDown.svg create mode 100644 packages/svg-icons/src/icons/24px/Bars.svg create mode 100644 packages/svg-icons/src/icons/24px/Basketball.svg create mode 100644 packages/svg-icons/src/icons/24px/Bento.svg create mode 100644 packages/svg-icons/src/icons/24px/Bold.svg create mode 100644 packages/svg-icons/src/icons/24px/Book.svg create mode 100644 packages/svg-icons/src/icons/24px/Bookmark.svg create mode 100644 packages/svg-icons/src/icons/24px/Bullet.svg create mode 100644 packages/svg-icons/src/icons/24px/Bullseye.svg create mode 100644 packages/svg-icons/src/icons/24px/CSV.svg create mode 100644 packages/svg-icons/src/icons/24px/Calendar.svg create mode 100644 packages/svg-icons/src/icons/24px/Camera.svg create mode 100644 packages/svg-icons/src/icons/24px/Car.svg create mode 100644 packages/svg-icons/src/icons/24px/CaretDown.svg create mode 100644 packages/svg-icons/src/icons/24px/CaretDownSolid.svg create mode 100644 packages/svg-icons/src/icons/24px/CaretUp.svg create mode 100644 packages/svg-icons/src/icons/24px/CaretUpSolid.svg create mode 100644 packages/svg-icons/src/icons/24px/Cat.svg create mode 100644 packages/svg-icons/src/icons/24px/ChartBar.svg create mode 100644 packages/svg-icons/src/icons/24px/ChartLine.svg create mode 100644 packages/svg-icons/src/icons/24px/ChartPie.svg create mode 100644 packages/svg-icons/src/icons/24px/Checkmark.svg create mode 100644 packages/svg-icons/src/icons/24px/Cherries.svg create mode 100644 packages/svg-icons/src/icons/24px/CircleAngleLeft.svg create mode 100644 packages/svg-icons/src/icons/24px/CircleAngleRight.svg create mode 100644 packages/svg-icons/src/icons/24px/Clock.svg create mode 100644 packages/svg-icons/src/icons/24px/CollapseLeft.svg create mode 100644 packages/svg-icons/src/icons/24px/CollapseRight.svg create mode 100644 packages/svg-icons/src/icons/24px/Comment.svg create mode 100644 packages/svg-icons/src/icons/24px/CommentCheck.svg create mode 100644 packages/svg-icons/src/icons/24px/Copy.svg create mode 100644 packages/svg-icons/src/icons/24px/Count.svg create mode 100644 packages/svg-icons/src/icons/24px/Delete.svg create mode 100644 packages/svg-icons/src/icons/24px/Dismiss.svg create mode 100644 packages/svg-icons/src/icons/24px/Dollar.svg create mode 100644 packages/svg-icons/src/icons/24px/Download.svg create mode 100644 packages/svg-icons/src/icons/24px/Edit.svg create mode 100644 packages/svg-icons/src/icons/24px/Exit.svg create mode 100644 packages/svg-icons/src/icons/24px/EyeHidden.svg create mode 100644 packages/svg-icons/src/icons/24px/EyeVisible.svg create mode 100644 packages/svg-icons/src/icons/24px/FileCheck.svg create mode 100644 packages/svg-icons/src/icons/24px/Filter.svg create mode 100644 packages/svg-icons/src/icons/24px/Five.svg create mode 100644 packages/svg-icons/src/icons/24px/Flag.svg create mode 100644 packages/svg-icons/src/icons/24px/Football.svg create mode 100644 packages/svg-icons/src/icons/24px/Four.svg create mode 100644 packages/svg-icons/src/icons/24px/Gauge.svg create mode 100644 packages/svg-icons/src/icons/24px/Gift.svg create mode 100644 packages/svg-icons/src/icons/24px/Graph.svg create mode 100644 packages/svg-icons/src/icons/24px/Grid.svg create mode 100644 packages/svg-icons/src/icons/24px/Grip.svg create mode 100644 packages/svg-icons/src/icons/24px/Home.svg create mode 100644 packages/svg-icons/src/icons/24px/Info.svg create mode 100644 packages/svg-icons/src/icons/24px/Italic.svg create mode 100644 packages/svg-icons/src/icons/24px/Kebab.svg create mode 100644 packages/svg-icons/src/icons/24px/Lightbulb.svg create mode 100644 packages/svg-icons/src/icons/24px/Link.svg create mode 100644 packages/svg-icons/src/icons/24px/Lock.svg create mode 100644 packages/svg-icons/src/icons/24px/LockedNote.svg create mode 100644 packages/svg-icons/src/icons/24px/Mail.svg create mode 100644 packages/svg-icons/src/icons/24px/Microphone.svg create mode 100644 packages/svg-icons/src/icons/24px/MicrophoneDisabled.svg create mode 100644 packages/svg-icons/src/icons/24px/Minus.svg create mode 100644 packages/svg-icons/src/icons/24px/Move.svg create mode 100644 packages/svg-icons/src/icons/24px/NewComment.svg create mode 100644 packages/svg-icons/src/icons/24px/NewFilter.svg create mode 100644 packages/svg-icons/src/icons/24px/NewGift.svg create mode 100644 packages/svg-icons/src/icons/24px/NewNote.svg create mode 100644 packages/svg-icons/src/icons/24px/NewNotification.svg create mode 100644 packages/svg-icons/src/icons/24px/NewSticky.svg create mode 100644 packages/svg-icons/src/icons/24px/NewTab.svg create mode 100644 packages/svg-icons/src/icons/24px/NewTemplate.svg create mode 100644 packages/svg-icons/src/icons/24px/NewTip.svg create mode 100644 packages/svg-icons/src/icons/24px/Note.svg create mode 100644 packages/svg-icons/src/icons/24px/Notebook.svg create mode 100644 packages/svg-icons/src/icons/24px/Notification.svg create mode 100644 packages/svg-icons/src/icons/24px/One.svg create mode 100644 packages/svg-icons/src/icons/24px/OpenSmile.svg create mode 100644 packages/svg-icons/src/icons/24px/OrderedList.svg create mode 100644 packages/svg-icons/src/icons/24px/Organization.svg create mode 100644 packages/svg-icons/src/icons/24px/PDF.svg create mode 100644 packages/svg-icons/src/icons/24px/Pause.svg create mode 100644 packages/svg-icons/src/icons/24px/Peace.svg create mode 100644 packages/svg-icons/src/icons/24px/Percent.svg create mode 100644 packages/svg-icons/src/icons/24px/Pin.svg create mode 100644 packages/svg-icons/src/icons/24px/PinSolid.svg create mode 100644 packages/svg-icons/src/icons/24px/Play.svg create mode 100644 packages/svg-icons/src/icons/24px/PlaySolid.svg create mode 100644 packages/svg-icons/src/icons/24px/Plus.svg create mode 100644 packages/svg-icons/src/icons/24px/Progress.svg create mode 100644 packages/svg-icons/src/icons/24px/Question.svg create mode 100644 packages/svg-icons/src/icons/24px/Reaction.svg create mode 100644 packages/svg-icons/src/icons/24px/Recurring.svg create mode 100644 packages/svg-icons/src/icons/24px/Refresh.svg create mode 100644 packages/svg-icons/src/icons/24px/Reminder.svg create mode 100644 packages/svg-icons/src/icons/24px/Remove.svg create mode 100644 packages/svg-icons/src/icons/24px/RemoveCalendar.svg create mode 100644 packages/svg-icons/src/icons/24px/RemoveUser.svg create mode 100644 packages/svg-icons/src/icons/24px/Reply.svg create mode 100644 packages/svg-icons/src/icons/24px/Report.svg create mode 100644 packages/svg-icons/src/icons/24px/Rewind.svg create mode 100644 packages/svg-icons/src/icons/24px/Rocket.svg create mode 100644 packages/svg-icons/src/icons/24px/Search.svg create mode 100644 packages/svg-icons/src/icons/24px/Section.svg create mode 100644 packages/svg-icons/src/icons/24px/Send.svg create mode 100644 packages/svg-icons/src/icons/24px/Settings.svg create mode 100644 packages/svg-icons/src/icons/24px/Share.svg create mode 100644 packages/svg-icons/src/icons/24px/Shared.svg create mode 100644 packages/svg-icons/src/icons/24px/Shield.svg create mode 100644 packages/svg-icons/src/icons/24px/Sort.svg create mode 100644 packages/svg-icons/src/icons/24px/Sparkles.svg create mode 100644 packages/svg-icons/src/icons/24px/Sprout.svg create mode 100644 packages/svg-icons/src/icons/24px/Star.svg create mode 100644 packages/svg-icons/src/icons/24px/StarSolid.svg create mode 100644 packages/svg-icons/src/icons/24px/StartOver.svg create mode 100644 packages/svg-icons/src/icons/24px/Sticky.svg create mode 100644 packages/svg-icons/src/icons/24px/Strikethrough.svg create mode 100644 packages/svg-icons/src/icons/24px/Substract.svg create mode 100644 packages/svg-icons/src/icons/24px/Success.svg create mode 100644 packages/svg-icons/src/icons/24px/Tag.svg create mode 100644 packages/svg-icons/src/icons/24px/Team.svg create mode 100644 packages/svg-icons/src/icons/24px/Template.svg create mode 100644 packages/svg-icons/src/icons/24px/Three.svg create mode 100644 packages/svg-icons/src/icons/24px/ThumbsDown.svg create mode 100644 packages/svg-icons/src/icons/24px/ThumbsUp.svg create mode 100644 packages/svg-icons/src/icons/24px/Tip.svg create mode 100644 packages/svg-icons/src/icons/24px/Two.svg create mode 100644 packages/svg-icons/src/icons/24px/Unarchive.svg create mode 100644 packages/svg-icons/src/icons/24px/Underline.svg create mode 100644 packages/svg-icons/src/icons/24px/UnorderedList.svg create mode 100644 packages/svg-icons/src/icons/24px/Upsell.svg create mode 100644 packages/svg-icons/src/icons/24px/User.svg create mode 100644 packages/svg-icons/src/icons/24px/Video.svg create mode 100644 packages/svg-icons/src/icons/24px/VideoCamera.svg create mode 100644 packages/svg-icons/src/icons/24px/VideoCameraDisabled.svg create mode 100644 packages/svg-icons/src/icons/24px/Warning.svg create mode 100644 packages/svg-icons/src/icons/32px/Add.svg create mode 100644 packages/svg-icons/src/icons/32px/AddCalendar.svg create mode 100644 packages/svg-icons/src/icons/32px/AddUser.svg create mode 100644 packages/svg-icons/src/icons/32px/AngleDown.svg create mode 100644 packages/svg-icons/src/icons/32px/AngleLeft.svg create mode 100644 packages/svg-icons/src/icons/32px/AngleRight.svg create mode 100644 packages/svg-icons/src/icons/32px/AngleUp.svg create mode 100644 packages/svg-icons/src/icons/32px/Archive.svg create mode 100644 packages/svg-icons/src/icons/32px/ArrowDown.svg create mode 100644 packages/svg-icons/src/icons/32px/ArrowLeft.svg create mode 100644 packages/svg-icons/src/icons/32px/ArrowRight.svg create mode 100644 packages/svg-icons/src/icons/32px/ArrowUp.svg create mode 100644 packages/svg-icons/src/icons/32px/ArrowsUpDown.svg create mode 100644 packages/svg-icons/src/icons/32px/Bars.svg create mode 100644 packages/svg-icons/src/icons/32px/Basketball.svg create mode 100644 packages/svg-icons/src/icons/32px/Bento.svg create mode 100644 packages/svg-icons/src/icons/32px/Bold.svg create mode 100644 packages/svg-icons/src/icons/32px/Book.svg create mode 100644 packages/svg-icons/src/icons/32px/Bookmark.svg create mode 100644 packages/svg-icons/src/icons/32px/Bullet.svg create mode 100644 packages/svg-icons/src/icons/32px/Bullseye.svg create mode 100644 packages/svg-icons/src/icons/32px/CSV.svg create mode 100644 packages/svg-icons/src/icons/32px/Calendar.svg create mode 100644 packages/svg-icons/src/icons/32px/Camera.svg create mode 100644 packages/svg-icons/src/icons/32px/Car.svg create mode 100644 packages/svg-icons/src/icons/32px/CaretDown.svg create mode 100644 packages/svg-icons/src/icons/32px/CaretDownSolid.svg create mode 100644 packages/svg-icons/src/icons/32px/CaretUp.svg create mode 100644 packages/svg-icons/src/icons/32px/CaretUpSolid.svg create mode 100644 packages/svg-icons/src/icons/32px/Cat.svg create mode 100644 packages/svg-icons/src/icons/32px/ChartBar.svg create mode 100644 packages/svg-icons/src/icons/32px/ChartLine.svg create mode 100644 packages/svg-icons/src/icons/32px/ChartPie.svg create mode 100644 packages/svg-icons/src/icons/32px/Checkmark.svg create mode 100644 packages/svg-icons/src/icons/32px/Cherries.svg create mode 100644 packages/svg-icons/src/icons/32px/CircleAngleLeft.svg create mode 100644 packages/svg-icons/src/icons/32px/CircleAngleRight.svg create mode 100644 packages/svg-icons/src/icons/32px/Clock.svg create mode 100644 packages/svg-icons/src/icons/32px/CollapseLeft.svg create mode 100644 packages/svg-icons/src/icons/32px/CollapseRight.svg create mode 100644 packages/svg-icons/src/icons/32px/Comment.svg create mode 100644 packages/svg-icons/src/icons/32px/CommentCheck.svg create mode 100644 packages/svg-icons/src/icons/32px/Copy.svg create mode 100644 packages/svg-icons/src/icons/32px/Count.svg create mode 100644 packages/svg-icons/src/icons/32px/Delete.svg create mode 100644 packages/svg-icons/src/icons/32px/Dismiss.svg create mode 100644 packages/svg-icons/src/icons/32px/Dollar.svg create mode 100644 packages/svg-icons/src/icons/32px/Download.svg create mode 100644 packages/svg-icons/src/icons/32px/Edit.svg create mode 100644 packages/svg-icons/src/icons/32px/Exit.svg create mode 100644 packages/svg-icons/src/icons/32px/EyeHidden.svg create mode 100644 packages/svg-icons/src/icons/32px/EyeVisible.svg create mode 100644 packages/svg-icons/src/icons/32px/FileCheck.svg create mode 100644 packages/svg-icons/src/icons/32px/Filter.svg create mode 100644 packages/svg-icons/src/icons/32px/Five.svg create mode 100644 packages/svg-icons/src/icons/32px/Flag.svg create mode 100644 packages/svg-icons/src/icons/32px/Football.svg create mode 100644 packages/svg-icons/src/icons/32px/Four.svg create mode 100644 packages/svg-icons/src/icons/32px/Gauge.svg create mode 100644 packages/svg-icons/src/icons/32px/Gift.svg create mode 100644 packages/svg-icons/src/icons/32px/Graph.svg create mode 100644 packages/svg-icons/src/icons/32px/Grid.svg create mode 100644 packages/svg-icons/src/icons/32px/Grip.svg create mode 100644 packages/svg-icons/src/icons/32px/Home.svg create mode 100644 packages/svg-icons/src/icons/32px/Info.svg create mode 100644 packages/svg-icons/src/icons/32px/Italic.svg create mode 100644 packages/svg-icons/src/icons/32px/Kebab.svg create mode 100644 packages/svg-icons/src/icons/32px/Lightbulb.svg create mode 100644 packages/svg-icons/src/icons/32px/Link.svg create mode 100644 packages/svg-icons/src/icons/32px/Lock.svg create mode 100644 packages/svg-icons/src/icons/32px/LockedNote.svg create mode 100644 packages/svg-icons/src/icons/32px/Mail.svg create mode 100644 packages/svg-icons/src/icons/32px/Microphone.svg create mode 100644 packages/svg-icons/src/icons/32px/MicrophoneDisabled.svg create mode 100644 packages/svg-icons/src/icons/32px/Minus.svg create mode 100644 packages/svg-icons/src/icons/32px/Move.svg create mode 100644 packages/svg-icons/src/icons/32px/NewComment.svg create mode 100644 packages/svg-icons/src/icons/32px/NewFilter.svg create mode 100644 packages/svg-icons/src/icons/32px/NewGift.svg create mode 100644 packages/svg-icons/src/icons/32px/NewNote.svg create mode 100644 packages/svg-icons/src/icons/32px/NewNotification.svg create mode 100644 packages/svg-icons/src/icons/32px/NewSticky.svg create mode 100644 packages/svg-icons/src/icons/32px/NewTab.svg create mode 100644 packages/svg-icons/src/icons/32px/NewTemplate.svg create mode 100644 packages/svg-icons/src/icons/32px/NewTip.svg create mode 100644 packages/svg-icons/src/icons/32px/Note.svg create mode 100644 packages/svg-icons/src/icons/32px/Notebook.svg create mode 100644 packages/svg-icons/src/icons/32px/Notification.svg create mode 100644 packages/svg-icons/src/icons/32px/One.svg create mode 100644 packages/svg-icons/src/icons/32px/OpenSmile.svg create mode 100644 packages/svg-icons/src/icons/32px/OrderedList.svg create mode 100644 packages/svg-icons/src/icons/32px/Organization.svg create mode 100644 packages/svg-icons/src/icons/32px/PDF.svg create mode 100644 packages/svg-icons/src/icons/32px/Pause.svg create mode 100644 packages/svg-icons/src/icons/32px/Peace.svg create mode 100644 packages/svg-icons/src/icons/32px/Percent.svg create mode 100644 packages/svg-icons/src/icons/32px/Pin.svg create mode 100644 packages/svg-icons/src/icons/32px/PinSolid.svg create mode 100644 packages/svg-icons/src/icons/32px/Play.svg create mode 100644 packages/svg-icons/src/icons/32px/PlaySolid.svg create mode 100644 packages/svg-icons/src/icons/32px/Plus.svg create mode 100644 packages/svg-icons/src/icons/32px/Progress.svg create mode 100644 packages/svg-icons/src/icons/32px/Question.svg create mode 100644 packages/svg-icons/src/icons/32px/Reaction.svg create mode 100644 packages/svg-icons/src/icons/32px/Recurring.svg create mode 100644 packages/svg-icons/src/icons/32px/Refresh.svg create mode 100644 packages/svg-icons/src/icons/32px/Reminder.svg create mode 100644 packages/svg-icons/src/icons/32px/Remove.svg create mode 100644 packages/svg-icons/src/icons/32px/RemoveCalendar.svg create mode 100644 packages/svg-icons/src/icons/32px/RemoveUser.svg create mode 100644 packages/svg-icons/src/icons/32px/Reply.svg create mode 100644 packages/svg-icons/src/icons/32px/Report.svg create mode 100644 packages/svg-icons/src/icons/32px/Rewind.svg create mode 100644 packages/svg-icons/src/icons/32px/Rocket.svg create mode 100644 packages/svg-icons/src/icons/32px/Search.svg create mode 100644 packages/svg-icons/src/icons/32px/Section.svg create mode 100644 packages/svg-icons/src/icons/32px/Send.svg create mode 100644 packages/svg-icons/src/icons/32px/Settings.svg create mode 100644 packages/svg-icons/src/icons/32px/Share.svg create mode 100644 packages/svg-icons/src/icons/32px/Shared.svg create mode 100644 packages/svg-icons/src/icons/32px/Shield.svg create mode 100644 packages/svg-icons/src/icons/32px/Sort.svg create mode 100644 packages/svg-icons/src/icons/32px/Sparkles.svg create mode 100644 packages/svg-icons/src/icons/32px/Sprout.svg create mode 100644 packages/svg-icons/src/icons/32px/Star.svg create mode 100644 packages/svg-icons/src/icons/32px/StarSolid.svg create mode 100644 packages/svg-icons/src/icons/32px/StartOver.svg create mode 100644 packages/svg-icons/src/icons/32px/Sticky.svg create mode 100644 packages/svg-icons/src/icons/32px/Strikethrough.svg create mode 100644 packages/svg-icons/src/icons/32px/Substract.svg create mode 100644 packages/svg-icons/src/icons/32px/Success.svg create mode 100644 packages/svg-icons/src/icons/32px/Tag.svg create mode 100644 packages/svg-icons/src/icons/32px/Team.svg create mode 100644 packages/svg-icons/src/icons/32px/Template.svg create mode 100644 packages/svg-icons/src/icons/32px/Three.svg create mode 100644 packages/svg-icons/src/icons/32px/ThumbsDown.svg create mode 100644 packages/svg-icons/src/icons/32px/ThumbsUp.svg create mode 100644 packages/svg-icons/src/icons/32px/Tip.svg create mode 100644 packages/svg-icons/src/icons/32px/Two.svg create mode 100644 packages/svg-icons/src/icons/32px/Unarchive.svg create mode 100644 packages/svg-icons/src/icons/32px/Underline.svg create mode 100644 packages/svg-icons/src/icons/32px/UnorderedList.svg create mode 100644 packages/svg-icons/src/icons/32px/Upsell.svg create mode 100644 packages/svg-icons/src/icons/32px/User.svg create mode 100644 packages/svg-icons/src/icons/32px/Video.svg create mode 100644 packages/svg-icons/src/icons/32px/VideoCamera.svg create mode 100644 packages/svg-icons/src/icons/32px/VideoCameraDisabled.svg create mode 100644 packages/svg-icons/src/icons/32px/Warning.svg create mode 100644 packages/svg-icons/swc.jest.ts create mode 100644 packages/svg-icons/tests/jest/validate-svgs.test.ts create mode 100644 packages/svg-icons/tsconfig.json diff --git a/.changeset/few-actors-attack.md b/.changeset/few-actors-attack.md new file mode 100644 index 000000000..e3e7fd2d1 --- /dev/null +++ b/.changeset/few-actors-attack.md @@ -0,0 +1,5 @@ +--- +"@hopper-ui/svg-icons": major +--- + +Initial release of the package diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d64f36fa4..29814c500 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,6 +25,8 @@ jobs: - name: Install Node.js uses: actions/setup-node@v3 + with: + node-version-file: ".nvmrc" - uses: pnpm/action-setup@v2 name: Install pnpm @@ -38,7 +40,7 @@ jobs: shell: bash run: | echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - + - name: Setup pnpm cache uses: actions/cache@v3 with: @@ -46,7 +48,7 @@ jobs: key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm-store- - + - name: Install dependencies run: pnpm i --frozen-lockfile diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 000000000..b009dfb9d --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +lts/* diff --git a/package.json b/package.json index 325d01191..cc4b5acce 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "doc:start": "pnpm --filter=docs dev", "doc:storybook": "pnpm --filter=docs storybook", "doc:build": "pnpm --filter=docs build", - "test": "jest", + "test": "cross-env NODE_OPTIONS=--experimental-vm-modules jest", "build": "pnpm -r build ", "build:tokens": "pnpm --filter=\"@hopper-ui/tokens\" build", "build:pkg": "pnpm -r --filter \"{packages/**}\" build ", @@ -36,7 +36,7 @@ "devDependencies": { "@changesets/cli": "2.26.2", "@hopper-ui/tokens": "workspace:*", - "@netlify/plugin-nextjs": "4.41.1", + "@netlify/plugin-nextjs": "4.41.2", "@storybook/addon-essentials": "7.5.3", "@storybook/addon-interactions": "7.5.3", "@storybook/addon-links": "7.5.3", @@ -45,14 +45,15 @@ "@storybook/react-vite": "7.5.3", "@storybook/react": "7.5.3", "@storybook/testing-library": "0.2.2", - "@types/jest": "29.5.8", - "@types/node": "20.9.0", + "@types/jest": "29.5.9", + "@types/node": "20.9.3", "@workleap/eslint-plugin": "3.0.0", "@workleap/stylelint-configs": "2.0.0", "@workleap/typescript-configs": "3.0.2", + "cross-env": "7.0.3", "eslint-plugin-storybook": "0.6.15", "jest": "29.7.0", - "prettier": "2.8.8", + "prettier": "3.1.0", "prop-types": "15.8.1", "react-dom": "18.2.0", "react": "18.2.0", diff --git a/packages/components/package.json b/packages/components/package.json index 054fc7e8f..0fa9afd8b 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -56,7 +56,6 @@ "react-test-renderer": "18.2.0", "react": "18.2.0", "ts-jest": "29.1.1", - "ts-node": "10.9.1", "tsup": "7.2.0", "typescript": "5.2.2" }, diff --git a/packages/styled-system/package.json b/packages/styled-system/package.json index 44dcadbb6..e8229da56 100644 --- a/packages/styled-system/package.json +++ b/packages/styled-system/package.json @@ -67,7 +67,6 @@ "react-test-renderer": "18.2.0", "react": "18.2.0", "ts-jest": "29.1.1", - "ts-node": "10.9.1", "tsup": "7.2.0", "type-fest": "4.7.1", "typescript": "5.2.2" diff --git a/packages/svg-icons/.eslintrc.json b/packages/svg-icons/.eslintrc.json new file mode 100644 index 000000000..d9f48339d --- /dev/null +++ b/packages/svg-icons/.eslintrc.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://json.schemastore.org/eslintrc", + "root": true, + "extends": "plugin:@workleap/typescript-library" +} diff --git a/packages/svg-icons/README.md b/packages/svg-icons/README.md new file mode 100644 index 000000000..6f52a9fa5 --- /dev/null +++ b/packages/svg-icons/README.md @@ -0,0 +1,40 @@ +# @hopper-ui/svg-icons + +A set of icons handcrafted by Workleap. + +[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](../../LICENSE) +[![npm version](https://img.shields.io/npm/v/@hopper-ui/svg-icons)](https://www.npmjs.com/package/@hopper-ui/svg-icons) + +## Installation + +Install the following packages: + +**With pnpm** + +```shell +pnpm add @hopper-ui/svg-icons +``` + +**With yarn** + +```shell +yarn add -D @hopper-ui/svg-icons +``` + +**With npm** + +```shell +npm install -D @hopper-ui/svg-icons +``` + +## Usage + +View the [user's documentation](https://hopper.workleap.design/). + +## 🤝 Contributing + +View the [contributor's documentation](https://github.com/gsoft-inc/wl-hopper/blob/main/CONTRIBUTING.md). + +## License + +Copyright © 2023, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. diff --git a/packages/svg-icons/jest.config.ts b/packages/svg-icons/jest.config.ts new file mode 100644 index 000000000..83ce3969d --- /dev/null +++ b/packages/svg-icons/jest.config.ts @@ -0,0 +1,12 @@ +import type { Config } from "jest"; +import { swcConfig } from "./swc.jest.ts"; + +const config: Config = { + testEnvironment: "node", + transform: { + "^.+\\.(js|ts|tsx)$": ["@swc/jest", swcConfig as Record] + }, + extensionsToTreatAsEsm: [".ts"] +}; + +export default config; diff --git a/packages/svg-icons/package.json b/packages/svg-icons/package.json new file mode 100644 index 000000000..a55a14560 --- /dev/null +++ b/packages/svg-icons/package.json @@ -0,0 +1,50 @@ +{ + "name": "@hopper-ui/svg-icons", + "author": "Workleap", + "version": "0.0.0", + "description": "A set of icons handcrafted by Workleap", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git+https://github.com/gsoft-inc/wl-hopper.git", + "directory": "packages/svg-icons" + }, + "publishConfig": { + "access": "public", + "provenance": true + }, + "type": "module", + "sideEffects": "*.svg", + "files": [ + "/dist", + "CHANGELOG.md", + "README.md" + ], + "exports": { + "./icons/*.svg": "./dist/icons/*.svg" + }, + "scripts": { + "build": "tsx scripts/build.ts" + }, + "devDependencies": { + "@swc/core": "1.3.96", + "@swc/helpers": "0.5.3", + "@swc/jest": "0.2.29", + "@types/jest": "29.5.9", + "@types/node": "^20.9.3", + "@workleap/eslint-plugin": "3.0.0", + "@workleap/swc-configs": "2.1.2", + "@workleap/typescript-configs": "3.0.2", + "hast-util-select": "6.0.2", + "jest": "29.7.0", + "rehype-parse": "9.0.0", + "svgo": "^3.0.4", + "tsx": "4.1.4", + "typescript": "5.3.2", + "unified": "11.0.4" + + }, + "engines": { + "node": ">=18.0.0" + } +} diff --git a/packages/svg-icons/scripts/build.ts b/packages/svg-icons/scripts/build.ts new file mode 100644 index 000000000..69b68c910 --- /dev/null +++ b/packages/svg-icons/scripts/build.ts @@ -0,0 +1,31 @@ +import path from "path"; +import { IconSizes, IconsDistDirectory, IconsSourceDirectory } from "./constants.ts"; +import { generateIcons } from "./generate-icons.ts"; + +/** + * Converts a file path to a file name. + * @example fileNameConverter("C:\\Dev\\wl-hopper\\packages\\svgs\\src\\icons\\16px\\Add.svg") // add-16.svg + */ +function fileNameConverter(filePath: string) { + const dirName = path.dirname(filePath); + const size = path.basename(dirName).replace("px", ""); + + if ((IconSizes as readonly number[]).includes(Number(size)) === false) { + throw new Error(`Invalid icon size: ${size}`); + } + + const fileName = path.basename(filePath, ".svg"); + + const kebabCaseName = fileName + .replace(/([a-z])([A-Z])/g, "$1-$2") + .replace(/[\s_]+/g, "-") + .toLowerCase(); + + return `${kebabCaseName}-${size}.svg`; +} + +console.log("⚙️ Optimizing icons...\n"); + +generateIcons(IconsSourceDirectory, IconsDistDirectory, fileNameConverter); + +console.log("✨ The icons have been optimized!\n"); diff --git a/packages/svg-icons/scripts/constants.ts b/packages/svg-icons/scripts/constants.ts new file mode 100644 index 000000000..c53f96909 --- /dev/null +++ b/packages/svg-icons/scripts/constants.ts @@ -0,0 +1,5 @@ +export const IconsSourceDirectory = "src/icons"; +export const IconsDistDirectory = "dist/icons"; +export const IconSizes = [16, 24, 32] as const; +export const NeutralIconColor = "#3C3C3C"; // --hop-neutral-icon +export const PrimaryIconColor = "#3B57FF"; // --hop-primary-icon diff --git a/packages/svg-icons/scripts/generate-icons.ts b/packages/svg-icons/scripts/generate-icons.ts new file mode 100644 index 000000000..6c7f3d383 --- /dev/null +++ b/packages/svg-icons/scripts/generate-icons.ts @@ -0,0 +1,62 @@ +import fs from "fs"; +import path from "path"; +import { optimize } from "svgo"; +import config from "./svgo-config.ts"; + +function ensureDirSync(dir: string) { + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir, { recursive: true }); + } +} + +export function generateIcons(srcDir: string, outputDir: string, fileNameConverter?: (filePath: string) => string) { + ensureDirSync(outputDir); + + // This line requires Node.js 20.5.2 or higher to execute properly + // https://github.com/nodejs/node/issues/48858 + const files = fs.readdirSync(srcDir, { recursive: true, withFileTypes: true }); + + const svgFiles = files.filter(file => file.isFile() && file.name.endsWith(".svg")); + + const iconFiles = svgFiles.map(file => { + const srcPath = path.resolve(file.path, file.name); + const dstPath = path.resolve(outputDir, fileNameConverter ? fileNameConverter(srcPath) : file.name); + + return { + srcPath: srcPath, + dstPath + }; + }); + + // If it's possible to rename a file with the same name, then we need to validate that there are no duplicates + if (fileNameConverter) { + validateNoNameDuplicate(iconFiles.map(x => x.dstPath)); + } + + iconFiles.forEach(iconFile => { + const contents = fs.readFileSync(iconFile.srcPath, "utf8"); + const { data } = optimize(contents, { + path: iconFile.srcPath, + ...config + }); + + fs.writeFileSync(iconFile.dstPath, Buffer.from(data)); + }); +} + +function validateNoNameDuplicate(names: string[]) { + const duplicateNames: string[] = []; + const nameSet = new Set(); + + for (const name of names) { + if (nameSet.has(name)) { + duplicateNames.push(name); + } else { + nameSet.add(name); + } + } + + if (duplicateNames.length > 0) { + throw new Error(`Duplicate icon names detected: ${duplicateNames.join(", ")}`); + } +} diff --git a/packages/svg-icons/scripts/svgo-config.ts b/packages/svg-icons/scripts/svgo-config.ts new file mode 100644 index 000000000..fc61e33dc --- /dev/null +++ b/packages/svg-icons/scripts/svgo-config.ts @@ -0,0 +1,61 @@ +import type { Config } from "svgo"; +import { NeutralIconColor } from "./constants.ts"; + +const config: Config = { + multipass: true, + plugins: [ + { + name: "preset-default", + params: { + overrides: { + /** + * viewBox is needed in order to produce 20px by 20px containers + * with smaller icons inside. + */ + removeViewBox: false, + /** + * Some of our icons have multiple fill colors. We want to keep them, but replace the main icon color + * with the currentColor value. This allows us to change the color of the icon with the color CSS property. + */ + convertColors: { + currentColor: NeutralIconColor + } + + } + } + }, + /** + * Converts presentation attributes in element styles to the equivalent XML attribute. + * Presentation attributes can be used in both attributes and styles, but in most cases it'll take fewer bytes to use attributes + */ + { name: "convertStyleToAttrs" }, + /** + * Remove all