appscms-tools-theme 4.9.8 → 4.9.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fd8efcf27843fb4fba1554789654542cd04703076bc55ad21b4b4a6e15eee5dc
4
- data.tar.gz: 74e94ffc84e8f05fdf270b0fbb1cfab14d50cbba3afe0abcd88549ed26b78198
3
+ metadata.gz: 77077be30078f5cdcdf699ae245f6b31e0d5e14f94dbd34562b631de11ae83aa
4
+ data.tar.gz: 31134090f09b375a8d3f4eda101587b712a62be08d9b22d4e8229e307e00ce04
5
5
  SHA512:
6
- metadata.gz: 0f9ef53f90d4bd9ae7f498226286602b1ce07bcf8d4c1d79bec4e1a447c9b16938508af2653de26f4c1766a11344a85a6c8aa71587fe3e07d856066ac70d80ef
7
- data.tar.gz: e4a2da3db50d7e946ee5db67404638a89fdafe92b9f60e3207e27e7e97e6e564ca1687cbb1d441903bd051c21be1171da18e81b4370fa100b543283c22be57a5
6
+ metadata.gz: 65c68aca35073b283a7e0322750fe2a43f0ab092eb053ee404a08aa3c0a9394d697e350795c410269f90bf899915e49016125f145c8965dfa1eb5d727fc80f8f
7
+ data.tar.gz: ab56cdf2130296edd4d85c4b635d18e8d63a25319ec2bdf0d2690321a82b2c6e816aca07eb99e1fbb630922a9d1dbac9e5bdc76b83252ba8f91a0d2368169622
data/_data/.DS_Store CHANGED
Binary file
@@ -210,7 +210,7 @@
210
210
  "USP_FACTOR": "USP_FACTOR"
211
211
  }
212
212
  ],
213
- "author": "aditya thakur",
213
+ "author": "lakshmi",
214
214
  "contributors": [
215
215
  {
216
216
  "name": "Debosmita Bedajna"
@@ -220,6 +220,12 @@
220
220
  },
221
221
  {
222
222
  "name": "RK Shree"
223
+ },
224
+ {
225
+ "name": "Bandana"
226
+ },
227
+ {
228
+ "name": "Manpreet Singh"
223
229
  }
224
230
  ]
225
231
  }
@@ -1,6 +1,6 @@
1
1
  {
2
- "navbarBrandText": "",
3
- "navbarBrandLogo": "/assets/images/logo.png",
2
+ "navbarBrandText": "",
3
+ "navbarBrandLogoSvg": "<svg height='40' width='180' xmlns:x='http://ns.adobe.com/Extensibility/1.0/' xmlns:i='http://ns.adobe.com/AdobeIllustrator/10.0/' xmlns:graph='http://ns.adobe.com/Graphs/1.0/' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' id='Layer_1' x='0px' y='0px' viewBox='0 0 250 50' style='enable-background:new 0 0 250 50;' xml:space='preserve'><style type='text/css'>.st0{fill:#1C0DC8;}.st1{clip-path:url(#SVGID_1_);fill:url(#SVGID_2_);}.st2{fill:#FFFFFF;}</style><metadata><sfw xmlns='http://ns.adobe.com/SaveForWeb/1.0/'><slices></slices><slicesourcebounds bottomleftorigin='true' height='46.5' width='216' x='1.4' y='-48.2'></slicesourcebounds></sfw></metadata><g><g><path class='st0' d='M55.6,33.2c-1-0.4-1.8-1-2.3-1.8s-0.9-1.7-0.9-2.8h4.4c0.1,0.6,0.3,1.1,0.6,1.4c0.4,0.3,0.8,0.5,1.4,0.5 c0.6,0,1.1-0.1,1.4-0.4c0.4-0.3,0.5-0.7,0.5-1.2c0-0.4-0.1-0.8-0.4-1c-0.3-0.3-0.6-0.5-1-0.7c-0.4-0.2-1-0.4-1.7-0.6 c-1.1-0.3-2-0.7-2.7-1c-0.7-0.3-1.3-0.8-1.8-1.5c-0.5-0.7-0.7-1.5-0.7-2.6c0-1.6,0.6-2.8,1.7-3.7c1.1-0.9,2.6-1.3,4.4-1.3 c1.9,0,3.4,0.4,4.5,1.3c1.1,0.9,1.7,2.1,1.8,3.7h-4.4c0-0.5-0.2-1-0.6-1.3s-0.8-0.5-1.4-0.5c-0.5,0-0.9,0.1-1.2,0.4 c-0.3,0.3-0.5,0.6-0.5,1.1c0,0.5,0.3,1,0.8,1.3c0.5,0.3,1.3,0.6,2.4,1c1.1,0.4,2,0.7,2.7,1.1s1.3,0.8,1.8,1.5 c0.5,0.6,0.7,1.5,0.7,2.5c0,1-0.2,1.8-0.7,2.6c-0.5,0.8-1.2,1.4-2.1,1.9s-2,0.7-3.3,0.7C57.7,33.8,56.6,33.6,55.6,33.2z'></path><path class='st0' d='M67.5,23.3c0.5-1,1.2-1.8,2.1-2.4c0.9-0.6,1.9-0.8,3-0.8c0.9,0,1.8,0.2,2.5,0.6c0.7,0.4,1.3,0.9,1.6,1.5v-1.9 h4.1v13.4h-4.1v-1.9c-0.4,0.6-1,1.1-1.7,1.5c-0.7,0.4-1.5,0.6-2.5,0.6c-1.1,0-2.1-0.3-3-0.9c-0.9-0.6-1.6-1.4-2.1-2.4 c-0.5-1-0.8-2.3-0.8-3.6C66.8,25.6,67,24.4,67.5,23.3z M75.9,24.6c-0.6-0.6-1.3-0.9-2.1-0.9c-0.8,0-1.5,0.3-2.1,0.9 c-0.6,0.6-0.9,1.4-0.9,2.4c0,1,0.3,1.8,0.9,2.4c0.6,0.6,1.3,0.9,2.1,0.9c0.8,0,1.5-0.3,2.1-0.9c0.6-0.6,0.9-1.4,0.9-2.4 C76.8,26,76.5,25.1,75.9,24.6z'></path><path class='st0' d='M90.6,23.7h-2.2v10h-4.1v-10h-1.5v-3.4h1.5v-0.4c0-1.6,0.5-2.9,1.4-3.8c0.9-0.9,2.3-1.3,4.2-1.3 c0.3,0,0.5,0,0.7,0v3.5c-0.8,0-1.3,0.1-1.7,0.3c-0.3,0.3-0.5,0.8-0.5,1.5v0.1h2.2V23.7z'></path><path class='st0' d='M105.1,28h-9.3c0.1,0.8,0.3,1.5,0.8,1.9c0.5,0.4,1.1,0.7,1.7,0.7c1,0,1.7-0.4,2.1-1.3h4.4 c-0.2,0.9-0.6,1.7-1.2,2.4s-1.3,1.3-2.2,1.7c-0.9,0.4-1.9,0.6-3,0.6c-1.3,0-2.5-0.3-3.5-0.8c-1-0.6-1.8-1.4-2.4-2.4 s-0.9-2.3-0.9-3.6c0-1.4,0.3-2.6,0.9-3.6c0.6-1,1.4-1.8,2.4-2.4c1-0.6,2.2-0.8,3.5-0.8c1.3,0,2.4,0.3,3.5,0.8 c1,0.5,1.8,1.3,2.4,2.3c0.6,1,0.9,2.2,0.9,3.5C105.1,27.1,105.1,27.5,105.1,28z M100.9,25.7c0-0.7-0.2-1.3-0.7-1.7 c-0.5-0.4-1.1-0.6-1.8-0.6c-0.7,0-1.3,0.2-1.7,0.6c-0.5,0.4-0.8,1-0.9,1.7H100.9z'></path><path class='st0' d='M111.4,16.8v16.8h-4.1V16.8H111.4z'></path><path class='st0' d='M135.4,21.7c1,1,1.5,2.4,1.5,4.2v7.8h-4.1v-7.3c0-0.9-0.2-1.5-0.7-2c-0.5-0.5-1.1-0.7-1.9-0.7 s-1.4,0.2-1.9,0.7c-0.5,0.5-0.7,1.1-0.7,2v7.3h-4.1v-7.3c0-0.9-0.2-1.5-0.7-2c-0.5-0.5-1.1-0.7-1.9-0.7c-0.8,0-1.4,0.2-1.9,0.7 c-0.5,0.5-0.7,1.1-0.7,2v7.3h-4.1V20.3h4.1V22c0.4-0.6,1-1,1.6-1.3c0.7-0.3,1.4-0.5,2.3-0.5c1,0,1.9,0.2,2.7,0.6 c0.8,0.4,1.4,1,1.9,1.8c0.5-0.7,1.1-1.3,1.9-1.8s1.7-0.7,2.6-0.7C133.1,20.1,134.5,20.6,135.4,21.7z'></path><path class='st0' d='M139.8,23.3c0.5-1,1.2-1.8,2.1-2.4c0.9-0.6,1.9-0.8,3-0.8c0.9,0,1.8,0.2,2.5,0.6c0.7,0.4,1.3,0.9,1.6,1.5 v-1.9h4.1v13.4H149v-1.9c-0.4,0.6-1,1.1-1.7,1.5c-0.7,0.4-1.5,0.6-2.5,0.6c-1.1,0-2.1-0.3-3-0.9c-0.9-0.6-1.6-1.4-2.1-2.4 c-0.5-1-0.8-2.3-0.8-3.6C139,25.6,139.2,24.4,139.8,23.3z M148.2,24.6c-0.6-0.6-1.3-0.9-2.1-0.9c-0.8,0-1.5,0.3-2.1,0.9 c-0.6,0.6-0.9,1.4-0.9,2.4c0,1,0.3,1.8,0.9,2.4c0.6,0.6,1.3,0.9,2.1,0.9c0.8,0,1.5-0.3,2.1-0.9c0.6-0.6,0.9-1.4,0.9-2.4 C149,26,148.7,25.1,148.2,24.6z'></path><path class='st0' d='M163.7,20.7c0.7,0.4,1.3,0.9,1.6,1.5v-1.9h4.1v13.4c0,1.2-0.2,2.3-0.7,3.3c-0.5,1-1.2,1.8-2.2,2.4 s-2.2,0.9-3.7,0.9c-2,0-3.6-0.5-4.8-1.4c-1.2-0.9-1.9-2.2-2.1-3.8h4.1c0.1,0.5,0.4,0.9,0.9,1.2c0.5,0.3,1.1,0.4,1.8,0.4 c0.8,0,1.5-0.2,2-0.7s0.8-1.3,0.8-2.3v-1.9c-0.4,0.6-1,1.1-1.7,1.5c-0.7,0.4-1.5,0.6-2.5,0.6c-1.1,0-2.1-0.3-3-0.9 c-0.9-0.6-1.6-1.4-2.1-2.4c-0.5-1-0.8-2.3-0.8-3.6c0-1.4,0.3-2.6,0.8-3.6c0.5-1,1.2-1.8,2.1-2.4c0.9-0.6,1.9-0.8,3-0.8 C162.1,20.1,162.9,20.3,163.7,20.7z M164.5,24.6c-0.6-0.6-1.3-0.9-2.1-0.9c-0.8,0-1.5,0.3-2.1,0.9c-0.6,0.6-0.9,1.4-0.9,2.4 c0,1,0.3,1.8,0.9,2.4c0.6,0.6,1.3,0.9,2.1,0.9c0.8,0,1.5-0.3,2.1-0.9c0.6-0.6,0.9-1.4,0.9-2.4C165.3,26,165,25.1,164.5,24.6z'></path><path class='st0' d='M184.9,28h-9.3c0.1,0.8,0.3,1.5,0.8,1.9c0.5,0.4,1.1,0.7,1.7,0.7c1,0,1.7-0.4,2.1-1.3h4.4 c-0.2,0.9-0.6,1.7-1.2,2.4s-1.3,1.3-2.2,1.7c-0.9,0.4-1.9,0.6-3,0.6c-1.3,0-2.5-0.3-3.5-0.8c-1-0.6-1.8-1.4-2.4-2.4 s-0.9-2.3-0.9-3.6c0-1.4,0.3-2.6,0.9-3.6c0.6-1,1.4-1.8,2.4-2.4c1-0.6,2.2-0.8,3.5-0.8c1.3,0,2.4,0.3,3.5,0.8 c1,0.5,1.8,1.3,2.4,2.3c0.6,1,0.9,2.2,0.9,3.5C185,27.1,185,27.5,184.9,28z M180.8,25.7c0-0.7-0.2-1.3-0.7-1.7 c-0.5-0.4-1.1-0.6-1.8-0.6c-0.7,0-1.3,0.2-1.7,0.6c-0.5,0.4-0.8,1-0.9,1.7H180.8z'></path><path class='st0' d='M195.3,33.7l-4.1-5.6v5.6h-4.1V15.9h4.1v9.8l4.1-5.4h5.1l-5.6,6.7l5.6,6.7H195.3z'></path><path class='st0' d='M202.3,18.3c-0.5-0.4-0.7-0.9-0.7-1.6c0-0.6,0.2-1.2,0.7-1.6s1-0.6,1.8-0.6c0.7,0,1.3,0.2,1.7,0.6 s0.7,1,0.7,1.6c0,0.6-0.2,1.1-0.7,1.6s-1,0.6-1.7,0.6C203.3,18.9,202.8,18.7,202.3,18.3z M206.1,20.3v13.4H202V20.3H206.1z'></path><path class='st0' d='M216.5,30.2v3.5h-2.1c-1.5,0-2.6-0.4-3.5-1.1c-0.8-0.7-1.2-1.9-1.2-3.6v-5.3h-1.6v-3.4h1.6V17h4.1v3.3h2.7 v3.4h-2.7v5.4c0,0.4,0.1,0.7,0.3,0.9c0.2,0.2,0.5,0.3,1,0.3H216.5z'></path></g><g><g><defs><path id='SVGID_4_' d='M8.3,10.3c-0.8,1.1-0.8,4.6-0.8,11.4v3.4c0,12,9.1,17.9,14.8,20.4c1.5,0.7,2.3,1,4.5,1s2.9-0.4,4.5-1 C36.9,43,46,37.2,46,25.1v-3.4c0-6.8,0-10.3-0.8-11.4c-0.8-1.1-4-2.2-10.4-4.4l-1.2-0.4c-3.4-1.1-5-1.7-6.7-1.7 c-1.7,0-3.4,0.5-6.7,1.7l-1.2,0.4C12.3,8,9.2,9.2,8.3,10.3z'></path></defs><clipPath id='SVGID_1_'><use xlink:href='#SVGID_4_' style='overflow:visible;'></use></clipPath><linearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='4.2901' y1='45.9056' x2='40.5632' y2='14.204' gradientTransform='matrix(1 0 0 -1 0 52)'><stop offset='0' style='stop-color:#4F00E8'></stop><stop offset='0.2561' style='stop-color:#4B01E6'></stop><stop offset='0.489' style='stop-color:#4003E1'></stop><stop offset='0.7129' style='stop-color:#2E06D9'></stop><stop offset='0.9299' style='stop-color:#140BCD'></stop><stop offset='1' style='stop-color:#0A0DC8'></stop></linearGradient><rect x='1.4' y='1.7' class='st1' width='48.2' height='45.7'></rect></g></g><g><path class='st2' d='M24.6,17c-0.5-0.5-0.8-1.1-0.8-1.9s0.3-1.4,0.8-1.9c0.5-0.5,1.2-0.8,2.1-0.8c0.9,0,1.6,0.3,2.1,0.8 c0.4,0.4,0.8,1,0.8,1.7c0.1,0.9-0.3,1.8-1,2.3c-0.5,0.4-1.2,0.7-2,0.7C25.9,17.8,25.1,17.5,24.6,17z M29.2,20.2v14.9 c0,0.4-0.3,0.6-0.6,0.6h-3.7c-0.4,0-0.6-0.3-0.6-0.6V20.2c0-0.4,0.3-0.6,0.6-0.6h3.7C28.9,19.5,29.2,19.8,29.2,20.2z'></path></g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g></svg>",
4
4
  "megaMenu": {
5
5
  "nav-link-name": "Tools",
6
6
  "dropdown": [{
File without changes
File without changes
@@ -1,30 +1,29 @@
1
1
  {
2
- "reviews": [
3
- {
4
- "name": "Alice Johnson",
5
- "title": "Excellent Image Editing Tool",
6
- "review": "Safeimagekit is a lifesaver for quick and secure image editing. Love the variety of tools!"
7
- },
8
- {
9
- "name": "Michael Lee",
10
- "title": "Very Easy to Use",
11
- "review": "Super simple to resize and adjust images. No need to download anything; works seamlessly online!"
12
- },
13
- {
14
- "name": "Sophia Martinez",
15
- "title": "Great for Quick Edits",
16
- "review": "Perfect for quick edits without compromising privacy. Highly recommend Safeimagekit."
17
- },
18
- {
19
- "name": "David Kim",
20
- "title": "Fast and Reliable",
21
- "review": "Impressed by the speed and reliability of Safeimagekit. Great for editing on the go without extra downloads."
22
- }
23
- ],
24
- "title":"Over 5 Million Users Enjoy Using Our Applications monthly.",
25
- "description":"Join a thriving community of creators who rely on our safeimagekit.com Tools.",
26
- "rated": 4.1,
27
- "numberOfReviews": "320",
28
- "trustpilotReviewLink": "https://www.trustpilot.com/review/safeimagekit.com"
29
- }
30
-
2
+ "reviews": [
3
+ {
4
+ "name": "Alice Johnson",
5
+ "title": "Excellent Image Editing Tool",
6
+ "review": "Safeimagekit is a lifesaver for quick and secure image editing. Love the variety of tools!"
7
+ },
8
+ {
9
+ "name": "Michael Lee",
10
+ "title": "Very Easy to Use",
11
+ "review": "Super simple to resize and adjust images. No need to download anything; works seamlessly online!"
12
+ },
13
+ {
14
+ "name": "Sophia Martinez",
15
+ "title": "Great for Quick Edits",
16
+ "review": "Perfect for quick edits without compromising privacy. Highly recommend Safeimagekit."
17
+ },
18
+ {
19
+ "name": "David Kim",
20
+ "title": "Fast and Reliable",
21
+ "review": "Impressed by the speed and reliability of Safeimagekit. Great for editing on the go without extra downloads."
22
+ }
23
+ ],
24
+ "title": "Over 5 Million Users Enjoy Using Our Applications monthly.",
25
+ "description": "Join a thriving community of creators who rely on our safeimagekit.com Tools.",
26
+ "rated": 4.1,
27
+ "numberOfReviews": "320",
28
+ "trustpilotReviewLink": "https://www.trustpilot.com/review/safeaudiokit.com"
29
+ }
data/_includes/.DS_Store CHANGED
Binary file
@@ -0,0 +1,248 @@
1
+ <script src="https://d3js.org/d3.v4.min.js"></script>
2
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/venn.js/0.2.20/venn.min.js"></script>
3
+ <style>
4
+ #venn {
5
+ margin: 20px auto;
6
+ width: 800px;
7
+ height: 600px;
8
+ }
9
+
10
+ .controls {
11
+ margin-bottom: 20px;
12
+ }
13
+
14
+ canvas {
15
+ display: none;
16
+ }
17
+ </style>
18
+ <div class="controls">
19
+ <label for="setCount">Number of sets:</label>
20
+ <select id="setCount" onchange="updateControls()">
21
+ <option value="2" selected>2</option>
22
+ <option value="3">3</option>
23
+ <option value="4">4</option>
24
+ <option value="5">5</option>
25
+ <option value="6">6</option>
26
+ <option value="7">7</option>
27
+ <option value="8">8</option>
28
+ </select>
29
+
30
+ <div id="setInputs"></div>
31
+
32
+ <label for="transparency">Transparency (0 to 1):</label>
33
+ <input type="number" id="transparency" value="0.4" step="0.1" min="0" max="1">
34
+
35
+ <label for="fontColor">Font Color:</label>
36
+ <input type="color" id="fontColor" value="#000000">
37
+
38
+ <button onclick="updateVenn()">Update Venn Diagram</button>
39
+ <button onclick="downloadVenn('png')">Download PNG</button>
40
+ <button onclick="downloadVenn('jpg')">Download JPG</button>
41
+ </div>
42
+
43
+ <div id="venn"></div>
44
+
45
+ <canvas id="canvas"></canvas>
46
+ <script>
47
+ let sets = [
48
+ { sets: ['A'], size: 12 },
49
+ { sets: ['B'], size: 12 },
50
+ { sets: ['A', 'B'], size: 2 }
51
+ ];
52
+
53
+ // Render the initial Venn diagram
54
+ const chart = venn.VennDiagram();
55
+ const div = d3.select("#venn").datum(sets).call(chart);
56
+
57
+ function updateControls() {
58
+ const setCount = parseInt(document.getElementById("setCount").value, 10);
59
+ const setInputs = document.getElementById("setInputs");
60
+
61
+ // Reset inputs
62
+ setInputs.innerHTML = '';
63
+
64
+ // Add inputs for individual set sizes
65
+ for (let i = 0; i < setCount; i++) {
66
+ const setLabel = String.fromCharCode(65 + i); // A, B, C, etc.
67
+ setInputs.innerHTML += `
68
+ <div>
69
+ <label for="set${setLabel}">Set ${setLabel} size:</label>
70
+ <input type="number" id="set${setLabel}" value="12">
71
+ </div>`;
72
+ }
73
+
74
+ // Add input for intersections if applicable
75
+ if (setCount > 1) {
76
+ setInputs.innerHTML += `
77
+ <div>
78
+ <label for="intersections">Intersection sizes (comma-separated):</label>
79
+ <input type="text" id="intersections" placeholder="e.g., 20,15,10">
80
+ </div>`;
81
+ }
82
+
83
+ // If 4 sets are selected, set default values
84
+ if (setCount === 4) {
85
+ document.getElementById("setA").value = 12;
86
+ document.getElementById("setB").value = 12;
87
+ document.getElementById("setC").value = 12;
88
+ document.getElementById("setD").value = 12;
89
+ document.getElementById("intersections").value = "2,2,2,1,2,2,3,3,3,3";
90
+ }
91
+
92
+ if (setCount === 5) {
93
+ document.getElementById("setA").value = 20;
94
+ document.getElementById("setB").value = 20;
95
+ document.getElementById("setC").value = 20;
96
+ document.getElementById("setD").value = 20;
97
+ document.getElementById("setE").value = 20;
98
+ document.getElementById("intersections").value = "5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,1";
99
+ }
100
+ if (setCount === 6) {
101
+ document.getElementById("setA").value = 20;
102
+ document.getElementById("setB").value = 20;
103
+ document.getElementById("setC").value = 20;
104
+ document.getElementById("setD").value = 20;
105
+ document.getElementById("setE").value = 20;
106
+ document.getElementById("setF").value = 20;
107
+
108
+ // Set intersection values as specified
109
+ document.getElementById("intersections").value = "5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1";
110
+ }
111
+ if (setCount === 7) {
112
+ document.getElementById("setA").value = 20;
113
+ document.getElementById("setB").value = 20;
114
+ document.getElementById("setC").value = 20;
115
+ document.getElementById("setD").value = 20;
116
+ document.getElementById("setE").value = 20;
117
+ document.getElementById("setF").value = 20;
118
+ document.getElementById("setG").value = 20;
119
+
120
+ document.getElementById("intersections").value =
121
+ "7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,2";
122
+ }
123
+ if (setCount === 8) {
124
+ document.getElementById("setA").value = 20;
125
+ document.getElementById("setB").value = 20;
126
+ document.getElementById("setC").value = 20;
127
+ document.getElementById("setD").value = 20;
128
+ document.getElementById("setE").value = 20;
129
+ document.getElementById("setF").value = 20;
130
+ document.getElementById("setG").value = 20;
131
+ document.getElementById("setH").value = 20;
132
+
133
+ document.getElementById("intersections").value =
134
+ "8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,2";
135
+ }
136
+ }
137
+
138
+ function updateVenn() {
139
+ const setCount = parseInt(document.getElementById("setCount").value, 10);
140
+ const transparency = parseFloat(document.getElementById("transparency").value);
141
+ const fontColor = document.getElementById("fontColor").value;
142
+ const updatedSets = [];
143
+
144
+ // Add individual sets
145
+ for (let i = 0; i < setCount; i++) {
146
+ const setLabel = String.fromCharCode(65 + i); // A, B, C, etc.
147
+ const setSize = parseInt(document.getElementById(`set${setLabel}`).value || "12", 10);
148
+ updatedSets.push({ sets: [setLabel], size: setSize });
149
+ }
150
+
151
+ // Add intersections based on the set count
152
+ if (setCount > 1) {
153
+ const intersectionInput = document.getElementById("intersections");
154
+ if (intersectionInput && intersectionInput.value.trim() !== '') {
155
+ const intersectionSizes = intersectionInput.value.split(',').map(Number);
156
+ let index = 0;
157
+
158
+ // Generate all combinations of sets for intersections
159
+ for (let i = 2; i <= setCount; i++) { // Only generate combinations of size >= 2
160
+ const combinations = getCombinations(
161
+ Array.from({ length: setCount }, (_, k) => String.fromCharCode(65 + k)),
162
+ i
163
+ );
164
+ combinations.forEach(combo => {
165
+ if (index < intersectionSizes.length) {
166
+ updatedSets.push({ sets: combo, size: intersectionSizes[index++] });
167
+ }
168
+ });
169
+ }
170
+ } else {
171
+ // Default pairwise intersections if no input is provided
172
+ for (let i = 0; i < setCount - 1; i++) {
173
+ for (let j = i + 1; j < setCount; j++) {
174
+ const setA = String.fromCharCode(65 + i);
175
+ const setB = String.fromCharCode(65 + j);
176
+ updatedSets.push({ sets: [setA, setB], size: 2 }); // Default size for pairwise intersections
177
+ }
178
+ }
179
+ }
180
+ }
181
+
182
+ sets = updatedSets;
183
+ d3.select("#venn").datum(sets).call(chart);
184
+
185
+ // Update transparency and font color
186
+ d3.selectAll(".venn-circle path").style("fill-opacity", transparency);
187
+ d3.selectAll(".venn-circle text").style("fill", fontColor);
188
+ }
189
+
190
+ // Helper function to generate combinations
191
+ function getCombinations(array, size) {
192
+ function combine(input, length, start, result) {
193
+ if (length === 0) return [result];
194
+ const combinations = [];
195
+ for (let i = start; i <= input.length - length; i++) {
196
+ combinations.push(...combine(input, length - 1, i + 1, result.concat(input[i])));
197
+ }
198
+ return combinations;
199
+ }
200
+ return combine(array, size, 0, []);
201
+ }
202
+
203
+ function downloadVenn(format) {
204
+ const svg = document.querySelector("#venn svg");
205
+ const canvas = document.getElementById("canvas");
206
+ const ctx = canvas.getContext("2d");
207
+ const serializer = new XMLSerializer();
208
+ const svgString = serializer.serializeToString(svg);
209
+ const img = new Image();
210
+
211
+ const svgBlob = new Blob([svgString], { type: "image/svg+xml;charset=utf-8" });
212
+ const url = URL.createObjectURL(svgBlob);
213
+
214
+ img.onload = function () {
215
+ canvas.width = svg.getBoundingClientRect().width;
216
+ canvas.height = svg.getBoundingClientRect().height;
217
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
218
+ ctx.drawImage(img, 0, 0);
219
+ URL.revokeObjectURL(url);
220
+
221
+ const link = document.createElement("a");
222
+ link.download = `venn-diagram.${format}`;
223
+ link.href = canvas.toDataURL(`image/${format}`);
224
+ link.click();
225
+ };
226
+
227
+ img.src = url;
228
+ }
229
+
230
+ // Add tooltips
231
+ div.selectAll(".venn-circle")
232
+ .on("mouseover", function (d) {
233
+ d3.select(this).select("path").style("fill-opacity", 0.6);
234
+ const tooltip = d3.select("body").append("div").attr("class", "tooltip")
235
+ .style("position", "absolute")
236
+ .style("background", "#fff")
237
+ .style("border", "1px solid #ccc")
238
+ .style("padding", "5px")
239
+ .style("z-index", 10)
240
+ .text(`${d.sets.join(' & ')}: ${d.size}`);
241
+
242
+ tooltip.style("left", `${d3.event.pageX + 5}px`).style("top", `${d3.event.pageY + 5}px`);
243
+ })
244
+ .on("mouseout", function () {
245
+ d3.select(this).select("path").style("fill-opacity", parseFloat(document.getElementById("transparency").value));
246
+ d3.select(".tooltip").remove();
247
+ });
248
+ </script>
@@ -22,30 +22,40 @@
22
22
  {% for post in blogData %}
23
23
  {%- include authors/authors.html-%}
24
24
  {% assign title = post.title %}
25
- {% assign title_lower = title | downcase %}
26
- {% assign title_hyphenated = title_lower | replace: ' ', '-' %}
27
- {% assign blogUrl = title_hyphenated | replace: '!', '' | replace: '?', '' | replace: ',', '' | replace: '.', '' | replace: ';', '' | replace: ':', '' | replace: '&', '' | replace: '@', '' | replace: '#', '' | replace: '$', '' | replace: '%', '' | replace: '^', '' | replace: '*', '' | replace: '(', '' | replace: ')', '' | replace: '+', '' | replace: '=', '' | replace: '{', '' | replace: '}', '' | replace: '[', '' | replace: ']', '' | replace: '|', '' | replace: '\\', '' | replace: '/', '' | replace: '<', '' | replace: '>', '' | replace: '~', '' | replace: '`', '' | replace: '"', '' | replace: "'", '' %}
28
-
29
- <div class="{%- if site.monumetricId and page.url != '/' and page.lang == " en" -%} col-md-6 mb-4 card-group {%-
30
- else -%} col-lg-4 col-md-6 mb-4 card-group {%- endif -%} ">
31
- <div class="card h-100 appscms-blog-cards">
32
- <a class="extrapaddingforimg" href="/blog/{{ blogUrl }}" aria-label="{{post.title}}">
33
- <img src="{{ post.image }}" loading="lazy" class="card-img-top" height="250"
34
- width="100%" alt="{{post.title}}" {%- if site.crossorigin -%} crossorigin {%- endif
35
- -%}>
25
+ {% assign title_lower = title | downcase %}
26
+ {% assign title_hyphenated = title_lower | replace: ' ', '-' %}
27
+ {% assign blogUrl = title_hyphenated | replace: '!', '' | replace: '?', '' | replace: ',', '' |
28
+ replace: '.', '' | replace: ';', '' | replace: ':', '' | replace: '&', '' | replace: '@', '' |
29
+ replace: '#', '' | replace: '$', '' | replace: '%', '' | replace: '^', '' | replace: '*', '' |
30
+ replace: '(', '' | replace: ')', '' | replace: '+', '' | replace: '=', '' | replace: '{', '' |
31
+ replace: '}', '' | replace: '[', '' | replace: ']', '' | replace: '|', '' | replace: '\\', '' |
32
+ replace: '/', '' | replace: '<', '' | replace: '>' , '' | replace: '~' , '' | replace: '`' , '' |
33
+ replace: '"' , '' | replace: "'" , '' %}
34
+
35
+
36
+ {%- assign ActualUrl = post.url | default: blogUrl -%}
37
+ <div
38
+ class="{%- if site.monumetricId and page.url != '/' and page.lang == " en" -%} col-md-6 mb-4
39
+ card-group {%- else -%} col-lg-4 col-md-6 mb-4 card-group {%- endif -%} ">
40
+ <div class=" card h-100 appscms-blog-cards">
41
+ <a class="extrapaddingforimg" href="/blog/{{ ActualUrl }}" aria-label="{{post.title}}">
42
+ <img src="{{ post.image }}" loading="lazy" class="card-img-top" height="250" width="100%"
43
+ alt="{{post.title}}" {%- if site.crossorigin -%} crossorigin {%- endif -%}>
36
44
  </a>
37
45
  <div class="card-body">
38
- <a class="text-decoration-none text-dark" href="/blog/{{ blogUrl }}" class="anchor_link" aria-label="{{post.title}}">
46
+ <a class="text-decoration-none text-dark" href="/blog/{{ blogUrl }}" class="anchor_link"
47
+ aria-label="{{post.title}}">
39
48
  <h4 class="card-title mb-4 text-left">{{ post.title }}</h4>
40
49
  </a>
41
50
  <div class="wrapfooter">
42
51
  {% if post.author %}
43
- <img class="author-thumb" loading="lazy" src="{{ image }}" alt="{{ authorName }}"
44
- {%- if site.crossorigin -%} crossorigin {%- endif -%}>
52
+ <img class="author-thumb" loading="lazy" src="{{ image }}" alt="{{ authorName }}" {%- if
53
+ site.crossorigin -%} crossorigin {%- endif -%}>
45
54
  {% endif %}
46
55
 
47
56
  <div class="author-meta">
48
- <a class="post-name" target="_blank" href="/authors/{{authorName |downcase |replace:' ','-'}}">{{ authorName }}</a>
57
+ <a class="post-name" target="_blank"
58
+ href="/authors/{{authorName |downcase |replace:' ','-'}}">{{ authorName }}</a>
49
59
  {% assign path_parts = post.path | split: '/' %}
50
60
  {% assign filename = path_parts[1] %}
51
61
  {% assign date_parts = filename | split: '-' %}
@@ -57,13 +67,13 @@
57
67
 
58
68
  </div>
59
69
  </div>
60
- </div>
61
70
  </div>
62
- {% endfor %}
63
- {%- if site.monumetricId and page.url != '/' and page.lang == "en" -%}
64
71
  </div>
72
+ {% endfor %}
73
+ {%- if site.monumetricId and page.url != '/' and page.lang == "en" -%}
65
74
  </div>
66
- {%- endif -%}
75
+ </div>
76
+ {%- endif -%}
67
77
  </div>
68
78
  </div>
69
79
  </section>
@@ -49,7 +49,8 @@
49
49
  Contributors
50
50
  </h4>
51
51
  <div class="d-flex justify-content-center w-100" style="gap: 10px">
52
- {%- for contributor in contributors -%} {%- assign
52
+ {%- for contributor in contributors -%}
53
+ {%- assign
53
54
  featureContributorData = contributor.name | split: " " -%} {%-
54
55
  assign featureContributorData = featureContributorData.first |
55
56
  downcase -%} {%- assign collectionData = [featureContributorData]
@@ -13,7 +13,7 @@
13
13
  {%- else -%}
14
14
  {%- endif -%}
15
15
  <div class="d-flex align-items-center">
16
- {%- if site.navigationSearch and page.lang == "en" -%}
16
+ {%- if site.navigationSearch -%}
17
17
  <div class="nav-search mr-4">
18
18
  <div class="search-container">
19
19
  <input type="text" class="search-input" placeholder="Search Tools">
@@ -11,7 +11,7 @@
11
11
  alt="close-button" />
12
12
  </div>
13
13
 
14
- {%- if site.navigationSearch and page.lang == "en" -%}
14
+ {%- if site.navigationSearch -%}
15
15
  <div class="mobile-search-bar">
16
16
  <div class="mobile-search-container">
17
17
  <input type="text" class="mobile-search-input" placeholder="Search Tools">
@@ -20,6 +20,7 @@
20
20
  {% assign taufik = "Taufik Ali&&/assets/images/taufik.webp&&Taufik has an analytical mindset and great attention to detail. He excels in analyzing website performance, conducting keyword research, optimizing on-page content, and developing effective link-building strategies. &&N/A" | split: '&&' %}
21
21
  {% assign bandana = "Bandana Kumari&&/assets/images/bandana.webp&&Bandana is an experienced SEO professional. In addition to her technical expertise, Bandana possesses excellent communication skills, allowing her to effectively collaborate with cross-functional teams and provide actionable recommendations to improve website performance &&N/A" | split: '&&' %}
22
22
  {% assign mahika = "Mahika Agrawal&&/assets/images/mahika.webp&&I'm Mahika Agrawal, an experienced content writer with a passion for words and skills in creating high-quality content that drives results. &&N/A" | split: '&&' %}
23
+ {% assign lakshmi = "Lakshmi Badige&&/assets/images/lakshmi.svg&&Lakshmi Badige is a skilled content writer with expertise in creating engaging content for SaaS companies. From blog posts and case studies to website copy, Lakshmi focuses on delivering content that attracts customers, builds trust, and drives results. With experience in SEO and content strategy, ensures every piece of content is optimized for both readers and search engines. &&N/A" | split: '&&' %}
23
24
  {%- assign postAuthor = post.author | split: " " -%}
24
25
  {%- assign author = postAuthor.first | downcase -%}
25
26
  {%- assign collection = [author] -%}
data/assets/.DS_Store CHANGED
Binary file
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="600px" height="600px" viewBox="0 0 200 200" style="overflow:hidden!important;"><g id="svga-group-wrapper"><g id="svga-group-backs-single"><path id="SvgjsPath17135" d="M0 0h200v200H0V0z" fill="#ecf0f1" stroke-width="none" opacity="1"></path></g><g id="svga-group-humanwrap-move" transform="matrix(1,0,0,1,0,0)"><g id="svga-group-humanwrap"><g id="svga-group-hair-back-move" transform="matrix(1,0,0,1,0,0)"><g id="svga-group-hair-back"><path id="SvgjsPath17357" d="M134.2 50.7s5.7 1.1 10.5 12 2.8 23.4 2.2 32.1-2 36-10.9 49.8-13.1 14.6-23.4 18.4c-10.3 3.7-36.5 2.6-47.6-7.4-11.1-10.1-6.5-26.9-3.7-33 2.8-6.2 72.9-71.9 72.9-71.9" fill="#221b23" stroke-width="none" opacity="1"></path><path id="SvgjsPath17358" d="M71.2 121.7s-2.8 7.1-3.4 12c-.6 4.9 2.6 9.5 4.5 12.1 2.1 2.8 6 7.6 6.1 17.2.1 6 41.6-5.5 41.6-5.5 3.7-2.9 11.1-9.6 15.6-20.9 3.8-9.5 3.8-17.8 3.5-22.4-17.2 6.2-34.5 12.5-51.7 18.7l-2.8-4.3-13.4-6.9z" fill="#1b141c" stroke-width="none" opacity="1"></path></g></g><g id="svga-group-humanbody-back"><path id="SvgjsPath17202" d="m168.5 219.5-1.7-21.5s.7-9-8.8-15.3-23.4-10.1-29.5-14.2c-6.1-4.1-9.2-4.5-9-16.9s.9-40.3.9-40.3H79.6s.7 27.9.9 40.3c.2 12.4-2.9 12.8-9 16.9-6.1 4.1-20 7.9-29.5 14.2S33.2 198 33.2 198l-1.6 21.5h136.9z" fill="#f3d4cf" stroke-width="none" opacity="1"></path></g><g id="svga-group-chinshadow-single"><path id="SvgjsPath17198" d="M80.4 155.4c5.9 5.8 12.6 9.3 19.6 9.3s13.7-3.5 19.6-9.3c-.1-1.1-.1-2.4-.1-3.8.2-12.4.9-40.3.9-40.3H79.6s.7 27.9.9 40.3c0 1.4 0 2.7-.1 3.8z" fill="#d4958a" stroke-width="none" opacity="0.65"></path></g><g id="svga-group-humanbody-front"><path id="SvgjsPath17203" d="M73.8 175.9c5.1 2.9 11.8 5.2 17.6 5.7.4 0 .4-.6.1-.7-2.8-1.1-5.9-1.7-8.8-2.6-2.9-.9-5.8-2-8.8-2.7-.1-.1-.3.2-.1.3zm35.2 6.2c5.3-.6 11.3-3 15.9-5.8.3-.2.1-.6-.2-.5-2.6.9-5.2 2-7.8 2.9-2.6.9-5.4 1.5-8 2.5-.5.1-.5.9.1.9z" fill="#d4958a" stroke-width="none" opacity="1"></path><path id="SvgjsPath17204" d="m168.4 219.4-2.1-21.4c0-2.2-.5-4.5-1.5-6.6-.9-2.1-2.3-3.9-3.9-5.5s-3.5-2.8-5.5-4c-2-1.2-4.1-2.2-6.2-3.1-4.2-1.9-8.6-3.6-12.9-5.4-2.2-.9-4.3-1.9-6.4-3-1.1-.6-2.1-1.2-3-1.9-1-.6-2-1.2-3-1.9s-2-1.5-2.8-2.6c-.8-1-1.3-2.2-1.7-3.4-.7-2.4-.8-4.8-.8-7.2 0-4.7.2-9.4.3-14.1.2-9.4.6-18.7.9-28l.6.6-20.4-.2-20.4-.1.3-.3.7 28c.1 4.7.3 9.3.4 14 0 2.4-.1 4.7-.8 7.1-.3 1.2-.9 2.3-1.6 3.3-.8 1-1.7 1.8-2.7 2.5s-2 1.3-2.9 2c-.9.6-1.9 1.3-3 1.9-2.1 1.2-4.2 2.1-6.4 3.1-4.3 1.9-8.6 3.6-12.8 5.6-2.1 1-4.2 2.1-6.1 3.2-2 1.2-3.8 2.4-5.4 4-1.6 1.6-2.9 3.4-3.8 5.4-.4 1-.8 2.1-1 3.1-.2 1.1-.4 2.2-.3 3.2v.2l-1.5 21.5-1-1.1 34 .1c11.3 0 22.7.1 34.1.2l34.2.3 34.4.5zm.2.2-34 .4-34.2.3c-11.4.1-22.9.2-34.4.2l-34.4.1h-1.1l.1-1.1 1.7-21.5v.1c-.1-5.1 2.2-9.8 5.7-13.3 1.7-1.7 3.8-3.1 5.8-4.3 2-1.2 4.2-2.2 6.3-3.2 4.3-2 8.7-3.7 13-5.4 2.1-.9 4.3-1.8 6.3-2.9 1-.5 1.9-1.1 3-1.8 1-.6 2-1.2 2.9-1.9.9-.6 1.8-1.4 2.4-2.2.7-.9 1.2-1.9 1.5-2.9.6-2.1.8-4.5.8-6.8 0-4.6-.1-9.3-.2-14l-.6-28v-.3h.3l20.4-.1 20.4-.2h.6v.6c-.1 9.3-.2 18.7-.4 28-.1 4.7-.2 9.4-.2 14 .1 2.3.2 4.6.8 6.7.3 1.1.8 2 1.4 2.9.6.8 1.4 1.6 2.4 2.2.9.6 1.9 1.3 2.9 1.9 1 .7 1.9 1.3 2.9 1.8 2 1.1 4.1 2.1 6.3 3 4.3 1.8 8.6 3.6 12.9 5.6 2.1 1 4.2 2.1 6.2 3.3 2 1.2 4 2.6 5.7 4.3 3.4 3.4 5.6 8.1 5.4 13v-.1l1.4 21.6zm-112.8-.4 1.9-13.8.1 13.8h-2zm88.6 0-1.9-13.8-.1 13.8h2z" fill="#c5796d" stroke-width="none" opacity="1"></path></g><g id="svga-group-clothes-single"><path id="SvgjsPath17335" d="m143.2 220 .1-3.6 26.8-2.6s-1.2-16.5-1.9-20-2.3-8.6-12.1-14-27.7-12.4-27.7-12.4c-31.6 30.5-56-.1-56.7 0 0 0-17.9 7-27.7 12.4s-11.4 10.5-12.1 14-1.9 20-1.9 20l26.8 2.6v3.6h86.4z" fill="#09aac5" stroke-width="none" opacity="1"></path><path id="SvgjsPath17336" d="M170.7 213.8c-.4-5.8-.7-11.6-1.3-17.4-.3-2.9-.9-6-2.6-8.6-1.6-2.6-3.9-4.6-6.4-6.3-2.4-1.7-5.1-3.1-7.7-4.4-2.6-1.3-5.3-2.5-7.9-3.7-5.3-2.4-10.7-4.5-16.2-6.6-.2-.1-.5 0-.7.1-3.8 3.8-8 7.1-12.7 9.6-4.7 2.5-9.9 4-15.2 4.1-2.7 0-5.3-.3-7.9-.9-2.6-.7-5.1-1.7-7.4-2.9s-4.6-2.7-6.7-4.3c-1.1-.8-2.1-1.7-3.1-2.6-.5-.4-1-.9-1.4-1.4l-.7-.7-.4-.4-.2-.2-.1-.1-.1-.1s-.2-.1-.3-.1h-.1c-5.4 2.1-10.8 4.2-16.2 6.5-2.7 1.1-5.3 2.3-8 3.6-2.6 1.3-5.2 2.6-7.7 4.3-2.4 1.7-4.8 3.7-6.4 6.3-1.7 2.6-2.4 5.7-2.7 8.6-.7 5.8-1.1 11.6-1.6 17.4 0 .5.4 1 .9 1.1l13.4 1.3 12.5 1.2v2.7c0 .6.5 1 1 1 7.3 0 14.5 0 21.8-.1l21.7-.2 43-.6.2-3.5 13.2-1 13.4-1.1c.4 0 .6-.3.6-.6zm-14.1.8-13.4 1.6c-.1 0-.2.1-.2.2l.1 3.6-43.4-.6-21.5-.2c-6.8-.1-13.6-.1-20.4-.1v-2.6c0-.5-.4-1-.9-1L43.5 214 31 212.9c.4-5.4.8-10.9 1.3-16.3.3-2.9.9-5.6 2.3-7.9 1.5-2.3 3.6-4.2 5.9-5.9 2.3-1.6 4.8-3 7.4-4.3s5.2-2.6 7.8-3.8c5.2-2.4 10.5-4.6 15.8-6.8l.2.1.4.3.7.7c.5.5 1 .9 1.5 1.4 1 .9 2.1 1.8 3.1 2.6 2.2 1.6 4.4 3.1 6.8 4.4 4.8 2.5 10.2 3.9 15.6 3.9s10.8-1.5 15.7-3.9c4.7-2.4 9-5.6 12.8-9.2 5.2 2.1 10.4 4.4 15.6 6.7 2.6 1.2 5.3 2.4 7.8 3.7 2.6 1.3 5.1 2.6 7.4 4.2 2.3 1.6 4.5 3.5 6 5.8s2.2 5 2.4 7.9c.3 2.9.6 5.8.9 8.6l.7 8.1-12.5 1.4zm-100.5-7.3-.3-1.1-.4-1c-.9-2.8-2.3-5.4-3.8-7.9-1.6-2.5-3.4-4.8-5.5-6.8s-4.4-3.9-7-5.1c1.2.8 2.3 1.7 3.4 2.6 1.1.9 2.1 1.9 3.1 3 1.9 2.1 3.7 4.4 5.2 6.8.4.6.7 1.2 1.1 1.8.4.6.7 1.2 1 1.9.3.6.7 1.3 1 1.9.3.7.6 1.3.9 2l.4 1 .4 1 .7 2c.5 1.4.8 2.8 1.3 4.1-.3-1.4-.5-2.9-.9-4.3l-.6-1.9zm92.9-9.9c-1.5 2.5-2.9 5.1-3.8 7.9l-.4 1-.3 1.1-.6 2.1c-.3 1.4-.6 2.8-.9 4.3.5-1.4.8-2.8 1.3-4.1l.7-2 .4-1 .4-1c.3-.6.6-1.3.9-2 .3-.6.6-1.3 1-1.9.3-.6.6-1.3 1-1.9.4-.6.7-1.2 1.1-1.8 1.5-2.4 3.3-4.7 5.2-6.8.9-1.1 2-2.1 3.1-3 1.1-1 2.2-1.9 3.4-2.6-2.6 1.3-4.9 3.1-7 5.1-2.1 1.8-3.9 4.2-5.5 6.6z" fill="#008fa6" stroke-width="none" opacity="1"></path></g><g id="svga-group-head" transform="matrix(1,0,0,1,0,0)"><g id="svga-group-ears-left-move" transform="matrix(1,0,0,1,0,0)"><g id="svga-group-ears-left"><path id="SvgjsPath17152" d="M64.2 96.3c-.2-.3-3.1-4-5.5-6.3-2.5-2.3-3.2-2.2-4.4-.8s-2.7 8.5-2.3 11.7 3.3 8.2 4.9 11c1.6 2.8 3.1 6.3 4.8 6 1.8-.3 4.2-4.3 5.3-7.3 1.2-3 .6-10.3-2.8-14.3z" fill="#f3d4cf" stroke-width="none" opacity="1"></path><path id="SvgjsPath17153" d="M67.9 104.8c.1.8.2 1.6.2 2.4s0 1.6-.2 2.4l-.3 1.2c-.1.4-.3.7-.4 1-.3.7-.6 1.3-.9 2-.7 1.2-1.4 2.4-2.4 3.4-.5.5-1 1-1.7 1.2-.3.1-.8.1-1.2 0-.4-.2-.7-.4-1-.7-1.2-1.2-1.8-2.6-2.5-4s-1.4-2.7-2.1-4.1c-.7-1.4-1.4-2.8-2-4.2-.3-.7-.6-1.4-.9-2.2-.3-.7-.5-1.5-.6-2.3-.2-1.6 0-3.2.1-4.7.2-1.5.4-3 .8-4.5.2-.7.4-1.5.7-2.2.1-.2.2-.3.3-.5s.2-.4.3-.5c.2-.3.5-.5.8-.7s.7-.3 1.1-.3c.4.1.7.2 1.1.4.6.4 1.1.9 1.7 1.4 2 2.1 3.7 4.5 5.6 6.8 1.8 2.5 2.9 5.6 3.5 8.7zm-9.6-14.6c-1-.8-2.2-1.7-2.9-1.2-.2.1-.4.3-.6.6-.1.1-.2.2-.2.3-.1.1-.1.3-.2.4-.3.6-.5 1.2-.7 1.9-.4 1.3-.8 2.8-1.1 4.2-.3 1.4-.5 3-.4 4.4.1.7.3 1.5.5 2.2l.9 2.1c.6 1.4 1.4 2.7 2.2 4s1.6 2.6 2.3 3.9c.4.7.7 1.3 1.1 1.9.4.6.8 1.2 1.2 1.6s.8.6 1.2.4.9-.5 1.3-1c.8-.9 1.5-2 2.2-3.2l.9-1.8c.1-.3.3-.6.4-.9l.2-.4c0-.2.1-.3.1-.5.3-1.3.3-2.8.3-4.3-.1-1.5-.3-3-.8-4.5s-1.2-2.9-2.1-4c-1.7-2.2-3.7-4.4-5.8-6.1z" fill="#e4b3ab" stroke-width="none" opacity="1"></path><path id="SvgjsPath17154" d="M54.1 102.4c-.2-2.1-.4-7.4.8-9 2-2.7 5.6 6.1 6.5 8.8 0 .1.1.2.1.2.1.3-.1.7-.4.6-.4-.2-.8-.6-1.2-.8-1.1-.5-1.5.4-1.2 1.7.4 1.7 1.3 2.7 2.1 4 .1.2 0 .4-.2.3-1.5-.9-3.3-4.2-2.9-6.2.3-1.8 1.8-1.7 2.9-.8-.7-1.6-1.4-3.1-2.3-4.5-.6-.9-1.1-1.9-2-2-1.1-.2-.9.3-1.1 1.7-.8 4.6-.3 9.7 2.4 13.7.1.1 0 .2-.1.1-2-2.2-3.1-4.7-3.4-7.8z" fill="#d4958a" stroke-width="none" opacity="1"></path></g></g><g id="svga-group-ears-right-move" transform="matrix(1,0,0,1,0,0)"><g id="svga-group-ears-right"><path id="SvgjsPath17155" d="M135.8 96.3c.2-.3 3.1-4 5.5-6.3 2.5-2.3 3.2-2.2 4.4-.8s2.7 8.5 2.3 11.7-3.3 8.2-4.9 11c-1.6 2.8-3.1 6.3-4.8 6-1.8-.3-4.2-4.3-5.3-7.3-1.2-3-.6-10.3 2.8-14.3z" fill="#f3d4cf" stroke-width="none" opacity="1"></path><path id="SvgjsPath17156" d="M135.7 96.3c1.8-2.3 3.5-4.7 5.6-6.8.5-.5 1-1 1.7-1.4.3-.2.7-.4 1.1-.4.4-.1.8.1 1.1.3.3.2.6.5.8.7.1.1.2.3.3.5s.2.3.3.5c.3.7.5 1.4.7 2.2.4 1.5.6 3 .8 4.5.1 1.5.3 3.1.1 4.7-.1.8-.3 1.6-.6 2.3-.3.8-.6 1.5-.9 2.2-.6 1.4-1.3 2.8-2 4.2-.7 1.4-1.4 2.7-2.1 4.1-.7 1.4-1.4 2.8-2.5 4-.3.3-.6.6-1 .7s-.9.2-1.2 0c-.7-.2-1.2-.7-1.7-1.2-1-1-1.7-2.2-2.4-3.4-.3-.6-.6-1.3-.9-2-.1-.3-.3-.7-.4-1l-.3-1.2c-.1-.8-.2-1.6-.2-2.4s.1-1.6.2-2.4c.5-3.3 1.6-6.4 3.5-8.7zm.1.1c-.9 1.1-1.6 2.5-2.1 4s-.7 3-.8 4.5 0 3 .3 4.3c0 .2.1.3.1.5l.2.4c.1.3.3.6.4.9l.9 1.8c.6 1.2 1.4 2.3 2.2 3.2.4.4.9.8 1.3 1 .4.2.8 0 1.2-.4s.8-1 1.2-1.6.8-1.3 1.1-1.9c.7-1.3 1.6-2.6 2.3-3.9.8-1.3 1.5-2.6 2.2-4l.9-2.1c.3-.7.5-1.5.5-2.2.1-1.5-.1-3-.4-4.4-.3-1.4-.6-2.9-1.1-4.2-.2-.7-.5-1.3-.7-1.9-.1-.1-.1-.3-.2-.4-.1-.1-.1-.2-.2-.3l-.6-.6c-.7-.6-1.8.4-2.9 1.2-2 1.6-4 3.8-5.8 6.1z" fill="#e4b3ab" stroke-width="none" opacity="1"></path><path id="SvgjsPath17157" d="M145.9 102.4c.2-2.1.4-7.4-.8-9-2-2.7-5.6 6.1-6.5 8.8 0 .1-.1.2-.1.2-.1.3.1.7.4.6.4-.2.8-.6 1.2-.8 1.1-.5 1.5.4 1.2 1.7-.4 1.7-1.3 2.7-2.1 4-.1.2 0 .4.2.3 1.5-.9 3.3-4.2 2.9-6.2-.3-1.8-1.8-1.7-2.9-.8.7-1.6 1.4-3.1 2.3-4.5.6-.9 1.1-1.9 2-2 1.1-.2.9.3 1.1 1.7.8 4.6.3 9.7-2.4 13.7-.1.1 0 .2.1.1 2-2.2 3.1-4.7 3.4-7.8z" fill="#d4958a" stroke-width="none" opacity="1"></path></g></g><g id="svga-group-faceshape-wrap"><g id="svga-group-faceshape-single"><path id="SvgjsPath17184" d="M141 88.4c0 30.3-18.9 65.2-41 65.2s-41-34.9-41-65.2 18.9-47 41-47 41 16.6 41 47z" fill="#f3d4cf" stroke-width="none" opacity="1"></path><path id="SvgjsPath17185" d="M100 41.3c-22.1 0-41.1 16.7-41.1 47s19 65.5 41.1 65.5 41.1-35.2 41.1-65.5-19-47-41.1-47zm28.2 13.6.8.8c.3.3.5.6.8.9.3.3.5.6.8.9l.7.9c.2.3.5.6.7.9l.7 1 .3.5.3.5c.4.7.9 1.3 1.2 2l.6 1c.2.3.4.7.5 1l.5 1.1.5 1.1c.2.4.3.7.5 1.1l.4 1.1c2.3 5.9 3.2 12.4 3.3 18.7 0 6.4-.9 12.8-2.6 18.9-.8 3.1-1.9 6.1-3.1 9-1.2 2.9-2.5 5.8-4 8.6s-3.1 5.5-4.8 8.1c-.9 1.3-1.8 2.6-2.7 3.8-.9 1.2-1.9 2.4-3 3.6-2 2.3-4.3 4.4-6.7 6.3-2.4 1.8-5 3.3-7.8 4.3-1.4.5-2.8.9-4.3 1-1.5.2-2.9.2-4.4.1-3-.2-5.9-1.2-8.6-2.6-2.7-1.4-5.3-3.3-7.6-5.4-2.3-2.1-4.4-4.5-6.3-7.1s-3.6-5.3-5-8.1c-1.5-2.8-2.8-5.7-3.9-8.7-.6-1.5-1.1-3-1.6-4.5s-.9-3-1.3-4.6c-.8-3.1-1.4-6.2-1.8-9.3-.4-3.1-.7-6.3-.8-9.4 0-1.6 0-3.1.1-4.7 0-.8.1-1.6.1-2.3l.2-2.3c.3-3.1.9-6.2 1.7-9.1.8-3 1.8-5.9 3.2-8.6.2-.4.3-.7.5-1l.5-1c.4-.7.8-1.3 1.2-2 .4-.6.8-1.3 1.3-1.9l.7-.9.3-.5.4-.4c1.9-2.4 4.1-4.5 6.5-6.3s5-3.3 7.8-4.5 5.7-2 8.6-2.5c.7-.2 1.5-.2 2.2-.3.4-.1.8-.1 1.1-.1l1.1-.1c.8 0 1.5-.1 2.3-.1H102.6l1.1.1c.4 0 .8.1 1.1.1.4 0 .8.1 1.1.1l1.1.2.6.1.6.1 1.1.2c.4.1.7.2 1.1.3s.7.2 1.1.3c1.4.4 2.9.9 4.3 1.5s2.8 1.2 4.1 2c2.7 1.5 5.2 3.3 7.4 5.4l.4.4.5.3z" fill="#c5796d" stroke-width="none" opacity="1"></path></g></g><g id="svga-group-mouth-single-move" transform="matrix(1,0,0,1,0,0)"><g id="svga-group-mouth-single"><path id="SvgjsPath17140" d="M86.9 128.6s2-.5 3.7-2.3c1.8-1.8 2.3-2.2 3.2-2.6 1-.4 3.2-1 4.9.4 1.6 1.3 2 .5 2.7 0s2-1.4 4.2-.6 4.3 3.4 5.6 4.1 2.2.9 2.2.9-1.7 2.4-3.1 3.8c-1.9 2-4.3 2.7-8.6 3-4.3.3-7.2-.5-9-1.7-1.9-1.2-3.5-3.2-3.9-3.6-.5-.5-1.9-1.4-1.9-1.4z" fill="#da7c87" stroke-width="none" opacity="1" transform="translate(0 3)"></path><path id="SvgjsPath17141" d="M86.2 128.6c1.8.9 3.6.8 5.5.4 1.4-.3 2.9-.6 4.3-.5s2.7.8 4.2.9c1.1 0 2-.4 3-.7 1.9-.6 3.5-.3 5.4.1 1.9.4 4 1 5.7-.2.3-.2.1-.6-.2-.6-2.7.5-4.7-.2-7.4-.6-2.4-.4-4.4 1.1-6.8.8-2-.2-3.5-1-5.5-.7-2.7.3-5.2 1.4-7.9.4-.4 0-.6.6-.3.7z" fill="#cb5f6c" stroke-width="none" opacity="1" transform="translate(0 3)"></path><path id="SvgjsPath17142" d="M109.8 130.3c-4.4.3-8.6 1.8-13 1.6-.2 0-.3.3-.1.4 4.3 1.1 9.6 1.4 13.2-1.8.1-.1 0-.2-.1-.2z" fill="#e99ca5" stroke-width="none" opacity="1" transform="translate(0 3)"></path></g></g><g id="svga-group-eyes-left-move" transform="matrix(1,0,0,1,0,0)"><g id="svga-group-eyes-left"><g id="svga-group-eyesback-left"><path id="SvgjsPath17257" d="M90.9 101.3s-.3-2.5-1-3.8-3.7-4.4-7-5c-4.9-1-9.3 1.7-9.3 1.7s0 2.4 1.5 4.1c1.4 1.7 3.9 2.6 4.9 2.7s4.6.3 6.5 0c1.3-.2 2.8-.2 3.4 0 .5.2 1 .3 1 .3z" fill="#ffffff" stroke-width="none" opacity="1"></path></g><g id="svga-group-eyesiriswrapper-left" transform="matrix(1,0,0,1,0,0)"><g id="svga-group-eyesiriscontrol-left" transform="matrix(1,0,0,1,0,0)"><g id="svga-group-eyesiris-left"><path id="SvgjsPath17219" d="M82 91.5c2.7 0 4.9 2.2 4.9 4.9s-2.2 4.9-4.9 4.9-4.9-2.2-4.9-4.9 2.2-4.9 4.9-4.9z" fill="#4e60a3" stroke-width="none" opacity="1"></path><path id="SvgjsPath17220" d="M82 93.8c1.4 0 2.6 1.2 2.6 2.6S83.4 99 82 99s-2.6-1.2-2.6-2.6 1.2-2.6 2.6-2.6z" fill="#000000" stroke-width="none" opacity="1"></path><path id="SvgjsPath17221" d="m81.3 94.3-.5-.5c-.2-.2-.4-.3-.7-.3s-.5.1-.7.3c-.2.2-.3.4-.3.7s.1.5.3.7l.5.5c.2.2.4.3.7.3.2 0 .5-.1.7-.3.4-.5.4-1 0-1.4zm2.5 4.4c.8 0 .8-1.3 0-1.3s-.9 1.3 0 1.3z" fill="#ffffff" stroke-width="none" opacity="1"></path></g></g></g><g id="svga-group-eyesfront-left"><path id="SvgjsPath17265" d="M70.73 98.03c0 6.9 4.93 12.5 11.02 12.5s11.02-5.6 11.02-12.5-4.93-12.5-11.02-12.5-11.02 5.59-11.02 12.5zm2.88-3.78s4.42-2.71 9.34-1.75c3.29.64 6.2 3.74 6.95 5.03.75 1.28 1.03 3.82 1.03 3.82s-.53-.14-1.11-.32c-.57-.18-2.05-.19-3.39.04-1.89.32-5.46.18-6.45.04-1-.14-3.49-1.07-4.92-2.75-1.41-1.69-1.45-4.11-1.45-4.11z" fill="#f3d4cf" stroke-width="none" opacity="1"></path><path id="SvgjsPath17266" d="M73.27 94.64c-.1.42-.12.84-.06 1.25-.57-.03-1.21.05-1.59.44-.14.14.01.33.18.3.3-.05.58-.2.88-.27.21-.05.42-.06.63-.05.06.21.13.42.22.63-.18.06-.35.14-.5.21-.38.17-.75.42-.99.76-.11.15.09.28.22.22.35-.16.68-.38 1.03-.55.15-.07.32-.12.49-.18.16.28.35.54.56.8-.41.24-.78.58-.9 1.03-.03.1.09.21.19.15.36-.24.65-.57.96-.88 1.11 1.22 2.67 2.16 3.92 2.57 1.88.62 3.93.72 5.89.62 1.85-.09 4.72-1.14 6.43-.21.07.04.13.02.17-.02l.03-.03c.01-.02.02-.04.02-.06 0-.01.01-.01.01-.03-.1-4.06-2.64-7.49-6.4-8.97-2.08-.82-4.37-1.02-6.58-.69-2.59.39-4.87 1.66-7.54 1.44-.23-.02-.34.3-.18.44.9.88 1.89 1.13 2.91 1.08zm.67-.07c1.99-.32 4.11-1.54 6.09-1.68 5.13-.36 10.05 3 10.7 8.24-2.39-.82-5.13-.1-7.59-.15-2.01-.04-4.14-.32-5.91-1.34-2.21-1.28-2.61-2.93-3.29-5.07z" fill="#000000" stroke-width="none" opacity="1"></path></g></g></g><g id="svga-group-eyes-right-move" transform="matrix(1,0,0,1,0,0)"><g id="svga-group-eyes-right"><g id="svga-group-eyesback-right"><path id="SvgjsPath17258" d="M109.1 101.3s.3-2.5 1-3.8 3.7-4.4 7-5c4.9-1 9.3 1.7 9.3 1.7s0 2.4-1.5 4.1c-1.4 1.7-3.9 2.6-4.9 2.7s-4.6.3-6.5 0c-1.3-.2-2.8-.2-3.4 0-.5.2-1 .3-1 .3z" fill="#ffffff" stroke-width="none" opacity="1"></path></g><g id="svga-group-eyesiriswrapper-right" transform="matrix(1,0,0,1,0,0)"><g id="svga-group-eyesiriscontrol-right" transform="matrix(1,0,0,1,0,0)"><g id="svga-group-eyesiris-right"><path id="SvgjsPath17222" d="M118 91.5c2.7 0 4.9 2.2 4.9 4.9s-2.2 4.9-4.9 4.9-4.9-2.2-4.9-4.9 2.2-4.9 4.9-4.9z" fill="#4e60a3" stroke-width="none" opacity="1"></path><path id="SvgjsPath17223" d="M118 93.8c1.4 0 2.6 1.2 2.6 2.6S119.4 99 118 99s-2.6-1.2-2.6-2.6 1.2-2.6 2.6-2.6z" fill="#000000" stroke-width="none" opacity="1"></path><path id="SvgjsPath17224" d="m117.4 94.3-.5-.5c-.2-.2-.4-.3-.7-.3s-.5.1-.7.3c-.2.2-.3.4-.3.7s.1.5.3.7l.5.5c.2.2.4.3.7.3.2 0 .5-.1.7-.3.3-.5.4-1 0-1.4zm2.4 4.4c.8 0 .8-1.3 0-1.3s-.8 1.3 0 1.3z" fill="#ffffff" stroke-width="none" opacity="1"></path></g></g></g><g id="svga-group-eyesfront-right"><path id="SvgjsPath17267" d="M118.26 85.53c-6.08 0-11.02 5.6-11.02 12.5s4.93 12.5 11.02 12.5 11.02-5.6 11.02-12.5-4.94-12.5-11.02-12.5zm6.67 12.82c-1.43 1.68-3.92 2.6-4.92 2.75-1 .14-4.56.29-6.45-.04-1.34-.23-2.82-.21-3.39-.04-.57.18-1.11.32-1.11.32s.29-2.53 1.03-3.82c.75-1.28 3.66-4.38 6.95-5.03 4.92-.96 9.34 1.75 9.34 1.75s-.03 2.43-1.45 4.11z" fill="#f3d4cf" stroke-width="none" opacity="1"></path><path id="SvgjsPath17270" d="M129.64 93.58c.15-.15.04-.46-.18-.44-2.68.22-4.96-1.05-7.54-1.44-2.21-.33-4.49-.13-6.58.69-3.76 1.48-6.31 4.91-6.4 8.97 0 .01.01.02.01.03 0 .02.01.04.02.06l.03.03c.04.04.1.06.17.02 1.71-.93 4.58.11 6.43.21 1.96.1 4.02-.01 5.89-.62 1.25-.41 2.81-1.35 3.92-2.57.31.31.6.64.96.88.1.06.22-.04.19-.15-.12-.45-.5-.79-.9-1.03.21-.26.4-.52.56-.8.17.06.34.11.49.18.35.17.68.39 1.03.55.13.06.33-.07.22-.22-.25-.34-.61-.59-.99-.76-.15-.07-.32-.15-.5-.21.09-.21.17-.42.22-.63.21 0 .42.01.63.05.3.07.58.21.88.27.17.03.31-.16.18-.3-.38-.39-1.02-.48-1.59-.44.06-.41.04-.83-.06-1.25 1.02.03 2.01-.22 2.91-1.08zm-6.87 6.06c-1.77 1.03-3.9 1.3-5.91 1.34-2.46.05-5.21-.67-7.59.15.65-5.24 5.56-8.6 10.7-8.24 1.98.14 4.1 1.36 6.09 1.68-.68 2.14-1.08 3.79-3.29 5.07z" fill="#000000" stroke-width="none" opacity="1"></path></g></g></g><g id="svga-group-facehighlight-single"></g><g id="svga-group-eyebrows-left-move" transform="matrix(1,0,0,1,0,0)"><g id="svga-group-eyebrows-left-rotate" transform="matrix(1,1.7453292519943295e-9,-1.7453292519943295e-9,1,1.5003287501258455e-7,-1.402671330197336e-7)"><g id="svga-group-eyebrows-left"><path id="SvgjsPath17311" d="M68.8 86s.1 0 0 0c.1-.1.1-.1.1-.2.3-.6.9-1 1.4-1.3.6-.4 1.3-.9 1.9-1.3h.1c1.5-1.1 4-1.3 6-.8 1.9.2 3.8.8 5 1.3.1 0 .2.1.4.1 1.6.3 3.3.6 4.8 1.2 1.5.3 3 .5 4.4 1h.1c.1-.1.4 0 .4.2.1.2.1.4 0 .7.2 0 .3.1.3.3-.1.5-.3.9-.6 1.3v.1c-.3.8-.9 1.1-1.8 1-.1 0-.2 0-.4-.1-.1.1-.2.1-.3.1-1.6-.1-3.2-.8-4.6-1.4-.9-.4-1.9-.8-2.8-1.3-1.4-.2-2.8-.6-4.2-.9-1.3-.3-2.8-.3-4-.8-.4.1-.9.1-1.3.2-.3.1-.6.2-1 .2-1 .3-2.2.8-3.2.9h-.1c-.1 0-.1.1-.2.1-.2.2-.4.4-.7.5-.1 0-.3-.1-.3-.2 0-.5.3-.7.6-.9z" fill="#2a232b" stroke-width="none" opacity="1"></path><path id="SvgjsPath17312" d="M89.9 85.4c1.3.8 1.5 2.8 1.3 4.2 0 .3-.5.3-.6 0-.2-.7-.2-1.4-.3-2.1-.2-.6-.4-1.1-.7-1.7-.1-.3.1-.6.3-.4zm-3.2-.9c2.1.4 3.4 2.9 3.6 4.8 0 .2-.3.2-.3.1-.2-1-.6-1.9-1.2-2.7-.6-.8-1.4-1.3-2.2-2-.1-.1 0-.3.1-.2zM81 83.1c.9.2 1.9 1 2.6 1.7.7.7 1.3 1.5 1.5 2.4 0 .2-.2.3-.3.2-.5-.8-.9-1.6-1.7-2.2-.7-.6-1.6-1-2.2-1.8-.1-.2-.1-.3.1-.3zM76.3 82c2.3 0 4.7 2.1 5.4 4.2.1.2-.2.3-.3.1-.6-.9-1.2-1.8-2.1-2.5-.9-.7-1.9-1-3-1.4-.3-.1-.3-.4 0-.4zm-5.6 2.4c2.1-2.7 6.2-1.8 7.9.8.1.2-.2.4-.3.2-1-.9-2.1-1.9-3.5-2-1.5-.2-2.7.8-3.9 1.3-.3.1-.3-.2-.2-.3z" fill="#3a353a" stroke-width="none" opacity="1"></path><path id="SvgjsPath17313" d="M92.1 90.3c1.6-.4 2-2.2 2-3.7 0-.3-.4-.3-.5-.1-.2.6-.4 1.3-.7 1.8-.3.5-.7.8-1.1 1 .4-1.2.2-2.6-.6-3.7.6.1 1.1.3 1.7.4.2 0 .3-.2.1-.3-2.7-1-5.6-1.6-8.3-2.4-2.4-.7-4.9-1.4-7.3-1.7-4.6-.6-7.6 2.4-10.3 5.7-.1.1-.2.2-.3.2-.4.3 0 .9.4.6 2.5-1.5 5-2.4 7.9-2.4 3.1.1 6.2 1.1 9.2 2.1 1.6.6 3.1 1.2 4.6 1.8 1 .6 2.1 1 3.2.7zm-20-6.8c1-.7 2.1-1 3.1-1.1.8.4 1.6.8 2.3 1.4.5.5.9 1.1 1.3 1.6-.1 0-.2-.1-.4-.1-3.4-.7-6.6-.4-9.5 1 1-1 2-2 3.2-2.8zm19.3 6c-.5 0-1.1-.1-1.7-.3-1.2-.4-2.4-1-3.6-1.5-.2-.1-.4-.1-.6-.2 0-.9-.3-1.8-.9-2.4-.1-.1-.3 0-.2.2.3.7.7 1.4.9 2.1-.8-.3-1.5-.6-2.3-.8-.7-1.5-2.1-3.1-3.6-3.8-.2-.1-.3.2-.2.3.6.6 1.3 1 1.9 1.7.5.5.9 1.1 1.3 1.7-1-.3-1.9-.6-2.9-.8-.2-.8-.9-1.6-1.5-2.1-.4-.4-1-.8-1.5-1.1.9 0 1.9.1 2.8.3 3.8.8 7.6 1.9 11.4 2.8.8 1.2 1 2.5.7 3.9z" fill="#1b141c" stroke-width="none" opacity="1"></path></g></g></g><g id="svga-group-eyebrows-right-move" transform="matrix(1,0,0,1,0,0)"><g id="svga-group-eyebrows-right-rotate" transform="matrix(1,1.7453292519943295e-9,-1.7453292519943295e-9,1,1.5032446754048578e-7,-2.0871141259704018e-7)"><g id="svga-group-eyebrows-right"><path id="SvgjsPath17314" d="M131.2 86s-.1 0 0 0c-.1-.1-.1-.1-.1-.2-.3-.6-.9-1-1.4-1.3-.6-.4-1.3-.9-1.9-1.3h-.1c-1.5-1.1-4-1.3-6-.8-1.9.2-3.8.8-5 1.3-.1 0-.2.1-.4.1-1.6.3-3.3.6-4.8 1.2-1.5.3-3 .5-4.4 1h-.1c-.1-.1-.4 0-.4.2-.1.2-.1.4 0 .7-.2 0-.3.1-.3.3.1.5.3.9.6 1.3v.1c.3.8.9 1.1 1.8 1 .1 0 .2 0 .4-.1.1.1.2.1.3.1 1.6-.1 3.2-.8 4.6-1.4.9-.4 1.9-.8 2.8-1.3 1.4-.2 2.8-.6 4.2-.9 1.3-.3 2.8-.3 4-.8.4.1.9.1 1.3.2.3.1.6.2 1 .2 1 .3 2.2.8 3.2.9h.1c.1 0 .1.1.2.1.2.2.4.4.7.5.1 0 .3-.1.3-.2 0-.5-.3-.7-.6-.9z" fill="#2a232b" stroke-width="none" opacity="1"></path><path id="SvgjsPath17315" d="M110.1 85.4c-1.3.8-1.5 2.8-1.3 4.2 0 .3.5.3.6 0 .2-.7.2-1.4.3-2.1.2-.6.4-1.1.7-1.7.1-.3-.1-.6-.3-.4zm3.2-.9c-2.1.4-3.4 2.9-3.6 4.8 0 .2.3.2.3.1.2-1 .6-1.9 1.2-2.7.6-.8 1.4-1.3 2.2-2 .1-.1 0-.3-.1-.2zm5.7-1.4c-.9.2-1.9 1-2.6 1.7-.7.7-1.3 1.5-1.5 2.4 0 .2.2.3.3.2.5-.8.9-1.6 1.7-2.2.7-.6 1.6-1 2.2-1.8.1-.2.1-.3-.1-.3zm4.7-1.1c-2.3 0-4.7 2.1-5.4 4.2-.1.2.2.3.3.1.6-.9 1.2-1.8 2.1-2.5.9-.7 1.9-1 3-1.4.3-.1.3-.4 0-.4zm5.6 2.4c-2.1-2.7-6.2-1.8-7.9.8-.1.2.2.4.3.2 1-.9 2.1-1.9 3.5-2 1.5-.2 2.7.8 4 1.3.2.1.2-.2.1-.3z" fill="#3a353a" stroke-width="none" opacity="1"></path><path id="SvgjsPath17316" d="M111.1 89.8c1.5-.6 3.1-1.2 4.6-1.8 2.9-1 6.1-2.1 9.2-2.1 2.9-.1 5.5.9 7.9 2.4.4.2.8-.4.4-.6-.1-.1-.2-.2-.4-.2-2.7-3.3-5.7-6.2-10.3-5.7-2.5.3-4.9 1.1-7.3 1.7-2.8.8-5.6 1.4-8.3 2.4-.2.1-.1.3.1.3.6-.1 1.1-.2 1.7-.4-.8 1-1 2.5-.6 3.7-.4-.1-.8-.4-1.1-1-.3-.6-.4-1.2-.7-1.8-.1-.2-.5-.2-.5.1.1 1.4.5 3.2 2 3.7 1.2.1 2.3-.3 3.3-.7zm19.9-3.5c-3-1.4-6.2-1.7-9.5-1-.1 0-.2.1-.4.1.4-.5.8-1.1 1.3-1.6.7-.6 1.5-.9 2.3-1.4 1.1.1 2.1.5 3.1 1.1 1.3.8 2.3 1.8 3.2 2.8zm-21.6-.7c3.8-.9 7.6-2 11.4-2.8 1-.2 1.9-.3 2.8-.3-.6.3-1.1.7-1.5 1.1-.6.5-1.3 1.3-1.5 2.1-1 .2-2 .5-2.9.8.4-.6.8-1.2 1.3-1.7.6-.6 1.3-1.1 1.9-1.7.1-.1 0-.3-.2-.3-1.5.6-2.9 2.2-3.6 3.8-.8.2-1.6.5-2.3.8.2-.7.5-1.4.9-2.1.1-.2-.1-.3-.2-.2-.6.6-.9 1.6-.9 2.4-.2.1-.4.1-.6.2-1.2.5-2.4 1.1-3.6 1.5-.6.2-1.2.4-1.7.3-.4-1.4-.2-2.7.7-3.9z" fill="#1b141c" stroke-width="none" opacity="1"></path></g></g></g><g id="svga-group-nose-single-move" transform="matrix(1,0,0,1,0,0)"><g id="svga-group-nose-single"><path id="SvgjsPath17297" d="M97.72 89.37c-.8 3.33-.91 6.89-1.27 10.29-.38 3.64-1.08 7.4-1.03 11.06 0 .29.45.37.52.07.74-3.34.83-6.91 1.18-10.31.37-3.64 1.05-7.41.93-11.06 0-.19-.28-.24-.33-.05z" fill="#c5796d" stroke-width="none" opacity="1" transform="translate(0 2)"></path><path id="SvgjsPath17298" d="M94.71 108.8c-.98 1.31-1.8 2.73-2.52 4.2-.46.95-1.04 2.07-.73 3.16.5 1.8 2.79 2.36 4.28 1.51.44-.26.24-.95-.26-.95-.87-.01-1.89.27-2.58-.47-.84-.89-.01-2.5.36-3.4.55-1.32 1.22-2.59 1.74-3.92.07-.19-.19-.26-.29-.13z" fill="#c5796d" stroke-width="none" opacity="1" transform="translate(0 2)"></path><path id="SvgjsPath17299" d="M94.57 116.21c2.7-.2 3.21 3.2 5.78 3.28 2.2.07 2.37-3.24 4.46-3.14.24.01.32-.33.12-.45-2.37-1.4-2.81 2.72-4.99 2.46-1.29-.15-2.21-2.05-3.37-2.6-.79-.37-1.36-.34-2.13.01-.19.11-.09.46.13.44z" fill="#c5796d" stroke-width="none" opacity="1" transform="translate(0 2)"></path><path id="SvgjsPath17300" d="M104.07 117.75c1.78.4 3.85-.15 4.27-2.13.21-.99-.12-1.97-.64-2.81-.84-1.37-1.93-2.53-2.73-3.95-.13-.24-.47-.12-.48.13-.1 1.59 1.08 2.69 1.92 3.92.78 1.13 1.45 2.69.14 3.81-.6.51-1.74.42-2.48.56-.24.05-.23.42 0 .47z" fill="#c5796d" stroke-width="none" opacity="1" transform="translate(0 2)"></path><path id="SvgjsPath17301" d="M102.32 112.41c-.39-.7-1.4-.81-1.96-.25-.05.05-.23.28-.28.34-.06.08-.19.25-.21.28-.06.1-.12.2-.17.3l-.11.26c0-.01-.01.01-.03.05-.06.06-.12.13-.17.19-.17.18-.34.36-.48.57-.4.63-.08 1.35.46 1.75.83.62 2.03.12 2.61-.58.7-.84.89-1.92.34-2.91z" fill="#fbe5e2" stroke-width="none" opacity="1" transform="translate(0 2)"></path></g></g><g id="svga-group-hair-front"><path id="SvgjsPath17352" d="M143.1 79.3c-.9 7.7-2.8 15-4.8 18.6 0 0-.3-14.3-3.7-21.1S121.2 62.2 120 56.5c0 0 1.5 3.3 3.8 4.7s10.3 7.6 12.2 9.7 5 7.3 6.3 8c.1.1.5.2.8.4zm-76.2 56.4c0 .6-.2 2.2-.5 4.5-.7-6.6-2.1-13.9-2.1-13.9s-30.2 44.5-26.2 59.2c4 14.7 12.1 24.9 12.9 25.7.8.8 4 1.9 5.4 4.5.5 1 10.5-8.8 5.6-20.6-4.8-11.8-5.9-19.8-1.9-26 .7-1.1 1.3-2.3 1.9-3.5-.8 4.3-1.5 7.7-1.7 8.7-.9 3.5-.9 8.5 1.5 14s6.1 5.8 6.1 5.8c-1.7-2.7-1.8-7.3-.2-12.1s4.2-9.5 5.6-14.5c1.5-5.2 2.2-11.4-2.7-21.7-2.7-6.1-3.7-10.1-3.7-10.1z" fill="#221b23" stroke-width="none" opacity="1"></path><path id="SvgjsPath17353" d="M120 56.5s-18.2 6.8-32.8 1.7-24 15.1-22.8 27.1 9.4 27.7 4.6 47.1c-4.8 19.4-18.8 34.2-22.8 42.8s-4 17.4 0 23.7 6 10.8 7.1 17.4c0 0-1.5-3.6-7.4-8-9.3-6.9-13.1-15.1-12.5-27.9s6.2-22.8 11.1-33.1c4.8-10.3 7.3-23.3 3.9-31.9-3.4-8.6-7.3-20.5-5.9-41.7 1.4-21.1 13.1-32.4 27.7-41s35.7-7 49.1 1.3 11.4 15.7 11.4 15.7 4-2 10 7.1 2 33.4-2.3 41.1c0 0-.3-14.3-3.7-21.1S121.2 62.2 120 56.5z" fill="#2a232b" stroke-width="none" opacity="1"></path><path id="SvgjsPath17354" d="M127.6 50.2c-2.3 1.5-4.7 1.5-6.1.8-4.1-1.8-7.4-8-10.8-11.7-5.7-6.2-7.2-9.4-20.3-10.1-9.3-.5-16.7 1.9-21 3.8-14.2 8.5-25.5 19.8-26.9 40.6-1.4 21.1 2.4 33.1 5.9 41.7s.9 21.6-3.9 31.9c-4.8 10.3-10.5 20.3-11.1 33.1s3.3 21 12.5 27.9c5.9 4.4 7.4 8 7.4 8-1.6-4.5-4-6.3-8.7-10.6-4.8-4.3-9.4-16.4-8.4-25.6s9.7-25 13.8-31.4c4.1-6.4 7.4-17.4 8.8-23.3 1.4-5.9.2-10.8-3.9-20.9s-6.3-36.5-5.6-41c1.1-8.3 3.1-14 9.4-20.6 9.4-9.8 21.6-11.3 28.9-11.4 11.8-.1 20 7.7 21.5 9.9s10.5 11.9 12.8 12.3c2.3.4 8-3.4 8-3.4l.7-.6s.3-1 0-2.6c-.5.9-1.5 2.2-3 3.2zM102.2 60c.3 0 .7 0 1-.1.2 0 .5 0 .8-.1.4 0 .9-.1 1.3-.1.2 0 .5-.1.8-.1.3 0 .7-.1 1-.1.3 0 .6-.1.9-.1.3 0 .6-.1.9-.1.2 0 .4-.1.6-.1.4-.1.8-.2 1.2-.2.2 0 .4-.1.6-.1.4-.1.8-.2 1.1-.2.2 0 .3-.1.4-.1.3-.1.6-.2.9-.2.1 0 .2 0 .3-.1.4-.1.8-.2 1.1-.3.1 0 .2 0 .3-.1.4-.1.7-.2 1.1-.3 2.2-.6 3.5-1.1 3.5-1.1s-5 .6-10.9-5.5c-2.3-3.7-6.1-10.5-12-12.8-6.8-2.7-29.5-3.9-37.2 12.5s-2.7 30.5.6 37.4c3.3 6.9 8.5 20.1 8.3 28.7-.2 8.7-2.3 21-4.6 26.4-2.3 5.4-17.6 24.4-20.8 33.3-3.3 9.3-4.4 15.6 3.5 28.3 3 4.9 5 6.3 5.8 8.1-1.2-5-3.1-9-6.5-14.2-4-6.3-4-15.1 0-23.7s18-23.4 22.8-42.8-3.4-35.1-4.6-47.1S72.7 52.9 87.2 58c1.9.7 3.9 1.1 5.8 1.4h.1c.2 0 .4.1.7.1.4 0 .8.1 1.2.1.3 0 .6 0 .8.1.4 0 .8.1 1.3.1h4.1c.3.3.7.3 1 .2z" fill="#221b23" stroke-width="none" opacity="1"></path><path id="SvgjsPath17355" d="M63.3 148.6s-2.6 6.6-9.3 14.7c-8.9 10.7-10.7 17.4-7.4 25.8 3.3 8.4 7.8 12.8 9.3 16.5s1.1 7.6 1.1 7.6 1.9-4.1 1.1-7.2c-.7-3.1-7.4-13.9-8.4-20s.1-12.9 4.2-18.7c3.5-4.9 7.6-11.6 9.4-18.7zm1.9 1.5s-2.5 11.6-6 17.4c-3.5 5.8-4.6 13-2 19.1 2.6 6.1 7.6 14.1 7.2 19.4 0 0 3.4-6.4.2-13s-4.3-16.4-1.7-23.1c2.6-6.6 2.9-15.2 2.3-19.8z" fill="#2a232b" stroke-width="none" opacity="1"></path><path id="SvgjsPath17356" d="M93.1 59.7c.3 0 .5.1.7.1.4 0 .8.1 1.2.1.3 0 .6 0 .8.1.4 0 .8.1 1.3.1h1.5c-2.4-1-5.2-2.6-7.6-5.4-4.8-5.9-8.5-8.6-16.2-7.8S59 58.1 59.5 69c.5 10.8 4 17.7 6.2 23.6-.6-2.6-1.1-5-1.3-7.3-1.1-12 8.3-32.2 22.8-27.1 2 .7 3.9 1.1 5.9 1.5z" fill="#1b141c" stroke-width="none" opacity="1"></path></g><g id="svga-group-glasses-single-move" transform="matrix(1,0,0,1,0,0)"><g id="svga-group-glasses-single"></g></g></g></g></g><rect id="svga-credit-rect" width="200" height="15" x="0" y="185" fill="#ecf0f1" opacity="0.5" style="display: none;"></rect><text id="svga-credit-text" font-family="Avenir Next, Roboto, Helvetica, Arial, sans-serif" font-size="10px" text-anchor="start" font-weight="400" size="10px" anchor="start" weight="400" fill="#333333" x="33.40447998046875" y="182.60824704170227" style="display: none;"><tspan id="SvgjsTspan17134" dy="13" x="33.40447998046875">Created on AvatarMaker.com</tspan></text></g><defs id="SvgjsDefs17086"></defs></svg>
@@ -1,138 +1,133 @@
1
- const features = [
2
- {
3
- category: "All Tools",
4
- active: true,
5
- type: "tab",
6
- display: "block",
7
- features: [
8
- {
9
- name: "All tools",
10
- description: "Appscms feature layout with new design",
11
- color: "linear-gradient(148deg, #835af2 20%, #1220d8 100%)",
12
- icon: "/assets/images/digipaint.svg",
13
- url: "/appscms-feature",
14
- },
15
- {
16
- name: "feature",
17
- description: "Appscms feature layout with new design",
18
- color: "linear-gradient(148deg, #31d3bd 20%, #187cca 100%)",
19
- icon: "/assets/images/digipaint.svg",
20
- url: "/appscms-feature",
21
- },
22
- {
23
- name: "Ai",
24
- description: "Appscms feature layout with new design",
25
- color: "linear-gradient(148deg, #32a0f7 20%, #114793 100%)",
26
- icon: "/assets/images/digipaint.svg",
27
- url: "/appscms-feature",
28
- },
29
- {
30
- name: "All tools",
31
- description: "Appscms feature layout with new design",
32
- color: "linear-gradient(148deg, #ffa16b 20%, #db410a 100%)",
33
- icon: "/assets/images/digipaint.svg",
34
- url: "/appscms-feature",
35
- },
36
- {
37
- name: "All tools",
38
- description: "Appscms feature layout with new design",
39
- color: "#1A2EE7",
40
- icon: "/assets/images/digipaint.svg",
41
- url: "/appscms-feature",
42
- },
43
- ],
44
- },
45
- {
46
- category: "Calculators",
47
- type: "tab",
48
- active: false,
49
- display: "none",
50
- features: [
51
- {
52
- name: "Calculators",
53
- description: "Appscms feature layout with new design",
54
- color: "#1A2EE7",
55
- icon: "/assets/images/digipaint.svg",
56
- url: "/appscms-feature",
57
- },
58
- {
59
- name: "Calculators",
60
- description: "Appscms feature layout with new design",
61
- color: "#1A2EE7",
62
- icon: "/assets/images/digipaint.svg",
63
- url: "/appscms-feature",
64
- },
65
- {
66
- name: "Calculators",
67
- description: "Appscms feature layout with new design",
68
- color: "#1A2EE7",
69
- icon: "/assets/images/digipaint.svg",
70
- url: "/appscms-feature",
71
- },
72
- {
73
- name: "Calculators",
74
- description: "Appscms feature layout with new design",
75
- color: "#1A2EE7",
76
- icon: "/assets/images/digipaint.svg",
77
- url: "/appscms-feature",
78
- },
79
- ],
80
- },
81
- {
82
- category: "Calculators",
83
- type: "link",
84
- link: "/tools",
85
- features: [],
86
- },
87
- ];
1
+ let features = [];
2
+ let featureshi = [];
3
+ let featuresar = [];
4
+ let featuresda = [];
5
+ let featuresde = [];
6
+ let featureses = [];
7
+ let featuresfr = [];
8
+ let featuresid = [];
9
+ let featuresit = [];
10
+ let featuresja = [];
11
+ let featuresko = [];
12
+ let featuresnl = [];
13
+ let featurespl = [];
14
+ let featurespt = [];
15
+ let featuresru = [];
16
+ let featuressv = [];
17
+ let featuresth = [];
18
+ let featurestr = [];
19
+ let featuresuk = [];
20
+ let featuresvi = [];
21
+ let featureszh = [];
22
+ let featureszhtw = [];
88
23
 
89
- const featureList = document.querySelector("#appscms-tools-section-row");
24
+ // Fetch data from searchbar.json
25
+ const fetchFeatures = async () => {
26
+ try {
27
+ const response = await fetch('/searchbar.json');
28
+ const data = await response.json();
29
+ features = data.features;
30
+ featureshi = data.featureshi;
31
+ featuresar = data.featuresar;
32
+ featuresda = data.featuresda;
33
+ featuresde = data.featuresde;
34
+ featureses = data.featureses;
35
+ featuresfr = data.featuresfr;
36
+ featuresid = data.featuresid;
37
+ featuresit = data.featuresit;
38
+ featuresja = data.featuresja;
39
+ featuresko = data.featuresko;
40
+ featuresnl = data.featuresnl;
41
+ featurespl = data.featurespl;
42
+ featurespt = data.featurespt;
43
+ featuresru = data.featuresru;
44
+ featuressv = data.featuressv;
45
+ featuresth = data.featuresth;
46
+ featurestr = data.featurestr;
47
+ featuresuk = data.featuresuk;
48
+ featuresvi = data.featuresvi;
49
+ featureszh = data.featureszh;
50
+ featureszhtw = data.featureszhtw;
51
+ } catch (error) {
52
+ console.error('Error loading features:', error);
53
+ featureList.innerHTML = '<div class="error-msg">Error loading features</div>';
54
+ }
55
+ };
90
56
 
57
+ const getFeatureSet = () => {
58
+ const currentUrl = window.location.pathname;
59
+ if (currentUrl.includes('/hi')) return featureshi;
60
+ if (currentUrl.includes('/ar')) return featuresar;
61
+ if (currentUrl.includes('/da')) return featuresda;
62
+ if (currentUrl.includes('/de')) return featuresde;
63
+ if (currentUrl.includes('/es')) return featureses;
64
+ if (currentUrl.includes('/fr')) return featuresfr;
65
+ if (currentUrl.includes('/id')) return featuresid;
66
+ if (currentUrl.includes('/it')) return featuresit;
67
+ if (currentUrl.includes('/ja')) return featuresja;
68
+ if (currentUrl.includes('/ko')) return featuresko;
69
+ if (currentUrl.includes('/nl')) return featuresnl;
70
+ if (currentUrl.includes('/pl')) return featurespl;
71
+ if (currentUrl.includes('/pt')) return featurespt;
72
+ if (currentUrl.includes('/ru')) return featuresru;
73
+ if (currentUrl.includes('/sv')) return featuressv;
74
+ if (currentUrl.includes('/th')) return featuresth;
75
+ if (currentUrl.includes('/tr')) return featurestr;
76
+ if (currentUrl.includes('/uk')) return featuresuk;
77
+ if (currentUrl.includes('/vi')) return featuresvi;
78
+ if (currentUrl.includes('/zh')) return featureszh;
79
+ if (currentUrl.includes('/zh-tw')) return featureszhtw;
80
+ return features;
81
+ };
82
+ const featureList = document.querySelector('#appscms-tools-section-row');
91
83
  const renderFeatures = (query) => {
92
84
  featureList.innerHTML = "";
85
+ const currentFeatures = getFeatureSet();
86
+ const filteredFeatures = currentFeatures.filter(currentFeatures =>
87
+ currentFeatures.name.toLowerCase().includes(query.toLowerCase())
88
+ );
93
89
 
94
- features.forEach((category) => {
95
- const filteredFeatures = category.features.filter((feature) =>
96
- feature.name.toLowerCase().includes(query.toLowerCase())
97
- );
98
-
99
- if (filteredFeatures.length > 0) {
100
- filteredFeatures.forEach((item) => {
101
- const listItem = document.createElement("div");
102
- const classNames = "col-xl-4 col-lg-6 col-md-6 appscms-tool-container";
103
- listItem.classList.add(...classNames.split(" "));
104
-
105
- // Adding data-category attribute
106
- listItem.dataset.category = category.category;
107
-
108
- listItem.innerHTML = `
109
- <a href="${item.url}">
110
- <div class="appscms-tool">
111
- <div class="tool-top" style="background: ${item.color};">
112
- <div class="tool-img">
113
- <img crossorigin="anonymous" src="${item.icon}" alt="img" />
114
- </div>
115
- <div class="tool-text">${item.description}</div>
116
- </div>
117
- <div class="tool-heading">${item.name}</div>
118
- </div>
119
- </a>
120
- `;
121
- featureList.appendChild(listItem);
90
+ if (filteredFeatures.length > 0) {
91
+ filteredFeatures.forEach(item => {
92
+ const listItem = document.createElement("div");
93
+ const classNames = "col-xl-4 col-lg-6 col-md-6 appscms-tool-container";
94
+ let classList = classNames.split(" ");
95
+ classList.forEach(function (className) {
96
+ listItem.classList.add(className);
122
97
  });
123
- }
124
- });
125
-
126
- if (featureList.innerHTML === "") {
127
- let msg = document.createElement("div");
128
- msg.classList.add("no-result-found-msg");
129
- msg.innerHTML = "No search results found!";
130
- featureList.appendChild(msg);
98
+ listItem.innerHTML = `
99
+ <a href="${item.url}">
100
+ <div class="appscms-tool">
101
+ <div class="tool-top" style="background: ${item.color};">
102
+ <div class="tool-img">
103
+ <img crossorigin="anonymous" src="${item.icon}" alt="img" />
104
+ </div>
105
+ <div class="tool-text">${truncate(item.description, 67, '..')}</div>
106
+ </div>
107
+ <div class="tool-heading">${truncate(item.name, 33, '..')}</div>
108
+ </div>
109
+ </a>
110
+ `;
111
+ featureList.appendChild(listItem);
112
+ });
113
+ }
114
+ else {
115
+ let msg = document.createElement('div')
116
+ msg.classList.add('no-result-found-msg')
117
+ msg.innerHTML = "No search results found!"
118
+ featureList.appendChild(msg)
131
119
  }
132
120
  };
121
+ function truncate(str, length, ending = '..') {
122
+ if (!str) return '';
123
+ return str.length > length ? str.substring(0, length) + ending : str;
124
+ }
133
125
 
134
- const searchInput = document.querySelector("#search-features");
126
+ const searchInput = document.querySelector('#search-features');
135
127
  searchInput.addEventListener("input", function () {
136
128
  const query = searchInput.value.trim();
137
129
  renderFeatures(query);
138
130
  });
131
+
132
+ // Initialize by fetching data
133
+ fetchFeatures();
@@ -173,93 +173,260 @@ if (processingBtn && buttonLoader) {
173
173
  }, { passive: true });
174
174
  }
175
175
 
176
- if ("{{ site.navigationSearch }}" === "true" && document.currentScript.dataset.lang == "en") {
176
+ // if ("{{ site.navigationSearch }}" === "true") {
177
+ // // Fetch data directly from alllinks.json
178
+ // fetch("/alllinks.json")
179
+ // .then((response) => response.json())
180
+ // .then((data) => {
181
+ // // Check if the URL includes "/hi" to determine the language
182
+ // if (window.location.pathname.includes("/hi")) {
183
+ // window.fetchedData = data.featuredLinkshi; // Use Hindi data
184
+ // } else {
185
+ // window.fetchedData = data.featuredLinks; // Use English data
186
+ // }
187
+ // })
188
+ // .catch((error) => {
189
+ // console.error("Error fetching data:", error);
190
+ // });
177
191
 
178
- // Fetch data from data.json
179
- const worker = new Worker('/search-worker.js');
192
+ // // Filter data based on search query
193
+ // function filterData(data, query) {
194
+ // return data.filter((item) =>
195
+ // item.name.toLowerCase().includes(query.toLowerCase())
196
+ // );
197
+ // }
180
198
 
181
- worker.onmessage = function(event) {
182
- if (event.data.error) {
183
- console.error('Error fetching data:', event.data.error);
184
- } else {
185
- window.fetchedData = event.data;
186
- }
187
- };
188
-
189
- worker.onerror = function(error) {
190
- console.error('Worker error:', error.message);
199
+ // // Display filtered results
200
+ // function displayResults(results) {
201
+ // const resultsContainer = document.getElementById("results");
202
+ // resultsContainer.style.display = results.length ? "block" : "none";
203
+ // resultsContainer.innerHTML = results.length
204
+ // ? results
205
+ // .map(
206
+ // (result) =>
207
+ // `<div class="result-item"><a href="${result.url}" target="_blank">${result.name}</a></div>`
208
+ // )
209
+ // .join("")
210
+ // : "<p>No results found</p>";
211
+ // }
212
+
213
+ // function mobileDisplayResults(results) {
214
+ // const mobileResultsContainer = document.querySelector(
215
+ // ".mobile-searchbarResults"
216
+ // );
217
+ // mobileResultsContainer.style.display = results.length ? "block" : "none";
218
+ // mobileResultsContainer.innerHTML = results.length
219
+ // ? results
220
+ // .map(
221
+ // (result) =>
222
+ // `<div class="mobile-result-item"><a href="${result.url}" target="_blank">${result.name}</a></div>`
223
+ // )
224
+ // .join("")
225
+ // : "<p>No results found</p>";
226
+ // }
227
+
228
+ // // Handle search input
229
+ // const searchInput = document.querySelector(".search-input");
230
+
231
+ // searchInput.addEventListener("input", (event) => {
232
+ // const query = event.target.value;
233
+ // const data = window.fetchedData || [];
234
+ // const filteredResults = filterData(data, query);
235
+ // displayResults(filteredResults);
236
+
237
+ // gtag("event", "search", {
238
+ // event_category: "engagement",
239
+ // event_label: "Search Box",
240
+ // value: query,
241
+ // });
242
+ // });
243
+
244
+ // const mobileSearchInput = document.querySelector(".mobile-search-input");
245
+ // mobileSearchInput.addEventListener("input", (event) => {
246
+ // const query = event.target.value;
247
+ // const data = window.fetchedData || [];
248
+ // const filteredResults = filterData(data, query);
249
+ // mobileDisplayResults(filteredResults);
250
+
251
+ // gtag("event", "search", {
252
+ // event_category: "engagement",
253
+ // event_label: "Search Box",
254
+ // value: query,
255
+ // });
256
+ // });
257
+
258
+ // // Hide results when clicking outside search input and results container
259
+ // document.addEventListener("click", (event) => {
260
+ // const resultsContainer = document.getElementById("results");
261
+
262
+ // if (
263
+ // !searchInput.contains(event.target) &&
264
+ // !resultsContainer.contains(event.target)
265
+ // ) {
266
+ // resultsContainer.style.display = "none";
267
+ // }
268
+ // if (!window.location.pathname.includes("/hi")) {
269
+ // const mobileResultsContainer = document.querySelector(
270
+ // ".mobile-searchbarResults"
271
+ // );
272
+ // if (
273
+ // !mobileSearchInput.contains(event.target) &&
274
+ // !mobileResultsContainer.contains(event.target)
275
+ // ) {
276
+ // mobileResultsContainer.style.display = "none";
277
+ // }
278
+ // }
279
+ // });
280
+ // }
281
+
282
+ if ("{{ site.navigationSearch }}" === "true") {
283
+ // Define supported languages and their corresponding data keys
284
+ const SUPPORTED_LANGUAGES = {
285
+ de: 'featuredLinksde',
286
+ da: 'featuredLinksda',
287
+ es: 'featuredLinkses',
288
+ id: 'featuredLinksid',
289
+ it: 'featuredLinksit',
290
+ nl: 'featuredLinksnl',
291
+ pl: 'featuredLinkspl',
292
+ pt: 'featuredLinkspt',
293
+ sv: 'featuredLinkssv',
294
+ tr: 'featuredLinkstr',
295
+ vi: 'featuredLinksvi',
296
+ hi: 'featuredLinkshi'
191
297
  };
192
-
193
- // Send a message to the worker to start fetching the data
194
- worker.postMessage('fetchData');
195
-
298
+
299
+ // Helper function to get current language from URL
300
+ function getCurrentLanguage() {
301
+ const path = window.location.pathname;
302
+ return Object.keys(SUPPORTED_LANGUAGES).find(lang =>
303
+ path.includes(`/${lang}`)
304
+ ) || 'en';
305
+ }
306
+
307
+ // Fetch data directly from alllinks.json
308
+ fetch("/alllinks.json")
309
+ .then((response) => response.json())
310
+ .then((data) => {
311
+ // Store all data globally
312
+ window.allData = data;
313
+ const currentLang = getCurrentLanguage();
314
+ // Set initial data based on current language
315
+ window.fetchedData = currentLang === 'en'
316
+ ? data.featuredLinks
317
+ : data[SUPPORTED_LANGUAGES[currentLang]];
318
+ })
319
+ .catch((error) => {
320
+ console.error("Error fetching data:", error);
321
+ });
322
+
196
323
  // Filter data based on search query
197
324
  function filterData(data, query) {
198
- return data.filter(item => item.name.toLowerCase().includes(query.toLowerCase()));
325
+ return data ? data.filter((item) =>
326
+ item.name.toLowerCase().includes(query.toLowerCase())
327
+ ) : [];
199
328
  }
200
-
329
+
201
330
  // Display filtered results
202
- function displayResults(results) {
203
- const resultsContainer = document.getElementById('results');
204
- resultsContainer.style.display = results.length ? 'block' : 'none';
205
- resultsContainer.innerHTML = results.length
206
- ? results.map(result => `<div class="result-item"><a href="${result.url}" target="_blank">${result.name}</a></div>`).join('')
207
- : '<p>No results found</p>';
208
- }
209
-
210
- function mobileDisplayResults(results) {
211
- const mobileResultsContainer = document.querySelector('.mobile-searchbarResults');
212
- mobileResultsContainer.style.display = results.length ? 'block' : 'none';
213
- mobileResultsContainer.innerHTML = results.length
214
- ? results.map(result => `<div class="mobile-result-item"><a href="${result.url}" target="_blank">${result.name}</a></div>`).join('')
215
- : '<p>No results found</p>';
216
- }
217
-
218
- // Handle search input
219
- const searchInput = document.querySelector('.search-input');
220
- ;
221
-
222
- searchInput.addEventListener('input', (event) => {
223
- const query = event.target.value;
224
- const data = window.fetchedData || [];
225
- const filteredResults = filterData(data, query);
226
- displayResults(filteredResults);
227
-
228
- gtag('event', 'search', {
229
- 'event_category': 'engagement',
230
- 'event_label': 'Search Box',
231
- 'value': query
232
- });
233
- });
234
- const mobileSearchInput = document.querySelector('.mobile-search-input')
235
- mobileSearchInput.addEventListener('input', (event) => {
236
- const query = event.target.value;
237
- const data = window.fetchedData || [];
238
- const filteredResults = filterData(data, query);
239
- mobileDisplayResults(filteredResults);
331
+ function displayResults(primaryResults, secondaryResults = [], container) {
332
+ const resultsContainer = container || document.getElementById("results");
333
+ const currentLang = getCurrentLanguage();
240
334
 
241
- gtag('event', 'search', {
242
- 'event_category': 'engagement',
243
- 'event_label': 'Search Box',
244
- 'value': query
335
+ // Combine results, with primary results first
336
+ const combinedResults = [...primaryResults];
337
+ if (primaryResults.length < 4) {
338
+ // Only add secondary results if primary results are less than 4
339
+ secondaryResults.forEach(result => {
340
+ // Check if this result isn't already in primary results
341
+ if (!primaryResults.some(pr => pr.url === result.url)) {
342
+ combinedResults.push(result);
343
+ }
245
344
  });
246
- });
345
+ }
346
+
347
+ resultsContainer.style.display = combinedResults.length ? "block" : "none";
247
348
 
248
-
249
-
250
- // Hide results when clicking outside search input and results container
251
- document.addEventListener('click', (event) => {
252
- const resultsContainer = document.getElementById('results');
253
-
254
-
349
+ if (combinedResults.length === 0) {
350
+ resultsContainer.innerHTML = "<p>No results found</p>";
351
+ return;
352
+ }
353
+
354
+ // Get language display name for the indicator
355
+ const getLanguageDisplayName = () => {
356
+ try {
357
+ return new Intl.DisplayNames(['en'], { type: 'language' }).of('en');
358
+ } catch (e) {
359
+ return 'English';
360
+ }
361
+ };
362
+
363
+ // Display results with language indicators
364
+ resultsContainer.innerHTML = combinedResults
365
+ .map((result, index) => {
366
+ const isSecondary = index >= primaryResults.length;
367
+ return `
368
+ <div class="result-item ${isSecondary ? 'secondary-result' : ''}">
369
+ <a href="${result.url}" target="_blank">${result.name}</a>
370
+ ${isSecondary ? `<span class="language-indicator"></span>` : ''}
371
+ </div>
372
+ `;
373
+ })
374
+ .join("");
375
+ }
376
+
377
+ function handleSearch(event, isDesktop = true) {
378
+ const query = event.target.value.trim();
379
+ const container = isDesktop ?
380
+ document.getElementById("results") :
381
+ document.querySelector(".mobile-searchbarResults");
382
+
383
+ if (!query) {
384
+ container.style.display = "none";
385
+ return;
386
+ }
387
+
388
+ const currentLang = getCurrentLanguage();
389
+ const currentLangData = currentLang === 'en'
390
+ ? window.allData.featuredLinks
391
+ : window.allData[SUPPORTED_LANGUAGES[currentLang]];
392
+
393
+ // First, search in current language data
394
+ const primaryResults = filterData(currentLangData, query);
395
+
396
+ // If primary results are less than 4, also search in English data
397
+ const englishResults = primaryResults.length < 4 ?
398
+ filterData(window.allData.featuredLinks, query) :
399
+ [];
400
+
401
+ // Display results with current language first, then English if needed
402
+ displayResults(primaryResults, englishResults, container);
403
+
404
+ gtag("event", "search", {
405
+ event_category: "engagement",
406
+ event_label: "Search Box",
407
+ value: query,
408
+ });
409
+ }
410
+
411
+ // Set up desktop search
412
+ const searchInput = document.querySelector(".search-input");
413
+ searchInput.addEventListener("input", (event) => handleSearch(event, true));
414
+
415
+ // Set up mobile search
416
+ const mobileSearchInput = document.querySelector(".mobile-search-input");
417
+ mobileSearchInput.addEventListener("input", (event) => handleSearch(event, false));
418
+
419
+ // Hide results when clicking outside
420
+ document.addEventListener("click", (event) => {
421
+ const resultsContainer = document.getElementById("results");
422
+ const mobileResultsContainer = document.querySelector(".mobile-searchbarResults");
423
+
255
424
  if (!searchInput.contains(event.target) && !resultsContainer.contains(event.target)) {
256
- resultsContainer.style.display = 'none';
425
+ resultsContainer.style.display = "none";
257
426
  }
258
- if ("{{ page.lang }}" === "en") {
259
- const mobileResultsContainer = document.querySelector('.mobile-searchbarResults');
427
+
260
428
  if (!mobileSearchInput.contains(event.target) && !mobileResultsContainer.contains(event.target)) {
261
- mobileResultsContainer.style.display = 'none';
262
- }
429
+ mobileResultsContainer.style.display = "none";
263
430
  }
264
431
  });
265
432
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appscms-tools-theme
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.9.8
4
+ version: 4.9.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - vivek-appscms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-02-08 00:00:00.000000000 Z
11
+ date: 2025-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -96,6 +96,8 @@ files:
96
96
  - _data/help/en/help.json
97
97
  - _data/home-1/en/en.json
98
98
  - _data/home/.DS_Store
99
+ - _data/home/de/da.json
100
+ - _data/home/de/de.json
99
101
  - _data/home/en/en.json
100
102
  - _data/home/en/photoeffects.json
101
103
  - _data/home/en/posters.json
@@ -110,6 +112,7 @@ files:
110
112
  - _data/review/trustpilot.json
111
113
  - _data/termAndCondition/en/termAndCondition.json
112
114
  - _includes/.DS_Store
115
+ - _includes/Atest.html
113
116
  - _includes/Rating/rating.html
114
117
  - _includes/Rating/structureddata.html
115
118
  - _includes/Usp/usp.html
@@ -479,6 +482,7 @@ files:
479
482
  - assets/images/keshav.webp
480
483
  - assets/images/krutika.jpeg
481
484
  - assets/images/krutika.webp
485
+ - assets/images/lakshmi.svg
482
486
  - assets/images/lightbulb.svg
483
487
  - assets/images/like.svg
484
488
  - assets/images/loader.gif