LarpixClient/webroot/icons.js
2026-08-25 22:46:49 +02:00

67 lines
16 KiB
JavaScript

// icons.js - Centralized SVG definitions
//Subset czcionki Nunito (A-Z, 0-9, kropka, spacja) w base64.
//SVG wczytany przez <img> nie ma dostępu do fontów strony (@font-face),
//więc bez osadzenia czcionki inicjały na fallback awatarach renderują się
//systemową czcionką zamiast Nunito.
const AVATAR_FONT_B64 = "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";
const ICONS = {
_create: function(content, defaultProps, customProps = {}) {
let p = { ...defaultProps, ...customProps };
if (customProps.width && !customProps.height) p.height = customProps.width;
let strokeAttrs = p.strokeWidth ? ` stroke-width="${p.strokeWidth}" stroke-linecap="${p.strokeLinecap}" stroke-linejoin="${p.strokeLinejoin}"` : "";
let classAttr = p.className ? ` class="${p.className}"` : "";
let styleAttr = p.style ? ` style="${p.style}"` : "";
return `<svg xmlns="http://www.w3.org/2000/svg" width="${p.width}" height="${p.height}" viewBox="${p.viewBox}" fill="${p.fill}" stroke="${p.stroke}"${strokeAttrs}${classAttr}${styleAttr}>${content}</svg>`;
},
_material: function(content, props) {
return this._create(content, { viewBox: "0 -960 960 960", width: "1.4rem", height: "1.4rem", fill: "var(--text-color)", stroke: "none" }, props);
},
_feather: function(content, props) {
return this._create(content, { viewBox: "0 0 24 24", width: "1.4rem", height: "1.4rem", fill: "none", stroke: "var(--text-color)", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, props);
},
addChat: (props) => ICONS._material(`<path d="M120-160v-600q0-33 23.5-56.5T200-840h480q33 0 56.5 23.5T760-760v203q-10-2-20-2.5t-20-.5q-10 0-20 .5t-20 2.5v-203H200v400h283q-2 10-2.5 20t-.5 20q0 10 .5 20t2.5 20H240L120-160Zm160-440h320v-80H280v80Zm0 160h200v-80H280v80Zm400 280v-120H560v-80h120v-120h80v120h120v80H760v120h-80ZM200-360v-400 400Z"/>`, props),
createGroup: (props) => ICONS._material(`<path d="M500-482q29-32 44.5-73t15.5-85q0-44-15.5-85T500-798q60 8 100 53t40 105q0 60-40 105t-100 53Zm220 322v-120q0-36-16-68.5T662-406q51 18 94.5 46.5T800-280v120h-80Zm80-280v-80h-80v-80h80v-80h80v80h80v80h-80v80h-80Zm-593-87q-47-47-47-113t47-113q47-47 113-47t113 47q47 47 47 113t-47 113q-47 47-113 47t-113-47ZM0-160v-112q0-34 17.5-62.5T64-378q62-31 126-46.5T320-440q66 0 130 15.5T576-378q29 15 46.5 43.5T640-272v112H0Zm320-400q33 0 56.5-23.5T400-640q0-33-23.5-56.5T320-720q-33 0-56.5 23.5T240-640q0 33 23.5 56.5T320-560ZM80-240h480v-32q0-11-5.5-20T540-306q-54-27-109-40.5T320-360q-56 0-111 13.5T100-306q-9 5-14.5 14T80-272v32Zm240-400Zm0 400Z"/>`, props),
createSpace: (props) => ICONS._material(`<path d="M80-120v-720h400v160h400v320h-80v-240H480v80h80v80h-80v80h80v80h-80v80h160v80H80Zm80-80h80v-80h-80v80Zm0-160h80v-80h-80v80Zm0-160h80v-80h-80v80Zm0-160h80v-80h-80v80Zm160 480h80v-80h-80v80Zm0-160h80v-80h-80v80Zm0-160h80v-80h-80v80Zm0-160h80v-80h-80v80ZM800-40v-80h-80v-80h80v-80h80v80h80v80h-80v80h-80ZM640-440v-80h80v80h-80Zm0 160v-80h80v80h-80Z"/>`, props),
joinSpace: (props) => ICONS._material(`<path d="M440-280H280q-83 0-141.5-58.5T80-480q0-83 58.5-141.5T280-680h160v80H280q-50 0-85 35t-35 85q0 50 35 85t85 35h160v80ZM320-440v-80h320v80H320Zm200 160v-80h160q50 0 85-35t35-85q0-50-35-85t-85-35H520v-80h160q83 0 141.5 58.5T880-480q0 83-58.5 141.5T680-280H520Z"/>`, props),
invites: (props) => ICONS._material(`<path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Zm320-280L160-640v400h640v-400L480-440Zm0-80 320-200H160l320 200ZM160-640v-80 480-400Z"/>`, props),
notifications: (props) => ICONS._material(`<path d="M160-200v-80h80v-280q0-83 50-147.5T420-792v-28q0-25 17.5-42.5T480-880q25 0 42.5 17.5T540-820v28q80 20 130 84.5T720-560v280h80v80H160Zm320-300Zm0 420q-33 0-56.5-23.5T400-160h160q0 33-23.5 56.5T480-80ZM320-280h320v-280q0-66-47-113t-113-47q-66 0-113 47t-47 113v280Z"/>`, props),
close: (props) => ICONS._material(`<path d="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"/>`, props),
check: (props) => ICONS._material(`<path d="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z"/>`, props),
delete: (props) => ICONS._material(`<path d="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z"/>`, props),
menu: (props) => ICONS._material(`<path d="M120-240v-80h720v80H120Zm0-200v-80h720v80H120Zm0-200v-80h720v80H120Z"/>`, props),
arrowBack: (props) => ICONS._material(`<path d="m313-440 224 224-57 56-320-320 320-320 57 56-224 224h487v80H313Z"/>`, props),
pin: (props) => ICONS._material(`<path d="m640-480 80 80v80H520v240l-40 40-40-40v-240H240v-80l80-80v-280h-40v-80h400v80h-40v280Zm-286 80h252l-46-46v-314H400v314l-46 46Zm126 0Z"/>`, props),
call: (props) => ICONS._material(`<path d="M798-120q-125 0-247-54.5T329-329Q229-429 174.5-551T120-798q0-18 12-30t30-12h162q14 0 25 9.5t13 22.5l26 140q2 16-1 27t-11 19l-97 98q20 37 47.5 71.5T387-386q31 31 65 57.5t72 48.5l94-94q9-9 23.5-13.5T670-390l138 28q14 4 23 14.5t9 23.5v162q0 18-12 30t-30 12ZM241-600l66-66-17-94h-89q5 41 14 81t26 79Zm358 358q39 17 79.5 27t81.5 13v-88l-94-19-67 67ZM241-600Zm358 358Z"/>`, props),
account: (props) => ICONS._material(`<path d="M200-200h560v-560H200v560Zm0 80q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm40-160h480L570-480 450-320l-90-120-120 160Zm-40 80v-560 560Z"/>`, props),
profile: (props) => ICONS._material(`<path d="M480-480q-66 0-113-47t-47-113q0-66 47-113t113-47q66 0 113 47t47 113q0 66-47 113t-113 47ZM160-160v-112q0-34 17.5-62.5T224-378q62-31 126-46.5T480-440q66 0 130 15.5T736-378q29 15 46.5 43.5T800-272v112H160Zm80-80h480v-32q0-11-5.5-20T700-306q-54-27-109-40.5T480-360q-56 0-111 13.5T260-306q-9 5-14.5 14t-5.5 20v32Zm240-320q33 0 56.5-23.5T560-640q0-33-23.5-56.5T480-720q-33 0-56.5 23.5T400-640q0 33 23.5 56.5T480-560Zm0-80Zm0 400Z"/>`, props),
replyAction: (props) => ICONS._material(`<path d="M760-200v-160q0-50-35-85t-85-35H273l144 144-57 56-240-240 240-240 57 56-144 144h367q83 0 141.5 58.5T840-360v160h-80Z"/>`, props),
react: (props) => ICONS._material(`<path d="M480-260q70 0 126.5-40.5T682-400H278q19 59 75.5 99.5T480-260Zm-160-220q25 0 42.5-17.5T380-540q0-25-17.5-42.5T320-600q-25 0-42.5 17.5T260-540q0 25 17.5 42.5T320-480Zm320 0q25 0 42.5-17.5T700-540q0-25-17.5-42.5T640-600q-25 0-42.5 17.5T580-540q0 25 17.5 42.5T640-480ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z"/>`, props),
settings: (props) => ICONS._material(`<path d="m370-80-16-128q-13-5-24.5-12T307-235l-119 50L78-375l103-78q-1-7-1-13.5v-27q0-6.5 1-13.5L78-585l110-190 119 50q11-8 23-15t24-12l16-128h220l16 128q13 5 24.5 12t22.5 15l119-50 110 190-103 78q1 7 1 13.5v27q0 6.5-2 13.5l103 78-110 190-118-50q-11 8-23 15t-24 12L590-80H370Zm70-80h79l14-106q31-8 57.5-23.5T639-327l99 41 39-68-86-65q5-14 7-29.5t2-31.5q0-16-2-31.5t-7-29.5l86-65-39-68-99 42q-22-23-48.5-38.5T533-694l-13-106h-79l-14 106q-31 8-57.5 23.5T321-633l-99-41-39 68 86 64q-5 15-7 30t-2 32q0 16 2 31t7 30l-86 65 39 68 99-42q22 23 48.5 38.5T427-266l13 106Zm42-180q58 0 99-41t41-99q0-58-41-99t-99-41q-59 0-99.5 41T342-480q0 58 40.5 99t99.5 41Zm-2-140Z"/>`, props),
download: (props) => ICONS._feather(`<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/>`, props),
camera: (props) => ICONS._feather(`<path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"></path><circle cx="12" cy="13" r="4"></circle>`, props),
image: (props) => ICONS._feather(`<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline>`, props),
fileText: (props) => ICONS._feather(`<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline>`, props),
poll: (props) => ICONS._feather(`<line x1="8" y1="6" x2="21" y2="6"></line><line x1="8" y1="12" x2="21" y2="12"></line><line x1="8" y1="18" x2="21" y2="18"></line><line x1="3" y1="6" x2="3.01" y2="6"></line><line x1="3" y1="12" x2="3.01" y2="12"></line><line x1="3" y1="18" x2="3.01" y2="18"></line>`, props),
send: (props) => ICONS._create(`<path stroke="var(--main-bg-color)" stroke-linecap="round" stroke-linejoin="round" d="M 4.65 8 l -1.875 5.625 l 11.25 -5.625 L 2.775 2.375 l 1.875 5.625 z m 0 0 h 3.75" stroke-width="1.1"></path>`, { viewBox: "0 0 16 16", width: "1.5rem", height: "1.5rem", fill: "none", stroke: "none" }, props),
plus: (props) => ICONS._feather(`<line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line>`, props),
chevronDown: (props) => ICONS._feather(`<polyline points="6 9 12 15 18 9"></polyline>`, props),
lockOpen: (props) => ICONS._feather(`<rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 9.9-1"></path>`, props),
cornerUpLeft: (props) => ICONS._feather(`<polyline points="9 17 4 12 9 7"></polyline><path d="M20 18v-2a4 4 0 0 0-4-4H4"></path>`, props),
spinner: (props) => ICONS._create(`<circle class="path" cx="25" cy="25" r="20" fill="none" stroke-width="5"></circle>`, { viewBox: "0 0 50 50", width: "1.5rem", height: "1.5rem", fill: "none", stroke: "none", className: "spinner" }, props),
video: (props) => ICONS._feather(`<polygon points="23 7 16 12 23 17 23 7"/><rect x="1" y="5" width="15" height="14" rx="2" ry="2"/>`, props),
file: (props) => ICONS._feather(`<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/>`, props),
mic: (props) => ICONS._feather(`<path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path><path d="M19 10v2a7 7 0 0 1-14 0v-2"></path><line x1="12" y1="19" x2="12" y2="23"></line><line x1="8" y1="23" x2="16" y2="23"></line>`, props),
headphones: (props) => ICONS._feather(`<path d="M3 18v-6a9 9 0 0 1 18 0v6"></path><path d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z"></path>`, props),
speaker: (props) => ICONS._create(`<path d="M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"></path>`, { viewBox: "0 0 24 24", width: "1.4rem", height: "1.4rem", fill: "var(--text-color)", stroke: "none" }, props),
home: (props) => ICONS._create(`<path d="M1 6V15H6V11C6 9.89543 6.89543 9 8 9C9.10457 9 10 9.89543 10 11V15H15V6L8 0L1 6Z" stroke="currentColor" stroke-width="1.28" stroke-linejoin="round" stroke-linecap="round" transform="translate(0 0.5)"/>`, { viewBox: "-1 -1 18 18", width: "1.5rem", height: "1.5rem", fill: "none", stroke: "none" }, props),
inbox: (props) => ICONS._material(`<path d="M216-144q-29 0-50.5-21.5T144-216v-528q0-29.7 21.5-50.85Q187-816 216-816h528q29.7 0 50.85 21.15Q816-773.7 816-744v528q0 29-21.15 50.5T744-144H216Zm0-72h528v-144H632q-23 43-63.5 69.5T480-264q-49 0-89.5-26T328-360H216v144Zm332-148q28-28 28-68h168v-312H216v312h168q0 40 28 68t68 28q40 0 68-28ZM216-216h528-528Z"/>`, props),
avatar: function(initials, color, size) {
return `<svg xmlns="http://www.w3.org/2000/svg" width="${size}" height="${size}" viewBox="0 0 ${size} ${size}"><defs><style>@font-face{font-family:'NunitoAvatar';src:url(data:font/woff2;base64,${AVATAR_FONT_B64}) format('woff2');}</style></defs><rect width="100%" height="100%" fill="${color}" /><text x="50%" y="50%" fill="white" font-family="NunitoAvatar, Nunito, sans-serif" font-size="${size * 0.45}" text-anchor="middle" dy=".35em">${initials}</text></svg>`;
}
};