senangwebs-tour 1.0.3 → 1.0.6
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/swt-editor.css +36 -2
- package/dist/swt-editor.css.map +1 -1
- package/dist/swt-editor.js +3137 -223
- package/dist/swt-editor.js.map +1 -1
- package/dist/swt-editor.min.css +1 -1
- package/dist/swt-editor.min.js +1 -1
- package/dist/swt.js +292 -26
- package/dist/swt.js.map +1 -1
- package/dist/swt.min.js +1 -1
- package/package.json +2 -1
- package/src/AssetManager.js +13 -2
- package/src/HotspotManager.js +93 -20
- package/src/IconRenderer.js +123 -0
- package/src/SceneManager.js +7 -1
- package/src/editor/css/main.css +41 -2
- package/src/editor/js/editor.js +108 -23
- package/src/editor/js/export-manager.js +56 -9
- package/src/editor/js/hotspot-editor.js +10 -57
- package/src/editor/js/preview-controller.js +132 -105
- package/src/editor/js/scene-manager.js +35 -14
- package/src/editor/js/ui-controller.js +91 -8
- package/src/editor/js/utils.js +1 -0
- package/src/index.js +56 -3
package/dist/swt-editor.js
CHANGED
|
@@ -136,6 +136,27 @@
|
|
|
136
136
|
URL.revokeObjectURL(url);
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
+
/**
|
|
140
|
+
* Copy text to clipboard
|
|
141
|
+
*/
|
|
142
|
+
async function copyToClipboard(text) {
|
|
143
|
+
try {
|
|
144
|
+
await navigator.clipboard.writeText(text);
|
|
145
|
+
return true;
|
|
146
|
+
} catch (err) {
|
|
147
|
+
// Fallback for older browsers
|
|
148
|
+
const textarea = document.createElement('textarea');
|
|
149
|
+
textarea.value = text;
|
|
150
|
+
textarea.style.position = 'fixed';
|
|
151
|
+
textarea.style.opacity = '0';
|
|
152
|
+
document.body.appendChild(textarea);
|
|
153
|
+
textarea.select();
|
|
154
|
+
const success = document.execCommand('copy');
|
|
155
|
+
document.body.removeChild(textarea);
|
|
156
|
+
return success;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
139
160
|
/**
|
|
140
161
|
* Debounce function
|
|
141
162
|
*/
|
|
@@ -183,6 +204,7 @@
|
|
|
183
204
|
|
|
184
205
|
var utils = /*#__PURE__*/Object.freeze({
|
|
185
206
|
__proto__: null,
|
|
207
|
+
copyToClipboard: copyToClipboard,
|
|
186
208
|
debounce: debounce,
|
|
187
209
|
deepClone: deepClone$1,
|
|
188
210
|
downloadTextAsFile: downloadTextAsFile,
|
|
@@ -401,22 +423,43 @@
|
|
|
401
423
|
|
|
402
424
|
/**
|
|
403
425
|
* Add new scene
|
|
426
|
+
* @param {File|Object} fileOrConfig - Either a File object or a scene config object
|
|
427
|
+
* @param {string} fileOrConfig.id - Scene ID (if config object)
|
|
428
|
+
* @param {string} fileOrConfig.name - Scene name (if config object)
|
|
429
|
+
* @param {string} fileOrConfig.imageUrl - Image URL (if config object)
|
|
430
|
+
* @param {string} fileOrConfig.thumbnail - Thumbnail URL (if config object)
|
|
431
|
+
* @param {Array} fileOrConfig.hotspots - Hotspots array (if config object)
|
|
404
432
|
*/
|
|
405
|
-
async addScene(
|
|
433
|
+
async addScene(fileOrConfig) {
|
|
406
434
|
try {
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
435
|
+
let scene;
|
|
436
|
+
|
|
437
|
+
// Check if it's a File/Blob or a config object
|
|
438
|
+
if (fileOrConfig instanceof File || fileOrConfig instanceof Blob) {
|
|
439
|
+
// Original behavior: handle File upload
|
|
440
|
+
const thumbnail = await generateThumbnail(fileOrConfig);
|
|
441
|
+
const imageDataUrl = await loadImageAsDataUrl(fileOrConfig);
|
|
442
|
+
|
|
443
|
+
scene = {
|
|
444
|
+
id: sanitizeId$1(fileOrConfig.name.replace(/\.[^/.]+$/, "")),
|
|
445
|
+
name: fileOrConfig.name.replace(/\.[^/.]+$/, ""),
|
|
446
|
+
imageUrl: imageDataUrl,
|
|
447
|
+
thumbnail: thumbnail,
|
|
448
|
+
hotspots: [],
|
|
449
|
+
};
|
|
450
|
+
} else if (typeof fileOrConfig === "object" && fileOrConfig !== null) {
|
|
451
|
+
// Handle config object with URL strings
|
|
452
|
+
scene = {
|
|
453
|
+
id: fileOrConfig.id || sanitizeId$1(`scene-${Date.now()}`),
|
|
454
|
+
name: fileOrConfig.name || "Untitled Scene",
|
|
455
|
+
imageUrl: fileOrConfig.imageUrl || "",
|
|
456
|
+
thumbnail: fileOrConfig.thumbnail || fileOrConfig.imageUrl || "",
|
|
457
|
+
hotspots: fileOrConfig.hotspots || [],
|
|
458
|
+
...(fileOrConfig.startingPosition && { startingPosition: fileOrConfig.startingPosition }),
|
|
459
|
+
};
|
|
460
|
+
} else {
|
|
461
|
+
throw new Error("Invalid argument: expected File, Blob, or scene config object");
|
|
462
|
+
}
|
|
420
463
|
|
|
421
464
|
this.scenes.push(scene);
|
|
422
465
|
this.currentSceneIndex = this.scenes.length - 1;
|
|
@@ -591,66 +634,15 @@
|
|
|
591
634
|
constructor(editor) {
|
|
592
635
|
this.editor = editor;
|
|
593
636
|
this.currentHotspotIndex = -1;
|
|
594
|
-
this.placementMode = false;
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
/**
|
|
598
|
-
* Enable hotspot placement mode
|
|
599
|
-
*/
|
|
600
|
-
enablePlacementMode() {
|
|
601
|
-
const scene = this.editor.sceneManager.getCurrentScene();
|
|
602
|
-
if (!scene) {
|
|
603
|
-
showToast$1('Please select a scene first', 'error');
|
|
604
|
-
return false;
|
|
605
|
-
}
|
|
606
|
-
|
|
607
|
-
this.placementMode = true;
|
|
608
|
-
|
|
609
|
-
// Visual feedback
|
|
610
|
-
document.body.style.cursor = 'crosshair';
|
|
611
|
-
const preview = document.getElementById('preview');
|
|
612
|
-
if (preview) {
|
|
613
|
-
preview.style.border = '3px solid #4CC3D9';
|
|
614
|
-
preview.style.boxShadow = '0 0 20px rgba(76, 195, 217, 0.5)';
|
|
615
|
-
}
|
|
616
|
-
|
|
617
|
-
// Update button state
|
|
618
|
-
const btn = document.getElementById('addHotspotBtn');
|
|
619
|
-
if (btn) {
|
|
620
|
-
btn.textContent = 'Click on Preview...';
|
|
621
|
-
btn.classList.add('btn-active');
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
showToast$1('Click on the 360° preview to place hotspot', 'info', 5000);
|
|
625
|
-
return true;
|
|
626
637
|
}
|
|
627
638
|
|
|
628
|
-
/**
|
|
629
|
-
* Disable hotspot placement mode
|
|
630
|
-
*/
|
|
631
|
-
disablePlacementMode() {
|
|
632
|
-
this.placementMode = false;
|
|
633
|
-
document.body.style.cursor = 'default';
|
|
634
|
-
|
|
635
|
-
// Remove visual feedback
|
|
636
|
-
const preview = document.getElementById('preview');
|
|
637
|
-
if (preview) {
|
|
638
|
-
preview.style.border = '';
|
|
639
|
-
preview.style.boxShadow = '';
|
|
640
|
-
}
|
|
641
|
-
|
|
642
|
-
// Reset button state
|
|
643
|
-
const btn = document.getElementById('addHotspotBtn');
|
|
644
|
-
if (btn) {
|
|
645
|
-
btn.textContent = '+ Add Hotspot';
|
|
646
|
-
btn.classList.remove('btn-active');
|
|
647
|
-
}
|
|
648
|
-
}
|
|
649
|
-
|
|
650
639
|
/**
|
|
651
640
|
* Add hotspot at position
|
|
641
|
+
* @param {Object} position - The 3D position {x, y, z}
|
|
642
|
+
* @param {string} targetSceneId - Target scene ID for navigation
|
|
643
|
+
* @param {Object} cameraOrientation - Camera orientation at creation {pitch, yaw} in radians
|
|
652
644
|
*/
|
|
653
|
-
addHotspot(position, targetSceneId = '') {
|
|
645
|
+
addHotspot(position, targetSceneId = '', cameraOrientation = null) {
|
|
654
646
|
const scene = this.editor.sceneManager.getCurrentScene();
|
|
655
647
|
if (!scene) {
|
|
656
648
|
showToast$1('No scene selected', 'error');
|
|
@@ -661,17 +653,18 @@
|
|
|
661
653
|
id: generateId('hotspot'),
|
|
662
654
|
type: 'navigation',
|
|
663
655
|
position: position,
|
|
656
|
+
cameraOrientation: cameraOrientation, // Store camera pitch/yaw for reliable pointing
|
|
664
657
|
targetSceneId: targetSceneId,
|
|
665
658
|
title: 'New Hotspot',
|
|
666
659
|
description: '',
|
|
667
660
|
color: '#00ff00',
|
|
668
|
-
icon: ''
|
|
661
|
+
icon: '',
|
|
662
|
+
scale: '1 1 1'
|
|
669
663
|
};
|
|
670
664
|
|
|
671
665
|
scene.hotspots.push(hotspot);
|
|
672
666
|
this.currentHotspotIndex = scene.hotspots.length - 1;
|
|
673
667
|
|
|
674
|
-
this.disablePlacementMode();
|
|
675
668
|
showToast$1('Hotspot added', 'success');
|
|
676
669
|
|
|
677
670
|
return hotspot;
|
|
@@ -787,6 +780,9 @@
|
|
|
787
780
|
y: original.position.y,
|
|
788
781
|
z: original.position.z
|
|
789
782
|
};
|
|
783
|
+
|
|
784
|
+
// Clear camera orientation since position changed - will fallback to position-based calculation
|
|
785
|
+
duplicate.cameraOrientation = null;
|
|
790
786
|
|
|
791
787
|
scene.hotspots.push(duplicate);
|
|
792
788
|
this.currentHotspotIndex = scene.hotspots.length - 1;
|
|
@@ -993,6 +989,7 @@
|
|
|
993
989
|
name: s.name,
|
|
994
990
|
panorama: s.imageUrl,
|
|
995
991
|
hotspots: sceneHotspots,
|
|
992
|
+
startingPosition: s.startingPosition || null,
|
|
996
993
|
};
|
|
997
994
|
});
|
|
998
995
|
|
|
@@ -1000,10 +997,6 @@
|
|
|
1000
997
|
title: scene.name,
|
|
1001
998
|
initialScene: scene.id,
|
|
1002
999
|
scenes: allScenes,
|
|
1003
|
-
settings: {
|
|
1004
|
-
autoRotate: false,
|
|
1005
|
-
showCompass: false,
|
|
1006
|
-
},
|
|
1007
1000
|
};
|
|
1008
1001
|
|
|
1009
1002
|
try {
|
|
@@ -1040,15 +1033,18 @@
|
|
|
1040
1033
|
// Hide loading animation after scene loads
|
|
1041
1034
|
this.hideLoading();
|
|
1042
1035
|
|
|
1043
|
-
//
|
|
1036
|
+
// Handle camera rotation after scene loads
|
|
1044
1037
|
if (savedRotation && preserveCameraRotation) {
|
|
1038
|
+
// Restore previous camera rotation
|
|
1045
1039
|
this.setCameraRotation(savedRotation);
|
|
1040
|
+
} else if (scene.startingPosition) {
|
|
1041
|
+
// Set camera to scene's starting position immediately
|
|
1042
|
+
this.setCameraRotation({
|
|
1043
|
+
x: scene.startingPosition.pitch,
|
|
1044
|
+
y: scene.startingPosition.yaw,
|
|
1045
|
+
z: 0
|
|
1046
|
+
});
|
|
1046
1047
|
}
|
|
1047
|
-
|
|
1048
|
-
// Setup click handler after a short delay to ensure A-Frame is ready
|
|
1049
|
-
setTimeout(() => {
|
|
1050
|
-
this.setupClickHandler();
|
|
1051
|
-
}, 500);
|
|
1052
1048
|
} catch (error) {
|
|
1053
1049
|
console.error("Failed to load preview:", error);
|
|
1054
1050
|
showToast$1("Failed to load preview: " + error.message, "error");
|
|
@@ -1058,76 +1054,73 @@
|
|
|
1058
1054
|
}
|
|
1059
1055
|
|
|
1060
1056
|
/**
|
|
1061
|
-
*
|
|
1057
|
+
* Get the current cursor intersection point with the sky sphere.
|
|
1058
|
+
* Raycasts from the camera center (where the A-Cursor points) to find the intersection.
|
|
1059
|
+
* @returns {Object|null} The 3D position {x, y, z} or null if no intersection
|
|
1062
1060
|
*/
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
return;
|
|
1066
|
-
}
|
|
1067
|
-
|
|
1068
|
-
const aframeScene = this.previewContainer.querySelector("a-scene");
|
|
1061
|
+
getCursorIntersection() {
|
|
1062
|
+
const aframeScene = this.previewContainer?.querySelector("a-scene");
|
|
1069
1063
|
if (!aframeScene) {
|
|
1070
|
-
|
|
1071
|
-
return;
|
|
1072
|
-
}
|
|
1073
|
-
|
|
1074
|
-
// Remove any existing click handler to avoid duplicates
|
|
1075
|
-
if (this.clickHandler) {
|
|
1076
|
-
aframeScene.removeEventListener("click", this.clickHandler);
|
|
1064
|
+
return null;
|
|
1077
1065
|
}
|
|
1078
1066
|
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
if (!this.editor.hotspotEditor.placementMode) {
|
|
1082
|
-
return;
|
|
1083
|
-
}
|
|
1084
|
-
|
|
1085
|
-
// Try to get intersection from event detail first
|
|
1086
|
-
let intersection = evt.detail?.intersection;
|
|
1087
|
-
|
|
1088
|
-
// If no intersection, perform manual raycasting
|
|
1089
|
-
if (!intersection) {
|
|
1090
|
-
const camera = aframeScene.querySelector("[camera]");
|
|
1091
|
-
const sky = aframeScene.querySelector("a-sky");
|
|
1092
|
-
|
|
1093
|
-
if (!camera || !sky) {
|
|
1094
|
-
showToast$1("Scene not ready, please try again", "warning");
|
|
1095
|
-
return;
|
|
1096
|
-
}
|
|
1097
|
-
|
|
1098
|
-
// Get mouse position relative to canvas
|
|
1099
|
-
const canvas = aframeScene.canvas;
|
|
1100
|
-
const rect = canvas.getBoundingClientRect();
|
|
1101
|
-
const mouse = {
|
|
1102
|
-
x: ((evt.clientX - rect.left) / rect.width) * 2 - 1,
|
|
1103
|
-
y: -((evt.clientY - rect.top) / rect.height) * 2 + 1,
|
|
1104
|
-
};
|
|
1067
|
+
const camera = aframeScene.querySelector("[camera]");
|
|
1068
|
+
const sky = aframeScene.querySelector("a-sky");
|
|
1105
1069
|
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
raycaster.setFromCamera(mouse, cameraEl.children[0]); // Get the actual camera
|
|
1070
|
+
if (!camera || !sky) {
|
|
1071
|
+
return null;
|
|
1072
|
+
}
|
|
1110
1073
|
|
|
1111
|
-
|
|
1112
|
-
|
|
1074
|
+
// Get pitch and yaw from look-controls (the authoritative source in A-Frame)
|
|
1075
|
+
const lookControls = camera.components?.["look-controls"];
|
|
1076
|
+
let pitch = 0;
|
|
1077
|
+
let yaw = 0;
|
|
1113
1078
|
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1079
|
+
if (lookControls && lookControls.pitchObject && lookControls.yawObject) {
|
|
1080
|
+
pitch = lookControls.pitchObject.rotation.x;
|
|
1081
|
+
yaw = lookControls.yawObject.rotation.y;
|
|
1082
|
+
} else {
|
|
1083
|
+
// Fallback to object3D rotation
|
|
1084
|
+
pitch = camera.object3D.rotation.x;
|
|
1085
|
+
yaw = camera.object3D.rotation.y;
|
|
1086
|
+
}
|
|
1121
1087
|
|
|
1122
|
-
|
|
1123
|
-
|
|
1088
|
+
// Calculate direction vector from pitch/yaw
|
|
1089
|
+
// In A-Frame/Three.js coordinate system:
|
|
1090
|
+
// - Looking forward is -Z
|
|
1091
|
+
// - Yaw rotates around Y axis
|
|
1092
|
+
// - Pitch rotates around X axis
|
|
1093
|
+
const direction = new THREE.Vector3();
|
|
1094
|
+
direction.x = -Math.sin(yaw) * Math.cos(pitch);
|
|
1095
|
+
direction.y = Math.sin(pitch);
|
|
1096
|
+
direction.z = -Math.cos(yaw) * Math.cos(pitch);
|
|
1097
|
+
direction.normalize();
|
|
1098
|
+
|
|
1099
|
+
// Create raycaster from camera position in the direction we're looking
|
|
1100
|
+
const raycaster = new THREE.Raycaster();
|
|
1101
|
+
const origin = new THREE.Vector3(0, 0, 0); // Camera is typically at origin in 360 viewer
|
|
1102
|
+
raycaster.set(origin, direction);
|
|
1103
|
+
|
|
1104
|
+
// Raycast against the sky sphere
|
|
1105
|
+
const intersects = raycaster.intersectObject(sky.object3D, true);
|
|
1106
|
+
|
|
1107
|
+
if (intersects.length > 0) {
|
|
1108
|
+
const point = intersects[0].point;
|
|
1109
|
+
|
|
1110
|
+
// Calculate an upward offset to center the hotspot visual on the cursor
|
|
1111
|
+
// The offset is applied along the "up" direction relative to the sphere surface
|
|
1112
|
+
// For a sphere, we shift the point slightly in the Y direction (vertical up in world space)
|
|
1113
|
+
// The offset compensates for the hotspot visual being centered, so the top aligns with cursor
|
|
1114
|
+
const offsetAmount = 200; // Adjust this value to fine-tune alignment
|
|
1115
|
+
|
|
1116
|
+
return {
|
|
1124
1117
|
x: parseFloat(point.x.toFixed(2)),
|
|
1125
|
-
y: parseFloat(point.y.toFixed(2)),
|
|
1118
|
+
y: parseFloat((point.y + offsetAmount).toFixed(2)),
|
|
1126
1119
|
z: parseFloat(point.z.toFixed(2)),
|
|
1127
1120
|
};
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1121
|
+
}
|
|
1122
|
+
|
|
1123
|
+
return null;
|
|
1131
1124
|
}
|
|
1132
1125
|
|
|
1133
1126
|
/**
|
|
@@ -1233,10 +1226,12 @@
|
|
|
1233
1226
|
}
|
|
1234
1227
|
|
|
1235
1228
|
/**
|
|
1236
|
-
* Point camera to hotspot
|
|
1229
|
+
* Point camera to hotspot
|
|
1230
|
+
* Uses stored camera orientation if available, otherwise calculates from position
|
|
1231
|
+
* @param {Object} hotspot - The hotspot object with position and optional cameraOrientation
|
|
1237
1232
|
*/
|
|
1238
|
-
pointCameraToHotspot(
|
|
1239
|
-
if (!
|
|
1233
|
+
pointCameraToHotspot(hotspot) {
|
|
1234
|
+
if (!hotspot) {
|
|
1240
1235
|
return;
|
|
1241
1236
|
}
|
|
1242
1237
|
|
|
@@ -1250,25 +1245,36 @@
|
|
|
1250
1245
|
return;
|
|
1251
1246
|
}
|
|
1252
1247
|
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1248
|
+
let pitch, yaw;
|
|
1249
|
+
|
|
1250
|
+
// Use stored camera orientation if available (more reliable)
|
|
1251
|
+
if (hotspot.cameraOrientation) {
|
|
1252
|
+
// Stored values are in radians, convert to degrees for animateCameraRotation
|
|
1253
|
+
pitch = hotspot.cameraOrientation.pitch * (180 / Math.PI);
|
|
1254
|
+
yaw = hotspot.cameraOrientation.yaw * (180 / Math.PI);
|
|
1255
|
+
} else if (hotspot.position) {
|
|
1256
|
+
// Fallback: calculate from position (for legacy hotspots without cameraOrientation)
|
|
1257
|
+
const hotspotPosition = hotspot.position;
|
|
1258
|
+
const cameraPos = camera.object3D.position;
|
|
1259
|
+
|
|
1260
|
+
// Calculate direction vector from camera to hotspot
|
|
1261
|
+
const direction = new THREE.Vector3(
|
|
1262
|
+
hotspotPosition.x - cameraPos.x,
|
|
1263
|
+
hotspotPosition.y - cameraPos.y,
|
|
1264
|
+
hotspotPosition.z - cameraPos.z
|
|
1265
|
+
);
|
|
1262
1266
|
|
|
1263
|
-
|
|
1264
|
-
|
|
1267
|
+
// Calculate spherical coordinates (yaw and pitch)
|
|
1268
|
+
const distance = direction.length();
|
|
1265
1269
|
|
|
1266
|
-
|
|
1267
|
-
|
|
1270
|
+
// Pitch (up/down rotation around X-axis) - in degrees
|
|
1271
|
+
pitch = Math.asin(direction.y / distance) * (180 / Math.PI);
|
|
1268
1272
|
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1273
|
+
// Yaw (left/right rotation around Y-axis) - in degrees
|
|
1274
|
+
yaw = Math.atan2(direction.x, direction.z) * (180 / Math.PI);
|
|
1275
|
+
} else {
|
|
1276
|
+
return;
|
|
1277
|
+
}
|
|
1272
1278
|
|
|
1273
1279
|
// Apply smooth rotation with animation
|
|
1274
1280
|
this.animateCameraRotation(camera, { x: pitch, y: yaw, z: 0 });
|
|
@@ -1276,15 +1282,29 @@
|
|
|
1276
1282
|
|
|
1277
1283
|
/**
|
|
1278
1284
|
* Animate camera rotation smoothly
|
|
1285
|
+
* Uses look-controls internal pitchObject/yawObject to avoid being overwritten
|
|
1279
1286
|
*/
|
|
1280
1287
|
animateCameraRotation(camera, targetRotation, duration = 800) {
|
|
1281
1288
|
if (!camera || !camera.object3D) return;
|
|
1282
1289
|
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1290
|
+
// Get look-controls component
|
|
1291
|
+
const lookControls = camera.components?.["look-controls"];
|
|
1292
|
+
|
|
1293
|
+
// Get current rotation - prefer look-controls internal state
|
|
1294
|
+
let startRotation;
|
|
1295
|
+
if (lookControls && lookControls.pitchObject && lookControls.yawObject) {
|
|
1296
|
+
startRotation = {
|
|
1297
|
+
x: lookControls.pitchObject.rotation.x * (180 / Math.PI),
|
|
1298
|
+
y: lookControls.yawObject.rotation.y * (180 / Math.PI),
|
|
1299
|
+
z: 0,
|
|
1300
|
+
};
|
|
1301
|
+
} else {
|
|
1302
|
+
startRotation = {
|
|
1303
|
+
x: camera.object3D.rotation.x * (180 / Math.PI),
|
|
1304
|
+
y: camera.object3D.rotation.y * (180 / Math.PI),
|
|
1305
|
+
z: 0,
|
|
1306
|
+
};
|
|
1307
|
+
}
|
|
1288
1308
|
|
|
1289
1309
|
// Handle angle wrapping for smooth rotation
|
|
1290
1310
|
let deltaY = targetRotation.y - startRotation.y;
|
|
@@ -1307,19 +1327,22 @@
|
|
|
1307
1327
|
? 2 * progress * progress
|
|
1308
1328
|
: 1 - Math.pow(-2 * progress + 2, 2) / 2;
|
|
1309
1329
|
|
|
1310
|
-
// Interpolate rotation
|
|
1311
|
-
const
|
|
1312
|
-
|
|
1313
|
-
y: startRotation.y + (endRotationY - startRotation.y) * eased,
|
|
1314
|
-
z: startRotation.z + (targetRotation.z - startRotation.z) * eased,
|
|
1315
|
-
};
|
|
1330
|
+
// Interpolate rotation (in degrees)
|
|
1331
|
+
const currentX = startRotation.x + (targetRotation.x - startRotation.x) * eased;
|
|
1332
|
+
const currentY = startRotation.y + (endRotationY - startRotation.y) * eased;
|
|
1316
1333
|
|
|
1317
|
-
// Apply rotation
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1334
|
+
// Apply rotation using look-controls internal objects (in radians)
|
|
1335
|
+
if (lookControls && lookControls.pitchObject && lookControls.yawObject) {
|
|
1336
|
+
lookControls.pitchObject.rotation.x = currentX * (Math.PI / 180);
|
|
1337
|
+
lookControls.yawObject.rotation.y = currentY * (Math.PI / 180);
|
|
1338
|
+
} else {
|
|
1339
|
+
// Fallback to direct rotation
|
|
1340
|
+
camera.object3D.rotation.set(
|
|
1341
|
+
currentX * (Math.PI / 180),
|
|
1342
|
+
currentY * (Math.PI / 180),
|
|
1343
|
+
0
|
|
1344
|
+
);
|
|
1345
|
+
}
|
|
1323
1346
|
|
|
1324
1347
|
if (progress < 1) {
|
|
1325
1348
|
requestAnimationFrame(animate);
|
|
@@ -1391,8 +1414,2564 @@
|
|
|
1391
1414
|
}
|
|
1392
1415
|
};
|
|
1393
1416
|
|
|
1417
|
+
var iconsData = [
|
|
1418
|
+
{
|
|
1419
|
+
name: "Bars 3",
|
|
1420
|
+
slug: "bars-3",
|
|
1421
|
+
src: "M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5",
|
|
1422
|
+
tags: [
|
|
1423
|
+
"menu",
|
|
1424
|
+
"hamburger",
|
|
1425
|
+
"navigation",
|
|
1426
|
+
"bars-3"
|
|
1427
|
+
]
|
|
1428
|
+
},
|
|
1429
|
+
{
|
|
1430
|
+
name: "X Mark",
|
|
1431
|
+
slug: "x-mark",
|
|
1432
|
+
src: "M6 18L18 6M6 6l12 12",
|
|
1433
|
+
tags: [
|
|
1434
|
+
"close",
|
|
1435
|
+
"delete",
|
|
1436
|
+
"remove",
|
|
1437
|
+
"cancel",
|
|
1438
|
+
"x-mark"
|
|
1439
|
+
]
|
|
1440
|
+
},
|
|
1441
|
+
{
|
|
1442
|
+
name: "Check",
|
|
1443
|
+
slug: "check",
|
|
1444
|
+
src: "M4.5 12.75l6 6 9-13.5",
|
|
1445
|
+
tags: [
|
|
1446
|
+
"tick",
|
|
1447
|
+
"success",
|
|
1448
|
+
"confirm",
|
|
1449
|
+
"done",
|
|
1450
|
+
"check"
|
|
1451
|
+
]
|
|
1452
|
+
},
|
|
1453
|
+
{
|
|
1454
|
+
name: "Double Tick",
|
|
1455
|
+
slug: "double-tick",
|
|
1456
|
+
src: "M4.5 12.75l6 6 9-13.5m-12.5 3.75 3 3 4.6-6.8",
|
|
1457
|
+
tags: [
|
|
1458
|
+
"check",
|
|
1459
|
+
"done",
|
|
1460
|
+
"success",
|
|
1461
|
+
"double-tick"
|
|
1462
|
+
]
|
|
1463
|
+
},
|
|
1464
|
+
{
|
|
1465
|
+
name: "Plus",
|
|
1466
|
+
slug: "plus",
|
|
1467
|
+
src: "M12 4.5v15m7.5-7.5h-15",
|
|
1468
|
+
tags: [
|
|
1469
|
+
"add",
|
|
1470
|
+
"create",
|
|
1471
|
+
"new",
|
|
1472
|
+
"plus"
|
|
1473
|
+
]
|
|
1474
|
+
},
|
|
1475
|
+
{
|
|
1476
|
+
name: "Minus",
|
|
1477
|
+
slug: "minus",
|
|
1478
|
+
src: "M5 12h14",
|
|
1479
|
+
tags: [
|
|
1480
|
+
"subtract",
|
|
1481
|
+
"delete",
|
|
1482
|
+
"remove",
|
|
1483
|
+
"minus"
|
|
1484
|
+
]
|
|
1485
|
+
},
|
|
1486
|
+
{
|
|
1487
|
+
name: "Magnifying Glass",
|
|
1488
|
+
slug: "magnifying-glass",
|
|
1489
|
+
src: "M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z",
|
|
1490
|
+
tags: [
|
|
1491
|
+
"search",
|
|
1492
|
+
"find",
|
|
1493
|
+
"zoom",
|
|
1494
|
+
"magnifying-glass",
|
|
1495
|
+
"senangwebs",
|
|
1496
|
+
"sw-index"
|
|
1497
|
+
]
|
|
1498
|
+
},
|
|
1499
|
+
{
|
|
1500
|
+
name: "Magnifying Glass Focus",
|
|
1501
|
+
slug: "magnifying-glass-focus",
|
|
1502
|
+
src: "M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607zM10 7.5 7.5 7.5V10M13.5 11 13.5 13.5H11",
|
|
1503
|
+
tags: [
|
|
1504
|
+
"search",
|
|
1505
|
+
"find",
|
|
1506
|
+
"zoom fit",
|
|
1507
|
+
"magnifying-glass-focus"
|
|
1508
|
+
]
|
|
1509
|
+
},
|
|
1510
|
+
{
|
|
1511
|
+
name: "Magnifying Glass Plus",
|
|
1512
|
+
slug: "magnifying-glass-plus",
|
|
1513
|
+
src: "M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607zM10.5 7.4v6m3-2.9h-6",
|
|
1514
|
+
tags: [
|
|
1515
|
+
"search",
|
|
1516
|
+
"find",
|
|
1517
|
+
"zoom in",
|
|
1518
|
+
"magnifying-glass-plus",
|
|
1519
|
+
"plus"
|
|
1520
|
+
]
|
|
1521
|
+
},
|
|
1522
|
+
{
|
|
1523
|
+
name: "Magnifying Glass Minus",
|
|
1524
|
+
slug: "magnifying-glass-minus",
|
|
1525
|
+
src: "M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607zM13.5 10.5H7.5",
|
|
1526
|
+
tags: [
|
|
1527
|
+
"search",
|
|
1528
|
+
"find",
|
|
1529
|
+
"zoom out",
|
|
1530
|
+
"magnifying-glass-minus",
|
|
1531
|
+
"minus"
|
|
1532
|
+
]
|
|
1533
|
+
},
|
|
1534
|
+
{
|
|
1535
|
+
name: "Home",
|
|
1536
|
+
slug: "home",
|
|
1537
|
+
src: "M2.25 12l8.954-8.955c.44-.439 1.152-.439 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25",
|
|
1538
|
+
tags: [
|
|
1539
|
+
"house",
|
|
1540
|
+
"dashboard",
|
|
1541
|
+
"main",
|
|
1542
|
+
"home"
|
|
1543
|
+
]
|
|
1544
|
+
},
|
|
1545
|
+
{
|
|
1546
|
+
name: "Cog 6 Tooth",
|
|
1547
|
+
slug: "cog-6-tooth",
|
|
1548
|
+
src: "M9.90 5.32 L9.14 2.94 A9.5 9.5 0 0 1 14.86 2.94 L14.10 5.32 A7 7 0 0 1 16.73 6.84 L18.42 5.00 A9.5 9.5 0 0 1 21.27 9.94 L18.83 10.48 A7 7 0 0 1 18.83 13.52 L21.27 14.06 A9.5 9.5 0 0 1 18.42 19.00 L16.73 17.16 A7 7 0 0 1 14.10 18.68 L14.86 21.06 A9.5 9.5 0 0 1 9.14 21.06 L9.90 18.68 A7 7 0 0 1 7.27 17.16 L5.58 19.00 A9.5 9.5 0 0 1 2.73 14.06 L5.17 13.52 A7 7 0 0 1 5.17 10.48 L2.73 9.94 A9.5 9.5 0 0 1 5.58 5.00 L7.27 6.84 A7 7 0 0 1 9.90 5.32 Z M14.5 12 A2.5 2.5 0 1 0 9.5 12 A2.5 2.5 0 1 0 14.5 12 Z",
|
|
1549
|
+
tags: [
|
|
1550
|
+
"settings",
|
|
1551
|
+
"gear",
|
|
1552
|
+
"options",
|
|
1553
|
+
"config",
|
|
1554
|
+
"cog-6-tooth"
|
|
1555
|
+
]
|
|
1556
|
+
},
|
|
1557
|
+
{
|
|
1558
|
+
name: "Trash",
|
|
1559
|
+
slug: "trash",
|
|
1560
|
+
src: "M18.2 18 14 18m5.228-12.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0M5.8 18 14 18",
|
|
1561
|
+
tags: [
|
|
1562
|
+
"delete",
|
|
1563
|
+
"remove",
|
|
1564
|
+
"bin",
|
|
1565
|
+
"garbage",
|
|
1566
|
+
"trash"
|
|
1567
|
+
]
|
|
1568
|
+
},
|
|
1569
|
+
{
|
|
1570
|
+
name: "Arrow Left",
|
|
1571
|
+
slug: "arrow-left",
|
|
1572
|
+
src: "M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18",
|
|
1573
|
+
tags: [
|
|
1574
|
+
"back",
|
|
1575
|
+
"previous",
|
|
1576
|
+
"direction",
|
|
1577
|
+
"arrow-left"
|
|
1578
|
+
]
|
|
1579
|
+
},
|
|
1580
|
+
{
|
|
1581
|
+
name: "Arrow Right",
|
|
1582
|
+
slug: "arrow-right",
|
|
1583
|
+
src: "M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3",
|
|
1584
|
+
tags: [
|
|
1585
|
+
"forward",
|
|
1586
|
+
"next",
|
|
1587
|
+
"direction",
|
|
1588
|
+
"arrow-right"
|
|
1589
|
+
]
|
|
1590
|
+
},
|
|
1591
|
+
{
|
|
1592
|
+
name: "Arrow Up",
|
|
1593
|
+
slug: "arrow-up",
|
|
1594
|
+
src: "M4.5 10.5L12 3m0 0l7.5 7.5M12 3v18",
|
|
1595
|
+
tags: [
|
|
1596
|
+
"top",
|
|
1597
|
+
"direction",
|
|
1598
|
+
"arrow-up"
|
|
1599
|
+
]
|
|
1600
|
+
},
|
|
1601
|
+
{
|
|
1602
|
+
name: "Arrow Down",
|
|
1603
|
+
slug: "arrow-down",
|
|
1604
|
+
src: "M19.5 13.5L12 21m0 0l-7.5-7.5M12 21V3",
|
|
1605
|
+
tags: [
|
|
1606
|
+
"bottom",
|
|
1607
|
+
"direction",
|
|
1608
|
+
"arrow-down"
|
|
1609
|
+
]
|
|
1610
|
+
},
|
|
1611
|
+
{
|
|
1612
|
+
name: "Arrow Long Left",
|
|
1613
|
+
slug: "arrow-long-left",
|
|
1614
|
+
src: "M6.75 15.75L3 12m0 0l3.75-3.75M3 12h18",
|
|
1615
|
+
tags: [
|
|
1616
|
+
"back",
|
|
1617
|
+
"previous",
|
|
1618
|
+
"direction",
|
|
1619
|
+
"arrow-long-left"
|
|
1620
|
+
]
|
|
1621
|
+
},
|
|
1622
|
+
{
|
|
1623
|
+
name: "Arrow Long Right",
|
|
1624
|
+
slug: "arrow-long-right",
|
|
1625
|
+
src: "M17.25 8.25L21 12m0 0l-3.75 3.75M21 12H3",
|
|
1626
|
+
tags: [
|
|
1627
|
+
"forward",
|
|
1628
|
+
"next",
|
|
1629
|
+
"direction",
|
|
1630
|
+
"arrow-long-right"
|
|
1631
|
+
]
|
|
1632
|
+
},
|
|
1633
|
+
{
|
|
1634
|
+
name: "Arrow Long Up",
|
|
1635
|
+
slug: "arrow-long-up",
|
|
1636
|
+
src: "M8.25 6.75L12 3m0 0l3.75 3.75M12 3v18",
|
|
1637
|
+
tags: [
|
|
1638
|
+
"top",
|
|
1639
|
+
"direction",
|
|
1640
|
+
"arrow-long-up"
|
|
1641
|
+
]
|
|
1642
|
+
},
|
|
1643
|
+
{
|
|
1644
|
+
name: "Arrow Long Down",
|
|
1645
|
+
slug: "arrow-long-down",
|
|
1646
|
+
src: "M15.75 17.25L12 21m0 0l-3.75-3.75M12 21V3",
|
|
1647
|
+
tags: [
|
|
1648
|
+
"bottom",
|
|
1649
|
+
"direction",
|
|
1650
|
+
"arrow-long-down"
|
|
1651
|
+
]
|
|
1652
|
+
},
|
|
1653
|
+
{
|
|
1654
|
+
name: "Arrow Path",
|
|
1655
|
+
slug: "arrow-path",
|
|
1656
|
+
src: "M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99",
|
|
1657
|
+
tags: [
|
|
1658
|
+
"refresh",
|
|
1659
|
+
"reload",
|
|
1660
|
+
"cycle",
|
|
1661
|
+
"loop",
|
|
1662
|
+
"arrow-path",
|
|
1663
|
+
"senangwebs",
|
|
1664
|
+
"sw-loading"
|
|
1665
|
+
]
|
|
1666
|
+
},
|
|
1667
|
+
{
|
|
1668
|
+
name: "Arrow Rotate Cw",
|
|
1669
|
+
slug: "arrow-rotate-cw",
|
|
1670
|
+
src: "M20.25 12a8.25 8.25 0 11-8.25-8.25c2.3 0 4.5 1 6 2.5L20.25 8.5m0-4.5v4.5h-4.5",
|
|
1671
|
+
tags: [
|
|
1672
|
+
"rotate",
|
|
1673
|
+
"refresh",
|
|
1674
|
+
"reload",
|
|
1675
|
+
"arrow-rotate-cw"
|
|
1676
|
+
]
|
|
1677
|
+
},
|
|
1678
|
+
{
|
|
1679
|
+
name: "Arrow Rotate Ccw",
|
|
1680
|
+
slug: "arrow-rotate-ccw",
|
|
1681
|
+
src: "M3.75 12a8.25 8.25 0 108.25-8.25c-2.3 0-4.5 1-6 2.5L3.75 8.5m0-4.5v4.5h4.5",
|
|
1682
|
+
tags: [
|
|
1683
|
+
"rotate",
|
|
1684
|
+
"undo",
|
|
1685
|
+
"arrow-rotate-ccw"
|
|
1686
|
+
]
|
|
1687
|
+
},
|
|
1688
|
+
{
|
|
1689
|
+
name: "Arrow Top Right On Square",
|
|
1690
|
+
slug: "arrow-top-right-on-square",
|
|
1691
|
+
src: "M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25",
|
|
1692
|
+
tags: [
|
|
1693
|
+
"external",
|
|
1694
|
+
"link",
|
|
1695
|
+
"open",
|
|
1696
|
+
"arrow-top-right-on-square"
|
|
1697
|
+
]
|
|
1698
|
+
},
|
|
1699
|
+
{
|
|
1700
|
+
name: "Arrow Right On Rectangle",
|
|
1701
|
+
slug: "arrow-right-on-rectangle",
|
|
1702
|
+
src: "M15.75 9V5.25A2.25 2.25 0 0013.5 3h-6a2.25 2.25 0 00-2.25 2.25v13.5A2.25 2.25 0 007.5 21h6a2.25 2.25 0 002.25-2.25V15M12 9l-3 3m0 0l3 3m-3-3h12.75",
|
|
1703
|
+
tags: [
|
|
1704
|
+
"logout",
|
|
1705
|
+
"exit",
|
|
1706
|
+
"signout",
|
|
1707
|
+
"arrow-right-on-rectangle"
|
|
1708
|
+
]
|
|
1709
|
+
},
|
|
1710
|
+
{
|
|
1711
|
+
name: "Arrow Left On Rectangle",
|
|
1712
|
+
slug: "arrow-left-on-rectangle",
|
|
1713
|
+
src: "M15.75 9V5.25A2.25 2.25 0 0013.5 3h-6a2.25 2.25 0 00-2.25 2.25v13.5A2.25 2.25 0 007.5 21h6a2.25 2.25 0 002.25-2.25V15m3 0l3-3m0 0l-3-3m3 3H9",
|
|
1714
|
+
tags: [
|
|
1715
|
+
"login",
|
|
1716
|
+
"enter",
|
|
1717
|
+
"signin",
|
|
1718
|
+
"arrow-left-on-rectangle"
|
|
1719
|
+
]
|
|
1720
|
+
},
|
|
1721
|
+
{
|
|
1722
|
+
name: "Chevron Left",
|
|
1723
|
+
slug: "chevron-left",
|
|
1724
|
+
src: "M15.75 19.5L8.25 12l7.5-7.5",
|
|
1725
|
+
tags: [
|
|
1726
|
+
"back",
|
|
1727
|
+
"previous",
|
|
1728
|
+
"chevron-left"
|
|
1729
|
+
]
|
|
1730
|
+
},
|
|
1731
|
+
{
|
|
1732
|
+
name: "Chevron Right",
|
|
1733
|
+
slug: "chevron-right",
|
|
1734
|
+
src: "M8.25 4.5l7.5 7.5-7.5 7.5",
|
|
1735
|
+
tags: [
|
|
1736
|
+
"forward",
|
|
1737
|
+
"next",
|
|
1738
|
+
"chevron-right"
|
|
1739
|
+
]
|
|
1740
|
+
},
|
|
1741
|
+
{
|
|
1742
|
+
name: "Chevron Up",
|
|
1743
|
+
slug: "chevron-up",
|
|
1744
|
+
src: "M19.5 15.75l-7.5-7.5-7.5 7.5",
|
|
1745
|
+
tags: [
|
|
1746
|
+
"top",
|
|
1747
|
+
"collapse",
|
|
1748
|
+
"chevron-up"
|
|
1749
|
+
]
|
|
1750
|
+
},
|
|
1751
|
+
{
|
|
1752
|
+
name: "Chevron Down",
|
|
1753
|
+
slug: "chevron-down",
|
|
1754
|
+
src: "M4.5 8.25l7.5 7.5 7.5-7.5",
|
|
1755
|
+
tags: [
|
|
1756
|
+
"bottom",
|
|
1757
|
+
"expand",
|
|
1758
|
+
"chevron-down"
|
|
1759
|
+
]
|
|
1760
|
+
},
|
|
1761
|
+
{
|
|
1762
|
+
name: "Chevron Double Left",
|
|
1763
|
+
slug: "chevron-double-left",
|
|
1764
|
+
src: "M18.75 19.5l-7.5-7.5 7.5-7.5m-6 15L5.25 12l7.5-7.5",
|
|
1765
|
+
tags: [
|
|
1766
|
+
"back",
|
|
1767
|
+
"previous",
|
|
1768
|
+
"fast",
|
|
1769
|
+
"chevron-double-left"
|
|
1770
|
+
]
|
|
1771
|
+
},
|
|
1772
|
+
{
|
|
1773
|
+
name: "Chevron Double Right",
|
|
1774
|
+
slug: "chevron-double-right",
|
|
1775
|
+
src: "M11.25 4.5l7.5 7.5-7.5 7.5m-6-15l7.5 7.5-7.5 7.5",
|
|
1776
|
+
tags: [
|
|
1777
|
+
"forward",
|
|
1778
|
+
"next",
|
|
1779
|
+
"fast",
|
|
1780
|
+
"chevron-double-right"
|
|
1781
|
+
]
|
|
1782
|
+
},
|
|
1783
|
+
{
|
|
1784
|
+
name: "Envelope",
|
|
1785
|
+
slug: "envelope",
|
|
1786
|
+
src: "M21.75 6.75v10.5a2.25 2.25 0 01-2.25 2.25h-15a2.25 2.25 0 01-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0019.5 4.5h-15a2.25 2.25 0 00-2.25 2.25m19.5 0v.243a2.25 2.25 0 01-1.07 1.916l-7.5 4.615a2.25 2.25 0 01-2.36 0L3.32 8.91a2.25 2.25 0 01-1.07-1.916V6.75",
|
|
1787
|
+
tags: [
|
|
1788
|
+
"mail",
|
|
1789
|
+
"email",
|
|
1790
|
+
"message",
|
|
1791
|
+
"contact",
|
|
1792
|
+
"envelope"
|
|
1793
|
+
]
|
|
1794
|
+
},
|
|
1795
|
+
{
|
|
1796
|
+
name: "Envelope Open",
|
|
1797
|
+
slug: "envelope-open",
|
|
1798
|
+
src: "M21.75 9v.906a2.25 2.25 0 01-1.183 1.981l-6.478 3.488M2.25 9v.906a2.25 2.25 0 001.183 1.981l6.478 3.488m8.839 2.51l-4.66-2.51m0 0l-1.023-.55a2.25 2.25 0 00-2.134 0l-1.022.55m0 0l-4.661 2.51m16.5 1.615a2.25 2.25 0 01-2.25 2.25h-15a2.25 2.25 0 01-2.25-2.25V8.844a2.25 2.25 0 011.183-1.98l7.5-4.04a2.25 2.25 0 012.134 0l7.5 4.04a2.25 2.25 0 011.183 1.98V19.5z",
|
|
1799
|
+
tags: [
|
|
1800
|
+
"mail",
|
|
1801
|
+
"email",
|
|
1802
|
+
"read",
|
|
1803
|
+
"envelope-open"
|
|
1804
|
+
]
|
|
1805
|
+
},
|
|
1806
|
+
{
|
|
1807
|
+
name: "Chat Bubble Left",
|
|
1808
|
+
slug: "chat-bubble-left",
|
|
1809
|
+
src: "M7.5 8.25h9m-9 3H12M2.25 12.76c0 1.6 1.123 2.994 2.707 3.227 1.087.16 2.185.283 3.293.369V21l4.076-4.076a1.526 1.526 0 011.037-.443 48.282 48.282 0 005.68-.494c1.584-.233 2.707-1.626 2.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0012 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018z",
|
|
1810
|
+
tags: [
|
|
1811
|
+
"message",
|
|
1812
|
+
"comment",
|
|
1813
|
+
"talk",
|
|
1814
|
+
"chat-bubble-left"
|
|
1815
|
+
]
|
|
1816
|
+
},
|
|
1817
|
+
{
|
|
1818
|
+
name: "Chat Bubble Right",
|
|
1819
|
+
slug: "chat-bubble-right",
|
|
1820
|
+
src: "M7.5 8.25h9m0 3H12M21.75 12.76c0 1.6-1.123 2.994-2.707 3.227-1.087.16-2.185.283-3.293.369V21l-4.076-4.076a1.526 1.526 0 01-1.037-.443 48.282 48.282 0 00-5.68-.494c-1.584-.233-2.707-1.626-2.707-3.228V6.741c0-1.602 1.123-2.995 2.707-3.228A48.394 48.394 0 0112 3c2.392 0 4.744.175 7.043.513 1.584.233 2.707 1.627 2.707 3.228v6.018z",
|
|
1821
|
+
tags: [
|
|
1822
|
+
"message",
|
|
1823
|
+
"comment",
|
|
1824
|
+
"talk",
|
|
1825
|
+
"chat-bubble-right"
|
|
1826
|
+
]
|
|
1827
|
+
},
|
|
1828
|
+
{
|
|
1829
|
+
name: "Chat Bubble Left Ellipsis",
|
|
1830
|
+
slug: "chat-bubble-left-ellipsis",
|
|
1831
|
+
src: "M7.8 9.8a.75.75 0 11-1.6 0 .75.75 0 011.6 0M12.8 9.8a.75.75 0 11-1.6 0 .75.75 0 011.6-0M17.8 9.8a.75.75 0 11-1.6 0 .75.75 0 011.6 0M2.25 12.76c0 1.6 1.123 2.994 2.707 3.227 1.087.16 2.185.283 3.293.369V21l4.076-4.076a1.526 1.526 0 011.037-.443 48.282 48.282 0 005.68-.494c1.584-.233 2.707-1.626 2.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0012 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018z",
|
|
1832
|
+
tags: [
|
|
1833
|
+
"message",
|
|
1834
|
+
"comment",
|
|
1835
|
+
"typing",
|
|
1836
|
+
"chat-bubble-left-ellipsis"
|
|
1837
|
+
]
|
|
1838
|
+
},
|
|
1839
|
+
{
|
|
1840
|
+
name: "Chat Bubble Right Ellipsis",
|
|
1841
|
+
slug: "chat-bubble-right-ellipsis",
|
|
1842
|
+
src: "M7.8 9.8a.75.75 0 11-1.6 0 .75.75 0 011.6 0M12.8 9.8a.75.75 0 11-1.6 0 .75.75 0 011.6 0M17.8 9.8a.75.75 0 11-1.6 0 .75.75 0 011.6 0M21.75 12.76c0 1.6-1.123 2.994-2.707 3.227-1.087.16-2.185.283-3.293.369V21l-4.076-4.076a1.526 1.526 0 01-1.037-.443 48.282 48.282 0 00-5.68-.494c-1.584-.233-2.707-1.626-2.707-3.228V6.741c0-1.602 1.123-2.995 2.707-3.228A48.394 48.394 0 0112 3c2.392 0 4.744.175 7.043.513 1.584.233 2.707 1.627 2.707 3.228v6.018z",
|
|
1843
|
+
tags: [
|
|
1844
|
+
"message",
|
|
1845
|
+
"comment",
|
|
1846
|
+
"typing",
|
|
1847
|
+
"chat-bubble-right-ellipsis"
|
|
1848
|
+
]
|
|
1849
|
+
},
|
|
1850
|
+
{
|
|
1851
|
+
name: "Chat Bubble Left Right",
|
|
1852
|
+
slug: "chat-bubble-left-right",
|
|
1853
|
+
src: "M20.25 8.511c.884.284 1.5 1.128 1.5 2.097v4.286c0 1.136-.847 2.1-1.98 2.193-.34.027-.68.052-1.02.072v3.091l-3-3c-1.354 0-2.694-.055-4.02-.163a2.115 2.115 0 01-.825-.242m9.345-8.334a2.126 2.126 0 00-.476-.095 48.64 48.64 0 00-8.048 0c-1.131.094-1.976 1.057-1.976 2.192v4.286c0 .837.46 1.58 1.155 1.951m9.345-8.334V6.637c0-1.621-1.152-3.026-2.76-3.235A48.455 48.455 0 0011.25 3c-2.115 0-4.198.137-6.24.402-1.608.209-2.76 1.614-2.76 3.235v6.226c0 1.621 1.152 3.026 2.76 3.235.577.075 1.157.14 1.74.194V21l4.155-4.155",
|
|
1854
|
+
tags: [
|
|
1855
|
+
"conversation",
|
|
1856
|
+
"exchange",
|
|
1857
|
+
"chat-bubble-left-right"
|
|
1858
|
+
]
|
|
1859
|
+
},
|
|
1860
|
+
{
|
|
1861
|
+
name: "Phone",
|
|
1862
|
+
slug: "phone",
|
|
1863
|
+
src: "M2.25 6.75c0 8.284 6.716 15 15 15h2.25a2.25 2.25 0 002.25-2.25v-1.372c0-.516-.351-.966-.852-1.091l-4.423-1.106c-.44-.11-.902.055-1.173.417l-.97 1.293c-.282.376-.769.542-1.21.38a12.035 12.035 0 01-7.143-7.143c-.162-.441.004-.928.38-1.21l1.293-.97c.363-.271.527-.734.417-1.173L6.963 3.102a1.125 1.125 0 00-1.091-.852H4.5A2.25 2.25 0 002.25 4.5v2.25z",
|
|
1864
|
+
tags: [
|
|
1865
|
+
"call",
|
|
1866
|
+
"contact",
|
|
1867
|
+
"mobile",
|
|
1868
|
+
"phone"
|
|
1869
|
+
]
|
|
1870
|
+
},
|
|
1871
|
+
{
|
|
1872
|
+
name: "Phone X Mark",
|
|
1873
|
+
slug: "phone-x-mark",
|
|
1874
|
+
src: "M14.25 9.75v-4.5m0 4.5h4.5m-4.5 0l6-6m-3 18c-8.284 0-15-6.716-15-15V4.5A2.25 2.25 0 014.5 2.25h1.372c.516 0 .966.351 1.091.852l1.106 4.423c.11.44-.055.902-.417 1.173l-1.293.97a1.062 1.062 0 00-.38 1.21 12.035 12.035 0 007.143 7.143c.441.162.928-.004 1.21-.38l.97-1.293a1.125 1.125 0 011.173-.417l4.423 1.106c.5.125.852.575.852 1.091V19.5a2.25 2.25 0 01-2.25 2.25h-2.25z",
|
|
1875
|
+
tags: [
|
|
1876
|
+
"missed call",
|
|
1877
|
+
"hang up",
|
|
1878
|
+
"phone-x-mark"
|
|
1879
|
+
]
|
|
1880
|
+
},
|
|
1881
|
+
{
|
|
1882
|
+
name: "User",
|
|
1883
|
+
slug: "user",
|
|
1884
|
+
src: "M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z",
|
|
1885
|
+
tags: [
|
|
1886
|
+
"person",
|
|
1887
|
+
"profile",
|
|
1888
|
+
"account",
|
|
1889
|
+
"user"
|
|
1890
|
+
]
|
|
1891
|
+
},
|
|
1892
|
+
{
|
|
1893
|
+
name: "User Circle",
|
|
1894
|
+
slug: "user-circle",
|
|
1895
|
+
src: "M17.982 18.725A7.488 7.488 0 0012 15.75a7.488 7.488 0 00-5.982 2.975m11.963 0a9 9 0 10-11.963 0m11.963 0A8.966 8.966 0 0112 21a8.966 8.966 0 01-5.982-2.275M15 9.75a3 3 0 11-6 0 3 3 0 016 0z",
|
|
1896
|
+
tags: [
|
|
1897
|
+
"person",
|
|
1898
|
+
"profile",
|
|
1899
|
+
"account",
|
|
1900
|
+
"user-circle"
|
|
1901
|
+
]
|
|
1902
|
+
},
|
|
1903
|
+
{
|
|
1904
|
+
name: "User Plus",
|
|
1905
|
+
slug: "user-plus",
|
|
1906
|
+
src: "M19 7.5v3m0 0v3m0-3h3m-3 0h-3m-2.25-4.125a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zM4 19.235v-.11a6.375 6.375 0 0112.75 0v.109A12.318 12.318 0 0110.374 21c-2.331 0-4.512-.645-6.374-1.766z",
|
|
1907
|
+
tags: [
|
|
1908
|
+
"add user",
|
|
1909
|
+
"register",
|
|
1910
|
+
"user-plus"
|
|
1911
|
+
]
|
|
1912
|
+
},
|
|
1913
|
+
{
|
|
1914
|
+
name: "User Minus",
|
|
1915
|
+
slug: "user-minus",
|
|
1916
|
+
src: "m19 10.5m0 0h3M19 10.5h-3m-2.25-4.125a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zM4 19.235v-.11a6.375 6.375 0 0112.75 0v.109A12.318 12.318 0 0110.374 21c-2.331 0-4.512-.645-6.374-1.766z",
|
|
1917
|
+
tags: [
|
|
1918
|
+
"remove user",
|
|
1919
|
+
"user-minus"
|
|
1920
|
+
]
|
|
1921
|
+
},
|
|
1922
|
+
{
|
|
1923
|
+
name: "User Group",
|
|
1924
|
+
slug: "user-group",
|
|
1925
|
+
src: "M18 18.72a9.094 9.094 0 003.741-.479 3 3 0 00-4.682-2.72m.94 3.198l.001.031c0 .225-.012.447-.037.666A11.944 11.944 0 0112 21c-2.17 0-4.207-.576-5.963-1.584A6.062 6.062 0 016 18.719m12 0a5.971 5.971 0 00-.941-3.197m0 0A5.995 5.995 0 0012 12.75a5.995 5.995 0 00-5.058 2.772m0 0a3 3 0 00-4.681 2.72 8.986 8.986 0 003.74.477m.94-3.197a5.971 5.971 0 00-.94 3.197M15 6.75a3 3 0 11-6 0 3 3 0 016 0zm6 3a2.25 2.25 0 11-4.5 0 2.25 2.25 0 014.5 0zm-13.5 0a2.25 2.25 0 11-4.5 0 2.25 2.25 0 014.5 0z",
|
|
1926
|
+
tags: [
|
|
1927
|
+
"people",
|
|
1928
|
+
"team",
|
|
1929
|
+
"community",
|
|
1930
|
+
"user-group"
|
|
1931
|
+
]
|
|
1932
|
+
},
|
|
1933
|
+
{
|
|
1934
|
+
name: "Users",
|
|
1935
|
+
slug: "users",
|
|
1936
|
+
src: "M15 19.128a9.38 9.38 0 002.625.372 9.337 9.337 0 004.121-.952 4.125 4.125 0 00-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 018.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0111.964-3.07M12 6.375a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zm8.25 2.25a2.625 2.625 0 11-5.25 0 2.625 2.625 0 015.25 0z",
|
|
1937
|
+
tags: [
|
|
1938
|
+
"people",
|
|
1939
|
+
"team",
|
|
1940
|
+
"community",
|
|
1941
|
+
"users"
|
|
1942
|
+
]
|
|
1943
|
+
},
|
|
1944
|
+
{
|
|
1945
|
+
name: "Alert",
|
|
1946
|
+
slug: "alert",
|
|
1947
|
+
src: "M3 8.25V18a2.25 2.25 0 002.25 2.25h13.5A2.25 2.25 0 0021 18V8.25m-18 0V6a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 6v2.25m-18 0h18zM8 13.3h8v3H8z",
|
|
1948
|
+
tags: [
|
|
1949
|
+
"warning",
|
|
1950
|
+
"danger",
|
|
1951
|
+
"notification",
|
|
1952
|
+
"alert",
|
|
1953
|
+
"senangwebs",
|
|
1954
|
+
"popup",
|
|
1955
|
+
"sw-modals"
|
|
1956
|
+
]
|
|
1957
|
+
},
|
|
1958
|
+
{
|
|
1959
|
+
name: "Play",
|
|
1960
|
+
slug: "play",
|
|
1961
|
+
src: "M5.25 5.653c0-.856.917-1.398 1.667-.986l11.54 6.348a1.125 1.125 0 010 1.971l-11.54 6.347a1.125 1.125 0 01-1.667-.985V5.653z",
|
|
1962
|
+
tags: [
|
|
1963
|
+
"start",
|
|
1964
|
+
"media",
|
|
1965
|
+
"video",
|
|
1966
|
+
"play"
|
|
1967
|
+
]
|
|
1968
|
+
},
|
|
1969
|
+
{
|
|
1970
|
+
name: "Pause",
|
|
1971
|
+
slug: "pause",
|
|
1972
|
+
src: "M9 5.25v13.5m6-13.5v13.5",
|
|
1973
|
+
tags: [
|
|
1974
|
+
"stop",
|
|
1975
|
+
"media",
|
|
1976
|
+
"video",
|
|
1977
|
+
"pause"
|
|
1978
|
+
]
|
|
1979
|
+
},
|
|
1980
|
+
{
|
|
1981
|
+
name: "Stop",
|
|
1982
|
+
slug: "stop",
|
|
1983
|
+
src: "M4.5 7.5a3 3 0 013-3h9a3 3 0 013 3v9a3 3 0 01-3 3h-9a3 3 0 01-3-3v-9z",
|
|
1984
|
+
tags: [
|
|
1985
|
+
"media",
|
|
1986
|
+
"video",
|
|
1987
|
+
"stop"
|
|
1988
|
+
]
|
|
1989
|
+
},
|
|
1990
|
+
{
|
|
1991
|
+
name: "Play Circle",
|
|
1992
|
+
slug: "play-circle",
|
|
1993
|
+
src: "M21 12a9 9 0 11-18 0 9 9 0 0118 0zM15.91 11.672a.375.375 0 010 .656l-5.603 3.113a.375.375 0 01-.557-.328V8.887c0-.286.307-.466.557-.327l5.603 3.112z",
|
|
1994
|
+
tags: [
|
|
1995
|
+
"start",
|
|
1996
|
+
"media",
|
|
1997
|
+
"play-circle"
|
|
1998
|
+
]
|
|
1999
|
+
},
|
|
2000
|
+
{
|
|
2001
|
+
name: "Pause Circle",
|
|
2002
|
+
slug: "pause-circle",
|
|
2003
|
+
src: "M14.25 9v6m-4.5 0V9M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z",
|
|
2004
|
+
tags: [
|
|
2005
|
+
"stop",
|
|
2006
|
+
"media",
|
|
2007
|
+
"pause-circle"
|
|
2008
|
+
]
|
|
2009
|
+
},
|
|
2010
|
+
{
|
|
2011
|
+
name: "Speaker Wave",
|
|
2012
|
+
slug: "speaker-wave",
|
|
2013
|
+
src: "M19.114 5.636a9 9 0 010 12.728M16.463 8.288a5.25 5.25 0 010 7.424M6.75 8.25l4.72-4.72a.75.75 0 011.28.53v15.88a.75.75 0 01-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.01 9.01 0 012.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75z",
|
|
2014
|
+
tags: [
|
|
2015
|
+
"sound",
|
|
2016
|
+
"volume",
|
|
2017
|
+
"audio",
|
|
2018
|
+
"speaker-wave"
|
|
2019
|
+
]
|
|
2020
|
+
},
|
|
2021
|
+
{
|
|
2022
|
+
name: "Speaker X Mark",
|
|
2023
|
+
slug: "speaker-x-mark",
|
|
2024
|
+
src: "M17.25 9.75L19.5 12m0 0l2.25 2.25M19.5 12l2.25-2.25M19.5 12l-2.25 2.25m-10.5-6l4.72-4.72a.75.75 0 011.28.53v15.88a.75.75 0 01-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.01 9.01 0 012.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75z",
|
|
2025
|
+
tags: [
|
|
2026
|
+
"mute",
|
|
2027
|
+
"silent",
|
|
2028
|
+
"audio",
|
|
2029
|
+
"speaker-x-mark"
|
|
2030
|
+
]
|
|
2031
|
+
},
|
|
2032
|
+
{
|
|
2033
|
+
name: "Microphone",
|
|
2034
|
+
slug: "microphone",
|
|
2035
|
+
src: "M12 18.75a6 6 0 006-6v-1.5m-6 7.5a6 6 0 01-6-6v-1.5m6 7.5v3.75m-3.75 0h7.5M12 15.75a3 3 0 01-3-3V4.5a3 3 0 116 0v8.25a3 3 0 01-3 3z",
|
|
2036
|
+
tags: [
|
|
2037
|
+
"record",
|
|
2038
|
+
"audio",
|
|
2039
|
+
"voice",
|
|
2040
|
+
"microphone"
|
|
2041
|
+
]
|
|
2042
|
+
},
|
|
2043
|
+
{
|
|
2044
|
+
name: "Microphone Mute",
|
|
2045
|
+
slug: "microphone-mute",
|
|
2046
|
+
src: "M3.75 3.75l16.5 16.5M12 18.75a6 6 0 006-6v-1.5m-6 7.5a6 6 0 01-6-6v-1.5m6 7.5v3.75m-3.75 0h7.5M15 10.932V4.5a3 3 0 00-6 0v3.068m0 0v5.182a3 3 0 003 3c.944 0 1.794-.437 2.347-1.118",
|
|
2047
|
+
tags: [
|
|
2048
|
+
"mute",
|
|
2049
|
+
"silent",
|
|
2050
|
+
"voice",
|
|
2051
|
+
"microphone-mute"
|
|
2052
|
+
]
|
|
2053
|
+
},
|
|
2054
|
+
{
|
|
2055
|
+
name: "Video Camera",
|
|
2056
|
+
slug: "video-camera",
|
|
2057
|
+
src: "M15.75 10.5l4.72-4.72a.75.75 0 011.28.53v11.38a.75.75 0 01-1.28.53l-4.72-4.72M4.5 18.75h9a2.25 2.25 0 002.25-2.25v-9a2.25 2.25 0 00-2.25-2.25h-9A2.25 2.25 0 002.25 7.5v9a2.25 2.25 0 002.25 2.25z",
|
|
2058
|
+
tags: [
|
|
2059
|
+
"movie",
|
|
2060
|
+
"film",
|
|
2061
|
+
"record",
|
|
2062
|
+
"video-camera"
|
|
2063
|
+
]
|
|
2064
|
+
},
|
|
2065
|
+
{
|
|
2066
|
+
name: "Camera",
|
|
2067
|
+
slug: "camera",
|
|
2068
|
+
src: "M6.827 6.175A2.31 2.31 0 015.186 7.23c-.38.054-.757.112-1.134.175C2.999 7.58 2.25 8.507 2.25 9.574V18a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9.574c0-1.067-.75-1.994-1.802-2.169a47.865 47.865 0 00-1.134-.175 2.31 2.31 0 01-1.64-1.055l-.822-1.316a2.192 2.192 0 00-1.736-1.039 48.774 48.774 0 00-5.232 0 2.192 2.192 0 00-1.736 1.039l-.821 1.316zM16.5 12.75a4.5 4.5 0 11-9 0 4.5 4.5 0 019 0z",
|
|
2069
|
+
tags: [
|
|
2070
|
+
"photo",
|
|
2071
|
+
"picture",
|
|
2072
|
+
"image",
|
|
2073
|
+
"camera"
|
|
2074
|
+
]
|
|
2075
|
+
},
|
|
2076
|
+
{
|
|
2077
|
+
name: "Photo",
|
|
2078
|
+
slug: "photo",
|
|
2079
|
+
src: "M2.25 15.75l5.159-5.159a2.25 2.25 0 013.182 0l5.159 5.159m-1.5-1.5l1.409-1.409a2.25 2.25 0 013.182 0l2.909 2.909m-18 4.5h16.5a2.25 2.25 0 002.25-2.25V6a2.25 2.25 0 00-2.25-2.25H3.75A2.25 2.25 0 001.5 6v12a2.25 2.25 0 002.25 2.25zm10.5-11.25h.008v.008h-.008V8.25zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z",
|
|
2080
|
+
tags: [
|
|
2081
|
+
"image",
|
|
2082
|
+
"picture",
|
|
2083
|
+
"gallery",
|
|
2084
|
+
"photo",
|
|
2085
|
+
"senangwebs",
|
|
2086
|
+
"lightbox",
|
|
2087
|
+
"sw-gallery"
|
|
2088
|
+
]
|
|
2089
|
+
},
|
|
2090
|
+
{
|
|
2091
|
+
name: "Panorama",
|
|
2092
|
+
slug: "panorama",
|
|
2093
|
+
src: "M2 5C8 9 16 9 22 5V19C16 15 8 15 2 19V5ZM8 13 12 11 12 13 16 11",
|
|
2094
|
+
tags: [
|
|
2095
|
+
"image",
|
|
2096
|
+
"picture",
|
|
2097
|
+
"wide",
|
|
2098
|
+
"panorama",
|
|
2099
|
+
"senangwebs",
|
|
2100
|
+
"vr",
|
|
2101
|
+
"sw-tour"
|
|
2102
|
+
]
|
|
2103
|
+
},
|
|
2104
|
+
{
|
|
2105
|
+
name: "Musical Note",
|
|
2106
|
+
slug: "musical-note",
|
|
2107
|
+
src: "M9 9l10.5-3m0 6.553v3.75a2.25 2.25 0 01-1.632 2.163l-1.32.377a1.803 1.803 0 11-.99-3.467l2.31-.66a2.25 2.25 0 001.632-2.163zm0 0V2.25L9 5.25v10.303m0 0v3.75a2.25 2.25 0 01-1.632 2.163l-1.32.377a1.803 1.803 0 11-.99-3.467l2.31-.66A2.25 2.25 0 009 15.553z",
|
|
2108
|
+
tags: [
|
|
2109
|
+
"audio",
|
|
2110
|
+
"song",
|
|
2111
|
+
"sound",
|
|
2112
|
+
"musical-note"
|
|
2113
|
+
]
|
|
2114
|
+
},
|
|
2115
|
+
{
|
|
2116
|
+
name: "Code",
|
|
2117
|
+
slug: "code",
|
|
2118
|
+
src: "M17.25 6.75L22.5 12l-5.25 5.25M6.75 17.25L1.5 12l5.25-5.25M14.25 3.75l-4.5 16.5",
|
|
2119
|
+
tags: [
|
|
2120
|
+
"coding",
|
|
2121
|
+
"programming",
|
|
2122
|
+
"developer",
|
|
2123
|
+
"code"
|
|
2124
|
+
]
|
|
2125
|
+
},
|
|
2126
|
+
{
|
|
2127
|
+
name: "Console",
|
|
2128
|
+
slug: "console",
|
|
2129
|
+
src: "M2.25 6A2.25 2.25 0 014.5 3.75h15A2.25 2.25 0 0121.75 6v12a2.25 2.25 0 01-2.25 2.25h-15A2.25 2.25 0 012.25 18V6zM7 9l3 3-3 3M12 15h5",
|
|
2130
|
+
tags: [
|
|
2131
|
+
"terminal",
|
|
2132
|
+
"cli",
|
|
2133
|
+
"command",
|
|
2134
|
+
"prompt",
|
|
2135
|
+
"console"
|
|
2136
|
+
]
|
|
2137
|
+
},
|
|
2138
|
+
{
|
|
2139
|
+
name: "Horizontal 3 Dots",
|
|
2140
|
+
slug: "horizontal-3-dots",
|
|
2141
|
+
src: "M6.75 12a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM12.75 12a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM18.75 12a.75.75 0 11-1.5 0 .75.75 0 011.5 0z",
|
|
2142
|
+
tags: [
|
|
2143
|
+
"menu",
|
|
2144
|
+
"more",
|
|
2145
|
+
"options",
|
|
2146
|
+
"ellipsis",
|
|
2147
|
+
"horizontal-3-dots"
|
|
2148
|
+
]
|
|
2149
|
+
},
|
|
2150
|
+
{
|
|
2151
|
+
name: "Vertical 3 Dots",
|
|
2152
|
+
slug: "vertical-3-dots",
|
|
2153
|
+
src: "M12 6.75a.75.75 0 110-1.5.75.75 0 010 1.5zM12 12.75a.75.75 0 110-1.5.75.75 0 010 1.5zM12 18.75a.75.75 0 110-1.5.75.75 0 010 1.5z",
|
|
2154
|
+
tags: [
|
|
2155
|
+
"menu",
|
|
2156
|
+
"more",
|
|
2157
|
+
"options",
|
|
2158
|
+
"ellipsis",
|
|
2159
|
+
"vertical-3-dots"
|
|
2160
|
+
]
|
|
2161
|
+
},
|
|
2162
|
+
{
|
|
2163
|
+
name: "Save",
|
|
2164
|
+
slug: "save",
|
|
2165
|
+
src: "M19 21A2.25 2.25 0 0021 19V7L17 3H5A2.25 2.25 0 003 5V19A2.25 2.25 0 005 21H17ZM12 18A3.75 3.75 0 1012 10.25 3.75 3.75 0 0012 18ZM7 3H13V7H7V5.8Z",
|
|
2166
|
+
tags: [
|
|
2167
|
+
"disk",
|
|
2168
|
+
"floppy",
|
|
2169
|
+
"store",
|
|
2170
|
+
"save"
|
|
2171
|
+
]
|
|
2172
|
+
},
|
|
2173
|
+
{
|
|
2174
|
+
name: "Computer Laptop",
|
|
2175
|
+
slug: "computer-laptop",
|
|
2176
|
+
src: "M 2.25 15 h 19.5 v 1.5 a 2.25 2.25 0 0 1 -2.25 2.25 h -15 A 2.25 2.25 0 0 1 2.25 16.5 V 15 Z m 2.25 0 V 6.75 A 2.25 2.25 0 0 1 6.75 4.5 h 10.5 a 2.25 2.25 0 0 1 2.25 2.25 V 15",
|
|
2177
|
+
tags: [
|
|
2178
|
+
"device",
|
|
2179
|
+
"macbook",
|
|
2180
|
+
"pc",
|
|
2181
|
+
"computer-laptop"
|
|
2182
|
+
]
|
|
2183
|
+
},
|
|
2184
|
+
{
|
|
2185
|
+
name: "Computer Code",
|
|
2186
|
+
slug: "computer-code",
|
|
2187
|
+
src: "M 2.25 15 h 19.5 v 1.5 a 2.25 2.25 0 0 1 -2.25 2.25 h -15 A 2.25 2.25 0 0 1 2.25 16.5 V 15 Z m 2.25 0 V 6.75 A 2.25 2.25 0 0 1 6.75 4.5 h 10.5 a 2.25 2.25 0 0 1 2.25 2.25 V 15 M 10 8 L 8 10 l 2 2 m 4 -4 l 2 2 l -2 2",
|
|
2188
|
+
tags: [
|
|
2189
|
+
"develop",
|
|
2190
|
+
"program",
|
|
2191
|
+
"syntax",
|
|
2192
|
+
"computer-code",
|
|
2193
|
+
"senangwebs",
|
|
2194
|
+
"code",
|
|
2195
|
+
"sw-one"
|
|
2196
|
+
]
|
|
2197
|
+
},
|
|
2198
|
+
{
|
|
2199
|
+
name: "Computer Desktop",
|
|
2200
|
+
slug: "computer-desktop",
|
|
2201
|
+
src: "M9 17.25v1.007a3 3 0 01-.879 2.122L7.5 21h9l-.621-.621A3 3 0 0115 18.257V17.25m6-12V15a2.25 2.25 0 01-2.25 2.25H5.25A2.25 2.25 0 013 15V5.25m18 0A2.25 2.25 0 0018.75 3H5.25A2.25 2.25 0 003 5.25m18 0V12a2.25 2.25 0 01-2.25 2.25H5.25A2.25 2.25 0 013 12V5.25",
|
|
2202
|
+
tags: [
|
|
2203
|
+
"monitor",
|
|
2204
|
+
"screen",
|
|
2205
|
+
"pc",
|
|
2206
|
+
"computer-desktop"
|
|
2207
|
+
]
|
|
2208
|
+
},
|
|
2209
|
+
{
|
|
2210
|
+
name: "Device Phone Mobile",
|
|
2211
|
+
slug: "device-phone-mobile",
|
|
2212
|
+
src: "M10.5 1.5H8.25A2.25 2.25 0 006 3.75v16.5a2.25 2.25 0 002.25 2.25h7.5A2.25 2.25 0 0018 20.25V3.75a2.25 2.25 0 00-2.25-2.25H13.5m-3 0V3h3V1.5m-3 0h3m-3 18.75h3",
|
|
2213
|
+
tags: [
|
|
2214
|
+
"iphone",
|
|
2215
|
+
"smartphone",
|
|
2216
|
+
"cell",
|
|
2217
|
+
"device-phone-mobile",
|
|
2218
|
+
"senangwebs",
|
|
2219
|
+
"sw-roll"
|
|
2220
|
+
]
|
|
2221
|
+
},
|
|
2222
|
+
{
|
|
2223
|
+
name: "Device Tablet",
|
|
2224
|
+
slug: "device-tablet",
|
|
2225
|
+
src: "M10.5 19.5h3m-6.75 2.25h10.5a2.25 2.25 0 002.25-2.25v-15a2.25 2.25 0 00-2.25-2.25H6.75A2.25 2.25 0 004.5 4.5v15a2.25 2.25 0 002.25 2.25z",
|
|
2226
|
+
tags: [
|
|
2227
|
+
"ipad",
|
|
2228
|
+
"kindle",
|
|
2229
|
+
"device-tablet"
|
|
2230
|
+
]
|
|
2231
|
+
},
|
|
2232
|
+
{
|
|
2233
|
+
name: "Battery 0",
|
|
2234
|
+
slug: "battery-0",
|
|
2235
|
+
src: "M21 10.5h.375c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125H21M3.75 18h15A2.25 2.25 0 0021 15.75v-6a2.25 2.25 0 00-2.25-2.25h-15A2.25 2.25 0 001.5 9.75v6A2.25 2.25 0 003.75 18z",
|
|
2236
|
+
tags: [
|
|
2237
|
+
"power",
|
|
2238
|
+
"empty",
|
|
2239
|
+
"charge",
|
|
2240
|
+
"battery-0"
|
|
2241
|
+
]
|
|
2242
|
+
},
|
|
2243
|
+
{
|
|
2244
|
+
name: "Battery 10",
|
|
2245
|
+
slug: "battery-10",
|
|
2246
|
+
src: "M21 10.5h.375c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125H21M3.75 18h15A2.25 2.25 0 0021 15.75v-6a2.25 2.25 0 00-2.25-2.25h-15A2.25 2.25 0 001.5 9.75v6A2.25 2.25 0 003.75 18zM4.5 10.5h3L7.5 15 4.5 15 4.5 10.5",
|
|
2247
|
+
tags: [
|
|
2248
|
+
"power",
|
|
2249
|
+
"low",
|
|
2250
|
+
"battery-10"
|
|
2251
|
+
]
|
|
2252
|
+
},
|
|
2253
|
+
{
|
|
2254
|
+
name: "Battery 50",
|
|
2255
|
+
slug: "battery-50",
|
|
2256
|
+
src: "M21 10.5h.375c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125H21M3.75 18h15A2.25 2.25 0 0021 15.75v-6a2.25 2.25 0 00-2.25-2.25h-15A2.25 2.25 0 001.5 9.75v6A2.25 2.25 0 003.75 18zM4.5 10.5h7.5L12 15 4.5 15 4.5 10.5",
|
|
2257
|
+
tags: [
|
|
2258
|
+
"power",
|
|
2259
|
+
"half",
|
|
2260
|
+
"battery-50"
|
|
2261
|
+
]
|
|
2262
|
+
},
|
|
2263
|
+
{
|
|
2264
|
+
name: "Battery 100",
|
|
2265
|
+
slug: "battery-100",
|
|
2266
|
+
src: "M21 10.5h.375c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125H21M3.75 18h15A2.25 2.25 0 0021 15.75v-6a2.25 2.25 0 00-2.25-2.25h-15A2.25 2.25 0 001.5 9.75v6A2.25 2.25 0 003.75 18zM4.5 10.5h13.5L18 15 4.5 15 4.5 10.5",
|
|
2267
|
+
tags: [
|
|
2268
|
+
"power",
|
|
2269
|
+
"full",
|
|
2270
|
+
"battery-100"
|
|
2271
|
+
]
|
|
2272
|
+
},
|
|
2273
|
+
{
|
|
2274
|
+
name: "Controller",
|
|
2275
|
+
slug: "controller",
|
|
2276
|
+
src: "M12 2V6M5 6H19C20.6569 6 22 7.34315 22 9V15C22 16.6569 20.6569 18 19 18H5C3.34315 18 2 16.6569 2 15V9C2 7.34315 3.34315 6 5 6Z M6 12H10M8 10V14 M18 12a2 2 0 1 1-4 0 2 2 0 0 1 4 0z",
|
|
2277
|
+
tags: [
|
|
2278
|
+
"game",
|
|
2279
|
+
"play",
|
|
2280
|
+
"joystick",
|
|
2281
|
+
"controller",
|
|
2282
|
+
"senangwebs",
|
|
2283
|
+
"vr",
|
|
2284
|
+
"sw-verse"
|
|
2285
|
+
]
|
|
2286
|
+
},
|
|
2287
|
+
{
|
|
2288
|
+
name: "Game",
|
|
2289
|
+
slug: "game",
|
|
2290
|
+
src: "M 13 13 L 13 4 A 9 9 0 1 0 22 13 Z M 20 8 a 2 2 0 1 1 -4 0 a 2 2 0 0 1 4 0 z M 10 12 a 1.5 1.5 0 1 1 -3 0 a 1.5 1.5 0 0 1 3 0 z",
|
|
2291
|
+
tags: [
|
|
2292
|
+
"controller",
|
|
2293
|
+
"play",
|
|
2294
|
+
"joystick",
|
|
2295
|
+
"game",
|
|
2296
|
+
"senangwebs",
|
|
2297
|
+
"2d",
|
|
2298
|
+
"sw-xperience"
|
|
2299
|
+
]
|
|
2300
|
+
},
|
|
2301
|
+
{
|
|
2302
|
+
name: "Window",
|
|
2303
|
+
slug: "window",
|
|
2304
|
+
src: "M3 8.25V18a2.25 2.25 0 002.25 2.25h13.5A2.25 2.25 0 0021 18V8.25m-18 0V6a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 6v2.25m-18 0h18M5.25 6h.008v.008H5.25V6zM7.5 6h.008v.008H7.5V6zM9.75 6h.008v.008H9.75V6z",
|
|
2305
|
+
tags: [
|
|
2306
|
+
"browser",
|
|
2307
|
+
"app",
|
|
2308
|
+
"ui",
|
|
2309
|
+
"window"
|
|
2310
|
+
]
|
|
2311
|
+
},
|
|
2312
|
+
{
|
|
2313
|
+
name: "Shopping Cart",
|
|
2314
|
+
slug: "shopping-cart",
|
|
2315
|
+
src: "M2.25 3h1.386c.51 0 .955.343 1.087.835l.383 1.437M7.5 14.25a3 3 0 00-3 3h15.75m-12.75-3h11.218c1.121-2.3 2.1-4.684 2.924-7.138a60.114 60.114 0 00-16.536-1.84M7.5 14.25L5.106 5.272M6 20.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm12.75 0a.75.75 0 11-1.5 0 .75.75 0 011.5 0z",
|
|
2316
|
+
tags: [
|
|
2317
|
+
"buy",
|
|
2318
|
+
"checkout",
|
|
2319
|
+
"store",
|
|
2320
|
+
"shopping-cart"
|
|
2321
|
+
]
|
|
2322
|
+
},
|
|
2323
|
+
{
|
|
2324
|
+
name: "Shopping Bag",
|
|
2325
|
+
slug: "shopping-bag",
|
|
2326
|
+
src: "M15.75 10.5V6a3.75 3.75 0 10-7.5 0v4.5m11.356-1.993l1.263 12c.07.665-.45 1.243-1.119 1.243H4.25a1.125 1.125 0 01-1.12-1.243l1.264-12A1.125 1.125 0 015.513 7.5h12.974c.576 0 1.059.435 1.119 1.007zM8.625 10.5a.375.375 0 11-.75 0 .375.375 0 01.75 0zm7.5 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z",
|
|
2327
|
+
tags: [
|
|
2328
|
+
"buy",
|
|
2329
|
+
"checkout",
|
|
2330
|
+
"store",
|
|
2331
|
+
"shopping-bag"
|
|
2332
|
+
]
|
|
2333
|
+
},
|
|
2334
|
+
{
|
|
2335
|
+
name: "Basket",
|
|
2336
|
+
slug: "basket",
|
|
2337
|
+
src: "m15 11 0 9m4-9-4-7M2 11h20m-18.5 0 1.6 7.4a2 2 0 002 1.6h9.8a2 2 0 002-1.6l1.7-7.4M4.5 15.5h15m-14.5-4.5 4-7m0 7 0 9",
|
|
2338
|
+
tags: [
|
|
2339
|
+
"buy",
|
|
2340
|
+
"checkout",
|
|
2341
|
+
"store",
|
|
2342
|
+
"basket",
|
|
2343
|
+
"senangwebs",
|
|
2344
|
+
"cart",
|
|
2345
|
+
"shop",
|
|
2346
|
+
"sw-buy"
|
|
2347
|
+
]
|
|
2348
|
+
},
|
|
2349
|
+
{
|
|
2350
|
+
name: "Credit Card",
|
|
2351
|
+
slug: "credit-card",
|
|
2352
|
+
src: "M2.25 8.25h19.5M2.25 9h19.5m-16.5 5.25h6m-6 2.25h3m-3.75 3h15a2.25 2.25 0 002.25-2.25V6.75A2.25 2.25 0 0019.5 4.5h-15a2.25 2.25 0 00-2.25 2.25v10.5A2.25 2.25 0 004.5 19.5z",
|
|
2353
|
+
tags: [
|
|
2354
|
+
"payment",
|
|
2355
|
+
"money",
|
|
2356
|
+
"purchase",
|
|
2357
|
+
"credit-card"
|
|
2358
|
+
]
|
|
2359
|
+
},
|
|
2360
|
+
{
|
|
2361
|
+
name: "Banknotes",
|
|
2362
|
+
slug: "banknotes",
|
|
2363
|
+
src: "M2.25 18.75l15.75 2.25c1 .2 1-0 1.2-1L19.4 18.8M3.75 4.5v.75A.75.75 0 013 6h-.75m0 0v-.375c0-.621.504-1.125 1.125-1.125H20.25M2.25 6v9m18-10.5v.75c0 .414.336.75.75.75h.75m-1.5-1.5h.375c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-.375m1.5-1.5H21a.75.75 0 00-.75.75v.75m0 0H3.75m0 0h-.375a1.125 1.125 0 01-1.125-1.125V15m1.5 1.5v-.75A.75.75 0 003 15h-.75M15 10.5a3 3 0 11-6 0 3 3 0 016 0Zm3 0h.008v.008H18V10.5Zm-12 0h.008v.008H6V10.5Z",
|
|
2364
|
+
tags: [
|
|
2365
|
+
"money",
|
|
2366
|
+
"cash",
|
|
2367
|
+
"payment",
|
|
2368
|
+
"banknotes"
|
|
2369
|
+
]
|
|
2370
|
+
},
|
|
2371
|
+
{
|
|
2372
|
+
name: "Calendar",
|
|
2373
|
+
slug: "calendar",
|
|
2374
|
+
src: "M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5",
|
|
2375
|
+
tags: [
|
|
2376
|
+
"date",
|
|
2377
|
+
"schedule",
|
|
2378
|
+
"time",
|
|
2379
|
+
"calendar"
|
|
2380
|
+
]
|
|
2381
|
+
},
|
|
2382
|
+
{
|
|
2383
|
+
name: "Calendar Plus",
|
|
2384
|
+
slug: "calendar-plus",
|
|
2385
|
+
src: "M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5M12 12v6m3-3h-6",
|
|
2386
|
+
tags: [
|
|
2387
|
+
"date",
|
|
2388
|
+
"schedule",
|
|
2389
|
+
"time",
|
|
2390
|
+
"calendar",
|
|
2391
|
+
"add",
|
|
2392
|
+
"plus"
|
|
2393
|
+
]
|
|
2394
|
+
},
|
|
2395
|
+
{
|
|
2396
|
+
name: "Calendar Minus",
|
|
2397
|
+
slug: "calendar-minus",
|
|
2398
|
+
src: "M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25M15 15H9",
|
|
2399
|
+
tags: [
|
|
2400
|
+
"date",
|
|
2401
|
+
"schedule",
|
|
2402
|
+
"time",
|
|
2403
|
+
"calendar",
|
|
2404
|
+
"subtract",
|
|
2405
|
+
"minus"
|
|
2406
|
+
]
|
|
2407
|
+
},
|
|
2408
|
+
{
|
|
2409
|
+
name: "Calendar Approve",
|
|
2410
|
+
slug: "calendar-approve",
|
|
2411
|
+
src: "M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25M10.5 17.5 15 12.5M9 15.5l1.5 2",
|
|
2412
|
+
tags: [
|
|
2413
|
+
"date",
|
|
2414
|
+
"schedule",
|
|
2415
|
+
"time",
|
|
2416
|
+
"calendar",
|
|
2417
|
+
"approve",
|
|
2418
|
+
"check",
|
|
2419
|
+
"accept"
|
|
2420
|
+
]
|
|
2421
|
+
},
|
|
2422
|
+
{
|
|
2423
|
+
name: "Calendar Reject",
|
|
2424
|
+
slug: "calendar-reject",
|
|
2425
|
+
src: "M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25M9.5 17.5 14.5 12.5M9.5 12.5l5 5",
|
|
2426
|
+
tags: [
|
|
2427
|
+
"date",
|
|
2428
|
+
"schedule",
|
|
2429
|
+
"time",
|
|
2430
|
+
"calendar",
|
|
2431
|
+
"reject",
|
|
2432
|
+
"x-mark",
|
|
2433
|
+
"remove"
|
|
2434
|
+
]
|
|
2435
|
+
},
|
|
2436
|
+
{
|
|
2437
|
+
name: "Calendar Days",
|
|
2438
|
+
slug: "calendar-days",
|
|
2439
|
+
src: "M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z",
|
|
2440
|
+
tags: [
|
|
2441
|
+
"date",
|
|
2442
|
+
"schedule",
|
|
2443
|
+
"time",
|
|
2444
|
+
"calendar-days"
|
|
2445
|
+
]
|
|
2446
|
+
},
|
|
2447
|
+
{
|
|
2448
|
+
name: "Briefcase",
|
|
2449
|
+
slug: "briefcase",
|
|
2450
|
+
src: "M20.25 14.15v4.25c0 1.094-.787 2.036-1.872 2.18-2.087.277-4.216.42-6.378.42s-4.291-.143-6.378-.42c-1.085-.144-1.872-1.086-1.872-2.18v-4.25m16.5 0a2.18 2.18 0 00.75-1.661V8.706c0-1.081-.768-2.015-1.837-2.175a48.114 48.114 0 00-3.413-.387m4.5 8.006c-.194.165-.42.295-.675.38A23.978 23.978 0 0112 15.75c-2.648 0-5.195-.429-7.577-1.22a2.016 2.016 0 01-.675-.38m0 0A2.18 2.18 0 013 12.489V8.706c0-1.081.768-2.015 1.837-2.175a48.111 48.111 0 013.413-.387m7.5 0V5.25A2.25 2.25 0 0013.5 3h-3a2.25 2.25 0 00-2.25 2.25v.894m7.5 0a48.667 48.667 0 00-7.5 0M12 12.75h.008v.008H12v-.008z",
|
|
2451
|
+
tags: [
|
|
2452
|
+
"work",
|
|
2453
|
+
"business",
|
|
2454
|
+
"office",
|
|
2455
|
+
"briefcase"
|
|
2456
|
+
]
|
|
2457
|
+
},
|
|
2458
|
+
{
|
|
2459
|
+
name: "Presentation Chart Line",
|
|
2460
|
+
slug: "presentation-chart-line",
|
|
2461
|
+
src: "M3.75 3v11.25A2.25 2.25 0 006 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0118 16.5h-2.25m-7.5 0h7.5m-7.5 0l-1 3m8.5-3l1 3m0 0l.5 1.5m-.5-1.5h-9.5m0 0l-.5 1.5m.75-9 3-3 2.148 2.148A12.061 12.061 0 0116.5 7.605",
|
|
2462
|
+
tags: [
|
|
2463
|
+
"analytics",
|
|
2464
|
+
"graph",
|
|
2465
|
+
"stats",
|
|
2466
|
+
"presentation-chart-line"
|
|
2467
|
+
]
|
|
2468
|
+
},
|
|
2469
|
+
{
|
|
2470
|
+
name: "Presentation Media",
|
|
2471
|
+
slug: "presentation-media",
|
|
2472
|
+
src: "M 3.75 3 v 11.25 A 2.25 2.25 0 0 0 6 16.5 h 2.25 M 3.75 3 h -1.5 m 1.5 0 h 16.5 m 0 0 h 1.5 m -1.5 0 v 11.25 A 2.25 2.25 0 0 1 18 16.5 h -2.25 m -7.5 0 h 7.5 m -7.5 0 l -1 3 m 8.5 -3 l 1 3 m 0 0 l 0.5 1.5 m -0.5 -1.5 h -9.5 m 0 0 l -0.5 1.5 M 10 7 l 5.005 2.487 l -5.005 2.513 z",
|
|
2473
|
+
tags: [
|
|
2474
|
+
"analytics",
|
|
2475
|
+
"graph",
|
|
2476
|
+
"screen",
|
|
2477
|
+
"presentation-media",
|
|
2478
|
+
"senangwebs",
|
|
2479
|
+
"presentation",
|
|
2480
|
+
"sw-deck"
|
|
2481
|
+
]
|
|
2482
|
+
},
|
|
2483
|
+
{
|
|
2484
|
+
name: "Whiteboard",
|
|
2485
|
+
slug: "whiteboard",
|
|
2486
|
+
src: "M3 5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5zM2 17h20M6 17v4M18 17v4",
|
|
2487
|
+
tags: [
|
|
2488
|
+
"draw",
|
|
2489
|
+
"present",
|
|
2490
|
+
"board",
|
|
2491
|
+
"whiteboard",
|
|
2492
|
+
"senangwebs",
|
|
2493
|
+
"vector",
|
|
2494
|
+
"sw-whiteboard"
|
|
2495
|
+
]
|
|
2496
|
+
},
|
|
2497
|
+
{
|
|
2498
|
+
name: "Chart Line",
|
|
2499
|
+
slug: "chart-line",
|
|
2500
|
+
src: "M4 3v15c0 2 1 3 3 3h13M8 15l3-4 2 2 6-8",
|
|
2501
|
+
tags: [
|
|
2502
|
+
"graph",
|
|
2503
|
+
"analytics",
|
|
2504
|
+
"stats",
|
|
2505
|
+
"chart-line"
|
|
2506
|
+
]
|
|
2507
|
+
},
|
|
2508
|
+
{
|
|
2509
|
+
name: "Chart Bar",
|
|
2510
|
+
slug: "chart-bar",
|
|
2511
|
+
src: "M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 013 19.875v-6.75zM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V8.625zM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V4.125z",
|
|
2512
|
+
tags: [
|
|
2513
|
+
"graph",
|
|
2514
|
+
"analytics",
|
|
2515
|
+
"stats",
|
|
2516
|
+
"chart-bar"
|
|
2517
|
+
]
|
|
2518
|
+
},
|
|
2519
|
+
{
|
|
2520
|
+
name: "Chart Pie",
|
|
2521
|
+
slug: "chart-pie",
|
|
2522
|
+
src: "M10.5 6a7.5 7.5 0 1 0 7.5 7.5h-7.5V6Z M13.5 10.5H21A7.5 7.5 0 0 0 13.5 3v7.5Z",
|
|
2523
|
+
tags: [
|
|
2524
|
+
"graph",
|
|
2525
|
+
"analytics",
|
|
2526
|
+
"stats",
|
|
2527
|
+
"chart-pie",
|
|
2528
|
+
"senangwebs",
|
|
2529
|
+
"chart",
|
|
2530
|
+
"sw-yield"
|
|
2531
|
+
]
|
|
2532
|
+
},
|
|
2533
|
+
{
|
|
2534
|
+
name: "Currency Dollar",
|
|
2535
|
+
slug: "currency-dollar",
|
|
2536
|
+
src: "M12 6v12m-3-2.818l.879.659c1.171.879 3.07.879 4.242 0 1.172-.879 1.172-2.303 0-3.182C13.536 12.219 12.768 12 12 12c-.725 0-1.45-.22-2.003-.659-1.106-.879-1.106-2.303 0-3.182s2.9-.879 4.006 0l.415.33M21 12a9 9 0 11-18 0 9 9 0 0118 0z",
|
|
2537
|
+
tags: [
|
|
2538
|
+
"money",
|
|
2539
|
+
"price",
|
|
2540
|
+
"cost",
|
|
2541
|
+
"usd",
|
|
2542
|
+
"currency-dollar"
|
|
2543
|
+
]
|
|
2544
|
+
},
|
|
2545
|
+
{
|
|
2546
|
+
name: "Currency Euro",
|
|
2547
|
+
slug: "currency-euro",
|
|
2548
|
+
src: "M14.25 7.756a4.5 4.5 0 100 8.488M7.5 10.5h5.25m-5.25 3h5.25M21 12a9 9 0 11-18 0 9 9 0 0118 0z",
|
|
2549
|
+
tags: [
|
|
2550
|
+
"money",
|
|
2551
|
+
"price",
|
|
2552
|
+
"cost",
|
|
2553
|
+
"eur",
|
|
2554
|
+
"currency-euro"
|
|
2555
|
+
]
|
|
2556
|
+
},
|
|
2557
|
+
{
|
|
2558
|
+
name: "Currency Pound",
|
|
2559
|
+
slug: "currency-pound",
|
|
2560
|
+
src: "M14.1213 7.62877C12.9497 6.45719 11.0503 6.45719 9.87868 7.62877C9.37424 8.13321 9.08699 8.7726 9.01694 9.43073C8.9944 9.64251 9.01512 9.85582 9.04524 10.0667L9.5512 13.6084C9.68065 14.5146 9.5307 15.4386 9.12135 16.2573L9 16.5L10.5385 15.9872C11.0003 15.8332 11.4997 15.8332 11.9615 15.9872L12.6158 16.2053C13.182 16.394 13.7999 16.3501 14.3336 16.0832L15 15.75M8.25 12H12M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z",
|
|
2561
|
+
tags: [
|
|
2562
|
+
"money",
|
|
2563
|
+
"price",
|
|
2564
|
+
"cost",
|
|
2565
|
+
"gbp",
|
|
2566
|
+
"currency-pound"
|
|
2567
|
+
]
|
|
2568
|
+
},
|
|
2569
|
+
{
|
|
2570
|
+
name: "Currency Yen",
|
|
2571
|
+
slug: "currency-yen",
|
|
2572
|
+
src: "M9 7.5l3 4.5m0 0l3-4.5M12 12v5.25M15 12H9m6 3H9m12-3a9 9 0 11-18 0 9 9 0 0118 0z",
|
|
2573
|
+
tags: [
|
|
2574
|
+
"money",
|
|
2575
|
+
"price",
|
|
2576
|
+
"cost",
|
|
2577
|
+
"jpy",
|
|
2578
|
+
"currency-yen"
|
|
2579
|
+
]
|
|
2580
|
+
},
|
|
2581
|
+
{
|
|
2582
|
+
name: "Currency Ringgit",
|
|
2583
|
+
slug: "currency-ringgit",
|
|
2584
|
+
src: "M7 15V9h2a1.5 1.5 0 0 1 0 3H7m2 0l1.5 3M13 15V9l2 3 2-3v6M21 12a9 9 0 11-18 0 9 9 0 0118 0z",
|
|
2585
|
+
tags: [
|
|
2586
|
+
"money",
|
|
2587
|
+
"price",
|
|
2588
|
+
"cost",
|
|
2589
|
+
"myr",
|
|
2590
|
+
"currency-ringgit"
|
|
2591
|
+
]
|
|
2592
|
+
},
|
|
2593
|
+
{
|
|
2594
|
+
name: "Tabs",
|
|
2595
|
+
slug: "tabs",
|
|
2596
|
+
src: "M21 7.5V18a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 18V7.5V6a2.25 2.25 0 0 1 2.25-2.25H18.75a2.25 2.25 0 0 1 2.25 2.25V7.5H12V3.75",
|
|
2597
|
+
tags: [
|
|
2598
|
+
"browser",
|
|
2599
|
+
"ui",
|
|
2600
|
+
"navigation",
|
|
2601
|
+
"tabs",
|
|
2602
|
+
"senangwebs",
|
|
2603
|
+
"sw-herd"
|
|
2604
|
+
]
|
|
2605
|
+
},
|
|
2606
|
+
{
|
|
2607
|
+
name: "Document",
|
|
2608
|
+
slug: "document",
|
|
2609
|
+
src: "M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z",
|
|
2610
|
+
tags: [
|
|
2611
|
+
"file",
|
|
2612
|
+
"paper",
|
|
2613
|
+
"page",
|
|
2614
|
+
"document"
|
|
2615
|
+
]
|
|
2616
|
+
},
|
|
2617
|
+
{
|
|
2618
|
+
name: "Document Text",
|
|
2619
|
+
slug: "document-text",
|
|
2620
|
+
src: "M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z",
|
|
2621
|
+
tags: [
|
|
2622
|
+
"file",
|
|
2623
|
+
"paper",
|
|
2624
|
+
"page",
|
|
2625
|
+
"document-text"
|
|
2626
|
+
]
|
|
2627
|
+
},
|
|
2628
|
+
{
|
|
2629
|
+
name: "Document Duplicate",
|
|
2630
|
+
slug: "document-duplicate",
|
|
2631
|
+
src: "M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 01-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 011.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 00-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 01-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 00-3.375-3.375h-1.5a1.125 1.125 0 01-1.125-1.125v-1.5a3.375 3.375 0 00-3.375-3.375H9.75",
|
|
2632
|
+
tags: [
|
|
2633
|
+
"copy",
|
|
2634
|
+
"clone",
|
|
2635
|
+
"file",
|
|
2636
|
+
"document-duplicate"
|
|
2637
|
+
]
|
|
2638
|
+
},
|
|
2639
|
+
{
|
|
2640
|
+
name: "Folder",
|
|
2641
|
+
slug: "folder",
|
|
2642
|
+
src: "M2.25 12.75V12A2.25 2.25 0 014.5 9.75h15A2.25 2.25 0 0121.75 12v.75m-8.69-6.44l-2.12-2.12a1.5 1.5 0 00-1.061-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z",
|
|
2643
|
+
tags: [
|
|
2644
|
+
"directory",
|
|
2645
|
+
"organize",
|
|
2646
|
+
"file",
|
|
2647
|
+
"folder"
|
|
2648
|
+
]
|
|
2649
|
+
},
|
|
2650
|
+
{
|
|
2651
|
+
name: "Folder Open",
|
|
2652
|
+
slug: "folder-open",
|
|
2653
|
+
src: "M3.75 9.776c.112-.017.227-.026.344-.026h15.812c.117 0 .232.009.344.026m-16.5 0a2.25 2.25 0 00-1.883 2.542l.857 6a2.25 2.25 0 002.227 1.932H19.05a2.25 2.25 0 002.227-1.932l.857-6a2.25 2.25 0 00-1.883-2.542m-16.5 0V6A2.25 2.25 0 016 3.75h3.879a1.5 1.5 0 011.06.44l2.122 2.12a1.5 1.5 0 001.06.44H18A2.25 2.25 0 0120.25 9v.776",
|
|
2654
|
+
tags: [
|
|
2655
|
+
"directory",
|
|
2656
|
+
"organize",
|
|
2657
|
+
"file",
|
|
2658
|
+
"folder-open",
|
|
2659
|
+
"senangwebs",
|
|
2660
|
+
"sw-unfold"
|
|
2661
|
+
]
|
|
2662
|
+
},
|
|
2663
|
+
{
|
|
2664
|
+
name: "Folder Plus",
|
|
2665
|
+
slug: "folder-plus",
|
|
2666
|
+
src: "M12 10.5v6m3-3H9m4.06-7.19l-2.12-2.12a1.5 1.5 0 00-1.061-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z",
|
|
2667
|
+
tags: [
|
|
2668
|
+
"add folder",
|
|
2669
|
+
"new directory",
|
|
2670
|
+
"folder-plus"
|
|
2671
|
+
]
|
|
2672
|
+
},
|
|
2673
|
+
{
|
|
2674
|
+
name: "Folder minus",
|
|
2675
|
+
slug: "folder-minus",
|
|
2676
|
+
src: "M12 13.5 12 13.5m3 0H9m4.06-7.19-2.12-2.12a1.5 1.5 0 00-1.061-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z",
|
|
2677
|
+
tags: [
|
|
2678
|
+
"remove folder",
|
|
2679
|
+
"delete directory",
|
|
2680
|
+
"folder-minus"
|
|
2681
|
+
]
|
|
2682
|
+
},
|
|
2683
|
+
{
|
|
2684
|
+
name: "Clipboard",
|
|
2685
|
+
slug: "clipboard",
|
|
2686
|
+
src: "M15.666 3.888A2.25 2.25 0 0 0 13.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 0 1-.75.75H9a.75.75 0 0 1-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 0 1-2.25 2.25H6.75A2.25 2.25 0 0 1 4.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 0 1 1.927-.184",
|
|
2687
|
+
tags: [
|
|
2688
|
+
"copy",
|
|
2689
|
+
"paste",
|
|
2690
|
+
"board",
|
|
2691
|
+
"clipboard",
|
|
2692
|
+
"senangwebs",
|
|
2693
|
+
"sw-jot"
|
|
2694
|
+
]
|
|
2695
|
+
},
|
|
2696
|
+
{
|
|
2697
|
+
name: "Clipboard Document Check",
|
|
2698
|
+
slug: "clipboard-document-check",
|
|
2699
|
+
src: "M11.35 3.836c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m8.9-4.414c.376.023.75.05 1.124.08 1.131.094 1.976 1.057 1.976 2.192V16.5A2.25 2.25 0 0 1 18 18.75h-2.25m-7.5-10.5H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621 0 1.125.504 1.125 1.125v9.375m-8.25-3 1.5 1.5 3-3.75",
|
|
2700
|
+
tags: [
|
|
2701
|
+
"checklist",
|
|
2702
|
+
"task",
|
|
2703
|
+
"done",
|
|
2704
|
+
"clipboard-document-check"
|
|
2705
|
+
]
|
|
2706
|
+
},
|
|
2707
|
+
{
|
|
2708
|
+
name: "Paper Clip",
|
|
2709
|
+
slug: "paper-clip",
|
|
2710
|
+
src: "M18.375 12.739l-7.693 7.693a4.5 4.5 0 01-6.364-6.364l10.94-10.94A3 3 0 1119.5 7.372L8.552 18.32m.009-.01l-.01.01m5.699-9.941l-7.81 7.81a1.5 1.5 0 002.112 2.13",
|
|
2711
|
+
tags: [
|
|
2712
|
+
"attach",
|
|
2713
|
+
"file",
|
|
2714
|
+
"link",
|
|
2715
|
+
"paper-clip"
|
|
2716
|
+
]
|
|
2717
|
+
},
|
|
2718
|
+
{
|
|
2719
|
+
name: "Archive Box",
|
|
2720
|
+
slug: "archive-box",
|
|
2721
|
+
src: "M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z",
|
|
2722
|
+
tags: [
|
|
2723
|
+
"store",
|
|
2724
|
+
"history",
|
|
2725
|
+
"backup",
|
|
2726
|
+
"archive-box"
|
|
2727
|
+
]
|
|
2728
|
+
},
|
|
2729
|
+
{
|
|
2730
|
+
name: "Inbox",
|
|
2731
|
+
slug: "inbox",
|
|
2732
|
+
src: "M2.25 13.5h3.86a2.25 2.25 0 012.012 1.244l.256.512a2.25 2.25 0 002.013 1.244h3.218a2.25 2.25 0 002.013-1.244l.256-.512a2.25 2.25 0 012.013-1.244h3.859m-19.5.338V18a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18v-4.162c0-.224-.034-.447-.1-.661L19.24 5.338a2.25 2.25 0 00-2.15-1.588H6.911a2.25 2.25 0 00-2.15 1.588L2.35 13.177a2.25 2.25 0 00-.1.661z",
|
|
2733
|
+
tags: [
|
|
2734
|
+
"email",
|
|
2735
|
+
"message",
|
|
2736
|
+
"tray",
|
|
2737
|
+
"inbox"
|
|
2738
|
+
]
|
|
2739
|
+
},
|
|
2740
|
+
{
|
|
2741
|
+
name: "Book Open",
|
|
2742
|
+
slug: "book-open",
|
|
2743
|
+
src: "M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25",
|
|
2744
|
+
tags: [
|
|
2745
|
+
"read",
|
|
2746
|
+
"learn",
|
|
2747
|
+
"library",
|
|
2748
|
+
"book-open",
|
|
2749
|
+
"senangwebs",
|
|
2750
|
+
"sw-story"
|
|
2751
|
+
]
|
|
2752
|
+
},
|
|
2753
|
+
{
|
|
2754
|
+
name: "Book Close",
|
|
2755
|
+
slug: "book-close",
|
|
2756
|
+
src: "M4 18.5v-13A2.5 2.5 0 016.5 3H19a1 1 0 011 1v16a1 1 0 01-1 1H6.5a1 1 0 010-5H20M7 13.5 7 5.5",
|
|
2757
|
+
tags: [
|
|
2758
|
+
"read",
|
|
2759
|
+
"learn",
|
|
2760
|
+
"library",
|
|
2761
|
+
"book-close"
|
|
2762
|
+
]
|
|
2763
|
+
},
|
|
2764
|
+
{
|
|
2765
|
+
name: "Book Stacked",
|
|
2766
|
+
slug: "book-stacked",
|
|
2767
|
+
src: "M4 3h6a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z M7 3v18 M20.4 18.9c.2.5-.1 1.1-.6 1.3l-1.9.7c-.5.2-1.1-.1-1.3-.6L11.1 5.1c-.2-.5.1-1.1.6-1.3l1.9-.7c.5-.2 1.1.1 1.3.6Z",
|
|
2768
|
+
tags: [
|
|
2769
|
+
"read",
|
|
2770
|
+
"learn",
|
|
2771
|
+
"library",
|
|
2772
|
+
"book-stacked"
|
|
2773
|
+
]
|
|
2774
|
+
},
|
|
2775
|
+
{
|
|
2776
|
+
name: "Lock Closed",
|
|
2777
|
+
slug: "lock-closed",
|
|
2778
|
+
src: "M16.5 10.5V6.75a4.5 4.5 0 10-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H6.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z",
|
|
2779
|
+
tags: [
|
|
2780
|
+
"secure",
|
|
2781
|
+
"password",
|
|
2782
|
+
"private",
|
|
2783
|
+
"lock-closed"
|
|
2784
|
+
]
|
|
2785
|
+
},
|
|
2786
|
+
{
|
|
2787
|
+
name: "Lock Open",
|
|
2788
|
+
slug: "lock-open",
|
|
2789
|
+
src: "M13.5 10.5V6.75a4.5 4.5 0 119 0v3.75M3.75 21.75h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H3.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z",
|
|
2790
|
+
tags: [
|
|
2791
|
+
"unlock",
|
|
2792
|
+
"public",
|
|
2793
|
+
"access",
|
|
2794
|
+
"lock-open"
|
|
2795
|
+
]
|
|
2796
|
+
},
|
|
2797
|
+
{
|
|
2798
|
+
name: "Key",
|
|
2799
|
+
slug: "key",
|
|
2800
|
+
src: "M15.75 5.25a3 3 0 013 3m3 0a6 6 0 01-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1121.75 8.25z",
|
|
2801
|
+
tags: [
|
|
2802
|
+
"password",
|
|
2803
|
+
"access",
|
|
2804
|
+
"secure",
|
|
2805
|
+
"key"
|
|
2806
|
+
]
|
|
2807
|
+
},
|
|
2808
|
+
{
|
|
2809
|
+
name: "Shield Check",
|
|
2810
|
+
slug: "shield-check",
|
|
2811
|
+
src: "M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z",
|
|
2812
|
+
tags: [
|
|
2813
|
+
"secure",
|
|
2814
|
+
"safe",
|
|
2815
|
+
"verified",
|
|
2816
|
+
"shield-check"
|
|
2817
|
+
]
|
|
2818
|
+
},
|
|
2819
|
+
{
|
|
2820
|
+
name: "Shield Exclamation",
|
|
2821
|
+
slug: "shield-exclamation",
|
|
2822
|
+
src: "M12 9v3.75M12 15.75h.008v.008H12v-.008zM12 2.714A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z",
|
|
2823
|
+
tags: [
|
|
2824
|
+
"danger",
|
|
2825
|
+
"warning",
|
|
2826
|
+
"security",
|
|
2827
|
+
"shield-exclamation"
|
|
2828
|
+
]
|
|
2829
|
+
},
|
|
2830
|
+
{
|
|
2831
|
+
name: "Exclamation Circle",
|
|
2832
|
+
slug: "exclamation-circle",
|
|
2833
|
+
src: "M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z",
|
|
2834
|
+
tags: [
|
|
2835
|
+
"error",
|
|
2836
|
+
"warning",
|
|
2837
|
+
"alert",
|
|
2838
|
+
"exclamation-circle"
|
|
2839
|
+
]
|
|
2840
|
+
},
|
|
2841
|
+
{
|
|
2842
|
+
name: "Exclamation Triangle",
|
|
2843
|
+
slug: "exclamation-triangle",
|
|
2844
|
+
src: "M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.008v.008H12v-.008z",
|
|
2845
|
+
tags: [
|
|
2846
|
+
"warning",
|
|
2847
|
+
"danger",
|
|
2848
|
+
"caution",
|
|
2849
|
+
"exclamation-triangle"
|
|
2850
|
+
]
|
|
2851
|
+
},
|
|
2852
|
+
{
|
|
2853
|
+
name: "Information Circle",
|
|
2854
|
+
slug: "information-circle",
|
|
2855
|
+
src: "M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z",
|
|
2856
|
+
tags: [
|
|
2857
|
+
"help",
|
|
2858
|
+
"details",
|
|
2859
|
+
"info",
|
|
2860
|
+
"information-circle"
|
|
2861
|
+
]
|
|
2862
|
+
},
|
|
2863
|
+
{
|
|
2864
|
+
name: "Question Mark Circle",
|
|
2865
|
+
slug: "question-mark-circle",
|
|
2866
|
+
src: "M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z",
|
|
2867
|
+
tags: [
|
|
2868
|
+
"help",
|
|
2869
|
+
"faq",
|
|
2870
|
+
"support",
|
|
2871
|
+
"question-mark-circle",
|
|
2872
|
+
"senangwebs",
|
|
2873
|
+
"question",
|
|
2874
|
+
"sw-quiz"
|
|
2875
|
+
]
|
|
2876
|
+
},
|
|
2877
|
+
{
|
|
2878
|
+
name: "Bell",
|
|
2879
|
+
slug: "bell",
|
|
2880
|
+
src: "M14.857 17.082a23.848 23.848 0 005.454-1.31A8.967 8.967 0 0118 9.75V9A6 6 0 006 9v.75a8.967 8.967 0 01-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 01-5.714 0m5.714 0a3 3 0 11-5.714 0",
|
|
2881
|
+
tags: [
|
|
2882
|
+
"notification",
|
|
2883
|
+
"alert",
|
|
2884
|
+
"alarm",
|
|
2885
|
+
"bell",
|
|
2886
|
+
"senangwebs",
|
|
2887
|
+
"prompt",
|
|
2888
|
+
"sw-notices"
|
|
2889
|
+
]
|
|
2890
|
+
},
|
|
2891
|
+
{
|
|
2892
|
+
name: "Bell Alert",
|
|
2893
|
+
slug: "bell-alert",
|
|
2894
|
+
src: "M14.857 17.082a23.848 23.848 0 005.454-1.31A8.967 8.967 0 0118 9.75V9A6 6 0 006 9v.75a8.967 8.967 0 01-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 01-5.714 0m5.714 0a3 3 0 11-5.714 0M3.124 7.5A8.969 8.969 0 015.292 3m13.416 0a8.969 8.969 0 012.168 4.5",
|
|
2895
|
+
tags: [
|
|
2896
|
+
"notification",
|
|
2897
|
+
"alert",
|
|
2898
|
+
"alarm",
|
|
2899
|
+
"bell-alert"
|
|
2900
|
+
]
|
|
2901
|
+
},
|
|
2902
|
+
{
|
|
2903
|
+
name: "Eye",
|
|
2904
|
+
slug: "eye",
|
|
2905
|
+
src: "M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178zM15 12a3 3 0 11-6 0 3 3 0 016 0z",
|
|
2906
|
+
tags: [
|
|
2907
|
+
"view",
|
|
2908
|
+
"show",
|
|
2909
|
+
"visible",
|
|
2910
|
+
"eye"
|
|
2911
|
+
]
|
|
2912
|
+
},
|
|
2913
|
+
{
|
|
2914
|
+
name: "Eye Slash",
|
|
2915
|
+
slug: "eye-slash",
|
|
2916
|
+
src: "M3.98 8.223A10.477 10.477 0 001.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.45 10.45 0 0112 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 01-4.293 5.774M6.228 6.228L3 3m3.228 3.228l3.65 3.65m7.894 7.894L21 21m-3.228-3.228l-3.65-3.65m0 0a3 3 0 10-4.243-4.243m4.242 4.242L9.88 9.88",
|
|
2917
|
+
tags: [
|
|
2918
|
+
"hide",
|
|
2919
|
+
"invisible",
|
|
2920
|
+
"password",
|
|
2921
|
+
"eye-slash"
|
|
2922
|
+
]
|
|
2923
|
+
},
|
|
2924
|
+
{
|
|
2925
|
+
name: "Light Bulb",
|
|
2926
|
+
slug: "light-bulb",
|
|
2927
|
+
src: "M12 2.25a7.5 7.5 0 00-7.5 7.5c0 2.5 1.2 4.8 3.1 6.2.8.6 1.4 1.4 1.4 2.4v1.9a.75.75 0 00.75.75h4.5a.75.75 0 00.75-.75v-1.9c0-1 .6-1.8 1.4-2.4 1.9-1.4 3.1-3.7 3.1-6.2a7.5 7.5 0 00-7.5-7.5ZM10 17h4M11 22v0L13 22M9.75 9.75c0-1.25 1.125-2.25 2.25-2.25s2.25 1 2.25 2.25",
|
|
2928
|
+
tags: [
|
|
2929
|
+
"idea",
|
|
2930
|
+
"tip",
|
|
2931
|
+
"solution",
|
|
2932
|
+
"light-bulb"
|
|
2933
|
+
]
|
|
2934
|
+
},
|
|
2935
|
+
{
|
|
2936
|
+
name: "Bolt",
|
|
2937
|
+
slug: "bolt",
|
|
2938
|
+
src: "M3.75 13.5l10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75z",
|
|
2939
|
+
tags: [
|
|
2940
|
+
"energy",
|
|
2941
|
+
"power",
|
|
2942
|
+
"fast",
|
|
2943
|
+
"bolt"
|
|
2944
|
+
]
|
|
2945
|
+
},
|
|
2946
|
+
{
|
|
2947
|
+
name: "Moon",
|
|
2948
|
+
slug: "moon",
|
|
2949
|
+
src: "M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z",
|
|
2950
|
+
tags: [
|
|
2951
|
+
"dark mode",
|
|
2952
|
+
"night",
|
|
2953
|
+
"sleep",
|
|
2954
|
+
"moon"
|
|
2955
|
+
]
|
|
2956
|
+
},
|
|
2957
|
+
{
|
|
2958
|
+
name: "Sun",
|
|
2959
|
+
slug: "sun",
|
|
2960
|
+
src: "M12 3v2.25m6.364.386l-1.591 1.591M21 12h-2.25m-.386 6.364l-1.591-1.591M12 18.75V21m-4.773-4.263l-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0z",
|
|
2961
|
+
tags: [
|
|
2962
|
+
"light mode",
|
|
2963
|
+
"day",
|
|
2964
|
+
"bright",
|
|
2965
|
+
"sun"
|
|
2966
|
+
]
|
|
2967
|
+
},
|
|
2968
|
+
{
|
|
2969
|
+
name: "Cloud",
|
|
2970
|
+
slug: "cloud",
|
|
2971
|
+
src: "M2.25 15a4.5 4.5 0 004.5 4.5H18a3.75 3.75 0 001.332-7.257 3 3 0 00-4.232-3.943 5.25 5.25 0 00-10.233 2.33A4.502 4.502 0 002.25 15z",
|
|
2972
|
+
tags: [
|
|
2973
|
+
"weather",
|
|
2974
|
+
"sky",
|
|
2975
|
+
"cloud"
|
|
2976
|
+
]
|
|
2977
|
+
},
|
|
2978
|
+
{
|
|
2979
|
+
name: "Thunder",
|
|
2980
|
+
slug: "thunder",
|
|
2981
|
+
src: "M9 3h5L12 8 18 8 8.5 22l3.5-10h-6l2-9z",
|
|
2982
|
+
tags: [
|
|
2983
|
+
"weather",
|
|
2984
|
+
"storm",
|
|
2985
|
+
"lightning",
|
|
2986
|
+
"thunder"
|
|
2987
|
+
]
|
|
2988
|
+
},
|
|
2989
|
+
{
|
|
2990
|
+
name: "Star",
|
|
2991
|
+
slug: "star",
|
|
2992
|
+
src: "M11.48 3.499a.562.562 0 011.04 0l2.125 5.111a.563.563 0 00.475.345l5.518.442c.563.045.797.77.364 1.154l-4.22 3.737a.563.563 0 00-.172.527l1.283 5.376c.15.628-.548 1.13-1.066.77l-4.654-3.192a.563.563 0 00-.636 0l-4.654 3.192c-.518.36-1.216-.142-1.066-.77l1.283-5.376a.563.563 0 00-.172-.527l-4.22-3.737c-.433-.384-.199-1.11.364-1.154l5.518-.442a.563.563 0 00.475-.345L11.48 3.5z",
|
|
2993
|
+
tags: [
|
|
2994
|
+
"favorite",
|
|
2995
|
+
"rating",
|
|
2996
|
+
"like",
|
|
2997
|
+
"star"
|
|
2998
|
+
]
|
|
2999
|
+
},
|
|
3000
|
+
{
|
|
3001
|
+
name: "Heart",
|
|
3002
|
+
slug: "heart",
|
|
3003
|
+
src: "M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12z",
|
|
3004
|
+
tags: [
|
|
3005
|
+
"like",
|
|
3006
|
+
"love",
|
|
3007
|
+
"favorite",
|
|
3008
|
+
"heart"
|
|
3009
|
+
]
|
|
3010
|
+
},
|
|
3011
|
+
{
|
|
3012
|
+
name: "Hand Thumb Up",
|
|
3013
|
+
slug: "hand-thumb-up",
|
|
3014
|
+
src: "M7.5 11.25h-3v8.25h3m0-8.25v-5.25a2.25 2.25 0 0 1 4.5 0v3.75h3.75a2.25 2.25 0 0 1 2.25 2.25v5.25a2.25 2.25 0 0 1-2.25 2.25h-8.25",
|
|
3015
|
+
tags: [
|
|
3016
|
+
"like",
|
|
3017
|
+
"approve",
|
|
3018
|
+
"good",
|
|
3019
|
+
"hand-thumb-up"
|
|
3020
|
+
]
|
|
3021
|
+
},
|
|
3022
|
+
{
|
|
3023
|
+
name: "Hand Thumb Down",
|
|
3024
|
+
slug: "hand-thumb-down",
|
|
3025
|
+
src: "M7.5 12.75h-3v-8.25h3m0 8.25v5.25a2.25 2.25 0 0 0 4.5 0v-3.75h3.75a2.25 2.25 0 0 0 2.25-2.25v-5.25a2.25 2.25 0 0 0-2.25-2.25h-8.25",
|
|
3026
|
+
tags: [
|
|
3027
|
+
"dislike",
|
|
3028
|
+
"reject",
|
|
3029
|
+
"bad",
|
|
3030
|
+
"hand-thumb-down"
|
|
3031
|
+
]
|
|
3032
|
+
},
|
|
3033
|
+
{
|
|
3034
|
+
name: "Flag",
|
|
3035
|
+
slug: "flag",
|
|
3036
|
+
src: "M3 3v1.5M3 21v-6m0 0l2.77-.693a9 9 0 016.208.682l.108.054a9 9 0 006.086.71l3.114-.732a48.524 48.524 0 01-.005-10.499l-3.11.732a9 9 0 01-6.085-.711l-.108-.054a9 9 0 00-6.208-.682L3 4.5M3 15V4.5",
|
|
3037
|
+
tags: [
|
|
3038
|
+
"report",
|
|
3039
|
+
"country",
|
|
3040
|
+
"goal",
|
|
3041
|
+
"flag"
|
|
3042
|
+
]
|
|
3043
|
+
},
|
|
3044
|
+
{
|
|
3045
|
+
name: "Bookmark",
|
|
3046
|
+
slug: "bookmark",
|
|
3047
|
+
src: "M17.593 3.322c1.1.128 1.907 1.077 1.907 2.185V21L12 17.25 4.5 21V5.507c0-1.108.806-2.057 1.907-2.185a48.507 48.507 0 0111.186 0z",
|
|
3048
|
+
tags: [
|
|
3049
|
+
"save",
|
|
3050
|
+
"favorite",
|
|
3051
|
+
"tag",
|
|
3052
|
+
"bookmark"
|
|
3053
|
+
]
|
|
3054
|
+
},
|
|
3055
|
+
{
|
|
3056
|
+
name: "Map",
|
|
3057
|
+
slug: "map",
|
|
3058
|
+
src: "M3 7.5v13.5l6-3 6 3 6-3V4.5l-6 3-6-3-6 3Z M9 4.5v13.5 M15 7.5v13.5",
|
|
3059
|
+
tags: [
|
|
3060
|
+
"location",
|
|
3061
|
+
"travel",
|
|
3062
|
+
"guide",
|
|
3063
|
+
"map"
|
|
3064
|
+
]
|
|
3065
|
+
},
|
|
3066
|
+
{
|
|
3067
|
+
name: "Map Pin",
|
|
3068
|
+
slug: "map-pin",
|
|
3069
|
+
src: "M15 10.5a3 3 0 11-6 0 3 3 0 016 0zM19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1115 0z",
|
|
3070
|
+
tags: [
|
|
3071
|
+
"location",
|
|
3072
|
+
"marker",
|
|
3073
|
+
"spot",
|
|
3074
|
+
"map-pin"
|
|
3075
|
+
]
|
|
3076
|
+
},
|
|
3077
|
+
{
|
|
3078
|
+
name: "Globe Alt",
|
|
3079
|
+
slug: "globe-alt",
|
|
3080
|
+
src: "M12 21a9.004 9.004 0 008.716-6.747M12 21a9.004 9.004 0 01-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 017.843 4.582M12 3a8.997 8.997 0 00-7.843 4.582m15.686 0A11.953 11.953 0 0112 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0121 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0112 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 013 12c0-1.605.42-3.113 1.157-4.418",
|
|
3081
|
+
tags: [
|
|
3082
|
+
"world",
|
|
3083
|
+
"internet",
|
|
3084
|
+
"web",
|
|
3085
|
+
"globe-alt"
|
|
3086
|
+
]
|
|
3087
|
+
},
|
|
3088
|
+
{
|
|
3089
|
+
name: "Truck",
|
|
3090
|
+
slug: "truck",
|
|
3091
|
+
src: "M8.25 18.75a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m3 0h6m-9 0H3.375a1.125 1.125 0 01-1.125-1.125V14.25m17.25 4.5a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m3 0h1.125c.621 0 1.129-.504 1.09-1.124a17.902 17.902 0 00-3.213-9.193 2.056 2.056 0 00-1.58-.86H14.25M16.5 18.75h-2.25m0-11.177v-.958c0-.568-.422-1.048-.987-1.106a48.554 48.554 0 00-10.026 0 1.106 1.106 0 00-.987 1.106v7.635m12-6.677v6.677m0 4.5v-4.5m0 0h-12",
|
|
3092
|
+
tags: [
|
|
3093
|
+
"delivery",
|
|
3094
|
+
"shipping",
|
|
3095
|
+
"transport",
|
|
3096
|
+
"truck"
|
|
3097
|
+
]
|
|
3098
|
+
},
|
|
3099
|
+
{
|
|
3100
|
+
name: "Cake",
|
|
3101
|
+
slug: "cake",
|
|
3102
|
+
src: "M12 8.25v-1.5m0 1.5c-1.355 0-2.697.056-4.024.166C6.845 8.51 6 9.473 6 10.608v2.513m6-4.871c1.355 0 2.697.056 4.024.166C17.155 8.51 18 9.473 18 10.608v2.513M15 8.25v-1.5m-6 1.5v-1.5m12 9.75l-1.5.75a3.354 3.354 0 01-3 0 3.354 3.354 0 00-3 0 3.354 3.354 0 01-3 0 3.354 3.354 0 00-3 0 3.354 3.354 0 01-3 0L3 16.5m15-3.379a48.474 48.474 0 00-6-.371c-2.032 0-4.034.126-6 .371m12 0c.39.049.777.102 1.163.16 1.07.163 1.837 1.09 1.837 2.175v5.169c0 .621-.504 1.125-1.125 1.125H4.125A1.125 1.125 0 013 20.625v-5.169c0-1.085.768-2.012 1.837-2.175a48.041 48.041 0 011.163-.16",
|
|
3103
|
+
tags: [
|
|
3104
|
+
"birthday",
|
|
3105
|
+
"celebrate",
|
|
3106
|
+
"party",
|
|
3107
|
+
"cake"
|
|
3108
|
+
]
|
|
3109
|
+
},
|
|
3110
|
+
{
|
|
3111
|
+
name: "Gift",
|
|
3112
|
+
slug: "gift",
|
|
3113
|
+
src: "M21 11.25v8.25a1.5 1.5 0 01-1.5 1.5H4.5a1.5 1.5 0 01-1.5-1.5v-8.25M12 4.875A2.625 2.625 0 109.375 7.5H12m0-2.625V7.5m0-2.625A2.625 2.625 0 1114.625 7.5H12m0 0V21m-8.625-9.75h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z",
|
|
3114
|
+
tags: [
|
|
3115
|
+
"present",
|
|
3116
|
+
"reward",
|
|
3117
|
+
"bonus",
|
|
3118
|
+
"gift"
|
|
3119
|
+
]
|
|
3120
|
+
},
|
|
3121
|
+
{
|
|
3122
|
+
name: "Trophy",
|
|
3123
|
+
slug: "trophy",
|
|
3124
|
+
src: "M6 9c-1.5 0-3-1.5-3-3V5h3M18 9c1.5 0 3-1.5 3-3V5h-3M6 9V5h12v4c0 3.3-2.7 6-6 6s-6-2.7-6-6zM12 15v3M9 21h6M10 18h4",
|
|
3125
|
+
tags: [
|
|
3126
|
+
"award",
|
|
3127
|
+
"winner",
|
|
3128
|
+
"achievement",
|
|
3129
|
+
"trophy"
|
|
3130
|
+
]
|
|
3131
|
+
},
|
|
3132
|
+
{
|
|
3133
|
+
name: "Medal",
|
|
3134
|
+
slug: "medal",
|
|
3135
|
+
src: "M7.21 15 2.66 7.14a2 2 0 0 1 .13-2.2L4.4 2.8A2 2 0 0 1 6 2h12a2 2 0 0 1 1.6.8l1.6 2.14a2 2 0 0 1 .14 2.2L16.79 15M11 12 5.12 2.2M13 12l5.88-9.8M8 7h8M12 22a5 5 0 100-10 5 5 0 000 10zM12 18v-2h-.5",
|
|
3136
|
+
tags: [
|
|
3137
|
+
"award",
|
|
3138
|
+
"achievement",
|
|
3139
|
+
"winner",
|
|
3140
|
+
"medal"
|
|
3141
|
+
]
|
|
3142
|
+
},
|
|
3143
|
+
{
|
|
3144
|
+
name: "Qr Code",
|
|
3145
|
+
slug: "qr-code",
|
|
3146
|
+
src: "M4 3h3a1 1 0 011 1v3a1 1 0 01-1 1h-3a1 1 0 01-1-1v-3a1 1 0 011-1zM17 3h3a1 1 0 011 1v3a1 1 0 01-1 1h-3a1 1 0 01-1-1v-3a1 1 0 011-1zM4 16h3a1 1 0 011 1v3a1 1 0 01-1 1h-3a1 1 0 01-1-1v-3a1 1 0 011-1zM20 16h-2a2 2 0 00-2 2v2M12 8v2a2 2 0 01-2 2H8M4 12h0M12 4h0M16 12h5M12 21v-5",
|
|
3147
|
+
tags: [
|
|
3148
|
+
"scan",
|
|
3149
|
+
"code",
|
|
3150
|
+
"link",
|
|
3151
|
+
"qr-code"
|
|
3152
|
+
]
|
|
3153
|
+
},
|
|
3154
|
+
{
|
|
3155
|
+
name: "Wifi",
|
|
3156
|
+
slug: "wifi",
|
|
3157
|
+
src: "M 8.25 13.5 a 3.75 3.75 0 0 1 5.25 0 m -8.25 -3 a 7.5 7.5 0 0 1 11.25 0 m -14.25 -3 a 11.25 11.25 0 0 1 17.25 0 M 11 16.5 a 1.125 1.125 0 1 0 0 2.25 a 1.125 1.125 0 0 0 0 -2.25 z",
|
|
3158
|
+
tags: [
|
|
3159
|
+
"internet",
|
|
3160
|
+
"connection",
|
|
3161
|
+
"network",
|
|
3162
|
+
"wifi"
|
|
3163
|
+
]
|
|
3164
|
+
},
|
|
3165
|
+
{
|
|
3166
|
+
name: "Vr",
|
|
3167
|
+
slug: "vr",
|
|
3168
|
+
src: "M5 7h14a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2h-4l-2.29-2.29a1 1 0 0 0-1.42 0L9 17H5a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2zm2.5 3.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zm9 0a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3z",
|
|
3169
|
+
tags: [
|
|
3170
|
+
"virtual reality",
|
|
3171
|
+
"glasses",
|
|
3172
|
+
"game",
|
|
3173
|
+
"vr"
|
|
3174
|
+
]
|
|
3175
|
+
},
|
|
3176
|
+
{
|
|
3177
|
+
name: "AR",
|
|
3178
|
+
slug: "ar",
|
|
3179
|
+
src: "m21 7.5-2.25-1.313M21 7.5v2.25m0-2.25-2.25 1.313M3 7.5l2.25-1.313M3 7.5l2.25 1.313M3 7.5v2.25m9 3 2.25-1.313M12 12.75l-2.25-1.313M12 12.75V15m0 6.75 2.25-1.313M12 21.75V19.5m0 2.25-2.25-1.313m0-16.875L12 2.25l2.25 1.313M21 14.25v2.25l-2.25 1.313m-13.5 0L3 16.5v-2.25",
|
|
3180
|
+
tags: [
|
|
3181
|
+
"augmented reality",
|
|
3182
|
+
"3d",
|
|
3183
|
+
"ar",
|
|
3184
|
+
"cube"
|
|
3185
|
+
]
|
|
3186
|
+
},
|
|
3187
|
+
{
|
|
3188
|
+
name: "Group Object",
|
|
3189
|
+
slug: "group-object",
|
|
3190
|
+
src: "M3 7V5c0-1.1.9-2 2-2h2M17 3h2c1.1 0 2 .9 2 2v2M21 17v2c0 1.1-.9 2-2 2h-2M7 21H5c-1.1 0-2-.9-2-2v-2M8 7h5a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1ZM11 12h5a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1Z",
|
|
3191
|
+
tags: [
|
|
3192
|
+
"combine",
|
|
3193
|
+
"merge",
|
|
3194
|
+
"group-object"
|
|
3195
|
+
]
|
|
3196
|
+
},
|
|
3197
|
+
{
|
|
3198
|
+
name: "Ungroup Object",
|
|
3199
|
+
slug: "ungroup-object",
|
|
3200
|
+
src: "M6 4h6a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1ZM12 14h6a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-6a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1Z",
|
|
3201
|
+
tags: [
|
|
3202
|
+
"separate",
|
|
3203
|
+
"split",
|
|
3204
|
+
"ungroup-object"
|
|
3205
|
+
]
|
|
3206
|
+
},
|
|
3207
|
+
{
|
|
3208
|
+
name: "Align Left Object",
|
|
3209
|
+
slug: "align-left-object",
|
|
3210
|
+
src: "M7 4h6a1 1 0 011 1v4a1 1 0 01-1 1H7a1 1 0 01-1-1V5a1 1 0 011-1ZM12 14h6a1 1 0 011 1v4a1 1 0 01-1 1h-11a1 1 0 01-1-1v-4a1 1 0 011-1ZM3 21 3 3",
|
|
3211
|
+
tags: [
|
|
3212
|
+
"align",
|
|
3213
|
+
"left",
|
|
3214
|
+
"object"
|
|
3215
|
+
]
|
|
3216
|
+
},
|
|
3217
|
+
{
|
|
3218
|
+
name: "Align Center Object",
|
|
3219
|
+
slug: "align-center-object",
|
|
3220
|
+
src: "M12 4h3a1 1 0 011 1v4a1 1 0 01-1 1H9a1 1 0 01-1-1V5a1 1 0 011-1ZM12 14h6a1 1 0 011 1v4a1 1 0 01-1 1h-12a1 1 0 01-1-1v-4a1 1 0 011-1ZM12 21 12 3",
|
|
3221
|
+
tags: [
|
|
3222
|
+
"align",
|
|
3223
|
+
"center",
|
|
3224
|
+
"object"
|
|
3225
|
+
]
|
|
3226
|
+
},
|
|
3227
|
+
{
|
|
3228
|
+
name: "Align Right Object",
|
|
3229
|
+
slug: "align-right-object",
|
|
3230
|
+
src: "M13 4h4a1 1 0 011 1v4a1 1 0 01-1 1H11a1 1 0 01-1-1V5a1 1 0 011-1ZM12 14h5a1 1 0 011 1v4a1 1 0 01-1 1h-11a1 1 0 01-1-1v-4a1 1 0 011-1ZM21 21 21 3",
|
|
3231
|
+
tags: [
|
|
3232
|
+
"align",
|
|
3233
|
+
"right",
|
|
3234
|
+
"object"
|
|
3235
|
+
]
|
|
3236
|
+
},
|
|
3237
|
+
{
|
|
3238
|
+
name: "Align Top Object",
|
|
3239
|
+
slug: "align-top-object",
|
|
3240
|
+
src: "M12 15h3a1 1 0 011 1v3a1 1 0 01-1 1H9a1 1 0 01-1-1V16a1 1 0 011-1ZM12 7h6a1 1 0 011 1v3a1 1 0 01-1 1h-12a1 1 0 01-1-1v-3a1 1 0 011-1ZM21 4 3 4",
|
|
3241
|
+
tags: [
|
|
3242
|
+
"align",
|
|
3243
|
+
"top",
|
|
3244
|
+
"object"
|
|
3245
|
+
]
|
|
3246
|
+
},
|
|
3247
|
+
{
|
|
3248
|
+
name: "Align Middle Object",
|
|
3249
|
+
slug: "align-middle-object",
|
|
3250
|
+
src: "M12 4h6a1 1 0 011 1v3a1 1 0 01-1 1H6a1 1 0 01-1-1V5a1 1 0 011-1ZM12 15h6a1 1 0 011 1v3a1 1 0 01-1 1h-12a1 1 0 01-1-1v-3a1 1 0 011-1ZM21 12 3 12",
|
|
3251
|
+
tags: [
|
|
3252
|
+
"align",
|
|
3253
|
+
"middle",
|
|
3254
|
+
"object"
|
|
3255
|
+
]
|
|
3256
|
+
},
|
|
3257
|
+
{
|
|
3258
|
+
name: "Align Bottom Object",
|
|
3259
|
+
slug: "align-bottom-object",
|
|
3260
|
+
src: "M12 4h3a1 1 0 011 1v3a1 1 0 01-1 1H9a1 1 0 01-1-1V5a1 1 0 011-1ZM12 12h6a1 1 0 011 1v3a1 1 0 01-1 1h-12a1 1 0 01-1-1v-3a1 1 0 011-1ZM21 20 3 20",
|
|
3261
|
+
tags: [
|
|
3262
|
+
"align",
|
|
3263
|
+
"bottom",
|
|
3264
|
+
"object"
|
|
3265
|
+
]
|
|
3266
|
+
},
|
|
3267
|
+
{
|
|
3268
|
+
name: "Carousel",
|
|
3269
|
+
slug: "carousel",
|
|
3270
|
+
src: "M3 6v12M21 6v12M8 5h8a2 2 0 012 2v10a2 2 0 01-2 2H8a2 2 0 01-2-2V7a2 2 0 012-2Z",
|
|
3271
|
+
tags: [
|
|
3272
|
+
"senangwebs",
|
|
3273
|
+
"carousel",
|
|
3274
|
+
"sw-frame"
|
|
3275
|
+
]
|
|
3276
|
+
},
|
|
3277
|
+
{
|
|
3278
|
+
name: "Reel",
|
|
3279
|
+
slug: "reel",
|
|
3280
|
+
src: "M6 3h12M6 21h12M19 8v8a2 2 0 01-2 2H7a2 2 0 01-2-2V8a2 2 0 012-2h10a2 2 0 012 2Z",
|
|
3281
|
+
tags: [
|
|
3282
|
+
"video",
|
|
3283
|
+
"movie",
|
|
3284
|
+
"film",
|
|
3285
|
+
"reel",
|
|
3286
|
+
"senangwebs",
|
|
3287
|
+
"sw-reel"
|
|
3288
|
+
]
|
|
3289
|
+
},
|
|
3290
|
+
{
|
|
3291
|
+
name: "Grid",
|
|
3292
|
+
slug: "grid",
|
|
3293
|
+
src: "M9 3v18M15 3v18M3 9h18M3 15h18M3 21h18M3 3h18M3 3v18M21 3v18",
|
|
3294
|
+
tags: [
|
|
3295
|
+
"layout",
|
|
3296
|
+
"view",
|
|
3297
|
+
"grid"
|
|
3298
|
+
]
|
|
3299
|
+
},
|
|
3300
|
+
{
|
|
3301
|
+
name: "Tic Tac Toe",
|
|
3302
|
+
slug: "tic-tac-toe",
|
|
3303
|
+
src: "M9 3v18 M15 3v18 M3 9h18 M3 15h18",
|
|
3304
|
+
tags: [
|
|
3305
|
+
"layout",
|
|
3306
|
+
"view",
|
|
3307
|
+
"tic-tac-toe"
|
|
3308
|
+
]
|
|
3309
|
+
},
|
|
3310
|
+
{
|
|
3311
|
+
name: "Robot",
|
|
3312
|
+
slug: "robot",
|
|
3313
|
+
src: "M6 6h12a2.25 2.25 0 0 1 2.25 2.25v7.5A2.25 2.25 0 0 1 18 18H6a2.25 2.25 0 0 1-2.25-2.25v-7.5A2.25 2.25 0 0 1 6 6zM12 3v3M9 3h6M8.25 12a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5zM15.75 12a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5zM9 15h6M7.5 18v3M16.5 18v3",
|
|
3314
|
+
tags: [
|
|
3315
|
+
"bot",
|
|
3316
|
+
"ai",
|
|
3317
|
+
"automation",
|
|
3318
|
+
"robot"
|
|
3319
|
+
]
|
|
3320
|
+
},
|
|
3321
|
+
{
|
|
3322
|
+
name: "Chatbot",
|
|
3323
|
+
slug: "chatbot",
|
|
3324
|
+
src: "M6 6h12a2.25 2.25 0 012.25 2.25v7.5A2.25 2.25 0 0118 18h-6l-4 3 0-3H6a2.25 2.25 0 01-2.25-2.25v-7.5A2.25 2.25 0 016 6zM12 3v3M9 3h6M8.25 12a.75.75 0 110-1.5.75.75 0 010 1.5zM15.75 12a.75.75 0 110-1.5.75.75 0 010 1.5zM9 15h6",
|
|
3325
|
+
tags: [
|
|
3326
|
+
"bot",
|
|
3327
|
+
"ai",
|
|
3328
|
+
"support",
|
|
3329
|
+
"chatbot",
|
|
3330
|
+
"senangwebs",
|
|
3331
|
+
"sw-chatbot"
|
|
3332
|
+
]
|
|
3333
|
+
},
|
|
3334
|
+
{
|
|
3335
|
+
name: "Arrow Left Arrow Right",
|
|
3336
|
+
slug: "arrow-left-arrow-right",
|
|
3337
|
+
src: "M7.5 21 3 16.5m0 0 4.5-4.5M3 16.5h13.5m0-13.5L21 7.5m0 0-4.5 4.5M21 7.5H7.5",
|
|
3338
|
+
tags: [
|
|
3339
|
+
"swap",
|
|
3340
|
+
"exchange",
|
|
3341
|
+
"switch",
|
|
3342
|
+
"arrow-left-arrow-right"
|
|
3343
|
+
]
|
|
3344
|
+
},
|
|
3345
|
+
{
|
|
3346
|
+
name: "Arrow Up Arrow Down",
|
|
3347
|
+
slug: "arrow-up-arrow-down",
|
|
3348
|
+
src: "M3 7.5 7.5 3m0 0L12 7.5M7.5 3v13.5m13.5 0L16.5 21m0 0L12 16.5m4.5 4.5V7.5",
|
|
3349
|
+
tags: [
|
|
3350
|
+
"sort",
|
|
3351
|
+
"swap",
|
|
3352
|
+
"switch",
|
|
3353
|
+
"arrow-up-arrow-down"
|
|
3354
|
+
]
|
|
3355
|
+
},
|
|
3356
|
+
{
|
|
3357
|
+
name: "Arrow Left Right",
|
|
3358
|
+
slug: "arrow-left-right",
|
|
3359
|
+
src: "M 3 12 h 18 M 7 16 L 3 12 l 4 -4 M 17 8 L 21 12 l -4 4",
|
|
3360
|
+
tags: [
|
|
3361
|
+
"swap",
|
|
3362
|
+
"horizontal",
|
|
3363
|
+
"arrow-left-right"
|
|
3364
|
+
]
|
|
3365
|
+
},
|
|
3366
|
+
{
|
|
3367
|
+
name: "Arrow Up Down",
|
|
3368
|
+
slug: "arrow-up-down",
|
|
3369
|
+
src: "M 12 3 v 18 M 8 7 L 12 3 l 4 4 M 16 17 L 12 21 l -4 -4",
|
|
3370
|
+
tags: [
|
|
3371
|
+
"swap",
|
|
3372
|
+
"vertical",
|
|
3373
|
+
"arrow-up-down"
|
|
3374
|
+
]
|
|
3375
|
+
},
|
|
3376
|
+
{
|
|
3377
|
+
name: "Arrow Up Down Left Right",
|
|
3378
|
+
slug: "arrow-up-down-left-right",
|
|
3379
|
+
src: "M 3 12 h 18 M 12 3 v 18 M 6 15 L 3 12 l 3 -3 M 18 9 L 21 12 l -3 3 M 9 6 L 12 3 l 3 3 M 15 18 L 12 21 l -3 -3",
|
|
3380
|
+
tags: [
|
|
3381
|
+
"move",
|
|
3382
|
+
"all directions",
|
|
3383
|
+
"arrow-up-down-left-right"
|
|
3384
|
+
]
|
|
3385
|
+
},
|
|
3386
|
+
{
|
|
3387
|
+
name: "Maximize",
|
|
3388
|
+
slug: "maximize",
|
|
3389
|
+
src: "M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15",
|
|
3390
|
+
tags: [
|
|
3391
|
+
"expand",
|
|
3392
|
+
"fullscreen",
|
|
3393
|
+
"maximize"
|
|
3394
|
+
]
|
|
3395
|
+
},
|
|
3396
|
+
{
|
|
3397
|
+
name: "Minimize",
|
|
3398
|
+
slug: "minimize",
|
|
3399
|
+
src: "M4.5 9h4.5v-4.5m0 4.5L3.75 3.75M19.5 9h-4.5v-4.5m0 4.5L20.25 3.75M19.5 15h-4.5v4.5m0-4.5L20.25 20.25M4.5 15h4.5v4.5m0-4.5L3.75 20.25",
|
|
3400
|
+
tags: [
|
|
3401
|
+
"collapse",
|
|
3402
|
+
"small",
|
|
3403
|
+
"minimize"
|
|
3404
|
+
]
|
|
3405
|
+
},
|
|
3406
|
+
{
|
|
3407
|
+
name: "Layout",
|
|
3408
|
+
slug: "layout",
|
|
3409
|
+
src: "M3 5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5Z M3 9h18 M12 9v12",
|
|
3410
|
+
tags: [
|
|
3411
|
+
"dashboard",
|
|
3412
|
+
"ui",
|
|
3413
|
+
"grid",
|
|
3414
|
+
"layout"
|
|
3415
|
+
]
|
|
3416
|
+
},
|
|
3417
|
+
{
|
|
3418
|
+
name: "Focus",
|
|
3419
|
+
slug: "focus",
|
|
3420
|
+
src: "M3 7V5c0-1.1.9-2 2-2h2M17 3h2c1.1 0 2 .9 2 2v2M21 17v2c0 1.1-.9 2-2 2h-2M7 21H5c-1.1 0-2-.9-2-2v-2M5 3 7 3Z",
|
|
3421
|
+
tags: [
|
|
3422
|
+
"focus",
|
|
3423
|
+
"lock in",
|
|
3424
|
+
"scan",
|
|
3425
|
+
"fullscreen"
|
|
3426
|
+
]
|
|
3427
|
+
},
|
|
3428
|
+
{
|
|
3429
|
+
name: "Hourglass 0",
|
|
3430
|
+
slug: "hourglass-0",
|
|
3431
|
+
src: "M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zM9 6l6 0-3 3z",
|
|
3432
|
+
tags: [
|
|
3433
|
+
"time",
|
|
3434
|
+
"wait",
|
|
3435
|
+
"loading",
|
|
3436
|
+
"hourglass-0"
|
|
3437
|
+
]
|
|
3438
|
+
},
|
|
3439
|
+
{
|
|
3440
|
+
name: "Hourglass 50",
|
|
3441
|
+
slug: "hourglass-50",
|
|
3442
|
+
src: "M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zM10 7l4 0-2 2zM9 18l3-1L15 18l0 1L9 19z",
|
|
3443
|
+
tags: [
|
|
3444
|
+
"time",
|
|
3445
|
+
"wait",
|
|
3446
|
+
"loading",
|
|
3447
|
+
"hourglass-50"
|
|
3448
|
+
]
|
|
3449
|
+
},
|
|
3450
|
+
{
|
|
3451
|
+
name: "Hourglass 80",
|
|
3452
|
+
slug: "hourglass-80",
|
|
3453
|
+
src: "M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zM11 8l2 0-1 1zM9 17l3-1L15 17l0 2L9 19z",
|
|
3454
|
+
tags: [
|
|
3455
|
+
"time",
|
|
3456
|
+
"wait",
|
|
3457
|
+
"loading",
|
|
3458
|
+
"hourglass-80"
|
|
3459
|
+
]
|
|
3460
|
+
},
|
|
3461
|
+
{
|
|
3462
|
+
name: "Hourglass 100",
|
|
3463
|
+
slug: "hourglass-100",
|
|
3464
|
+
src: "M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zM9 17l3-1L15 17l0 2L9 19z",
|
|
3465
|
+
tags: [
|
|
3466
|
+
"time",
|
|
3467
|
+
"wait",
|
|
3468
|
+
"loading",
|
|
3469
|
+
"hourglass-100"
|
|
3470
|
+
]
|
|
3471
|
+
},
|
|
3472
|
+
{
|
|
3473
|
+
name: "Clock",
|
|
3474
|
+
slug: "clock",
|
|
3475
|
+
src: "M12 6V12L16 12M21 12A9 9 0 113 12 9 9 0 0121 12Z",
|
|
3476
|
+
tags: [
|
|
3477
|
+
"time",
|
|
3478
|
+
"watch",
|
|
3479
|
+
"schedule",
|
|
3480
|
+
"clock",
|
|
3481
|
+
"senangwebs",
|
|
3482
|
+
"time",
|
|
3483
|
+
"sw-epoch"
|
|
3484
|
+
]
|
|
3485
|
+
},
|
|
3486
|
+
{
|
|
3487
|
+
name: "Time Reset",
|
|
3488
|
+
slug: "time-reset",
|
|
3489
|
+
src: "M3.75 12a8.25 8.25 0 108.25-8.25c-2.3 0-4.5 1-6 2.5L3.75 8.5m0-4.5v4.5h4.5M12 7v5l3 0",
|
|
3490
|
+
tags: [
|
|
3491
|
+
"undo",
|
|
3492
|
+
"history",
|
|
3493
|
+
"restore",
|
|
3494
|
+
"time-reset"
|
|
3495
|
+
]
|
|
3496
|
+
},
|
|
3497
|
+
{
|
|
3498
|
+
name: "Layer Stacks",
|
|
3499
|
+
slug: "layer-stacks",
|
|
3500
|
+
src: "M3.75 9L12 13.5 20.25 9 12 4.5 3.75 9zm0 4.5l8.25 4.5 8.25-4.5M3.75 18l8.25 4.5 8.25-4.5",
|
|
3501
|
+
tags: [
|
|
3502
|
+
"layers",
|
|
3503
|
+
"stack",
|
|
3504
|
+
"group",
|
|
3505
|
+
"layer-stacks"
|
|
3506
|
+
]
|
|
3507
|
+
},
|
|
3508
|
+
{
|
|
3509
|
+
name: "Cube",
|
|
3510
|
+
slug: "cube",
|
|
3511
|
+
src: "M21 7.5l-9-5.25L3 7.5m18 0l-9 5.25m9-5.25v9l-9 5.25M3 7.5l9 5.25M3 7.5v9l9 5.25m0-9v9",
|
|
3512
|
+
tags: [
|
|
3513
|
+
"3d",
|
|
3514
|
+
"block",
|
|
3515
|
+
"shape",
|
|
3516
|
+
"cube",
|
|
3517
|
+
"senangwebs",
|
|
3518
|
+
"model",
|
|
3519
|
+
"sw-kiln"
|
|
3520
|
+
]
|
|
3521
|
+
},
|
|
3522
|
+
{
|
|
3523
|
+
name: "Sphere",
|
|
3524
|
+
slug: "sphere",
|
|
3525
|
+
src: "M21 12a9 9 0 11-18 0 9 9 0 0118 0z M3 12c0 2.5 4.5 4.5 9 4.5s9-2 9-4.5 M12 3c2.5 0 4.5 4.5 4.5 9s-2 9-4.5 9",
|
|
3526
|
+
tags: [
|
|
3527
|
+
"shape",
|
|
3528
|
+
"round",
|
|
3529
|
+
"3d",
|
|
3530
|
+
"sphere"
|
|
3531
|
+
]
|
|
3532
|
+
},
|
|
3533
|
+
{
|
|
3534
|
+
name: "Cylinder",
|
|
3535
|
+
slug: "cylinder",
|
|
3536
|
+
src: "M21 6.5c0 1.933-4.03 3.5-9 3.5s-9-1.567-9-3.5S7.03 3 12 3s9 1.567 9 3.5z M21 6.5v11c0 1.933-4.03 3.5-9 3.5s-9-1.567-9-3.5v-11",
|
|
3537
|
+
tags: [
|
|
3538
|
+
"shape",
|
|
3539
|
+
"round",
|
|
3540
|
+
"3d",
|
|
3541
|
+
"cylinder"
|
|
3542
|
+
]
|
|
3543
|
+
},
|
|
3544
|
+
{
|
|
3545
|
+
name: "Tube",
|
|
3546
|
+
slug: "tube",
|
|
3547
|
+
src: "M21 6.5c0 1.933-4.03 3.5-9 3.5s-9-1.567-9-3.5S7 3 12 3s9 1.567 9 3.5zM21 6.5v11c0 1.933-4.03 3.5-9 3.5s-9-1.567-9-3.5v-11M17 6.5c0 .7-2 1.5-5 1.5s-5-.8-5-1.5S9 5 12 5s5 .8 5 1.5zM17 20.4 17 9.5",
|
|
3548
|
+
tags: [
|
|
3549
|
+
"shape",
|
|
3550
|
+
"round",
|
|
3551
|
+
"3d",
|
|
3552
|
+
"tube"
|
|
3553
|
+
]
|
|
3554
|
+
},
|
|
3555
|
+
{
|
|
3556
|
+
name: "Cone",
|
|
3557
|
+
slug: "cone",
|
|
3558
|
+
src: "M21 19c0 1-3 3-9 3s-9-2-9-3c0-1 3-3 9-3s9 2 9 3zM3 19 12 3l9 16",
|
|
3559
|
+
tags: [
|
|
3560
|
+
"shape",
|
|
3561
|
+
"triangle",
|
|
3562
|
+
"3d",
|
|
3563
|
+
"cone"
|
|
3564
|
+
]
|
|
3565
|
+
},
|
|
3566
|
+
{
|
|
3567
|
+
name: "Pyramid",
|
|
3568
|
+
slug: "pyramid",
|
|
3569
|
+
src: "M12 3l9.75 15-9.75 3-9.75-3L12 3z M12 3v18",
|
|
3570
|
+
tags: [
|
|
3571
|
+
"shape",
|
|
3572
|
+
"triangle",
|
|
3573
|
+
"3d",
|
|
3574
|
+
"pyramid"
|
|
3575
|
+
]
|
|
3576
|
+
},
|
|
3577
|
+
{
|
|
3578
|
+
name: "Polygon",
|
|
3579
|
+
slug: "polygon",
|
|
3580
|
+
src: "M8 3l8 0L22 7 16 11 8 11 2 7 8 3M22 7v10M2 7v10M16 11v10M8 11v10M2 17l6 4L16 21 22 17",
|
|
3581
|
+
tags: [
|
|
3582
|
+
"shape",
|
|
3583
|
+
"polygon",
|
|
3584
|
+
"3d",
|
|
3585
|
+
"polygon"
|
|
3586
|
+
]
|
|
3587
|
+
},
|
|
3588
|
+
{
|
|
3589
|
+
name: "Torus",
|
|
3590
|
+
slug: "torus",
|
|
3591
|
+
src: "M12 5c5 0 8.7 3 9 6s-1.5 8-9 8-9.3-5-9-8 4-6 9-6zM12 8c2.5 0 4.4 1.3 4.5 3s-2 3-4.5 3-4.6-1.3-4.5-3 2-3 4.5-3z",
|
|
3592
|
+
tags: [
|
|
3593
|
+
"shape",
|
|
3594
|
+
"donut",
|
|
3595
|
+
"3d",
|
|
3596
|
+
"torus",
|
|
3597
|
+
"ring"
|
|
3598
|
+
]
|
|
3599
|
+
},
|
|
3600
|
+
{
|
|
3601
|
+
name: "Plane",
|
|
3602
|
+
slug: "plane",
|
|
3603
|
+
src: "M2 12l10 5 10-5-10-5-10 5zM2 12",
|
|
3604
|
+
tags: [
|
|
3605
|
+
"shape",
|
|
3606
|
+
"flat",
|
|
3607
|
+
"3d",
|
|
3608
|
+
"plane",
|
|
3609
|
+
"surface",
|
|
3610
|
+
"floor"
|
|
3611
|
+
]
|
|
3612
|
+
},
|
|
3613
|
+
{
|
|
3614
|
+
name: "Wedge",
|
|
3615
|
+
slug: "wedge",
|
|
3616
|
+
src: "M3 21H17L3 7V21ZM3 7 17 21m0 0 4-5M3 7 8 3M8 3 21 16",
|
|
3617
|
+
tags: [
|
|
3618
|
+
"shape",
|
|
3619
|
+
"triangle",
|
|
3620
|
+
"3d",
|
|
3621
|
+
"wedge",
|
|
3622
|
+
"ramp"
|
|
3623
|
+
]
|
|
3624
|
+
},
|
|
3625
|
+
{
|
|
3626
|
+
name: "Roof",
|
|
3627
|
+
slug: "roof",
|
|
3628
|
+
src: "M10 7 3 19h14L10 7zM10 7 14 5 21 17 17 19",
|
|
3629
|
+
tags: [
|
|
3630
|
+
"shape",
|
|
3631
|
+
"prism",
|
|
3632
|
+
"3d",
|
|
3633
|
+
"roof",
|
|
3634
|
+
"house"
|
|
3635
|
+
]
|
|
3636
|
+
},
|
|
3637
|
+
{
|
|
3638
|
+
name: "Cylinder Half",
|
|
3639
|
+
slug: "cylinder-half",
|
|
3640
|
+
src: "M3 5a9 3 0 0 1 18 0H3zM3 5v14h18V5M3 19h18",
|
|
3641
|
+
tags: [
|
|
3642
|
+
"shape",
|
|
3643
|
+
"half",
|
|
3644
|
+
"3d",
|
|
3645
|
+
"cylinder-half",
|
|
3646
|
+
"cut"
|
|
3647
|
+
]
|
|
3648
|
+
},
|
|
3649
|
+
{
|
|
3650
|
+
name: "Sphere Half",
|
|
3651
|
+
slug: "sphere-half",
|
|
3652
|
+
src: "M3 14a9 9 0 0118 0v2c0 1-4 3-9 3s-9-2-9-3v-2zM12 13c-5 0-9 2-9 3S7 19 12 19s9-2 9-3-4-3-9-3",
|
|
3653
|
+
tags: [
|
|
3654
|
+
"shape",
|
|
3655
|
+
"hemisphere",
|
|
3656
|
+
"3d",
|
|
3657
|
+
"sphere-half",
|
|
3658
|
+
"dome"
|
|
3659
|
+
]
|
|
3660
|
+
},
|
|
3661
|
+
{
|
|
3662
|
+
name: "Heart Extruded",
|
|
3663
|
+
slug: "heart-extruded",
|
|
3664
|
+
src: "M12 5c-1-1.5-2.5-2-4-2C5.5 3 4 4.5 4 7c0 2 1.5 4 8 9 6.5-5 8-7 8-9 0-2.5-1.5-4-4-4-1.5 0-3 .5-4 2zM4 7v5c0 2 1.5 4 8 9v-5M20 7v5c0 2-1.5 4-8 9",
|
|
3665
|
+
tags: [
|
|
3666
|
+
"shape",
|
|
3667
|
+
"love",
|
|
3668
|
+
"3d",
|
|
3669
|
+
"heart-extruded",
|
|
3670
|
+
"valentine"
|
|
3671
|
+
]
|
|
3672
|
+
},
|
|
3673
|
+
{
|
|
3674
|
+
name: "Torus Knot",
|
|
3675
|
+
slug: "torus-knot",
|
|
3676
|
+
src: "M20.8 12.0 L20.7 13.2 L20.3 14.4 L19.7 15.4 L18.9 16.4 L18.0 17.1 L17.0 17.6 L15.9 17.9 L14.8 18.1 L13.8 18.0 L12.9 17.8 L12.1 17.6 L11.3 17.2 L10.7 16.8 L10.1 16.5 L9.7 16.1 L9.2 15.8 L8.7 15.6 L8.3 15.3 L7.7 15.1 L7.2 14.8 L6.5 14.4 L5.9 14.0 L5.2 13.5 L4.6 12.8 L4.0 12.0 L3.5 11.1 L3.2 10.0 L3.1 8.9 L3.2 7.7 L3.5 6.6 L4.1 5.5 L4.8 4.5 L5.8 3.7 L6.8 3.2 L8.0 2.8 L9.2 2.7 L10.4 2.9 L11.6 3.2 L12.6 3.8 L13.4 4.5 L14.1 5.3 L14.7 6.2 L15.0 7.1 L15.2 8.0 L15.3 8.9 L15.3 9.6 L15.3 10.3 L15.3 10.9 L15.2 11.5 L15.2 12.0 L15.2 12.5 L15.3 13.1 L15.3 13.7 L15.3 14.4 L15.3 15.1 L15.2 16.0 L15.0 16.9 L14.7 17.8 L14.1 18.7 L13.4 19.5 L12.6 20.2 L11.6 20.8 L10.4 21.1 L9.2 21.3 L8.0 21.2 L6.8 20.8 L5.8 20.3 L4.8 19.5 L4.1 18.5 L3.5 17.4 L3.2 16.3 L3.1 15.1 L3.2 14.0 L3.5 12.9 L4.0 12.0 L4.6 11.2 L5.2 10.5 L5.9 10.0 L6.5 9.6 L7.2 9.2 L7.7 8.9 L8.3 8.7 L8.7 8.4 L9.2 8.2 L9.7 7.9 L10.1 7.5 L10.7 7.2 L11.3 6.8 L12.1 6.4 L12.9 6.2 L13.8 6.0 L14.8 5.9 L15.9 6.1 L17.0 6.4 L18.0 6.9 L18.9 7.6 L19.7 8.6 L20.3 9.6 L20.7 10.8 L20.8 12.0Z",
|
|
3677
|
+
tags: [
|
|
3678
|
+
"shape",
|
|
3679
|
+
"knot",
|
|
3680
|
+
"3d",
|
|
3681
|
+
"torus-knot",
|
|
3682
|
+
"twisted"
|
|
3683
|
+
]
|
|
3684
|
+
},
|
|
3685
|
+
{
|
|
3686
|
+
name: "Tetrahedron",
|
|
3687
|
+
slug: "tetrahedron",
|
|
3688
|
+
src: "M12 3l9 18H3L12 3zM12 3v12M12 15l-9 6M12 15l9 6",
|
|
3689
|
+
tags: [
|
|
3690
|
+
"shape",
|
|
3691
|
+
"pyramid",
|
|
3692
|
+
"3d",
|
|
3693
|
+
"tetrahedron",
|
|
3694
|
+
"platonic"
|
|
3695
|
+
]
|
|
3696
|
+
},
|
|
3697
|
+
{
|
|
3698
|
+
name: "Octahedron",
|
|
3699
|
+
slug: "octahedron",
|
|
3700
|
+
src: "M12 2 L22 12 L12 22 L2 12 Z M12 2 L12 14 L22 12 M12 22 L12 14 L2 12",
|
|
3701
|
+
tags: [
|
|
3702
|
+
"shape",
|
|
3703
|
+
"diamond",
|
|
3704
|
+
"3d",
|
|
3705
|
+
"octahedron",
|
|
3706
|
+
"platonic"
|
|
3707
|
+
]
|
|
3708
|
+
},
|
|
3709
|
+
{
|
|
3710
|
+
name: "Icosahedron",
|
|
3711
|
+
slug: "icosahedron",
|
|
3712
|
+
src: "M12 2L21 7L21 17L12 22L3 17L3 7L12 2Z M12 22V15 M12 15L7 9L17 9L12 15Z M12 2L7 9 M12 2L17 9 M21 7L17 9 M21 17L17 9 M21 17L12 15 M3 17L12 15 M3 17L7 9 M3 7L7 9",
|
|
3713
|
+
tags: [
|
|
3714
|
+
"shape",
|
|
3715
|
+
"poly",
|
|
3716
|
+
"3d",
|
|
3717
|
+
"icosahedron",
|
|
3718
|
+
"platonic"
|
|
3719
|
+
]
|
|
3720
|
+
},
|
|
3721
|
+
{
|
|
3722
|
+
name: "Dodecahedron",
|
|
3723
|
+
slug: "dodecahedron",
|
|
3724
|
+
src: "M12 3 18 6 21 11 20 17 18 21H6L4 17 3 11 6 6zM12 3v6M12 9l-6 5M12 9l6 5M6 14l2 7M18 14l-2 7M18 14 21 11M6 14 3 11",
|
|
3725
|
+
tags: [
|
|
3726
|
+
"shape",
|
|
3727
|
+
"pentagon",
|
|
3728
|
+
"3d",
|
|
3729
|
+
"dodecahedron",
|
|
3730
|
+
"platonic"
|
|
3731
|
+
]
|
|
3732
|
+
},
|
|
3733
|
+
{
|
|
3734
|
+
name: "Sparkles",
|
|
3735
|
+
slug: "sparkles",
|
|
3736
|
+
src: "M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09zM18.259 8.715L18 9.75l-.259-1.035a3.375 3.375 0 00-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 002.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 002.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 00-2.456 2.456zM16.894 20.567L16.5 21.75l-.394-1.183a2.25 2.25 0 00-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 001.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 001.423 1.423l1.183.394-1.183.394a2.25 2.25 0 00-1.423 1.423z",
|
|
3737
|
+
tags: [
|
|
3738
|
+
"ai",
|
|
3739
|
+
"magic",
|
|
3740
|
+
"new",
|
|
3741
|
+
"sparkles",
|
|
3742
|
+
"senangwebs",
|
|
3743
|
+
"motion",
|
|
3744
|
+
"sw-animations"
|
|
3745
|
+
]
|
|
3746
|
+
},
|
|
3747
|
+
{
|
|
3748
|
+
name: "Magic Wand",
|
|
3749
|
+
slug: "magic-wand",
|
|
3750
|
+
src: "m21.64 3.64-1.28-1.28a1.21 1.21 0 00-1.72 0L2.36 18.64a1.21 1.21 0 000 1.72l1.28 1.28a1.2 1.2 0 001.72 0L21.64 5.36a1.2 1.2 0 000-1.72M10.5 10.5l3 3M5 6v4M19 15v4M10 3v2M7 8H3M21 17h-4M11 4H9",
|
|
3751
|
+
tags: [
|
|
3752
|
+
"magic",
|
|
3753
|
+
"wizard",
|
|
3754
|
+
"spell",
|
|
3755
|
+
"magic-wand"
|
|
3756
|
+
]
|
|
3757
|
+
},
|
|
3758
|
+
{
|
|
3759
|
+
name: "Contrast",
|
|
3760
|
+
slug: "contrast",
|
|
3761
|
+
src: "M12 2.25a9.75 9.75 0 010 19.5m0-19.5a9.75 9.75 0 000 19.5m0-19.5v19.5M8.7 2.827V21.211M5.5 4.736V19.263",
|
|
3762
|
+
tags: [
|
|
3763
|
+
"display",
|
|
3764
|
+
"accessibility",
|
|
3765
|
+
"contrast"
|
|
3766
|
+
]
|
|
3767
|
+
},
|
|
3768
|
+
{
|
|
3769
|
+
name: "Cursor",
|
|
3770
|
+
slug: "cursor",
|
|
3771
|
+
src: "M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z",
|
|
3772
|
+
tags: [
|
|
3773
|
+
"pointer",
|
|
3774
|
+
"mouse",
|
|
3775
|
+
"click",
|
|
3776
|
+
"cursor"
|
|
3777
|
+
]
|
|
3778
|
+
},
|
|
3779
|
+
{
|
|
3780
|
+
name: "Square",
|
|
3781
|
+
slug: "square",
|
|
3782
|
+
src: "M4 4h16v16H4z",
|
|
3783
|
+
tags: [
|
|
3784
|
+
"shape",
|
|
3785
|
+
"box",
|
|
3786
|
+
"square"
|
|
3787
|
+
]
|
|
3788
|
+
},
|
|
3789
|
+
{
|
|
3790
|
+
name: "Rectangle",
|
|
3791
|
+
slug: "rectangle",
|
|
3792
|
+
src: "M3 5h18v14H3z",
|
|
3793
|
+
tags: [
|
|
3794
|
+
"shape",
|
|
3795
|
+
"box",
|
|
3796
|
+
"rectangle"
|
|
3797
|
+
]
|
|
3798
|
+
},
|
|
3799
|
+
{
|
|
3800
|
+
name: "Circle",
|
|
3801
|
+
slug: "circle",
|
|
3802
|
+
src: "M21 12a9 9 0 11-18 0 9 9 0 0118 0z",
|
|
3803
|
+
tags: [
|
|
3804
|
+
"shape",
|
|
3805
|
+
"round",
|
|
3806
|
+
"circle"
|
|
3807
|
+
]
|
|
3808
|
+
},
|
|
3809
|
+
{
|
|
3810
|
+
name: "Diamond",
|
|
3811
|
+
slug: "diamond",
|
|
3812
|
+
src: "M12 3l9 9-9 9-9-9 9-9z",
|
|
3813
|
+
tags: [
|
|
3814
|
+
"shape",
|
|
3815
|
+
"rhombus",
|
|
3816
|
+
"diamond"
|
|
3817
|
+
]
|
|
3818
|
+
},
|
|
3819
|
+
{
|
|
3820
|
+
name: "Hexagon",
|
|
3821
|
+
slug: "hexagon",
|
|
3822
|
+
src: "M12 2l7 4v8l-7 4-7-4V6l7-4z",
|
|
3823
|
+
tags: [
|
|
3824
|
+
"shape",
|
|
3825
|
+
"polygon",
|
|
3826
|
+
"hexagon"
|
|
3827
|
+
]
|
|
3828
|
+
},
|
|
3829
|
+
{
|
|
3830
|
+
name: "Draw Line",
|
|
3831
|
+
slug: "draw-line",
|
|
3832
|
+
src: "M3 21 21 3",
|
|
3833
|
+
tags: [
|
|
3834
|
+
"edit",
|
|
3835
|
+
"write",
|
|
3836
|
+
"draw",
|
|
3837
|
+
"line",
|
|
3838
|
+
"draw-line"
|
|
3839
|
+
]
|
|
3840
|
+
},
|
|
3841
|
+
{
|
|
3842
|
+
name: "Draw Curve",
|
|
3843
|
+
slug: "draw-curve",
|
|
3844
|
+
src: "M3 21C6 4 18 20 21 3",
|
|
3845
|
+
tags: [
|
|
3846
|
+
"draw",
|
|
3847
|
+
"curve",
|
|
3848
|
+
"line",
|
|
3849
|
+
"s-curve"
|
|
3850
|
+
]
|
|
3851
|
+
},
|
|
3852
|
+
{
|
|
3853
|
+
name: "Pencil",
|
|
3854
|
+
slug: "pencil",
|
|
3855
|
+
src: "M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L6.832 19.82a4.5 4.5 0 01-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 011.13-1.897L16.863 4.487zm0 0L19.5 7.125",
|
|
3856
|
+
tags: [
|
|
3857
|
+
"edit",
|
|
3858
|
+
"write",
|
|
3859
|
+
"draw",
|
|
3860
|
+
"pencil"
|
|
3861
|
+
]
|
|
3862
|
+
},
|
|
3863
|
+
{
|
|
3864
|
+
name: "Eraser",
|
|
3865
|
+
slug: "eraser",
|
|
3866
|
+
src: "M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21M5.082 11.09l8.828 8.828",
|
|
3867
|
+
tags: [
|
|
3868
|
+
"delete",
|
|
3869
|
+
"remove",
|
|
3870
|
+
"clear",
|
|
3871
|
+
"eraser"
|
|
3872
|
+
]
|
|
3873
|
+
},
|
|
3874
|
+
{
|
|
3875
|
+
name: "Scissor",
|
|
3876
|
+
slug: "scissor",
|
|
3877
|
+
src: "M6 3A3 3 0 116 9 3 3 0 116 3M8.12 8.12 19 19M19 5 8.12 15.88M6 15A3 3 0 116 21 3 3 0 116 15M10 14 10 10",
|
|
3878
|
+
tags: [
|
|
3879
|
+
"cut",
|
|
3880
|
+
"tool",
|
|
3881
|
+
"scissor",
|
|
3882
|
+
"senangwebs",
|
|
3883
|
+
"sw-photobooth"
|
|
3884
|
+
]
|
|
3885
|
+
},
|
|
3886
|
+
{
|
|
3887
|
+
name: "Font",
|
|
3888
|
+
slug: "font",
|
|
3889
|
+
src: "M4 20.3h4M6 20.25l6-16.5 6 16.5M8 15h8M16 20.3h4",
|
|
3890
|
+
tags: [
|
|
3891
|
+
"text",
|
|
3892
|
+
"typography",
|
|
3893
|
+
"letter",
|
|
3894
|
+
"font"
|
|
3895
|
+
]
|
|
3896
|
+
},
|
|
3897
|
+
{
|
|
3898
|
+
name: "Text",
|
|
3899
|
+
slug: "text",
|
|
3900
|
+
src: "M12 20.25V3.8M5.2 5.5 5.2 3.8h13.6L18.8 5.5M10 20.3h4",
|
|
3901
|
+
tags: [
|
|
3902
|
+
"text",
|
|
3903
|
+
"typography",
|
|
3904
|
+
"letter",
|
|
3905
|
+
"type"
|
|
3906
|
+
]
|
|
3907
|
+
},
|
|
3908
|
+
{
|
|
3909
|
+
name: "Text Align Center",
|
|
3910
|
+
slug: "text-align-center",
|
|
3911
|
+
src: "M3.75 5h16.5M5.625 9h12.75M3.75 13h16.5M5.625 17h12.75",
|
|
3912
|
+
tags: [
|
|
3913
|
+
"format",
|
|
3914
|
+
"paragraph",
|
|
3915
|
+
"text-align-center"
|
|
3916
|
+
]
|
|
3917
|
+
},
|
|
3918
|
+
{
|
|
3919
|
+
name: "Text Align Left",
|
|
3920
|
+
slug: "text-align-left",
|
|
3921
|
+
src: "M3.75 5h16.5M3.75 9h12.75M3.75 13h16.5M3.75 17h12.75",
|
|
3922
|
+
tags: [
|
|
3923
|
+
"format",
|
|
3924
|
+
"paragraph",
|
|
3925
|
+
"text-align-left"
|
|
3926
|
+
]
|
|
3927
|
+
},
|
|
3928
|
+
{
|
|
3929
|
+
name: "Text Align Right",
|
|
3930
|
+
slug: "text-align-right",
|
|
3931
|
+
src: "M3.75 5h16.5M7.5 9h12.75M3.75 13h16.5M7.5 17h12.75",
|
|
3932
|
+
tags: [
|
|
3933
|
+
"format",
|
|
3934
|
+
"paragraph",
|
|
3935
|
+
"text-align-right"
|
|
3936
|
+
]
|
|
3937
|
+
},
|
|
3938
|
+
{
|
|
3939
|
+
name: "Text Align Justify",
|
|
3940
|
+
slug: "text-align-justify",
|
|
3941
|
+
src: "M3.75 5h16.5M3.75 9h16.5M3.75 13h16.5M3.75 17h16.5",
|
|
3942
|
+
tags: [
|
|
3943
|
+
"format",
|
|
3944
|
+
"paragraph",
|
|
3945
|
+
"text-align-justify"
|
|
3946
|
+
]
|
|
3947
|
+
},
|
|
3948
|
+
{
|
|
3949
|
+
name: "Sliders Horizontal",
|
|
3950
|
+
slug: "sliders-horizontal",
|
|
3951
|
+
src: "M6 13.5V3.75m0 9.75a1.5 1.5 0 0 1 0 3m0-3a1.5 1.5 0 0 0 0 3m0 3.75V16.5m12-3V3.75m0 9.75a1.5 1.5 0 0 1 0 3m0-3a1.5 1.5 0 0 0 0 3m0 3.75V16.5m-6-9V3.75m0 3.75a1.5 1.5 0 0 1 0 3m0-3a1.5 1.5 0 0 0 0 3m0 9.75V10.5",
|
|
3952
|
+
tags: [
|
|
3953
|
+
"settings",
|
|
3954
|
+
"filters",
|
|
3955
|
+
"adjust",
|
|
3956
|
+
"sliders-horizontal"
|
|
3957
|
+
]
|
|
3958
|
+
},
|
|
3959
|
+
{
|
|
3960
|
+
name: "Sliders Vertical",
|
|
3961
|
+
slug: "sliders-vertical",
|
|
3962
|
+
src: "M13.5 6H3.75m9.75 0a1.5 1.5 0 0 1 3 0m-3 0a1.5 1.5 0 0 0 3 0m3.75 0H16.5m-3 12H3.75m9.75 0a1.5 1.5 0 0 1 3 0m-3 0a1.5 1.5 0 0 0 3 0m3.75 0H16.5m-9-6H3.75m3.75 0a1.5 1.5 0 0 1 3 0m-3 0a1.5 1.5 0 0 0 3 0m9.75 0H10.5",
|
|
3963
|
+
tags: [
|
|
3964
|
+
"settings",
|
|
3965
|
+
"filters",
|
|
3966
|
+
"adjust",
|
|
3967
|
+
"sliders-vertical"
|
|
3968
|
+
]
|
|
3969
|
+
}
|
|
3970
|
+
];
|
|
3971
|
+
|
|
1394
3972
|
// UI Controller - Handles DOM manipulation and rendering
|
|
1395
3973
|
|
|
3974
|
+
|
|
1396
3975
|
let UIController$1 = class UIController {
|
|
1397
3976
|
constructor(editor) {
|
|
1398
3977
|
this.editor = editor;
|
|
@@ -1582,9 +4161,18 @@
|
|
|
1582
4161
|
const item = document.createElement("div");
|
|
1583
4162
|
item.className = "hotspot-item" + (isActive ? " active" : "");
|
|
1584
4163
|
|
|
1585
|
-
const
|
|
1586
|
-
|
|
1587
|
-
|
|
4164
|
+
const colorIndicator = document.createElement("div");
|
|
4165
|
+
colorIndicator.className = "hotspot-color";
|
|
4166
|
+
colorIndicator.style.backgroundColor = hotspot.color;
|
|
4167
|
+
|
|
4168
|
+
// If hotspot has an icon, show it with the color applied
|
|
4169
|
+
if (hotspot.icon) {
|
|
4170
|
+
colorIndicator.innerHTML = `<ss-icon icon="${hotspot.icon}" thickness="2.2" style="color: ${hotspot.color}; width: 20px; height: 20px;"></ss-icon>`;
|
|
4171
|
+
colorIndicator.style.backgroundColor = "transparent";
|
|
4172
|
+
colorIndicator.style.display = "flex";
|
|
4173
|
+
colorIndicator.style.alignItems = "center";
|
|
4174
|
+
colorIndicator.style.justifyContent = "center";
|
|
4175
|
+
}
|
|
1588
4176
|
|
|
1589
4177
|
const info = document.createElement("div");
|
|
1590
4178
|
info.className = "hotspot-info";
|
|
@@ -1623,7 +4211,7 @@
|
|
|
1623
4211
|
|
|
1624
4212
|
actions.appendChild(deleteBtn);
|
|
1625
4213
|
|
|
1626
|
-
item.appendChild(
|
|
4214
|
+
item.appendChild(colorIndicator);
|
|
1627
4215
|
item.appendChild(info);
|
|
1628
4216
|
item.appendChild(actions);
|
|
1629
4217
|
|
|
@@ -1634,6 +4222,58 @@
|
|
|
1634
4222
|
return item;
|
|
1635
4223
|
}
|
|
1636
4224
|
|
|
4225
|
+
/**
|
|
4226
|
+
* Set active state on icon grid button
|
|
4227
|
+
*/
|
|
4228
|
+
setActiveIconButton(iconName) {
|
|
4229
|
+
const grid = document.getElementById("hotspotIconGrid");
|
|
4230
|
+
if (!grid) return;
|
|
4231
|
+
|
|
4232
|
+
// Remove active from all buttons
|
|
4233
|
+
grid.querySelectorAll(".icon-btn").forEach(btn => {
|
|
4234
|
+
btn.classList.remove("active");
|
|
4235
|
+
});
|
|
4236
|
+
|
|
4237
|
+
// Find and activate the matching button
|
|
4238
|
+
const activeBtn = grid.querySelector(`.icon-btn[data-icon="${iconName}"]`);
|
|
4239
|
+
if (activeBtn) {
|
|
4240
|
+
activeBtn.classList.add("active");
|
|
4241
|
+
}
|
|
4242
|
+
}
|
|
4243
|
+
|
|
4244
|
+
/**
|
|
4245
|
+
* Populate icon grid from SenangStart icons (baked in at build time)
|
|
4246
|
+
*/
|
|
4247
|
+
populateIconGrid() {
|
|
4248
|
+
const grid = document.getElementById("hotspotIconGrid");
|
|
4249
|
+
if (!grid) return;
|
|
4250
|
+
|
|
4251
|
+
// Clear existing content
|
|
4252
|
+
grid.innerHTML = "";
|
|
4253
|
+
|
|
4254
|
+
// Add "No icon" button first
|
|
4255
|
+
const noIconBtn = document.createElement("button");
|
|
4256
|
+
noIconBtn.type = "button";
|
|
4257
|
+
noIconBtn.className = "icon-btn active";
|
|
4258
|
+
noIconBtn.dataset.icon = "";
|
|
4259
|
+
noIconBtn.title = "No icon";
|
|
4260
|
+
noIconBtn.innerHTML = '<ss-icon icon="x-mark" thickness="1.5" style="opacity: 0.5;"></ss-icon>';
|
|
4261
|
+
grid.appendChild(noIconBtn);
|
|
4262
|
+
|
|
4263
|
+
// Add buttons for each icon from imported JSON
|
|
4264
|
+
iconsData.forEach(icon => {
|
|
4265
|
+
const btn = document.createElement("button");
|
|
4266
|
+
btn.type = "button";
|
|
4267
|
+
btn.className = "icon-btn";
|
|
4268
|
+
btn.dataset.icon = icon.slug;
|
|
4269
|
+
btn.title = icon.name;
|
|
4270
|
+
btn.innerHTML = `<ss-icon icon="${icon.slug}" thickness="2.2"></ss-icon>`;
|
|
4271
|
+
grid.appendChild(btn);
|
|
4272
|
+
});
|
|
4273
|
+
|
|
4274
|
+
console.log(`Loaded ${iconsData.length} icons`);
|
|
4275
|
+
}
|
|
4276
|
+
|
|
1637
4277
|
/**
|
|
1638
4278
|
* Update properties panel for hotspot
|
|
1639
4279
|
*/
|
|
@@ -1653,6 +4293,8 @@
|
|
|
1653
4293
|
document.getElementById("hotspotColor").value = "#00ff00";
|
|
1654
4294
|
const colorText = document.getElementById("hotspotColorText");
|
|
1655
4295
|
if (colorText) colorText.value = "#00ff00";
|
|
4296
|
+
// Reset icon grid to "no icon" button
|
|
4297
|
+
this.setActiveIconButton("");
|
|
1656
4298
|
document.getElementById("hotspotPosX").value = "";
|
|
1657
4299
|
document.getElementById("hotspotPosY").value = "";
|
|
1658
4300
|
document.getElementById("hotspotPosZ").value = "";
|
|
@@ -1676,6 +4318,9 @@
|
|
|
1676
4318
|
colorText.value = hotspot.color || "#00ff00";
|
|
1677
4319
|
}
|
|
1678
4320
|
|
|
4321
|
+
// Update icon grid active button
|
|
4322
|
+
this.setActiveIconButton(hotspot.icon || "");
|
|
4323
|
+
|
|
1679
4324
|
// Update position inputs
|
|
1680
4325
|
const pos = hotspot.position || { x: 0, y: 0, z: 0 };
|
|
1681
4326
|
document.getElementById("hotspotPosX").value = pos.x;
|
|
@@ -1690,16 +4335,34 @@
|
|
|
1690
4335
|
* Update properties panel for scene
|
|
1691
4336
|
*/
|
|
1692
4337
|
updateSceneProperties(scene) {
|
|
4338
|
+
const startingPosDisplay = document.getElementById("startingPositionDisplay");
|
|
4339
|
+
|
|
1693
4340
|
if (!scene) {
|
|
1694
4341
|
document.getElementById("sceneId").value = "";
|
|
1695
4342
|
document.getElementById("sceneName").value = "";
|
|
1696
4343
|
document.getElementById("sceneImageUrl").value = "";
|
|
4344
|
+
if (startingPosDisplay) {
|
|
4345
|
+
startingPosDisplay.textContent = "Not set (camera keeps current position)";
|
|
4346
|
+
}
|
|
1697
4347
|
return;
|
|
1698
4348
|
}
|
|
1699
4349
|
|
|
1700
4350
|
document.getElementById("sceneId").value = scene.id || "";
|
|
1701
4351
|
document.getElementById("sceneName").value = scene.name || "";
|
|
1702
4352
|
document.getElementById("sceneImageUrl").value = scene.imageUrl || "";
|
|
4353
|
+
|
|
4354
|
+
// Update starting position display
|
|
4355
|
+
if (startingPosDisplay) {
|
|
4356
|
+
if (scene.startingPosition) {
|
|
4357
|
+
const pitchDeg = (scene.startingPosition.pitch * 180 / Math.PI).toFixed(1);
|
|
4358
|
+
const yawDeg = (scene.startingPosition.yaw * 180 / Math.PI).toFixed(1);
|
|
4359
|
+
startingPosDisplay.textContent = `Pitch: ${pitchDeg}° | Yaw: ${yawDeg}°`;
|
|
4360
|
+
startingPosDisplay.style.color = "var(--accent-primary)";
|
|
4361
|
+
} else {
|
|
4362
|
+
startingPosDisplay.textContent = "Not set (camera keeps current position)";
|
|
4363
|
+
startingPosDisplay.style.color = "var(--text-muted)";
|
|
4364
|
+
}
|
|
4365
|
+
}
|
|
1703
4366
|
}
|
|
1704
4367
|
|
|
1705
4368
|
/**
|
|
@@ -1710,10 +4373,6 @@
|
|
|
1710
4373
|
document.getElementById("tourDescription").value = config.description || "";
|
|
1711
4374
|
document.getElementById("tourInitialScene").value =
|
|
1712
4375
|
config.initialSceneId || "";
|
|
1713
|
-
document.getElementById("tourAutoRotate").checked =
|
|
1714
|
-
config.autoRotate || false;
|
|
1715
|
-
document.getElementById("tourShowCompass").checked =
|
|
1716
|
-
config.showCompass || false;
|
|
1717
4376
|
|
|
1718
4377
|
// Also update project name in header if it exists
|
|
1719
4378
|
const projectName = document.getElementById("project-name");
|
|
@@ -1792,11 +4451,136 @@
|
|
|
1792
4451
|
}
|
|
1793
4452
|
};
|
|
1794
4453
|
|
|
4454
|
+
/**
|
|
4455
|
+
* IconRenderer - Converts SenangStart icon names to image data URLs for A-Frame
|
|
4456
|
+
*/
|
|
4457
|
+
class IconRenderer {
|
|
4458
|
+
constructor() {
|
|
4459
|
+
this.iconCache = new Map();
|
|
4460
|
+
this.renderContainer = null;
|
|
4461
|
+
}
|
|
4462
|
+
|
|
4463
|
+
/**
|
|
4464
|
+
* Initialize the hidden render container
|
|
4465
|
+
*/
|
|
4466
|
+
init() {
|
|
4467
|
+
if (this.renderContainer) return;
|
|
4468
|
+
|
|
4469
|
+
this.renderContainer = document.createElement('div');
|
|
4470
|
+
this.renderContainer.id = 'swt-icon-renderer';
|
|
4471
|
+
this.renderContainer.style.cssText = `
|
|
4472
|
+
position: absolute;
|
|
4473
|
+
left: -9999px;
|
|
4474
|
+
top: -9999px;
|
|
4475
|
+
width: 128px;
|
|
4476
|
+
height: 128px;
|
|
4477
|
+
pointer-events: none;
|
|
4478
|
+
visibility: hidden;
|
|
4479
|
+
`;
|
|
4480
|
+
document.body.appendChild(this.renderContainer);
|
|
4481
|
+
}
|
|
4482
|
+
|
|
4483
|
+
/**
|
|
4484
|
+
* Generate an image data URL from a SenangStart icon
|
|
4485
|
+
* @param {string} iconName - SenangStart icon name (e.g., 'arrow-right')
|
|
4486
|
+
* @param {string} color - Hex color for the icon
|
|
4487
|
+
* @param {number} size - Size in pixels (default 128)
|
|
4488
|
+
* @returns {Promise<string>} - Data URL of the icon image
|
|
4489
|
+
*/
|
|
4490
|
+
async generateIconDataUrl(iconName, color = '#ffffff', size = 128) {
|
|
4491
|
+
const cacheKey = `${iconName}-${color}-${size}`;
|
|
4492
|
+
|
|
4493
|
+
if (this.iconCache.has(cacheKey)) {
|
|
4494
|
+
return this.iconCache.get(cacheKey);
|
|
4495
|
+
}
|
|
4496
|
+
|
|
4497
|
+
this.init();
|
|
4498
|
+
|
|
4499
|
+
return new Promise((resolve, reject) => {
|
|
4500
|
+
// Create the ss-icon element
|
|
4501
|
+
this.renderContainer.innerHTML = `
|
|
4502
|
+
<ss-icon
|
|
4503
|
+
icon="${iconName}"
|
|
4504
|
+
thickness="2.5"
|
|
4505
|
+
style="color: ${color}; width: ${size}px; height: ${size}px; display: block;"
|
|
4506
|
+
></ss-icon>
|
|
4507
|
+
`;
|
|
4508
|
+
|
|
4509
|
+
// Wait for the custom element to render
|
|
4510
|
+
setTimeout(() => {
|
|
4511
|
+
try {
|
|
4512
|
+
const ssIcon = this.renderContainer.querySelector('ss-icon');
|
|
4513
|
+
if (!ssIcon || !ssIcon.shadowRoot) {
|
|
4514
|
+
console.warn(`Icon ${iconName} not rendered properly`);
|
|
4515
|
+
resolve(null);
|
|
4516
|
+
return;
|
|
4517
|
+
}
|
|
4518
|
+
|
|
4519
|
+
// Get the SVG from shadow root
|
|
4520
|
+
const svg = ssIcon.shadowRoot.querySelector('svg');
|
|
4521
|
+
if (!svg) {
|
|
4522
|
+
console.warn(`SVG not found for icon ${iconName}`);
|
|
4523
|
+
resolve(null);
|
|
4524
|
+
return;
|
|
4525
|
+
}
|
|
4526
|
+
|
|
4527
|
+
// Clone and prepare SVG
|
|
4528
|
+
const svgClone = svg.cloneNode(true);
|
|
4529
|
+
svgClone.setAttribute('width', size);
|
|
4530
|
+
svgClone.setAttribute('height', size);
|
|
4531
|
+
svgClone.setAttribute('xmlns', 'http://www.w3.org/2000/svg');
|
|
4532
|
+
|
|
4533
|
+
// Apply the color to all paths/elements
|
|
4534
|
+
svgClone.querySelectorAll('path, circle, rect, line, polyline, polygon').forEach(el => {
|
|
4535
|
+
el.setAttribute('stroke', color);
|
|
4536
|
+
// Keep fill as currentColor if it's set
|
|
4537
|
+
const fill = el.getAttribute('fill');
|
|
4538
|
+
if (fill && fill !== 'none') {
|
|
4539
|
+
el.setAttribute('fill', color);
|
|
4540
|
+
}
|
|
4541
|
+
});
|
|
4542
|
+
|
|
4543
|
+
// Convert SVG to data URL
|
|
4544
|
+
const svgString = new XMLSerializer().serializeToString(svgClone);
|
|
4545
|
+
const dataUrl = 'data:image/svg+xml;base64,' + btoa(unescape(encodeURIComponent(svgString)));
|
|
4546
|
+
|
|
4547
|
+
// Cache the result
|
|
4548
|
+
this.iconCache.set(cacheKey, dataUrl);
|
|
4549
|
+
|
|
4550
|
+
resolve(dataUrl);
|
|
4551
|
+
} catch (error) {
|
|
4552
|
+
console.error('Error generating icon data URL:', error);
|
|
4553
|
+
resolve(null);
|
|
4554
|
+
}
|
|
4555
|
+
}, 100); // Wait for custom element to render
|
|
4556
|
+
});
|
|
4557
|
+
}
|
|
4558
|
+
|
|
4559
|
+
/**
|
|
4560
|
+
* Clear the icon cache
|
|
4561
|
+
*/
|
|
4562
|
+
clearCache() {
|
|
4563
|
+
this.iconCache.clear();
|
|
4564
|
+
}
|
|
4565
|
+
|
|
4566
|
+
/**
|
|
4567
|
+
* Destroy the renderer
|
|
4568
|
+
*/
|
|
4569
|
+
destroy() {
|
|
4570
|
+
if (this.renderContainer && this.renderContainer.parentNode) {
|
|
4571
|
+
this.renderContainer.parentNode.removeChild(this.renderContainer);
|
|
4572
|
+
}
|
|
4573
|
+
this.renderContainer = null;
|
|
4574
|
+
this.iconCache.clear();
|
|
4575
|
+
}
|
|
4576
|
+
}
|
|
4577
|
+
|
|
1795
4578
|
// Export Manager - Handles JSON generation for SWT library
|
|
1796
4579
|
|
|
1797
4580
|
let ExportManager$1 = class ExportManager {
|
|
1798
4581
|
constructor(editor) {
|
|
1799
4582
|
this.editor = editor;
|
|
4583
|
+
this.iconRenderer = new IconRenderer();
|
|
1800
4584
|
}
|
|
1801
4585
|
|
|
1802
4586
|
/**
|
|
@@ -1833,8 +4617,13 @@
|
|
|
1833
4617
|
// Add appearance
|
|
1834
4618
|
hotspotData.appearance = {
|
|
1835
4619
|
color: hotspot.color || "#FF6B6B",
|
|
1836
|
-
scale: "2 2 2",
|
|
4620
|
+
scale: hotspot.scale || "2 2 2",
|
|
1837
4621
|
};
|
|
4622
|
+
|
|
4623
|
+
// Add icon if set
|
|
4624
|
+
if (hotspot.icon) {
|
|
4625
|
+
hotspotData.appearance.icon = hotspot.icon;
|
|
4626
|
+
}
|
|
1838
4627
|
|
|
1839
4628
|
// Add tooltip if title exists
|
|
1840
4629
|
if (hotspot.title) {
|
|
@@ -1846,6 +4635,11 @@
|
|
|
1846
4635
|
return hotspotData;
|
|
1847
4636
|
}),
|
|
1848
4637
|
};
|
|
4638
|
+
|
|
4639
|
+
// Add starting position if set
|
|
4640
|
+
if (scene.startingPosition) {
|
|
4641
|
+
scenesData[scene.id].startingPosition = scene.startingPosition;
|
|
4642
|
+
}
|
|
1849
4643
|
});
|
|
1850
4644
|
|
|
1851
4645
|
// Determine initial scene
|
|
@@ -1863,6 +4657,41 @@
|
|
|
1863
4657
|
return jsonData;
|
|
1864
4658
|
}
|
|
1865
4659
|
|
|
4660
|
+
/**
|
|
4661
|
+
* Generate JSON with icons baked in as SVG data URLs
|
|
4662
|
+
* This ensures the exported HTML doesn't need the SenangStart icons library
|
|
4663
|
+
*/
|
|
4664
|
+
async generateJSONWithBakedIcons() {
|
|
4665
|
+
const jsonData = this.generateJSON();
|
|
4666
|
+
|
|
4667
|
+
// Process all scenes and convert icon names to data URLs
|
|
4668
|
+
for (const sceneId of Object.keys(jsonData.scenes)) {
|
|
4669
|
+
const scene = jsonData.scenes[sceneId];
|
|
4670
|
+
|
|
4671
|
+
for (let i = 0; i < scene.hotspots.length; i++) {
|
|
4672
|
+
const hotspot = scene.hotspots[i];
|
|
4673
|
+
const icon = hotspot.appearance?.icon;
|
|
4674
|
+
|
|
4675
|
+
// Skip if no icon or if it's already a data URL or URL
|
|
4676
|
+
if (!icon) continue;
|
|
4677
|
+
if (icon.startsWith('data:') || icon.startsWith('http') || icon.startsWith('/')) continue;
|
|
4678
|
+
|
|
4679
|
+
// Generate SVG data URL from icon name
|
|
4680
|
+
try {
|
|
4681
|
+
const color = hotspot.appearance?.color || '#ffffff';
|
|
4682
|
+
const dataUrl = await this.iconRenderer.generateIconDataUrl(icon, color, 128);
|
|
4683
|
+
if (dataUrl) {
|
|
4684
|
+
hotspot.appearance.icon = dataUrl;
|
|
4685
|
+
}
|
|
4686
|
+
} catch (err) {
|
|
4687
|
+
console.warn(`Failed to bake icon "${icon}" for export:`, err);
|
|
4688
|
+
}
|
|
4689
|
+
}
|
|
4690
|
+
}
|
|
4691
|
+
|
|
4692
|
+
return jsonData;
|
|
4693
|
+
}
|
|
4694
|
+
|
|
1866
4695
|
/**
|
|
1867
4696
|
* Export as JSON file
|
|
1868
4697
|
*/
|
|
@@ -1907,10 +4736,10 @@
|
|
|
1907
4736
|
}
|
|
1908
4737
|
|
|
1909
4738
|
/**
|
|
1910
|
-
* Generate HTML viewer code
|
|
4739
|
+
* Generate HTML viewer code with icons baked in
|
|
1911
4740
|
*/
|
|
1912
|
-
generateViewerHTML() {
|
|
1913
|
-
const jsonData = this.
|
|
4741
|
+
async generateViewerHTML() {
|
|
4742
|
+
const jsonData = await this.generateJSONWithBakedIcons();
|
|
1914
4743
|
const title = this.editor.config.title || "Virtual Tour";
|
|
1915
4744
|
|
|
1916
4745
|
return `<!DOCTYPE html>
|
|
@@ -1923,7 +4752,7 @@
|
|
|
1923
4752
|
</head>
|
|
1924
4753
|
<body>
|
|
1925
4754
|
<a-scene id="tour-container">
|
|
1926
|
-
<a-camera>
|
|
4755
|
+
<a-camera look-controls>
|
|
1927
4756
|
<a-cursor></a-cursor>
|
|
1928
4757
|
</a-camera>
|
|
1929
4758
|
</a-scene>
|
|
@@ -1947,11 +4776,11 @@
|
|
|
1947
4776
|
}
|
|
1948
4777
|
|
|
1949
4778
|
/**
|
|
1950
|
-
* Export as standalone HTML viewer
|
|
4779
|
+
* Export as standalone HTML viewer with icons baked in
|
|
1951
4780
|
*/
|
|
1952
|
-
exportViewerHTML() {
|
|
4781
|
+
async exportViewerHTML() {
|
|
1953
4782
|
try {
|
|
1954
|
-
const html = this.generateViewerHTML();
|
|
4783
|
+
const html = await this.generateViewerHTML();
|
|
1955
4784
|
const title = this.editor.config.title || "tour";
|
|
1956
4785
|
const filename = sanitizeId(title) + "-viewer.html";
|
|
1957
4786
|
|
|
@@ -1996,9 +4825,7 @@
|
|
|
1996
4825
|
this.config = {
|
|
1997
4826
|
title: options.projectName || 'My Virtual Tour',
|
|
1998
4827
|
description: '',
|
|
1999
|
-
initialSceneId: ''
|
|
2000
|
-
autoRotate: false,
|
|
2001
|
-
showCompass: false
|
|
4828
|
+
initialSceneId: ''
|
|
2002
4829
|
};
|
|
2003
4830
|
|
|
2004
4831
|
// Store initialization options
|
|
@@ -2040,13 +4867,16 @@
|
|
|
2040
4867
|
const previewInit = await this.previewController.init();
|
|
2041
4868
|
if (!previewInit) {
|
|
2042
4869
|
console.error('Failed to initialize preview controller');
|
|
2043
|
-
showToast('Failed to initialize preview', 'error');
|
|
4870
|
+
showToast$1('Failed to initialize preview', 'error');
|
|
2044
4871
|
return false;
|
|
2045
4872
|
}
|
|
2046
4873
|
|
|
2047
4874
|
// Setup event listeners
|
|
2048
4875
|
this.setupEventListeners();
|
|
2049
4876
|
|
|
4877
|
+
// Populate icon grid
|
|
4878
|
+
this.uiController.populateIconGrid();
|
|
4879
|
+
|
|
2050
4880
|
// Load saved project if exists (but only if it has valid data)
|
|
2051
4881
|
if (this.storageManager.hasProject()) {
|
|
2052
4882
|
try {
|
|
@@ -2076,7 +4906,7 @@
|
|
|
2076
4906
|
this.render();
|
|
2077
4907
|
}
|
|
2078
4908
|
|
|
2079
|
-
showToast('Editor ready', 'success');
|
|
4909
|
+
showToast$1('Editor ready', 'success');
|
|
2080
4910
|
|
|
2081
4911
|
return true;
|
|
2082
4912
|
}
|
|
@@ -2121,7 +4951,7 @@
|
|
|
2121
4951
|
});
|
|
2122
4952
|
|
|
2123
4953
|
document.getElementById('addHotspotBtn')?.addEventListener('click', () => {
|
|
2124
|
-
this.
|
|
4954
|
+
this.addHotspotAtCursor();
|
|
2125
4955
|
});
|
|
2126
4956
|
|
|
2127
4957
|
document.getElementById('clearHotspotsBtn')?.addEventListener('click', () => {
|
|
@@ -2153,6 +4983,19 @@
|
|
|
2153
4983
|
this.updateCurrentHotspot('color', e.target.value);
|
|
2154
4984
|
});
|
|
2155
4985
|
|
|
4986
|
+
// Icon grid button clicks
|
|
4987
|
+
document.getElementById('hotspotIconGrid')?.addEventListener('click', (e) => {
|
|
4988
|
+
const btn = e.target.closest('.icon-btn');
|
|
4989
|
+
if (btn) {
|
|
4990
|
+
const iconValue = btn.dataset.icon;
|
|
4991
|
+
// Update active state
|
|
4992
|
+
document.querySelectorAll('#hotspotIconGrid .icon-btn').forEach(b => b.classList.remove('active'));
|
|
4993
|
+
btn.classList.add('active');
|
|
4994
|
+
// Update hotspot
|
|
4995
|
+
this.updateCurrentHotspot('icon', iconValue);
|
|
4996
|
+
}
|
|
4997
|
+
});
|
|
4998
|
+
|
|
2156
4999
|
document.getElementById('hotspotPosX')?.addEventListener('input', debounce((e) => {
|
|
2157
5000
|
this.updateCurrentHotspotPosition('x', parseFloat(e.target.value) || 0);
|
|
2158
5001
|
}, 300));
|
|
@@ -2177,6 +5020,14 @@
|
|
|
2177
5020
|
this.updateCurrentSceneImage(e.target.value);
|
|
2178
5021
|
}, 300));
|
|
2179
5022
|
|
|
5023
|
+
document.getElementById('setStartingPosBtn')?.addEventListener('click', () => {
|
|
5024
|
+
this.setSceneStartingPosition();
|
|
5025
|
+
});
|
|
5026
|
+
|
|
5027
|
+
document.getElementById('clearStartingPosBtn')?.addEventListener('click', () => {
|
|
5028
|
+
this.clearSceneStartingPosition();
|
|
5029
|
+
});
|
|
5030
|
+
|
|
2180
5031
|
document.getElementById('tourTitle')?.addEventListener('input', debounce((e) => {
|
|
2181
5032
|
this.config.title = e.target.value;
|
|
2182
5033
|
this.markUnsavedChanges();
|
|
@@ -2204,16 +5055,6 @@
|
|
|
2204
5055
|
this.config.initialSceneId = e.target.value;
|
|
2205
5056
|
this.markUnsavedChanges();
|
|
2206
5057
|
});
|
|
2207
|
-
|
|
2208
|
-
document.getElementById('tourAutoRotate')?.addEventListener('change', (e) => {
|
|
2209
|
-
this.config.autoRotate = e.target.checked;
|
|
2210
|
-
this.markUnsavedChanges();
|
|
2211
|
-
});
|
|
2212
|
-
|
|
2213
|
-
document.getElementById('tourShowCompass')?.addEventListener('change', (e) => {
|
|
2214
|
-
this.config.showCompass = e.target.checked;
|
|
2215
|
-
this.markUnsavedChanges();
|
|
2216
|
-
});
|
|
2217
5058
|
|
|
2218
5059
|
document.getElementById('exportJsonBtn')?.addEventListener('click', () => {
|
|
2219
5060
|
this.exportManager.exportJSON();
|
|
@@ -2223,8 +5064,8 @@
|
|
|
2223
5064
|
this.exportManager.copyJSON();
|
|
2224
5065
|
});
|
|
2225
5066
|
|
|
2226
|
-
document.getElementById('exportViewerBtn')?.addEventListener('click', () => {
|
|
2227
|
-
this.exportManager.exportViewerHTML();
|
|
5067
|
+
document.getElementById('exportViewerBtn')?.addEventListener('click', async () => {
|
|
5068
|
+
await this.exportManager.exportViewerHTML();
|
|
2228
5069
|
});
|
|
2229
5070
|
|
|
2230
5071
|
document.querySelectorAll('.modal-close').forEach(btn => {
|
|
@@ -2267,7 +5108,7 @@
|
|
|
2267
5108
|
|
|
2268
5109
|
for (const file of files) {
|
|
2269
5110
|
if (!file.type.startsWith('image/')) {
|
|
2270
|
-
showToast(`${file.name} is not an image`, 'error');
|
|
5111
|
+
showToast$1(`${file.name} is not an image`, 'error');
|
|
2271
5112
|
continue;
|
|
2272
5113
|
}
|
|
2273
5114
|
|
|
@@ -2292,7 +5133,15 @@
|
|
|
2292
5133
|
position.y = parseFloat(position.y.toFixed(2));
|
|
2293
5134
|
position.z = parseFloat(position.z.toFixed(2));
|
|
2294
5135
|
}
|
|
2295
|
-
|
|
5136
|
+
|
|
5137
|
+
// Capture current camera orientation for reliable pointing later
|
|
5138
|
+
const cameraRotation = this.previewController.getCameraRotation();
|
|
5139
|
+
const cameraOrientation = cameraRotation ? {
|
|
5140
|
+
pitch: cameraRotation.x,
|
|
5141
|
+
yaw: cameraRotation.y
|
|
5142
|
+
} : null;
|
|
5143
|
+
|
|
5144
|
+
const hotspot = this.hotspotEditor.addHotspot(position, '', cameraOrientation);
|
|
2296
5145
|
if (hotspot) {
|
|
2297
5146
|
this.lastRenderedSceneIndex = -1;
|
|
2298
5147
|
this.render();
|
|
@@ -2302,6 +5151,26 @@
|
|
|
2302
5151
|
}
|
|
2303
5152
|
}
|
|
2304
5153
|
|
|
5154
|
+
/**
|
|
5155
|
+
* Add hotspot at current cursor position (center of view)
|
|
5156
|
+
* This uses the A-Cursor's raycaster intersection with the sky sphere
|
|
5157
|
+
*/
|
|
5158
|
+
addHotspotAtCursor() {
|
|
5159
|
+
const scene = this.sceneManager.getCurrentScene();
|
|
5160
|
+
if (!scene) {
|
|
5161
|
+
showToast$1('Please select a scene first', 'error');
|
|
5162
|
+
return;
|
|
5163
|
+
}
|
|
5164
|
+
|
|
5165
|
+
const position = this.previewController.getCursorIntersection();
|
|
5166
|
+
if (!position) {
|
|
5167
|
+
showToast$1('Could not get cursor position. Please ensure the preview is loaded.', 'error');
|
|
5168
|
+
return;
|
|
5169
|
+
}
|
|
5170
|
+
|
|
5171
|
+
this.addHotspotAtPosition(position);
|
|
5172
|
+
}
|
|
5173
|
+
|
|
2305
5174
|
/**
|
|
2306
5175
|
* Select scene by index
|
|
2307
5176
|
*/
|
|
@@ -2337,8 +5206,8 @@
|
|
|
2337
5206
|
this.uiController.updateTargetSceneOptions();
|
|
2338
5207
|
this.uiController.switchTab('hotspot');
|
|
2339
5208
|
|
|
2340
|
-
if (hotspot
|
|
2341
|
-
this.previewController.pointCameraToHotspot(hotspot
|
|
5209
|
+
if (hotspot) {
|
|
5210
|
+
this.previewController.pointCameraToHotspot(hotspot);
|
|
2342
5211
|
}
|
|
2343
5212
|
}
|
|
2344
5213
|
}
|
|
@@ -2412,6 +5281,10 @@
|
|
|
2412
5281
|
|
|
2413
5282
|
hotspot.position[axis] = value;
|
|
2414
5283
|
|
|
5284
|
+
// Clear camera orientation since position changed manually
|
|
5285
|
+
// Will fallback to position-based calculation when pointing camera
|
|
5286
|
+
hotspot.cameraOrientation = null;
|
|
5287
|
+
|
|
2415
5288
|
const pos = hotspot.position;
|
|
2416
5289
|
const distance = Math.sqrt(pos.x * pos.x + pos.y * pos.y + pos.z * pos.z);
|
|
2417
5290
|
if (distance > 10) {
|
|
@@ -2421,7 +5294,7 @@
|
|
|
2421
5294
|
pos.z *= scale;
|
|
2422
5295
|
|
|
2423
5296
|
document.getElementById(`hotspotPos${axis.toUpperCase()}`).value = pos[axis].toFixed(2);
|
|
2424
|
-
showToast('Position clamped to 10-unit radius', 'info');
|
|
5297
|
+
showToast$1('Position clamped to 10-unit radius', 'info');
|
|
2425
5298
|
}
|
|
2426
5299
|
|
|
2427
5300
|
await this.previewController.updateHotspotMarker(index);
|
|
@@ -2460,12 +5333,55 @@
|
|
|
2460
5333
|
if (scene) {
|
|
2461
5334
|
await this.previewController.loadScene(scene);
|
|
2462
5335
|
this.lastRenderedSceneIndex = index;
|
|
2463
|
-
showToast('Scene image updated', 'success');
|
|
5336
|
+
showToast$1('Scene image updated', 'success');
|
|
2464
5337
|
}
|
|
2465
5338
|
this.markUnsavedChanges();
|
|
2466
5339
|
}
|
|
2467
5340
|
}
|
|
2468
5341
|
|
|
5342
|
+
/**
|
|
5343
|
+
* Set scene starting position to current camera rotation
|
|
5344
|
+
*/
|
|
5345
|
+
setSceneStartingPosition() {
|
|
5346
|
+
const scene = this.sceneManager.getCurrentScene();
|
|
5347
|
+
if (!scene) {
|
|
5348
|
+
showToast$1('No scene selected', 'error');
|
|
5349
|
+
return;
|
|
5350
|
+
}
|
|
5351
|
+
|
|
5352
|
+
const rotation = this.previewController.getCameraRotation();
|
|
5353
|
+
if (!rotation) {
|
|
5354
|
+
showToast$1('Could not get camera rotation', 'error');
|
|
5355
|
+
return;
|
|
5356
|
+
}
|
|
5357
|
+
|
|
5358
|
+
scene.startingPosition = {
|
|
5359
|
+
pitch: rotation.x,
|
|
5360
|
+
yaw: rotation.y
|
|
5361
|
+
};
|
|
5362
|
+
|
|
5363
|
+
this.uiController.updateSceneProperties(scene);
|
|
5364
|
+
this.markUnsavedChanges();
|
|
5365
|
+
showToast$1('Starting position set', 'success');
|
|
5366
|
+
}
|
|
5367
|
+
|
|
5368
|
+
/**
|
|
5369
|
+
* Clear scene starting position
|
|
5370
|
+
*/
|
|
5371
|
+
clearSceneStartingPosition() {
|
|
5372
|
+
const scene = this.sceneManager.getCurrentScene();
|
|
5373
|
+
if (!scene) {
|
|
5374
|
+
showToast$1('No scene selected', 'error');
|
|
5375
|
+
return;
|
|
5376
|
+
}
|
|
5377
|
+
|
|
5378
|
+
scene.startingPosition = null;
|
|
5379
|
+
|
|
5380
|
+
this.uiController.updateSceneProperties(scene);
|
|
5381
|
+
this.markUnsavedChanges();
|
|
5382
|
+
showToast$1('Starting position cleared', 'success');
|
|
5383
|
+
}
|
|
5384
|
+
|
|
2469
5385
|
/**
|
|
2470
5386
|
* Render all UI
|
|
2471
5387
|
*/
|
|
@@ -2517,7 +5433,7 @@
|
|
|
2517
5433
|
|
|
2518
5434
|
if (this.storageManager.saveProject(projectData)) {
|
|
2519
5435
|
this.hasUnsavedChanges = false;
|
|
2520
|
-
showToast('Project saved', 'success');
|
|
5436
|
+
showToast$1('Project saved', 'success');
|
|
2521
5437
|
return true;
|
|
2522
5438
|
}
|
|
2523
5439
|
return false;
|
|
@@ -2533,7 +5449,7 @@
|
|
|
2533
5449
|
this.sceneManager.loadScenes(projectData.scenes || []);
|
|
2534
5450
|
this.hasUnsavedChanges = false;
|
|
2535
5451
|
this.render();
|
|
2536
|
-
showToast('Project loaded', 'success');
|
|
5452
|
+
showToast$1('Project loaded', 'success');
|
|
2537
5453
|
return true;
|
|
2538
5454
|
}
|
|
2539
5455
|
return false;
|
|
@@ -2552,16 +5468,14 @@
|
|
|
2552
5468
|
this.config = {
|
|
2553
5469
|
title: 'My Virtual Tour',
|
|
2554
5470
|
description: '',
|
|
2555
|
-
initialSceneId: ''
|
|
2556
|
-
autoRotate: false,
|
|
2557
|
-
showCompass: false
|
|
5471
|
+
initialSceneId: ''
|
|
2558
5472
|
};
|
|
2559
5473
|
|
|
2560
5474
|
this.sceneManager.clearScenes();
|
|
2561
5475
|
this.hasUnsavedChanges = false;
|
|
2562
5476
|
this.render();
|
|
2563
5477
|
|
|
2564
|
-
showToast('New project created', 'success');
|
|
5478
|
+
showToast$1('New project created', 'success');
|
|
2565
5479
|
return true;
|
|
2566
5480
|
}
|
|
2567
5481
|
|
|
@@ -2591,7 +5505,7 @@
|
|
|
2591
5505
|
this.render();
|
|
2592
5506
|
this.uiController.setLoading(false);
|
|
2593
5507
|
|
|
2594
|
-
showToast('Project imported successfully', 'success');
|
|
5508
|
+
showToast$1('Project imported successfully', 'success');
|
|
2595
5509
|
} catch (error) {
|
|
2596
5510
|
this.uiController.setLoading(false);
|
|
2597
5511
|
console.error('Import failed:', error);
|