From 036d995c77bd8f4df746bd10efb5a0ac45409231 Mon Sep 17 00:00:00 2001 From: codecalm Date: Sat, 9 Jul 2022 17:03:12 +0200 Subject: new build process --- .build/iconfont-unicode.json | 1 - .build/iconfont.html | 156 ----- .build/iconfont.scss | 51 -- .build/svgr-template.js | 12 - .gitignore | 1 - build/helpers.js | 20 + build/iconfont-unicode.json | 1 + build/iconfont.html | 156 +++++ build/iconfont.scss | 51 ++ build/template-react.js | 12 + gulpfile.js | 1170 ++++++++++++++++----------------- package.json | 32 +- packages/icons-preact/.gitignore | 1 + packages/icons-preact/readme.md | 3 + packages/icons-react/.gitignore | 1 + packages/icons-react/readme.md | 3 + packages/icons-react/rollup.config.js | 119 ++++ rollup.config.js | 119 ---- 18 files changed, 951 insertions(+), 958 deletions(-) delete mode 100644 .build/iconfont-unicode.json delete mode 100644 .build/iconfont.html delete mode 100644 .build/iconfont.scss delete mode 100644 .build/svgr-template.js create mode 100644 build/helpers.js create mode 100644 build/iconfont-unicode.json create mode 100644 build/iconfont.html create mode 100644 build/iconfont.scss create mode 100644 build/template-react.js create mode 100644 packages/icons-preact/.gitignore create mode 100644 packages/icons-preact/readme.md create mode 100644 packages/icons-react/.gitignore create mode 100644 packages/icons-react/readme.md create mode 100644 packages/icons-react/rollup.config.js delete mode 100644 rollup.config.js diff --git a/.build/iconfont-unicode.json b/.build/iconfont-unicode.json deleted file mode 100644 index d71894f7..00000000 --- a/.build/iconfont-unicode.json +++ /dev/null @@ -1 +0,0 @@ -{"2fa":"eca0","3d-cube-sphere":"ecd7","3d-rotate":"f020","a-b":"ec36","a-b-off":"f0a6","abacus":"f05c","access-point":"ed1b","access-point-off":"ed1a","accessible":"eba9","accessible-off":"f0a7","activity":"ed23","activity-heartbeat":"f0db","ad":"ea02","ad-2":"ef1f","address-book":"f021","adjustments":"ea03","adjustments-alt":"ec37","adjustments-horizontal":"ec38","adjustments-off":"f0a8","aerial-lift":"edfe","affiliate":"edff","alarm":"ea04","alarm-off":"f0a9","album":"f022","alert-circle":"ea05","alert-octagon":"ecc6","alert-triangle":"ea06","alien":"ebde","align-center":"ea07","align-justified":"ea08","align-left":"ea09","align-right":"ea0a","alphabet-cyrillic":"f1df","alphabet-greek":"f1e0","alphabet-latin":"f1e1","ambulance":"ebf5","anchor":"eb76","anchor-off":"f0f7","angle":"ef20","ankh":"f1cd","antenna":"f094","antenna-bars-1":"ecc7","antenna-bars-2":"ecc8","antenna-bars-3":"ecc9","antenna-bars-4":"ecca","antenna-bars-5":"eccb","antenna-bars-off":"f0aa","aperture":"eb58","api":"effd","api-app":"effc","api-app-off":"f0ab","api-off":"f0f8","app-window":"efe6","apple":"ef21","apps":"ebb6","apps-off":"f0ac","archive":"ea0b","archive-off":"f0ad","armchair":"ef9e","armchair-2":"efe7","arrow-autofit-content":"ef31","arrow-autofit-down":"ef32","arrow-autofit-height":"ef33","arrow-autofit-left":"ef34","arrow-autofit-right":"ef35","arrow-autofit-up":"ef36","arrow-autofit-width":"ef37","arrow-back":"ea0c","arrow-back-up":"eb77","arrow-bar-down":"ea0d","arrow-bar-left":"ea0e","arrow-bar-right":"ea0f","arrow-bar-to-down":"ec88","arrow-bar-to-left":"ec89","arrow-bar-to-right":"ec8a","arrow-bar-to-up":"ec8b","arrow-bar-up":"ea10","arrow-bear-left":"f045","arrow-bear-left-2":"f044","arrow-bear-right":"f047","arrow-bear-right-2":"f046","arrow-big-down":"edda","arrow-big-down-line":"efe8","arrow-big-down-lines":"efe9","arrow-big-left":"eddb","arrow-big-left-line":"efea","arrow-big-left-lines":"efeb","arrow-big-right":"eddc","arrow-big-right-line":"efec","arrow-big-right-lines":"efed","arrow-big-top":"eddd","arrow-big-up-line":"efee","arrow-big-up-lines":"efef","arrow-bottom-bar":"ed98","arrow-bottom-circle":"ed99","arrow-bottom-square":"ed9a","arrow-bottom-tail":"ed9b","arrow-curve-left":"f048","arrow-curve-right":"f049","arrow-down":"ea16","arrow-down-circle":"ea11","arrow-down-left":"ea13","arrow-down-left-circle":"ea12","arrow-down-right":"ea15","arrow-down-right-circle":"ea14","arrow-fork":"f04a","arrow-forward":"ea17","arrow-forward-up":"eb78","arrow-left":"ea19","arrow-left-bar":"ed9c","arrow-left-circle":"ea18","arrow-left-right":"f04b","arrow-left-square":"ed9d","arrow-left-tail":"ed9e","arrow-loop-left":"ed9f","arrow-loop-left-2":"f04c","arrow-loop-right":"eda0","arrow-loop-right-2":"f04d","arrow-merge":"f04e","arrow-narrow-down":"ea1a","arrow-narrow-left":"ea1b","arrow-narrow-right":"ea1c","arrow-narrow-up":"ea1d","arrow-ramp-left":"ed3c","arrow-ramp-left-2":"f04f","arrow-ramp-left-3":"f050","arrow-ramp-right":"ed3d","arrow-ramp-right-2":"f051","arrow-ramp-right-3":"f052","arrow-right":"ea1f","arrow-right-bar":"eda1","arrow-right-circle":"ea1e","arrow-right-square":"eda2","arrow-right-tail":"eda3","arrow-rotary-first-left":"f053","arrow-rotary-first-right":"f054","arrow-rotary-last-left":"f055","arrow-rotary-last-right":"f056","arrow-rotary-left":"f057","arrow-rotary-right":"f058","arrow-rotary-straight":"f059","arrow-sharp-turn-left":"f05a","arrow-sharp-turn-right":"f05b","arrow-top-bar":"eda4","arrow-top-circle":"eda5","arrow-top-square":"eda6","arrow-top-tail":"eda7","arrow-up":"ea25","arrow-up-circle":"ea20","arrow-up-left":"ea22","arrow-up-left-circle":"ea21","arrow-up-right":"ea24","arrow-up-right-circle":"ea23","arrow-wave-left-down":"eda8","arrow-wave-left-up":"eda9","arrow-wave-right-down":"edaa","arrow-wave-right-up":"edab","arrows-cross":"effe","arrows-diagonal":"ea27","arrows-diagonal-2":"ea26","arrows-diagonal-minimize":"ef39","arrows-diagonal-minimize-2":"ef38","arrows-double-ne-sw":"edde","arrows-double-nw-se":"eddf","arrows-double-se-nw":"ede0","arrows-double-sw-ne":"ede1","arrows-down":"edad","arrows-down-up":"edac","arrows-exchange":"f1f4","arrows-exchange-2":"f1f3","arrows-horizontal":"eb59","arrows-join":"edaf","arrows-join-2":"edae","arrows-left":"edb1","arrows-left-down":"ee00","arrows-left-right":"edb0","arrows-maximize":"ea28","arrows-minimize":"ea29","arrows-random":"f095","arrows-right":"edb3","arrows-right-down":"ee01","arrows-right-left":"edb2","arrows-shuffle":"f000","arrows-shuffle-2":"efff","arrows-sort":"eb5a","arrows-split":"edb5","arrows-split-2":"edb4","arrows-up":"edb7","arrows-up-down":"edb6","arrows-up-left":"ee02","arrows-up-right":"ee03","arrows-vertical":"eb5b","artboard":"ea2a","artboard-off":"f0ae","article":"f1e2","aspect-ratio":"ed30","aspect-ratio-off":"f0af","asset":"f1ce","asterisk":"efd5","asterisk-simple":"efd4","at":"ea2b","at-off":"f0b0","atom":"eb79","atom-2":"ebdf","atom-off":"f0f9","augmented-reality":"f023","award":"ea2c","award-off":"f0fa","axe":"ef9f","axis-x":"ef45","axis-y":"ef46","baby-carriage":"f05d","backhoe":"ed86","backpack":"ef47","backspace":"ea2d","badge":"efc2","badge-off":"f0fb","badges":"efc3","badges-off":"f0fc","ball-american-football":"ee04","ball-baseball":"efa0","ball-basketball":"ec28","ball-bowling":"ec29","ball-football":"ee06","ball-football-off":"ee05","ball-tennis":"ec2a","ball-volleyball":"ec2b","ballon":"ef3a","ballon-off":"f0fd","ballpen":"f06e","ballpen-off":"f0b1","ban":"ea2e","bandage":"eb7a","barbell":"eff0","barbell-off":"f0b2","barcode":"ebc6","barcode-off":"f0b3","barrel":"f0b4","barrel-off":"f0fe","barrier-block":"f00e","barrier-block-off":"f0b5","baseline":"f024","basket":"ebe1","basket-off":"f0b6","bath":"ef48","bath-off":"f0ff","battery":"ea34","battery-1":"ea2f","battery-2":"ea30","battery-3":"ea31","battery-4":"ea32","battery-automotive":"ee07","battery-charging":"ea33","battery-charging-2":"ef3b","battery-eco":"ef3c","battery-off":"ed1c","beach":"ef3d","beach-off":"f0b7","bed":"eb5c","bed-off":"f100","beer":"efa1","beer-off":"f101","bell":"ea35","bell-minus":"ede2","bell-off":"ece9","bell-plus":"ede3","bell-ringing":"ed07","bell-ringing-2":"ede4","bell-school":"f05e","bell-x":"ede5","bell-z":"eff1","bible":"efc4","bike":"ea36","bike-off":"f0b8","binary":"ee08","biohazard":"ecb8","biohazard-off":"f0b9","blockquote":"ee09","bluetooth":"ea37","bluetooth-connected":"ecea","bluetooth-off":"eceb","bluetooth-x":"f081","blur":"ef8c","bold":"eb7b","bold-off":"f0ba","bolt":"ea38","bolt-off":"ecec","bone":"edb8","bone-off":"f0bb","book":"ea39","book-2":"efc5","book-download":"f070","book-off":"f0bc","book-upload":"f071","bookmark":"ea3a","bookmark-off":"eced","bookmarks":"ed08","bookmarks-off":"f0bd","books":"eff2","books-off":"f0be","border-all":"ea3b","border-bottom":"ea3c","border-horizontal":"ea3d","border-inner":"ea3e","border-left":"ea3f","border-none":"ea40","border-outer":"ea41","border-radius":"eb7c","border-right":"ea42","border-style":"ee0a","border-style-2":"ef22","border-top":"ea43","border-vertical":"ea44","bottle":"ef0b","bow":"f096","box":"ea45","box-margin":"ee0b","box-model":"ee0c","box-model-2":"ef23","box-multiple":"ee17","box-multiple-0":"ee0d","box-multiple-1":"ee0e","box-multiple-2":"ee0f","box-multiple-3":"ee10","box-multiple-4":"ee11","box-multiple-5":"ee12","box-multiple-6":"ee13","box-multiple-7":"ee14","box-multiple-8":"ee15","box-multiple-9":"ee16","box-off":"f102","box-padding":"ee18","braces":"ebcc","braces-off":"f0bf","brackets":"ebcd","brackets-contain":"f1e5","brackets-contain-end":"f1e3","brackets-contain-start":"f1e4","brackets-off":"f0c0","brand-adobe":"f0dc","brand-airbnb":"ed68","brand-airtable":"ef6a","brand-amongus":"f205","brand-android":"ec16","brand-angular":"ef6b","brand-apple":"ec17","brand-apple-arcade":"ed69","brand-apple-podcast":"f1e6","brand-appstore":"ed24","brand-asana":"edc5","brand-badoo":"f206","brand-bandcamp":"f207","brand-beats":"f208","brand-behance":"ec6e","brand-bing":"edc6","brand-bitbucket":"edc7","brand-booking":"edc8","brand-bootstrap":"ef3e","brand-chrome":"ec18","brand-codepen":"ec6f","brand-codesandbox":"ed6a","brand-coinbase":"f209","brand-comedy-central":"f217","brand-css3":"ed6b","brand-cucumber":"ef6c","brand-debian":"ef57","brand-deviantart":"ecfb","brand-discord":"ece3","brand-disney":"f20a","brand-disqus":"edc9","brand-docker":"edca","brand-doctrine":"ef6d","brand-dribbble":"ec19","brand-edge":"ecfc","brand-facebook":"ec1a","brand-figma":"ec93","brand-finder":"f218","brand-firebase":"ef6e","brand-firefox":"ecfd","brand-flickr":"ecfe","brand-flipboard":"f20b","brand-foursquare":"ecff","brand-framer":"ec1b","brand-git":"ef6f","brand-github":"ec1c","brand-gitlab":"ec1d","brand-gmail":"efa2","brand-google":"ec1f","brand-google-analytics":"edcb","brand-google-drive":"ec1e","brand-google-photos":"f20c","brand-google-play":"ed25","brand-gravatar":"edcc","brand-grindr":"f20d","brand-hipchat":"edcd","brand-html5":"ed6c","brand-instagram":"ec20","brand-intercom":"f1cf","brand-javascript":"ef0c","brand-kickstarter":"edce","brand-kotlin":"ed6d","brand-lastfm":"f001","brand-linkedin":"ec8c","brand-linktree":"f1e7","brand-loom":"ef70","brand-mastercard":"ef49","brand-medium":"ec70","brand-mercedes":"f072","brand-messenger":"ec71","brand-meta":"efb0","brand-monday":"f219","brand-netbeans":"ef71","brand-netflix":"edcf","brand-nextjs":"f0dd","brand-notion":"ef7b","brand-nuxt":"f0de","brand-nytimes":"ef8d","brand-open-source":"edd0","brand-opera":"ec21","brand-pagekit":"edd1","brand-patreon":"edd2","brand-paypal":"ec22","brand-php":"ef72","brand-pinterest":"ec8d","brand-pocket":"ed00","brand-producthunt":"edd3","brand-pushover":"f20e","brand-python":"ed01","brand-react-native":"ef73","brand-reddit":"ec8e","brand-safari":"ec23","brand-sass":"edd4","brand-sentry":"edd5","brand-shazam":"edd6","brand-sketch":"ec24","brand-skype":"ed02","brand-slack":"ec72","brand-snapchat":"ec25","brand-soundcloud":"ed6e","brand-spotify":"ed03","brand-stackoverflow":"ef58","brand-steam":"ed6f","brand-stripe":"edd7","brand-sublime-text":"ef74","brand-svelte":"f0df","brand-tabler":"ec8f","brand-tailwind":"eca1","brand-telegram":"ec26","brand-tidal":"ed70","brand-tiktok":"ec73","brand-tinder":"ed71","brand-tripadvisor":"f002","brand-tumblr":"ed04","brand-twitch":"ed05","brand-twitter":"ec27","brand-uber":"ef75","brand-ubuntu":"ef59","brand-unsplash":"edd8","brand-vercel":"ef24","brand-vimeo":"ed06","brand-vinted":"f20f","brand-visual-studio":"ef76","brand-vivaldi":"f210","brand-vk":"ed72","brand-vue":"f0e0","brand-walmart":"f211","brand-whatsapp":"ec74","brand-windows":"ecd8","brand-wish":"f212","brand-xing":"f21a","brand-yahoo":"ed73","brand-yatse":"f213","brand-ycombinator":"edd9","brand-youtube":"ec90","brand-youtube-kids":"f214","brand-zoom":"f215","brand-zwift":"f216","bread":"efa3","briefcase":"ea46","brightness":"eb7f","brightness-2":"ee19","brightness-down":"eb7d","brightness-half":"ee1a","brightness-up":"eb7e","broadcast":"f1e9","broadcast-off":"f1e8","browser":"ebb7","browser-check":"efd6","browser-off":"f0c1","browser-plus":"efd7","browser-x":"efd8","brush":"ebb8","brush-off":"f0c2","bucket":"ea47","bucket-off":"f103","bug":"ea48","bug-off":"f0c3","building":"ea4f","building-arch":"ea49","building-bank":"ebe2","building-bridge":"ea4b","building-bridge-2":"ea4a","building-carousel":"ed87","building-castle":"ed88","building-church":"ea4c","building-community":"ebf6","building-cottage":"ee1b","building-factory":"ee1c","building-factory-2":"f082","building-fortress":"ed89","building-hospital":"ea4d","building-lighthouse":"ed8a","building-monument":"ed26","building-pavilon":"ebf7","building-skyscraper":"ec39","building-store":"ea4e","building-warehouse":"ebe3","bulb":"ea51","bulb-off":"ea50","bulldozer":"ee1d","bus":"ebe4","businessplan":"ee1e","butterfly":"efd9","c-sharp":"f003","cactus":"f21b","cake":"f00f","cake-off":"f104","calculator":"eb80","calculator-off":"f0c4","calendar":"ea53","calendar-event":"ea52","calendar-minus":"ebb9","calendar-off":"ee1f","calendar-plus":"ebba","calendar-stats":"ee20","calendar-time":"ee21","camera":"ea54","camera-minus":"ec3a","camera-off":"ecee","camera-plus":"ec3b","camera-rotate":"ee22","camera-selfie":"ee23","candle":"efc6","candy":"ef0d","candy-off":"f0c5","capture":"ec3c","capture-off":"f0c6","car":"ebbb","car-crane":"ef25","car-crash":"efa4","car-off":"f0c7","caravan":"ec7c","cardboards":"ed74","cardboards-off":"f0c8","caret-down":"eb5d","caret-left":"eb5e","caret-right":"eb5f","caret-up":"eb60","carrot":"f21c","cash":"ea55","cash-banknote":"ee25","cash-banknote-off":"ee24","cash-off":"f105","cast":"ea56","cast-off":"f0c9","category":"f1f6","category-2":"f1f5","ce":"ed75","ce-off":"f0ca","cell":"f05f","cell-signal-1":"f083","cell-signal-2":"f084","cell-signal-3":"f085","cell-signal-4":"f086","cell-signal-5":"f087","cell-signal-off":"f088","certificate":"ed76","certificate-2":"f073","certificate-2-off":"f0cb","certificate-off":"f0cc","charging-pile":"ee26","chart-arcs":"ee28","chart-arcs-3":"ee27","chart-area":"ea58","chart-area-line":"ea57","chart-arrows":"ee2a","chart-arrows-vertical":"ee29","chart-bar":"ea59","chart-bubble":"ec75","chart-candle":"ea5a","chart-circles":"ee2b","chart-donut":"ea5b","chart-donut-2":"ee2c","chart-donut-3":"ee2d","chart-donut-4":"ee2e","chart-dots":"ee2f","chart-dots-2":"f097","chart-dots-3":"f098","chart-infographic":"ee30","chart-line":"ea5c","chart-pie":"ea5d","chart-pie-2":"ee31","chart-pie-3":"ee32","chart-pie-4":"ee33","chart-radar":"ed77","check":"ea5e","checkbox":"eba6","checklist":"f074","checks":"ebaa","checkup-list":"ef5a","cheese":"ef26","chef-hat":"f21d","chevron-down":"ea5f","chevron-down-left":"ed09","chevron-down-right":"ed0a","chevron-left":"ea60","chevron-right":"ea61","chevron-up":"ea62","chevron-up-left":"ed0b","chevron-up-right":"ed0c","chevrons-down":"ea63","chevrons-down-left":"ed0d","chevrons-down-right":"ed0e","chevrons-left":"ea64","chevrons-right":"ea65","chevrons-up":"ea66","chevrons-up-left":"ed0f","chevrons-up-right":"ed10","christmas-tree":"ed78","circle":"ea6b","circle-0":"ee34","circle-1":"ee35","circle-2":"ee36","circle-3":"ee37","circle-4":"ee38","circle-5":"ee39","circle-6":"ee3a","circle-7":"ee3b","circle-8":"ee3c","circle-9":"ee3d","circle-check":"ea67","circle-dashed":"ed27","circle-dot":"efb1","circle-dotted":"ed28","circle-half":"ee3f","circle-half-2":"eff3","circle-half-vertical":"ee3e","circle-minus":"ea68","circle-off":"ee40","circle-plus":"ea69","circle-rectangle":"f010","circle-rectangle-off":"f0cd","circle-square":"ece4","circle-triangle":"f011","circle-x":"ea6a","circles":"ece5","clear-all":"ee41","clear-formatting":"ebe5","click":"ebbc","clipboard":"ea6f","clipboard-check":"ea6c","clipboard-list":"ea6d","clipboard-off":"f0ce","clipboard-plus":"efb2","clipboard-text":"f089","clipboard-x":"ea6e","clock":"ea70","clock-2":"f099","clock-off":"f0cf","cloud":"ea76","cloud-computing":"f1d0","cloud-data-connection":"f1d1","cloud-download":"ea71","cloud-fog":"ecd9","cloud-lock":"efdb","cloud-lock-open":"efda","cloud-off":"ed3e","cloud-rain":"ea72","cloud-snow":"ea73","cloud-storm":"ea74","cloud-upload":"ea75","clover":"f1ea","clover-2":"f21e","clubs":"eff4","code":"ea77","code-minus":"ee42","code-off":"f0d0","code-plus":"ee43","coffee":"ef0e","coffee-off":"f106","coin":"eb82","coin-off":"f0d1","color-picker":"ebe6","color-picker-off":"f0d2","color-swatch":"eb61","color-swatch-off":"f0d3","column-insert-left":"ee44","column-insert-right":"ee45","columns":"eb83","columns-off":"f0d4","comet":"ec76","command":"ea78","compass":"ea79","compass-off":"f0d5","components":"efa5","components-off":"f0d6","cone":"efdd","cone-2":"efdc","confetti":"ee46","container":"ee47","container-off":"f107","contrast":"ec4e","contrast-2":"efc7","cookie":"ef0f","cookie-off":"f0d7","copy":"ea7a","copy-off":"f0d8","copyleft":"ec3d","copyleft-off":"f0d9","copyright":"ea7b","copyright-off":"f0da","corner-down-left":"ea7c","corner-down-left-double":"ee48","corner-down-right":"ea7d","corner-down-right-double":"ee49","corner-left-down":"ea7e","corner-left-down-double":"ee4a","corner-left-up":"ea7f","corner-left-up-double":"ee4b","corner-right-down":"ea80","corner-right-down-double":"ee4c","corner-right-up":"ea81","corner-right-up-double":"ee4d","corner-up-left":"ea82","corner-up-left-double":"ee4e","corner-up-right":"ea83","corner-up-right-double":"ee4f","cpu":"ef8e","cpu-2":"f075","cpu-off":"f108","crane":"ef27","crane-off":"f109","creative-commons":"efb3","creative-commons-by":"f21f","creative-commons-nc":"f220","creative-commons-nd":"f221","creative-commons-off":"f10a","creative-commons-sa":"f222","creative-commons-zero":"f223","credit-card":"ea84","credit-card-off":"ed11","cricket":"f09a","crop":"ea85","cross":"ef8f","cross-off":"f10b","crosshair":"ec3e","crown":"ed12","crown-off":"ee50","crutches":"ef5b","crutches-off":"f10c","cup":"ef28","cup-off":"f10d","curling":"efc8","curly-loop":"ecda","currency":"efa6","currency-bahraini":"ee51","currency-baht":"f08a","currency-bitcoin":"ebab","currency-cent":"ee53","currency-dinar":"ee54","currency-dirham":"ee55","currency-dogecoin":"ef4b","currency-dollar":"eb84","currency-dollar-australian":"ee56","currency-dollar-canadian":"ee57","currency-dollar-singapore":"ee58","currency-ethereum":"ee59","currency-euro":"eb85","currency-forint":"ee5a","currency-frank":"ee5b","currency-krone-czech":"ee5c","currency-krone-danish":"ee5d","currency-krone-swedish":"ee5e","currency-leu":"ee5f","currency-lira":"ee60","currency-litecoin":"ee61","currency-naira":"ee62","currency-pound":"ebac","currency-real":"ee63","currency-renminbi":"ee64","currency-ripple":"ee65","currency-riyal":"ee66","currency-rubel":"ee67","currency-rupee":"ebad","currency-shekel":"ee68","currency-taka":"ee69","currency-tugrik":"ee6a","currency-won":"ee6b","currency-yen":"ebae","currency-zloty":"ee6c","current-location":"ecef","current-location-off":"f10e","cursor-off":"f10f","cursor-text":"ee6d","cut":"ea86","dashboard":"ea87","database":"ea88","database-export":"ee6e","database-import":"ee6f","database-off":"ee70","dental":"f025","dental-off":"f110","details":"ee71","device-analytics":"ee72","device-audio-tape":"ee73","device-cctv":"ee74","device-computer-camera":"ee76","device-computer-camera-off":"ee75","device-desktop":"ea89","device-desktop-analytics":"ee77","device-desktop-off":"ee78","device-floppy":"eb62","device-gamepad":"eb63","device-gamepad-2":"f1d2","device-heart-monitor":"f060","device-laptop":"eb64","device-laptop-off":"f061","device-mobile":"ea8a","device-mobile-charging":"f224","device-mobile-message":"ee79","device-mobile-off":"f062","device-mobile-rotated":"ecdb","device-mobile-vibration":"eb86","device-nintendo":"f026","device-nintendo-off":"f111","device-speaker":"ea8b","device-speaker-off":"f112","device-tablet":"ea8c","device-tablet-off":"f063","device-tv":"ea8d","device-tv-off":"f064","device-tv-old":"f1d3","device-watch":"ebf9","device-watch-off":"f065","device-watch-stats":"ef7d","device-watch-stats-2":"ef7c","devices":"eb87","devices-2":"ed29","devices-off":"f066","devices-pc":"ee7a","devices-pc-off":"f113","dialpad":"f067","dialpad-off":"f114","diamond":"eb65","diamond-off":"f115","diamonds":"eff5","dice":"eb66","dice-1":"f08b","dice-2":"f08c","dice-3":"f08d","dice-4":"f08e","dice-5":"f08f","dice-6":"f090","dimensions":"ee7b","direction":"ebfb","direction-horizontal":"ebfa","direction-sign":"f1f7","directions":"ea8e","directions-off":"f116","disabled":"ea8f","disabled-2":"ebaf","disabled-off":"f117","disc":"ea90","disc-off":"f118","discount":"ebbd","discount-2":"ee7c","discount-check":"f1f8","divide":"ed5c","dna":"ee7d","dna-2":"ef5c","dna-2-off":"f119","dna-off":"f11a","dog-bowl":"ef29","door":"ef4e","door-enter":"ef4c","door-exit":"ef4d","door-off":"f11b","dots":"ea95","dots-circle-horizontal":"ea91","dots-diagonal":"ea93","dots-diagonal-2":"ea92","dots-vertical":"ea94","download":"ea96","download-off":"f11c","drag-drop":"eb89","drag-drop-2":"eb88","drone":"ed79","drone-off":"ee7e","drop-circle":"efde","droplet":"ea97","droplet-filled":"ee80","droplet-filled-2":"ee7f","droplet-half":"ee82","droplet-half-2":"ee81","droplet-off":"ee83","ear":"ebce","ear-off":"ee84","edit":"ea98","edit-circle":"ee85","edit-circle-off":"f11d","edit-off":"f11e","egg":"eb8a","egg-off":"f11f","elevator":"efdf","emergency-bed":"ef5d","emphasis":"ebcf","engine":"ef7e","engine-off":"f120","equal":"ee87","equal-not":"ee86","eraser":"eb8b","eraser-off":"f121","error-404":"f027","error-404-off":"f122","exchange":"ebe7","exchange-off":"f123","exclamation-mark":"efb4","exclamation-mark-off":"f124","exposure":"eb8c","external-link":"ea99","external-link-off":"f125","eye":"ea9a","eye-check":"ee88","eye-off":"ecf0","eye-table":"ef5e","eyeglass":"ee8a","eyeglass-2":"ee89","eyeglass-off":"f126","face-id":"ea9b","face-id-error":"efa7","face-mask":"efb5","face-mask-off":"f127","fall":"ecb9","feather":"ee8b","feather-off":"f128","fence":"ef2a","fence-off":"f129","fidget-spinner":"f068","file":"eaa4","file-3d":"f032","file-alert":"ede6","file-analytics":"ede7","file-arrow-left":"f033","file-arrow-right":"f034","file-barcode":"f035","file-certificate":"ed4d","file-chart":"f036","file-check":"ea9c","file-code":"ebd0","file-code-2":"ede8","file-database":"f037","file-description":"f028","file-diff":"ecf1","file-digit":"efa8","file-dislike":"ed2a","file-dollar":"efe0","file-dots":"f038","file-download":"ea9d","file-euro":"efe1","file-export":"ede9","file-horizontal":"ebb0","file-import":"edea","file-info":"edec","file-invoice":"eb67","file-like":"ed2b","file-minus":"ea9e","file-music":"ea9f","file-off":"ecf2","file-pencil":"f039","file-phone":"ecdc","file-plus":"eaa0","file-power":"f03a","file-report":"eded","file-rss":"f03b","file-scissors":"f03c","file-search":"ed5d","file-settings":"f029","file-shredder":"eaa1","file-signal":"f03d","file-spreadsheet":"f03e","file-star":"f03f","file-symlink":"ed53","file-text":"eaa2","file-time":"f040","file-typography":"f041","file-unknown":"f042","file-upload":"ec91","file-vector":"f043","file-x":"eaa3","file-zip":"ed4e","files":"edef","files-off":"edee","filter":"eaa5","filter-off":"ed2c","fingerprint":"ebd1","fingerprint-off":"f12a","firetruck":"ebe8","first-aid-kit":"ef5f","fish":"ef2b","fish-hook":"f1f9","fish-off":"f12b","flag":"eaa6","flag-2":"ee8c","flag-2-off":"f12c","flag-3":"ee8d","flag-off":"f12d","flame":"ec2c","flame-off":"f12e","flare":"ee8e","flask":"ebd2","flask-2":"ef60","flask-2-off":"f12f","flask-off":"f130","flip-horizontal":"eaa7","flip-vertical":"eaa8","float-center":"ebb1","float-left":"ebb2","float-none":"ed13","float-right":"ebb3","flower":"eff6","flower-off":"f131","focus":"eb8d","focus-2":"ebd3","focus-centered":"f02a","fold":"ed56","fold-down":"ed54","fold-up":"ed55","folder":"eaad","folder-minus":"eaaa","folder-off":"ed14","folder-plus":"eaab","folder-x":"eaac","folders":"eaae","folders-off":"f133","forbid":"ebd5","forbid-2":"ebd4","forklift":"ebe9","forms":"ee8f","fountain":"f09b","fountain-off":"f134","frame":"eaaf","frame-off":"f135","free-rights":"efb6","fridge":"f1fa","friends":"eab0","friends-off":"f136","function":"f225","gas-station":"ec7d","gas-station-off":"f137","gauge":"eab1","gauge-off":"f138","gavel":"ef90","gender-agender":"f0e1","gender-androgyne":"f0e2","gender-bigender":"f0e3","gender-demiboy":"f0e4","gender-demigirl":"f0e5","gender-epicene":"f0e6","gender-female":"f0e7","gender-femme":"f0e8","gender-genderfluid":"f0e9","gender-genderless":"f0ea","gender-genderqueer":"f0eb","gender-hermaphrodite":"f0ec","gender-intergender":"f0ed","gender-male":"f0ee","gender-neutrois":"f0ef","gender-third":"f0f0","gender-transgender":"f0f1","gender-trasvesti":"f0f2","geometry":"ee90","ghost":"eb8e","gift":"eb68","git-branch":"eab2","git-commit":"eab3","git-compare":"eab4","git-fork":"eb8f","git-merge":"eab5","git-pull-request":"eab6","git-pull-request-closed":"ef7f","git-pull-request-draft":"efb7","gizmo":"f02b","glass":"eab8","glass-full":"eab7","glass-off":"ee91","globe":"eab9","globe-off":"f139","golf":"ed8c","golf-off":"f13a","gps":"ed7a","grain":"ee92","grid-dots":"eaba","grid-pattern":"efc9","grill":"efa9","grill-off":"f13b","grip-horizontal":"ec00","grip-vertical":"ec01","growth":"ee93","h-1":"ec94","h-2":"ec95","h-3":"ec96","h-4":"ec97","h-5":"ec98","h-6":"ec99","hammer":"ef91","hammer-off":"f13c","hand-click":"ef4f","hand-finger":"ee94","hand-finger-off":"f13d","hand-grab":"f091","hand-little-finger":"ee95","hand-middle-finger":"ec2d","hand-move":"ef50","hand-off":"ed15","hand-ring-finger":"ee96","hand-rock":"ee97","hand-stop":"ec2e","hand-three-fingers":"ee98","hand-two-fingers":"ee99","hanger":"ee9a","hanger-2":"f09c","hanger-off":"f13e","hash":"eabc","haze":"efaa","heading":"ee9b","heading-off":"f13f","headphones":"eabd","headphones-off":"ed1d","headset":"eb90","health-recognition":"f1fb","heart":"eabe","heart-broken":"ecba","heart-handshake":"f0f3","heart-minus":"f140","heart-off":"f141","heart-plus":"f142","heart-rate-monitor":"ef61","heartbeat":"ef92","helicopter":"ed8e","helicopter-landing":"ed8d","helmet":"efca","helmet-off":"f143","help":"eabf","hexagon":"ec02","hexagon-off":"ee9c","hexagons":"f09d","hierarchy":"ee9e","hierarchy-2":"ee9d","highlight":"ef3f","highlight-off":"f144","history":"ebea","history-toggle":"f1fc","home":"eac1","home-2":"eac0","home-off":"f145","hotel-service":"ef80","hourglass":"ef93","hourglass-empty":"f146","hourglass-high":"f092","hourglass-low":"f093","hourglass-off":"f147","ice-cream":"eac2","ice-cream-2":"ee9f","ice-cream-off":"f148","ice-skating":"efcb","icons":"f1d4","id":"eac3","id-badge":"eff7","id-badge-2":"f076","id-off":"f149","inbox":"eac4","inbox-off":"f14a","indent-decrease":"eb91","indent-increase":"eb92","infinity":"eb69","info-circle":"eac5","info-square":"eac6","italic":"eb93","jewish-star":"f1d5","jump-rope":"ed8f","karate":"ed32","kayak":"f1d6","kering":"efb8","key":"eac7","key-off":"f14b","keyboard":"ebd6","keyboard-hide":"ec7e","keyboard-off":"eea0","keyboard-show":"ec7f","ladder":"efe2","ladder-off":"f14c","lamp":"efab","lamp-2":"f09e","lamp-off":"f14d","language":"ebbe","language-hiragana":"ef77","language-katakana":"ef78","language-off":"f14e","lasso":"efac","lasso-off":"f14f","layers-difference":"eac8","layers-intersect":"eac9","layers-intersect-2":"eff8","layers-linked":"eea1","layers-off":"f150","layers-subtract":"eaca","layers-union":"eacb","layout":"eadb","layout-2":"eacc","layout-align-bottom":"eacd","layout-align-center":"eace","layout-align-left":"eacf","layout-align-middle":"ead0","layout-align-right":"ead1","layout-align-top":"ead2","layout-board":"ef95","layout-board-split":"ef94","layout-bottombar":"ead3","layout-cards":"ec13","layout-columns":"ead4","layout-dashboard":"f02c","layout-distribute-horizontal":"ead5","layout-distribute-vertical":"ead6","layout-grid":"edba","layout-grid-add":"edb9","layout-kanban":"ec3f","layout-list":"ec14","layout-navbar":"ead7","layout-off":"f151","layout-rows":"ead8","layout-sidebar":"eada","layout-sidebar-left-collapse":"f004","layout-sidebar-left-expand":"f005","layout-sidebar-right":"ead9","layout-sidebar-right-collapse":"f006","layout-sidebar-right-expand":"f007","leaf":"ed4f","leaf-off":"f152","lego":"eadc","lemon":"ef10","lemon-2":"ef81","letter-a":"ec50","letter-b":"ec51","letter-c":"ec52","letter-case":"eea5","letter-case-lower":"eea2","letter-case-toggle":"eea3","letter-case-upper":"eea4","letter-d":"ec53","letter-e":"ec54","letter-f":"ec55","letter-g":"ec56","letter-h":"ec57","letter-i":"ec58","letter-j":"ec59","letter-k":"ec5a","letter-l":"ec5b","letter-m":"ec5c","letter-n":"ec5d","letter-o":"ec5e","letter-p":"ec5f","letter-q":"ec60","letter-r":"ec61","letter-s":"ec62","letter-spacing":"eea6","letter-t":"ec63","letter-u":"ec64","letter-v":"ec65","letter-w":"ec66","letter-x":"ec67","letter-y":"ec68","letter-z":"ec69","license":"ebc0","license-off":"f153","lifebuoy":"eadd","lifebuoy-off":"f154","line":"ec40","line-dashed":"eea7","line-dotted":"eea8","line-height":"eb94","link":"eade","list":"eb6b","list-check":"eb6a","list-details":"ef40","list-numbers":"ef11","list-search":"eea9","live-photo":"eadf","live-view":"ec6b","loader":"eca3","loader-2":"f226","loader-quarter":"eca2","location":"eae0","location-off":"f155","lock":"eae2","lock-access":"eeaa","lock-off":"ed1e","lock-open":"eae1","lock-open-off":"f156","lock-square":"ef51","login":"eba7","logout":"eba8","lollipop":"efcc","lollipop-off":"f157","luggage":"efad","luggage-off":"f158","lungs":"ef62","macro":"eeab","magnet":"eae3","magnet-off":"f159","mail":"eae5","mail-fast":"f069","mail-forward":"eeac","mail-off":"f15a","mail-opened":"eae4","mailbox":"eead","mailbox-off":"f15b","man":"eae6","manual-gearbox":"ed7b","map":"eae9","map-2":"eae7","map-off":"f15c","map-pin":"eae8","map-pin-off":"ecf3","map-pins":"ed5e","map-search":"ef82","markdown":"ec41","marquee":"ec77","marquee-2":"eeae","marquee-off":"f15d","mars":"ec80","mask":"eeb0","mask-off":"eeaf","massage":"eeb1","math":"ebeb","math-avg":"f0f4","math-function":"eeb2","math-function-off":"f15e","math-max":"f0f5","math-min":"f0f6","math-symbols":"eeb3","maximize":"eaea","maximize-off":"f15f","meat":"ef12","medal":"ec78","medal-2":"efcd","medical-cross":"ec2f","medical-cross-off":"f160","medicine-syrup":"ef63","menu":"eaeb","menu-2":"ec42","message":"eaef","message-2":"eaec","message-2-code":"f012","message-2-share":"f077","message-circle":"eaed","message-circle-2":"ed3f","message-circle-off":"ed40","message-code":"f013","message-dots":"eaee","message-language":"efae","message-off":"ed41","message-plus":"ec9a","message-report":"ec9b","message-share":"f078","messages":"eb6c","messages-off":"ed42","meteor":"f1fd","microphone":"eaf0","microphone-2":"ef2c","microphone-off":"ed16","microscope":"ef64","military-award":"f079","military-rank":"efcf","milk":"ef13","minimize":"eaf1","minus":"eaf2","minus-vertical":"eeb4","mist":"ec30","mood-boy":"ed2d","mood-confuzed":"eaf3","mood-crazy-happy":"ed90","mood-cry":"ecbb","mood-empty":"eeb5","mood-happy":"eaf4","mood-kid":"ec03","mood-nervous":"ef96","mood-neutral":"eaf5","mood-off":"f161","mood-sad":"eaf6","mood-smile":"eaf7","mood-suprised":"ec04","mood-tongue":"eb95","moon":"eaf8","moon-2":"ece6","moon-off":"f162","moon-stars":"ece7","moped":"ecbc","motorbike":"eeb6","mountain":"ef97","mouse":"eaf9","mouse-2":"f1d7","mouse-off":"f163","movie":"eafa","movie-off":"f164","mug":"eafb","mug-off":"f165","multiplier-0-5x":"ef41","multiplier-1-5x":"ef42","multiplier-1x":"ef43","multiplier-2x":"ef44","mushroom":"ef14","music":"eafc","music-off":"f166","network":"f09f","new-section":"ebc1","news":"eafd","news-off":"f167","nfc":"eeb7","nfc-off":"f168","no-copyright":"efb9","no-creative-commons":"efba","no-derivatives":"efbb","north-star":"f014","note":"eb6d","note-off":"f169","notebook":"eb96","notes":"eb6e","notes-off":"f16a","notification":"eafe","notification-off":"f16b","number":"f1fe","number-0":"edf0","number-1":"edf1","number-2":"edf2","number-3":"edf3","number-4":"edf4","number-5":"edf5","number-6":"edf6","number-7":"edf7","number-8":"edf8","number-9":"edf9","numbers":"f015","nurse":"ef65","octagon":"ecbd","octagon-off":"eeb8","old":"eeb9","olympics":"eeba","omega":"eb97","outlet":"ebd7","oval":"f02e","oval-vertical":"f02d","overline":"eebb","package":"eaff","package-off":"f16c","packge-export":"f07a","packge-import":"f07b","pacman":"eebc","page-break":"ec81","paint":"eb00","paint-off":"f16d","palette":"eb01","palette-off":"f16e","panorama-horizontal":"ed33","panorama-vertical":"ed34","paper-bag":"f02f","paper-bag-off":"f16f","paperclip":"eb02","parachute":"ed7c","parachute-off":"f170","parentheses":"ebd8","parentheses-off":"f171","parking":"eb03","parking-off":"f172","paw":"eff9","peace":"ecbe","pencil":"eb04","pencil-minus":"f1eb","pencil-off":"f173","pencil-plus":"f1ec","pennant":"ed7d","pennant-2":"f06a","pennant-off":"f174","pentagon":"efe3","pepper":"ef15","pepper-off":"f175","percentage":"ecf4","perspective":"eebd","perspective-off":"f176","phone":"eb09","phone-call":"eb05","phone-calling":"ec43","phone-check":"ec05","phone-incoming":"eb06","phone-off":"ecf5","phone-outgoing":"eb07","phone-pause":"eb08","phone-plus":"ec06","phone-x":"ec07","photo":"eb0a","photo-off":"ecf6","physotherapist":"eebe","picture-in-picture":"ed35","picture-in-picture-off":"ed43","picture-in-picture-on":"ed44","picture-in-picture-top":"efe4","pig":"ef52","pig-off":"f177","pill":"ec44","pill-off":"f178","pills":"ef66","pin":"ec9c","pinned":"ed60","pinned-off":"ed5f","pizza":"edbb","pizza-off":"f179","plane":"eb6f","plane-arrival":"eb99","plane-departure":"eb9a","plane-inflight":"ef98","plane-off":"f17a","plane-tilt":"f1ed","planet":"ec08","planet-off":"f17b","plant":"ed50","plant-2":"ed7e","plant-2-off":"f17c","plant-off":"f17d","play-card":"eebf","play-card-off":"f17e","player-eject":"efbc","player-pause":"ed45","player-play":"ed46","player-record":"ed47","player-skip-back":"ed48","player-skip-forward":"ed49","player-stop":"ed4a","player-track-next":"ed4b","player-track-prev":"ed4c","playlist":"eec0","playlist-add":"f008","playlist-off":"f17f","playlist-x":"f009","plug":"ebd9","plug-connected":"f00a","plug-connected-x":"f0a0","plug-off":"f180","plug-x":"f0a1","plus":"eb0b","podium":"f1d8","point":"eb0c","point-off":"f181","pokeball":"eec1","polaroid":"eec2","polygon":"efd0","polygon-off":"f182","pool":"ed91","power":"eb0d","pray":"ecbf","premium-rights":"efbd","prescription":"ef99","presentation":"eb70","presentation-analytics":"eec3","presentation-off":"f183","printer":"eb0e","printer-off":"f184","prison":"ef79","prompt":"eb0f","propeller":"eec4","propeller-off":"f185","puzzle":"eb10","puzzle-2":"ef83","puzzle-off":"f186","pyramid":"eec5","pyramid-off":"f187","qrcode":"eb11","question-mark":"ec9d","quote":"efbe","quote-off":"f188","radar":"f017","radar-2":"f016","radio":"ef2d","radioactive":"ecc0","radioactive-off":"f189","radius-bottom-left":"eec6","radius-bottom-right":"eec7","radius-top-left":"eec8","radius-top-right":"eec9","rainbow":"edbc","rainbow-off":"f18a","receipt":"edfd","receipt-2":"edfa","receipt-off":"edfb","receipt-refund":"edfc","receipt-tax":"edbd","recharging":"eeca","record-mail":"eb12","record-mail-off":"f18b","rectangle":"ed37","rectangle-vertical":"ed36","recycle":"eb9b","recycle-off":"f18c","refresh":"eb13","refresh-alert":"ed57","refresh-dot":"efbf","refresh-off":"f18d","registered":"eb14","relation-many-to-many":"ed7f","relation-one-to-many":"ed80","relation-one-to-one":"ed81","repeat":"eb72","repeat-off":"f18e","repeat-once":"eb71","replace":"ebc7","report":"eece","report-analytics":"eecb","report-medical":"eecc","report-money":"eecd","report-off":"f18f","report-search":"ef84","resize":"eecf","ripple":"ed82","ripple-off":"f190","road":"f018","road-off":"f191","road-sign":"ecdd","robot":"f00b","robot-off":"f192","rocket":"ec45","rocket-off":"f193","roller-skating":"efd1","rollercoaster":"f0a2","rotate":"eb16","rotate-2":"ebb4","rotate-360":"ef85","rotate-clockwise":"eb15","rotate-clockwise-2":"ebb5","rotate-dot":"efe5","rotate-rectangle":"ec15","route":"eb17","route-off":"f194","router":"eb18","row-insert-bottom":"eed0","row-insert-top":"eed1","rss":"eb19","ruler":"eb1a","ruler-2":"eed2","ruler-2-off":"f195","ruler-off":"f196","run":"ec82","sailboat":"ec83","salt":"ef16","satellite":"eed3","satellite-off":"f197","sausage":"ef17","scale":"ebc2","scale-off":"f198","scale-outline":"ef53","scale-outline-off":"f199","scan":"ebc8","scan-eye":"f1ff","schema":"f200","school":"ecf7","school-off":"f19a","scissors":"eb1b","scissors-off":"f19b","scooter":"ec6c","scooter-electric":"ecc1","screen-share":"ed18","screen-share-off":"ed17","screenshot":"f201","scribble":"f0a3","scuba-mask":"eed4","search":"eb1c","search-off":"f19c","section":"eed5","section-sign":"f019","seeding":"ed51","seeding-off":"f19d","select":"ec9e","selector":"eb1d","send":"eb1e","separator":"ebda","separator-horizontal":"ec79","separator-vertical":"ec7a","server":"eb1f","server-2":"f07c","server-off":"f19e","servicemark":"ec09","settings":"eb20","settings-automation":"eed6","settings-off":"f19f","shadow":"eed8","shadow-off":"eed7","shape":"eb9c","shape-2":"eed9","shape-3":"eeda","shape-off":"f1a0","share":"eb21","share-off":"f1a1","shield":"eb24","shield-check":"eb22","shield-checkered":"ef9a","shield-chevron":"ef9b","shield-lock":"ed58","shield-off":"ecf8","shield-x":"eb23","ship":"ec84","shirt":"ec0a","shirt-off":"f1a2","shoe":"efd2","shoe-off":"f1a4","shopping-cart":"eb25","shopping-cart-discount":"eedb","shopping-cart-off":"eedc","shopping-cart-plus":"eedd","shopping-cart-x":"eede","shovel":"f1d9","shredder":"eedf","sign-left":"f06b","sign-right":"f06c","signal-3g":"f1ee","signal-4g":"f1ef","signal-5g":"f1f0","signature":"eee0","signature-off":"f1a5","sitemap":"eb9d","sitemap-off":"f1a6","skateboard":"ecc2","sleigh":"ef9c","slice":"ebdb","slideshow":"ebc9","smart-home":"ecde","smart-home-off":"f1a7","smoking":"ecc4","smoking-no":"ecc3","snowflake":"ec0b","snowflake-off":"f1a8","soccer-field":"ed92","social":"ebec","social-off":"f1a9","sock":"eee1","sofa":"efaf","sort-ascending":"eb26","sort-ascending-2":"eee2","sort-ascending-letters":"ef18","sort-ascending-numbers":"ef19","sort-descending":"eb27","sort-descending-2":"eee3","sort-descending-letters":"ef1a","sort-descending-numbers":"ef1b","soup":"ef2e","space":"ec0c","space-off":"f1aa","spacing-horizontal":"ef54","spacing-vertical":"ef55","spade":"effa","speakerphone":"ed61","speedboat":"ed93","sport-billard":"eee4","spy":"f227","square":"eb2c","square-0":"eee5","square-1":"eee6","square-2":"eee7","square-3":"eee8","square-4":"eee9","square-5":"eeea","square-6":"eeeb","square-7":"eeec","square-8":"eeed","square-9":"eeee","square-asterisk":"f01a","square-check":"eb28","square-dot":"ed59","square-forbid":"ed5b","square-forbid-2":"ed5a","square-half":"effb","square-minus":"eb29","square-off":"eeef","square-plus":"eb2a","square-root":"eef1","square-root-2":"eef0","square-rotated":"ecdf","square-rotated-forbid":"f01c","square-rotated-forbid-2":"f01b","square-rotated-off":"eef2","square-toggle":"eef4","square-toggle-horizontal":"eef3","square-x":"eb2b","squares-diagonal":"eef5","squares-filled":"eef6","stack":"eb2d","stack-2":"eef7","stack-3":"ef9d","stairs":"eca6","stairs-down":"eca4","stairs-up":"eca5","star":"eb2e","star-half":"ed19","star-off":"ed62","stars":"ed38","steering-wheel":"ec7b","step-into":"ece0","step-out":"ece1","stethoscope":"edbe","sticker":"eb2f","strikethrough":"eb9e","submarine":"ed94","subscript":"eb9f","subtask":"ec9f","sum":"eb73","sum-off":"f1ab","sun":"eb30","sun-off":"ed63","sunrise":"ef1c","sunset":"ec31","superscript":"eba0","swimming":"ec92","switch":"eb33","switch-2":"edbf","switch-3":"edc0","switch-horizontal":"eb31","switch-vertical":"eb32","sword":"f030","sword-off":"f1ac","swords":"f132","table":"eba1","table-export":"eef8","table-import":"eef9","table-off":"eefa","tag":"eb34","tag-off":"efc0","tags":"ef86","tags-off":"efc1","tallymark-1":"ec46","tallymark-2":"ec47","tallymark-3":"ec48","tallymark-4":"ec49","tallymarks":"ec4a","tank":"ed95","target":"eb35","target-off":"f1ad","telescope":"f07d","telescope-off":"f1ae","temperature":"eb38","temperature-celsius":"eb36","temperature-fahrenheit":"eb37","temperature-minus":"ebed","temperature-off":"f1af","temperature-plus":"ebee","template":"eb39","template-off":"f1b0","tent":"eefb","terminal":"ebdc","terminal-2":"ebef","test-pipe":"eb3a","test-pipe-2":"f0a4","test-pipe-off":"f1b1","text-decrease":"f202","text-direction-ltr":"eefc","text-direction-rtl":"eefd","text-increase":"f203","text-recognition":"f204","text-resize":"ef87","text-wrap":"ebdd","text-wrap-disabled":"eca7","thermometer":"ef67","thumb-down":"eb3b","thumb-up":"eb3c","ticket":"eb3d","ticket-off":"f1b2","tie":"f07e","tilt-shift":"eefe","tilt-shift-off":"f1b3","timeline":"f031","tir":"ebf0","toggle-left":"eb3e","toggle-right":"eb3f","toilet-paper":"efd3","toilet-paper-off":"f1b4","tool":"eb40","tools":"ebca","tools-kitchen":"ed64","tools-kitchen-2":"eeff","tools-kitchen-2-off":"f1b5","tools-kitchen-off":"f1b6","tools-off":"f1b7","tornado":"ece2","tournament":"ecd0","track":"ef00","tractor":"ec0d","trademark":"ec0e","traffic-cone":"ec0f","traffic-cone-off":"f1b8","traffic-lights":"ed39","traffic-lights-off":"f1b9","train":"ed96","transfer-in":"ef2f","transfer-out":"ef30","trash":"eb41","trash-off":"ed65","trash-x":"ef88","tree":"ef01","trees":"ec10","trending-down":"eb42","trending-down-2":"edc1","trending-down-3":"edc2","trending-up":"eb43","trending-up-2":"edc3","trending-up-3":"edc4","triangle":"eb44","triangle-inverted":"f01d","triangle-off":"ef02","triangle-square-circle":"ece8","triangles":"f0a5","trident":"ecc5","trophy":"eb45","truck":"ebc4","truck-delivery":"ec4b","truck-loading":"f1da","truck-off":"ef03","truck-return":"ec4c","typography":"ebc5","typography-off":"f1ba","umbrella":"ebf1","umbrella-off":"f1bb","underline":"eba2","unlink":"eb46","upload":"eb47","urgent":"eb48","usb":"f00c","user":"eb4d","user-check":"eb49","user-circle":"ef68","user-exclamation":"ec12","user-minus":"eb4a","user-off":"ecf9","user-plus":"eb4b","user-search":"ef89","user-x":"eb4c","users":"ebf2","vaccine":"ef04","vaccine-bottle":"ef69","vaccine-off":"f1bc","variable":"ef05","variable-off":"f1bd","vector":"eca9","vector-bezier":"ef1d","vector-bezier-2":"f1a3","vector-off":"f1be","vector-triangle":"eca8","vector-triangle-off":"f1bf","venus":"ec86","versions":"ed52","versions-off":"f1c0","video":"ed22","video-minus":"ed1f","video-off":"ed20","video-plus":"ed21","view-360":"ed84","view-360-off":"f1c1","viewfinder":"eb4e","viewfinder-off":"f1c2","viewport-narrow":"ebf3","viewport-wide":"ebf4","vinyl":"f00d","virus":"eb74","virus-off":"ed66","virus-search":"ed67","vocabulary":"ef1e","volume":"eb51","volume-2":"eb4f","volume-3":"eb50","volume-off":"f1c3","walk":"ec87","wall":"ef7a","wallet":"eb75","wallet-off":"f1c4","wallpaper":"ef56","wallpaper-off":"f1c5","wand":"ebcb","wand-off":"f1c6","wave-saw-tool":"ecd3","wave-sine":"ecd4","wave-square":"ecd5","webhook":"f01e","wheelchair":"f1db","wifi":"eb52","wifi-0":"eba3","wifi-1":"eba4","wifi-2":"eba5","wifi-off":"ecfa","wind":"ec34","wind-off":"f1c7","windmill":"ed85","windmill-off":"f1c8","window":"ef06","window-maximize":"f1f1","window-minimize":"f1f2","window-off":"f1c9","windsock":"f06d","wiper":"ecab","wiper-wash":"ecaa","woman":"eb53","world":"eb54","world-download":"ef8a","world-latitude":"ed2e","world-longitude":"ed2f","world-off":"f1ca","world-upload":"ef8b","wrecking-ball":"ed97","writing":"ef08","writing-off":"f1cb","writing-sign":"ef07","writing-sign-off":"f1cc","x":"eb55","yin-yang":"ec35","yoga":"f01f","zodiac-aquarius":"ecac","zodiac-aries":"ecad","zodiac-cancer":"ecae","zodiac-capricorn":"ecaf","zodiac-gemini":"ecb0","zodiac-leo":"ecb1","zodiac-libra":"ecb2","zodiac-pisces":"ecb3","zodiac-sagittarius":"ecb4","zodiac-scorpio":"ecb5","zodiac-taurus":"ecb6","zodiac-virgo":"ecb7","zoom-cancel":"ec4d","zoom-check":"ef09","zoom-code":"f07f","zoom-exclamation":"f080","zoom-in":"eb56","zoom-in-area":"f1dc","zoom-money":"ef0a","zoom-out":"eb57","zoom-out-area":"f1dd","zoom-pan":"f1de","zoom-question":"edeb","zzz":"f228"} \ No newline at end of file diff --git a/.build/iconfont.html b/.build/iconfont.html deleted file mode 100644 index 90260298..00000000 --- a/.build/iconfont.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - Tabler Icons - version <%= v %> - - - - - - - -
-
-

- Tabler Icons -

-

version <%= v %>

-
- - - -
-
- <% glyphs.forEach(function(glyph) { %> -
- - <%= glyph.name %> -
- ti ti-<%= glyph.name %>
- \<%= glyph.unicode[0].codePointAt(0).toString(16) %> -
-
- <% }) %> -
-
-
- - - - - diff --git a/.build/iconfont.scss b/.build/iconfont.scss deleted file mode 100644 index c74e1a7e..00000000 --- a/.build/iconfont.scss +++ /dev/null @@ -1,51 +0,0 @@ -/*! - * Tabler Icons <%= v %> by tabler - https://tabler.io - * License - https://github.com/tabler/tabler-icons/blob/master/LICENSE - */ -$ti-font-family: '<%= fileName %>' !default; -$ti-font-path: 'fonts' !default; -$ti-font-display: null !default; -$ti-prefix: 'ti' !default; - -@font-face { - font-family: $ti-font-family; - font-style: normal; - font-weight: 400; - font-display: $ti-font-display; - src: url('#{$ti-font-path}/<%= fileName %>.eot'); - src: url('#{$ti-font-path}/<%= fileName %>.eot?#iefix') format('embedded-opentype'), - url('#{$ti-font-path}/<%= fileName %>.woff2') format('woff2'), - url('#{$ti-font-path}/<%= fileName %>.woff') format('woff'), - url('#{$ti-font-path}/<%= fileName %>.ttf') format('truetype'), - url("#{$ti-font-path}/<%= fileName %>.svg\##{$ti-font-family}") format("svg"); -} - -@media screen and (-webkit-min-device-pixel-ratio:0) { - @font-face { - font-family: $ti-font-family; - src: url("#{$ti-font-path}/<%= fileName %>.svg\##{$ti-font-family}") format("svg"); - } -} - -.#{$ti-prefix} { - font-family: $ti-font-family !important; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - - /* Better Font Rendering */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -@function unicode($str) { - @return unquote("\"")+unquote(str-insert($str, "\\", 1))+unquote("\"") -} - -<% glyphs.forEach(function(glyph) { %> -$ti-icon-<%= glyph.name %>: unicode('<%= glyph.unicode[0].codePointAt(0).toString(16) %>');<% }); %> - -<% glyphs.forEach(function(glyph) { %> -.#{$ti-prefix}-<%= glyph.name %>:before { content: $ti-icon-<%= glyph.name %>; }<% }); %> diff --git a/.build/svgr-template.js b/.build/svgr-template.js deleted file mode 100644 index c8c41384..00000000 --- a/.build/svgr-template.js +++ /dev/null @@ -1,12 +0,0 @@ -function template( - { template }, - opts, - { imports, componentName, props, jsx, exports }, -) { - return template.ast` - ${imports} - function ${componentName}({ size = 24, color = "currentColor", stroke = 2, ...props }) { return (${jsx}); } - ${exports} - `; -} -module.exports = template; diff --git a/.gitignore b/.gitignore index ad294d10..b6b947e6 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,6 @@ node_modules/ .jekyll-cache/ package-lock.json Gemfile.lock -packages/* packages-zip/* .DS_Store icons-outlined/ diff --git a/build/helpers.js b/build/helpers.js new file mode 100644 index 00000000..b064a87e --- /dev/null +++ b/build/helpers.js @@ -0,0 +1,20 @@ +const path = require('path'); + +const camelize = function (str) { + str = str.replace(/-/g, ' ') + + return str.replace(/(?:^\w|[A-Z]|\b\w)/g, function (word, index) { + return word.toUpperCase() + }).replace(/\s+/g, '') +} + +exports.componentName = function (file) { + file = path.basename(file, '.svg') + file = camelize(`Icon ${file}`) + + return file +} + +exports.optimizeSvgCode = function (svgCode) { + return svgCode.replace(/]+>/, '') +} diff --git a/build/iconfont-unicode.json b/build/iconfont-unicode.json new file mode 100644 index 00000000..d71894f7 --- /dev/null +++ b/build/iconfont-unicode.json @@ -0,0 +1 @@ +{"2fa":"eca0","3d-cube-sphere":"ecd7","3d-rotate":"f020","a-b":"ec36","a-b-off":"f0a6","abacus":"f05c","access-point":"ed1b","access-point-off":"ed1a","accessible":"eba9","accessible-off":"f0a7","activity":"ed23","activity-heartbeat":"f0db","ad":"ea02","ad-2":"ef1f","address-book":"f021","adjustments":"ea03","adjustments-alt":"ec37","adjustments-horizontal":"ec38","adjustments-off":"f0a8","aerial-lift":"edfe","affiliate":"edff","alarm":"ea04","alarm-off":"f0a9","album":"f022","alert-circle":"ea05","alert-octagon":"ecc6","alert-triangle":"ea06","alien":"ebde","align-center":"ea07","align-justified":"ea08","align-left":"ea09","align-right":"ea0a","alphabet-cyrillic":"f1df","alphabet-greek":"f1e0","alphabet-latin":"f1e1","ambulance":"ebf5","anchor":"eb76","anchor-off":"f0f7","angle":"ef20","ankh":"f1cd","antenna":"f094","antenna-bars-1":"ecc7","antenna-bars-2":"ecc8","antenna-bars-3":"ecc9","antenna-bars-4":"ecca","antenna-bars-5":"eccb","antenna-bars-off":"f0aa","aperture":"eb58","api":"effd","api-app":"effc","api-app-off":"f0ab","api-off":"f0f8","app-window":"efe6","apple":"ef21","apps":"ebb6","apps-off":"f0ac","archive":"ea0b","archive-off":"f0ad","armchair":"ef9e","armchair-2":"efe7","arrow-autofit-content":"ef31","arrow-autofit-down":"ef32","arrow-autofit-height":"ef33","arrow-autofit-left":"ef34","arrow-autofit-right":"ef35","arrow-autofit-up":"ef36","arrow-autofit-width":"ef37","arrow-back":"ea0c","arrow-back-up":"eb77","arrow-bar-down":"ea0d","arrow-bar-left":"ea0e","arrow-bar-right":"ea0f","arrow-bar-to-down":"ec88","arrow-bar-to-left":"ec89","arrow-bar-to-right":"ec8a","arrow-bar-to-up":"ec8b","arrow-bar-up":"ea10","arrow-bear-left":"f045","arrow-bear-left-2":"f044","arrow-bear-right":"f047","arrow-bear-right-2":"f046","arrow-big-down":"edda","arrow-big-down-line":"efe8","arrow-big-down-lines":"efe9","arrow-big-left":"eddb","arrow-big-left-line":"efea","arrow-big-left-lines":"efeb","arrow-big-right":"eddc","arrow-big-right-line":"efec","arrow-big-right-lines":"efed","arrow-big-top":"eddd","arrow-big-up-line":"efee","arrow-big-up-lines":"efef","arrow-bottom-bar":"ed98","arrow-bottom-circle":"ed99","arrow-bottom-square":"ed9a","arrow-bottom-tail":"ed9b","arrow-curve-left":"f048","arrow-curve-right":"f049","arrow-down":"ea16","arrow-down-circle":"ea11","arrow-down-left":"ea13","arrow-down-left-circle":"ea12","arrow-down-right":"ea15","arrow-down-right-circle":"ea14","arrow-fork":"f04a","arrow-forward":"ea17","arrow-forward-up":"eb78","arrow-left":"ea19","arrow-left-bar":"ed9c","arrow-left-circle":"ea18","arrow-left-right":"f04b","arrow-left-square":"ed9d","arrow-left-tail":"ed9e","arrow-loop-left":"ed9f","arrow-loop-left-2":"f04c","arrow-loop-right":"eda0","arrow-loop-right-2":"f04d","arrow-merge":"f04e","arrow-narrow-down":"ea1a","arrow-narrow-left":"ea1b","arrow-narrow-right":"ea1c","arrow-narrow-up":"ea1d","arrow-ramp-left":"ed3c","arrow-ramp-left-2":"f04f","arrow-ramp-left-3":"f050","arrow-ramp-right":"ed3d","arrow-ramp-right-2":"f051","arrow-ramp-right-3":"f052","arrow-right":"ea1f","arrow-right-bar":"eda1","arrow-right-circle":"ea1e","arrow-right-square":"eda2","arrow-right-tail":"eda3","arrow-rotary-first-left":"f053","arrow-rotary-first-right":"f054","arrow-rotary-last-left":"f055","arrow-rotary-last-right":"f056","arrow-rotary-left":"f057","arrow-rotary-right":"f058","arrow-rotary-straight":"f059","arrow-sharp-turn-left":"f05a","arrow-sharp-turn-right":"f05b","arrow-top-bar":"eda4","arrow-top-circle":"eda5","arrow-top-square":"eda6","arrow-top-tail":"eda7","arrow-up":"ea25","arrow-up-circle":"ea20","arrow-up-left":"ea22","arrow-up-left-circle":"ea21","arrow-up-right":"ea24","arrow-up-right-circle":"ea23","arrow-wave-left-down":"eda8","arrow-wave-left-up":"eda9","arrow-wave-right-down":"edaa","arrow-wave-right-up":"edab","arrows-cross":"effe","arrows-diagonal":"ea27","arrows-diagonal-2":"ea26","arrows-diagonal-minimize":"ef39","arrows-diagonal-minimize-2":"ef38","arrows-double-ne-sw":"edde","arrows-double-nw-se":"eddf","arrows-double-se-nw":"ede0","arrows-double-sw-ne":"ede1","arrows-down":"edad","arrows-down-up":"edac","arrows-exchange":"f1f4","arrows-exchange-2":"f1f3","arrows-horizontal":"eb59","arrows-join":"edaf","arrows-join-2":"edae","arrows-left":"edb1","arrows-left-down":"ee00","arrows-left-right":"edb0","arrows-maximize":"ea28","arrows-minimize":"ea29","arrows-random":"f095","arrows-right":"edb3","arrows-right-down":"ee01","arrows-right-left":"edb2","arrows-shuffle":"f000","arrows-shuffle-2":"efff","arrows-sort":"eb5a","arrows-split":"edb5","arrows-split-2":"edb4","arrows-up":"edb7","arrows-up-down":"edb6","arrows-up-left":"ee02","arrows-up-right":"ee03","arrows-vertical":"eb5b","artboard":"ea2a","artboard-off":"f0ae","article":"f1e2","aspect-ratio":"ed30","aspect-ratio-off":"f0af","asset":"f1ce","asterisk":"efd5","asterisk-simple":"efd4","at":"ea2b","at-off":"f0b0","atom":"eb79","atom-2":"ebdf","atom-off":"f0f9","augmented-reality":"f023","award":"ea2c","award-off":"f0fa","axe":"ef9f","axis-x":"ef45","axis-y":"ef46","baby-carriage":"f05d","backhoe":"ed86","backpack":"ef47","backspace":"ea2d","badge":"efc2","badge-off":"f0fb","badges":"efc3","badges-off":"f0fc","ball-american-football":"ee04","ball-baseball":"efa0","ball-basketball":"ec28","ball-bowling":"ec29","ball-football":"ee06","ball-football-off":"ee05","ball-tennis":"ec2a","ball-volleyball":"ec2b","ballon":"ef3a","ballon-off":"f0fd","ballpen":"f06e","ballpen-off":"f0b1","ban":"ea2e","bandage":"eb7a","barbell":"eff0","barbell-off":"f0b2","barcode":"ebc6","barcode-off":"f0b3","barrel":"f0b4","barrel-off":"f0fe","barrier-block":"f00e","barrier-block-off":"f0b5","baseline":"f024","basket":"ebe1","basket-off":"f0b6","bath":"ef48","bath-off":"f0ff","battery":"ea34","battery-1":"ea2f","battery-2":"ea30","battery-3":"ea31","battery-4":"ea32","battery-automotive":"ee07","battery-charging":"ea33","battery-charging-2":"ef3b","battery-eco":"ef3c","battery-off":"ed1c","beach":"ef3d","beach-off":"f0b7","bed":"eb5c","bed-off":"f100","beer":"efa1","beer-off":"f101","bell":"ea35","bell-minus":"ede2","bell-off":"ece9","bell-plus":"ede3","bell-ringing":"ed07","bell-ringing-2":"ede4","bell-school":"f05e","bell-x":"ede5","bell-z":"eff1","bible":"efc4","bike":"ea36","bike-off":"f0b8","binary":"ee08","biohazard":"ecb8","biohazard-off":"f0b9","blockquote":"ee09","bluetooth":"ea37","bluetooth-connected":"ecea","bluetooth-off":"eceb","bluetooth-x":"f081","blur":"ef8c","bold":"eb7b","bold-off":"f0ba","bolt":"ea38","bolt-off":"ecec","bone":"edb8","bone-off":"f0bb","book":"ea39","book-2":"efc5","book-download":"f070","book-off":"f0bc","book-upload":"f071","bookmark":"ea3a","bookmark-off":"eced","bookmarks":"ed08","bookmarks-off":"f0bd","books":"eff2","books-off":"f0be","border-all":"ea3b","border-bottom":"ea3c","border-horizontal":"ea3d","border-inner":"ea3e","border-left":"ea3f","border-none":"ea40","border-outer":"ea41","border-radius":"eb7c","border-right":"ea42","border-style":"ee0a","border-style-2":"ef22","border-top":"ea43","border-vertical":"ea44","bottle":"ef0b","bow":"f096","box":"ea45","box-margin":"ee0b","box-model":"ee0c","box-model-2":"ef23","box-multiple":"ee17","box-multiple-0":"ee0d","box-multiple-1":"ee0e","box-multiple-2":"ee0f","box-multiple-3":"ee10","box-multiple-4":"ee11","box-multiple-5":"ee12","box-multiple-6":"ee13","box-multiple-7":"ee14","box-multiple-8":"ee15","box-multiple-9":"ee16","box-off":"f102","box-padding":"ee18","braces":"ebcc","braces-off":"f0bf","brackets":"ebcd","brackets-contain":"f1e5","brackets-contain-end":"f1e3","brackets-contain-start":"f1e4","brackets-off":"f0c0","brand-adobe":"f0dc","brand-airbnb":"ed68","brand-airtable":"ef6a","brand-amongus":"f205","brand-android":"ec16","brand-angular":"ef6b","brand-apple":"ec17","brand-apple-arcade":"ed69","brand-apple-podcast":"f1e6","brand-appstore":"ed24","brand-asana":"edc5","brand-badoo":"f206","brand-bandcamp":"f207","brand-beats":"f208","brand-behance":"ec6e","brand-bing":"edc6","brand-bitbucket":"edc7","brand-booking":"edc8","brand-bootstrap":"ef3e","brand-chrome":"ec18","brand-codepen":"ec6f","brand-codesandbox":"ed6a","brand-coinbase":"f209","brand-comedy-central":"f217","brand-css3":"ed6b","brand-cucumber":"ef6c","brand-debian":"ef57","brand-deviantart":"ecfb","brand-discord":"ece3","brand-disney":"f20a","brand-disqus":"edc9","brand-docker":"edca","brand-doctrine":"ef6d","brand-dribbble":"ec19","brand-edge":"ecfc","brand-facebook":"ec1a","brand-figma":"ec93","brand-finder":"f218","brand-firebase":"ef6e","brand-firefox":"ecfd","brand-flickr":"ecfe","brand-flipboard":"f20b","brand-foursquare":"ecff","brand-framer":"ec1b","brand-git":"ef6f","brand-github":"ec1c","brand-gitlab":"ec1d","brand-gmail":"efa2","brand-google":"ec1f","brand-google-analytics":"edcb","brand-google-drive":"ec1e","brand-google-photos":"f20c","brand-google-play":"ed25","brand-gravatar":"edcc","brand-grindr":"f20d","brand-hipchat":"edcd","brand-html5":"ed6c","brand-instagram":"ec20","brand-intercom":"f1cf","brand-javascript":"ef0c","brand-kickstarter":"edce","brand-kotlin":"ed6d","brand-lastfm":"f001","brand-linkedin":"ec8c","brand-linktree":"f1e7","brand-loom":"ef70","brand-mastercard":"ef49","brand-medium":"ec70","brand-mercedes":"f072","brand-messenger":"ec71","brand-meta":"efb0","brand-monday":"f219","brand-netbeans":"ef71","brand-netflix":"edcf","brand-nextjs":"f0dd","brand-notion":"ef7b","brand-nuxt":"f0de","brand-nytimes":"ef8d","brand-open-source":"edd0","brand-opera":"ec21","brand-pagekit":"edd1","brand-patreon":"edd2","brand-paypal":"ec22","brand-php":"ef72","brand-pinterest":"ec8d","brand-pocket":"ed00","brand-producthunt":"edd3","brand-pushover":"f20e","brand-python":"ed01","brand-react-native":"ef73","brand-reddit":"ec8e","brand-safari":"ec23","brand-sass":"edd4","brand-sentry":"edd5","brand-shazam":"edd6","brand-sketch":"ec24","brand-skype":"ed02","brand-slack":"ec72","brand-snapchat":"ec25","brand-soundcloud":"ed6e","brand-spotify":"ed03","brand-stackoverflow":"ef58","brand-steam":"ed6f","brand-stripe":"edd7","brand-sublime-text":"ef74","brand-svelte":"f0df","brand-tabler":"ec8f","brand-tailwind":"eca1","brand-telegram":"ec26","brand-tidal":"ed70","brand-tiktok":"ec73","brand-tinder":"ed71","brand-tripadvisor":"f002","brand-tumblr":"ed04","brand-twitch":"ed05","brand-twitter":"ec27","brand-uber":"ef75","brand-ubuntu":"ef59","brand-unsplash":"edd8","brand-vercel":"ef24","brand-vimeo":"ed06","brand-vinted":"f20f","brand-visual-studio":"ef76","brand-vivaldi":"f210","brand-vk":"ed72","brand-vue":"f0e0","brand-walmart":"f211","brand-whatsapp":"ec74","brand-windows":"ecd8","brand-wish":"f212","brand-xing":"f21a","brand-yahoo":"ed73","brand-yatse":"f213","brand-ycombinator":"edd9","brand-youtube":"ec90","brand-youtube-kids":"f214","brand-zoom":"f215","brand-zwift":"f216","bread":"efa3","briefcase":"ea46","brightness":"eb7f","brightness-2":"ee19","brightness-down":"eb7d","brightness-half":"ee1a","brightness-up":"eb7e","broadcast":"f1e9","broadcast-off":"f1e8","browser":"ebb7","browser-check":"efd6","browser-off":"f0c1","browser-plus":"efd7","browser-x":"efd8","brush":"ebb8","brush-off":"f0c2","bucket":"ea47","bucket-off":"f103","bug":"ea48","bug-off":"f0c3","building":"ea4f","building-arch":"ea49","building-bank":"ebe2","building-bridge":"ea4b","building-bridge-2":"ea4a","building-carousel":"ed87","building-castle":"ed88","building-church":"ea4c","building-community":"ebf6","building-cottage":"ee1b","building-factory":"ee1c","building-factory-2":"f082","building-fortress":"ed89","building-hospital":"ea4d","building-lighthouse":"ed8a","building-monument":"ed26","building-pavilon":"ebf7","building-skyscraper":"ec39","building-store":"ea4e","building-warehouse":"ebe3","bulb":"ea51","bulb-off":"ea50","bulldozer":"ee1d","bus":"ebe4","businessplan":"ee1e","butterfly":"efd9","c-sharp":"f003","cactus":"f21b","cake":"f00f","cake-off":"f104","calculator":"eb80","calculator-off":"f0c4","calendar":"ea53","calendar-event":"ea52","calendar-minus":"ebb9","calendar-off":"ee1f","calendar-plus":"ebba","calendar-stats":"ee20","calendar-time":"ee21","camera":"ea54","camera-minus":"ec3a","camera-off":"ecee","camera-plus":"ec3b","camera-rotate":"ee22","camera-selfie":"ee23","candle":"efc6","candy":"ef0d","candy-off":"f0c5","capture":"ec3c","capture-off":"f0c6","car":"ebbb","car-crane":"ef25","car-crash":"efa4","car-off":"f0c7","caravan":"ec7c","cardboards":"ed74","cardboards-off":"f0c8","caret-down":"eb5d","caret-left":"eb5e","caret-right":"eb5f","caret-up":"eb60","carrot":"f21c","cash":"ea55","cash-banknote":"ee25","cash-banknote-off":"ee24","cash-off":"f105","cast":"ea56","cast-off":"f0c9","category":"f1f6","category-2":"f1f5","ce":"ed75","ce-off":"f0ca","cell":"f05f","cell-signal-1":"f083","cell-signal-2":"f084","cell-signal-3":"f085","cell-signal-4":"f086","cell-signal-5":"f087","cell-signal-off":"f088","certificate":"ed76","certificate-2":"f073","certificate-2-off":"f0cb","certificate-off":"f0cc","charging-pile":"ee26","chart-arcs":"ee28","chart-arcs-3":"ee27","chart-area":"ea58","chart-area-line":"ea57","chart-arrows":"ee2a","chart-arrows-vertical":"ee29","chart-bar":"ea59","chart-bubble":"ec75","chart-candle":"ea5a","chart-circles":"ee2b","chart-donut":"ea5b","chart-donut-2":"ee2c","chart-donut-3":"ee2d","chart-donut-4":"ee2e","chart-dots":"ee2f","chart-dots-2":"f097","chart-dots-3":"f098","chart-infographic":"ee30","chart-line":"ea5c","chart-pie":"ea5d","chart-pie-2":"ee31","chart-pie-3":"ee32","chart-pie-4":"ee33","chart-radar":"ed77","check":"ea5e","checkbox":"eba6","checklist":"f074","checks":"ebaa","checkup-list":"ef5a","cheese":"ef26","chef-hat":"f21d","chevron-down":"ea5f","chevron-down-left":"ed09","chevron-down-right":"ed0a","chevron-left":"ea60","chevron-right":"ea61","chevron-up":"ea62","chevron-up-left":"ed0b","chevron-up-right":"ed0c","chevrons-down":"ea63","chevrons-down-left":"ed0d","chevrons-down-right":"ed0e","chevrons-left":"ea64","chevrons-right":"ea65","chevrons-up":"ea66","chevrons-up-left":"ed0f","chevrons-up-right":"ed10","christmas-tree":"ed78","circle":"ea6b","circle-0":"ee34","circle-1":"ee35","circle-2":"ee36","circle-3":"ee37","circle-4":"ee38","circle-5":"ee39","circle-6":"ee3a","circle-7":"ee3b","circle-8":"ee3c","circle-9":"ee3d","circle-check":"ea67","circle-dashed":"ed27","circle-dot":"efb1","circle-dotted":"ed28","circle-half":"ee3f","circle-half-2":"eff3","circle-half-vertical":"ee3e","circle-minus":"ea68","circle-off":"ee40","circle-plus":"ea69","circle-rectangle":"f010","circle-rectangle-off":"f0cd","circle-square":"ece4","circle-triangle":"f011","circle-x":"ea6a","circles":"ece5","clear-all":"ee41","clear-formatting":"ebe5","click":"ebbc","clipboard":"ea6f","clipboard-check":"ea6c","clipboard-list":"ea6d","clipboard-off":"f0ce","clipboard-plus":"efb2","clipboard-text":"f089","clipboard-x":"ea6e","clock":"ea70","clock-2":"f099","clock-off":"f0cf","cloud":"ea76","cloud-computing":"f1d0","cloud-data-connection":"f1d1","cloud-download":"ea71","cloud-fog":"ecd9","cloud-lock":"efdb","cloud-lock-open":"efda","cloud-off":"ed3e","cloud-rain":"ea72","cloud-snow":"ea73","cloud-storm":"ea74","cloud-upload":"ea75","clover":"f1ea","clover-2":"f21e","clubs":"eff4","code":"ea77","code-minus":"ee42","code-off":"f0d0","code-plus":"ee43","coffee":"ef0e","coffee-off":"f106","coin":"eb82","coin-off":"f0d1","color-picker":"ebe6","color-picker-off":"f0d2","color-swatch":"eb61","color-swatch-off":"f0d3","column-insert-left":"ee44","column-insert-right":"ee45","columns":"eb83","columns-off":"f0d4","comet":"ec76","command":"ea78","compass":"ea79","compass-off":"f0d5","components":"efa5","components-off":"f0d6","cone":"efdd","cone-2":"efdc","confetti":"ee46","container":"ee47","container-off":"f107","contrast":"ec4e","contrast-2":"efc7","cookie":"ef0f","cookie-off":"f0d7","copy":"ea7a","copy-off":"f0d8","copyleft":"ec3d","copyleft-off":"f0d9","copyright":"ea7b","copyright-off":"f0da","corner-down-left":"ea7c","corner-down-left-double":"ee48","corner-down-right":"ea7d","corner-down-right-double":"ee49","corner-left-down":"ea7e","corner-left-down-double":"ee4a","corner-left-up":"ea7f","corner-left-up-double":"ee4b","corner-right-down":"ea80","corner-right-down-double":"ee4c","corner-right-up":"ea81","corner-right-up-double":"ee4d","corner-up-left":"ea82","corner-up-left-double":"ee4e","corner-up-right":"ea83","corner-up-right-double":"ee4f","cpu":"ef8e","cpu-2":"f075","cpu-off":"f108","crane":"ef27","crane-off":"f109","creative-commons":"efb3","creative-commons-by":"f21f","creative-commons-nc":"f220","creative-commons-nd":"f221","creative-commons-off":"f10a","creative-commons-sa":"f222","creative-commons-zero":"f223","credit-card":"ea84","credit-card-off":"ed11","cricket":"f09a","crop":"ea85","cross":"ef8f","cross-off":"f10b","crosshair":"ec3e","crown":"ed12","crown-off":"ee50","crutches":"ef5b","crutches-off":"f10c","cup":"ef28","cup-off":"f10d","curling":"efc8","curly-loop":"ecda","currency":"efa6","currency-bahraini":"ee51","currency-baht":"f08a","currency-bitcoin":"ebab","currency-cent":"ee53","currency-dinar":"ee54","currency-dirham":"ee55","currency-dogecoin":"ef4b","currency-dollar":"eb84","currency-dollar-australian":"ee56","currency-dollar-canadian":"ee57","currency-dollar-singapore":"ee58","currency-ethereum":"ee59","currency-euro":"eb85","currency-forint":"ee5a","currency-frank":"ee5b","currency-krone-czech":"ee5c","currency-krone-danish":"ee5d","currency-krone-swedish":"ee5e","currency-leu":"ee5f","currency-lira":"ee60","currency-litecoin":"ee61","currency-naira":"ee62","currency-pound":"ebac","currency-real":"ee63","currency-renminbi":"ee64","currency-ripple":"ee65","currency-riyal":"ee66","currency-rubel":"ee67","currency-rupee":"ebad","currency-shekel":"ee68","currency-taka":"ee69","currency-tugrik":"ee6a","currency-won":"ee6b","currency-yen":"ebae","currency-zloty":"ee6c","current-location":"ecef","current-location-off":"f10e","cursor-off":"f10f","cursor-text":"ee6d","cut":"ea86","dashboard":"ea87","database":"ea88","database-export":"ee6e","database-import":"ee6f","database-off":"ee70","dental":"f025","dental-off":"f110","details":"ee71","device-analytics":"ee72","device-audio-tape":"ee73","device-cctv":"ee74","device-computer-camera":"ee76","device-computer-camera-off":"ee75","device-desktop":"ea89","device-desktop-analytics":"ee77","device-desktop-off":"ee78","device-floppy":"eb62","device-gamepad":"eb63","device-gamepad-2":"f1d2","device-heart-monitor":"f060","device-laptop":"eb64","device-laptop-off":"f061","device-mobile":"ea8a","device-mobile-charging":"f224","device-mobile-message":"ee79","device-mobile-off":"f062","device-mobile-rotated":"ecdb","device-mobile-vibration":"eb86","device-nintendo":"f026","device-nintendo-off":"f111","device-speaker":"ea8b","device-speaker-off":"f112","device-tablet":"ea8c","device-tablet-off":"f063","device-tv":"ea8d","device-tv-off":"f064","device-tv-old":"f1d3","device-watch":"ebf9","device-watch-off":"f065","device-watch-stats":"ef7d","device-watch-stats-2":"ef7c","devices":"eb87","devices-2":"ed29","devices-off":"f066","devices-pc":"ee7a","devices-pc-off":"f113","dialpad":"f067","dialpad-off":"f114","diamond":"eb65","diamond-off":"f115","diamonds":"eff5","dice":"eb66","dice-1":"f08b","dice-2":"f08c","dice-3":"f08d","dice-4":"f08e","dice-5":"f08f","dice-6":"f090","dimensions":"ee7b","direction":"ebfb","direction-horizontal":"ebfa","direction-sign":"f1f7","directions":"ea8e","directions-off":"f116","disabled":"ea8f","disabled-2":"ebaf","disabled-off":"f117","disc":"ea90","disc-off":"f118","discount":"ebbd","discount-2":"ee7c","discount-check":"f1f8","divide":"ed5c","dna":"ee7d","dna-2":"ef5c","dna-2-off":"f119","dna-off":"f11a","dog-bowl":"ef29","door":"ef4e","door-enter":"ef4c","door-exit":"ef4d","door-off":"f11b","dots":"ea95","dots-circle-horizontal":"ea91","dots-diagonal":"ea93","dots-diagonal-2":"ea92","dots-vertical":"ea94","download":"ea96","download-off":"f11c","drag-drop":"eb89","drag-drop-2":"eb88","drone":"ed79","drone-off":"ee7e","drop-circle":"efde","droplet":"ea97","droplet-filled":"ee80","droplet-filled-2":"ee7f","droplet-half":"ee82","droplet-half-2":"ee81","droplet-off":"ee83","ear":"ebce","ear-off":"ee84","edit":"ea98","edit-circle":"ee85","edit-circle-off":"f11d","edit-off":"f11e","egg":"eb8a","egg-off":"f11f","elevator":"efdf","emergency-bed":"ef5d","emphasis":"ebcf","engine":"ef7e","engine-off":"f120","equal":"ee87","equal-not":"ee86","eraser":"eb8b","eraser-off":"f121","error-404":"f027","error-404-off":"f122","exchange":"ebe7","exchange-off":"f123","exclamation-mark":"efb4","exclamation-mark-off":"f124","exposure":"eb8c","external-link":"ea99","external-link-off":"f125","eye":"ea9a","eye-check":"ee88","eye-off":"ecf0","eye-table":"ef5e","eyeglass":"ee8a","eyeglass-2":"ee89","eyeglass-off":"f126","face-id":"ea9b","face-id-error":"efa7","face-mask":"efb5","face-mask-off":"f127","fall":"ecb9","feather":"ee8b","feather-off":"f128","fence":"ef2a","fence-off":"f129","fidget-spinner":"f068","file":"eaa4","file-3d":"f032","file-alert":"ede6","file-analytics":"ede7","file-arrow-left":"f033","file-arrow-right":"f034","file-barcode":"f035","file-certificate":"ed4d","file-chart":"f036","file-check":"ea9c","file-code":"ebd0","file-code-2":"ede8","file-database":"f037","file-description":"f028","file-diff":"ecf1","file-digit":"efa8","file-dislike":"ed2a","file-dollar":"efe0","file-dots":"f038","file-download":"ea9d","file-euro":"efe1","file-export":"ede9","file-horizontal":"ebb0","file-import":"edea","file-info":"edec","file-invoice":"eb67","file-like":"ed2b","file-minus":"ea9e","file-music":"ea9f","file-off":"ecf2","file-pencil":"f039","file-phone":"ecdc","file-plus":"eaa0","file-power":"f03a","file-report":"eded","file-rss":"f03b","file-scissors":"f03c","file-search":"ed5d","file-settings":"f029","file-shredder":"eaa1","file-signal":"f03d","file-spreadsheet":"f03e","file-star":"f03f","file-symlink":"ed53","file-text":"eaa2","file-time":"f040","file-typography":"f041","file-unknown":"f042","file-upload":"ec91","file-vector":"f043","file-x":"eaa3","file-zip":"ed4e","files":"edef","files-off":"edee","filter":"eaa5","filter-off":"ed2c","fingerprint":"ebd1","fingerprint-off":"f12a","firetruck":"ebe8","first-aid-kit":"ef5f","fish":"ef2b","fish-hook":"f1f9","fish-off":"f12b","flag":"eaa6","flag-2":"ee8c","flag-2-off":"f12c","flag-3":"ee8d","flag-off":"f12d","flame":"ec2c","flame-off":"f12e","flare":"ee8e","flask":"ebd2","flask-2":"ef60","flask-2-off":"f12f","flask-off":"f130","flip-horizontal":"eaa7","flip-vertical":"eaa8","float-center":"ebb1","float-left":"ebb2","float-none":"ed13","float-right":"ebb3","flower":"eff6","flower-off":"f131","focus":"eb8d","focus-2":"ebd3","focus-centered":"f02a","fold":"ed56","fold-down":"ed54","fold-up":"ed55","folder":"eaad","folder-minus":"eaaa","folder-off":"ed14","folder-plus":"eaab","folder-x":"eaac","folders":"eaae","folders-off":"f133","forbid":"ebd5","forbid-2":"ebd4","forklift":"ebe9","forms":"ee8f","fountain":"f09b","fountain-off":"f134","frame":"eaaf","frame-off":"f135","free-rights":"efb6","fridge":"f1fa","friends":"eab0","friends-off":"f136","function":"f225","gas-station":"ec7d","gas-station-off":"f137","gauge":"eab1","gauge-off":"f138","gavel":"ef90","gender-agender":"f0e1","gender-androgyne":"f0e2","gender-bigender":"f0e3","gender-demiboy":"f0e4","gender-demigirl":"f0e5","gender-epicene":"f0e6","gender-female":"f0e7","gender-femme":"f0e8","gender-genderfluid":"f0e9","gender-genderless":"f0ea","gender-genderqueer":"f0eb","gender-hermaphrodite":"f0ec","gender-intergender":"f0ed","gender-male":"f0ee","gender-neutrois":"f0ef","gender-third":"f0f0","gender-transgender":"f0f1","gender-trasvesti":"f0f2","geometry":"ee90","ghost":"eb8e","gift":"eb68","git-branch":"eab2","git-commit":"eab3","git-compare":"eab4","git-fork":"eb8f","git-merge":"eab5","git-pull-request":"eab6","git-pull-request-closed":"ef7f","git-pull-request-draft":"efb7","gizmo":"f02b","glass":"eab8","glass-full":"eab7","glass-off":"ee91","globe":"eab9","globe-off":"f139","golf":"ed8c","golf-off":"f13a","gps":"ed7a","grain":"ee92","grid-dots":"eaba","grid-pattern":"efc9","grill":"efa9","grill-off":"f13b","grip-horizontal":"ec00","grip-vertical":"ec01","growth":"ee93","h-1":"ec94","h-2":"ec95","h-3":"ec96","h-4":"ec97","h-5":"ec98","h-6":"ec99","hammer":"ef91","hammer-off":"f13c","hand-click":"ef4f","hand-finger":"ee94","hand-finger-off":"f13d","hand-grab":"f091","hand-little-finger":"ee95","hand-middle-finger":"ec2d","hand-move":"ef50","hand-off":"ed15","hand-ring-finger":"ee96","hand-rock":"ee97","hand-stop":"ec2e","hand-three-fingers":"ee98","hand-two-fingers":"ee99","hanger":"ee9a","hanger-2":"f09c","hanger-off":"f13e","hash":"eabc","haze":"efaa","heading":"ee9b","heading-off":"f13f","headphones":"eabd","headphones-off":"ed1d","headset":"eb90","health-recognition":"f1fb","heart":"eabe","heart-broken":"ecba","heart-handshake":"f0f3","heart-minus":"f140","heart-off":"f141","heart-plus":"f142","heart-rate-monitor":"ef61","heartbeat":"ef92","helicopter":"ed8e","helicopter-landing":"ed8d","helmet":"efca","helmet-off":"f143","help":"eabf","hexagon":"ec02","hexagon-off":"ee9c","hexagons":"f09d","hierarchy":"ee9e","hierarchy-2":"ee9d","highlight":"ef3f","highlight-off":"f144","history":"ebea","history-toggle":"f1fc","home":"eac1","home-2":"eac0","home-off":"f145","hotel-service":"ef80","hourglass":"ef93","hourglass-empty":"f146","hourglass-high":"f092","hourglass-low":"f093","hourglass-off":"f147","ice-cream":"eac2","ice-cream-2":"ee9f","ice-cream-off":"f148","ice-skating":"efcb","icons":"f1d4","id":"eac3","id-badge":"eff7","id-badge-2":"f076","id-off":"f149","inbox":"eac4","inbox-off":"f14a","indent-decrease":"eb91","indent-increase":"eb92","infinity":"eb69","info-circle":"eac5","info-square":"eac6","italic":"eb93","jewish-star":"f1d5","jump-rope":"ed8f","karate":"ed32","kayak":"f1d6","kering":"efb8","key":"eac7","key-off":"f14b","keyboard":"ebd6","keyboard-hide":"ec7e","keyboard-off":"eea0","keyboard-show":"ec7f","ladder":"efe2","ladder-off":"f14c","lamp":"efab","lamp-2":"f09e","lamp-off":"f14d","language":"ebbe","language-hiragana":"ef77","language-katakana":"ef78","language-off":"f14e","lasso":"efac","lasso-off":"f14f","layers-difference":"eac8","layers-intersect":"eac9","layers-intersect-2":"eff8","layers-linked":"eea1","layers-off":"f150","layers-subtract":"eaca","layers-union":"eacb","layout":"eadb","layout-2":"eacc","layout-align-bottom":"eacd","layout-align-center":"eace","layout-align-left":"eacf","layout-align-middle":"ead0","layout-align-right":"ead1","layout-align-top":"ead2","layout-board":"ef95","layout-board-split":"ef94","layout-bottombar":"ead3","layout-cards":"ec13","layout-columns":"ead4","layout-dashboard":"f02c","layout-distribute-horizontal":"ead5","layout-distribute-vertical":"ead6","layout-grid":"edba","layout-grid-add":"edb9","layout-kanban":"ec3f","layout-list":"ec14","layout-navbar":"ead7","layout-off":"f151","layout-rows":"ead8","layout-sidebar":"eada","layout-sidebar-left-collapse":"f004","layout-sidebar-left-expand":"f005","layout-sidebar-right":"ead9","layout-sidebar-right-collapse":"f006","layout-sidebar-right-expand":"f007","leaf":"ed4f","leaf-off":"f152","lego":"eadc","lemon":"ef10","lemon-2":"ef81","letter-a":"ec50","letter-b":"ec51","letter-c":"ec52","letter-case":"eea5","letter-case-lower":"eea2","letter-case-toggle":"eea3","letter-case-upper":"eea4","letter-d":"ec53","letter-e":"ec54","letter-f":"ec55","letter-g":"ec56","letter-h":"ec57","letter-i":"ec58","letter-j":"ec59","letter-k":"ec5a","letter-l":"ec5b","letter-m":"ec5c","letter-n":"ec5d","letter-o":"ec5e","letter-p":"ec5f","letter-q":"ec60","letter-r":"ec61","letter-s":"ec62","letter-spacing":"eea6","letter-t":"ec63","letter-u":"ec64","letter-v":"ec65","letter-w":"ec66","letter-x":"ec67","letter-y":"ec68","letter-z":"ec69","license":"ebc0","license-off":"f153","lifebuoy":"eadd","lifebuoy-off":"f154","line":"ec40","line-dashed":"eea7","line-dotted":"eea8","line-height":"eb94","link":"eade","list":"eb6b","list-check":"eb6a","list-details":"ef40","list-numbers":"ef11","list-search":"eea9","live-photo":"eadf","live-view":"ec6b","loader":"eca3","loader-2":"f226","loader-quarter":"eca2","location":"eae0","location-off":"f155","lock":"eae2","lock-access":"eeaa","lock-off":"ed1e","lock-open":"eae1","lock-open-off":"f156","lock-square":"ef51","login":"eba7","logout":"eba8","lollipop":"efcc","lollipop-off":"f157","luggage":"efad","luggage-off":"f158","lungs":"ef62","macro":"eeab","magnet":"eae3","magnet-off":"f159","mail":"eae5","mail-fast":"f069","mail-forward":"eeac","mail-off":"f15a","mail-opened":"eae4","mailbox":"eead","mailbox-off":"f15b","man":"eae6","manual-gearbox":"ed7b","map":"eae9","map-2":"eae7","map-off":"f15c","map-pin":"eae8","map-pin-off":"ecf3","map-pins":"ed5e","map-search":"ef82","markdown":"ec41","marquee":"ec77","marquee-2":"eeae","marquee-off":"f15d","mars":"ec80","mask":"eeb0","mask-off":"eeaf","massage":"eeb1","math":"ebeb","math-avg":"f0f4","math-function":"eeb2","math-function-off":"f15e","math-max":"f0f5","math-min":"f0f6","math-symbols":"eeb3","maximize":"eaea","maximize-off":"f15f","meat":"ef12","medal":"ec78","medal-2":"efcd","medical-cross":"ec2f","medical-cross-off":"f160","medicine-syrup":"ef63","menu":"eaeb","menu-2":"ec42","message":"eaef","message-2":"eaec","message-2-code":"f012","message-2-share":"f077","message-circle":"eaed","message-circle-2":"ed3f","message-circle-off":"ed40","message-code":"f013","message-dots":"eaee","message-language":"efae","message-off":"ed41","message-plus":"ec9a","message-report":"ec9b","message-share":"f078","messages":"eb6c","messages-off":"ed42","meteor":"f1fd","microphone":"eaf0","microphone-2":"ef2c","microphone-off":"ed16","microscope":"ef64","military-award":"f079","military-rank":"efcf","milk":"ef13","minimize":"eaf1","minus":"eaf2","minus-vertical":"eeb4","mist":"ec30","mood-boy":"ed2d","mood-confuzed":"eaf3","mood-crazy-happy":"ed90","mood-cry":"ecbb","mood-empty":"eeb5","mood-happy":"eaf4","mood-kid":"ec03","mood-nervous":"ef96","mood-neutral":"eaf5","mood-off":"f161","mood-sad":"eaf6","mood-smile":"eaf7","mood-suprised":"ec04","mood-tongue":"eb95","moon":"eaf8","moon-2":"ece6","moon-off":"f162","moon-stars":"ece7","moped":"ecbc","motorbike":"eeb6","mountain":"ef97","mouse":"eaf9","mouse-2":"f1d7","mouse-off":"f163","movie":"eafa","movie-off":"f164","mug":"eafb","mug-off":"f165","multiplier-0-5x":"ef41","multiplier-1-5x":"ef42","multiplier-1x":"ef43","multiplier-2x":"ef44","mushroom":"ef14","music":"eafc","music-off":"f166","network":"f09f","new-section":"ebc1","news":"eafd","news-off":"f167","nfc":"eeb7","nfc-off":"f168","no-copyright":"efb9","no-creative-commons":"efba","no-derivatives":"efbb","north-star":"f014","note":"eb6d","note-off":"f169","notebook":"eb96","notes":"eb6e","notes-off":"f16a","notification":"eafe","notification-off":"f16b","number":"f1fe","number-0":"edf0","number-1":"edf1","number-2":"edf2","number-3":"edf3","number-4":"edf4","number-5":"edf5","number-6":"edf6","number-7":"edf7","number-8":"edf8","number-9":"edf9","numbers":"f015","nurse":"ef65","octagon":"ecbd","octagon-off":"eeb8","old":"eeb9","olympics":"eeba","omega":"eb97","outlet":"ebd7","oval":"f02e","oval-vertical":"f02d","overline":"eebb","package":"eaff","package-off":"f16c","packge-export":"f07a","packge-import":"f07b","pacman":"eebc","page-break":"ec81","paint":"eb00","paint-off":"f16d","palette":"eb01","palette-off":"f16e","panorama-horizontal":"ed33","panorama-vertical":"ed34","paper-bag":"f02f","paper-bag-off":"f16f","paperclip":"eb02","parachute":"ed7c","parachute-off":"f170","parentheses":"ebd8","parentheses-off":"f171","parking":"eb03","parking-off":"f172","paw":"eff9","peace":"ecbe","pencil":"eb04","pencil-minus":"f1eb","pencil-off":"f173","pencil-plus":"f1ec","pennant":"ed7d","pennant-2":"f06a","pennant-off":"f174","pentagon":"efe3","pepper":"ef15","pepper-off":"f175","percentage":"ecf4","perspective":"eebd","perspective-off":"f176","phone":"eb09","phone-call":"eb05","phone-calling":"ec43","phone-check":"ec05","phone-incoming":"eb06","phone-off":"ecf5","phone-outgoing":"eb07","phone-pause":"eb08","phone-plus":"ec06","phone-x":"ec07","photo":"eb0a","photo-off":"ecf6","physotherapist":"eebe","picture-in-picture":"ed35","picture-in-picture-off":"ed43","picture-in-picture-on":"ed44","picture-in-picture-top":"efe4","pig":"ef52","pig-off":"f177","pill":"ec44","pill-off":"f178","pills":"ef66","pin":"ec9c","pinned":"ed60","pinned-off":"ed5f","pizza":"edbb","pizza-off":"f179","plane":"eb6f","plane-arrival":"eb99","plane-departure":"eb9a","plane-inflight":"ef98","plane-off":"f17a","plane-tilt":"f1ed","planet":"ec08","planet-off":"f17b","plant":"ed50","plant-2":"ed7e","plant-2-off":"f17c","plant-off":"f17d","play-card":"eebf","play-card-off":"f17e","player-eject":"efbc","player-pause":"ed45","player-play":"ed46","player-record":"ed47","player-skip-back":"ed48","player-skip-forward":"ed49","player-stop":"ed4a","player-track-next":"ed4b","player-track-prev":"ed4c","playlist":"eec0","playlist-add":"f008","playlist-off":"f17f","playlist-x":"f009","plug":"ebd9","plug-connected":"f00a","plug-connected-x":"f0a0","plug-off":"f180","plug-x":"f0a1","plus":"eb0b","podium":"f1d8","point":"eb0c","point-off":"f181","pokeball":"eec1","polaroid":"eec2","polygon":"efd0","polygon-off":"f182","pool":"ed91","power":"eb0d","pray":"ecbf","premium-rights":"efbd","prescription":"ef99","presentation":"eb70","presentation-analytics":"eec3","presentation-off":"f183","printer":"eb0e","printer-off":"f184","prison":"ef79","prompt":"eb0f","propeller":"eec4","propeller-off":"f185","puzzle":"eb10","puzzle-2":"ef83","puzzle-off":"f186","pyramid":"eec5","pyramid-off":"f187","qrcode":"eb11","question-mark":"ec9d","quote":"efbe","quote-off":"f188","radar":"f017","radar-2":"f016","radio":"ef2d","radioactive":"ecc0","radioactive-off":"f189","radius-bottom-left":"eec6","radius-bottom-right":"eec7","radius-top-left":"eec8","radius-top-right":"eec9","rainbow":"edbc","rainbow-off":"f18a","receipt":"edfd","receipt-2":"edfa","receipt-off":"edfb","receipt-refund":"edfc","receipt-tax":"edbd","recharging":"eeca","record-mail":"eb12","record-mail-off":"f18b","rectangle":"ed37","rectangle-vertical":"ed36","recycle":"eb9b","recycle-off":"f18c","refresh":"eb13","refresh-alert":"ed57","refresh-dot":"efbf","refresh-off":"f18d","registered":"eb14","relation-many-to-many":"ed7f","relation-one-to-many":"ed80","relation-one-to-one":"ed81","repeat":"eb72","repeat-off":"f18e","repeat-once":"eb71","replace":"ebc7","report":"eece","report-analytics":"eecb","report-medical":"eecc","report-money":"eecd","report-off":"f18f","report-search":"ef84","resize":"eecf","ripple":"ed82","ripple-off":"f190","road":"f018","road-off":"f191","road-sign":"ecdd","robot":"f00b","robot-off":"f192","rocket":"ec45","rocket-off":"f193","roller-skating":"efd1","rollercoaster":"f0a2","rotate":"eb16","rotate-2":"ebb4","rotate-360":"ef85","rotate-clockwise":"eb15","rotate-clockwise-2":"ebb5","rotate-dot":"efe5","rotate-rectangle":"ec15","route":"eb17","route-off":"f194","router":"eb18","row-insert-bottom":"eed0","row-insert-top":"eed1","rss":"eb19","ruler":"eb1a","ruler-2":"eed2","ruler-2-off":"f195","ruler-off":"f196","run":"ec82","sailboat":"ec83","salt":"ef16","satellite":"eed3","satellite-off":"f197","sausage":"ef17","scale":"ebc2","scale-off":"f198","scale-outline":"ef53","scale-outline-off":"f199","scan":"ebc8","scan-eye":"f1ff","schema":"f200","school":"ecf7","school-off":"f19a","scissors":"eb1b","scissors-off":"f19b","scooter":"ec6c","scooter-electric":"ecc1","screen-share":"ed18","screen-share-off":"ed17","screenshot":"f201","scribble":"f0a3","scuba-mask":"eed4","search":"eb1c","search-off":"f19c","section":"eed5","section-sign":"f019","seeding":"ed51","seeding-off":"f19d","select":"ec9e","selector":"eb1d","send":"eb1e","separator":"ebda","separator-horizontal":"ec79","separator-vertical":"ec7a","server":"eb1f","server-2":"f07c","server-off":"f19e","servicemark":"ec09","settings":"eb20","settings-automation":"eed6","settings-off":"f19f","shadow":"eed8","shadow-off":"eed7","shape":"eb9c","shape-2":"eed9","shape-3":"eeda","shape-off":"f1a0","share":"eb21","share-off":"f1a1","shield":"eb24","shield-check":"eb22","shield-checkered":"ef9a","shield-chevron":"ef9b","shield-lock":"ed58","shield-off":"ecf8","shield-x":"eb23","ship":"ec84","shirt":"ec0a","shirt-off":"f1a2","shoe":"efd2","shoe-off":"f1a4","shopping-cart":"eb25","shopping-cart-discount":"eedb","shopping-cart-off":"eedc","shopping-cart-plus":"eedd","shopping-cart-x":"eede","shovel":"f1d9","shredder":"eedf","sign-left":"f06b","sign-right":"f06c","signal-3g":"f1ee","signal-4g":"f1ef","signal-5g":"f1f0","signature":"eee0","signature-off":"f1a5","sitemap":"eb9d","sitemap-off":"f1a6","skateboard":"ecc2","sleigh":"ef9c","slice":"ebdb","slideshow":"ebc9","smart-home":"ecde","smart-home-off":"f1a7","smoking":"ecc4","smoking-no":"ecc3","snowflake":"ec0b","snowflake-off":"f1a8","soccer-field":"ed92","social":"ebec","social-off":"f1a9","sock":"eee1","sofa":"efaf","sort-ascending":"eb26","sort-ascending-2":"eee2","sort-ascending-letters":"ef18","sort-ascending-numbers":"ef19","sort-descending":"eb27","sort-descending-2":"eee3","sort-descending-letters":"ef1a","sort-descending-numbers":"ef1b","soup":"ef2e","space":"ec0c","space-off":"f1aa","spacing-horizontal":"ef54","spacing-vertical":"ef55","spade":"effa","speakerphone":"ed61","speedboat":"ed93","sport-billard":"eee4","spy":"f227","square":"eb2c","square-0":"eee5","square-1":"eee6","square-2":"eee7","square-3":"eee8","square-4":"eee9","square-5":"eeea","square-6":"eeeb","square-7":"eeec","square-8":"eeed","square-9":"eeee","square-asterisk":"f01a","square-check":"eb28","square-dot":"ed59","square-forbid":"ed5b","square-forbid-2":"ed5a","square-half":"effb","square-minus":"eb29","square-off":"eeef","square-plus":"eb2a","square-root":"eef1","square-root-2":"eef0","square-rotated":"ecdf","square-rotated-forbid":"f01c","square-rotated-forbid-2":"f01b","square-rotated-off":"eef2","square-toggle":"eef4","square-toggle-horizontal":"eef3","square-x":"eb2b","squares-diagonal":"eef5","squares-filled":"eef6","stack":"eb2d","stack-2":"eef7","stack-3":"ef9d","stairs":"eca6","stairs-down":"eca4","stairs-up":"eca5","star":"eb2e","star-half":"ed19","star-off":"ed62","stars":"ed38","steering-wheel":"ec7b","step-into":"ece0","step-out":"ece1","stethoscope":"edbe","sticker":"eb2f","strikethrough":"eb9e","submarine":"ed94","subscript":"eb9f","subtask":"ec9f","sum":"eb73","sum-off":"f1ab","sun":"eb30","sun-off":"ed63","sunrise":"ef1c","sunset":"ec31","superscript":"eba0","swimming":"ec92","switch":"eb33","switch-2":"edbf","switch-3":"edc0","switch-horizontal":"eb31","switch-vertical":"eb32","sword":"f030","sword-off":"f1ac","swords":"f132","table":"eba1","table-export":"eef8","table-import":"eef9","table-off":"eefa","tag":"eb34","tag-off":"efc0","tags":"ef86","tags-off":"efc1","tallymark-1":"ec46","tallymark-2":"ec47","tallymark-3":"ec48","tallymark-4":"ec49","tallymarks":"ec4a","tank":"ed95","target":"eb35","target-off":"f1ad","telescope":"f07d","telescope-off":"f1ae","temperature":"eb38","temperature-celsius":"eb36","temperature-fahrenheit":"eb37","temperature-minus":"ebed","temperature-off":"f1af","temperature-plus":"ebee","template":"eb39","template-off":"f1b0","tent":"eefb","terminal":"ebdc","terminal-2":"ebef","test-pipe":"eb3a","test-pipe-2":"f0a4","test-pipe-off":"f1b1","text-decrease":"f202","text-direction-ltr":"eefc","text-direction-rtl":"eefd","text-increase":"f203","text-recognition":"f204","text-resize":"ef87","text-wrap":"ebdd","text-wrap-disabled":"eca7","thermometer":"ef67","thumb-down":"eb3b","thumb-up":"eb3c","ticket":"eb3d","ticket-off":"f1b2","tie":"f07e","tilt-shift":"eefe","tilt-shift-off":"f1b3","timeline":"f031","tir":"ebf0","toggle-left":"eb3e","toggle-right":"eb3f","toilet-paper":"efd3","toilet-paper-off":"f1b4","tool":"eb40","tools":"ebca","tools-kitchen":"ed64","tools-kitchen-2":"eeff","tools-kitchen-2-off":"f1b5","tools-kitchen-off":"f1b6","tools-off":"f1b7","tornado":"ece2","tournament":"ecd0","track":"ef00","tractor":"ec0d","trademark":"ec0e","traffic-cone":"ec0f","traffic-cone-off":"f1b8","traffic-lights":"ed39","traffic-lights-off":"f1b9","train":"ed96","transfer-in":"ef2f","transfer-out":"ef30","trash":"eb41","trash-off":"ed65","trash-x":"ef88","tree":"ef01","trees":"ec10","trending-down":"eb42","trending-down-2":"edc1","trending-down-3":"edc2","trending-up":"eb43","trending-up-2":"edc3","trending-up-3":"edc4","triangle":"eb44","triangle-inverted":"f01d","triangle-off":"ef02","triangle-square-circle":"ece8","triangles":"f0a5","trident":"ecc5","trophy":"eb45","truck":"ebc4","truck-delivery":"ec4b","truck-loading":"f1da","truck-off":"ef03","truck-return":"ec4c","typography":"ebc5","typography-off":"f1ba","umbrella":"ebf1","umbrella-off":"f1bb","underline":"eba2","unlink":"eb46","upload":"eb47","urgent":"eb48","usb":"f00c","user":"eb4d","user-check":"eb49","user-circle":"ef68","user-exclamation":"ec12","user-minus":"eb4a","user-off":"ecf9","user-plus":"eb4b","user-search":"ef89","user-x":"eb4c","users":"ebf2","vaccine":"ef04","vaccine-bottle":"ef69","vaccine-off":"f1bc","variable":"ef05","variable-off":"f1bd","vector":"eca9","vector-bezier":"ef1d","vector-bezier-2":"f1a3","vector-off":"f1be","vector-triangle":"eca8","vector-triangle-off":"f1bf","venus":"ec86","versions":"ed52","versions-off":"f1c0","video":"ed22","video-minus":"ed1f","video-off":"ed20","video-plus":"ed21","view-360":"ed84","view-360-off":"f1c1","viewfinder":"eb4e","viewfinder-off":"f1c2","viewport-narrow":"ebf3","viewport-wide":"ebf4","vinyl":"f00d","virus":"eb74","virus-off":"ed66","virus-search":"ed67","vocabulary":"ef1e","volume":"eb51","volume-2":"eb4f","volume-3":"eb50","volume-off":"f1c3","walk":"ec87","wall":"ef7a","wallet":"eb75","wallet-off":"f1c4","wallpaper":"ef56","wallpaper-off":"f1c5","wand":"ebcb","wand-off":"f1c6","wave-saw-tool":"ecd3","wave-sine":"ecd4","wave-square":"ecd5","webhook":"f01e","wheelchair":"f1db","wifi":"eb52","wifi-0":"eba3","wifi-1":"eba4","wifi-2":"eba5","wifi-off":"ecfa","wind":"ec34","wind-off":"f1c7","windmill":"ed85","windmill-off":"f1c8","window":"ef06","window-maximize":"f1f1","window-minimize":"f1f2","window-off":"f1c9","windsock":"f06d","wiper":"ecab","wiper-wash":"ecaa","woman":"eb53","world":"eb54","world-download":"ef8a","world-latitude":"ed2e","world-longitude":"ed2f","world-off":"f1ca","world-upload":"ef8b","wrecking-ball":"ed97","writing":"ef08","writing-off":"f1cb","writing-sign":"ef07","writing-sign-off":"f1cc","x":"eb55","yin-yang":"ec35","yoga":"f01f","zodiac-aquarius":"ecac","zodiac-aries":"ecad","zodiac-cancer":"ecae","zodiac-capricorn":"ecaf","zodiac-gemini":"ecb0","zodiac-leo":"ecb1","zodiac-libra":"ecb2","zodiac-pisces":"ecb3","zodiac-sagittarius":"ecb4","zodiac-scorpio":"ecb5","zodiac-taurus":"ecb6","zodiac-virgo":"ecb7","zoom-cancel":"ec4d","zoom-check":"ef09","zoom-code":"f07f","zoom-exclamation":"f080","zoom-in":"eb56","zoom-in-area":"f1dc","zoom-money":"ef0a","zoom-out":"eb57","zoom-out-area":"f1dd","zoom-pan":"f1de","zoom-question":"edeb","zzz":"f228"} \ No newline at end of file diff --git a/build/iconfont.html b/build/iconfont.html new file mode 100644 index 00000000..90260298 --- /dev/null +++ b/build/iconfont.html @@ -0,0 +1,156 @@ + + + + + + + Tabler Icons - version <%= v %> + + + + + + + +
+
+

+ Tabler Icons +

+

version <%= v %>

+
+ + + +
+
+ <% glyphs.forEach(function(glyph) { %> +
+ + <%= glyph.name %> +
+ ti ti-<%= glyph.name %>
+ \<%= glyph.unicode[0].codePointAt(0).toString(16) %> +
+
+ <% }) %> +
+
+
+ + + + + diff --git a/build/iconfont.scss b/build/iconfont.scss new file mode 100644 index 00000000..c74e1a7e --- /dev/null +++ b/build/iconfont.scss @@ -0,0 +1,51 @@ +/*! + * Tabler Icons <%= v %> by tabler - https://tabler.io + * License - https://github.com/tabler/tabler-icons/blob/master/LICENSE + */ +$ti-font-family: '<%= fileName %>' !default; +$ti-font-path: 'fonts' !default; +$ti-font-display: null !default; +$ti-prefix: 'ti' !default; + +@font-face { + font-family: $ti-font-family; + font-style: normal; + font-weight: 400; + font-display: $ti-font-display; + src: url('#{$ti-font-path}/<%= fileName %>.eot'); + src: url('#{$ti-font-path}/<%= fileName %>.eot?#iefix') format('embedded-opentype'), + url('#{$ti-font-path}/<%= fileName %>.woff2') format('woff2'), + url('#{$ti-font-path}/<%= fileName %>.woff') format('woff'), + url('#{$ti-font-path}/<%= fileName %>.ttf') format('truetype'), + url("#{$ti-font-path}/<%= fileName %>.svg\##{$ti-font-family}") format("svg"); +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: $ti-font-family; + src: url("#{$ti-font-path}/<%= fileName %>.svg\##{$ti-font-family}") format("svg"); + } +} + +.#{$ti-prefix} { + font-family: $ti-font-family !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +@function unicode($str) { + @return unquote("\"")+unquote(str-insert($str, "\\", 1))+unquote("\"") +} + +<% glyphs.forEach(function(glyph) { %> +$ti-icon-<%= glyph.name %>: unicode('<%= glyph.unicode[0].codePointAt(0).toString(16) %>');<% }); %> + +<% glyphs.forEach(function(glyph) { %> +.#{$ti-prefix}-<%= glyph.name %>:before { content: $ti-icon-<%= glyph.name %>; }<% }); %> diff --git a/build/template-react.js b/build/template-react.js new file mode 100644 index 00000000..c8c41384 --- /dev/null +++ b/build/template-react.js @@ -0,0 +1,12 @@ +function template( + { template }, + opts, + { imports, componentName, props, jsx, exports }, +) { + return template.ast` + ${imports} + function ${componentName}({ size = 24, color = "currentColor", stroke = 2, ...props }) { return (${jsx}); } + ${exports} + `; +} +module.exports = template; diff --git a/gulpfile.js b/gulpfile.js index af3a29e7..5ad8f6e3 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,785 +1,751 @@ const gulp = require('gulp'), - cp = require('child_process'), - glob = require('glob'), - fs = require('fs'), - path = require('path'), - p = require('./package.json'), - csv = require('csv-parser'), - zip = require('gulp-zip'), - svgo = require('gulp-svgo'), - outlineStroke = require('svg-outline-stroke'), - iconfont = require('gulp-iconfont'), - template = require('lodash.template'), - sass = require('node-sass'), - cleanCSS = require('clean-css'), - argv = require('minimist')(process.argv.slice(2)), - svgParse = require('parse-svg-path'), - svgpath = require('svgpath'), - svgr = require('@svgr/core').default + cp = require('child_process'), + glob = require('glob'), + fs = require('fs'), + path = require('path'), + p = require('./package.json'), + csv = require('csv-parser'), + zip = require('gulp-zip'), + svgo = require('gulp-svgo'), + outlineStroke = require('svg-outline-stroke'), + iconfont = require('gulp-iconfont'), + template = require('lodash.template'), + sass = require('node-sass'), + cleanCSS = require('clean-css'), + argv = require('minimist')(process.argv.slice(2)), + svgParse = require('parse-svg-path'), + svgpath = require('svgpath'), + svgr = require('@svgr/core').transform, + { componentName, optimizeSvgCode } = require('./build/helpers') const compileOptions = { - includeIcons: [], - strokeWidth: null, - fontForge: "fontforge" + includeIcons: [], + strokeWidth: null, + fontForge: 'fontforge' } if (fs.existsSync('./compile-options.json')) { - try { - const tempOptions = require('./compile-options.json') - if (typeof tempOptions !== "object") { - throw "Compile options file does not contain an json object" - } - - if (typeof tempOptions.includeIcons !== "undefined") { - if (!Array.isArray(tempOptions.includeIcons)) { - throw "property inludeIcons is not an array" - } - compileOptions.includeIcons = tempOptions.includeIcons - } - - if (typeof tempOptions.includeCategories !== "undefined") { - if (typeof tempOptions.includeCategories === "string") { - tempOptions.includeCategories = tempOptions.includeCategories.split(' ') - } - if (!Array.isArray(tempOptions.includeCategories)) { - throw "property includeCategories is not an array or string" - } - const tags = Object.entries(require('./tags.json')) - tempOptions.includeCategories.forEach(function (category) { - category = category.charAt(0).toUpperCase() + category.slice(1) - for (const [icon, data] of tags) { - if (data.category === category && compileOptions.includeIcons.indexOf(icon) === -1) { - compileOptions.includeIcons.push(icon) - } - } - }) - } - - if (typeof tempOptions.excludeIcons !== "undefined") { - if (!Array.isArray(tempOptions.excludeIcons)) { - throw "property excludeIcons is not an array" - } - compileOptions.includeIcons = compileOptions.includeIcons.filter(function (icon) { - return tempOptions.excludeIcons.indexOf(icon) === -1 - }) - } - - if (typeof tempOptions.excludeOffIcons !== "undefined" && tempOptions.excludeOffIcons) { - // Exclude `*-off` icons - compileOptions.includeIcons = compileOptions.includeIcons.filter(function (icon) { - return !icon.endsWith('-off'); - }) - } - - if (typeof tempOptions.strokeWidth !== "undefined") { - if (typeof tempOptions.strokeWidth !== "string" && typeof tempOptions.strokeWidth !== "number") { - throw "property strokeWidth is not a string or number" - } - compileOptions.strokeWidth = tempOptions.strokeWidth.toString() - } - - if (typeof tempOptions.fontForge !== "undefined") { - if (typeof tempOptions.fontForge !== "string") { - throw "property fontForge is not a string" - } - compileOptions.fontForge = tempOptions.fontForge - } - - } catch (error) { - throw `Error reading compile-options.json: ${error}` - } + try { + const tempOptions = require('./compile-options.json') + if (typeof tempOptions !== 'object') { + throw 'Compile options file does not contain an json object' + } + + if (typeof tempOptions.includeIcons !== 'undefined') { + if (!Array.isArray(tempOptions.includeIcons)) { + throw 'property inludeIcons is not an array' + } + compileOptions.includeIcons = tempOptions.includeIcons + } + + if (typeof tempOptions.includeCategories !== 'undefined') { + if (typeof tempOptions.includeCategories === 'string') { + tempOptions.includeCategories = tempOptions.includeCategories.split(' ') + } + if (!Array.isArray(tempOptions.includeCategories)) { + throw 'property includeCategories is not an array or string' + } + const tags = Object.entries(require('./tags.json')) + tempOptions.includeCategories.forEach(function(category) { + category = category.charAt(0).toUpperCase() + category.slice(1) + for (const [icon, data] of tags) { + if (data.category === category && compileOptions.includeIcons.indexOf(icon) === -1) { + compileOptions.includeIcons.push(icon) + } + } + }) + } + + if (typeof tempOptions.excludeIcons !== 'undefined') { + if (!Array.isArray(tempOptions.excludeIcons)) { + throw 'property excludeIcons is not an array' + } + compileOptions.includeIcons = compileOptions.includeIcons.filter(function(icon) { + return tempOptions.excludeIcons.indexOf(icon) === -1 + }) + } + + if (typeof tempOptions.excludeOffIcons !== 'undefined' && tempOptions.excludeOffIcons) { + // Exclude `*-off` icons + compileOptions.includeIcons = compileOptions.includeIcons.filter(function(icon) { + return !icon.endsWith('-off') + }) + } + + if (typeof tempOptions.strokeWidth !== 'undefined') { + if (typeof tempOptions.strokeWidth !== 'string' && typeof tempOptions.strokeWidth !== 'number') { + throw 'property strokeWidth is not a string or number' + } + compileOptions.strokeWidth = tempOptions.strokeWidth.toString() + } + + if (typeof tempOptions.fontForge !== 'undefined') { + if (typeof tempOptions.fontForge !== 'string') { + throw 'property fontForge is not a string' + } + compileOptions.fontForge = tempOptions.fontForge + } + + } catch (error) { + throw `Error reading compile-options.json: ${error}` + } } -async function asyncForEach (array, callback) { - for (let index = 0; index < array.length; index++) { - await callback(array[index], index, array) - } +async function asyncForEach(array, callback) { + for (let index = 0; index < array.length; index++) { + await callback(array[index], index, array) + } } const svgToPng = async (filePath, destination) => { - filePath = path.join(__dirname, filePath) + filePath = path.join(__dirname, filePath) - await cp.exec(`rsvg-convert -h 240 ${filePath} > ${destination}`) + await cp.exec(`rsvg-convert -h 240 ${filePath} > ${destination}`) } const createScreenshot = async (filePath) => { - await cp.exec(`rsvg-convert -x 2 -y 2 ${filePath} > ${filePath.replace('.svg', '.png')}`) - await cp.exec(`rsvg-convert -x 4 -y 4 ${filePath} > ${filePath.replace('.svg', '@2x.png')}`) + await cp.exec(`rsvg-convert -x 2 -y 2 ${filePath} > ${filePath.replace('.svg', '.png')}`) + await cp.exec(`rsvg-convert -x 4 -y 4 ${filePath} > ${filePath.replace('.svg', '@2x.png')}`) } -const printChangelog = function (newIcons, modifiedIcons, renamedIcons, pretty = false) { - if (newIcons.length > 0) { - if (pretty) { - console.log(`### ${newIcons.length} new icons:`) +const printChangelog = function(newIcons, modifiedIcons, renamedIcons, pretty = false) { + if (newIcons.length > 0) { + if (pretty) { + console.log(`### ${newIcons.length} new icons:`) - newIcons.forEach(function (icon, i) { - console.log(`- \`${icon}\``) - }) - } else { - let str = '' - str += `${newIcons.length} new icons: ` + newIcons.forEach(function(icon, i) { + console.log(`- \`${icon}\``) + }) + } else { + let str = '' + str += `${newIcons.length} new icons: ` - newIcons.forEach(function (icon, i) { - str += `\`${icon}\`` + newIcons.forEach(function(icon, i) { + str += `\`${icon}\`` - if ((i + 1) <= newIcons.length - 1) { - str += ', ' - } - }) + if ((i + 1) <= newIcons.length - 1) { + str += ', ' + } + }) - console.log(str) - } + console.log(str) + } - console.log('') - } + console.log('') + } - if (modifiedIcons.length > 0) { - let str = '' - str += `Fixed icons: ` + if (modifiedIcons.length > 0) { + let str = '' + str += `Fixed icons: ` - modifiedIcons.forEach(function (icon, i) { - str += `\`${icon}\`` + modifiedIcons.forEach(function(icon, i) { + str += `\`${icon}\`` - if ((i + 1) <= modifiedIcons.length - 1) { - str += ', ' - } - }) + if ((i + 1) <= modifiedIcons.length - 1) { + str += ', ' + } + }) - console.log(str) - console.log('') - } + console.log(str) + console.log('') + } - if (renamedIcons.length > 0) { - console.log(`Renamed icons: `) + if (renamedIcons.length > 0) { + console.log(`Renamed icons: `) - renamedIcons.forEach(function (icon, i) { - console.log(`- \`${icon[0]}\` renamed to \`${icon[1]}\``) - }) - } + renamedIcons.forEach(function(icon, i) { + console.log(`- \`${icon[0]}\` renamed to \`${icon[1]}\``) + }) + } } -const generateIconsPreview = function (files, destFile, cb, columnsCount = 19, paddingOuter = 7) { +const generateIconsPreview = function(files, destFile, cb, columnsCount = 19, paddingOuter = 7) { - const padding = 20, - iconSize = 24 + const padding = 20, + iconSize = 24 - const iconsCount = files.length, - rowsCount = Math.ceil(iconsCount / columnsCount), - width = columnsCount * (iconSize + padding) + 2 * paddingOuter - padding, - height = rowsCount * (iconSize + padding) + 2 * paddingOuter - padding + const iconsCount = files.length, + rowsCount = Math.ceil(iconsCount / columnsCount), + width = columnsCount * (iconSize + padding) + 2 * paddingOuter - padding, + height = rowsCount * (iconSize + padding) + 2 * paddingOuter - padding - let svgContentSymbols = '', - svgContentIcons = '', - x = paddingOuter, - y = paddingOuter + let svgContentSymbols = '', + svgContentIcons = '', + x = paddingOuter, + y = paddingOuter - files.forEach(function (file, i) { - let name = path.basename(file, '.svg') + files.forEach(function(file, i) { + let name = path.basename(file, '.svg') - let svgFile = fs.readFileSync(file), - svgFileContent = svgFile.toString() + let svgFile = fs.readFileSync(file), + svgFileContent = svgFile.toString() - svgFileContent = svgFileContent - .replace('', '') - .replace(/\n\s+/g, '') + svgFileContent = svgFileContent.replace('', ''). + replace(/\n\s+/g, '') - svgContentSymbols += `\t${svgFileContent}\n` - svgContentIcons += `\t\n` + svgContentSymbols += `\t${svgFileContent}\n` + svgContentIcons += `\t\n` - x += padding + iconSize + x += padding + iconSize - if (i % columnsCount === columnsCount - 1) { - x = paddingOuter - y += padding + iconSize - } - }) + if (i % columnsCount === columnsCount - 1) { + x = paddingOuter + y += padding + iconSize + } + }) - const svgContent = `\n${svgContentSymbols}\n${svgContentIcons}\n` + const svgContent = `\n${svgContentSymbols}\n${svgContentIcons}\n` - fs.writeFileSync(destFile, svgContent) - createScreenshot(destFile) + fs.writeFileSync(destFile, svgContent) + createScreenshot(destFile) - cb() + cb() } //********************************************************************************************* -gulp.task('iconfont-prepare', function (cb) { - cp.exec('mkdir -p icons-outlined/ && rm -fd ./icons-outlined/* && mkdir -p && rm -fd ./iconfont/*', function () { - cb() - }) +gulp.task('iconfont-prepare', function(cb) { + cp.exec('mkdir -p icons-outlined/ && rm -fd ./icons-outlined/* && mkdir -p && rm -fd ./iconfont/*', function() { + cb() + }) }) -gulp.task('iconfont-clean', function (cb) { - cp.exec('rm -rf ./icons-outlined', function () { - cb() - }) +gulp.task('iconfont-clean', function(cb) { + cp.exec('rm -rf ./icons-outlined', function() { + cb() + }) }) -gulp.task('iconfont-svg-outline', function (cb) { +gulp.task('iconfont-svg-outline', function(cb) { - cp.exec('mkdir -p icons-outlined/ && rm -fd ./icons-outlined/*', async () => { - let files = glob.sync("./icons/*.svg") + cp.exec('mkdir -p icons-outlined/ && rm -fd ./icons-outlined/*', async () => { + let files = glob.sync('./icons/*.svg') - let iconfontUnicode = {} + let iconfontUnicode = {} - if (fs.existsSync('./.build/iconfont-unicode.json')) { - iconfontUnicode = require('./.build/iconfont-unicode') - } + if (fs.existsSync('./build/iconfont-unicode.json')) { + iconfontUnicode = require('./build/iconfont-unicode') + } - await asyncForEach(files, async function (file) { + await asyncForEach(files, async function(file) { - const name = path.basename(file, '.svg') + const name = path.basename(file, '.svg') - if (compileOptions.includeIcons.length === 0 || compileOptions.includeIcons.indexOf(name) >= 0) { + if (compileOptions.includeIcons.length === 0 || compileOptions.includeIcons.indexOf(name) >= 0) { - unicode = iconfontUnicode[name] + unicode = iconfontUnicode[name] - await console.log('Stroke for:', file, unicode) + await console.log('Stroke for:', file, unicode) - let strokedSVG = fs.readFileSync(file).toString() + let strokedSVG = fs.readFileSync(file).toString() - strokedSVG = strokedSVG - .replace('width="24"', 'width="1000"') - .replace('height="24"', 'height="1000"') + strokedSVG = strokedSVG.replace('width="24"', 'width="1000"').replace('height="24"', 'height="1000"') - if (compileOptions.strokeWidth) { - strokedSVG = strokedSVG.replace('stroke-width="2"', `stroke-width="${compileOptions.strokeWidth}"`) - } + if (compileOptions.strokeWidth) { + strokedSVG = strokedSVG.replace('stroke-width="2"', `stroke-width="${compileOptions.strokeWidth}"`) + } - await outlineStroke(strokedSVG, { - optCurve: false, - steps: 4, - round: 0, - centerHorizontally: true, - fixedWidth: true, - color: 'black' - }).then(outlined => { - if (unicode) { - fs.writeFileSync(`icons-outlined/u${unicode.toUpperCase()}-${name}.svg`, outlined) - } else { - fs.writeFileSync(`icons-outlined/${name}.svg`, outlined) - } - }).catch(error => console.log(error)) - } + await outlineStroke(strokedSVG, { + optCurve: false, + steps: 4, + round: 0, + centerHorizontally: true, + fixedWidth: true, + color: 'black' + }).then(outlined => { + if (unicode) { + fs.writeFileSync(`icons-outlined/u${unicode.toUpperCase()}-${name}.svg`, outlined) + } else { + fs.writeFileSync(`icons-outlined/${name}.svg`, outlined) + } + }).catch(error => console.log(error)) + } - }) + }) - cb() - }) + cb() + }) }) -gulp.task('iconfont-optimize', function () { - return gulp.src('icons-outlined/*') - .pipe(svgo()) - .pipe(gulp.dest('icons-outlined')) +gulp.task('iconfont-optimize', function() { + return gulp.src('icons-outlined/*').pipe(svgo()).pipe(gulp.dest('icons-outlined')) }) -gulp.task('iconfont-fix-outline', function (cb) { - var fontForge = compileOptions.fontForge - - // correct svg outline directions in a child process using fontforge - const generate = cp.spawn(fontForge, ["-lang=py", "-script", "./fix-outline.py"], { stdio: 'inherit' }) - generate.on("close", function (code) { - console.log(`Correcting svg outline directions exited with code ${code}`) - if (!code) { - cb() - } - }) +gulp.task('iconfont-fix-outline', function(cb) { + var fontForge = compileOptions.fontForge + + // correct svg outline directions in a child process using fontforge + const generate = cp.spawn(fontForge, ['-lang=py', '-script', './fix-outline.py'], { stdio: 'inherit' }) + generate.on('close', function(code) { + console.log(`Correcting svg outline directions exited with code ${code}`) + if (!code) { + cb() + } + }) }) -gulp.task('iconfont', function () { - let maxUnicode = 59905 +gulp.task('iconfont', function() { + let maxUnicode = 59905 - if (fs.existsSync('./.build/iconfont-unicode.json')) { - const iconfontUnicode = require('./.build/iconfont-unicode') + if (fs.existsSync('./build/iconfont-unicode.json')) { + const iconfontUnicode = require('./build/iconfont-unicode') - for (const name in iconfontUnicode) { - const unicode = parseInt(iconfontUnicode[name], 16) + for (const name in iconfontUnicode) { + const unicode = parseInt(iconfontUnicode[name], 16) - maxUnicode = Math.max(maxUnicode, unicode) - } - } + maxUnicode = Math.max(maxUnicode, unicode) + } + } - maxUnicode = maxUnicode + 1 + maxUnicode = maxUnicode + 1 - return gulp.src(['icons-outlined/*.svg']) - .pipe(iconfont({ - fontName: 'tabler-icons', - prependUnicode: true, - formats: ['ttf', 'eot', 'woff', 'woff2', 'svg'], - normalize: true, - startUnicode: maxUnicode, - fontHeight: 1000, - descent: 100, - ascent: 986.5 - })) - .on('glyphs', function (glyphs, options) { - //glyphs json - let glyphsObject = {} + return gulp.src(['icons-outlined/*.svg']).pipe(iconfont({ + fontName: 'tabler-icons', + prependUnicode: true, + formats: ['ttf', 'eot', 'woff', 'woff2', 'svg'], + normalize: true, + startUnicode: maxUnicode, + fontHeight: 1000, + descent: 100, + ascent: 986.5 + })).on('glyphs', function(glyphs, options) { + //glyphs json + let glyphsObject = {} - //sort glypht - glyphs = glyphs.sort(function (a, b) { - return ('' + a.name).localeCompare(b.name) - }) + //sort glypht + glyphs = glyphs.sort(function(a, b) { + return ('' + a.name).localeCompare(b.name) + }) - glyphs.forEach(function (glyph) { - glyphsObject[glyph.name] = glyph.unicode[0].codePointAt(0).toString(16) - }) + glyphs.forEach(function(glyph) { + glyphsObject[glyph.name] = glyph.unicode[0].codePointAt(0).toString(16) + }) - fs.writeFileSync(`./.build/iconfont-unicode.json`, JSON.stringify(glyphsObject)) + fs.writeFileSync(`./build/iconfont-unicode.json`, JSON.stringify(glyphsObject)) - //css - options['glyphs'] = glyphs - options['v'] = p.version + //css + options['glyphs'] = glyphs + options['v'] = p.version - const compiled = template(fs.readFileSync('.build/iconfont.scss').toString()) - const result = compiled(options) + const compiled = template(fs.readFileSync('build/iconfont.scss').toString()) + const result = compiled(options) - fs.writeFileSync('iconfont/tabler-icons.scss', result) + fs.writeFileSync('iconfont/tabler-icons.scss', result) - //html - const compiledHtml = template(fs.readFileSync('.build/iconfont.html').toString()) - const resultHtml = compiledHtml(options) + //html + const compiledHtml = template(fs.readFileSync('build/iconfont.html').toString()) + const resultHtml = compiledHtml(options) - fs.writeFileSync('iconfont/tabler-icons.html', resultHtml) - }) - .pipe(gulp.dest('iconfont/fonts')) + fs.writeFileSync('iconfont/tabler-icons.html', resultHtml) + }).pipe(gulp.dest('iconfont/fonts')) }) -gulp.task('iconfont-css', function (cb) { - sass.render({ - file: 'iconfont/tabler-icons.scss', - outputStyle: 'expanded' - }, function (err, result) { - fs.writeFileSync('iconfont/tabler-icons.css', result.css) +gulp.task('iconfont-css', function(cb) { + sass.render({ + file: 'iconfont/tabler-icons.scss', + outputStyle: 'expanded' + }, function(err, result) { + fs.writeFileSync('iconfont/tabler-icons.css', result.css) - const cleanOutput = new cleanCSS({}).minify(result.css) - fs.writeFileSync('iconfont/tabler-icons.min.css', cleanOutput.styles) + const cleanOutput = new cleanCSS({}).minify(result.css) + fs.writeFileSync('iconfont/tabler-icons.min.css', cleanOutput.styles) - cb() - }) + cb() + }) }) -gulp.task('update-tags-unicode', function (cb) { - let tags = require('./tags.json'), - unicodes = require('./.build/iconfont-unicode.json') +gulp.task('update-tags-unicode', function(cb) { + let tags = require('./tags.json'), + unicodes = require('./build/iconfont-unicode.json') - for (let i in tags) { - tags[i] = { - ...tags[i], - unicode: unicodes[i], - } - } + for (let i in tags) { + tags[i] = { + ...tags[i], + unicode: unicodes[i] + } + } - console.log('tags', tags) + console.log('tags', tags) - fs.writeFileSync(`tags.json`, JSON.stringify(tags, null, 2)) + fs.writeFileSync(`tags.json`, JSON.stringify(tags, null, 2)) - cb() + cb() }) -gulp.task('build-iconfont', gulp.series('iconfont-prepare', 'iconfont-svg-outline', 'iconfont-fix-outline', 'iconfont-optimize', 'iconfont', 'iconfont-css', 'iconfont-clean', 'update-tags-unicode')) +gulp.task('build-iconfont', + gulp.series('iconfont-prepare', 'iconfont-svg-outline', 'iconfont-fix-outline', 'iconfont-optimize', 'iconfont', 'iconfont-css', 'iconfont-clean', + 'update-tags-unicode')) -gulp.task('build-zip', function () { - const version = p.version +gulp.task('build-zip', function() { + const version = p.version - return gulp.src('{icons/**/*,icons-png/**/*,icons-react/**/*,iconfont/**/*,tabler-sprite.svg,tabler-sprite-nostroke.svg}') - .pipe(zip(`tabler-icons-${version}.zip`)) - .pipe(gulp.dest('packages-zip')) + return gulp.src('{icons/**/*,icons-png/**/*,icons-react/**/*,iconfont/**/*,tabler-sprite.svg,tabler-sprite-nostroke.svg}'). + pipe(zip(`tabler-icons-${version}.zip`)). + pipe(gulp.dest('packages-zip')) }) -gulp.task('build-jekyll', function (cb) { - const jekyll = cp.spawn("bundle", ["exec", "jekyll", "build"], { stdio: 'inherit' }) - jekyll.on("close", function (code) { - console.log(`Jekyll build exited with code ${code}`) - if (!code) { - cb() - } - }) +gulp.task('build-jekyll', function(cb) { + const jekyll = cp.spawn('bundle', ['exec', 'jekyll', 'build'], { stdio: 'inherit' }) + jekyll.on('close', function(code) { + console.log(`Jekyll build exited with code ${code}`) + if (!code) { + cb() + } + }) }) -gulp.task('build-copy', function (cb) { - cp.exec('mkdir -p icons/ && rm -fd ./icons/* && cp ./_site/icons/* ./icons && cp ./_site/tags.json .', function () { - cb() - }) +gulp.task('build-copy', function(cb) { + cp.exec('mkdir -p icons/ && rm -fd ./icons/* && cp ./_site/icons/* ./icons && cp ./_site/tags.json .', function() { + cb() + }) }) -gulp.task('clean-png', function (cb) { - cp.exec('rm -fd ./icons-png/*', function () { - cb() - }) +gulp.task('clean-png', function(cb) { + cp.exec('rm -fd ./icons-png/*', function() { + cb() + }) }) -gulp.task('icons-sprite', function (cb) { - glob("_site/icons/*.svg", {}, function (er, files) { +gulp.task('icons-sprite', function(cb) { + glob('_site/icons/*.svg', {}, function(er, files) { - let svgContent = '' + let svgContent = '' - files.forEach(function (file, i) { - let name = path.basename(file, '.svg'), - svgFile = fs.readFileSync(file), - svgFileContent = svgFile.toString() + files.forEach(function(file, i) { + let name = path.basename(file, '.svg'), + svgFile = fs.readFileSync(file), + svgFileContent = svgFile.toString() - svgFileContent = svgFileContent - .replace(/]+>/g, '') - .replace(/<\/svg>/g, '') - .replace(/\n+/g, '') - .replace(/>\s+<') - .trim() + svgFileContent = svgFileContent.replace(/]+>/g, '').replace(/<\/svg>/g, '').replace(/\n+/g, '').replace(/>\s+<').trim() - svgContent += `${svgFileContent}` - }) + svgContent += `${svgFileContent}` + }) - let svg = `${svgContent}` + let svg = `${svgContent}` - fs.writeFileSync('tabler-sprite.svg', svg) - fs.writeFileSync('tabler-sprite-nostroke.svg', svg.replace(/stroke-width="2"\s/g, '')) - cb() - }) + fs.writeFileSync('tabler-sprite.svg', svg) + fs.writeFileSync('tabler-sprite-nostroke.svg', svg.replace(/stroke-width="2"\s/g, '')) + cb() + }) }) -gulp.task('icons-preview', function (cb) { - glob("icons/*.svg", {}, function (er, files) { - generateIconsPreview(files, '.github/icons.svg', cb) - }) +gulp.task('icons-preview', function(cb) { + glob('icons/*.svg', {}, function(er, files) { + generateIconsPreview(files, '.github/icons.svg', cb) + }) }) -gulp.task('icons-stroke', gulp.series('build-jekyll', function (cb) { +gulp.task('icons-stroke', gulp.series('build-jekyll', function(cb) { - const icon = "disabled", - strokes = ['.5', '1', '1.5', '2', '2.75'], - svgFileContent = fs.readFileSync(`icons/${icon}.svg`).toString(), - padding = 16, - paddingOuter = 3, - iconSize = 32, - width = 914, - height = iconSize + paddingOuter * 2 + const icon = 'disabled', + strokes = ['.5', '1', '1.5', '2', '2.75'], + svgFileContent = fs.readFileSync(`icons/${icon}.svg`).toString(), + padding = 16, + paddingOuter = 3, + iconSize = 32, + width = 914, + height = iconSize + paddingOuter * 2 - let svgContentSymbols = '', - svgContentIcons = '', - x = paddingOuter + let svgContentSymbols = '', + svgContentIcons = '', + x = paddingOuter - strokes.forEach(function (stroke) { - let svgFileContentStroked = svgFileContent - .replace('', '') - .replace(/\n\s+/g, '') + strokes.forEach(function(stroke) { + let svgFileContentStroked = svgFileContent.replace('', ''). + replace(/\n\s+/g, '') - svgContentSymbols += `\t${svgFileContentStroked}\n` - svgContentIcons += `\t\n` + svgContentSymbols += `\t${svgFileContentStroked}\n` + svgContentIcons += `\t\n` - x += padding + iconSize - }) + x += padding + iconSize + }) - const svgContent = `\n${svgContentSymbols}\n${svgContentIcons}\n` + const svgContent = `\n${svgContentSymbols}\n${svgContentIcons}\n` - fs.writeFileSync('.github/icons-stroke.svg', svgContent) - createScreenshot('.github/icons-stroke.svg') - cb() + fs.writeFileSync('.github/icons-stroke.svg', svgContent) + createScreenshot('.github/icons-stroke.svg') + cb() })) -gulp.task('optimize', function (cb) { - const addFloats = function (n1, n2) { - return Math.round((parseFloat(n1) + parseFloat(n2)) * 1000) / 1000 - } - - const optimizePath = function (path) { - let transformed = svgpath(path) - .rel() - .round(3) - .toString() - - return svgParse(transformed).map(function (a) { - return a.join(' ') - }).join(' ') - } - - glob("src/_icons/*.svg", {}, function (er, files) { - - files.forEach(function (file, i) { - let svgFile = fs.readFileSync(file), - svgFileContent = svgFile.toString() - - svgFileContent = svgFileContent - .replace(/><\/(polyline|line|rect|circle|path)>/g, '/>') - .replace(/rx="([^"]+)"\s+ry="\1"/g, 'rx="$1"') - .replace(/]+)?\/>/g, '') - .replace(/\s?\/>/g, ' />') - .replace(/\n\s*<(line|circle|path|polyline|rect)/g, "\n <$1") - .replace(/polyline points="([0-9.]+)\s([0-9.]+)\s([0-9.]+)\s([0-9.]+)"/g, 'line x1="$1" y1="$2" x2="$3" y2="$4"') - .replace(/<\/(polyline|line|rect|circle|path)>/g, '/>'). + replace(/rx="([^"]+)"\s+ry="\1"/g, 'rx="$1"'). + replace(/]+)?\/>/g, ''). + replace(/\s?\/>/g, ' />'). + replace(/\n\s*<(line|circle|path|polyline|rect)/g, '\n <$1'). + replace(/polyline points="([0-9.]+)\s([0-9.]+)\s([0-9.]+)\s([0-9.]+)"/g, 'line x1="$1" y1="$2" x2="$3" y2="$4"'). + replace(/ src\/_icons\/([a-z0-9-]+).svg/g, function (m, fileNameBefore, fileNameAfter) { - renamedIcons.push([fileNameBefore, fileNameAfter]) - }) + ret.replace(/renamed:\s+src\/_icons\/([a-z0-9-]+).svg -> src\/_icons\/([a-z0-9-]+).svg/g, function(m, fileNameBefore, fileNameAfter) { + renamedIcons.push([fileNameBefore, fileNameAfter]) + }) - modifiedIcons = modifiedIcons.filter(function (el) { - return newIcons.indexOf(el) < 0 - }) + modifiedIcons = modifiedIcons.filter(function(el) { + return newIcons.indexOf(el) < 0 + }) - printChangelog(newIcons, modifiedIcons, renamedIcons) + printChangelog(newIcons, modifiedIcons, renamedIcons) - cb() - }) + cb() + }) }) -gulp.task('changelog', function (cb) { - const version = argv['latest-tag'] || `v${p.version}` +gulp.task('changelog', function(cb) { + const version = argv['latest-tag'] || `v${p.version}` - if (version) { - cp.exec(`git diff ${version} HEAD --name-status`, function (err, ret) { + if (version) { + cp.exec(`git diff ${version} HEAD --name-status`, function(err, ret) { - let newIcons = [], modifiedIcons = [], renamedIcons = [] + let newIcons = [], modifiedIcons = [], renamedIcons = [] - ret.replace(/A\s+src\/_icons\/([a-z0-9-]+)\.svg/g, function (m, fileName) { - newIcons.push(fileName) - }) + ret.replace(/A\s+src\/_icons\/([a-z0-9-]+)\.svg/g, function(m, fileName) { + newIcons.push(fileName) + }) - ret.replace(/M\s+src\/_icons\/([a-z0-9-]+)\.svg/g, function (m, fileName) { - modifiedIcons.push(fileName) - }) + ret.replace(/M\s+src\/_icons\/([a-z0-9-]+)\.svg/g, function(m, fileName) { + modifiedIcons.push(fileName) + }) - ret.replace(/R[0-9]+\s+src\/_icons\/([a-z0-9-]+)\.svg\s+src\/_icons\/([a-z0-9-]+).svg/g, function (m, fileNameBefore, fileNameAfter) { - renamedIcons.push([fileNameBefore, fileNameAfter]) - }) + ret.replace(/R[0-9]+\s+src\/_icons\/([a-z0-9-]+)\.svg\s+src\/_icons\/([a-z0-9-]+).svg/g, function(m, fileNameBefore, fileNameAfter) { + renamedIcons.push([fileNameBefore, fileNameAfter]) + }) - modifiedIcons = modifiedIcons.filter(function (el) { - return newIcons.indexOf(el) < 0 - }) + modifiedIcons = modifiedIcons.filter(function(el) { + return newIcons.indexOf(el) < 0 + }) - printChangelog(newIcons, modifiedIcons, renamedIcons, true) + printChangelog(newIcons, modifiedIcons, renamedIcons, true) - cb() - }) - } + cb() + }) + } }) -gulp.task('changelog-image', function (cb) { - const version = argv['latest-version'] || `${p.version}`, - newVersion = argv['new-version'] || `${p.version}` +gulp.task('changelog-image', function(cb) { + const version = argv['latest-version'] || `${p.version}`, + newVersion = argv['new-version'] || `${p.version}` - if (version) { - cp.exec(`git diff v${version} HEAD --name-status`, function (err, ret) { + if (version) { + cp.exec(`git diff v${version} HEAD --name-status`, function(err, ret) { - let newIcons = [] + let newIcons = [] - ret.replace(/[A]\s+src\/_icons\/([a-z0-9-]+)\.svg/g, function (m, fileName) { - newIcons.push(fileName) - }) + ret.replace(/[A]\s+src\/_icons\/([a-z0-9-]+)\.svg/g, function(m, fileName) { + newIcons.push(fileName) + }) - newIcons = newIcons.map(function (icon) { - return `./icons/${icon}.svg` - }) + newIcons = newIcons.map(function(icon) { + return `./icons/${icon}.svg` + }) - if (newIcons.length > 0) { - generateIconsPreview(newIcons, `.github/tabler-icons-${newVersion}.svg`, cb, 6, 24) - } else { - cb() - } - }) - } else { - cb() - } + if (newIcons.length > 0) { + generateIconsPreview(newIcons, `.github/tabler-icons-${newVersion}.svg`, cb, 6, 24) + } else { + cb() + } + }) + } else { + cb() + } }) gulp.task('svg-to-png', gulp.series('build-jekyll', 'clean-png', async (cb) => { - let files = glob.sync("./icons/*.svg") + let files = glob.sync('./icons/*.svg') - await asyncForEach(files, async function (file, i) { - let name = path.basename(file, '.svg') + await asyncForEach(files, async function(file, i) { + let name = path.basename(file, '.svg') - console.log('name', name) + console.log('name', name) - await svgToPng(file, `icons-png/${name}.png`) - }) + await svgToPng(file, `icons-png/${name}.png`) + }) - cb() + cb() })) -gulp.task('clean-react', function (cb) { - cp.exec('rm -fd ./icons-react/* && mkdir icons-react/icons-js', function () { - cb() - }) -}) - -gulp.task('svg-to-react', gulp.series('clean-react', async function (cb) { - let files = glob.sync("./icons/*.svg") - - const camelize = function (str) { - str = str.replace(/-/g, ' ') - - return str.replace(/(?:^\w|[A-Z]|\b\w)/g, function (word, index) { - return word.toUpperCase() - }).replace(/\s+/g, '') - } - - const componentName = function (file) { - file = path.basename(file, '.svg') - file = camelize(`Icon ${file}`) - - return file - } - - const optimizeSvgCode = function (svgCode) { - return svgCode.replace('', '') - } - - let indexCode = '', - indexDCode = `import { FC, SVGAttributes } from 'react';\n\ninterface TablerIconProps extends SVGAttributes { color?: string; size?: string | number; stroke?: string | number; }\n\ntype TablerIcon = FC;\n\n` - - await asyncForEach(files, async function (file) { - const svgCode = optimizeSvgCode(fs.readFileSync(file).toString()), - fileName = path.basename(file, '.svg') + '.js', - iconComponentName = componentName(file) - - await svgr(svgCode, { - icon: false, - svgProps: { width: '{size}', height: '{size}', strokeWidth: '{stroke}', stroke: '{color}' }, - template: require('./.build/svgr-template') - }, { componentName: iconComponentName }).then(jsCode => { - fs.writeFileSync('icons-react/icons-js/' + fileName, jsCode) - indexCode += `export { default as ${iconComponentName} } from './icons-js/${fileName}';\n` - indexDCode += `export const ${iconComponentName}: TablerIcon;\n` - }) - - fs.writeFileSync('icons-react/index.js', indexCode) - fs.writeFileSync('icons-react/index.d.ts', indexDCode) - }) - - cb() -})) - -const setVersions = function (version, files) { - for (const i in files) { - const file = files[i] +const setVersions = function(version, files) { + for (const i in files) { + const file = files[i] - if (fs.existsSync(`src/_icons/${file}.svg`)) { - let svgFile = fs.readFileSync(`src/_icons/${file}.svg`).toString() + if (fs.existsSync(`src/_icons/${file}.svg`)) { + let svgFile = fs.readFileSync(`src/_icons/${file}.svg`).toString() - if (!svgFile.match(/version: ([0-9.]+)/i)) { - svgFile = svgFile.replace(/---\n/i, function (m) { - return `version: "${version}"\n${m}` - }) + if (!svgFile.match(/version: ([0-9.]+)/i)) { + svgFile = svgFile.replace(/---\n/i, function(m) { + return `version: "${version}"\n${m}` + }) - fs.writeFileSync(`src/_icons/${file}.svg`, svgFile) - } else { - console.log(`File ${file} already has version`) - } + fs.writeFileSync(`src/_icons/${file}.svg`, svgFile) + } else { + console.log(`File ${file} already has version`) + } - } else { - console.log(`File ${file} doesn't exists`) - } - } + } else { + console.log(`File ${file} doesn't exists`) + } + } } -gulp.task('update-icons-version', function (cb) { +gulp.task('update-icons-version', function(cb) { - const version = argv['latest-version'] || `${p.version}`, - newVersion = argv['new-version'] || `${p.version}` + const version = argv['latest-version'] || `${p.version}`, + newVersion = argv['new-version'] || `${p.version}` - if (version) { - cp.exec(`grep -RiL "version: " ./src/_icons/*.svg`, function (err, ret) { + if (version) { + cp.exec(`grep -RiL "version: " ./src/_icons/*.svg`, function(err, ret) { - let newIcons = [] + let newIcons = [] - ret.replace(/src\/_icons\/([a-z0-9-]+)\.svg/g, function (m, fileName) { - newIcons.push(fileName) - }) + ret.replace(/src\/_icons\/([a-z0-9-]+)\.svg/g, function(m, fileName) { + newIcons.push(fileName) + }) - if (newIcons.length) { - setVersions(newVersion.replace(/\.0$/, ''), newIcons) - } - }) - } + if (newIcons.length) { + setVersions(newVersion.replace(/\.0$/, ''), newIcons) + } + }) + } - cb() + cb() }) -gulp.task('import-tags', function (cb) { - fs.createReadStream('./_import.csv') - .pipe(csv({ - headers: false, - separator: "\t" - })) - .on('data', (row) => { - console.log(row[0], row[1]) +gulp.task('import-tags', function(cb) { + fs.createReadStream('./_import.csv').pipe(csv({ + headers: false, + separator: '\t' + })).on('data', (row) => { + console.log(row[0], row[1]) - const filename = `src/_icons/${row[0]}.svg` + const filename = `src/_icons/${row[0]}.svg` - let data = fs.readFileSync(filename).toString() - data = data.replace(/(---[\s\S]+?---)/, function (m, headerContent) { + let data = fs.readFileSync(filename).toString() + data = data.replace(/(---[\s\S]+?---)/, function(m, headerContent) { - headerContent = headerContent.replace(/tags: .*\n/, '') - headerContent = headerContent.replace(/---/, `---\ntags: [${row[1]}]`) + headerContent = headerContent.replace(/tags: .*\n/, '') + headerContent = headerContent.replace(/---/, `---\ntags: [${row[1]}]`) - return headerContent - }) + return headerContent + }) - fs.writeFileSync(filename, data) + fs.writeFileSync(filename, data) - }) - .on('end', () => { - console.log('CSV file successfully processed') - }) - cb() + }).on('end', () => { + console.log('CSV file successfully processed') + }) + cb() }) -gulp.task("build-react", function (cb) { - cp.exec("npm run build-react", function () { - cb() - }) +gulp.task('build-preact', function(cb) { + cb() }) -gulp.task('build', gulp.series('optimize', 'update-icons-version', 'build-jekyll', 'build-copy', 'icons-sprite', 'svg-to-react', 'build-react', 'icons-preview', 'svg-to-png', 'build-iconfont', 'changelog-image', 'build-zip')) +gulp.task('build-react', gulp.series( + function(cb) { + cp.exec('rm -fd ./packages/icons-react/src/* && mkdir ./packages/icons-react/src/icons', function() { + cb() + }) + }, + async function(cb) { + let files = glob.sync('./icons/*.svg') + + let indexCode = '', + indexDCode = `import { FC, SVGAttributes } from 'react';\n\ninterface TablerIconProps extends SVGAttributes { color?: string; size?: string | number; stroke?: string | number; }\n\ntype TablerIcon = FC;\n\n` + + await asyncForEach(files, async function(file) { + const svgCode = optimizeSvgCode(fs.readFileSync(file).toString()), + fileName = path.basename(file, '.svg') + '.js', + iconComponentName = componentName(file) + + await svgr(svgCode, { + icon: false, + // svgProps: { width: '{size}', height: '{size}', strokeWidth: '{stroke}', stroke: '{color}' }, + // template: require('./build/template-react') + }, { + componentName: iconComponentName + }).then(jsCode => { + fs.writeFileSync('packages/icons-react/src/icons/' + fileName, jsCode) + indexCode += `export { default as ${iconComponentName} } from './icons/${fileName}';\n` + indexDCode += `export const ${iconComponentName}: TablerIcon;\n` + }) + + fs.writeFileSync('packages/icons-react/src/index.js', indexCode) + fs.writeFileSync('packages/icons-react/src/index.d.ts', indexDCode) + }) + + // await cp.exec("npm run build-react", function () { + // cb() + // }) + + cb() + })) + +gulp.task('build-packages', gulp.series('build-react', 'build-preact')) + +gulp.task('build', + gulp.series('optimize', 'update-icons-version', 'build-jekyll', 'build-copy', 'icons-sprite', 'build-packages', 'icons-preview', 'svg-to-png', + 'build-iconfont', 'changelog-image', 'build-zip')) diff --git a/package.json b/package.json index b8476077..05814818 100644 --- a/package.json +++ b/package.json @@ -65,28 +65,28 @@ "web" ], "devDependencies": { - "@babel/core": "7.11.6", - "@babel/parser": "7.11.5", - "@babel/preset-env": "7.11.5", - "@babel/preset-react": "7.10.4", - "@rollup/plugin-babel": "5.2.1", - "@rollup/plugin-commonjs": "15.1.0", - "@rollup/plugin-node-resolve": "9.0.0", - "@svgr/babel-plugin-replace-jsx-attribute-value": "5.0.1", - "@svgr/core": "5.4.0", - "clean-css": "4.2.3", + "@babel/core": "7.18.6", + "@babel/parser": "7.18.8", + "@babel/preset-env": "7.18.6", + "@babel/preset-react": "7.18.6", + "@rollup/plugin-babel": "5.3.1", + "@rollup/plugin-commonjs": "22.0.1", + "@rollup/plugin-node-resolve": "13.3.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "6.0.0", + "@svgr/core": "6.2.1", + "clean-css": "5.3.0", "csv-parser": "^3.0.0", - "glob": "7.1.6", + "glob": "8.0.3", "gulp": "4.0.2", - "gulp-iconfont": "10.0.3", + "gulp-iconfont": "11.0.1", "gulp-svgo": "^2.2.1", - "gulp-zip": "5.0.2", + "gulp-zip": "5.1.0", "lodash.template": "4.5.0", - "minimist": "1.2.5", + "minimist": "1.2.6", "node-sass": "7.0.1", "parse-svg-path": "^0.1.2", - "release-it": "14.12.5", - "rollup": "2.70.1", + "release-it": "15.1.1", + "rollup": "2.76.0", "rollup-plugin-filesize": "9.1.2", "rollup-plugin-peer-deps-external": "2.2.4", "rollup-plugin-terser": "7.0.2", diff --git a/packages/icons-preact/.gitignore b/packages/icons-preact/.gitignore new file mode 100644 index 00000000..71bcfc6c --- /dev/null +++ b/packages/icons-preact/.gitignore @@ -0,0 +1 @@ +src/* diff --git a/packages/icons-preact/readme.md b/packages/icons-preact/readme.md new file mode 100644 index 00000000..31a2268a --- /dev/null +++ b/packages/icons-preact/readme.md @@ -0,0 +1,3 @@ +# Tabler Icons Preact + +Implementation of the Tabler Icons library for Preact applications. diff --git a/packages/icons-react/.gitignore b/packages/icons-react/.gitignore new file mode 100644 index 00000000..71bcfc6c --- /dev/null +++ b/packages/icons-react/.gitignore @@ -0,0 +1 @@ +src/* diff --git a/packages/icons-react/readme.md b/packages/icons-react/readme.md new file mode 100644 index 00000000..3bd0e60b --- /dev/null +++ b/packages/icons-react/readme.md @@ -0,0 +1,3 @@ +# Tabler Icons React + +Implementation of the Tabler Icons library for React applications. diff --git a/packages/icons-react/rollup.config.js b/packages/icons-react/rollup.config.js new file mode 100644 index 00000000..3e733de5 --- /dev/null +++ b/packages/icons-react/rollup.config.js @@ -0,0 +1,119 @@ +import resolve from "@rollup/plugin-node-resolve"; +import commonjs from "@rollup/plugin-commonjs"; +import filesize from "rollup-plugin-filesize"; +import babel from "@rollup/plugin-babel"; +import external from "rollup-plugin-peer-deps-external"; +import { terser } from "rollup-plugin-terser"; +import { uglify } from "rollup-plugin-uglify"; +import pkg from "./../../package.json"; + +const input = "icons-react/index.js"; + +const minifyExtension = (pathToFile) => pathToFile.replace(/\.js$/, ".min.js"); + +const plugins = [ + babel({ + exclude: "node_modules/**", + }), + external(), + resolve(), + commonjs(), + filesize(), +]; + +const minCjsPlugins = [ + babel({ + exclude: "node_modules/**", + }), + external(), + resolve(), + commonjs(), + uglify(), + filesize(), +]; + +const minUmdEsmPlugins = [ + babel({ + exclude: "node_modules/**", + }), + external(), + resolve(), + commonjs(), + terser(), + filesize(), +]; + +export default [ + // CommonJS (for Node) + { + input, + output: { + file: pkg.main, + format: "cjs", + sourcemap: true, + }, + plugins, + }, + // CommonJS (for Node) minified + { + input, + output: { + file: minifyExtension(pkg.main), + format: "cjs", + sourcemap: true, + }, + plugins: minCjsPlugins, + }, + // UMD (for browser) + { + input, + output: { + file: pkg['umd:main'], + format: "umd", + sourcemap: true, + name: "tablerIcons", + globals: { + react: "React", + "react-dom": "ReactDOM", + }, + }, + plugins, + }, + // UMD (for browser) minified + { + input, + output: { + file: minifyExtension(pkg['umd:main']), + format: "umd", + sourcemap: true, + name: "tablerIcons", + globals: { + react: "React", + "react-dom": "ReactDOM", + }, + }, + plugins: minUmdEsmPlugins, + }, + // ESM (for bundlers) + { + input, + output: { + file: pkg.module, + format: "es", + sourcemap: true, + exports: "named", + }, + plugins, + }, + // ESM (for bundlers) minified + { + input, + output: { + file: minifyExtension(pkg.module), + format: "es", + sourcemap: true, + exports: "named", + }, + plugins: minUmdEsmPlugins, + }, +]; diff --git a/rollup.config.js b/rollup.config.js deleted file mode 100644 index 2b1b9845..00000000 --- a/rollup.config.js +++ /dev/null @@ -1,119 +0,0 @@ -import resolve from "@rollup/plugin-node-resolve"; -import commonjs from "@rollup/plugin-commonjs"; -import filesize from "rollup-plugin-filesize"; -import babel from "@rollup/plugin-babel"; -import external from "rollup-plugin-peer-deps-external"; -import { terser } from "rollup-plugin-terser"; -import { uglify } from "rollup-plugin-uglify"; -import pkg from "./package.json"; - -const input = "icons-react/index.js"; - -const minifyExtension = (pathToFile) => pathToFile.replace(/\.js$/, ".min.js"); - -const plugins = [ - babel({ - exclude: "node_modules/**", - }), - external(), - resolve(), - commonjs(), - filesize(), -]; - -const minCjsPlugins = [ - babel({ - exclude: "node_modules/**", - }), - external(), - resolve(), - commonjs(), - uglify(), - filesize(), -]; - -const minUmdEsmPlugins = [ - babel({ - exclude: "node_modules/**", - }), - external(), - resolve(), - commonjs(), - terser(), - filesize(), -]; - -export default [ - // CommonJS (for Node) - { - input, - output: { - file: pkg.main, - format: "cjs", - sourcemap: true, - }, - plugins, - }, - // CommonJS (for Node) minified - { - input, - output: { - file: minifyExtension(pkg.main), - format: "cjs", - sourcemap: true, - }, - plugins: minCjsPlugins, - }, - // UMD (for browser) - { - input, - output: { - file: pkg['umd:main'], - format: "umd", - sourcemap: true, - name: "tablerIcons", - globals: { - react: "React", - "react-dom": "ReactDOM", - }, - }, - plugins, - }, - // UMD (for browser) minified - { - input, - output: { - file: minifyExtension(pkg['umd:main']), - format: "umd", - sourcemap: true, - name: "tablerIcons", - globals: { - react: "React", - "react-dom": "ReactDOM", - }, - }, - plugins: minUmdEsmPlugins, - }, - // ESM (for bundlers) - { - input, - output: { - file: pkg.module, - format: "es", - sourcemap: true, - exports: "named", - }, - plugins, - }, - // ESM (for bundlers) minified - { - input, - output: { - file: minifyExtension(pkg.module), - format: "es", - sourcemap: true, - exports: "named", - }, - plugins: minUmdEsmPlugins, - }, -]; -- cgit v1.2.1