@pine-ds/icons 10.4.1 → 10.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cheatsheet.html +5 -7
- package/dist/docs.json +1 -1
- package/dist/pds-icons.json +1 -28
- package/dist/pds-icons.symbols.svg +1 -2
- package/dist/scripts/figma_icons/figma-icon-export.js +16 -2
- package/dist/scripts/figma_icons/figma-icon-export.js.map +1 -1
- package/dist/scripts/optimize-svgs.js +19 -0
- package/dist/scripts/optimize-svgs.js.map +1 -1
- package/icons/index.d.ts +1 -2
- package/icons/index.js +1 -2
- package/icons/index.mjs +1 -2
- package/icons/package.json +1 -1
- package/package.json +1 -1
- package/dist/svg/property 1=default.svg +0 -1
package/dist/cheatsheet.html
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8">
|
|
5
|
-
<title>Pine icons Library - 10.4.
|
|
5
|
+
<title>Pine icons Library - 10.4.2</title>
|
|
6
6
|
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🌲</text></svg>"/>
|
|
7
7
|
|
|
8
8
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
@@ -199,11 +199,11 @@
|
|
|
199
199
|
</head>
|
|
200
200
|
<body>
|
|
201
201
|
<div class="icon-count-container">
|
|
202
|
-
<p class="icon-count">
|
|
202
|
+
<p class="icon-count">395 icons</p>
|
|
203
203
|
</div>
|
|
204
|
-
<h1>Pine Icons - 10.4.
|
|
204
|
+
<h1>Pine Icons - 10.4.2</h1>
|
|
205
205
|
<div class="search-container">
|
|
206
|
-
<label for="search" class="visually-hidden">Search all
|
|
206
|
+
<label for="search" class="visually-hidden">Search all 395 icons</label>
|
|
207
207
|
<input type="text" id="search" class="search-input" placeholder="Search icons by name or tag..." oninput="filterIcons(this.value)">
|
|
208
208
|
</div>
|
|
209
209
|
|
|
@@ -510,7 +510,6 @@
|
|
|
510
510
|
<button class="icon-button" title="Copy preview-on code snippet" data-tags="eye,preview,see,view" data-icon-name="preview-on"><pds-icon name="preview-on"></pds-icon><span class="visually-hidden">Copy preview-on icon code</span></button>
|
|
511
511
|
<button class="icon-button" title="Copy product code snippet" data-tags="block,box,component,cube,delivery,geometry,module,nav,navigation,note,package,parcel,product,shape" data-icon-name="product"><pds-icon name="product"></pds-icon><span class="visually-hidden">Copy product icon code</span></button>
|
|
512
512
|
<button class="icon-button" title="Copy product-filled code snippet" data-tags="block,box,component,cube,delivery,geometry,module,nav,navigation,note,package,parcel,product,shape" data-icon-name="product-filled"><pds-icon name="product-filled"></pds-icon><span class="visually-hidden">Copy product-filled icon code</span></button>
|
|
513
|
-
<button class="icon-button" title="Copy property 1=default code snippet" data-tags="property 1=default" data-icon-name="property 1=default"><pds-icon name="property 1=default"></pds-icon><span class="visually-hidden">Copy property 1=default icon code</span></button>
|
|
514
513
|
<button class="icon-button" title="Copy question-circle code snippet" data-tags="circle,documentation,help,info,information,question" data-icon-name="question-circle"><pds-icon name="question-circle"></pds-icon><span class="visually-hidden">Copy question-circle icon code</span></button>
|
|
515
514
|
<button class="icon-button" title="Copy quote code snippet" data-tags="block,edit,font,quote,style,text,theme,typography" data-icon-name="quote"><pds-icon name="quote"></pds-icon><span class="visually-hidden">Copy quote icon code</span></button>
|
|
516
515
|
<button class="icon-button" title="Copy recording-02 code snippet" data-tags="audio,mp3,record,recording,wav" data-icon-name="recording-02"><pds-icon name="recording-02"></pds-icon><span class="visually-hidden">Copy recording-02 icon code</span></button>
|
|
@@ -607,7 +606,7 @@
|
|
|
607
606
|
<button class="icon-button" title="Copy wrench code snippet" data-tags="preferences,settings,spanner,tool,tools" data-icon-name="wrench"><pds-icon name="wrench"></pds-icon><span class="visually-hidden">Copy wrench icon code</span></button>
|
|
608
607
|
<button class="icon-button" title="Copy zoom-in code snippet" data-tags="plus,zoom,zoom in" data-icon-name="zoom-in"><pds-icon name="zoom-in"></pds-icon><span class="visually-hidden">Copy zoom-in icon code</span></button>
|
|
609
608
|
<button class="icon-button" title="Copy zoom-out code snippet" data-tags="minus,zoom,zoom out" data-icon-name="zoom-out"><pds-icon name="zoom-out"></pds-icon><span class="visually-hidden">Copy zoom-out icon code</span></button>
|
|
610
|
-
<svg data-pdsicons="10.4.
|
|
609
|
+
<svg data-pdsicons="10.4.2" style="display:none">
|
|
611
610
|
<style>
|
|
612
611
|
.pdsicon {
|
|
613
612
|
fill: currentColor;
|
|
@@ -918,7 +917,6 @@
|
|
|
918
917
|
<symbol id="preview-on" viewBox="0 0 24 24" class="pdsicon"><path fill-rule="evenodd" d="M6.359 8.243C4.852 9.5 3.799 10.977 3.266 11.82l-.11.178V12l.029.049.08.13c.533.843 1.587 2.32 3.094 3.577C7.863 17.012 9.757 18 12 18c2.244 0 4.138-.988 5.642-2.243 1.506-1.257 2.56-2.734 3.093-3.578l.11-.178V12l-.03-.049-.08-.13c-.532-.843-1.587-2.32-3.093-3.577C16.138 6.988 14.244 6 12 6c-2.243 0-4.137.988-5.641 2.243M5.077 6.707C6.806 5.265 9.14 4 12 4c2.862 0 5.195 1.265 6.924 2.707 1.726 1.441 2.91 3.107 3.502 4.046l.024.038c.118.185.27.425.348.762a2.2 2.2 0 0 1 0 .894c-.077.337-.23.577-.348.762l-.024.038c-.593.939-1.776 2.605-3.502 4.046C17.195 18.735 14.862 20 12 20s-5.194-1.265-6.923-2.707c-1.726-1.441-2.91-3.107-3.502-4.046l-.024-.038c-.118-.185-.27-.425-.348-.762a2.2 2.2 0 0 1 0-.894c.077-.337.23-.577.348-.762l.024-.038c.592-.939 1.776-2.605 3.502-4.046M12 10a2 2 0 1 0 0 4 2 2 0 0 0 0-4m-4 2a4 4 0 1 1 8 0 4 4 0 0 1-8 0"/></symbol>
|
|
919
918
|
<symbol id="product" viewBox="0 0 24 24" class="pdsicon"><path fill-rule="evenodd" d="M11.597 1.185a2 2 0 0 1 .806 0c.307.063.582.217.8.34l.06.033 7.4 4.11.063.036c.23.127.522.287.745.53.193.208.339.457.428.727.103.313.102.644.101.908v8.262c.001.264.002.595-.101.908-.09.27-.235.519-.428.728-.223.242-.514.402-.745.53l-.063.034-7.4 4.111-.06.034c-.218.122-.493.276-.8.339-.266.055-.54.055-.806 0-.307-.063-.582-.217-.8-.34l-.06-.033-7.4-4.11q-.03-.018-.063-.035c-.23-.128-.522-.288-.745-.53a2 2 0 0 1-.428-.728c-.103-.313-.102-.644-.101-.908V7.869c-.001-.264-.002-.595.101-.908a2 2 0 0 1 .428-.728c.223-.242.514-.402.745-.53l.063-.034 7.4-4.111.06-.034c.218-.122.493-.276.8-.339M12 3.149l-.005.002c-.057.028-.135.07-.286.155L5.059 7 12 10.856 18.94 7l-6.649-3.694a7 7 0 0 0-.286-.155zm8 5.55v7.36a7 7 0 0 1-.005.35l-.005.003a7 7 0 0 1-.299.171L13 20.301v-7.713zm-9 3.89-7-3.89v7.36c0 .182 0 .276.005.344v.006l.005.003c.057.036.139.082.299.171L11 20.301z"/></symbol>
|
|
920
919
|
<symbol id="product-filled" viewBox="0 0 24 24" class="pdsicon"><path d="M12.403 1.495a2 2 0 0 0-.806 0c-.307.063-.582.217-.8.34l-.06.033-6.426 3.571c-.409.227-.613.34-.68.49a.5.5 0 0 0-.002.412c.068.15.271.265.679.494l7.3 4.107c.143.08.214.12.29.136a.5.5 0 0 0 .204 0c.076-.016.147-.056.29-.136l7.3-4.107c.408-.229.611-.343.679-.494a.5.5 0 0 0-.001-.411c-.068-.15-.273-.264-.68-.49l-6.427-3.572-.06-.034c-.218-.122-.493-.276-.8-.339M21.996 9.2c0-.448 0-.672-.095-.803a.5.5 0 0 0-.35-.204c-.16-.019-.356.092-.747.312l-7.396 4.16c-.149.084-.223.125-.277.184a.5.5 0 0 0-.106.182c-.025.076-.025.161-.025.331v8.176c0 .447 0 .67.094.801a.5.5 0 0 0 .348.205c.16.019.355-.09.745-.306l6.476-3.597.063-.034c.23-.128.522-.288.745-.53.193-.21.339-.458.428-.728.103-.313.102-.644.101-.908v-.072c0-1.963-.003-5.303-.004-7.169M9.814 22.238c.39.216.584.325.744.306a.5.5 0 0 0 .348-.205c.094-.13.094-.354.094-.801v-8.176c0-.17 0-.255-.025-.331a.5.5 0 0 0-.106-.181c-.054-.06-.128-.101-.277-.185l-7.396-4.16c-.391-.22-.587-.33-.748-.312a.5.5 0 0 0-.349.204c-.094.13-.095.355-.095.803C2.003 11.066 2 14.406 2 16.37v.072c-.001.264-.002.595.101.908a2 2 0 0 0 .428.728c.223.242.514.402.745.53l.063.034z"/></symbol>
|
|
921
|
-
<symbol id="property 1=default" viewBox="0 0 24 24" class="pdsicon"><g clip-path="url(#a)"><path fill-rule="evenodd" d="M9 2a1 1 0 0 1 .949.684L15 17.838l2.051-6.154A1 1 0 0 1 18 11h4a1 1 0 1 1 0 2h-3.28l-2.771 8.316a1 1 0 0 1-1.898 0L9 6.162l-2.051 6.154A1 1 0 0 1 6 13H2a1 1 0 1 1 0-2h3.28L8.05 2.684A1 1 0 0 1 9 2"/></g><defs><clipPath id="a"><rect width="24" height="24" rx="4"/></clipPath></defs></symbol>
|
|
922
920
|
<symbol id="question-circle" viewBox="0 0 24 24" class="pdsicon"><path d="M12 23a11 11 0 1 1 0-22 11 11 0 0 1 0 22m0-20a9 9 0 1 0 0 18 9 9 0 0 0 0-18m0 15a1 1 0 1 1 0-2 1 1 0 0 1 0 2m-.09-4a1 1 0 0 1-.32-1.95c.6-.2 2.32-1 2.32-2.05A2 2 0 0 0 10 9.33a1 1 0 1 1-1.88-.66 4 4 0 0 1 3.767-2.656A4 4 0 0 1 15.89 10c0 2.64-3.31 3.82-3.68 3.95a1.3 1.3 0 0 1-.29.05z"/></symbol>
|
|
923
921
|
<symbol id="quote" viewBox="0 0 24 24" class="pdsicon"><path fill-rule="evenodd" d="M2.32 5.15A4.5 4.5 0 0 1 10 8.33v.5a14.34 14.34 0 0 1-1.78 6.68 14.55 14.55 0 0 1-3.75 4.43.999.999 0 1 1-1.27-1.54 12.4 12.4 0 0 0 3.28-3.85c.37-.682.67-1.399.9-2.14a4.3 4.3 0 0 1-1.87.42 4.5 4.5 0 0 1-3.19-7.68m1.79 5.26a2.55 2.55 0 0 0 1.39.42c.343.007.684-.057 1-.19a2.48 2.48 0 0 0 1.31-1.35 2.5 2.5 0 0 0-2.797-3.415 2.5 2.5 0 0 0-.903 4.535m11.21-5.26A4.5 4.5 0 0 1 23 8.33v.5a14.4 14.4 0 0 1-1.76 6.68 14.7 14.7 0 0 1-3.78 4.44 1 1 0 0 1-1.26-1.55 12.3 12.3 0 0 0 3.28-3.85c.37-.682.67-1.399.9-2.14a4.3 4.3 0 0 1-1.87.42 4.5 4.5 0 0 1-3.18-7.68zm1.79 5.26a2.55 2.55 0 0 0 1.39.42c.343.007.684-.057 1-.19a2.48 2.48 0 0 0 1.35-1.35 2.45 2.45 0 0 0 .19-1 2.5 2.5 0 0 0-2.987-2.455A2.5 2.5 0 0 0 16.23 9.25c.175.463.481.866.88 1.16"/></symbol>
|
|
924
922
|
<symbol id="recording-02" viewBox="0 0 24 24" class="pdsicon"><path d="M15.5 21V3a1 1 0 1 1 2 0v18a1 1 0 1 1-2 0M11 18V6a1 1 0 1 1 2 0v12a1 1 0 1 1-2 0m-9-4v-4a1 1 0 0 1 2 0v4a1 1 0 1 1-2 0m18 0v-4a1 1 0 1 1 2 0v4a1 1 0 1 1-2 0M6.5 13v-2a1 1 0 1 1 2 0v2a1 1 0 1 1-2 0"/></symbol>
|
package/dist/docs.json
CHANGED
package/dist/pds-icons.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pds-icons",
|
|
3
|
-
"version": "10.4.
|
|
3
|
+
"version": "10.4.2",
|
|
4
4
|
"icons": [
|
|
5
5
|
{
|
|
6
6
|
"name": "access-key",
|
|
@@ -1386,17 +1386,6 @@
|
|
|
1386
1386
|
"server"
|
|
1387
1387
|
]
|
|
1388
1388
|
},
|
|
1389
|
-
{
|
|
1390
|
-
"name": "dataflow-01",
|
|
1391
|
-
"category": "actions",
|
|
1392
|
-
"tags": [
|
|
1393
|
-
"data",
|
|
1394
|
-
"database",
|
|
1395
|
-
"dataflow",
|
|
1396
|
-
"flow",
|
|
1397
|
-
"server"
|
|
1398
|
-
]
|
|
1399
|
-
},
|
|
1400
1389
|
{
|
|
1401
1390
|
"name": "delete-circle",
|
|
1402
1391
|
"category": "actions",
|
|
@@ -3492,12 +3481,6 @@
|
|
|
3492
3481
|
"shape"
|
|
3493
3482
|
]
|
|
3494
3483
|
},
|
|
3495
|
-
{
|
|
3496
|
-
"name": "property 1=default",
|
|
3497
|
-
"tags": [
|
|
3498
|
-
"property 1=default"
|
|
3499
|
-
]
|
|
3500
|
-
},
|
|
3501
3484
|
{
|
|
3502
3485
|
"name": "question-circle",
|
|
3503
3486
|
"category": "dialogues",
|
|
@@ -3832,16 +3815,6 @@
|
|
|
3832
3815
|
"shopping bag"
|
|
3833
3816
|
]
|
|
3834
3817
|
},
|
|
3835
|
-
{
|
|
3836
|
-
"name": "shopping-cart-filled",
|
|
3837
|
-
"category": "actions",
|
|
3838
|
-
"tags": [
|
|
3839
|
-
"cart",
|
|
3840
|
-
"ecommerce",
|
|
3841
|
-
"purchase",
|
|
3842
|
-
"shopping bag"
|
|
3843
|
-
]
|
|
3844
|
-
},
|
|
3845
3818
|
{
|
|
3846
3819
|
"name": "skipped",
|
|
3847
3820
|
"category": "features",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<svg data-pdsicons="10.4.
|
|
1
|
+
<svg data-pdsicons="10.4.2" style="display:none">
|
|
2
2
|
<style>
|
|
3
3
|
.pdsicon {
|
|
4
4
|
fill: currentColor;
|
|
@@ -309,7 +309,6 @@
|
|
|
309
309
|
<symbol id="preview-on" viewBox="0 0 24 24" class="pdsicon"><path fill-rule="evenodd" d="M6.359 8.243C4.852 9.5 3.799 10.977 3.266 11.82l-.11.178V12l.029.049.08.13c.533.843 1.587 2.32 3.094 3.577C7.863 17.012 9.757 18 12 18c2.244 0 4.138-.988 5.642-2.243 1.506-1.257 2.56-2.734 3.093-3.578l.11-.178V12l-.03-.049-.08-.13c-.532-.843-1.587-2.32-3.093-3.577C16.138 6.988 14.244 6 12 6c-2.243 0-4.137.988-5.641 2.243M5.077 6.707C6.806 5.265 9.14 4 12 4c2.862 0 5.195 1.265 6.924 2.707 1.726 1.441 2.91 3.107 3.502 4.046l.024.038c.118.185.27.425.348.762a2.2 2.2 0 0 1 0 .894c-.077.337-.23.577-.348.762l-.024.038c-.593.939-1.776 2.605-3.502 4.046C17.195 18.735 14.862 20 12 20s-5.194-1.265-6.923-2.707c-1.726-1.441-2.91-3.107-3.502-4.046l-.024-.038c-.118-.185-.27-.425-.348-.762a2.2 2.2 0 0 1 0-.894c.077-.337.23-.577.348-.762l.024-.038c.592-.939 1.776-2.605 3.502-4.046M12 10a2 2 0 1 0 0 4 2 2 0 0 0 0-4m-4 2a4 4 0 1 1 8 0 4 4 0 0 1-8 0"/></symbol>
|
|
310
310
|
<symbol id="product" viewBox="0 0 24 24" class="pdsicon"><path fill-rule="evenodd" d="M11.597 1.185a2 2 0 0 1 .806 0c.307.063.582.217.8.34l.06.033 7.4 4.11.063.036c.23.127.522.287.745.53.193.208.339.457.428.727.103.313.102.644.101.908v8.262c.001.264.002.595-.101.908-.09.27-.235.519-.428.728-.223.242-.514.402-.745.53l-.063.034-7.4 4.111-.06.034c-.218.122-.493.276-.8.339-.266.055-.54.055-.806 0-.307-.063-.582-.217-.8-.34l-.06-.033-7.4-4.11q-.03-.018-.063-.035c-.23-.128-.522-.288-.745-.53a2 2 0 0 1-.428-.728c-.103-.313-.102-.644-.101-.908V7.869c-.001-.264-.002-.595.101-.908a2 2 0 0 1 .428-.728c.223-.242.514-.402.745-.53l.063-.034 7.4-4.111.06-.034c.218-.122.493-.276.8-.339M12 3.149l-.005.002c-.057.028-.135.07-.286.155L5.059 7 12 10.856 18.94 7l-6.649-3.694a7 7 0 0 0-.286-.155zm8 5.55v7.36a7 7 0 0 1-.005.35l-.005.003a7 7 0 0 1-.299.171L13 20.301v-7.713zm-9 3.89-7-3.89v7.36c0 .182 0 .276.005.344v.006l.005.003c.057.036.139.082.299.171L11 20.301z"/></symbol>
|
|
311
311
|
<symbol id="product-filled" viewBox="0 0 24 24" class="pdsicon"><path d="M12.403 1.495a2 2 0 0 0-.806 0c-.307.063-.582.217-.8.34l-.06.033-6.426 3.571c-.409.227-.613.34-.68.49a.5.5 0 0 0-.002.412c.068.15.271.265.679.494l7.3 4.107c.143.08.214.12.29.136a.5.5 0 0 0 .204 0c.076-.016.147-.056.29-.136l7.3-4.107c.408-.229.611-.343.679-.494a.5.5 0 0 0-.001-.411c-.068-.15-.273-.264-.68-.49l-6.427-3.572-.06-.034c-.218-.122-.493-.276-.8-.339M21.996 9.2c0-.448 0-.672-.095-.803a.5.5 0 0 0-.35-.204c-.16-.019-.356.092-.747.312l-7.396 4.16c-.149.084-.223.125-.277.184a.5.5 0 0 0-.106.182c-.025.076-.025.161-.025.331v8.176c0 .447 0 .67.094.801a.5.5 0 0 0 .348.205c.16.019.355-.09.745-.306l6.476-3.597.063-.034c.23-.128.522-.288.745-.53.193-.21.339-.458.428-.728.103-.313.102-.644.101-.908v-.072c0-1.963-.003-5.303-.004-7.169M9.814 22.238c.39.216.584.325.744.306a.5.5 0 0 0 .348-.205c.094-.13.094-.354.094-.801v-8.176c0-.17 0-.255-.025-.331a.5.5 0 0 0-.106-.181c-.054-.06-.128-.101-.277-.185l-7.396-4.16c-.391-.22-.587-.33-.748-.312a.5.5 0 0 0-.349.204c-.094.13-.095.355-.095.803C2.003 11.066 2 14.406 2 16.37v.072c-.001.264-.002.595.101.908a2 2 0 0 0 .428.728c.223.242.514.402.745.53l.063.034z"/></symbol>
|
|
312
|
-
<symbol id="property 1=default" viewBox="0 0 24 24" class="pdsicon"><g clip-path="url(#a)"><path fill-rule="evenodd" d="M9 2a1 1 0 0 1 .949.684L15 17.838l2.051-6.154A1 1 0 0 1 18 11h4a1 1 0 1 1 0 2h-3.28l-2.771 8.316a1 1 0 0 1-1.898 0L9 6.162l-2.051 6.154A1 1 0 0 1 6 13H2a1 1 0 1 1 0-2h3.28L8.05 2.684A1 1 0 0 1 9 2"/></g><defs><clipPath id="a"><rect width="24" height="24" rx="4"/></clipPath></defs></symbol>
|
|
313
312
|
<symbol id="question-circle" viewBox="0 0 24 24" class="pdsicon"><path d="M12 23a11 11 0 1 1 0-22 11 11 0 0 1 0 22m0-20a9 9 0 1 0 0 18 9 9 0 0 0 0-18m0 15a1 1 0 1 1 0-2 1 1 0 0 1 0 2m-.09-4a1 1 0 0 1-.32-1.95c.6-.2 2.32-1 2.32-2.05A2 2 0 0 0 10 9.33a1 1 0 1 1-1.88-.66 4 4 0 0 1 3.767-2.656A4 4 0 0 1 15.89 10c0 2.64-3.31 3.82-3.68 3.95a1.3 1.3 0 0 1-.29.05z"/></symbol>
|
|
314
313
|
<symbol id="quote" viewBox="0 0 24 24" class="pdsicon"><path fill-rule="evenodd" d="M2.32 5.15A4.5 4.5 0 0 1 10 8.33v.5a14.34 14.34 0 0 1-1.78 6.68 14.55 14.55 0 0 1-3.75 4.43.999.999 0 1 1-1.27-1.54 12.4 12.4 0 0 0 3.28-3.85c.37-.682.67-1.399.9-2.14a4.3 4.3 0 0 1-1.87.42 4.5 4.5 0 0 1-3.19-7.68m1.79 5.26a2.55 2.55 0 0 0 1.39.42c.343.007.684-.057 1-.19a2.48 2.48 0 0 0 1.31-1.35 2.5 2.5 0 0 0-2.797-3.415 2.5 2.5 0 0 0-.903 4.535m11.21-5.26A4.5 4.5 0 0 1 23 8.33v.5a14.4 14.4 0 0 1-1.76 6.68 14.7 14.7 0 0 1-3.78 4.44 1 1 0 0 1-1.26-1.55 12.3 12.3 0 0 0 3.28-3.85c.37-.682.67-1.399.9-2.14a4.3 4.3 0 0 1-1.87.42 4.5 4.5 0 0 1-3.18-7.68zm1.79 5.26a2.55 2.55 0 0 0 1.39.42c.343.007.684-.057 1-.19a2.48 2.48 0 0 0 1.35-1.35 2.45 2.45 0 0 0 .19-1 2.5 2.5 0 0 0-2.987-2.455A2.5 2.5 0 0 0 16.23 9.25c.175.463.481.866.88 1.16"/></symbol>
|
|
315
314
|
<symbol id="recording-02" viewBox="0 0 24 24" class="pdsicon"><path d="M15.5 21V3a1 1 0 1 1 2 0v18a1 1 0 1 1-2 0M11 18V6a1 1 0 1 1 2 0v12a1 1 0 1 1-2 0m-9-4v-4a1 1 0 0 1 2 0v4a1 1 0 1 1-2 0m18 0v-4a1 1 0 1 1 2 0v4a1 1 0 1 1-2 0M6.5 13v-2a1 1 0 1 1 2 0v2a1 1 0 1 1-2 0"/></symbol>
|
|
@@ -114,8 +114,9 @@ const downloadImages = (icons, outputDir, pageName) => {
|
|
|
114
114
|
throw err;
|
|
115
115
|
});
|
|
116
116
|
};
|
|
117
|
+
// Figma treats both "_" and "." prefixes as private, unpublished layers.
|
|
117
118
|
const isNotIgnored = (value) => {
|
|
118
|
-
return !value.name.startsWith('_');
|
|
119
|
+
return !value.name.startsWith('_') && !value.name.startsWith('.');
|
|
119
120
|
};
|
|
120
121
|
const isNotText = (value) => {
|
|
121
122
|
return value.type.toLowerCase() !== 'text';
|
|
@@ -150,7 +151,20 @@ const extractIcons = (pageData, ignoreFrames, componentMetadata, pageName) => {
|
|
|
150
151
|
});
|
|
151
152
|
}
|
|
152
153
|
});
|
|
153
|
-
return iconLibrary;
|
|
154
|
+
return dedupeIconsByName(iconLibrary);
|
|
155
|
+
};
|
|
156
|
+
// Duplicate names would race to write the same SVG file, so keep the first one Figma returns.
|
|
157
|
+
const dedupeIconsByName = (icons) => {
|
|
158
|
+
const seen = new Map();
|
|
159
|
+
icons.forEach((icon) => {
|
|
160
|
+
const kept = seen.get(icon.name);
|
|
161
|
+
if (kept) {
|
|
162
|
+
log(chalk.yellow(`Duplicate icon name "${icon.name}": keeping ${kept.id} (${kept.frame}), skipping ${icon.id} (${icon.frame})`));
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
seen.set(icon.name, icon);
|
|
166
|
+
});
|
|
167
|
+
return [...seen.values()];
|
|
154
168
|
};
|
|
155
169
|
/**
|
|
156
170
|
* Process that finds and downloads SVGs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figma-icon-export.js","sourceRoot":"","sources":["../../../scripts/figma_icons/figma-icon-export.ts"],"names":[],"mappings":"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","sourcesContent":["import * as dotenv from 'dotenv';\n\n/* eslint-disable @typescript-eslint/no-var-requires */\nconst axios = require('axios');\nimport chalk from 'chalk'; // Terminal string styling done right\nimport path from 'path';\nimport fs from 'fs-extra';\n\nimport { run as finalizeExport } from './finalize-export';\nimport { run as optimizeSvgs} from '../optimize-svgs'\n\nimport { FigmaIcon, FigmaIconConfig } from './types';\n\nif (process.env.NODE_ENV !== 'prod') {\n dotenv.config({ path: `${process.cwd()}/.env` });\n}\n\nconst info = chalk.white;\nconst error = chalk.red.bold;\nconst detail = chalk.yellowBright;\nconst log = console.log;\n\nconst defaultBatchSize = 500;\n\nlet figmaClient;\nlet config: FigmaIconConfig;\n\nconst run = async (rootDir: string) : Promise<any> => {\n try {\n const optimizedOutputDir = path.join(rootDir, 'src');\n const optimizedOutputSvgDir = path.join(optimizedOutputDir, 'svg');\n\n config = await loadFigmaIconConfig(rootDir);\n figmaClient = client(config.figmaAccessToken);\n\n config.downloadPath = path.join(rootDir, config.downloadPath);\n\n await fs.emptyDir(config.downloadPath)\n await fs.emptyDir(optimizedOutputSvgDir);\n\n const results = await config.pageNames.reduce(async (accPromise, pageName) => {\n const acc = await accPromise;\n\n const result = await processData(rootDir, config, pageName);\n\n await optimizeSvgs(rootDir, true);\n\n log(info('Total results processed: ', detail(result.downloaded.length), 'for Page: ', detail(pageName)));\n\n acc.push(result);\n\n return acc;\n }, Promise.resolve([])); // Initial value is a resolved promise with an empty array\n\n\n const flattenedResults = results.reduce((acc, item) => {\n // Combine icons\n acc.icons = [...acc.icons, ...item.icons];\n\n // Combine downloaded\n acc.downloaded = [...acc.downloaded, ...item.downloaded];\n\n return acc;\n }, { icons: [], downloaded: [] });\n\n await finalizeExport(config, flattenedResults, rootDir);\n\n removeTmpDirectory(config);\n\n return results;\n }\n catch (e) {\n log(error(e));\n process.exit(1);\n }\n}\n\n/**\n * Creates the axios client with the appropriate\n * headers and url.\n *\n * @param apiToken required token to pass in the headers\n * @returns Axios client object\n */\nconst client = (apiToken) => {\n const figmaBaseApiURL = 'https://api.figma.com/v1';\n const instance = axios.create({\n baseURL: figmaBaseApiURL,\n headers: {\n 'Content-Type': 'application/json',\n 'X-Figma-Token': apiToken\n }\n })\n\n instance.interceptors.request.use((conf) => {\n conf.startTime = new Date().getTime();\n\n return conf;\n });\n\n return instance;\n};\n\n/**\n * Downloads the images\n *\n * @param icon - The FigmaIcon object\n * @param outputDir - The directory that the svg will be downloaded\n * @returns a object with the name and size of the svg\n */\nconst downloadImages = (icons: FigmaIcon[], outputDir: string, pageName: string) => {\n // Ensure the output directory exists\n if (!fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, { recursive: true });\n }\n\n // Map each icon to a promise that resolves when the download and write is complete\n const downloadPromises = icons.map((icon) => {\n const nameClean = icon.name.toLowerCase();\n const iconNameSuffix = pageName === 'Icons' ? '' : `-${pageName.toLowerCase()}`;\n const filename= `${nameClean}${iconNameSuffix}.svg`;\n const imagePath = path.resolve(outputDir, filename);\n\n return axios.get(icon.url, { responseType: 'arraybuffer' })\n .then((res) => {\n fs.writeFileSync(imagePath, res.data);\n icon.filesize = fs.statSync(imagePath).size;\n log(info('Successfully downloaded and saved:'), detail(filename));\n\n return {\n name: filename,\n size: icon.filesize\n };\n })\n .catch((err) => {\n logErrorMessage(`Failed to download ${icon.name} from ${icon.url}:`, err.message);\n throw err; // Re-throw to handle in Promise.all\n });\n });\n\n return Promise.all(downloadPromises)\n .then((results) => {\n info('All downloads completed successfully.');\n return results; // Array of all icon file details\n })\n .catch((err) => {\n logErrorMessage('An error occurred while downloading images:', err);\n throw err;\n });\n};\n\nconst isNotIgnored = (value) => {\n return !value.name.startsWith('_');\n}\n\nconst isNotText = (value) => {\n return value.type.toLowerCase() !== 'text';\n}\n\n/**\n * Extract all the icons from figma page data.\n *\n * @param pageData - an object containing the Page details\n * @param ignoreFrames - an array of names to be ignored\n * @param componentMetadata - an object containing additional details for the icon\n * @returns An array of FigmaIcons\n */\nconst extractIcons = (pageData, ignoreFrames: string[], componentMetadata, pageName) => {\n\n const iconFrames = pageData.children.filter(isNotIgnored);\n\n log(info('-- # of Frames to be processed: ', detail(iconFrames.length)));\n const iconLibrary: Array<FigmaIcon> = [];\n\n iconFrames.forEach((frame) => {\n if ( ['COMPONENT_SET', 'FRAME'].includes(frame.type) && !ignoreFrames?.includes(frame.name)) {\n const components = frame.children.filter(isNotText);\n\n log(info('---- Frame:', detail(frame.name), ':', detail(components.length).trim(), 'icons'));\n\n const componentSuffix = pageName === pageData.name ? '' : `-${pageData.name}`;\n components.forEach( (component) => {\n const icon = {\n id: component.id,\n frame: frame.name.toLowerCase().replaceAll(' ', '-'),\n name: !isNaN(component.name) ? `number-${component.name}${componentSuffix}`: `${component.name}${componentSuffix}`\n };\n\n\n if (componentMetadata[component.id] !== undefined ) {\n icon[\"tags\"] = componentMetadata[component.id].description\n }\n\n iconLibrary.push(icon)\n });\n }\n });\n\n return iconLibrary;\n}\n\n/**\n * Process that finds and downloads SVGs\n *\n\n * @param fileId - The unique Id for the Figma File\n * @param config - The configuration object\n * @param iconLibrary - The array of FigmaIcons\n * @returns - An object with the icons and downloaded SVGs\n */\nconst fetchAndDownloadIcons = async (fileId: string, config: FigmaIconConfig, iconLibrary, pageName: string) => {\n try {\n const icons: Array<FigmaIcon> = await fetchImageUrls(fileId, iconLibrary)\n\n const outputDirectory = config.downloadPath;\n\n const allIcons = await downloadImages(icons, outputDirectory, pageName);\n\n return {\n icons: iconLibrary,\n downloaded: allIcons,\n }\n\n } catch (e) {\n logErrorMessage('fetchAndDonwloadIcons', e);\n }\n}\n\n/**\n * Process that will make an API call to retrieve\n * the FigmaFile data\n *\n * @oaram fileId - string: the fileId of the Figma File / Branch\n * @returns - JSON data from Figma API - See {@link https://www.figma.com/developers/api#get-files-endpoint | GET File}\n */\nconst fetchFigmaData = (fileId: string) => {\n const requestPath = `files/${fileId}?branch_data=true`;\n\n const data = figmaClient.get(requestPath)\n .then((resp) => {\n return resp.data;\n })\n .catch((err) => {\n log(error('Error occurred fetching Figma Data, error: ', err));\n });\n\n return data;\n}\n\n/**\n * Sends a request to get a collection\n * icon urls to download\n *\n * @param fileId - The FileId that contains the icons\n * @param icons - An array of @see {@link FigmaIcon}\n * @returns - Array<FigmaIcon> with urls\n */\nconst fetchImageUrls = (fileId: string, icons: Array<FigmaIcon>) => {\n return new Promise<FigmaIcon[]>((resolve) => {\n const iconIds = icons.map(icon => icon.id).join(',')\n\n figmaClient.get(`images/${fileId}?ids=${iconIds}&format=svg`)\n .then((res) => {\n const imageUrls: string[] = res.data.images;\n log(info(`Image Api returned ${chalk.yellowBright(Object.keys(res.data.images).length)} image urls\\n`));\n\n icons.forEach(icon => {\n icon.url = imageUrls[icon.id]\n })\n\n resolve(icons);\n })\n .catch((err) => {\n log(error('Unable to get icons: ', err));\n process.exit(1);\n });\n })\n}\n\n/**\n * Locate the page in the Figma Data\n *\n * @param document - Figma document data\n * @param pageName - Name of the page to find\n * @returns a Node with the Page data\n */\nconst findPage = (document, pageName: string,) => {\n const iconPage = document.children.find(c => c.name === pageName);\n\n if (!iconPage) {\n log(error('No Page found, please check the name \"', chalk.white.bgRedBright(pageName), '\"'));\n process.exit(1);\n // throw error(`No Page found, please check the name \"${chalk.white.bgRedBright(pageName)}\"`)\n }\n\n return iconPage\n};\n\n/**\n * Loads the figma-icon-config\n *\n * @params rootDir - The source directory\n * @returns FigmaIconConfig object\n */\nconst loadFigmaIconConfig = async (rootDir: string) => {\n try {\n const configFile = path.resolve(path.join(rootDir, 'figma-icon-config.json'));\n\n if (fs.existsSync(configFile)) {\n log(info('Config file located at: ', detail(configFile)));\n\n const strConfig = await fs.readFile(configFile, 'utf-8');\n const config = JSON.parse(strConfig) as FigmaIconConfig;\n\n let hasError = false;\n\n setFigmaBatchSize(config);\n hasError ||= setFigmaAccessToken(config);\n hasError ||= setFigmaFileId(config);\n\n if (hasError) {\n logErrorMessage('loadFigmaIconConfig', null);\n process.exit(1);\n }\n\n return config;\n }\n }\n catch (e) {\n logErrorMessage('loadFigmaIconConfig', e);\n process.exit(1);\n }\n}\n\n/**\n * The main process that invokes the Figma Export process\n *\n * @params rootDir - The initial starting directory\n * @params config - The config data\n */\nconst processData = async (_rootDir: string, config: FigmaIconConfig, pageName) => {\n try {\n let figmaFileId = config.figmaFileId;\n let figmaData = await fetchFigmaData(figmaFileId);\n\n if ( config.branchName && figmaData.branches.length > 0) {\n const branch = figmaData.branches.find(b => b.name.toLowerCase() === config.branchName.toLowerCase())\n\n if (!branch) {\n log(error('No branch found with the name'), chalk.white.bgRed(config.branchName));\n process.exit(1);\n }\n\n figmaFileId = branch.key;\n log(info('Found branch!! Retrieving data for Branch:',detail(config.branchName), ', Branch File id:',detail(figmaFileId)));\n\n figmaData = await fetchFigmaData(figmaFileId);\n }\n\n log(info('Page to be processed: ', detail(pageName)));\n const page = findPage(figmaData.document, pageName);\n const iconsArray = extractIcons(page, config.ignoreFrames, figmaData.components, pageName);\n const batches = splitIntoBatches(iconsArray, config.batchSize);\n\n log(chalk.yellowBright(iconsArray.length), info('icons have been extracted'))\n\n let output = { icons: [], downloaded: [] };\n\n const iconResults = Promise.all(batches.map(async (batch, idx) => {\n log(\"Processing batch\", chalk.yellowBright(idx+1), \" of \", chalk.yellowBright(batches.length, \" with \", chalk.yellowBright(batch.length), \" icons\"));\n\n const downloaded = await fetchAndDownloadIcons(figmaFileId, config, batch, pageName);\n\n return downloaded;\n })).then((results) => {\n if (results.length === 0) {\n return output;\n }\n\n output = results.reduce((acc, iconResult) => {\n acc.icons = acc.icons.concat(iconResult.icons);\n acc.downloaded = acc.downloaded.concat(iconResult.downloaded);\n return acc;\n });\n\n return output;\n });\n\n return iconResults;\n\n } catch (e) {\n logErrorMessage('processData', e);\n }\n}\n\n/***************************/\n/* Kicks off the Process */\n/***************************/\nconsole.log(path.join(__dirname, '../..'))\nrun(path.join(__dirname, '../..'));\n\n/**\n *\n * Helper Methods\n *\n *\n */\n\n/**\n * Logs an error message\n * @param methodName - the name of the method the error occurred in\n * @param err - the error\n */\nconst logErrorMessage = (methodName: string, err) => {\n log('Error in ' , detail(methodName), '\\n Message: ', error(err));\n}\n\n/**\n * Removes the tmp directory created during\n * the download process from the FigmaAPI\n *\n * @param config - FigmaIconConfig object\n */\nconst removeTmpDirectory = (config: FigmaIconConfig) => {\n log('Removing tmp directory')\n const tmpDir = path.join(config.downloadPath, '..');\n fs.rmSync(tmpDir, { force: true, recursive: true });\n}\n\n/**\n * Reads the batchSize if set in the\n * configuration file or environment variable.\n * If one is not found, it will use the default of 500\n *\n * @param config - FigmaIconConfig object\n * @returns boolean - hasError occurred\n */\n\nconst setFigmaBatchSize = (config: FigmaIconConfig) => {\n switch(true) {\n case (!!process.env.BATCH_SIZE == true):\n log(info('Using Batch Size in ', detail('ENVIRONMENT variable')));\n config.batchSize = parseInt(process.env.BATCH_SIZE);\n break;\n\n case (!!config.batchSize == true):\n log(info('Using Batch Size in ', detail('CONFIGURATION file')));\n break;\n\n case (!config.batchSize && !process.env.BATCH_SIZE) == true:\n config.batchSize = defaultBatchSize\n log(info('Using default Batch Size of ', detail(defaultBatchSize)));\n break;\n }\n}\n\n/**\n * Reads and Sets the Figma access token\n *\n * @params config - FigmaIconConfig object\n * @returns boolean - hasError occurred\n */\nconst setFigmaAccessToken = (config: FigmaIconConfig) => {\n let hasError = false;\n\n // Figma Token check\n // Config file overrides Environment variable\n switch(true) {\n // Use Environment variable\n case (!!process.env.FIGMA_ACCESS_TOKEN == true):\n log(info('Using Figma Access Token in ', detail('ENVIRONMENT variable')));\n config.figmaAccessToken = process.env.FIGMA_ACCESS_TOKEN;\n break;\n\n case (!!config.figmaAccessToken == true):\n log(info('Using Figma Access Token in ', detail('CONFIGURATION file')));\n break;\n\n case (!config.figmaAccessToken && !process.env.FIGMA_ACCESS_TOKEN) == true:\n hasError ||= true;\n log(error('No Figma Access Token has been provided!!!!!'));\n break;\n }\n\n return hasError;\n}\n\n/**\n * Sets the Figma file id\n *\n * @params config - FigmaIconConfig object\n * @returns boolean - hasError occurred\n */\nconst setFigmaFileId = (config: FigmaIconConfig) => {\n let hasError = false\n\n // Figma File Id check\n // Config file overrides Environment Variable\n switch(true) {\n // Use Environment variable\n case (!!process.env.FIGMA_FILE_ID == true):\n log(info('Using Figma File Id in ',detail('ENVIROMENT variable')));\n config.figmaFileId = process.env.FIGMA_FILE_ID\n break;\n\n // Use provided token in config\n case (!!config.figmaFileId == true):\n log(info('Using Figma File Id in ',detail('Configuration file')));\n break;\n\n\n // Render error and exit process\n case (!config.figmaFileId && !process.env.FIGMA_FILE_ID) == true:\n hasError ||= true;\n log(error('No Figma File Id has been provided!!!!'))\n\n break;\n }\n\n return hasError;\n}\n\n/**\n * Splits the result set of FigmaIcons into\n * smaller processible batches for Figma API\n *\n * @param array - an array of FigmaIcon objects\n * @param batchSize - size of the batch\n * @returns array - an array of arrays of FigmaIcon objects\n */\nconst splitIntoBatches = ( array: Array<FigmaIcon>, batchSize: number) => {\n const batches = [];\n for (let i = 0; i < array.length; i += batchSize) {\n const batch = array.slice(i, i + batchSize);\n batches.push(batch);\n }\n return batches;\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"figma-icon-export.js","sourceRoot":"","sources":["../../../scripts/figma_icons/figma-icon-export.ts"],"names":[],"mappings":"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","sourcesContent":["import * as dotenv from 'dotenv';\n\n/* eslint-disable @typescript-eslint/no-var-requires */\nconst axios = require('axios');\nimport chalk from 'chalk'; // Terminal string styling done right\nimport path from 'path';\nimport fs from 'fs-extra';\n\nimport { run as finalizeExport } from './finalize-export';\nimport { run as optimizeSvgs} from '../optimize-svgs'\n\nimport { FigmaIcon, FigmaIconConfig } from './types';\n\nif (process.env.NODE_ENV !== 'prod') {\n dotenv.config({ path: `${process.cwd()}/.env` });\n}\n\nconst info = chalk.white;\nconst error = chalk.red.bold;\nconst detail = chalk.yellowBright;\nconst log = console.log;\n\nconst defaultBatchSize = 500;\n\nlet figmaClient;\nlet config: FigmaIconConfig;\n\nconst run = async (rootDir: string) : Promise<any> => {\n try {\n const optimizedOutputDir = path.join(rootDir, 'src');\n const optimizedOutputSvgDir = path.join(optimizedOutputDir, 'svg');\n\n config = await loadFigmaIconConfig(rootDir);\n figmaClient = client(config.figmaAccessToken);\n\n config.downloadPath = path.join(rootDir, config.downloadPath);\n\n await fs.emptyDir(config.downloadPath)\n await fs.emptyDir(optimizedOutputSvgDir);\n\n const results = await config.pageNames.reduce(async (accPromise, pageName) => {\n const acc = await accPromise;\n\n const result = await processData(rootDir, config, pageName);\n\n await optimizeSvgs(rootDir, true);\n\n log(info('Total results processed: ', detail(result.downloaded.length), 'for Page: ', detail(pageName)));\n\n acc.push(result);\n\n return acc;\n }, Promise.resolve([])); // Initial value is a resolved promise with an empty array\n\n\n const flattenedResults = results.reduce((acc, item) => {\n // Combine icons\n acc.icons = [...acc.icons, ...item.icons];\n\n // Combine downloaded\n acc.downloaded = [...acc.downloaded, ...item.downloaded];\n\n return acc;\n }, { icons: [], downloaded: [] });\n\n await finalizeExport(config, flattenedResults, rootDir);\n\n removeTmpDirectory(config);\n\n return results;\n }\n catch (e) {\n log(error(e));\n process.exit(1);\n }\n}\n\n/**\n * Creates the axios client with the appropriate\n * headers and url.\n *\n * @param apiToken required token to pass in the headers\n * @returns Axios client object\n */\nconst client = (apiToken) => {\n const figmaBaseApiURL = 'https://api.figma.com/v1';\n const instance = axios.create({\n baseURL: figmaBaseApiURL,\n headers: {\n 'Content-Type': 'application/json',\n 'X-Figma-Token': apiToken\n }\n })\n\n instance.interceptors.request.use((conf) => {\n conf.startTime = new Date().getTime();\n\n return conf;\n });\n\n return instance;\n};\n\n/**\n * Downloads the images\n *\n * @param icon - The FigmaIcon object\n * @param outputDir - The directory that the svg will be downloaded\n * @returns a object with the name and size of the svg\n */\nconst downloadImages = (icons: FigmaIcon[], outputDir: string, pageName: string) => {\n // Ensure the output directory exists\n if (!fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, { recursive: true });\n }\n\n // Map each icon to a promise that resolves when the download and write is complete\n const downloadPromises = icons.map((icon) => {\n const nameClean = icon.name.toLowerCase();\n const iconNameSuffix = pageName === 'Icons' ? '' : `-${pageName.toLowerCase()}`;\n const filename= `${nameClean}${iconNameSuffix}.svg`;\n const imagePath = path.resolve(outputDir, filename);\n\n return axios.get(icon.url, { responseType: 'arraybuffer' })\n .then((res) => {\n fs.writeFileSync(imagePath, res.data);\n icon.filesize = fs.statSync(imagePath).size;\n log(info('Successfully downloaded and saved:'), detail(filename));\n\n return {\n name: filename,\n size: icon.filesize\n };\n })\n .catch((err) => {\n logErrorMessage(`Failed to download ${icon.name} from ${icon.url}:`, err.message);\n throw err; // Re-throw to handle in Promise.all\n });\n });\n\n return Promise.all(downloadPromises)\n .then((results) => {\n info('All downloads completed successfully.');\n return results; // Array of all icon file details\n })\n .catch((err) => {\n logErrorMessage('An error occurred while downloading images:', err);\n throw err;\n });\n};\n\n// Figma treats both \"_\" and \".\" prefixes as private, unpublished layers.\nconst isNotIgnored = (value) => {\n return !value.name.startsWith('_') && !value.name.startsWith('.');\n}\n\nconst isNotText = (value) => {\n return value.type.toLowerCase() !== 'text';\n}\n\n/**\n * Extract all the icons from figma page data.\n *\n * @param pageData - an object containing the Page details\n * @param ignoreFrames - an array of names to be ignored\n * @param componentMetadata - an object containing additional details for the icon\n * @returns An array of FigmaIcons\n */\nconst extractIcons = (pageData, ignoreFrames: string[], componentMetadata, pageName) => {\n\n const iconFrames = pageData.children.filter(isNotIgnored);\n\n log(info('-- # of Frames to be processed: ', detail(iconFrames.length)));\n const iconLibrary: Array<FigmaIcon> = [];\n\n iconFrames.forEach((frame) => {\n if ( ['COMPONENT_SET', 'FRAME'].includes(frame.type) && !ignoreFrames?.includes(frame.name)) {\n const components = frame.children.filter(isNotText);\n\n log(info('---- Frame:', detail(frame.name), ':', detail(components.length).trim(), 'icons'));\n\n const componentSuffix = pageName === pageData.name ? '' : `-${pageData.name}`;\n components.forEach( (component) => {\n const icon = {\n id: component.id,\n frame: frame.name.toLowerCase().replaceAll(' ', '-'),\n name: !isNaN(component.name) ? `number-${component.name}${componentSuffix}`: `${component.name}${componentSuffix}`\n };\n\n\n if (componentMetadata[component.id] !== undefined ) {\n icon[\"tags\"] = componentMetadata[component.id].description\n }\n\n iconLibrary.push(icon)\n });\n }\n });\n\n return dedupeIconsByName(iconLibrary);\n}\n\n// Duplicate names would race to write the same SVG file, so keep the first one Figma returns.\nconst dedupeIconsByName = (icons: Array<FigmaIcon>) => {\n const seen = new Map<string, FigmaIcon>();\n\n icons.forEach((icon) => {\n const kept = seen.get(icon.name);\n\n if (kept) {\n log(chalk.yellow(`Duplicate icon name \"${icon.name}\": keeping ${kept.id} (${kept.frame}), skipping ${icon.id} (${icon.frame})`));\n return;\n }\n\n seen.set(icon.name, icon);\n });\n\n return [...seen.values()];\n}\n\n/**\n * Process that finds and downloads SVGs\n *\n\n * @param fileId - The unique Id for the Figma File\n * @param config - The configuration object\n * @param iconLibrary - The array of FigmaIcons\n * @returns - An object with the icons and downloaded SVGs\n */\nconst fetchAndDownloadIcons = async (fileId: string, config: FigmaIconConfig, iconLibrary, pageName: string) => {\n try {\n const icons: Array<FigmaIcon> = await fetchImageUrls(fileId, iconLibrary)\n\n const outputDirectory = config.downloadPath;\n\n const allIcons = await downloadImages(icons, outputDirectory, pageName);\n\n return {\n icons: iconLibrary,\n downloaded: allIcons,\n }\n\n } catch (e) {\n logErrorMessage('fetchAndDonwloadIcons', e);\n }\n}\n\n/**\n * Process that will make an API call to retrieve\n * the FigmaFile data\n *\n * @oaram fileId - string: the fileId of the Figma File / Branch\n * @returns - JSON data from Figma API - See {@link https://www.figma.com/developers/api#get-files-endpoint | GET File}\n */\nconst fetchFigmaData = (fileId: string) => {\n const requestPath = `files/${fileId}?branch_data=true`;\n\n const data = figmaClient.get(requestPath)\n .then((resp) => {\n return resp.data;\n })\n .catch((err) => {\n log(error('Error occurred fetching Figma Data, error: ', err));\n });\n\n return data;\n}\n\n/**\n * Sends a request to get a collection\n * icon urls to download\n *\n * @param fileId - The FileId that contains the icons\n * @param icons - An array of @see {@link FigmaIcon}\n * @returns - Array<FigmaIcon> with urls\n */\nconst fetchImageUrls = (fileId: string, icons: Array<FigmaIcon>) => {\n return new Promise<FigmaIcon[]>((resolve) => {\n const iconIds = icons.map(icon => icon.id).join(',')\n\n figmaClient.get(`images/${fileId}?ids=${iconIds}&format=svg`)\n .then((res) => {\n const imageUrls: string[] = res.data.images;\n log(info(`Image Api returned ${chalk.yellowBright(Object.keys(res.data.images).length)} image urls\\n`));\n\n icons.forEach(icon => {\n icon.url = imageUrls[icon.id]\n })\n\n resolve(icons);\n })\n .catch((err) => {\n log(error('Unable to get icons: ', err));\n process.exit(1);\n });\n })\n}\n\n/**\n * Locate the page in the Figma Data\n *\n * @param document - Figma document data\n * @param pageName - Name of the page to find\n * @returns a Node with the Page data\n */\nconst findPage = (document, pageName: string,) => {\n const iconPage = document.children.find(c => c.name === pageName);\n\n if (!iconPage) {\n log(error('No Page found, please check the name \"', chalk.white.bgRedBright(pageName), '\"'));\n process.exit(1);\n // throw error(`No Page found, please check the name \"${chalk.white.bgRedBright(pageName)}\"`)\n }\n\n return iconPage\n};\n\n/**\n * Loads the figma-icon-config\n *\n * @params rootDir - The source directory\n * @returns FigmaIconConfig object\n */\nconst loadFigmaIconConfig = async (rootDir: string) => {\n try {\n const configFile = path.resolve(path.join(rootDir, 'figma-icon-config.json'));\n\n if (fs.existsSync(configFile)) {\n log(info('Config file located at: ', detail(configFile)));\n\n const strConfig = await fs.readFile(configFile, 'utf-8');\n const config = JSON.parse(strConfig) as FigmaIconConfig;\n\n let hasError = false;\n\n setFigmaBatchSize(config);\n hasError ||= setFigmaAccessToken(config);\n hasError ||= setFigmaFileId(config);\n\n if (hasError) {\n logErrorMessage('loadFigmaIconConfig', null);\n process.exit(1);\n }\n\n return config;\n }\n }\n catch (e) {\n logErrorMessage('loadFigmaIconConfig', e);\n process.exit(1);\n }\n}\n\n/**\n * The main process that invokes the Figma Export process\n *\n * @params rootDir - The initial starting directory\n * @params config - The config data\n */\nconst processData = async (_rootDir: string, config: FigmaIconConfig, pageName) => {\n try {\n let figmaFileId = config.figmaFileId;\n let figmaData = await fetchFigmaData(figmaFileId);\n\n if ( config.branchName && figmaData.branches.length > 0) {\n const branch = figmaData.branches.find(b => b.name.toLowerCase() === config.branchName.toLowerCase())\n\n if (!branch) {\n log(error('No branch found with the name'), chalk.white.bgRed(config.branchName));\n process.exit(1);\n }\n\n figmaFileId = branch.key;\n log(info('Found branch!! Retrieving data for Branch:',detail(config.branchName), ', Branch File id:',detail(figmaFileId)));\n\n figmaData = await fetchFigmaData(figmaFileId);\n }\n\n log(info('Page to be processed: ', detail(pageName)));\n const page = findPage(figmaData.document, pageName);\n const iconsArray = extractIcons(page, config.ignoreFrames, figmaData.components, pageName);\n const batches = splitIntoBatches(iconsArray, config.batchSize);\n\n log(chalk.yellowBright(iconsArray.length), info('icons have been extracted'))\n\n let output = { icons: [], downloaded: [] };\n\n const iconResults = Promise.all(batches.map(async (batch, idx) => {\n log(\"Processing batch\", chalk.yellowBright(idx+1), \" of \", chalk.yellowBright(batches.length, \" with \", chalk.yellowBright(batch.length), \" icons\"));\n\n const downloaded = await fetchAndDownloadIcons(figmaFileId, config, batch, pageName);\n\n return downloaded;\n })).then((results) => {\n if (results.length === 0) {\n return output;\n }\n\n output = results.reduce((acc, iconResult) => {\n acc.icons = acc.icons.concat(iconResult.icons);\n acc.downloaded = acc.downloaded.concat(iconResult.downloaded);\n return acc;\n });\n\n return output;\n });\n\n return iconResults;\n\n } catch (e) {\n logErrorMessage('processData', e);\n }\n}\n\n/***************************/\n/* Kicks off the Process */\n/***************************/\nconsole.log(path.join(__dirname, '../..'))\nrun(path.join(__dirname, '../..'));\n\n/**\n *\n * Helper Methods\n *\n *\n */\n\n/**\n * Logs an error message\n * @param methodName - the name of the method the error occurred in\n * @param err - the error\n */\nconst logErrorMessage = (methodName: string, err) => {\n log('Error in ' , detail(methodName), '\\n Message: ', error(err));\n}\n\n/**\n * Removes the tmp directory created during\n * the download process from the FigmaAPI\n *\n * @param config - FigmaIconConfig object\n */\nconst removeTmpDirectory = (config: FigmaIconConfig) => {\n log('Removing tmp directory')\n const tmpDir = path.join(config.downloadPath, '..');\n fs.rmSync(tmpDir, { force: true, recursive: true });\n}\n\n/**\n * Reads the batchSize if set in the\n * configuration file or environment variable.\n * If one is not found, it will use the default of 500\n *\n * @param config - FigmaIconConfig object\n * @returns boolean - hasError occurred\n */\n\nconst setFigmaBatchSize = (config: FigmaIconConfig) => {\n switch(true) {\n case (!!process.env.BATCH_SIZE == true):\n log(info('Using Batch Size in ', detail('ENVIRONMENT variable')));\n config.batchSize = parseInt(process.env.BATCH_SIZE);\n break;\n\n case (!!config.batchSize == true):\n log(info('Using Batch Size in ', detail('CONFIGURATION file')));\n break;\n\n case (!config.batchSize && !process.env.BATCH_SIZE) == true:\n config.batchSize = defaultBatchSize\n log(info('Using default Batch Size of ', detail(defaultBatchSize)));\n break;\n }\n}\n\n/**\n * Reads and Sets the Figma access token\n *\n * @params config - FigmaIconConfig object\n * @returns boolean - hasError occurred\n */\nconst setFigmaAccessToken = (config: FigmaIconConfig) => {\n let hasError = false;\n\n // Figma Token check\n // Config file overrides Environment variable\n switch(true) {\n // Use Environment variable\n case (!!process.env.FIGMA_ACCESS_TOKEN == true):\n log(info('Using Figma Access Token in ', detail('ENVIRONMENT variable')));\n config.figmaAccessToken = process.env.FIGMA_ACCESS_TOKEN;\n break;\n\n case (!!config.figmaAccessToken == true):\n log(info('Using Figma Access Token in ', detail('CONFIGURATION file')));\n break;\n\n case (!config.figmaAccessToken && !process.env.FIGMA_ACCESS_TOKEN) == true:\n hasError ||= true;\n log(error('No Figma Access Token has been provided!!!!!'));\n break;\n }\n\n return hasError;\n}\n\n/**\n * Sets the Figma file id\n *\n * @params config - FigmaIconConfig object\n * @returns boolean - hasError occurred\n */\nconst setFigmaFileId = (config: FigmaIconConfig) => {\n let hasError = false\n\n // Figma File Id check\n // Config file overrides Environment Variable\n switch(true) {\n // Use Environment variable\n case (!!process.env.FIGMA_FILE_ID == true):\n log(info('Using Figma File Id in ',detail('ENVIROMENT variable')));\n config.figmaFileId = process.env.FIGMA_FILE_ID\n break;\n\n // Use provided token in config\n case (!!config.figmaFileId == true):\n log(info('Using Figma File Id in ',detail('Configuration file')));\n break;\n\n\n // Render error and exit process\n case (!config.figmaFileId && !process.env.FIGMA_FILE_ID) == true:\n hasError ||= true;\n log(error('No Figma File Id has been provided!!!!'))\n\n break;\n }\n\n return hasError;\n}\n\n/**\n * Splits the result set of FigmaIcons into\n * smaller processible batches for Figma API\n *\n * @param array - an array of FigmaIcon objects\n * @param batchSize - size of the batch\n * @returns array - an array of arrays of FigmaIcon objects\n */\nconst splitIntoBatches = ( array: Array<FigmaIcon>, batchSize: number) => {\n const batches = [];\n for (let i = 0; i < array.length; i += batchSize) {\n const batch = array.slice(i, i + batchSize);\n batches.push(batch);\n }\n return batches;\n}\n\n"]}
|
|
@@ -8,6 +8,7 @@ import startCase from "lodash/startCase";
|
|
|
8
8
|
const log = console.log;
|
|
9
9
|
const error = chalk.red.bold;
|
|
10
10
|
const libraryName = 'pds-icons';
|
|
11
|
+
const validIconName = /^[a-z0-9]+(-[a-z0-9]+)*$/;
|
|
11
12
|
/**
|
|
12
13
|
* Builds the icons for distribution
|
|
13
14
|
*
|
|
@@ -84,6 +85,9 @@ const getSvgs = async (srcDir, distSvgDir, distPineIconsDir, outputSvgDir, isOpt
|
|
|
84
85
|
}
|
|
85
86
|
// iconName: airplane-outline
|
|
86
87
|
const iconName = dotSplit[0];
|
|
88
|
+
if (!validIconName.test(iconName)) {
|
|
89
|
+
throw new Error(`svg icon name "${iconName}" must be kebab-case (lowercase letters, numbers, and single hyphens)`);
|
|
90
|
+
}
|
|
87
91
|
if (reservedKeywords.has(iconName)) {
|
|
88
92
|
throw new Error(`svg icon name "${iconName}" is a reserved JavaScript keyword`);
|
|
89
93
|
}
|
|
@@ -228,6 +232,7 @@ const createDataJson = async (version, srcDir, distDir, srcSvgData) => {
|
|
|
228
232
|
data = {};
|
|
229
233
|
}
|
|
230
234
|
data.icons = data.icons || [];
|
|
235
|
+
assertUniqueIconNames(data.icons, srcDataJsonPath);
|
|
231
236
|
// Add any new icons
|
|
232
237
|
srcSvgData.forEach((svgData) => {
|
|
233
238
|
if (!data.icons.some((i) => i.name === svgData.iconName)) {
|
|
@@ -264,6 +269,20 @@ const createDataJson = async (version, srcDir, distDir, srcSvgData) => {
|
|
|
264
269
|
const distJsonStr = JSON.stringify(distJsonData, null, 2) + '\n';
|
|
265
270
|
await fs.writeFile(distDataJsonPath, distJsonStr);
|
|
266
271
|
};
|
|
272
|
+
// The Figma export already dedupes, so a duplicate here means a hand edit whose intended entry we can't guess.
|
|
273
|
+
const assertUniqueIconNames = (icons, filePath) => {
|
|
274
|
+
const seenNames = new Set();
|
|
275
|
+
const duplicates = new Set();
|
|
276
|
+
icons.forEach((icon) => {
|
|
277
|
+
if (seenNames.has(icon.name)) {
|
|
278
|
+
duplicates.add(icon.name);
|
|
279
|
+
}
|
|
280
|
+
seenNames.add(icon.name);
|
|
281
|
+
});
|
|
282
|
+
if (duplicates.size > 0) {
|
|
283
|
+
throw new Error(`${filePath} has duplicate icon names: ${[...duplicates].join(', ')}`);
|
|
284
|
+
}
|
|
285
|
+
};
|
|
267
286
|
const createIconPackage = async (version, iconDir, srcSvgData) => {
|
|
268
287
|
const iconPkgJsonFilePath = join(iconDir, 'package.json');
|
|
269
288
|
await Promise.all([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimize-svgs.js","sourceRoot":"","sources":["../../scripts/optimize-svgs.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs-extra';\nimport chalk from 'chalk';\nimport { join } from 'path'\nimport { optimize } from 'svgo';\n\nimport { JsonData, SvgData, reservedKeywords } from './helpers';\n\nimport camelCase from 'lodash/camelCase';\nimport startCase from 'lodash/startCase';\n\nconst log = console.log;\nconst error = chalk.red.bold;\n\nconst libraryName = 'pds-icons';\n\n/**\n * Builds the icons for distribution\n *\n * @param rootDir - The source directory\n * @param optimizeeFiles - Flag to indicate if we have files to optimize in `tmp/svg` folder.\n */\nexport const run = async(rootDir: string, optimizeFiles = false) => {\n try {\n const packageJsonPath = join(rootDir, 'package.json');\n const distDir = join(rootDir, 'dist');\n const distPineIconsDir = join(distDir, libraryName);\n const distSvgDir = join(distDir, 'svg');\n const iconDir = join(rootDir, 'icons');\n\n const optimizedOutputDir = join(rootDir, 'src');\n const optimizedOutputSvgDir = join(optimizedOutputDir, 'svg');\n\n const srcDir = join(rootDir, 'tmp');\n let srcSvgDir = join(srcDir, 'svg');\n\n // We will use the current svgs in the repo (src/svg) as the\n // source during CI builds. optimizeFiles will be FALSE.\n //\n // When running Figma icon process we will use `tmp/svg` folder.\n // optimizeFiles will be TRUE\n srcSvgDir = optimizeFiles ? srcSvgDir : optimizedOutputSvgDir;\n\n log('Source SVG Directory: ', srcSvgDir);\n\n await cleanDirectories(iconDir, distDir, distSvgDir, distPineIconsDir);\n\n const packageData = await fs.readJson(packageJsonPath);\n const version = packageData.version as string;\n\n log('Getting SVGs...');\n const srcSvgData = await getSvgs(srcSvgDir, distSvgDir, distPineIconsDir, optimizedOutputSvgDir, optimizeFiles);\n\n if (optimizeFiles) {\n log('Optimized OuputSvgDir: ', optimizedOutputSvgDir)\n\n log('Optimizing SVGs...');\n await optimizeSvgs(srcSvgData);\n }\n\n await Promise.all([\n createDataJson(version, optimizedOutputDir, distDir, srcSvgData),\n createIconPackage(version, iconDir, srcSvgData),\n ])\n\n const svgSymbolsContent = await createSvgSymbols(version, distDir, srcSvgData);\n\n await createCheatSheet(version, rootDir, distDir, svgSymbolsContent, srcSvgData);\n\n await copyToTesting(rootDir, distDir, srcSvgData);\n }\n catch (e) {\n log(error(e));\n process.exit(1);\n }\n\n}\n\nconst cleanDirectories = async (iconDir, distDir, distSvgDir, distPineIconsDir) => {\n await Promise.all([fs.emptyDir(iconDir), fs.emptyDir(distDir)]);\n await fs.emptyDir(distSvgDir), await fs.emptyDir(distPineIconsDir);\n}\n\nconst getSvgs = async (srcDir: string, distSvgDir: string, distPineIconsDir: string, outputSvgDir: string, isOptimizing: boolean): Promise<SvgData[]> => {\n const optimizedSvgDir = join(distPineIconsDir, 'svg');\n await fs.emptyDir(optimizedSvgDir);\n\n const svgFiles = (await fs.readdir(srcDir)).filter((filename) => {\n return !filename.startsWith('.') && filename.endsWith('.svg');\n });\n\n const svgData = await Promise.all(\n svgFiles.map(async (fileName) => {\n // fileName: airplane-outline.svg\n\n if (fileName.toLowerCase() !== fileName) {\n throw new Error(`svg filename \"${fileName}\" must be all lowercase`);\n }\n\n // srcFilePath: /tmp/svg/airplane-outline.svg\n const srcFilePath = join(srcDir, fileName);\n\n // distSvgFilePath: /dist/svg/airplane-outline.svg\n const distSvgFilePath = join(distSvgDir, fileName);\n\n // optimizedFilePath: /dist/pds-icons/svg/airplane-outline.svg\n const optimizedFilePath = join(optimizedSvgDir, fileName);\n\n // optimizedLocalSvgFilePath: /src/svg/airplane-outline.svg\n const optimizedLocalSvgFilePath = join(outputSvgDir, fileName);\n\n const dotSplit = fileName.split('.');\n if (dotSplit.length > 2) {\n throw new Error(`svg filename \"${fileName}\" cannot contain more than one period`);\n }\n\n // iconName: airplane-outline\n const iconName = dotSplit[0];\n\n if (reservedKeywords.has(iconName)) {\n throw new Error(`svg icon name \"${iconName}\" is a reserved JavaScript keyword`);\n }\n\n // fileNameMjs: airplane-outline.mjs\n const fileNameMjs = iconName + '.mjs';\n\n // fileNameCjs: airplane-outline.mjs\n const fileNameCjs = iconName + '.js';\n\n // exportName: airplaneOutline\n const exportName = camelCase(iconName);\n\n const title = startCase(\n fileName.replace('.svg', '').replace('-outline', '').replace('-sharp', '').replace(/-/g, ' '),\n );\n\n return {\n distSvgFilePath,\n exportName,\n fileName,\n fileNameCjs,\n fileNameMjs,\n iconName,\n optimizedFilePath,\n optimizedSvgContent: isOptimizing ? null : await fs.readFile(srcFilePath, 'utf8'),\n optimizedLocalSvgFilePath,\n srcFilePath,\n srcSvgContent: await fs.readFile(srcFilePath, 'utf8'),\n tags: [],\n title,\n };\n }),\n );\n\n return svgData.sort((a, b) => {\n if (a.exportName < b.exportName) return -1;\n if (a.exportName > b.exportName) return 1;\n return 0;\n });\n}\n\n/**\n * Optimizes the SVGs that are located in\n * the src/svg folder\n *\n *\n */\nconst optimizeSvgs = async (srcSvgData: Array<SvgData>) => {\n const optimizePass = {};\n const webComponentPass = {\n multipass: true,\n plugins: [\n 'removeStyleElement',\n 'removeScriptElement',\n 'removeDimensions',\n 'removeUselessDefs',\n {\n name: 'removeAttrs',\n params: {\n attrs: \"(fill|stroke|clip-rule)\"\n }\n },\n {\n name: 'addClassesToSVGElement',\n params: {\n className: 'pdsicon'\n }\n },\n ],\n };\n\n const sourcePass = {\n multipass: true,\n plugins: [\n 'removeStyleElement',\n 'removeScriptElement',\n 'removeDimensions',\n 'removeUselessDefs',\n {\n name: 'removeAttrs',\n params: {\n attrs: \"(fill|stroke|clip-rule)\"\n }\n },\n {\n name: 'addClassesToSVGElement',\n params: {\n className: 'pdsicon'\n }\n },\n ]\n };\n\n const validatePass = {\n multipass: true,\n plugins: [],\n };\n\n await Promise.all(\n srcSvgData.map( async (svgData) => {\n return optimizeSvg(optimizePass, webComponentPass, sourcePass, validatePass, svgData);\n }),\n );\n}\n\nconst optimizeSvg = async (optimizePass: Record<string, unknown>, webComponentPass: Record<string, unknown>, sourcePass: Record<string, unknown>, validatePass: Record<string, unknown>, svgData: SvgData) => {\n const srcSvgContent = await fs.readFile(svgData.srcFilePath, 'utf8');\n\n const optimizedSvg = await optimize(srcSvgContent, Object.assign(optimizePass, { path: svgData.srcFilePath }));\n\n const optimizedCode = optimizedSvg.data\n\n const webComponentSvg = await optimize(optimizedCode, Object.assign( webComponentPass, { path: svgData.srcFilePath }));\n const sourceSvg = await optimize(optimizedCode, Object.assign(sourcePass, { path: svgData.srcFilePath }));\n\n svgData.optimizedSvgContent = webComponentSvg.data;\n\n try {\n optimize(svgData.optimizedSvgContent, Object.assign(validatePass,{ path: svgData.srcFilePath }));\n }\n catch (err) {\n log(error(`${err.message}: ${svgData.srcFilePath}`));\n }\n\n await fs.writeFile(svgData.optimizedFilePath, svgData.optimizedSvgContent);\n await fs.writeFile(svgData.distSvgFilePath, sourceSvg.data);\n await fs.writeFile(svgData.optimizedLocalSvgFilePath, sourceSvg.data);\n}\n\nconst copyToTesting = async (rootDir: string, distDir: string, srcSvgData: Array<SvgData>) => {\n const testDir = join(rootDir, 'www');\n const testBuildDir = join(testDir, 'build');\n const testSvgDir = join(testBuildDir, 'svg');\n\n await fs.ensureDir(testSvgDir);\n\n await Promise.all(\n srcSvgData.map(async (svgData) => {\n const testSvgFilePath = join(testSvgDir, svgData.fileName);\n await fs.writeFile(testSvgFilePath, svgData.optimizedSvgContent);\n }),\n );\n\n const distCheatsheetFilePath = join(distDir, 'cheatsheet.html');\n const testCheatsheetFilePath = join(testDir, 'cheatsheet.html');\n await fs.copyFile(distCheatsheetFilePath, testCheatsheetFilePath);\n}\n\nconst createCheatSheet = async (version: string, rootDir: string, distDir: string, svgSymbolsContent: string, srcSvgData: Array<SvgData>) => {\n const CheatSheetTmpFilePath = join(rootDir, 'scripts', 'cheatsheet-template.html');\n const distCheatsheetFilePath = join(distDir, 'cheatsheet.html');\n\n const c = srcSvgData.map(\n (svgData) => `<button class=\"icon-button\" title=\"Copy ${svgData.iconName} code snippet\" data-tags=\"${svgData.tags}\" data-icon-name=\"${svgData.iconName}\"><pds-icon name=\"${svgData.iconName}\"></pds-icon><span class=\"visually-hidden\">Copy ${svgData.iconName} icon code</span></button>`,\n );\n\n c.push(svgSymbolsContent);\n\n const html = (await fs.readFile(CheatSheetTmpFilePath, 'utf8'))\n .replace(/{{version}}/g, version)\n .replace(/{{count}}/g, srcSvgData.length.toString())\n .replace(/{{content}/g, c.join('\\n'));\n\n await fs.writeFile(distCheatsheetFilePath, html);\n}\n\nconst createDataJson = async (version: string, srcDir: string, distDir: string, srcSvgData: Array<SvgData>) => {\n const srcDataJsonPath = join(srcDir, 'icon-data.json');\n const distDataJsonPath = join(distDir, `${libraryName}.json`);\n\n let data: JsonData;\n\n try {\n data = await fs.readJson(srcDataJsonPath);\n }\n catch (e) {\n data = {} as any;\n }\n\n data.icons = data.icons || [];\n\n // Add any new icons\n srcSvgData.forEach((svgData) => {\n if (!data.icons.some((i) => i.name === svgData.iconName)) {\n data.icons.push({\n name: svgData.iconName,\n })\n }\n const matchingIcon = data.icons.find((i) => i.name === svgData.iconName);\n svgData.tags = matchingIcon ? matchingIcon.tags || [] : [];\n });\n\n // remove deleted icons\n data.icons = data.icons.filter((dataIcon) => {\n return srcSvgData.some((svgData) => dataIcon.name === svgData.iconName);\n });\n\n // Sort the icons\n data.icons = data.icons.sort((a, b) => {\n if (a.name < b.name) return -1;\n if (a.name > b.name) return 1;\n return 0;\n });\n\n data.icons.forEach((icon) => {\n icon.tags = icon.tags || icon.name.split('-');\n icon.tags = icon.tags.sort();\n });\n\n const srcJsonStr = JSON.stringify(data, null, 2) + '\\n';\n await fs.writeFile(srcDataJsonPath, srcJsonStr);\n\n const distJsonData = {\n name: libraryName,\n version,\n icons: data.icons,\n };\n\n const distJsonStr = JSON.stringify(distJsonData, null, 2) + '\\n';\n await fs.writeFile(distDataJsonPath, distJsonStr);\n}\n\nconst createIconPackage = async (version: string, iconDir: string, srcSvgData: Array<SvgData>) => {\n const iconPkgJsonFilePath = join(iconDir, 'package.json');\n\n await Promise.all([\n createEsmIcons(version, iconDir, srcSvgData),\n createCjsIcons(version, iconDir, srcSvgData),\n createDtsIcons(version, iconDir, srcSvgData),\n ]);\n\n const iconPkgJson = {\n name: '@pine-ds/icons/icons',\n version,\n module: 'index.mjs',\n main: 'index.js',\n typings: 'index.d.ts',\n private: true\n };\n\n const jsonStr = JSON.stringify(iconPkgJson, null, 2) + '\\n';\n await fs.writeFile(iconPkgJsonFilePath, jsonStr);\n}\n\nconst createEsmIcons = async (version: string, iconDir: string, srcSvgData: Array<SvgData>) => {\n const iconEsmFilePath = join(iconDir, 'index.mjs');\n\n const o = [`/* pds-icons v${version}, ES Modules */`, ``];\n\n srcSvgData.forEach((svgData) => {\n o.push(`export const ${svgData.exportName} = ${getDataUrl(svgData)}`);\n });\n\n await fs.writeFile(iconEsmFilePath, o.join('\\n') + '\\n');\n}\n\nconst createCjsIcons = async (version: string, iconDir: string, srcSvgData: Array<SvgData>) => {\n const iconCjsFilePath = join(iconDir, 'index.js');\n\n const o = [`/* pds-icons v${version}, CommonJs */`, ``];\n\n srcSvgData.forEach((svgData) => {\n o.push(`exports.${svgData.exportName} = ${getDataUrl(svgData)}`);\n });\n\n await fs.writeFile(iconCjsFilePath, o.join('\\n') + '\\n');\n}\n\nconst createDtsIcons = async (version: string, iconDir: string, srcSvgData: Array<SvgData>) => {\n const iconDtsFilePath = join(iconDir, 'index.d.ts');\n\n const o = [`/* pds-icons v${version}, Types */`, ``];\n\n srcSvgData.forEach((svgData) => {\n o.push(`export declare var ${svgData.exportName}: string`);\n });\n\n await fs.writeFile(iconDtsFilePath, o.join('\\n') + '\\n');\n}\n\nconst createSvgSymbols = async (version: string, distDir: string, srcSvgData: Array<SvgData>) => {\n srcSvgData = srcSvgData.sort((a, b) => {\n if (a.iconName < b.iconName) return -1;\n if (a.iconName > b.iconName) return 1;\n return 0;\n });\n\n const symbolsSvgFilePath = join(distDir, `${libraryName}.symbols.svg`);\n\n const lines = [\n `<svg data-pdsicons=\"${version}\" style=\"display:none\">`,\n `<style>`,\n `.pdsicon {`,\n ` fill: currentColor;`,\n `}`,\n `.pdsicon-fill-none {`,\n ` fill: none;`,\n `}`,\n `.pdsicon-stroke-width {`,\n ` stroke-width: 32px;`,\n `}`,\n `</style>`,\n ];\n\n srcSvgData.forEach((svgData) => {\n const svg = svgData.optimizedSvgContent\n .replace(`<svg xmlns=\"http://www.w3.org/2000/svg\"`, `<symbol id=\"${svgData.iconName}\"`)\n .replace(`</svg>`, `</symbol>`);\n lines.push(svg);\n });\n\n lines.push(`</svg/`, ``);\n\n const content = lines.join('\\n');\n\n await fs.writeFile(symbolsSvgFilePath, content);\n\n return content;\n}\n\nconst getDataUrl = (svgData: SvgData) => {\n let svg = svgData.optimizedSvgContent;\n if ( svg.includes(`'`)) {\n throw new Error(`Single quotes are NOT allowed!!!!! ${svgData.fileName}`);\n }\n\n if (svg.includes('\\n') || svg.includes('\\r')) {\n throw new Error(`New lines are NOT allowed!!!!! ${svgData.fileName}`);\n }\n\n svg = svg.replace(/\"/g, \"'\");\n\n return `\"data:image/svg+xml;utf8,${svg}\"`;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"optimize-svgs.js","sourceRoot":"","sources":["../../scripts/optimize-svgs.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs-extra';\nimport chalk from 'chalk';\nimport { join } from 'path'\nimport { optimize } from 'svgo';\n\nimport { JsonData, SvgData, reservedKeywords } from './helpers';\n\nimport camelCase from 'lodash/camelCase';\nimport startCase from 'lodash/startCase';\n\nconst log = console.log;\nconst error = chalk.red.bold;\n\nconst libraryName = 'pds-icons';\n\nconst validIconName = /^[a-z0-9]+(-[a-z0-9]+)*$/;\n\n/**\n * Builds the icons for distribution\n *\n * @param rootDir - The source directory\n * @param optimizeeFiles - Flag to indicate if we have files to optimize in `tmp/svg` folder.\n */\nexport const run = async(rootDir: string, optimizeFiles = false) => {\n try {\n const packageJsonPath = join(rootDir, 'package.json');\n const distDir = join(rootDir, 'dist');\n const distPineIconsDir = join(distDir, libraryName);\n const distSvgDir = join(distDir, 'svg');\n const iconDir = join(rootDir, 'icons');\n\n const optimizedOutputDir = join(rootDir, 'src');\n const optimizedOutputSvgDir = join(optimizedOutputDir, 'svg');\n\n const srcDir = join(rootDir, 'tmp');\n let srcSvgDir = join(srcDir, 'svg');\n\n // We will use the current svgs in the repo (src/svg) as the\n // source during CI builds. optimizeFiles will be FALSE.\n //\n // When running Figma icon process we will use `tmp/svg` folder.\n // optimizeFiles will be TRUE\n srcSvgDir = optimizeFiles ? srcSvgDir : optimizedOutputSvgDir;\n\n log('Source SVG Directory: ', srcSvgDir);\n\n await cleanDirectories(iconDir, distDir, distSvgDir, distPineIconsDir);\n\n const packageData = await fs.readJson(packageJsonPath);\n const version = packageData.version as string;\n\n log('Getting SVGs...');\n const srcSvgData = await getSvgs(srcSvgDir, distSvgDir, distPineIconsDir, optimizedOutputSvgDir, optimizeFiles);\n\n if (optimizeFiles) {\n log('Optimized OuputSvgDir: ', optimizedOutputSvgDir)\n\n log('Optimizing SVGs...');\n await optimizeSvgs(srcSvgData);\n }\n\n await Promise.all([\n createDataJson(version, optimizedOutputDir, distDir, srcSvgData),\n createIconPackage(version, iconDir, srcSvgData),\n ])\n\n const svgSymbolsContent = await createSvgSymbols(version, distDir, srcSvgData);\n\n await createCheatSheet(version, rootDir, distDir, svgSymbolsContent, srcSvgData);\n\n await copyToTesting(rootDir, distDir, srcSvgData);\n }\n catch (e) {\n log(error(e));\n process.exit(1);\n }\n\n}\n\nconst cleanDirectories = async (iconDir, distDir, distSvgDir, distPineIconsDir) => {\n await Promise.all([fs.emptyDir(iconDir), fs.emptyDir(distDir)]);\n await fs.emptyDir(distSvgDir), await fs.emptyDir(distPineIconsDir);\n}\n\nconst getSvgs = async (srcDir: string, distSvgDir: string, distPineIconsDir: string, outputSvgDir: string, isOptimizing: boolean): Promise<SvgData[]> => {\n const optimizedSvgDir = join(distPineIconsDir, 'svg');\n await fs.emptyDir(optimizedSvgDir);\n\n const svgFiles = (await fs.readdir(srcDir)).filter((filename) => {\n return !filename.startsWith('.') && filename.endsWith('.svg');\n });\n\n const svgData = await Promise.all(\n svgFiles.map(async (fileName) => {\n // fileName: airplane-outline.svg\n\n if (fileName.toLowerCase() !== fileName) {\n throw new Error(`svg filename \"${fileName}\" must be all lowercase`);\n }\n\n // srcFilePath: /tmp/svg/airplane-outline.svg\n const srcFilePath = join(srcDir, fileName);\n\n // distSvgFilePath: /dist/svg/airplane-outline.svg\n const distSvgFilePath = join(distSvgDir, fileName);\n\n // optimizedFilePath: /dist/pds-icons/svg/airplane-outline.svg\n const optimizedFilePath = join(optimizedSvgDir, fileName);\n\n // optimizedLocalSvgFilePath: /src/svg/airplane-outline.svg\n const optimizedLocalSvgFilePath = join(outputSvgDir, fileName);\n\n const dotSplit = fileName.split('.');\n if (dotSplit.length > 2) {\n throw new Error(`svg filename \"${fileName}\" cannot contain more than one period`);\n }\n\n // iconName: airplane-outline\n const iconName = dotSplit[0];\n\n if (!validIconName.test(iconName)) {\n throw new Error(`svg icon name \"${iconName}\" must be kebab-case (lowercase letters, numbers, and single hyphens)`);\n }\n\n if (reservedKeywords.has(iconName)) {\n throw new Error(`svg icon name \"${iconName}\" is a reserved JavaScript keyword`);\n }\n\n // fileNameMjs: airplane-outline.mjs\n const fileNameMjs = iconName + '.mjs';\n\n // fileNameCjs: airplane-outline.mjs\n const fileNameCjs = iconName + '.js';\n\n // exportName: airplaneOutline\n const exportName = camelCase(iconName);\n\n const title = startCase(\n fileName.replace('.svg', '').replace('-outline', '').replace('-sharp', '').replace(/-/g, ' '),\n );\n\n return {\n distSvgFilePath,\n exportName,\n fileName,\n fileNameCjs,\n fileNameMjs,\n iconName,\n optimizedFilePath,\n optimizedSvgContent: isOptimizing ? null : await fs.readFile(srcFilePath, 'utf8'),\n optimizedLocalSvgFilePath,\n srcFilePath,\n srcSvgContent: await fs.readFile(srcFilePath, 'utf8'),\n tags: [],\n title,\n };\n }),\n );\n\n return svgData.sort((a, b) => {\n if (a.exportName < b.exportName) return -1;\n if (a.exportName > b.exportName) return 1;\n return 0;\n });\n}\n\n/**\n * Optimizes the SVGs that are located in\n * the src/svg folder\n *\n *\n */\nconst optimizeSvgs = async (srcSvgData: Array<SvgData>) => {\n const optimizePass = {};\n const webComponentPass = {\n multipass: true,\n plugins: [\n 'removeStyleElement',\n 'removeScriptElement',\n 'removeDimensions',\n 'removeUselessDefs',\n {\n name: 'removeAttrs',\n params: {\n attrs: \"(fill|stroke|clip-rule)\"\n }\n },\n {\n name: 'addClassesToSVGElement',\n params: {\n className: 'pdsicon'\n }\n },\n ],\n };\n\n const sourcePass = {\n multipass: true,\n plugins: [\n 'removeStyleElement',\n 'removeScriptElement',\n 'removeDimensions',\n 'removeUselessDefs',\n {\n name: 'removeAttrs',\n params: {\n attrs: \"(fill|stroke|clip-rule)\"\n }\n },\n {\n name: 'addClassesToSVGElement',\n params: {\n className: 'pdsicon'\n }\n },\n ]\n };\n\n const validatePass = {\n multipass: true,\n plugins: [],\n };\n\n await Promise.all(\n srcSvgData.map( async (svgData) => {\n return optimizeSvg(optimizePass, webComponentPass, sourcePass, validatePass, svgData);\n }),\n );\n}\n\nconst optimizeSvg = async (optimizePass: Record<string, unknown>, webComponentPass: Record<string, unknown>, sourcePass: Record<string, unknown>, validatePass: Record<string, unknown>, svgData: SvgData) => {\n const srcSvgContent = await fs.readFile(svgData.srcFilePath, 'utf8');\n\n const optimizedSvg = await optimize(srcSvgContent, Object.assign(optimizePass, { path: svgData.srcFilePath }));\n\n const optimizedCode = optimizedSvg.data\n\n const webComponentSvg = await optimize(optimizedCode, Object.assign( webComponentPass, { path: svgData.srcFilePath }));\n const sourceSvg = await optimize(optimizedCode, Object.assign(sourcePass, { path: svgData.srcFilePath }));\n\n svgData.optimizedSvgContent = webComponentSvg.data;\n\n try {\n optimize(svgData.optimizedSvgContent, Object.assign(validatePass,{ path: svgData.srcFilePath }));\n }\n catch (err) {\n log(error(`${err.message}: ${svgData.srcFilePath}`));\n }\n\n await fs.writeFile(svgData.optimizedFilePath, svgData.optimizedSvgContent);\n await fs.writeFile(svgData.distSvgFilePath, sourceSvg.data);\n await fs.writeFile(svgData.optimizedLocalSvgFilePath, sourceSvg.data);\n}\n\nconst copyToTesting = async (rootDir: string, distDir: string, srcSvgData: Array<SvgData>) => {\n const testDir = join(rootDir, 'www');\n const testBuildDir = join(testDir, 'build');\n const testSvgDir = join(testBuildDir, 'svg');\n\n await fs.ensureDir(testSvgDir);\n\n await Promise.all(\n srcSvgData.map(async (svgData) => {\n const testSvgFilePath = join(testSvgDir, svgData.fileName);\n await fs.writeFile(testSvgFilePath, svgData.optimizedSvgContent);\n }),\n );\n\n const distCheatsheetFilePath = join(distDir, 'cheatsheet.html');\n const testCheatsheetFilePath = join(testDir, 'cheatsheet.html');\n await fs.copyFile(distCheatsheetFilePath, testCheatsheetFilePath);\n}\n\nconst createCheatSheet = async (version: string, rootDir: string, distDir: string, svgSymbolsContent: string, srcSvgData: Array<SvgData>) => {\n const CheatSheetTmpFilePath = join(rootDir, 'scripts', 'cheatsheet-template.html');\n const distCheatsheetFilePath = join(distDir, 'cheatsheet.html');\n\n const c = srcSvgData.map(\n (svgData) => `<button class=\"icon-button\" title=\"Copy ${svgData.iconName} code snippet\" data-tags=\"${svgData.tags}\" data-icon-name=\"${svgData.iconName}\"><pds-icon name=\"${svgData.iconName}\"></pds-icon><span class=\"visually-hidden\">Copy ${svgData.iconName} icon code</span></button>`,\n );\n\n c.push(svgSymbolsContent);\n\n const html = (await fs.readFile(CheatSheetTmpFilePath, 'utf8'))\n .replace(/{{version}}/g, version)\n .replace(/{{count}}/g, srcSvgData.length.toString())\n .replace(/{{content}/g, c.join('\\n'));\n\n await fs.writeFile(distCheatsheetFilePath, html);\n}\n\nconst createDataJson = async (version: string, srcDir: string, distDir: string, srcSvgData: Array<SvgData>) => {\n const srcDataJsonPath = join(srcDir, 'icon-data.json');\n const distDataJsonPath = join(distDir, `${libraryName}.json`);\n\n let data: JsonData;\n\n try {\n data = await fs.readJson(srcDataJsonPath);\n }\n catch (e) {\n data = {} as any;\n }\n\n data.icons = data.icons || [];\n\n assertUniqueIconNames(data.icons, srcDataJsonPath);\n\n // Add any new icons\n srcSvgData.forEach((svgData) => {\n if (!data.icons.some((i) => i.name === svgData.iconName)) {\n data.icons.push({\n name: svgData.iconName,\n })\n }\n const matchingIcon = data.icons.find((i) => i.name === svgData.iconName);\n svgData.tags = matchingIcon ? matchingIcon.tags || [] : [];\n });\n\n // remove deleted icons\n data.icons = data.icons.filter((dataIcon) => {\n return srcSvgData.some((svgData) => dataIcon.name === svgData.iconName);\n });\n\n // Sort the icons\n data.icons = data.icons.sort((a, b) => {\n if (a.name < b.name) return -1;\n if (a.name > b.name) return 1;\n return 0;\n });\n\n data.icons.forEach((icon) => {\n icon.tags = icon.tags || icon.name.split('-');\n icon.tags = icon.tags.sort();\n });\n\n const srcJsonStr = JSON.stringify(data, null, 2) + '\\n';\n await fs.writeFile(srcDataJsonPath, srcJsonStr);\n\n const distJsonData = {\n name: libraryName,\n version,\n icons: data.icons,\n };\n\n const distJsonStr = JSON.stringify(distJsonData, null, 2) + '\\n';\n await fs.writeFile(distDataJsonPath, distJsonStr);\n}\n\n// The Figma export already dedupes, so a duplicate here means a hand edit whose intended entry we can't guess.\nconst assertUniqueIconNames = (icons: JsonData['icons'], filePath: string) => {\n const seenNames = new Set<string>();\n const duplicates = new Set<string>();\n\n icons.forEach((icon) => {\n if (seenNames.has(icon.name)) {\n duplicates.add(icon.name);\n }\n seenNames.add(icon.name);\n });\n\n if (duplicates.size > 0) {\n throw new Error(`${filePath} has duplicate icon names: ${[...duplicates].join(', ')}`);\n }\n}\n\nconst createIconPackage = async (version: string, iconDir: string, srcSvgData: Array<SvgData>) => {\n const iconPkgJsonFilePath = join(iconDir, 'package.json');\n\n await Promise.all([\n createEsmIcons(version, iconDir, srcSvgData),\n createCjsIcons(version, iconDir, srcSvgData),\n createDtsIcons(version, iconDir, srcSvgData),\n ]);\n\n const iconPkgJson = {\n name: '@pine-ds/icons/icons',\n version,\n module: 'index.mjs',\n main: 'index.js',\n typings: 'index.d.ts',\n private: true\n };\n\n const jsonStr = JSON.stringify(iconPkgJson, null, 2) + '\\n';\n await fs.writeFile(iconPkgJsonFilePath, jsonStr);\n}\n\nconst createEsmIcons = async (version: string, iconDir: string, srcSvgData: Array<SvgData>) => {\n const iconEsmFilePath = join(iconDir, 'index.mjs');\n\n const o = [`/* pds-icons v${version}, ES Modules */`, ``];\n\n srcSvgData.forEach((svgData) => {\n o.push(`export const ${svgData.exportName} = ${getDataUrl(svgData)}`);\n });\n\n await fs.writeFile(iconEsmFilePath, o.join('\\n') + '\\n');\n}\n\nconst createCjsIcons = async (version: string, iconDir: string, srcSvgData: Array<SvgData>) => {\n const iconCjsFilePath = join(iconDir, 'index.js');\n\n const o = [`/* pds-icons v${version}, CommonJs */`, ``];\n\n srcSvgData.forEach((svgData) => {\n o.push(`exports.${svgData.exportName} = ${getDataUrl(svgData)}`);\n });\n\n await fs.writeFile(iconCjsFilePath, o.join('\\n') + '\\n');\n}\n\nconst createDtsIcons = async (version: string, iconDir: string, srcSvgData: Array<SvgData>) => {\n const iconDtsFilePath = join(iconDir, 'index.d.ts');\n\n const o = [`/* pds-icons v${version}, Types */`, ``];\n\n srcSvgData.forEach((svgData) => {\n o.push(`export declare var ${svgData.exportName}: string`);\n });\n\n await fs.writeFile(iconDtsFilePath, o.join('\\n') + '\\n');\n}\n\nconst createSvgSymbols = async (version: string, distDir: string, srcSvgData: Array<SvgData>) => {\n srcSvgData = srcSvgData.sort((a, b) => {\n if (a.iconName < b.iconName) return -1;\n if (a.iconName > b.iconName) return 1;\n return 0;\n });\n\n const symbolsSvgFilePath = join(distDir, `${libraryName}.symbols.svg`);\n\n const lines = [\n `<svg data-pdsicons=\"${version}\" style=\"display:none\">`,\n `<style>`,\n `.pdsicon {`,\n ` fill: currentColor;`,\n `}`,\n `.pdsicon-fill-none {`,\n ` fill: none;`,\n `}`,\n `.pdsicon-stroke-width {`,\n ` stroke-width: 32px;`,\n `}`,\n `</style>`,\n ];\n\n srcSvgData.forEach((svgData) => {\n const svg = svgData.optimizedSvgContent\n .replace(`<svg xmlns=\"http://www.w3.org/2000/svg\"`, `<symbol id=\"${svgData.iconName}\"`)\n .replace(`</svg>`, `</symbol>`);\n lines.push(svg);\n });\n\n lines.push(`</svg/`, ``);\n\n const content = lines.join('\\n');\n\n await fs.writeFile(symbolsSvgFilePath, content);\n\n return content;\n}\n\nconst getDataUrl = (svgData: SvgData) => {\n let svg = svgData.optimizedSvgContent;\n if ( svg.includes(`'`)) {\n throw new Error(`Single quotes are NOT allowed!!!!! ${svgData.fileName}`);\n }\n\n if (svg.includes('\\n') || svg.includes('\\r')) {\n throw new Error(`New lines are NOT allowed!!!!! ${svgData.fileName}`);\n }\n\n svg = svg.replace(/\"/g, \"'\");\n\n return `\"data:image/svg+xml;utf8,${svg}\"`;\n}\n"]}
|
package/icons/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* pds-icons v10.4.
|
|
1
|
+
/* pds-icons v10.4.2, Types */
|
|
2
2
|
|
|
3
3
|
export declare var accessKey: string
|
|
4
4
|
export declare var activity: string
|
|
@@ -299,7 +299,6 @@ export declare var previewOff: string
|
|
|
299
299
|
export declare var previewOn: string
|
|
300
300
|
export declare var product: string
|
|
301
301
|
export declare var productFilled: string
|
|
302
|
-
export declare var property1Default: string
|
|
303
302
|
export declare var questionCircle: string
|
|
304
303
|
export declare var quote: string
|
|
305
304
|
export declare var recording02: string
|
package/icons/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* pds-icons v10.4.
|
|
1
|
+
/* pds-icons v10.4.2, CommonJs */
|
|
2
2
|
|
|
3
3
|
exports.accessKey = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M8 9a7 7 0 1 1 6.06 6.937 14 14 0 0 0-.514-.062l-.01.008a9 9 0 0 0-.25.245l-1.579 1.58A1 1 0 0 1 11 18h-1v1a1 1 0 0 1-1 1H8v1a1 1 0 0 1-1 1H4.568c-.252 0-.498 0-.706-.017a2 2 0 0 1-.77-.201 2 2 0 0 1-.874-.874 2 2 0 0 1-.201-.77C2 19.93 2 19.684 2 19.432v-1.82c0-.19-.001-.43.055-.665a2 2 0 0 1 .24-.578c.126-.206.296-.375.43-.509l.036-.036 5.111-5.11c.126-.126.196-.197.245-.25l.008-.01-.003-.045c-.01-.103-.03-.244-.06-.469A7 7 0 0 1 8 9m0 9v-1a1 1 0 0 1 1-1h1.586l1.286-1.286.052-.053c.18-.18.398-.4.646-.539a1.8 1.8 0 0 1 .693-.234c.193-.027.382-.014.52 0 .145.014.324.038.525.065l.018.002q.33.045.674.045a5 5 0 1 0-4.955-4.326l.002.018c.027.201.051.38.065.524.014.14.027.328 0 .521-.038.265-.104.46-.234.693-.14.248-.359.466-.54.646l-.052.052-5.11 5.11a6 6 0 0 0-.171.175l-.002.002v.004a6 6 0 0 0-.003.244V19.4a8 8 0 0 0 .011.588l.014.002c.116.01.278.01.575.01H6v-1a1 1 0 0 1 1-1zm6-11a1 1 0 0 1 1-1c.766 0 1.536.293 2.121.879.586.585.879 1.355.879 2.12A1 1 0 1 1 16 9a1 1 0 0 0-.293-.707A1 1 0 0 0 15 8a1 1 0 0 1-1-1'/></svg>"
|
|
4
4
|
exports.activity = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M9 2a1 1 0 0 1 .949.684L15 17.838l2.051-6.154A1 1 0 0 1 18 11h4a1 1 0 1 1 0 2h-3.28l-2.771 8.316a1 1 0 0 1-1.898 0L9 6.162l-2.051 6.154A1 1 0 0 1 6 13H2a1 1 0 1 1 0-2h3.28L8.05 2.684A1 1 0 0 1 9 2'/></svg>"
|
|
@@ -299,7 +299,6 @@ exports.previewOff = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000
|
|
|
299
299
|
exports.previewOn = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M6.359 8.243C4.852 9.5 3.799 10.977 3.266 11.82l-.11.178V12l.029.049.08.13c.533.843 1.587 2.32 3.094 3.577C7.863 17.012 9.757 18 12 18c2.244 0 4.138-.988 5.642-2.243 1.506-1.257 2.56-2.734 3.093-3.578l.11-.178V12l-.03-.049-.08-.13c-.532-.843-1.587-2.32-3.093-3.577C16.138 6.988 14.244 6 12 6c-2.243 0-4.137.988-5.641 2.243M5.077 6.707C6.806 5.265 9.14 4 12 4c2.862 0 5.195 1.265 6.924 2.707 1.726 1.441 2.91 3.107 3.502 4.046l.024.038c.118.185.27.425.348.762a2.2 2.2 0 0 1 0 .894c-.077.337-.23.577-.348.762l-.024.038c-.593.939-1.776 2.605-3.502 4.046C17.195 18.735 14.862 20 12 20s-5.194-1.265-6.923-2.707c-1.726-1.441-2.91-3.107-3.502-4.046l-.024-.038c-.118-.185-.27-.425-.348-.762a2.2 2.2 0 0 1 0-.894c.077-.337.23-.577.348-.762l.024-.038c.592-.939 1.776-2.605 3.502-4.046M12 10a2 2 0 1 0 0 4 2 2 0 0 0 0-4m-4 2a4 4 0 1 1 8 0 4 4 0 0 1-8 0'/></svg>"
|
|
300
300
|
exports.product = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M11.597 1.185a2 2 0 0 1 .806 0c.307.063.582.217.8.34l.06.033 7.4 4.11.063.036c.23.127.522.287.745.53.193.208.339.457.428.727.103.313.102.644.101.908v8.262c.001.264.002.595-.101.908-.09.27-.235.519-.428.728-.223.242-.514.402-.745.53l-.063.034-7.4 4.111-.06.034c-.218.122-.493.276-.8.339-.266.055-.54.055-.806 0-.307-.063-.582-.217-.8-.34l-.06-.033-7.4-4.11q-.03-.018-.063-.035c-.23-.128-.522-.288-.745-.53a2 2 0 0 1-.428-.728c-.103-.313-.102-.644-.101-.908V7.869c-.001-.264-.002-.595.101-.908a2 2 0 0 1 .428-.728c.223-.242.514-.402.745-.53l.063-.034 7.4-4.111.06-.034c.218-.122.493-.276.8-.339M12 3.149l-.005.002c-.057.028-.135.07-.286.155L5.059 7 12 10.856 18.94 7l-6.649-3.694a7 7 0 0 0-.286-.155zm8 5.55v7.36a7 7 0 0 1-.005.35l-.005.003a7 7 0 0 1-.299.171L13 20.301v-7.713zm-9 3.89-7-3.89v7.36c0 .182 0 .276.005.344v.006l.005.003c.057.036.139.082.299.171L11 20.301z'/></svg>"
|
|
301
301
|
exports.productFilled = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path d='M12.403 1.495a2 2 0 0 0-.806 0c-.307.063-.582.217-.8.34l-.06.033-6.426 3.571c-.409.227-.613.34-.68.49a.5.5 0 0 0-.002.412c.068.15.271.265.679.494l7.3 4.107c.143.08.214.12.29.136a.5.5 0 0 0 .204 0c.076-.016.147-.056.29-.136l7.3-4.107c.408-.229.611-.343.679-.494a.5.5 0 0 0-.001-.411c-.068-.15-.273-.264-.68-.49l-6.427-3.572-.06-.034c-.218-.122-.493-.276-.8-.339M21.996 9.2c0-.448 0-.672-.095-.803a.5.5 0 0 0-.35-.204c-.16-.019-.356.092-.747.312l-7.396 4.16c-.149.084-.223.125-.277.184a.5.5 0 0 0-.106.182c-.025.076-.025.161-.025.331v8.176c0 .447 0 .67.094.801a.5.5 0 0 0 .348.205c.16.019.355-.09.745-.306l6.476-3.597.063-.034c.23-.128.522-.288.745-.53.193-.21.339-.458.428-.728.103-.313.102-.644.101-.908v-.072c0-1.963-.003-5.303-.004-7.169M9.814 22.238c.39.216.584.325.744.306a.5.5 0 0 0 .348-.205c.094-.13.094-.354.094-.801v-8.176c0-.17 0-.255-.025-.331a.5.5 0 0 0-.106-.181c-.054-.06-.128-.101-.277-.185l-7.396-4.16c-.391-.22-.587-.33-.748-.312a.5.5 0 0 0-.349.204c-.094.13-.095.355-.095.803C2.003 11.066 2 14.406 2 16.37v.072c-.001.264-.002.595.101.908a2 2 0 0 0 .428.728c.223.242.514.402.745.53l.063.034z'/></svg>"
|
|
302
|
-
exports.property1Default = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><g clip-path='url(#a)'><path fill-rule='evenodd' d='M9 2a1 1 0 0 1 .949.684L15 17.838l2.051-6.154A1 1 0 0 1 18 11h4a1 1 0 1 1 0 2h-3.28l-2.771 8.316a1 1 0 0 1-1.898 0L9 6.162l-2.051 6.154A1 1 0 0 1 6 13H2a1 1 0 1 1 0-2h3.28L8.05 2.684A1 1 0 0 1 9 2'/></g><defs><clipPath id='a'><rect width='24' height='24' rx='4'/></clipPath></defs></svg>"
|
|
303
302
|
exports.questionCircle = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path d='M12 23a11 11 0 1 1 0-22 11 11 0 0 1 0 22m0-20a9 9 0 1 0 0 18 9 9 0 0 0 0-18m0 15a1 1 0 1 1 0-2 1 1 0 0 1 0 2m-.09-4a1 1 0 0 1-.32-1.95c.6-.2 2.32-1 2.32-2.05A2 2 0 0 0 10 9.33a1 1 0 1 1-1.88-.66 4 4 0 0 1 3.767-2.656A4 4 0 0 1 15.89 10c0 2.64-3.31 3.82-3.68 3.95a1.3 1.3 0 0 1-.29.05z'/></svg>"
|
|
304
303
|
exports.quote = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M2.32 5.15A4.5 4.5 0 0 1 10 8.33v.5a14.34 14.34 0 0 1-1.78 6.68 14.55 14.55 0 0 1-3.75 4.43.999.999 0 1 1-1.27-1.54 12.4 12.4 0 0 0 3.28-3.85c.37-.682.67-1.399.9-2.14a4.3 4.3 0 0 1-1.87.42 4.5 4.5 0 0 1-3.19-7.68m1.79 5.26a2.55 2.55 0 0 0 1.39.42c.343.007.684-.057 1-.19a2.48 2.48 0 0 0 1.31-1.35 2.5 2.5 0 0 0-2.797-3.415 2.5 2.5 0 0 0-.903 4.535m11.21-5.26A4.5 4.5 0 0 1 23 8.33v.5a14.4 14.4 0 0 1-1.76 6.68 14.7 14.7 0 0 1-3.78 4.44 1 1 0 0 1-1.26-1.55 12.3 12.3 0 0 0 3.28-3.85c.37-.682.67-1.399.9-2.14a4.3 4.3 0 0 1-1.87.42 4.5 4.5 0 0 1-3.18-7.68zm1.79 5.26a2.55 2.55 0 0 0 1.39.42c.343.007.684-.057 1-.19a2.48 2.48 0 0 0 1.35-1.35 2.45 2.45 0 0 0 .19-1 2.5 2.5 0 0 0-2.987-2.455A2.5 2.5 0 0 0 16.23 9.25c.175.463.481.866.88 1.16'/></svg>"
|
|
305
304
|
exports.recording02 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path d='M15.5 21V3a1 1 0 1 1 2 0v18a1 1 0 1 1-2 0M11 18V6a1 1 0 1 1 2 0v12a1 1 0 1 1-2 0m-9-4v-4a1 1 0 0 1 2 0v4a1 1 0 1 1-2 0m18 0v-4a1 1 0 1 1 2 0v4a1 1 0 1 1-2 0M6.5 13v-2a1 1 0 1 1 2 0v2a1 1 0 1 1-2 0'/></svg>"
|
package/icons/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* pds-icons v10.4.
|
|
1
|
+
/* pds-icons v10.4.2, ES Modules */
|
|
2
2
|
|
|
3
3
|
export const accessKey = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M8 9a7 7 0 1 1 6.06 6.937 14 14 0 0 0-.514-.062l-.01.008a9 9 0 0 0-.25.245l-1.579 1.58A1 1 0 0 1 11 18h-1v1a1 1 0 0 1-1 1H8v1a1 1 0 0 1-1 1H4.568c-.252 0-.498 0-.706-.017a2 2 0 0 1-.77-.201 2 2 0 0 1-.874-.874 2 2 0 0 1-.201-.77C2 19.93 2 19.684 2 19.432v-1.82c0-.19-.001-.43.055-.665a2 2 0 0 1 .24-.578c.126-.206.296-.375.43-.509l.036-.036 5.111-5.11c.126-.126.196-.197.245-.25l.008-.01-.003-.045c-.01-.103-.03-.244-.06-.469A7 7 0 0 1 8 9m0 9v-1a1 1 0 0 1 1-1h1.586l1.286-1.286.052-.053c.18-.18.398-.4.646-.539a1.8 1.8 0 0 1 .693-.234c.193-.027.382-.014.52 0 .145.014.324.038.525.065l.018.002q.33.045.674.045a5 5 0 1 0-4.955-4.326l.002.018c.027.201.051.38.065.524.014.14.027.328 0 .521-.038.265-.104.46-.234.693-.14.248-.359.466-.54.646l-.052.052-5.11 5.11a6 6 0 0 0-.171.175l-.002.002v.004a6 6 0 0 0-.003.244V19.4a8 8 0 0 0 .011.588l.014.002c.116.01.278.01.575.01H6v-1a1 1 0 0 1 1-1zm6-11a1 1 0 0 1 1-1c.766 0 1.536.293 2.121.879.586.585.879 1.355.879 2.12A1 1 0 1 1 16 9a1 1 0 0 0-.293-.707A1 1 0 0 0 15 8a1 1 0 0 1-1-1'/></svg>"
|
|
4
4
|
export const activity = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M9 2a1 1 0 0 1 .949.684L15 17.838l2.051-6.154A1 1 0 0 1 18 11h4a1 1 0 1 1 0 2h-3.28l-2.771 8.316a1 1 0 0 1-1.898 0L9 6.162l-2.051 6.154A1 1 0 0 1 6 13H2a1 1 0 1 1 0-2h3.28L8.05 2.684A1 1 0 0 1 9 2'/></svg>"
|
|
@@ -299,7 +299,6 @@ export const previewOff = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org
|
|
|
299
299
|
export const previewOn = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M6.359 8.243C4.852 9.5 3.799 10.977 3.266 11.82l-.11.178V12l.029.049.08.13c.533.843 1.587 2.32 3.094 3.577C7.863 17.012 9.757 18 12 18c2.244 0 4.138-.988 5.642-2.243 1.506-1.257 2.56-2.734 3.093-3.578l.11-.178V12l-.03-.049-.08-.13c-.532-.843-1.587-2.32-3.093-3.577C16.138 6.988 14.244 6 12 6c-2.243 0-4.137.988-5.641 2.243M5.077 6.707C6.806 5.265 9.14 4 12 4c2.862 0 5.195 1.265 6.924 2.707 1.726 1.441 2.91 3.107 3.502 4.046l.024.038c.118.185.27.425.348.762a2.2 2.2 0 0 1 0 .894c-.077.337-.23.577-.348.762l-.024.038c-.593.939-1.776 2.605-3.502 4.046C17.195 18.735 14.862 20 12 20s-5.194-1.265-6.923-2.707c-1.726-1.441-2.91-3.107-3.502-4.046l-.024-.038c-.118-.185-.27-.425-.348-.762a2.2 2.2 0 0 1 0-.894c.077-.337.23-.577.348-.762l.024-.038c.592-.939 1.776-2.605 3.502-4.046M12 10a2 2 0 1 0 0 4 2 2 0 0 0 0-4m-4 2a4 4 0 1 1 8 0 4 4 0 0 1-8 0'/></svg>"
|
|
300
300
|
export const product = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M11.597 1.185a2 2 0 0 1 .806 0c.307.063.582.217.8.34l.06.033 7.4 4.11.063.036c.23.127.522.287.745.53.193.208.339.457.428.727.103.313.102.644.101.908v8.262c.001.264.002.595-.101.908-.09.27-.235.519-.428.728-.223.242-.514.402-.745.53l-.063.034-7.4 4.111-.06.034c-.218.122-.493.276-.8.339-.266.055-.54.055-.806 0-.307-.063-.582-.217-.8-.34l-.06-.033-7.4-4.11q-.03-.018-.063-.035c-.23-.128-.522-.288-.745-.53a2 2 0 0 1-.428-.728c-.103-.313-.102-.644-.101-.908V7.869c-.001-.264-.002-.595.101-.908a2 2 0 0 1 .428-.728c.223-.242.514-.402.745-.53l.063-.034 7.4-4.111.06-.034c.218-.122.493-.276.8-.339M12 3.149l-.005.002c-.057.028-.135.07-.286.155L5.059 7 12 10.856 18.94 7l-6.649-3.694a7 7 0 0 0-.286-.155zm8 5.55v7.36a7 7 0 0 1-.005.35l-.005.003a7 7 0 0 1-.299.171L13 20.301v-7.713zm-9 3.89-7-3.89v7.36c0 .182 0 .276.005.344v.006l.005.003c.057.036.139.082.299.171L11 20.301z'/></svg>"
|
|
301
301
|
export const productFilled = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path d='M12.403 1.495a2 2 0 0 0-.806 0c-.307.063-.582.217-.8.34l-.06.033-6.426 3.571c-.409.227-.613.34-.68.49a.5.5 0 0 0-.002.412c.068.15.271.265.679.494l7.3 4.107c.143.08.214.12.29.136a.5.5 0 0 0 .204 0c.076-.016.147-.056.29-.136l7.3-4.107c.408-.229.611-.343.679-.494a.5.5 0 0 0-.001-.411c-.068-.15-.273-.264-.68-.49l-6.427-3.572-.06-.034c-.218-.122-.493-.276-.8-.339M21.996 9.2c0-.448 0-.672-.095-.803a.5.5 0 0 0-.35-.204c-.16-.019-.356.092-.747.312l-7.396 4.16c-.149.084-.223.125-.277.184a.5.5 0 0 0-.106.182c-.025.076-.025.161-.025.331v8.176c0 .447 0 .67.094.801a.5.5 0 0 0 .348.205c.16.019.355-.09.745-.306l6.476-3.597.063-.034c.23-.128.522-.288.745-.53.193-.21.339-.458.428-.728.103-.313.102-.644.101-.908v-.072c0-1.963-.003-5.303-.004-7.169M9.814 22.238c.39.216.584.325.744.306a.5.5 0 0 0 .348-.205c.094-.13.094-.354.094-.801v-8.176c0-.17 0-.255-.025-.331a.5.5 0 0 0-.106-.181c-.054-.06-.128-.101-.277-.185l-7.396-4.16c-.391-.22-.587-.33-.748-.312a.5.5 0 0 0-.349.204c-.094.13-.095.355-.095.803C2.003 11.066 2 14.406 2 16.37v.072c-.001.264-.002.595.101.908a2 2 0 0 0 .428.728c.223.242.514.402.745.53l.063.034z'/></svg>"
|
|
302
|
-
export const property1Default = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><g clip-path='url(#a)'><path fill-rule='evenodd' d='M9 2a1 1 0 0 1 .949.684L15 17.838l2.051-6.154A1 1 0 0 1 18 11h4a1 1 0 1 1 0 2h-3.28l-2.771 8.316a1 1 0 0 1-1.898 0L9 6.162l-2.051 6.154A1 1 0 0 1 6 13H2a1 1 0 1 1 0-2h3.28L8.05 2.684A1 1 0 0 1 9 2'/></g><defs><clipPath id='a'><rect width='24' height='24' rx='4'/></clipPath></defs></svg>"
|
|
303
302
|
export const questionCircle = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path d='M12 23a11 11 0 1 1 0-22 11 11 0 0 1 0 22m0-20a9 9 0 1 0 0 18 9 9 0 0 0 0-18m0 15a1 1 0 1 1 0-2 1 1 0 0 1 0 2m-.09-4a1 1 0 0 1-.32-1.95c.6-.2 2.32-1 2.32-2.05A2 2 0 0 0 10 9.33a1 1 0 1 1-1.88-.66 4 4 0 0 1 3.767-2.656A4 4 0 0 1 15.89 10c0 2.64-3.31 3.82-3.68 3.95a1.3 1.3 0 0 1-.29.05z'/></svg>"
|
|
304
303
|
export const quote = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M2.32 5.15A4.5 4.5 0 0 1 10 8.33v.5a14.34 14.34 0 0 1-1.78 6.68 14.55 14.55 0 0 1-3.75 4.43.999.999 0 1 1-1.27-1.54 12.4 12.4 0 0 0 3.28-3.85c.37-.682.67-1.399.9-2.14a4.3 4.3 0 0 1-1.87.42 4.5 4.5 0 0 1-3.19-7.68m1.79 5.26a2.55 2.55 0 0 0 1.39.42c.343.007.684-.057 1-.19a2.48 2.48 0 0 0 1.31-1.35 2.5 2.5 0 0 0-2.797-3.415 2.5 2.5 0 0 0-.903 4.535m11.21-5.26A4.5 4.5 0 0 1 23 8.33v.5a14.4 14.4 0 0 1-1.76 6.68 14.7 14.7 0 0 1-3.78 4.44 1 1 0 0 1-1.26-1.55 12.3 12.3 0 0 0 3.28-3.85c.37-.682.67-1.399.9-2.14a4.3 4.3 0 0 1-1.87.42 4.5 4.5 0 0 1-3.18-7.68zm1.79 5.26a2.55 2.55 0 0 0 1.39.42c.343.007.684-.057 1-.19a2.48 2.48 0 0 0 1.35-1.35 2.45 2.45 0 0 0 .19-1 2.5 2.5 0 0 0-2.987-2.455A2.5 2.5 0 0 0 16.23 9.25c.175.463.481.866.88 1.16'/></svg>"
|
|
305
304
|
export const recording02 = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path d='M15.5 21V3a1 1 0 1 1 2 0v18a1 1 0 1 1-2 0M11 18V6a1 1 0 1 1 2 0v12a1 1 0 1 1-2 0m-9-4v-4a1 1 0 0 1 2 0v4a1 1 0 1 1-2 0m18 0v-4a1 1 0 1 1 2 0v4a1 1 0 1 1-2 0M6.5 13v-2a1 1 0 1 1 2 0v2a1 1 0 1 1-2 0'/></svg>"
|
package/icons/package.json
CHANGED
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="pdsicon"><g clip-path="url(#a)"><path fill-rule="evenodd" d="M9 2a1 1 0 0 1 .949.684L15 17.838l2.051-6.154A1 1 0 0 1 18 11h4a1 1 0 1 1 0 2h-3.28l-2.771 8.316a1 1 0 0 1-1.898 0L9 6.162l-2.051 6.154A1 1 0 0 1 6 13H2a1 1 0 1 1 0-2h3.28L8.05 2.684A1 1 0 0 1 9 2"/></g><defs><clipPath id="a"><rect width="24" height="24" rx="4"/></clipPath></defs></svg>
|