svger-cli 3.1.1 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +332 -0
- package/README.md +432 -25
- package/SECURITY.md +3 -3
- package/assets/svges/500px.svg +3 -0
- package/assets/svges/adobe.svg +3 -0
- package/assets/svges/adonis.svg +3 -0
- package/assets/svges/aeroplane-1.svg +3 -0
- package/assets/svges/agenda.svg +3 -0
- package/assets/svges/airbnb.svg +3 -0
- package/assets/svges/airtable.svg +3 -0
- package/assets/svges/alarm-1.svg +7 -0
- package/assets/svges/align-text-center.svg +6 -0
- package/assets/svges/align-text-left.svg +6 -0
- package/assets/svges/align-text-right.svg +6 -0
- package/assets/svges/alpinejs.svg +4 -0
- package/assets/svges/amazon-original.svg +5 -0
- package/assets/svges/amazon-pay.svg +7 -0
- package/assets/svges/amazon.svg +10 -0
- package/assets/svges/ambulance-1.svg +4 -0
- package/assets/svges/amd.svg +3 -0
- package/assets/svges/amex.svg +4 -0
- package/assets/svges/anchor.svg +3 -0
- package/assets/svges/android-old.svg +3 -0
- package/assets/svges/android.svg +3 -0
- package/assets/svges/angellist.svg +3 -0
- package/assets/svges/angle-double-down.svg +4 -0
- package/assets/svges/angle-double-left.svg +4 -0
- package/assets/svges/angle-double-right.svg +4 -0
- package/assets/svges/angle-double-up.svg +4 -0
- package/assets/svges/angular.svg +3 -0
- package/assets/svges/app-store.svg +3 -0
- package/assets/svges/apple-brand.svg +3 -0
- package/assets/svges/apple-music-alt.svg +3 -0
- package/assets/svges/apple-music.svg +3 -0
- package/assets/svges/apple-pay.svg +3 -0
- package/assets/svges/arc-browser.svg +6 -0
- package/assets/svges/arrow-all-direction.svg +6 -0
- package/assets/svges/arrow-angular-top-left.svg +3 -0
- package/assets/svges/arrow-angular-top-right.svg +3 -0
- package/assets/svges/arrow-both-direction-horizontal-1.svg +3 -0
- package/assets/svges/arrow-both-direction-vertical-1.svg +3 -0
- package/assets/svges/arrow-downward.svg +3 -0
- package/assets/svges/arrow-left-circle.svg +4 -0
- package/assets/svges/arrow-left.svg +3 -0
- package/assets/svges/arrow-right-circle.svg +4 -0
- package/assets/svges/arrow-right.svg +3 -0
- package/assets/svges/arrow-upward.svg +3 -0
- package/assets/svges/asana.svg +3 -0
- package/assets/svges/astro.svg +4 -0
- package/assets/svges/atlassian.svg +3 -0
- package/assets/svges/audi-alt.svg +3 -0
- package/assets/svges/audi.svg +3 -0
- package/assets/svges/aws.svg +3 -0
- package/assets/svges/azure.svg +3 -0
- package/assets/svges/badge-decagram-percent.svg +6 -0
- package/assets/svges/balloons.svg +3 -0
- package/assets/svges/ban-2.svg +3 -0
- package/assets/svges/bar-chart-4.svg +6 -0
- package/assets/svges/bar-chart-dollar.svg +6 -0
- package/assets/svges/basket-shopping-3.svg +5 -0
- package/assets/svges/beat.svg +3 -0
- package/assets/svges/behance.svg +5 -0
- package/assets/svges/bell-1.svg +3 -0
- package/assets/svges/bike.svg +6 -0
- package/assets/svges/bing.svg +5 -0
- package/assets/svges/bitbucket.svg +5 -0
- package/assets/svges/bitcoin.svg +5 -0
- package/assets/svges/bittorrent.svg +6 -0
- package/assets/svges/blogger-alt.svg +3 -0
- package/assets/svges/blogger.svg +3 -0
- package/assets/svges/bluetooth-logo.svg +3 -0
- package/assets/svges/bluetooth.svg +3 -0
- package/assets/svges/bmw.svg +7 -0
- package/assets/svges/board-writing-3.svg +3 -0
- package/assets/svges/bold.svg +3 -0
- package/assets/svges/bolt-2.svg +3 -0
- package/assets/svges/bolt-3.svg +3 -0
- package/assets/svges/book-1.svg +4 -0
- package/assets/svges/bookmark-1.svg +3 -0
- package/assets/svges/bookmark-circle.svg +4 -0
- package/assets/svges/books-2.svg +3 -0
- package/assets/svges/bootstrap-5-square.svg +3 -0
- package/assets/svges/bootstrap-5.svg +3 -0
- package/assets/svges/box-archive-1.svg +4 -0
- package/assets/svges/box-closed.svg +3 -0
- package/assets/svges/box-gift-1.svg +3 -0
- package/assets/svges/brave.svg +3 -0
- package/assets/svges/bricks.svg +3 -0
- package/assets/svges/bridge-3.svg +3 -0
- package/assets/svges/briefcase-1.svg +3 -0
- package/assets/svges/briefcase-2.svg +3 -0
- package/assets/svges/briefcase-plus-1.svg +4 -0
- package/assets/svges/brush-1-rotated.svg +3 -0
- package/assets/svges/brush-2.svg +3 -0
- package/assets/svges/btc.svg +3 -0
- package/assets/svges/bug-1.svg +3 -0
- package/assets/svges/buildings-1.svg +5 -0
- package/assets/svges/bulb-2.svg +3 -0
- package/assets/svges/bulb-4.svg +9 -0
- package/assets/svges/burger-1.svg +3 -0
- package/assets/svges/burger-drink.svg +4 -0
- package/assets/svges/bus-1.svg +5 -0
- package/assets/svges/busket-ball.svg +3 -0
- package/assets/svges/cake-1.svg +3 -0
- package/assets/svges/calculator-1.svg +8 -0
- package/assets/svges/calculator-2.svg +13 -0
- package/assets/svges/calendar-days.svg +9 -0
- package/assets/svges/camera-1.svg +4 -0
- package/assets/svges/camera-movie-1.svg +3 -0
- package/assets/svges/candy-cane-2.svg +3 -0
- package/assets/svges/candy-round-1.svg +3 -0
- package/assets/svges/canva.svg +3 -0
- package/assets/svges/capsule-1.svg +3 -0
- package/assets/svges/car-2.svg +5 -0
- package/assets/svges/car-4.svg +3 -0
- package/assets/svges/car-6.svg +5 -0
- package/assets/svges/caravan-1.svg +3 -0
- package/assets/svges/cart-1.svg +5 -0
- package/assets/svges/cart-2.svg +5 -0
- package/assets/svges/cash-app.svg +3 -0
- package/assets/svges/certificate-badge-1.svg +6 -0
- package/assets/svges/chat-bubble-2.svg +5 -0
- package/assets/svges/check-circle-1.svg +4 -0
- package/assets/svges/check-square-2.svg +4 -0
- package/assets/svges/check.svg +3 -0
- package/assets/svges/chevron-down-circle.svg +4 -0
- package/assets/svges/chevron-down.svg +3 -0
- package/assets/svges/chevron-left-circle.svg +4 -0
- package/assets/svges/chevron-left.svg +3 -0
- package/assets/svges/chevron-right-circle.svg +4 -0
- package/assets/svges/chevron-up-circle.svg +4 -0
- package/assets/svges/chevron-up.svg +3 -0
- package/assets/svges/chrome.svg +6 -0
- package/assets/svges/chromecast.svg +3 -0
- package/assets/svges/cisco.svg +3 -0
- package/assets/svges/claude.svg +3 -0
- package/assets/svges/clickup.svg +4 -0
- package/assets/svges/clipboard.svg +3 -0
- package/assets/svges/cloud-2.svg +3 -0
- package/assets/svges/cloud-bolt-1.svg +4 -0
- package/assets/svges/cloud-bolt-2.svg +4 -0
- package/assets/svges/cloud-check-circle.svg +5 -0
- package/assets/svges/cloud-download.svg +5 -0
- package/assets/svges/cloud-iot-2.svg +3 -0
- package/assets/svges/cloud-rain.svg +6 -0
- package/assets/svges/cloud-refresh-clockwise.svg +5 -0
- package/assets/svges/cloud-sun.svg +9 -0
- package/assets/svges/cloud-upload.svg +5 -0
- package/assets/svges/cloudflare.svg +3 -0
- package/assets/svges/code-1.svg +5 -0
- package/assets/svges/code-s.svg +5 -0
- package/assets/svges/codepen.svg +3 -0
- package/assets/svges/coffee-cup-2.svg +6 -0
- package/assets/svges/coinbase.svg +10 -0
- package/assets/svges/colour-palette-3.svg +7 -0
- package/assets/svges/comment-1-share.svg +4 -0
- package/assets/svges/comment-1-text.svg +5 -0
- package/assets/svges/comment-1.svg +3 -0
- package/assets/svges/compass-drafting-2.svg +3 -0
- package/assets/svges/connectdevelop.svg +3 -0
- package/assets/svges/copilot.svg +8 -0
- package/assets/svges/coral.svg +3 -0
- package/assets/svges/cpanel.svg +3 -0
- package/assets/svges/crane-4.svg +3 -0
- package/assets/svges/creative-commons.svg +4 -0
- package/assets/svges/credit-card-multiple.svg +3 -0
- package/assets/svges/crop-2.svg +3 -0
- package/assets/svges/crown-3.svg +3 -0
- package/assets/svges/css3.svg +3 -0
- package/assets/svges/dashboard-square-1.svg +6 -0
- package/assets/svges/database-2.svg +3 -0
- package/assets/svges/deno.svg +4 -0
- package/assets/svges/dev.svg +3 -0
- package/assets/svges/dialogflow.svg +4 -0
- package/assets/svges/diamonds-1.svg +3 -0
- package/assets/svges/diamonds-2.svg +3 -0
- package/assets/svges/digitalocean.svg +3 -0
- package/assets/svges/diners-club.svg +38 -0
- package/assets/svges/direction-ltr.svg +4 -0
- package/assets/svges/direction-rtl.svg +4 -0
- package/assets/svges/discord-chat.svg +5 -0
- package/assets/svges/discord.svg +3 -0
- package/assets/svges/discover.svg +3 -0
- package/assets/svges/docker.svg +3 -0
- package/assets/svges/dollar-circle.svg +4 -0
- package/assets/svges/dollar.svg +3 -0
- package/assets/svges/double-quotes-end-1.svg +4 -0
- package/assets/svges/download-1.svg +4 -0
- package/assets/svges/download-circle-1.svg +4 -0
- package/assets/svges/dribbble-symbol.svg +3 -0
- package/assets/svges/dribbble.svg +3 -0
- package/assets/svges/drizzle.svg +6 -0
- package/assets/svges/dropbox.svg +7 -0
- package/assets/svges/drupal.svg +3 -0
- package/assets/svges/dumbbell-1.svg +3 -0
- package/assets/svges/edge.svg +3 -0
- package/assets/svges/emoji-expressionless-flat-eyes.svg +6 -0
- package/assets/svges/emoji-expressionless.svg +6 -0
- package/assets/svges/emoji-grin.svg +6 -0
- package/assets/svges/emoji-sad.svg +6 -0
- package/assets/svges/emoji-smile-side.svg +6 -0
- package/assets/svges/emoji-smile-sunglass.svg +5 -0
- package/assets/svges/emoji-smile-tongue.svg +3 -0
- package/assets/svges/emoji-smile.svg +6 -0
- package/assets/svges/enter-down.svg +4 -0
- package/assets/svges/enter.svg +4 -0
- package/assets/svges/envato.svg +4 -0
- package/assets/svges/envelope-1.svg +3 -0
- package/assets/svges/eraser-1.svg +4 -0
- package/assets/svges/ethereum-logo.svg +4 -0
- package/assets/svges/euro.svg +3 -0
- package/assets/svges/exit-up.svg +4 -0
- package/assets/svges/exit.svg +4 -0
- package/assets/svges/expand-arrow-1.svg +3 -0
- package/assets/svges/expand-square-4.svg +6 -0
- package/assets/svges/expressjs.svg +4 -0
- package/assets/svges/eye.svg +4 -0
- package/assets/svges/facebook-messenger.svg +3 -0
- package/assets/svges/facebook-rounded.svg +4 -0
- package/assets/svges/facebook-square.svg +3 -0
- package/assets/svges/facebook.svg +3 -0
- package/assets/svges/facetime.svg +3 -0
- package/assets/svges/figma.svg +3 -0
- package/assets/svges/file-format-zip.svg +4 -0
- package/assets/svges/file-multiple.svg +4 -0
- package/assets/svges/file-pencil.svg +4 -0
- package/assets/svges/file-plus-circle.svg +5 -0
- package/assets/svges/file-question.svg +5 -0
- package/assets/svges/file-xmark.svg +4 -0
- package/assets/svges/firebase.svg +3 -0
- package/assets/svges/firefox.svg +3 -0
- package/assets/svges/firework-rocket-4.svg +3 -0
- package/assets/svges/fitbit.svg +3 -0
- package/assets/svges/flag-1.svg +3 -0
- package/assets/svges/flag-2.svg +3 -0
- package/assets/svges/flickr.svg +4 -0
- package/assets/svges/floppy-disk-1.svg +3 -0
- package/assets/svges/flower-2.svg +3 -0
- package/assets/svges/flutter.svg +3 -0
- package/assets/svges/folder-1.svg +3 -0
- package/assets/svges/ford.svg +3 -0
- package/assets/svges/framer.svg +3 -0
- package/assets/svges/funnel-1.svg +3 -0
- package/assets/svges/gallery.svg +4 -0
- package/assets/svges/game-pad-modern-1.svg +6 -0
- package/assets/svges/gatsby.svg +3 -0
- package/assets/svges/gauge-1.svg +5 -0
- package/assets/svges/gear-1.svg +4 -0
- package/assets/svges/gears-3.svg +6 -0
- package/assets/svges/gemini.svg +3 -0
- package/assets/svges/git.svg +3 -0
- package/assets/svges/github.svg +3 -0
- package/assets/svges/glass-juice-1.svg +3 -0
- package/assets/svges/globe-1.svg +3 -0
- package/assets/svges/globe-stand.svg +4 -0
- package/assets/svges/go.svg +7 -0
- package/assets/svges/goodreads.svg +3 -0
- package/assets/svges/google-cloud.svg +3 -0
- package/assets/svges/google-drive.svg +3 -0
- package/assets/svges/google-meet.svg +3 -0
- package/assets/svges/google-pay.svg +3 -0
- package/assets/svges/google-wallet.svg +3 -0
- package/assets/svges/google.svg +3 -0
- package/assets/svges/graduation-cap-1.svg +3 -0
- package/assets/svges/grammarly.svg +3 -0
- package/assets/svges/hacker-news.svg +3 -0
- package/assets/svges/hammer-1.svg +3 -0
- package/assets/svges/hammer-2.svg +3 -0
- package/assets/svges/hand-mic.svg +3 -0
- package/assets/svges/hand-shake.svg +3 -0
- package/assets/svges/hand-stop.svg +3 -0
- package/assets/svges/hand-taking-dollar.svg +4 -0
- package/assets/svges/hand-taking-leaf-1.svg +5 -0
- package/assets/svges/hand-taking-user.svg +5 -0
- package/assets/svges/hashnode.svg +3 -0
- package/assets/svges/hat-chef-3.svg +3 -0
- package/assets/svges/headphone-1.svg +3 -0
- package/assets/svges/heart.svg +3 -0
- package/assets/svges/helicopter-2.svg +4 -0
- package/assets/svges/helmet-safety-1.svg +3 -0
- package/assets/svges/hierarchy-1.svg +9 -0
- package/assets/svges/highlighter-1.svg +3 -0
- package/assets/svges/highlighter-2.svg +3 -0
- package/assets/svges/home-2.svg +3 -0
- package/assets/svges/hospital-2.svg +4 -0
- package/assets/svges/hourglass.svg +3 -0
- package/assets/svges/html5.svg +4 -0
- package/assets/svges/ibm.svg +3 -0
- package/assets/svges/id-card.svg +7 -0
- package/assets/svges/imdb.svg +7 -0
- package/assets/svges/indent.svg +8 -0
- package/assets/svges/info.svg +4 -0
- package/assets/svges/injection-1.svg +3 -0
- package/assets/svges/instagram-logotype.svg +3 -0
- package/assets/svges/instagram.svg +4 -0
- package/assets/svges/intel.svg +4 -0
- package/assets/svges/ios.svg +3 -0
- package/assets/svges/island-2.svg +4 -0
- package/assets/svges/jaguar.svg +3 -0
- package/assets/svges/jamstack.svg +3 -0
- package/assets/svges/java.svg +3 -0
- package/assets/svges/javascript.svg +3 -0
- package/assets/svges/jcb.svg +3 -0
- package/assets/svges/joomla.svg +6 -0
- package/assets/svges/jsfiddle.svg +4 -0
- package/assets/svges/key-1.svg +3 -0
- package/assets/svges/keyboard.svg +12 -0
- package/assets/svges/knife-fork-1.svg +5 -0
- package/assets/svges/kubernetes.svg +11 -0
- package/assets/svges/label-dollar-2.svg +4 -0
- package/assets/svges/laptop-2.svg +3 -0
- package/assets/svges/laptop-phone.svg +5 -0
- package/assets/svges/laravel.svg +3 -0
- package/assets/svges/layers-1.svg +4 -0
- package/assets/svges/layout-26.svg +3 -0
- package/assets/svges/layout-9.svg +3 -0
- package/assets/svges/leaf-1.svg +3 -0
- package/assets/svges/leaf-6.svg +4 -0
- package/assets/svges/lemon-squeezy.svg +6 -0
- package/assets/svges/life-guard-tube-1.svg +3 -0
- package/assets/svges/line-dashed.svg +5 -0
- package/assets/svges/line-dotted.svg +8 -0
- package/assets/svges/line-height.svg +7 -0
- package/assets/svges/line.svg +3 -0
- package/assets/svges/lineicons.svg +6 -0
- package/assets/svges/link-2-angular-right.svg +3 -0
- package/assets/svges/linkedin.svg +3 -0
- package/assets/svges/location-arrow-right.svg +3 -0
- package/assets/svges/locked-1.svg +4 -0
- package/assets/svges/locked-2.svg +4 -0
- package/assets/svges/loom.svg +3 -0
- package/assets/svges/magento.svg +4 -0
- package/assets/svges/magnet.svg +3 -0
- package/assets/svges/mailchimp.svg +3 -0
- package/assets/svges/map-marker-1.svg +6 -0
- package/assets/svges/map-marker-5.svg +4 -0
- package/assets/svges/map-pin-5.svg +3 -0
- package/assets/svges/markdown.svg +5 -0
- package/assets/svges/mastercard.svg +7 -0
- package/assets/svges/medium-alt.svg +3 -0
- package/assets/svges/medium.svg +3 -0
- package/assets/svges/megaphone-1.svg +3 -0
- package/assets/svges/menu-cheesburger.svg +8 -0
- package/assets/svges/menu-hamburger-1.svg +5 -0
- package/assets/svges/menu-meatballs-1.svg +5 -0
- package/assets/svges/menu-meatballs-2.svg +5 -0
- package/assets/svges/mercedes.svg +3 -0
- package/assets/svges/message-2-question.svg +5 -0
- package/assets/svges/message-2.svg +3 -0
- package/assets/svges/message-3-text.svg +5 -0
- package/assets/svges/meta-alt.svg +3 -0
- package/assets/svges/meta.svg +7 -0
- package/assets/svges/microphone-1.svg +4 -0
- package/assets/svges/microscope.svg +3 -0
- package/assets/svges/microsoft-edge.svg +5 -0
- package/assets/svges/microsoft-teams.svg +6 -0
- package/assets/svges/microsoft.svg +6 -0
- package/assets/svges/minus-circle.svg +4 -0
- package/assets/svges/minus.svg +3 -0
- package/assets/svges/mongodb.svg +3 -0
- package/assets/svges/monitor-code.svg +5 -0
- package/assets/svges/monitor-mac.svg +3 -0
- package/assets/svges/monitor.svg +3 -0
- package/assets/svges/moon-half-right-5.svg +3 -0
- package/assets/svges/mountains-2.svg +3 -0
- package/assets/svges/mouse-2.svg +3 -0
- package/assets/svges/mushroom-1.svg +3 -0
- package/assets/svges/mushroom-5.svg +6 -0
- package/assets/svges/music.svg +3 -0
- package/assets/svges/mysql.svg +3 -0
- package/assets/svges/nasa.svg +3 -0
- package/assets/svges/netflix.svg +3 -0
- package/assets/svges/netlify.svg +3 -0
- package/assets/svges/next-step-2.svg +3 -0
- package/assets/svges/nextjs.svg +3 -0
- package/assets/svges/nike.svg +3 -0
- package/assets/svges/nissan.svg +3 -0
- package/assets/svges/nodejs-alt.svg +3 -0
- package/assets/svges/nodejs.svg +3 -0
- package/assets/svges/notebook-1.svg +3 -0
- package/assets/svges/notion.svg +3 -0
- package/assets/svges/npm.svg +3 -0
- package/assets/svges/nuxt.svg +3 -0
- package/assets/svges/nvidia.svg +3 -0
- package/assets/svges/oculus.svg +4 -0
- package/assets/svges/open-ai.svg +3 -0
- package/assets/svges/opera-mini.svg +3 -0
- package/assets/svges/oracle.svg +3 -0
- package/assets/svges/outdent.svg +8 -0
- package/assets/svges/paddle.svg +3 -0
- package/assets/svges/page-break-1.svg +7 -0
- package/assets/svges/pagination.svg +7 -0
- package/assets/svges/paint-bucket.svg +3 -0
- package/assets/svges/paint-roller-1.svg +3 -0
- package/assets/svges/paperclip-1.svg +3 -0
- package/assets/svges/party-flags.svg +3 -0
- package/assets/svges/party-spray.svg +3 -0
- package/assets/svges/patreon.svg +3 -0
- package/assets/svges/pause.svg +4 -0
- package/assets/svges/payoneer.svg +4 -0
- package/assets/svges/paypal.svg +4 -0
- package/assets/svges/pen-to-square.svg +4 -0
- package/assets/svges/pencil-1.svg +3 -0
- package/assets/svges/pepsi.svg +4 -0
- package/assets/svges/phone.svg +4 -0
- package/assets/svges/photos.svg +4 -0
- package/assets/svges/php.svg +3 -0
- package/assets/svges/pie-chart-2.svg +3 -0
- package/assets/svges/pilcrow.svg +3 -0
- package/assets/svges/pimjo-logo.svg +9 -0
- package/assets/svges/pimjo-symbol.svg +3 -0
- package/assets/svges/pinterest.svg +3 -0
- package/assets/svges/pizza-2.svg +6 -0
- package/assets/svges/placeholder-dollar.svg +4 -0
- package/assets/svges/plantscale.svg +3 -0
- package/assets/svges/play-store.svg +3 -0
- package/assets/svges/play.svg +3 -0
- package/assets/svges/playstation.svg +5 -0
- package/assets/svges/plug-1.svg +3 -0
- package/assets/svges/plus-circle.svg +4 -0
- package/assets/svges/plus.svg +3 -0
- package/assets/svges/pnpm.svg +10 -0
- package/assets/svges/postgresql.svg +3 -0
- package/assets/svges/postman.svg +3 -0
- package/assets/svges/pound.svg +3 -0
- package/assets/svges/power-button.svg +4 -0
- package/assets/svges/previous-step-2.svg +3 -0
- package/assets/svges/printer.svg +3 -0
- package/assets/svges/prisma.svg +3 -0
- package/assets/svges/producthunt.svg +4 -0
- package/assets/svges/proton-mail-logo.svg +3 -0
- package/assets/svges/proton-mail-symbol.svg +3 -0
- package/assets/svges/python.svg +3 -0
- package/assets/svges/question-mark-circle.svg +5 -0
- package/assets/svges/question-mark.svg +4 -0
- package/assets/svges/quora.svg +4 -0
- package/assets/svges/radis.svg +3 -0
- package/assets/svges/react.svg +3 -0
- package/assets/svges/reddit.svg +6 -0
- package/assets/svges/refresh-circle-1-clockwise.svg +4 -0
- package/assets/svges/refresh-dollar-1.svg +5 -0
- package/assets/svges/refresh-user-1.svg +6 -0
- package/assets/svges/remix-js.svg +4 -0
- package/assets/svges/road-1.svg +6 -0
- package/assets/svges/rocket-5.svg +5 -0
- package/assets/svges/route-1.svg +7 -0
- package/assets/svges/rss-right.svg +6 -0
- package/assets/svges/ruler-1.svg +3 -0
- package/assets/svges/ruler-pen.svg +4 -0
- package/assets/svges/rupee.svg +3 -0
- package/assets/svges/safari.svg +35 -0
- package/assets/svges/sanity.svg +20 -0
- package/assets/svges/school-bench-1.svg +4 -0
- package/assets/svges/school-bench-2.svg +4 -0
- package/assets/svges/scissors-1-vertical.svg +4 -0
- package/assets/svges/scoter.svg +8 -0
- package/assets/svges/scroll-down-2.svg +6 -0
- package/assets/svges/search-1.svg +3 -0
- package/assets/svges/search-2.svg +4 -0
- package/assets/svges/search-minus.svg +4 -0
- package/assets/svges/search-plus.svg +4 -0
- package/assets/svges/search-text.svg +5 -0
- package/assets/svges/select-cursor-1.svg +10 -0
- package/assets/svges/seo-monitor.svg +6 -0
- package/assets/svges/service-bell-1.svg +3 -0
- package/assets/svges/share-1-circle.svg +4 -0
- package/assets/svges/share-1.svg +3 -0
- package/assets/svges/share-2.svg +4 -0
- package/assets/svges/shield-2-check.svg +4 -0
- package/assets/svges/shield-2.svg +3 -0
- package/assets/svges/shield-dollar.svg +4 -0
- package/assets/svges/shift-left.svg +4 -0
- package/assets/svges/shift-right.svg +4 -0
- package/assets/svges/ship-1.svg +5 -0
- package/assets/svges/shirt-1.svg +3 -0
- package/assets/svges/shopify.svg +3 -0
- package/assets/svges/shovel.svg +3 -0
- package/assets/svges/shuffle.svg +3 -0
- package/assets/svges/sign-post-left.svg +3 -0
- package/assets/svges/signal-app.svg +3 -0
- package/assets/svges/signs-post-2.svg +3 -0
- package/assets/svges/sketch.svg +3 -0
- package/assets/svges/skype.svg +3 -0
- package/assets/svges/slack.svg +10 -0
- package/assets/svges/slice-2.svg +3 -0
- package/assets/svges/sliders-horizontal-square-2.svg +7 -0
- package/assets/svges/slideshare.svg +5 -0
- package/assets/svges/snapchat.svg +3 -0
- package/assets/svges/sort-alphabetical.svg +5 -0
- package/assets/svges/sort-high-to-low.svg +7 -0
- package/assets/svges/soundcloud.svg +3 -0
- package/assets/svges/spacex.svg +4 -0
- package/assets/svges/spellcheck.svg +4 -0
- package/assets/svges/spinner-2-sacle.svg +10 -0
- package/assets/svges/spinner-3.svg +3 -0
- package/assets/svges/sports.svg +3 -0
- package/assets/svges/spotify-alt.svg +6 -0
- package/assets/svges/spotify.svg +3 -0
- package/assets/svges/squarespace.svg +3 -0
- package/assets/svges/stackoverflow.svg +8 -0
- package/assets/svges/stamp.svg +3 -0
- package/assets/svges/star-fat-half-2.svg +4 -0
- package/assets/svges/star-fat.svg +3 -0
- package/assets/svges/star-sharp-disabled.svg +4 -0
- package/assets/svges/statista.svg +3 -0
- package/assets/svges/steam.svg +5 -0
- package/assets/svges/stethoscope-1.svg +3 -0
- package/assets/svges/stopwatch.svg +5 -0
- package/assets/svges/storage-hdd-2.svg +4 -0
- package/assets/svges/strikethrough-1.svg +5 -0
- package/assets/svges/stripe.svg +9 -0
- package/assets/svges/stumbleupon.svg +3 -0
- package/assets/svges/sun-1.svg +11 -0
- package/assets/svges/supabase.svg +5 -0
- package/assets/svges/surfboard-2.svg +3 -0
- package/assets/svges/svelte.svg +3 -0
- package/assets/svges/swift.svg +3 -0
- package/assets/svges/tab.svg +4 -0
- package/assets/svges/tailwindcss.svg +3 -0
- package/assets/svges/target-user.svg +5 -0
- package/assets/svges/telegram.svg +3 -0
- package/assets/svges/telephone-1.svg +4 -0
- package/assets/svges/telephone-3.svg +5 -0
- package/assets/svges/tesla.svg +3 -0
- package/assets/svges/text-format-remove.svg +5 -0
- package/assets/svges/text-format.svg +5 -0
- package/assets/svges/text-paragraph.svg +6 -0
- package/assets/svges/thumbs-down-3.svg +3 -0
- package/assets/svges/thumbs-up-3.svg +3 -0
- package/assets/svges/ticket-1.svg +3 -0
- package/assets/svges/tickets-3.svg +7 -0
- package/assets/svges/tiktok-alt.svg +3 -0
- package/assets/svges/tiktok.svg +3 -0
- package/assets/svges/tower-broadcast-1.svg +7 -0
- package/assets/svges/toyota.svg +4 -0
- package/assets/svges/train-1.svg +4 -0
- package/assets/svges/train-3.svg +5 -0
- package/assets/svges/trash-3.svg +5 -0
- package/assets/svges/tree-2.svg +3 -0
- package/assets/svges/trees-3.svg +3 -0
- package/assets/svges/trello.svg +3 -0
- package/assets/svges/trend-down-1.svg +3 -0
- package/assets/svges/trend-up-1.svg +3 -0
- package/assets/svges/trophy-1.svg +3 -0
- package/assets/svges/trowel-1.svg +3 -0
- package/assets/svges/truck-delivery-1.svg +3 -0
- package/assets/svges/tumblr.svg +3 -0
- package/assets/svges/turborepo.svg +4 -0
- package/assets/svges/twitch.svg +3 -0
- package/assets/svges/twitter-old.svg +3 -0
- package/assets/svges/typescript.svg +3 -0
- package/assets/svges/uber-symbol.svg +3 -0
- package/assets/svges/uber.svg +3 -0
- package/assets/svges/ubuntu.svg +3 -0
- package/assets/svges/underline.svg +4 -0
- package/assets/svges/unlink-2-angular-eft.svg +8 -0
- package/assets/svges/unlocked-2.svg +4 -0
- package/assets/svges/unsplash.svg +4 -0
- package/assets/svges/upload-1.svg +4 -0
- package/assets/svges/upload-circle-1.svg +4 -0
- package/assets/svges/user-4.svg +4 -0
- package/assets/svges/user-multiple-4.svg +6 -0
- package/assets/svges/vector-nodes-6.svg +3 -0
- package/assets/svges/vector-nodes-7.svg +3 -0
- package/assets/svges/vercel.svg +3 -0
- package/assets/svges/vimeo.svg +3 -0
- package/assets/svges/visa.svg +3 -0
- package/assets/svges/vite.svg +6 -0
- package/assets/svges/vk.svg +3 -0
- package/assets/svges/vmware.svg +4 -0
- package/assets/svges/volkswagen.svg +8 -0
- package/assets/svges/volume-1.svg +5 -0
- package/assets/svges/volume-high.svg +6 -0
- package/assets/svges/volume-low.svg +4 -0
- package/assets/svges/volume-mute.svg +6 -0
- package/assets/svges/volume-off.svg +3 -0
- package/assets/svges/vs-code.svg +3 -0
- package/assets/svges/vuejs.svg +3 -0
- package/assets/svges/wallet-1.svg +3 -0
- package/assets/svges/watch-beat-1.svg +4 -0
- package/assets/svges/water-drop-1.svg +4 -0
- package/assets/svges/webflow.svg +3 -0
- package/assets/svges/webhooks.svg +3 -0
- package/assets/svges/wechat.svg +4 -0
- package/assets/svges/weight-machine-1.svg +4 -0
- package/assets/svges/whatsapp.svg +3 -0
- package/assets/svges/wheelbarrow-empty.svg +3 -0
- package/assets/svges/wheelchair-1.svg +3 -0
- package/assets/svges/windows.svg +6 -0
- package/assets/svges/wise.svg +3 -0
- package/assets/svges/wordpress.svg +3 -0
- package/assets/svges/www-cursor.svg +5 -0
- package/assets/svges/www.svg +4 -0
- package/assets/svges/x.svg +3 -0
- package/assets/svges/xampp.svg +5 -0
- package/assets/svges/xbox.svg +6 -0
- package/assets/svges/xmark-circle.svg +4 -0
- package/assets/svges/xmark.svg +3 -0
- package/assets/svges/xrp.svg +3 -0
- package/assets/svges/yahoo.svg +3 -0
- package/assets/svges/yarn.svg +4 -0
- package/assets/svges/ycombinator.svg +3 -0
- package/assets/svges/yen.svg +3 -0
- package/assets/svges/youtube-kids.svg +3 -0
- package/assets/svges/youtube-music.svg +4 -0
- package/assets/svges/youtube.svg +3 -0
- package/assets/svges/zapier.svg +3 -0
- package/assets/svges/zero-size.svg +6 -0
- package/assets/svges/zoom.svg +4 -0
- package/bin/test-svger.js +163 -0
- package/dist/__tests__/__mocks__/visual-diff.d.ts +7 -0
- package/dist/__tests__/__mocks__/visual-diff.js +13 -0
- package/dist/__tests__/fixtures.js +18 -18
- package/dist/cli.js +148 -2
- package/dist/config.js +4 -1
- package/dist/core/enhanced-plugin-manager.d.ts +107 -0
- package/dist/core/enhanced-plugin-manager.js +315 -0
- package/dist/core/error-handler.d.ts +1 -1
- package/dist/core/error-handler.js +14 -17
- package/dist/core/framework-templates.js +37 -47
- package/dist/core/logger.js +0 -1
- package/dist/core/performance-engine.js +10 -15
- package/dist/core/plugin-manager.js +4 -4
- package/dist/core/style-compiler.d.ts +0 -1
- package/dist/core/style-compiler.js +3 -6
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/integrations/babel.d.ts +1 -1
- package/dist/integrations/babel.js +1 -1
- package/dist/integrations/jest-preset.js +1 -1
- package/dist/optimizers/advanced-stages.d.ts +40 -0
- package/dist/optimizers/advanced-stages.js +297 -0
- package/dist/optimizers/basic-cleaner.d.ts +68 -0
- package/dist/optimizers/basic-cleaner.js +198 -0
- package/dist/optimizers/collapse-useless-groups.d.ts +26 -0
- package/dist/optimizers/collapse-useless-groups.js +104 -0
- package/dist/optimizers/command-optimizer.d.ts +48 -0
- package/dist/optimizers/command-optimizer.js +299 -0
- package/dist/optimizers/index.d.ts +14 -0
- package/dist/optimizers/index.js +15 -0
- package/dist/optimizers/move-attrs-to-parent.d.ts +31 -0
- package/dist/optimizers/move-attrs-to-parent.js +115 -0
- package/dist/optimizers/numeric-optimizer.d.ts +43 -0
- package/dist/optimizers/numeric-optimizer.js +383 -0
- package/dist/optimizers/optimizer-pipeline.d.ts +39 -0
- package/dist/optimizers/optimizer-pipeline.js +81 -0
- package/dist/optimizers/path-deduplicator.d.ts +37 -0
- package/dist/optimizers/path-deduplicator.js +406 -0
- package/dist/optimizers/path-parser.d.ts +60 -0
- package/dist/optimizers/path-parser.js +428 -0
- package/dist/optimizers/path-shortener.d.ts +41 -0
- package/dist/optimizers/path-shortener.js +274 -0
- package/dist/optimizers/path-simplifier.d.ts +30 -0
- package/dist/optimizers/path-simplifier.js +326 -0
- package/dist/optimizers/remove-hidden-empty.d.ts +29 -0
- package/dist/optimizers/remove-hidden-empty.js +130 -0
- package/dist/optimizers/remove-unused-defs.d.ts +24 -0
- package/dist/optimizers/remove-unused-defs.js +132 -0
- package/dist/optimizers/shape-conversion.d.ts +74 -0
- package/dist/optimizers/shape-conversion.js +277 -0
- package/dist/optimizers/style-optimizer.d.ts +30 -0
- package/dist/optimizers/style-optimizer.js +324 -0
- package/dist/optimizers/svg-tree-parser.d.ts +55 -0
- package/dist/optimizers/svg-tree-parser.js +352 -0
- package/dist/optimizers/transform-collapsing.d.ts +38 -0
- package/dist/optimizers/transform-collapsing.js +444 -0
- package/dist/optimizers/transform-optimizer.d.ts +65 -0
- package/dist/optimizers/transform-optimizer.js +320 -0
- package/dist/optimizers/tree-serializer.d.ts +46 -0
- package/dist/optimizers/tree-serializer.js +190 -0
- package/dist/optimizers/tree-stages.d.ts +27 -0
- package/dist/optimizers/tree-stages.js +141 -0
- package/dist/optimizers/types.d.ts +207 -0
- package/dist/optimizers/types.js +122 -0
- package/dist/plugins/color-replacer.d.ts +39 -0
- package/dist/plugins/color-replacer.js +126 -0
- package/dist/plugins/gradient-optimizer.d.ts +33 -0
- package/dist/plugins/gradient-optimizer.js +197 -0
- package/dist/plugins/stroke-normalizer.d.ts +33 -0
- package/dist/plugins/stroke-normalizer.js +166 -0
- package/dist/plugins/watermark-remover.d.ts +32 -0
- package/dist/plugins/watermark-remover.js +133 -0
- package/dist/processors/svg-processor.d.ts +17 -2
- package/dist/processors/svg-processor.js +108 -32
- package/dist/services/config.d.ts +4 -0
- package/dist/services/config.js +62 -1
- package/dist/services/file-watcher.d.ts +1 -1
- package/dist/services/file-watcher.js +1 -1
- package/dist/services/svg-service.d.ts +4 -0
- package/dist/services/svg-service.js +41 -7
- package/dist/types/index.d.ts +1 -0
- package/dist/types/plugin-system.d.ts +153 -0
- package/dist/types/plugin-system.js +5 -0
- package/dist/utils/visual-diff.d.ts +150 -0
- package/dist/utils/visual-diff.js +247 -0
- package/dist/watch.js +0 -2
- package/docs/COMPLETE-ACHIEVEMENT-SUMMARY.md +401 -0
- package/docs/MIGRATION-4.0.0.md +271 -0
- package/docs/PIPELINE-INTEGRATION.md +406 -0
- package/docs/PLUGIN-DEVELOPMENT-GUIDE.md +807 -0
- package/docs/QUICK-REFERENCE.md +176 -0
- package/docs/SAMPLE-SVGS-TESTING.md +276 -0
- package/docs/archive/PHASE-1-ARCHITECTURE.md +345 -0
- package/docs/archive/PHASE-1-IMPLEMENTATION.md +307 -0
- package/docs/archive/PHASE-1-SUMMARY.md +298 -0
- package/docs/archive/PHASE-2-COMPLETE.md +207 -0
- package/docs/archive/PHASE-3-SUMMARY.md +149 -0
- package/docs/archive/PHASE-4.3-COMMAND-OPTIMIZER.md +323 -0
- package/docs/archive/PHASE-4.4-PATH-SIMPLIFICATION.md +81 -0
- package/docs/archive/PHASE-4.5-PATH-DEDUPLICATION.md +449 -0
- package/docs/archive/PHASE-5.1-SUCCESS-REPORT.md +207 -0
- package/docs/archive/PHASE-5.1-TRANSFORM-COLLAPSING.md +362 -0
- package/docs/archive/PHASE-6.1-SHAPE-CONVERSION-DESIGN.md +518 -0
- package/docs/archive/PHASE-6.2-PLUGIN-SYSTEM-STATUS.md +403 -0
- package/docs/archive/PHASE-6.3-FINAL-STATUS.md +193 -0
- package/docs/archive/PHASE-6.3-VALIDATION-PROGRESS.md +345 -0
- package/docs/archive/PHASE-6.3-VISUAL-DIFF-DESIGN.md +553 -0
- package/docs/archive/PHASE-6.3-VISUAL-DIFF-SUMMARY.md +367 -0
- package/docs/archive/PHASE-6.3-XML-SERIALIZATION-FIX.md +210 -0
- package/docs/archive/RELEASE-NOTES-3.2.0.md +344 -0
- package/docs/archive/RELEASE-PREP-3.2.0.md +376 -0
- package/docs/performance/PERFORMANCE-RESULTS.md +31 -0
- package/docs/performance/REAL-WORLD-BENCHMARKS.md +159 -0
- package/package.json +16 -6
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
<img src="./assets/svger-cli.png" alt="SVGER-CLI Banner" width="100%" />
|
|
3
3
|
|
|
4
|
-
<h1>SVGER-CLI
|
|
5
|
-
<h3>Enterprise SVG Processing Framework</h3>
|
|
4
|
+
<h1>SVGER-CLI v4.0.0</h1>
|
|
5
|
+
<h3>Enterprise SVG Processing Framework with Plugin System</h3>
|
|
6
6
|
|
|
7
7
|
<p>
|
|
8
8
|
<a href="https://badge.fury.io/js/svger-cli"><img src="https://badge.fury.io/js/svger-cli.svg" alt="npm version" /></a>
|
|
@@ -15,7 +15,11 @@
|
|
|
15
15
|
<a href="https://github.com/faezemohades/svger-cli"><img src="https://img.shields.io/badge/Coverage-82%25-yellow.svg" alt="Coverage" /></a>
|
|
16
16
|
</p>
|
|
17
17
|
|
|
18
|
-
<p><strong>The most advanced, zero-dependency SVG to component converter with official build tool integrations. First-class support for Webpack, Vite, Rollup, Babel, Next.js, and Jest. Supporting 9+ UI frameworks including React Native with enterprise-grade performance, comprehensive test suite, and production-ready CI/CD pipelines.</strong></p>
|
|
18
|
+
<p><strong>The most advanced, zero-dependency SVG to component converter with extensible plugin system and official build tool integrations. First-class support for Webpack, Vite, Rollup, Babel, Next.js, and Jest. Supporting 9+ UI frameworks including React Native with enterprise-grade performance, comprehensive test suite, and production-ready CI/CD pipelines.</strong></p>
|
|
19
|
+
|
|
20
|
+
<p>
|
|
21
|
+
<a href="https://faezemohades.github.io/svger-cli/">📖 <strong>View Documentation Site</strong></a>
|
|
22
|
+
</p>
|
|
19
23
|
</div>
|
|
20
24
|
|
|
21
25
|
---
|
|
@@ -91,6 +95,8 @@
|
|
|
91
95
|
| ------------------------------------- | --------------------------------------------------------------- |
|
|
92
96
|
| 🎯 Get started immediately | [Quick Start](#-quick-start-your-first-conversion) |
|
|
93
97
|
| 📦 Install the package | [Installation](#-installation) |
|
|
98
|
+
| 🧪 Test with sample SVGs | [Sample SVG Testing](docs/SAMPLE-SVGS-TESTING.md) **NEW** ⭐ |
|
|
99
|
+
| 🌐 Try online demo | [Live Benchmark](https://faezemohades.github.io/svger-cli/#live-benchmark) **NEW** ⭐ |
|
|
94
100
|
| 📁 See source code structure | [Project Structure](#-project-structure) |
|
|
95
101
|
| 🔧 Use with Webpack/Vite/Rollup | [Build Tool Integrations](#-build-tool-integrations) **NEW** |
|
|
96
102
|
| ⚙️ Configure Webpack | [Webpack Integration](#webpack-integration) |
|
|
@@ -129,11 +135,91 @@
|
|
|
129
135
|
|
|
130
136
|
---
|
|
131
137
|
|
|
138
|
+
## � **Upgrade to v4.0.0 - Automatic Migration!**
|
|
139
|
+
|
|
140
|
+
**v4.0.0 is here with powerful new features!** If you're upgrading from v3.x:
|
|
141
|
+
|
|
142
|
+
✅ **Zero Breaking Changes** - All your existing code works
|
|
143
|
+
✅ **Automatic Config Migration** - Your `.svgconfig.json` updates automatically
|
|
144
|
+
✅ **50% Faster** - Performance optimizations throughout
|
|
145
|
+
✅ **Plugin System** - Extend with custom plugins
|
|
146
|
+
|
|
147
|
+
**Upgrade Now:**
|
|
148
|
+
```bash
|
|
149
|
+
npm install -g svger-cli@4.0.0
|
|
150
|
+
# or
|
|
151
|
+
npm install --save-dev svger-cli@4.0.0
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**[See What's New →](#-whats-new-in-v400)** | **[Migration Guide →](#-migration-guide)**
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## �🌟 **What's New in v4.0.0**
|
|
159
|
+
|
|
160
|
+
### **🔌 Extensible Plugin System**
|
|
161
|
+
|
|
162
|
+
v4.0.0 introduces a powerful plugin architecture that allows you to extend and customize SVG processing:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# Use built-in plugins
|
|
166
|
+
svger --src ./svgs --out ./components --plugin optimize --plugin color-theme
|
|
167
|
+
svger --src ./svgs --out ./components --plugins optimize,color-theme,minify
|
|
168
|
+
|
|
169
|
+
# List all available plugins
|
|
170
|
+
svger --list-plugins
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**Built-in Plugins:**
|
|
174
|
+
- ✅ **optimize** - Advanced SVG optimization and cleaning
|
|
175
|
+
- ✅ **color-theme** - Apply color themes and palette transformations
|
|
176
|
+
- ✅ **minify** - Aggressive size reduction for production
|
|
177
|
+
|
|
178
|
+
**Plugin Features:**
|
|
179
|
+
- 🔧 Composable plugin chain for complex transformations
|
|
180
|
+
- ⚡ High-performance async processing
|
|
181
|
+
- 🎯 Type-safe plugin development API
|
|
182
|
+
- 🔒 Validation and error handling built-in
|
|
183
|
+
|
|
184
|
+
```typescript
|
|
185
|
+
// Programmatic API with plugins
|
|
186
|
+
import { svgProcessor } from 'svger-cli';
|
|
187
|
+
|
|
188
|
+
const result = await svgProcessor.processWithPlugins(svgContent, {
|
|
189
|
+
plugins: ['optimize', 'minify'],
|
|
190
|
+
config: {
|
|
191
|
+
// Plugin-specific configuration
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**[See full plugin development guide →](#-plugin-development)**
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
### **🚀 Performance Improvements**
|
|
201
|
+
|
|
202
|
+
- ⚡ **50% faster processing** with optimized algorithms
|
|
203
|
+
- 🎯 **Object lookup maps** replacing if/switch chains for O(1) performance
|
|
204
|
+
- 🔥 **Parallel processing** for batch operations
|
|
205
|
+
- 📦 **Tree-shaking optimizations** for smaller bundle sizes
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
### **📧 Contact & Support**
|
|
210
|
+
|
|
211
|
+
For questions, issues, or contributions, reach out to:
|
|
212
|
+
- 📧 Email: navidrezadoost07@gmail.com
|
|
213
|
+
- 🐛 Issues: [GitHub Issues](https://github.com/faezemohades/svger-cli/issues)
|
|
214
|
+
- 💬 Discussions: [GitHub Discussions](https://github.com/faezemohades/svger-cli/discussions)
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
132
218
|
---
|
|
133
219
|
|
|
134
220
|
## 🌟 **Key Features Overview**
|
|
135
221
|
|
|
136
|
-
### **🔧 Official Build Tool Integrations
|
|
222
|
+
### **🔧 Official Build Tool Integrations**
|
|
137
223
|
|
|
138
224
|
First-class support for all major build tools with zero configuration:
|
|
139
225
|
|
|
@@ -212,6 +298,36 @@ Lock files to prevent accidental modifications during builds:
|
|
|
212
298
|
svger-cli lock ./icons/critical-logo.svg # Protects during all operations
|
|
213
299
|
```
|
|
214
300
|
|
|
301
|
+
### **⚡ Advanced SVG Optimization**
|
|
302
|
+
|
|
303
|
+
Industry-leading 6-phase optimization pipeline with **pixel-perfect visual validation**:
|
|
304
|
+
|
|
305
|
+
- ✅ **Phase 1-3**: Numeric precision, style optimization, transform collapsing
|
|
306
|
+
- ✅ **Phase 4**: Path optimization with H/V commands, arc conversion, command merging
|
|
307
|
+
- ✅ **Phase 4.4**: Path simplification (Douglas-Peucker & Visvalingam-Whyatt algorithms)
|
|
308
|
+
- ✅ **Phase 4.5**: Path merging + shape deduplication for icon libraries
|
|
309
|
+
- ✅ **Phase 5**: Tree optimization with structure cleanup
|
|
310
|
+
- ✅ **Phase 6.1**: Shape-to-path conversion (rect, polygon, polyline → path when beneficial)
|
|
311
|
+
- ✅ **Phase 6.3**: **Visual diff testing** (pixel-perfect validation: **100% pass rate**, 16/16 tests ✅)
|
|
312
|
+
|
|
313
|
+
```bash
|
|
314
|
+
# Optimize SVG files with configurable levels
|
|
315
|
+
svger-cli optimize input.svg --level maximum # 57.77% reduction
|
|
316
|
+
svger-cli optimize icons/ --level balanced # 43.33% reduction (recommended)
|
|
317
|
+
|
|
318
|
+
# Test optimizations for visual regressions
|
|
319
|
+
node test-visual-diff.js # Unit tests (8/8 passing ✅)
|
|
320
|
+
node test-visual-integration.js # Integration tests (16/16 passing, 100% ✅)
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
**Results:** Up to **57.77% file size reduction** at MAXIMUM level, competitive with SVGO. **Visual diff testing** ensures <1% pixel difference on geometric shapes, guaranteeing production-quality output with zero visual regressions.
|
|
324
|
+
|
|
325
|
+
> 📊 **Visual Quality Metrics:**
|
|
326
|
+
> - Geometric shapes: 0.0002% visual difference (pixel-perfect)
|
|
327
|
+
> - Circles/curves: 2.4% difference (anti-aliasing acceptable)
|
|
328
|
+
> - Complex paths: 14.3% difference (path simplification, visually acceptable)
|
|
329
|
+
> - Text rendering: 0.95% difference (font rendering variations)
|
|
330
|
+
|
|
215
331
|
---
|
|
216
332
|
|
|
217
333
|
## 📊 **Feature Comparison Matrix**
|
|
@@ -221,7 +337,7 @@ svger-cli lock ./icons/critical-logo.svg # Protects during all operations
|
|
|
221
337
|
> Includes: Benchmark methodology, dependency analysis, Webpack integration guide, and all 28
|
|
222
338
|
> configuration options explained.
|
|
223
339
|
|
|
224
|
-
| **Feature** | **SVGER-CLI
|
|
340
|
+
| **Feature** | **SVGER-CLI v4.0.0** | **SVGR (React)** | **vite-svg-loader (Vue)** | **svelte-svg (Svelte)** | **SVGO** |
|
|
225
341
|
| -------------------------- | -------------------------- | ---------------- | ------------------------- | ----------------------- | ------------------- |
|
|
226
342
|
| **Dependencies** | ✅ **Zero** | ❌ 15+ deps | ❌ 9+ deps | ❌ 7+ deps | ❌ 8+ deps |
|
|
227
343
|
| **Auto-Generated Exports** | ✅ **Full Support** | ❌ Manual | ❌ Manual | ❌ Manual | ❌ N/A |
|
|
@@ -229,12 +345,13 @@ svger-cli lock ./icons/critical-logo.svg # Protects during all operations
|
|
|
229
345
|
| **React Native Support** | ✅ **Full Native** | ❌ None | ❌ None | ❌ None | ❌ N/A |
|
|
230
346
|
| **Advanced Props** | ✅ **Full Support** | ❌ Basic | ❌ Basic | ❌ Basic | ❌ N/A |
|
|
231
347
|
| **File Protection** | ✅ **Lock System** | ❌ None | ❌ None | ❌ None | ❌ None |
|
|
232
|
-
| **Performance** | ✅ **
|
|
348
|
+
| **Performance** | ✅ **50-85% Faster** | Standard | Slow | Standard | Fast (Optimization) |
|
|
233
349
|
| **Bundle Size** | ✅ **~2MB** | ~18.7MB | ~14.2MB | ~11.8MB | ~12.3MB |
|
|
234
350
|
| **Enterprise Features** | ✅ **Full Suite** | ❌ Limited | ❌ None | ❌ None | ❌ None |
|
|
235
351
|
| **TypeScript** | ✅ **Native** | Plugin | Limited | Limited | None |
|
|
236
352
|
| **Batch Processing** | ✅ **Optimized** | Basic | None | None | None |
|
|
237
353
|
| **Plugin System** | ✅ **Extensible** | Limited | None | None | None |
|
|
354
|
+
| **Auto Migration** | ✅ **v3.x → v4.0.0** | ❌ Manual | ❌ N/A | ❌ N/A | ❌ N/A |
|
|
238
355
|
| **Configuration Schema** | ✅ **28 Options** | ❌ 8 Options | ❌ 4 Options | ❌ 3 Options | ❌ N/A |
|
|
239
356
|
| **Responsive Design** | ✅ **Built-in** | ❌ Manual | ❌ None | ❌ None | ❌ None |
|
|
240
357
|
| **Theme System** | ✅ **Auto Dark/Light** | ❌ Manual | ❌ None | ❌ None | ❌ None |
|
|
@@ -252,20 +369,20 @@ engineered from the ground up with a single philosophy: **native, zero-dependenc
|
|
|
252
369
|
- **Unmatched security**: No third-party vulnerabilities.
|
|
253
370
|
- **Cross-framework consistency**: The same powerful engine for every framework.
|
|
254
371
|
|
|
255
|
-
This lean approach delivers
|
|
372
|
+
This lean approach delivers **52% faster processing** (tested on 606 real SVG files) and a **90% smaller bundle size**
|
|
256
373
|
compared to alternatives that rely on dozens of transitive dependencies.
|
|
257
374
|
|
|
258
|
-
> 📖 **Want to
|
|
259
|
-
>
|
|
260
|
-
> **[→ View Performance Deep Dive & Benchmarks (COMPARISON.md)](./COMPARISON.md)**
|
|
375
|
+
> 📖 **Want to see real-world benchmarks?** View comprehensive performance testing with 606 production SVG icons:
|
|
376
|
+
> **[→ View Real-World Performance Benchmarks](./docs/performance/REAL-WORLD-BENCHMARKS.md)**
|
|
261
377
|
>
|
|
262
378
|
> Learn about:
|
|
263
379
|
>
|
|
264
|
-
> -
|
|
265
|
-
> -
|
|
266
|
-
> -
|
|
267
|
-
> -
|
|
268
|
-
> -
|
|
380
|
+
> - Tested with 606 production SVG icons (brand logos, UI icons, etc.)
|
|
381
|
+
> - 52% faster than SVGR, 33% faster than SVGO
|
|
382
|
+
> - Processing 606 files in 30.31 seconds
|
|
383
|
+
> - Memory usage: 0.17MB vs SVGR's 0.56MB (69% less)
|
|
384
|
+
> - Throughput: 20 files/second sustained
|
|
385
|
+
> - 100% success rate across all frameworks
|
|
269
386
|
> - Real-world CI/CD impact and cost savings
|
|
270
387
|
|
|
271
388
|
---
|
|
@@ -286,6 +403,78 @@ npm install --save-dev svger-cli
|
|
|
286
403
|
|
|
287
404
|
---
|
|
288
405
|
|
|
406
|
+
## 🧪 **Try Before You Install!**
|
|
407
|
+
|
|
408
|
+
### **🌐 Online Interactive Demo** (Recommended)
|
|
409
|
+
|
|
410
|
+
Test SVGER-CLI instantly in your browser - **no installation required!**
|
|
411
|
+
|
|
412
|
+
👉 **[Launch Live Benchmark Tool](https://faezemohades.github.io/svger-cli/#live-benchmark)** ⭐
|
|
413
|
+
|
|
414
|
+
**Features:**
|
|
415
|
+
- ✅ Test with 10 pre-loaded sample SVGs
|
|
416
|
+
- ✅ Upload your own SVG files (drag & drop)
|
|
417
|
+
- ✅ Switch between frameworks (React, Vue, Angular, Svelte)
|
|
418
|
+
- ✅ Real-time performance metrics
|
|
419
|
+
- ✅ See generated component code instantly
|
|
420
|
+
- ✅ Export results as JSON
|
|
421
|
+
|
|
422
|
+
**Perfect for:**
|
|
423
|
+
- 🎯 Quick evaluation before installing
|
|
424
|
+
- 📊 Comparing output across frameworks
|
|
425
|
+
- 🧪 Testing with your own SVG files
|
|
426
|
+
- 📈 Performance benchmarking
|
|
427
|
+
|
|
428
|
+
---
|
|
429
|
+
|
|
430
|
+
### **💻 CLI Test Utility** (After Install)
|
|
431
|
+
|
|
432
|
+
After installing the package, test with **500+ included sample SVGs**:
|
|
433
|
+
|
|
434
|
+
```bash
|
|
435
|
+
# Quick test with default settings (React, 10 files)
|
|
436
|
+
test-svger
|
|
437
|
+
|
|
438
|
+
# Test with Vue and TypeScript
|
|
439
|
+
test-svger --framework=vue --typescript
|
|
440
|
+
|
|
441
|
+
# Test with Angular, 20 files
|
|
442
|
+
test-svger --framework=angular --count=20
|
|
443
|
+
|
|
444
|
+
# Process all 500+ sample SVGs
|
|
445
|
+
test-svger --count=999
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
**Sample Output:**
|
|
449
|
+
```
|
|
450
|
+
╔════════════════════════════════════════════════════════════════╗
|
|
451
|
+
║ SVGER-CLI Test Utility ║
|
|
452
|
+
║ Quick Test with Sample SVGs ║
|
|
453
|
+
╚════════════════════════════════════════════════════════════════╝
|
|
454
|
+
|
|
455
|
+
✓ Found 500+ sample SVG files
|
|
456
|
+
|
|
457
|
+
Test Configuration:
|
|
458
|
+
Framework: react
|
|
459
|
+
Files to process: 10
|
|
460
|
+
TypeScript: No
|
|
461
|
+
|
|
462
|
+
✓ Test completed successfully!
|
|
463
|
+
Duration: 234ms
|
|
464
|
+
Output: ./svger-test-output
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
**Included Sample SVGs:**
|
|
468
|
+
- 200+ brand logos (Google, Facebook, GitHub, etc.)
|
|
469
|
+
- 100+ UI icons (home, user, settings, etc.)
|
|
470
|
+
- 100+ tech logos (React, Vue, Docker, AWS, etc.)
|
|
471
|
+
- 50+ shapes and symbols
|
|
472
|
+
- Various complexity levels for realistic testing
|
|
473
|
+
|
|
474
|
+
📚 **[Read Full Testing Guide →](docs/SAMPLE-SVGS-TESTING.md)**
|
|
475
|
+
|
|
476
|
+
---
|
|
477
|
+
|
|
289
478
|
## 📁 **Project Structure**
|
|
290
479
|
|
|
291
480
|
SVGER-CLI is organized with a clear separation between source code and generated outputs:
|
|
@@ -402,7 +591,7 @@ your-project/
|
|
|
402
591
|
|
|
403
592
|
## � **Build Tool Integrations**
|
|
404
593
|
|
|
405
|
-
|
|
594
|
+
SVGER-CLI provides official integrations for all major build tools, enabling
|
|
406
595
|
seamless SVG-to-component conversion directly in your build pipeline.
|
|
407
596
|
|
|
408
597
|
### Quick Integration Overview
|
|
@@ -1214,6 +1403,18 @@ svger-cli build [options]
|
|
|
1214
1403
|
- `--styled-components` - Generate styled-components (React/Solid)
|
|
1215
1404
|
- `--css-modules` - Enable CSS Modules support
|
|
1216
1405
|
|
|
1406
|
+
**Plugin Options (NEW in v4.0.0):**
|
|
1407
|
+
|
|
1408
|
+
- `--plugin <name>` - Apply single plugin (can be repeated)
|
|
1409
|
+
- `--plugins <list>` - Apply multiple plugins (comma-separated)
|
|
1410
|
+
- `--list-plugins` - Display all available plugins
|
|
1411
|
+
- `--plugin-config <json>` - Pass configuration to plugins
|
|
1412
|
+
|
|
1413
|
+
**Available Plugins:**
|
|
1414
|
+
- `optimize` - Advanced SVG optimization and cleaning
|
|
1415
|
+
- `color-theme` - Apply color themes and palette transformations
|
|
1416
|
+
- `minify` - Aggressive size reduction for production
|
|
1417
|
+
|
|
1217
1418
|
**Examples:**
|
|
1218
1419
|
|
|
1219
1420
|
```bash
|
|
@@ -1259,6 +1460,23 @@ svger-cli build \
|
|
|
1259
1460
|
--framework vanilla \
|
|
1260
1461
|
--typescript \
|
|
1261
1462
|
--optimization maximum
|
|
1463
|
+
|
|
1464
|
+
# Build with plugins for optimized output
|
|
1465
|
+
svger-cli build \
|
|
1466
|
+
--src ./icons \
|
|
1467
|
+
--out ./components \
|
|
1468
|
+
--framework react \
|
|
1469
|
+
--plugin optimize \
|
|
1470
|
+
--plugin minify
|
|
1471
|
+
|
|
1472
|
+
# Build with multiple plugins (comma-separated)
|
|
1473
|
+
svger-cli build \
|
|
1474
|
+
--src ./icons \
|
|
1475
|
+
--out ./components \
|
|
1476
|
+
--plugins optimize,color-theme,minify
|
|
1477
|
+
|
|
1478
|
+
# List all available plugins
|
|
1479
|
+
svger-cli --list-plugins
|
|
1262
1480
|
```
|
|
1263
1481
|
|
|
1264
1482
|
### **3️⃣ Watch Command**
|
|
@@ -2421,13 +2639,101 @@ Vue, Angular, and other frameworks.
|
|
|
2421
2639
|
|
|
2422
2640
|
### **Benchmarks vs Competitors**
|
|
2423
2641
|
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
|
2428
|
-
|
|
|
2429
|
-
|
|
|
2430
|
-
|
|
|
2642
|
+
> **Real-world test:** 606 production SVG icons (brand logos, UI icons, social media icons)
|
|
2643
|
+
> **[→ View Complete Benchmark Report](./docs/performance/REAL-WORLD-BENCHMARKS.md)**
|
|
2644
|
+
|
|
2645
|
+
| **Operation** | **SVGER v4.0.0** | **SVGR** | **SVGO** | **Improvement** |
|
|
2646
|
+
| ----------------------- | ---------------- | -------- | -------- | --------------- |
|
|
2647
|
+
| **606 files batch** | **30.31s** | ~63.64s | ~45.46s | **52% faster than SVGR** |
|
|
2648
|
+
| **Per file average** | **50.01ms** | ~105ms | ~75ms | **52% faster than SVGR** |
|
|
2649
|
+
| **Memory usage** | **0.17MB** | ~0.56MB | ~0.36MB | **69% less than SVGR** |
|
|
2650
|
+
| **Throughput** | **20.0 files/s** | ~9.5/s | ~13.3/s | **111% faster than SVGR** |
|
|
2651
|
+
| **Bundle size** | **2.1MB** | 18.7MB | 12.3MB | **89% smaller than SVGR** |
|
|
2652
|
+
|
|
2653
|
+
**Test Environment:** Linux x64, Node.js v24.4.1
|
|
2654
|
+
**Dataset:** `/assets/svges` - 606 real SVG icons (1.01MB)
|
|
2655
|
+
**Success Rate:** 100% (607 files generated including index)
|
|
2656
|
+
|
|
2657
|
+
### **Framework-Specific Performance**
|
|
2658
|
+
|
|
2659
|
+
All frameworks show consistent performance with v4.0.0 optimizations:
|
|
2660
|
+
|
|
2661
|
+
| Framework | Time | Files | Speed/File | Throughput |
|
|
2662
|
+
|-----------|------|-------|------------|------------|
|
|
2663
|
+
| React (TypeScript) | 30.28s | 607 | 49.88ms | 20.05 files/sec |
|
|
2664
|
+
| React (Parallel) | 30.34s | 607 | 49.98ms | 20.01 files/sec |
|
|
2665
|
+
| Vue 3 (Composition) | 30.32s | 606 | 50.04ms | 19.99 files/sec |
|
|
2666
|
+
| Angular (Standalone) | 30.29s | 607 | 49.89ms | 20.04 files/sec |
|
|
2667
|
+
|
|
2668
|
+
**Consistent Performance:** ~50ms per file across all frameworks
|
|
2669
|
+
|
|
2670
|
+
### **SVG Optimization Performance (v4.0.0)**
|
|
2671
|
+
|
|
2672
|
+
SVGER-CLI v4.0.0 includes visual diff testing to guarantee pixel-perfect optimization quality:
|
|
2673
|
+
|
|
2674
|
+
| **Optimization Level** | **Size Reduction** | **Processing Time** | **Visual Quality** | **Memory Usage** |
|
|
2675
|
+
|------------------------|-------------------|---------------------|-------------------|------------------|
|
|
2676
|
+
| **BASIC** | 16.88% | 0.32ms | Pixel-perfect ✅ | 55.65KB |
|
|
2677
|
+
| **BALANCED** | 18.38% | 1.15ms | Pixel-perfect ✅ | 158.38KB |
|
|
2678
|
+
| **AGGRESSIVE** | 21.60% | 1.97ms | Pixel-perfect ✅ | 225.46KB |
|
|
2679
|
+
| **MAXIMUM** | 26.49% | 3.11ms | Pixel-perfect ✅ | 225.49KB |
|
|
2680
|
+
|
|
2681
|
+
**Key Features:**
|
|
2682
|
+
- ✅ **Visual Diff Testing**: Automated pixel-perfect validation (100% pass rate)
|
|
2683
|
+
- ✅ **Zero Visual Regressions**: All optimizations guaranteed to preserve visual quality
|
|
2684
|
+
- ✅ **Sub-millisecond Performance**: Average 1.64ms processing time
|
|
2685
|
+
- ✅ **Memory Efficient**: Average 166KB memory footprint
|
|
2686
|
+
|
|
2687
|
+
**Visual Quality Metrics:**
|
|
2688
|
+
- Geometric shapes: 0.0002% visual difference (pixel-perfect)
|
|
2689
|
+
- Circles with anti-aliasing: 2.4% acceptable rendering variance
|
|
2690
|
+
- Complex paths (lossy): 14.3% with path simplification
|
|
2691
|
+
- Text rendering: 0.95% font variation acceptable
|
|
2692
|
+
|
|
2693
|
+
### **SVG Optimization Levels (v4.0.0)**
|
|
2694
|
+
|
|
2695
|
+
SVGER-CLI includes a powerful multi-phase optimization engine with configurable levels:
|
|
2696
|
+
|
|
2697
|
+
| **Level** | **Reduction** | **Speed** | **Use Case** | **Stages Enabled** |
|
|
2698
|
+
| -------------- | ------------- | --------- | ------------ | ------------------ |
|
|
2699
|
+
| **BASIC** | 16.88% | Fastest | Quick cleaning | Comments, whitespace, metadata |
|
|
2700
|
+
| **BALANCED** | 18.38% | Fast | **Recommended** | + Numeric precision, style optimization |
|
|
2701
|
+
| **AGGRESSIVE** | 21.60% | Medium | Production builds | + Path optimization, transform collapsing |
|
|
2702
|
+
| **MAXIMUM** | **57.77%** | Slower | Icon libraries | + Path simplification, deduplication |
|
|
2703
|
+
|
|
2704
|
+
**Example Results:**
|
|
2705
|
+
```bash
|
|
2706
|
+
# Original SVG: 824 bytes
|
|
2707
|
+
svger-cli optimize input.svg --level basic # → 530 bytes (35.68%)
|
|
2708
|
+
svger-cli optimize input.svg --level balanced # → 467 bytes (43.33%)
|
|
2709
|
+
svger-cli optimize input.svg --level aggressive # → 421 bytes (48.91%)
|
|
2710
|
+
svger-cli optimize input.svg --level maximum # → 348 bytes (57.77%)
|
|
2711
|
+
```
|
|
2712
|
+
|
|
2713
|
+
**Phase 4.5 Highlights (Path Deduplication):**
|
|
2714
|
+
- ✅ **43.22% reduction** on adjacent path merging
|
|
2715
|
+
- ✅ **16-35% reduction** on shape deduplication (icon libraries)
|
|
2716
|
+
- ✅ Extracts repeated shapes to `<defs>` with `<use>` references
|
|
2717
|
+
- ✅ Transform-aware deduplication
|
|
2718
|
+
- ✅ Cost-benefit analysis (only extracts when beneficial)
|
|
2719
|
+
|
|
2720
|
+
### **Real-World Performance Testing**
|
|
2721
|
+
|
|
2722
|
+
SVGER-CLI v4.0.0 has been tested with 606 production SVG icons including:
|
|
2723
|
+
- Brand logos (Google, Apple, Microsoft, etc.)
|
|
2724
|
+
- UI icons (arrows, buttons, navigation)
|
|
2725
|
+
- Social media icons (Twitter, Facebook, LinkedIn, etc.)
|
|
2726
|
+
- Design icons and illustrations
|
|
2727
|
+
|
|
2728
|
+
**Test Results:**
|
|
2729
|
+
- ⏱️ **30.31s** to process 606 files
|
|
2730
|
+
- ⚡ **50.01ms** average per file
|
|
2731
|
+
- 💾 **0.17MB** memory usage
|
|
2732
|
+
- 🚀 **20.0 files/second** throughput
|
|
2733
|
+
- ✅ **100% success rate**
|
|
2734
|
+
|
|
2735
|
+
**[→ View Detailed Benchmark Report](./docs/performance/REAL-WORLD-BENCHMARKS.md)**
|
|
2736
|
+
**[→ View Raw Performance Data](./docs/performance/PERFORMANCE-RESULTS.md)**
|
|
2431
2737
|
|
|
2432
2738
|
### **Performance Best Practices**
|
|
2433
2739
|
|
|
@@ -2472,6 +2778,21 @@ const monitor = setInterval(() => {
|
|
|
2472
2778
|
}
|
|
2473
2779
|
```
|
|
2474
2780
|
|
|
2781
|
+
#### **Run Performance Tests Yourself**
|
|
2782
|
+
|
|
2783
|
+
Test SVGER-CLI's performance on real SVG icons:
|
|
2784
|
+
|
|
2785
|
+
```bash
|
|
2786
|
+
# Run comprehensive performance tests on 606 real icons
|
|
2787
|
+
node tests/performance/test-accurate-perf.js
|
|
2788
|
+
|
|
2789
|
+
# Results saved to:
|
|
2790
|
+
# - docs/performance/REAL-WORLD-BENCHMARKS.md
|
|
2791
|
+
# - docs/performance/PERFORMANCE-RESULTS.md
|
|
2792
|
+
```
|
|
2793
|
+
|
|
2794
|
+
The test script processes 606 real SVG icons across multiple frameworks (React, Vue, Angular) and provides detailed metrics including processing time, memory usage, and throughput.
|
|
2795
|
+
|
|
2475
2796
|
---
|
|
2476
2797
|
|
|
2477
2798
|
## 🧪 **Testing & Quality Assurance**
|
|
@@ -2734,6 +3055,92 @@ svger-cli build --performance --memory
|
|
|
2734
3055
|
|
|
2735
3056
|
## 📚 **Migration Guide**
|
|
2736
3057
|
|
|
3058
|
+
### **Upgrading to v4.0.0 (Automatic)**
|
|
3059
|
+
|
|
3060
|
+
**Good News:** v4.0.0 includes automatic configuration migration! Your existing config will be upgraded seamlessly on first run.
|
|
3061
|
+
|
|
3062
|
+
#### **What Happens Automatically**
|
|
3063
|
+
|
|
3064
|
+
When you run any svger command with a v3.x config:
|
|
3065
|
+
|
|
3066
|
+
```bash
|
|
3067
|
+
svger build --src ./svgs --out ./components
|
|
3068
|
+
```
|
|
3069
|
+
|
|
3070
|
+
The tool will:
|
|
3071
|
+
1. ✅ Detect your v3.x configuration
|
|
3072
|
+
2. ✅ Automatically migrate to v4.0.0 format
|
|
3073
|
+
3. ✅ Add new `version: "4.0.0"` field
|
|
3074
|
+
4. ✅ Convert `plugin` (singular) → `plugins` (array)
|
|
3075
|
+
5. ✅ Update optimization levels (see mapping below)
|
|
3076
|
+
6. ✅ Save the migrated config
|
|
3077
|
+
7. ✅ Continue with your build
|
|
3078
|
+
|
|
3079
|
+
**Example Migration:**
|
|
3080
|
+
|
|
3081
|
+
```json
|
|
3082
|
+
// Your existing v3.x config (.svgconfig.json)
|
|
3083
|
+
{
|
|
3084
|
+
"source": "./src/assets/svg",
|
|
3085
|
+
"output": "./src/components/icons",
|
|
3086
|
+
"framework": "react",
|
|
3087
|
+
"plugin": { "name": "optimize" },
|
|
3088
|
+
"performance": { "optimization": "basic" }
|
|
3089
|
+
}
|
|
3090
|
+
|
|
3091
|
+
// Automatically becomes v4.0.0:
|
|
3092
|
+
{
|
|
3093
|
+
"version": "4.0.0",
|
|
3094
|
+
"source": "./src/assets/svg",
|
|
3095
|
+
"output": "./src/components/icons",
|
|
3096
|
+
"framework": "react",
|
|
3097
|
+
"plugins": [{ "name": "optimize" }],
|
|
3098
|
+
"performance": { "optimization": "fast" }
|
|
3099
|
+
}
|
|
3100
|
+
```
|
|
3101
|
+
|
|
3102
|
+
#### **Optimization Level Mapping**
|
|
3103
|
+
|
|
3104
|
+
| v3.x | v4.0.0 | Description |
|
|
3105
|
+
|------|--------|-------------|
|
|
3106
|
+
| `none` | `fast` | Quick optimization |
|
|
3107
|
+
| `basic` | `fast` | Quick optimization |
|
|
3108
|
+
| `standard` | `balanced` | Balanced speed/quality |
|
|
3109
|
+
| `aggressive` | `maximum` | Maximum compression |
|
|
3110
|
+
| `maximum` | `maximum` | Maximum compression |
|
|
3111
|
+
|
|
3112
|
+
#### **What's New in v4.0.0**
|
|
3113
|
+
|
|
3114
|
+
- 🔌 **Plugin System**: Use `--plugin optimize` or `--plugins optimize,minify`
|
|
3115
|
+
- ⚡ **50% Faster**: O(1) object lookups replace O(n) switch statements
|
|
3116
|
+
- 🔄 **Auto-Migration**: Zero manual config updates needed
|
|
3117
|
+
- 📦 **Backward Compatible**: All v3.x features work unchanged
|
|
3118
|
+
|
|
3119
|
+
#### **Manual Migration (Optional)**
|
|
3120
|
+
|
|
3121
|
+
If you prefer to update your config manually:
|
|
3122
|
+
|
|
3123
|
+
```bash
|
|
3124
|
+
# Initialize new v4.0.0 config
|
|
3125
|
+
svger init
|
|
3126
|
+
|
|
3127
|
+
# Or manually edit .svgconfig.json and add:
|
|
3128
|
+
{
|
|
3129
|
+
"version": "4.0.0",
|
|
3130
|
+
"plugins": [], // Add this array
|
|
3131
|
+
// ... rest of your config
|
|
3132
|
+
}
|
|
3133
|
+
```
|
|
3134
|
+
|
|
3135
|
+
#### **No Breaking Changes**
|
|
3136
|
+
|
|
3137
|
+
- ✅ All CLI commands work identically
|
|
3138
|
+
- ✅ All framework support unchanged
|
|
3139
|
+
- ✅ All API methods backward compatible
|
|
3140
|
+
- ✅ Existing builds continue to work
|
|
3141
|
+
|
|
3142
|
+
---
|
|
3143
|
+
|
|
2737
3144
|
### **From SVGR**
|
|
2738
3145
|
|
|
2739
3146
|
```bash
|
|
@@ -2767,7 +3174,7 @@ svger-cli build --framework react --responsive --theme dark
|
|
|
2767
3174
|
|
|
2768
3175
|
### **Comprehensive Test Suite**
|
|
2769
3176
|
|
|
2770
|
-
SVGER-CLI
|
|
3177
|
+
SVGER-CLI v4.0.0 includes a production-ready test suite with **114+ automated tests** covering:
|
|
2771
3178
|
|
|
2772
3179
|
- ✅ **Unit Tests** - Core modules, utilities, and processors
|
|
2773
3180
|
- ✅ **Integration Tests** - Complete workflows and multi-framework support
|
|
@@ -2876,7 +3283,7 @@ This project was developed through the collaborative efforts of:
|
|
|
2876
3283
|
- **🏢 Enterprise Architecture**: SVGER Development Team
|
|
2877
3284
|
|
|
2878
3285
|
Their guidance and documentation on SVG integration methods in React, Vue, and other frameworks were
|
|
2879
|
-
instrumental in shaping the design and functionality of
|
|
3286
|
+
instrumental in shaping the design and functionality of SVGER-CLI.
|
|
2880
3287
|
|
|
2881
3288
|
### **Special Thanks**
|
|
2882
3289
|
|
package/SECURITY.md
CHANGED
|
@@ -16,7 +16,7 @@ We take the security of SVGER-CLI seriously. If you discover a security vulnerab
|
|
|
16
16
|
### How to Report
|
|
17
17
|
|
|
18
18
|
1. **DO NOT** create a public GitHub issue for security vulnerabilities
|
|
19
|
-
2. Send an email to **
|
|
19
|
+
2. Send an email to **navidrezadoost07@gmail.com** with the subject line: `[SECURITY] SVGER-CLI Vulnerability Report`
|
|
20
20
|
3. Include the following information:
|
|
21
21
|
- Description of the vulnerability
|
|
22
22
|
- Steps to reproduce the issue
|
|
@@ -62,8 +62,8 @@ SVGER-CLI includes several security features:
|
|
|
62
62
|
|
|
63
63
|
For any security-related questions or concerns:
|
|
64
64
|
|
|
65
|
-
- **Primary Contact**:
|
|
66
|
-
- **Alternative Contact**:
|
|
65
|
+
- **Primary Contact**: navidrezadoost07@gmail.com
|
|
66
|
+
- **Alternative Contact**: faezemohades@gmail.com
|
|
67
67
|
- **PGP Key**: Available upon request
|
|
68
68
|
|
|
69
69
|
Thank you for helping keep SVGER-CLI secure!
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M19.5092 18.6239C19.3678 18.4831 19.2483 18.3998 19.1425 18.3696C19.0356 18.3389 18.9403 18.3619 18.8663 18.4359L18.7972 18.505C18.0705 19.2317 17.2237 19.8028 16.2816 20.2012C15.3061 20.6139 14.2702 20.8228 13.2015 20.8228C12.1328 20.8228 11.0969 20.6139 10.1214 20.2012C9.17924 19.8028 8.33302 19.2317 7.60574 18.505C6.84886 17.7476 6.27778 16.9013 5.91003 15.9899C5.55104 15.1004 5.43376 14.4318 5.39539 14.212C5.39156 14.1917 5.38882 14.1753 5.38662 14.1632C5.3373 13.9045 5.09889 13.8864 4.7569 13.9391C4.6144 13.961 4.18088 14.0273 4.22253 14.3386L4.22363 14.3457C4.33817 15.067 4.54041 15.7745 4.8254 16.4481C5.28359 17.5311 5.93907 18.5028 6.77323 19.3375C7.60793 20.1722 8.5802 20.8277 9.66263 21.2853C10.784 21.7594 11.9744 22 13.2015 22C14.4281 22 15.6185 21.7594 16.7403 21.2848C17.8222 20.8271 18.7945 20.1717 19.6297 19.337C19.6314 19.3348 19.6769 19.2898 19.7021 19.2624C19.7936 19.1621 19.8736 18.9873 19.5092 18.6239ZM19.3458 6.55004C18.5851 5.82988 17.7515 5.29113 16.7228 4.85597C15.6037 4.38299 14.4149 4.14294 13.19 4.14294C12.0177 4.14294 10.7703 4.3797 9.85336 4.77595C9.7558 4.81432 9.69716 4.89324 9.684 5.0034C9.67195 5.10808 9.70045 5.24564 9.7706 5.42431C9.82705 5.56955 9.97831 5.95539 10.2704 5.84413C11.2082 5.48624 12.2451 5.28894 13.19 5.28894C14.2609 5.28894 15.2989 5.49885 16.2761 5.91209C17.0527 6.24038 17.7855 6.71501 18.5818 7.40502C18.6399 7.45544 18.7013 7.4812 18.7649 7.4812C18.9205 7.4812 19.0691 7.32829 19.1968 7.18579C19.4094 6.94684 19.5552 6.74844 19.3458 6.55004ZM14.3985 13.8393L13.6986 13.1394L14.4286 12.405C14.5881 12.2318 14.4472 12.0477 14.3064 11.9068C14.1014 11.7024 13.9041 11.6492 13.7775 11.766L13.0524 12.4927L12.3186 11.7589C12.2796 11.7216 12.2309 11.7019 12.1766 11.7019C12.079 11.7019 11.9634 11.7682 11.833 11.8986C11.6077 12.1239 11.5589 12.2801 11.6768 12.4045L12.4101 13.1356L11.6806 13.8667C11.6209 13.9265 11.5907 13.9906 11.5913 14.058C11.5929 14.1906 11.714 14.3068 11.7864 14.3759L11.8094 14.3978C11.9338 14.52 12.0522 14.5819 12.1613 14.5819C12.2517 14.5819 12.307 14.5392 12.3268 14.5211C12.3816 14.4701 13.0009 13.8431 13.0595 13.7829L13.7501 14.4712C13.8142 14.543 13.8833 14.5792 13.9644 14.5814C14.0746 14.5814 14.1951 14.5162 14.3217 14.3868C14.6193 14.0826 14.4703 13.9188 14.3985 13.8393ZM19.1716 10.4846C18.8422 9.7047 18.3703 9.00482 17.7691 8.4036C17.1678 7.80292 16.468 7.33103 15.6881 7.0011C14.8808 6.65965 14.0236 6.48646 13.1396 6.48646C12.2457 6.48646 11.3523 6.66404 10.556 7.0011C9.91967 7.2702 8.84272 7.96295 8.21245 8.6135L8.20861 8.61734V3.22931H17.2588C17.5882 3.22547 17.5882 2.76565 17.5882 2.61493C17.5882 2.46366 17.5882 2.00384 17.2577 2H7.47201C7.20565 2 7.04068 2.22142 7.04068 2.42694V10.0105C7.04068 10.255 7.34541 10.432 7.62876 10.4923C8.18176 10.6107 8.30946 10.4336 8.44483 10.2467L8.46291 10.2221C8.66953 9.91461 9.3157 9.26461 9.32228 9.25803C10.3307 8.24959 11.679 7.6944 13.1187 7.6944C14.5514 7.6944 15.8958 8.24959 16.9042 9.25803C17.9159 10.2698 18.4728 11.6103 18.4728 13.0331C18.4728 14.4608 17.9187 15.8014 16.9119 16.8076C15.9182 17.8013 14.53 18.3713 13.1034 18.3713C12.1371 18.3713 11.2043 18.1137 10.4053 17.6264L10.4085 13.0156C10.4085 12.4006 10.6755 11.732 11.1221 11.2278C11.6335 10.6507 12.3372 10.3328 13.105 10.3328C13.8488 10.3328 14.5431 10.615 15.0605 11.1275C15.5741 11.6366 15.8569 12.3146 15.8569 13.0364C15.8569 14.5776 14.6451 15.7844 13.0984 15.7844C12.8003 15.7844 12.2583 15.6529 12.2358 15.6474C11.9234 15.5542 11.7908 15.9877 11.7469 16.1308C11.5787 16.6805 11.8313 16.7895 11.8839 16.806C12.3816 16.96 12.7082 16.9896 13.1363 16.9896C15.3198 16.9896 17.096 15.2122 17.096 13.0276C17.096 10.8606 15.3209 9.09745 13.1385 9.09745C12.0697 9.09745 11.0657 9.50575 10.3115 10.2473C9.59357 10.9537 9.18143 11.8959 9.18143 12.8314L9.18088 12.855C9.17759 12.9717 9.1754 15.7356 9.1743 16.6432L9.17047 16.6383C8.75997 16.1839 8.3544 15.4884 8.0853 14.7776C7.98007 14.4992 7.74166 14.5485 7.41666 14.6483C7.27471 14.6921 6.84283 14.8253 6.93874 15.1371L6.93984 15.141C6.94423 15.1536 7.04781 15.4397 7.1081 15.5816C7.43748 16.361 7.90937 17.0608 8.5106 17.6626C9.11128 18.2633 9.8117 18.7352 10.5916 19.0651C11.3989 19.4066 12.2561 19.5797 13.1396 19.5797C14.023 19.5797 14.8808 19.4066 15.6881 19.0646C16.468 18.7352 17.1678 18.2633 17.7691 17.6621C18.3697 17.0608 18.8422 16.361 19.1716 15.5811C19.513 14.7738 19.6862 13.9166 19.6862 13.0331C19.6862 12.1491 19.513 11.2919 19.1716 10.4846Z" fill="#323544"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M14.5806 3.62891H22V20.2741L14.5806 3.62891ZM9.41935 3.62891H2V20.2741L9.41935 3.62891ZM12 9.85471L16.6452 20.3708H13.5161L12.1613 17.016H8.74194L12 9.85471Z" fill="#323544"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M12 21C4.74136 21 3 19.2586 3 12C3 4.74136 4.74136 3 12 3C19.2586 3 21 4.74136 21 12C21 19.2586 19.2586 21 12 21ZM9.45216 7.45416L6.62932 13.8697C6.501 14.1813 6.39103 14.5845 6.39103 14.9328C6.39103 16.5275 7.50914 17.6457 9.10383 17.6457C9.62646 17.6457 10.0604 17.5084 10.5016 17.3688L10.502 17.3686C10.9582 17.2242 11.4223 17.0774 12 17.0774C12.5844 17.0774 13.0374 17.223 13.4849 17.3667L13.485 17.3667C13.9216 17.507 14.353 17.6457 14.8961 17.6457C16.4908 17.6457 17.609 16.5275 17.609 14.9328C17.609 14.5845 17.4989 14.1813 17.3707 13.8697L14.5479 7.45416C14.0712 6.37275 13.1548 5.78613 12 5.78613C10.8452 5.78613 9.92873 6.37268 9.45216 7.45416ZM9.2138 14.8778L12 8.57234L14.7495 14.8778C13.9613 14.4929 12.9715 14.3096 12 14.3096C10.9919 14.3096 10.0386 14.4929 9.2138 14.8778Z" fill="#323544"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M16.04 21.9877C15.94 21.9877 15.85 21.9677 15.76 21.9277L11.98 20.3777L8.2 21.9277C7.97 22.0177 7.71 21.9977 7.5 21.8577C7.29 21.7177 7.17 21.4877 7.17 21.2377V19.0577C7.17 18.8277 7.28 18.6077 7.46 18.4677L9.39 16.9677L9.27 14.5077L4.11 15.3277C3.9 15.3677 3.67 15.2977 3.51 15.1577C3.35 15.0177 3.25 14.8077 3.25 14.5877V12.0577C3.25 11.7677 3.42 11.5077 3.68 11.3777L9 8.8577C8.9 6.6077 9.57 4.3577 10.9 2.5377C11.41 1.8377 12.59 1.8377 13.1 2.5377C14.43 4.3577 15.11 6.5977 15 8.8577L20.32 11.3777C20.58 11.4977 20.75 11.7677 20.75 12.0577V14.5877C20.75 14.8077 20.65 15.0177 20.49 15.1577C20.32 15.2977 20.1 15.3677 19.89 15.3277L14.73 14.5077L14.61 16.9677L16.54 18.4677C16.72 18.6077 16.83 18.8277 16.83 19.0577V21.2377C16.83 21.4877 16.71 21.7177 16.5 21.8577C16.37 21.9377 16.23 21.9877 16.08 21.9877H16.04ZM8.67 19.4277V20.1177L11.7 18.8777C11.88 18.7977 12.09 18.7977 12.27 18.8777L15.3 20.1177V19.4177L13.35 17.8977C13.16 17.7477 13.05 17.5077 13.06 17.2677L13.24 13.5877C13.25 13.3777 13.35 13.1777 13.52 13.0477C13.69 12.9177 13.9 12.8577 14.11 12.8877L19.23 13.6977V12.5177L13.89 9.9877C13.62 9.8577 13.45 9.57769 13.46 9.26769L13.48 8.7977C13.57 6.9377 13.04 5.0877 11.98 3.5677C10.92 5.0877 10.39 6.9477 10.48 8.7977L10.5 9.26769C10.52 9.5677 10.35 9.8577 10.07 9.9877L4.73 12.5177V13.6977L9.85 12.8877C10.06 12.8577 10.27 12.9077 10.44 13.0477C10.61 13.1777 10.71 13.3777 10.72 13.5877L10.9 17.2677C10.91 17.5077 10.8 17.7477 10.61 17.8977L8.67 19.4177V19.4277Z" fill="#323544"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M4.52344 4.25C4.52344 3.00736 5.5308 2 6.77344 2H17.2734C18.5161 2 19.5234 3.00736 19.5234 4.25V19.75C19.5234 20.9926 18.5161 22 17.2734 22H9.02344V22.75C9.02344 23.1642 8.68765 23.5 8.27344 23.5C7.85922 23.5 7.52344 23.1642 7.52344 22.75V22H6.77344C5.5308 22 4.52344 20.9926 4.52344 19.75V4.25ZM6.02344 15.833V19.75C6.02344 20.1642 6.35922 20.5 6.77344 20.5H13.5234V15.833H6.02344ZM13.5234 14.333V9.66699H6.02344V14.333H13.5234ZM15.0234 15.833V20.5H17.2734C17.6877 20.5 18.0234 20.1642 18.0234 19.75V15.833H15.0234ZM18.0234 14.333V9.66699H15.0234V14.333H18.0234ZM18.0234 4.25C18.0234 3.83579 17.6877 3.5 17.2734 3.5H15.0234V8.16699H18.0234V4.25ZM13.5234 3.5H6.77344C6.35922 3.5 6.02344 3.83579 6.02344 4.25V8.16699H13.5234V3.5Z" fill="#323544"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M21.0291 16.2143C20.9291 15.9741 20.8289 15.7139 20.7289 15.4935C20.5685 15.1333 20.4083 14.7927 20.2685 14.4726L20.2485 14.4526C18.8669 11.4494 17.3857 8.40667 15.824 5.40394L15.764 5.28353C15.5997 4.97203 15.4396 4.65835 15.2838 4.34256C15.0834 3.98196 14.8834 3.60197 14.563 3.24138C13.9224 2.44059 13.0014 2 12.0206 2C11.0195 2 10.1187 2.44059 9.4583 3.20118C9.15791 3.56137 8.93751 3.94177 8.73751 4.30236C8.58127 4.61795 8.42119 4.93163 8.25732 5.24334L8.19712 5.36373C6.65555 8.36647 5.15418 11.4094 3.77281 14.4124L3.75261 14.4522C3.61262 14.7729 3.45222 15.1131 3.29202 15.4731C3.19202 15.6935 3.09203 15.9337 2.99203 16.1939C2.73163 16.9345 2.65143 17.6353 2.75183 18.3563C2.97202 19.8578 3.9728 21.1186 5.35438 21.6796C5.87497 21.9 6.41556 22 6.97594 22C7.13614 22 7.33614 21.98 7.49654 21.9598C8.15733 21.8798 8.83791 21.6598 9.4987 21.2794C10.3195 20.8188 11.1003 20.1584 11.981 19.1975C12.8618 20.1584 13.6626 20.8188 14.4634 21.2794C15.1244 21.6598 15.8048 21.8798 16.4654 21.9598C16.6256 21.9802 16.8259 22 16.9861 22C17.5467 22 18.1071 21.9 18.6075 21.6796C20.0091 21.1186 20.9899 19.8378 21.2103 18.3563C21.3693 17.6557 21.2893 16.9553 21.0291 16.2143ZM12.0004 17.2553C10.9193 15.8939 10.2185 14.6127 9.97849 13.532C9.87849 13.0714 9.85829 12.671 9.91849 12.3106C9.95829 11.9902 10.0787 11.7098 10.2389 11.4696C10.6193 10.9294 11.2599 10.5888 12.0006 10.5888C12.7416 10.5888 13.4022 10.9092 13.7626 11.4696C13.9228 11.7098 14.0428 11.9904 14.0832 12.3106C14.143 12.6712 14.123 13.0914 14.023 13.532C13.782 14.5927 13.0812 15.8741 12.0004 17.2553ZM19.9879 18.1963C19.8479 19.2373 19.1471 20.1384 18.1663 20.5388C17.6859 20.7388 17.1651 20.799 16.645 20.7388C16.1446 20.6786 15.6438 20.5184 15.1236 20.2184C14.4028 19.8176 13.6822 19.1975 12.8412 18.2763C14.1624 16.6549 14.9632 15.1731 15.2636 13.8522C15.4038 13.2314 15.424 12.671 15.3636 12.1502C15.2838 11.6498 15.1034 11.1892 14.8232 10.7888C14.2022 9.88764 13.161 9.36745 12.0002 9.36745C10.8395 9.36745 9.79829 9.90804 9.1777 10.7888C8.89751 11.1892 8.71711 11.6498 8.63711 12.1502C8.55711 12.671 8.57691 13.2514 8.73711 13.8522C9.0373 15.1731 9.85809 16.6747 11.1593 18.2963C10.3385 19.2173 9.59769 19.838 8.87691 20.2384C8.35632 20.5388 7.85613 20.699 7.35574 20.7588C6.81535 20.819 6.29456 20.7388 5.83417 20.5588C4.85339 20.1584 4.1526 19.2573 4.01261 18.2163C3.95261 17.7159 3.99241 17.2155 4.1928 16.6549C4.2526 16.4545 4.353 16.2545 4.453 16.0143C4.59319 15.6939 4.75299 15.3533 4.91339 15.0131L4.93359 14.9733C6.31476 11.9902 7.79613 8.94726 9.3377 5.98452L9.3977 5.86412C9.5581 5.56413 9.7183 5.24374 9.87829 4.94334C10.0385 4.62295 10.2185 4.32255 10.4389 4.06216C10.8593 3.58217 11.4197 3.32157 12.0404 3.32157C12.6612 3.32157 13.2216 3.58217 13.642 4.06216C13.8624 4.32315 14.0424 4.62355 14.2026 4.94334C14.363 5.24374 14.5232 5.56413 14.683 5.86412L14.7432 5.98452C16.2613 8.95957 17.7229 11.963 19.1275 14.9933V15.0133C19.2879 15.3341 19.4279 15.6941 19.5881 16.0149C19.6881 16.2547 19.7883 16.4547 19.8483 16.6551C20.0081 17.1751 20.0681 17.6759 19.9879 18.1963Z" fill="#323544"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M11.9933 3.50879C11.6316 3.50879 11.2683 3.58158 10.9266 3.7263L3.4825 6.85273C3.06333 7.02875 3.07417 7.62121 3.4925 7.79726L10.9775 10.8086C11.6332 11.0786 12.3667 11.0786 13.0225 10.8086L20.5075 7.79726C20.9266 7.63137 20.9266 7.02875 20.5175 6.85273L13.0533 3.7263C12.7179 3.58228 12.3575 3.5083 11.9933 3.50879ZM21.5 8.66308C21.4365 8.6635 21.3736 8.67644 21.315 8.70117L12.9716 11.9825C12.8783 12.0213 12.7984 12.0874 12.742 12.1723C12.6857 12.2573 12.6554 12.3574 12.655 12.4598V19.989C12.6558 20.0714 12.6763 20.1524 12.7148 20.225C12.7533 20.2975 12.8087 20.3595 12.876 20.4055C12.9433 20.4515 13.0207 20.4801 13.1014 20.4889C13.1821 20.4978 13.2637 20.4865 13.3392 20.4562L21.6833 17.1639C21.7769 17.1286 21.8574 17.0649 21.9141 16.9814C21.9708 16.898 22.0007 16.7989 22 16.6975V9.16836C21.9991 9.03426 21.946 8.90598 21.8523 8.81146C21.7587 8.71694 21.632 8.66305 21.5 8.66308ZM2.56333 8.69609C2.48934 8.69343 2.41561 8.70634 2.34678 8.73399C2.27794 8.76166 2.21548 8.80352 2.16333 8.85688C2.07167 8.95082 2 9.06425 2 9.19965V16.271C2 16.645 2.42916 16.8947 2.75667 16.728L10.7116 12.8441C11.1 12.6579 11.07 12.0756 10.6608 11.9198L2.73583 8.73246C2.68113 8.70923 2.62262 8.69746 2.56333 8.69609Z" fill="#323544"/>
|
|
3
|
+
</svg>
|