// Minimal icon set — stroke 1.6, 16x16
const SMOKE_ICON_SVG = "<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M23.9777 9.56632V16.9996H7.97839V9.79497C6.58792 8.90819 5.92579 7.56323 5.246 5.86272L4.5 4H27.456L26.7608 5.73494C26.1252 7.32289 25.3152 8.64445 23.9777 9.56632ZM9.97802 15.0007H21.978V11H9.97802V15.0007ZM7.46413 6.00066C8.32932 7.9989 9.27837 9.00088 13.8449 9.00088H18.1112C22.1502 9.00088 23.5804 7.71507 24.4544 6.00066H7.46413ZM12.1112 12.2C12.1112 12.0895 12.2007 12 12.3112 12H13.9112C14.0216 12 14.1112 12.0895 14.1112 12.2V13.8C14.1112 13.9105 14.0216 14 13.9112 14H12.3112C12.2007 14 12.1112 13.9105 12.1112 13.8V12.2ZM15.3112 12C15.2007 12 15.1112 12.0895 15.1112 12.2V13.8C15.1112 13.9105 15.2007 14 15.3112 14H16.9112C17.0216 14 17.1112 13.9105 17.1112 13.8V12.2C17.1112 12.0895 17.0216 12 16.9112 12H15.3112ZM18.1112 12.2C18.1112 12.0895 18.2007 12 18.3112 12H19.9112C20.0216 12 20.1112 12.0895 20.1112 12.2V13.8C20.1112 13.9105 20.0216 14 19.9112 14H18.3112C18.2007 14 18.1112 13.9105 18.1112 13.8V12.2ZM4 19C4 18.4477 4.44772 18 5 18H27C27.5523 18 28 18.4477 28 19V27C28 27.5523 27.5523 28 27 28H5C4.44772 28 4 27.5523 4 27V19ZM10.9612 24.9207C11.0572 25.0167 11.194 25.0647 11.3716 25.0647C11.7316 25.0647 11.9116 24.8799 11.9116 24.5103V23.0271C11.9116 22.7871 11.9788 22.5951 12.1132 22.4511C12.2524 22.3071 12.4372 22.2351 12.6676 22.2351C12.85 22.2351 12.9844 22.2903 13.0708 22.4007C13.162 22.5063 13.2076 22.6815 13.2076 22.9263V24.5103C13.2076 24.6879 13.2532 24.8247 13.3444 24.9207C13.4404 25.0167 13.5748 25.0647 13.7476 25.0647C13.9252 25.0647 14.0596 25.0167 14.1508 24.9207C14.2468 24.8247 14.2948 24.6879 14.2948 24.5103V22.8759C14.2948 22.5399 14.2492 22.2639 14.158 22.0479C14.0668 21.8271 13.93 21.6639 13.7476 21.5583C13.5652 21.4479 13.3324 21.3927 13.0492 21.3927C12.7708 21.3927 12.5212 21.4575 12.3004 21.5871C12.1426 21.6783 12.013 21.7989 11.9116 21.9489V20.4135C11.9116 20.2311 11.8636 20.0943 11.7676 20.0031C11.6764 19.9071 11.5444 19.8591 11.3716 19.8591C11.194 19.8591 11.0572 19.9071 10.9612 20.0031C10.87 20.0943 10.8244 20.2311 10.8244 20.4135V24.5103C10.8244 24.6879 10.87 24.8247 10.9612 24.9207ZM6.5544 26.2167C6.6504 26.3127 6.7872 26.3607 6.9648 26.3607C7.1376 26.3607 7.2696 26.3127 7.3608 26.2167C7.4568 26.1255 7.5048 25.9887 7.5048 25.8063V24.5227C7.58788 24.6612 7.70548 24.7795 7.8576 24.8775C8.0736 25.0119 8.3208 25.0791 8.5992 25.0791C8.9112 25.0791 9.1824 25.0047 9.4128 24.8559C9.6432 24.7071 9.8232 24.4935 9.9528 24.2151C10.0824 23.9367 10.1472 23.6079 10.1472 23.2287C10.1472 22.8495 10.0824 22.5231 9.9528 22.2495C9.8232 21.9759 9.6408 21.7647 9.4056 21.6159C9.1752 21.4671 8.9064 21.3927 8.5992 21.3927C8.316 21.3927 8.064 21.4647 7.8432 21.6087C7.68882 21.7082 7.57122 21.831 7.4904 21.9771V21.9543C7.4904 21.7767 7.4448 21.6423 7.3536 21.5511C7.2624 21.4551 7.128 21.4071 6.9504 21.4071C6.7824 21.4071 6.6504 21.4551 6.5544 21.5511C6.4632 21.6423 6.4176 21.7767 6.4176 21.9543V25.8063C6.4176 25.9887 6.4632 26.1255 6.5544 26.2167ZM8.6784 24.1503C8.5632 24.2271 8.4288 24.2655 8.2752 24.2655C8.04 24.2655 7.8504 24.1815 7.7064 24.0135C7.5624 23.8407 7.4904 23.5791 7.4904 23.2287C7.4904 22.9935 7.524 22.8015 7.5912 22.6527C7.6584 22.4991 7.7496 22.3863 7.8648 22.3143C7.9848 22.2423 8.1216 22.2063 8.2752 22.2063C8.5056 22.2063 8.6928 22.2903 8.8368 22.4583C8.9808 22.6215 9.0528 22.8783 9.0528 23.2287C9.0528 23.4639 9.0192 23.6583 8.952 23.8119C8.8896 23.9607 8.7984 24.0735 8.6784 24.1503ZM16.8178 25.0791C16.4386 25.0791 16.1074 25.0047 15.8242 24.8559C15.5458 24.7071 15.3298 24.4935 15.1762 24.2151C15.0226 23.9367 14.9458 23.6079 14.9458 23.2287C14.9458 22.9455 14.989 22.6911 15.0754 22.4655C15.1618 22.2399 15.2866 22.0479 15.4498 21.8895C15.6178 21.7263 15.817 21.6039 16.0474 21.5223C16.2778 21.4359 16.5346 21.3927 16.8178 21.3927C17.197 21.3927 17.5258 21.4671 17.8042 21.6159C18.0874 21.7647 18.3058 21.9759 18.4594 22.2495C18.6178 22.5231 18.697 22.8495 18.697 23.2287C18.697 23.5167 18.6514 23.7735 18.5602 23.9991C18.4738 24.2247 18.349 24.4191 18.1858 24.5823C18.0226 24.7455 17.8234 24.8703 17.5882 24.9567C17.3578 25.0383 17.101 25.0791 16.8178 25.0791ZM16.8178 24.2655C16.9762 24.2655 17.113 24.2271 17.2282 24.1503C17.3434 24.0735 17.4346 23.9607 17.5018 23.8119C17.569 23.6583 17.6026 23.4639 17.6026 23.2287C17.6026 22.8783 17.5306 22.6215 17.3866 22.4583C17.2426 22.2903 17.053 22.2063 16.8178 22.2063C16.6642 22.2063 16.5274 22.2423 16.4074 22.3143C16.2922 22.3863 16.201 22.4991 16.1338 22.6527C16.0714 22.8015 16.0402 22.9935 16.0402 23.2287C16.0402 23.5791 16.1122 23.8407 16.2562 24.0135C16.4002 24.1815 16.5874 24.2655 16.8178 24.2655ZM20.2356 24.9135C20.4612 25.0239 20.7396 25.0791 21.0708 25.0791C21.1476 25.0791 21.2388 25.0695 21.3444 25.0503C21.4548 25.0359 21.5412 25.0167 21.6036 24.9927C21.6996 24.9543 21.7668 24.8919 21.8052 24.8055C21.8436 24.7191 21.8628 24.6183 21.8628 24.5031C21.8628 24.3495 21.8412 24.2511 21.798 24.2079C21.7548 24.1599 21.6996 24.1383 21.6324 24.1431C21.5796 24.1479 21.522 24.1575 21.4596 24.1719C21.3972 24.1863 21.33 24.1935 21.258 24.1935C21.0516 24.1935 20.9004 24.1431 20.8044 24.0423C20.7132 23.9415 20.6676 23.7903 20.6676 23.5887V22.2783H21.3516C21.486 22.2783 21.5892 22.2423 21.6612 22.1703C21.7332 22.0983 21.7692 21.9999 21.7692 21.8751C21.7692 21.7407 21.7332 21.6399 21.6612 21.5727C21.5892 21.5007 21.486 21.4647 21.3516 21.4647H20.6676V20.9175C20.6676 20.7351 20.622 20.5983 20.5308 20.5071C20.4396 20.4111 20.3052 20.3631 20.1276 20.3631C19.9548 20.3631 19.8204 20.4111 19.7244 20.5071C19.6284 20.5983 19.5804 20.7351 19.5804 20.9175V21.4647H19.278C19.1436 21.4647 19.038 21.5007 18.9612 21.5727C18.8892 21.6399 18.8532 21.7407 18.8532 21.8751C18.8532 21.9999 18.8892 22.0983 18.9612 22.1703C19.038 22.2423 19.1436 22.2783 19.278 22.2783H19.5804V23.6319C19.5804 23.9535 19.6332 24.2199 19.7388 24.4311C19.8492 24.6423 20.0148 24.8031 20.2356 24.9135ZM23.9228 25.0791C23.5436 25.0791 23.2124 25.0047 22.9292 24.8559C22.6508 24.7071 22.4348 24.4935 22.2812 24.2151C22.1276 23.9367 22.0508 23.6079 22.0508 23.2287C22.0508 22.9455 22.094 22.6911 22.1804 22.4655C22.2668 22.2399 22.3916 22.0479 22.5548 21.8895C22.7228 21.7263 22.922 21.6039 23.1524 21.5223C23.3828 21.4359 23.6396 21.3927 23.9228 21.3927C24.302 21.3927 24.6308 21.4671 24.9092 21.6159C25.1924 21.7647 25.4108 21.9759 25.5644 22.2495C25.7228 22.5231 25.802 22.8495 25.802 23.2287C25.802 23.5167 25.7564 23.7735 25.6652 23.9991C25.5788 24.2247 25.454 24.4191 25.2908 24.5823C25.1276 24.7455 24.9284 24.8703 24.6932 24.9567C24.4628 25.0383 24.206 25.0791 23.9228 25.0791ZM23.9228 24.2655C24.0812 24.2655 24.218 24.2271 24.3332 24.1503C24.4484 24.0735 24.5396 23.9607 24.6068 23.8119C24.674 23.6583 24.7076 23.4639 24.7076 23.2287C24.7076 22.8783 24.6356 22.6215 24.4916 22.4583C24.3476 22.2903 24.158 22.2063 23.9228 22.2063C23.7692 22.2063 23.6324 22.2423 23.5124 22.3143C23.3972 22.3863 23.306 22.4991 23.2388 22.6527C23.1764 22.8015 23.1452 22.9935 23.1452 23.2287C23.1452 23.5791 23.2172 23.8407 23.3612 24.0135C23.5052 24.1815 23.6924 24.2655 23.9228 24.2655Z\"></path>";
const HEAT_ICON_SVG = "<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5 18.4C4.44772 18.4 4 18.8477 4 19.4V27.4C4 27.9523 4.44772 28.4 5 28.4H27C27.5523 28.4 28 27.9523 28 27.4V19.4C28 18.8477 27.5523 18.4 27 18.4H5ZM18.8301 26.4684C18.6376 26.4684 18.4907 26.4152 18.3893 26.3088C18.288 26.2024 18.2373 26.0529 18.2373 25.8604V21.5816C18.2373 21.3891 18.288 21.2396 18.3893 21.1332C18.4907 21.0268 18.6376 20.9736 18.8301 20.9736C19.0176 20.9736 19.162 21.0268 19.2633 21.1332C19.3647 21.2396 19.4153 21.3891 19.4153 21.5816V25.8604C19.4153 26.0529 19.3647 26.2024 19.2633 26.3088C19.1671 26.4152 19.0227 26.4684 18.8301 26.4684ZM8.3684 26.3088C8.46973 26.4152 8.61666 26.4684 8.8092 26.4684C9.00173 26.4684 9.14613 26.4152 9.2424 26.3088C9.34373 26.2024 9.3944 26.0529 9.3944 25.8604V22.0148H10.7396C10.8967 22.0148 11.0183 21.9717 11.1044 21.8856C11.1905 21.7995 11.2336 21.6804 11.2336 21.5284C11.2336 21.3713 11.1905 21.2523 11.1044 21.1712C11.0183 21.0851 10.8967 21.042 10.7396 21.042H6.8712C6.71413 21.042 6.59253 21.0851 6.5064 21.1712C6.42026 21.2523 6.3772 21.3713 6.3772 21.5284C6.3772 21.6804 6.42026 21.7995 6.5064 21.8856C6.59253 21.9717 6.71413 22.0148 6.8712 22.0148H8.2164V25.8604C8.2164 26.0529 8.26706 26.2024 8.3684 26.3088ZM14.042 26.3088C14.1484 26.4152 14.2979 26.4684 14.4904 26.4684C14.8755 26.4684 15.068 26.2607 15.068 25.8452V24.1884H16.9376C17.0896 24.1884 17.2062 24.1479 17.2872 24.0668C17.3683 23.9857 17.4088 23.8717 17.4088 23.7248C17.4088 23.5779 17.3683 23.4664 17.2872 23.3904C17.2062 23.3093 17.0896 23.2688 16.9376 23.2688H15.068V21.9616H17.1048C17.2568 21.9616 17.3708 21.9236 17.4468 21.8476C17.5279 21.7665 17.5684 21.65 17.5684 21.498C17.5684 21.3511 17.5279 21.2396 17.4468 21.1636C17.3708 21.0825 17.2568 21.042 17.1048 21.042H14.5056C14.308 21.042 14.156 21.0952 14.0496 21.2016C13.9432 21.308 13.89 21.46 13.89 21.6576V25.8452C13.89 26.0479 13.9407 26.2024 14.042 26.3088ZM20.4609 26.3468C20.5622 26.4279 20.6889 26.4684 20.8409 26.4684C20.9625 26.4684 21.0714 26.438 21.1677 26.3772C21.264 26.3164 21.3602 26.2176 21.4565 26.0808L22.5699 24.5466L23.6833 26.0808C23.7846 26.2176 23.8809 26.3164 23.9721 26.3772C24.0684 26.438 24.1773 26.4684 24.2989 26.4684C24.456 26.4684 24.5826 26.4279 24.6789 26.3468C24.7802 26.2607 24.836 26.1568 24.8461 26.0352C24.8613 25.9085 24.8182 25.7793 24.7169 25.6476L23.2424 23.6838L24.6637 21.802C24.765 21.6601 24.8081 21.5284 24.7929 21.4068C24.7828 21.2801 24.727 21.1763 24.6257 21.0952C24.5294 21.0141 24.4053 20.9736 24.2533 20.9736C24.1266 20.9736 24.0152 21.004 23.9189 21.0648C23.8226 21.1205 23.7264 21.2168 23.6301 21.3536L22.5731 22.8231L21.5097 21.3536C21.4134 21.2219 21.3172 21.1256 21.2209 21.0648C21.1297 21.004 21.0208 20.9736 20.8941 20.9736C20.7472 20.9736 20.623 21.0167 20.5217 21.1028C20.4254 21.1839 20.3697 21.2877 20.3545 21.4144C20.3444 21.536 20.3874 21.6652 20.4837 21.802L21.8975 23.6826L20.4153 25.6476C20.319 25.7793 20.2785 25.9085 20.2937 26.0352C20.3089 26.1568 20.3646 26.2607 20.4609 26.3468Z\"></path> <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M23.9777 9.56632V16.9996H7.97839V9.79497C6.58792 8.90819 5.92579 7.56323 5.246 5.86272L4.5 4H27.456L26.7608 5.73494C26.1252 7.32289 25.3152 8.64445 23.9777 9.56632ZM9.97802 15.0007H21.978V11H9.97802V15.0007ZM7.46413 6.00066C8.32932 7.9989 9.27837 9.00088 13.8449 9.00088H18.1112C22.1502 9.00088 23.5804 7.71507 24.4544 6.00066H7.46413Z\"></path> <path d=\"M12.1112 12.2C12.1112 12.0895 12.2007 12 12.3112 12H13.9112C14.0216 12 14.1112 12.0895 14.1112 12.2V13.8C14.1112 13.9105 14.0216 14 13.9112 14H12.3112C12.2007 14 12.1112 13.9105 12.1112 13.8V12.2Z\"></path> <path d=\"M15.1112 12.2C15.1112 12.0895 15.2007 12 15.3112 12H16.9112C17.0216 12 17.1112 12.0895 17.1112 12.2V13.8C17.1112 13.9105 17.0216 14 16.9112 14H15.3112C15.2007 14 15.1112 13.9105 15.1112 13.8V12.2Z\"></path> <path d=\"M18.1112 12.2C18.1112 12.0895 18.2007 12 18.3112 12H19.9112C20.0216 12 20.1112 12.0895 20.1112 12.2V13.8C20.1112 13.9105 20.0216 14 19.9112 14H18.3112C18.2007 14 18.1112 13.9105 18.1112 13.8V12.2Z\"></path>";
const SOUNDER_ICON_SVG = "<path d=\"M24 15.5358C24 14.9835 24.4477 14.5358 25 14.5358H27C27.5523 14.5358 28 14.9835 28 15.5358C28 16.0881 27.5523 16.5358 27 16.5358H25C24.4477 16.5358 24 16.0881 24 15.5358Z\"></path> <path d=\"M23.5857 12.7429C23.1952 12.3524 23.1952 11.7192 23.5857 11.3287L25 9.91448C25.3905 9.52395 26.0236 9.52395 26.4142 9.91448C26.8047 10.305 26.8047 10.9382 26.4142 11.3287L25 12.7429C24.6094 13.1334 23.9763 13.1334 23.5857 12.7429Z\"></path> <path d=\"M23.7071 18.4287C23.3166 18.8192 23.3166 19.4524 23.7071 19.8429L25.1213 21.2571C25.5118 21.6476 26.145 21.6476 26.5355 21.2571C26.926 20.8666 26.926 20.2334 26.5355 19.8429L25.1213 18.4287C24.7308 18.0382 24.0976 18.0382 23.7071 18.4287Z\"></path> <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8 11.2217C6.89543 11.2217 6 12.1171 6 13.2217V18.2217C6 19.3262 6.89543 20.2217 8 20.2217H16V11.2217H8ZM9 13.2217C8.44772 13.2217 8 13.6694 8 14.2217V17.2217C8 17.774 8.44772 18.2217 9 18.2217H14V13.2217H9Z\"></path> <path d=\"M20 9.22179C20 8.6695 20.4477 8.22179 21 8.22179C21.5523 8.22179 22 8.6695 22 9.22179V22.2217C22 22.774 21.5523 23.2217 21 23.2217C20.4477 23.2217 20 21.774 20 21.2217V9.22179Z\"></path> <path d=\"M20 9.22179C20 8.6695 20.4477 8.22179 21 8.22179C21.5523 8.22179 22 8.6695 22 9.22179V22.2217C22 22.774 21.5523 23.2217 21 23.2217C20.4477 23.2217 20 21.774 20 21.2217V9.22179Z\"></path> <path d=\"M20.4593 8.13414C20.9376 7.858 21.5492 8.02187 21.8253 8.50017C22.1014 8.97846 21.9376 9.59005 21.4593 9.86619L15.366 12.875C14.8877 13.1511 14.2761 12.9872 14 12.5089C13.7239 12.0307 13.8877 11.4191 14.366 11.1429L20.4593 8.13414Z\"></path> <path d=\"M20.4735 23.1004C20.9518 23.3766 21.5634 23.2127 21.8395 22.7344C22.1157 22.2561 21.9518 21.6445 21.4735 21.3684L14.5824 17.3898C14.4182 17.295 14.2406 17.2335 14.2147 17.4213C14.1861 17.6287 14.1534 17.956 14 18.2217C13.7239 18.7 12.8566 18.7028 13.3349 18.979L20.4735 23.1004Z\"></path>";

const Icon = ({ name, size = 16, ...rest }) => {
  const P = (d) => <path d={d} fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" />;
  const paths = {
    home:       <>{P("M3 9.5 10 4l7 5.5V16a1 1 0 0 1-1 1h-3.5v-4.5h-5V17H4a1 1 0 0 1-1-1V9.5Z")}</>,
    folder:     <>{P("M3 6a1 1 0 0 1 1-1h3.5l1.5 1.5H16a1 1 0 0 1 1 1V15a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V6Z")}</>,
    plus:       <>{P("M10 4v12M4 10h12")}</>,
    minus:      <>{P("M4 10h12")}</>,
    search:     <>{P("M9 15.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM14 14l3 3")}</>,
    upload:     <>{P("M10 13V4M6 8l4-4 4 4M4 14v1.5A1.5 1.5 0 0 0 5.5 17h9a1.5 1.5 0 0 0 1.5-1.5V14")}</>,
    download:   <>{P("M10 4v9M6 9l4 4 4-4M4 15v1.5A1.5 1.5 0 0 0 5.5 18h9a1.5 1.5 0 0 0 1.5-1.5V15")}</>,
    file:       <>{P("M5 3h7l3 3v11a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z")}{P("M12 3v3h3")}</>,
    check:      <>{P("M4 10.5 8 14.5l8-9")}</>,
    chevR:      <>{P("M8 5l5 5-5 5")}</>,
    chevL:      <>{P("M12 5l-5 5 5 5")}</>,
    chevD:      <>{P("M5 8l5 5 5-5")}</>,
    chevU:      <>{P("M5 12l5-5 5 5")}</>,
    spark:      <>{P("M10 3v3M10 14v3M3 10h3M14 10h3M5.6 5.6l2.1 2.1M12.3 12.3l2.1 2.1M14.4 5.6l-2.1 2.1M7.7 12.3l-2.1 2.1")}</>,
    settings:   <>{P("M10 7.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5Z")}{P("M10 2v1.5M10 16.5V18M2 10h1.5M16.5 10H18M4.4 4.4l1 1M14.6 14.6l1 1M15.6 4.4l-1 1M5.4 14.6l-1 1")}</>,
    bell:       <>{P("M5 8a5 5 0 0 1 10 0v3l1.5 3h-13L5 11V8ZM8.5 16a1.5 1.5 0 0 0 3 0")}</>,
    grid:       <>{P("M3 3h6v6H3zM11 3h6v6h-6zM3 11h6v6H3zM11 11h6v6h-6z")}</>,
    list:       <>{P("M4 5h12M4 10h12M4 15h12")}</>,
    book:       <>{P("M4 4h6a2 2 0 0 1 2 2v11a2 2 0 0 0-2-2H4V4Z")}{P("M16 4h-4a2 2 0 0 0-2 2v11a2 2 0 0 1 2-2h4V4Z")}</>,
    layers:     <>{P("M10 3 3 7l7 4 7-4-7-4ZM3 12l7 4 7-4M3 17l7 4 7-4")}</>,
    cube:       <>{P("M10 2.5 17 6.5 10 10.5 3 6.5 10 2.5ZM3 6.5v7l7 4M17 6.5v7l-7 4M10 10.5v7")}</>,
    archive:    <>{P("M3 5h14v3H3zM4 8h12v9H4z")}{P("M8 11h4")}</>,
    pdf:        <>{P("M5 3h7l3 3v11a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z")}<text x="6.4" y="14" fontSize="5.6" fontFamily="ui-monospace, monospace" fontWeight="700" fill="currentColor" stroke="none">PDF</text></>,
    excel:      <>{P("M5 3h7l3 3v11a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z")}<text x="6.2" y="14" fontSize="5.6" fontFamily="ui-monospace, monospace" fontWeight="700" fill="currentColor" stroke="none">XLS</text></>,
    fire:       <>{P("M10 17c3 0 5-2 5-5 0-2.5-2-4-3-6-1 2-3 2-3 4-1 0-2-1-2-2.5C5 9 5 12 5 13c0 2.5 2 4 5 4Z")}</>,
    map:        <>{P("M3 5 8 4l4 1 5-1v12l-5 1-4-1-5 1V5ZM8 4v12M12 5v12")}</>,
    'arrow-left': <>{P("M16 10H4M9 5l-5 5 5 5")}</>,
    send:       <>{P("M17 3 9 11M17 3l-5 14-3-6-6-3 14-5Z")}</>,
    trash:      <>{P("M4 6h12M7 6V4h6v2M6 6l1 11h6l1-11M9 9v6M11 9v6")}</>,
    flame:      <>{P("M10 17.5c3.2 0 5.5-2 5.5-5.2 0-2.6-1.8-4-3-6.3-.6-1.1-.5-2.5-.5-3 0 0-2 1.4-3 3-1 1.5-1 3-2 3.5S5 11 5 13c0 3 2.3 4.5 5 4.5Z")}</>,
    edit:       <>{P("M4 16l1-3 9-9 3 3-9 9-3 1Z")}</>,
    eye:        <>{P("M2 10s3-5 8-5 8 5 8 5-3 5-8 5-8-5-8-5Z")}{P("M10 12.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z")}</>,
    filter:     <>{P("M3 5h14l-5 7v4l-4 1v-5L3 5Z")}</>,
    share:      <>{P("M14 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4ZM14 17a2 2 0 1 0 0-4 2 2 0 0 0 0 4ZM6 12a2 2 0 1 0 0-4 2 2 0 0 0 0 4ZM7.7 9 12.3 6M7.7 11l4.6 3")}</>,
    refresh:    <>{P("M4 10a6 6 0 0 1 10.5-4M16 4v3.5h-3.5M16 10a6 6 0 0 1-10.5 4M4 16v-3.5h3.5")}</>,
    user:       <>{P("M10 10a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM4 17c1-3.5 4-5 6-5s5 1.5 6 5")}</>,
    info:       <>{P("M10 17a7 7 0 1 0 0-14 7 7 0 0 0 0 14ZM10 9v5M10 6.5v.5")}</>,
    alert:      <>{P("M10 4 3 16.5h14L10 4ZM10 9v3.5M10 14.5v.3")}</>,
    floor:      <>{P("M3 8h14v9H3zM3 13h14M7 8v9M13 8v9")}</>,
    shield:     <>{P("M10 3 4 5v5c0 4 3 6.5 6 7 3-.5 6-3 6-7V5l-6-2Z")}</>,
    lock:       <>{P("M6 9V7a4 4 0 0 1 8 0v2M5 9h10v8H5z")}</>,
    sliders:    <>{P("M4 6h7M14 6h2M4 14h2M9 14h7")}{P("M12.5 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM7.5 14a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Z")}</>,
    cursor:     <>{P("M5 4l10 6-4.5 1.5L9 16 5 4Z")}</>,
    move:       <>{P("M10 3v14M3 10h14M7 6l-3 4 3 4M13 6l3 4-3 4")}</>,
    plot:       <>{P("M10 3a7 7 0 1 0 0 14 7 7 0 0 0 0-14ZM10 7v6M7 10h6")}</>,
    zoomIn:     <>{P("M9 15.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM14 14l3 3M6.5 9h5M9 6.5v5")}</>,
    zoomOut:    <>{P("M9 15.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM14 14l3 3M6.5 9h5")}</>,
    layout:     <>{P("M3 4h14v12H3zM3 9h14M9 9v7")}</>,
    smoke:      <>{P("M10 10.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM10 3v1.5M10 11.5V13M3 8h1.5M15.5 8H17M5.2 3.2l1 1M13.8 12.8l1 1M14.8 3.2l-1 1M5.2 12.8l1-1")}{P("M4 16h12")}</>,
    heat:       <>{P("M8.5 11.5a1.5 1.5 0 1 0 3 0v-7a1.5 1.5 0 1 0-3 0v7ZM10 11.5a3 3 0 1 1-3 3")}</>,
    bell2:      <>{P("M5 8a5 5 0 0 1 10 0v3l1.5 3h-13L5 11V8ZM8.5 16a1.5 1.5 0 0 0 3 0")}</>,
    bellOff:    <>{P("M5 8a5 5 0 0 1 8-3.7M15 11.5V11l-.3-3M3.5 14h13M8.5 16a1.5 1.5 0 0 0 3 0M3 3l14 14")}</>,
    call:       <>{P("M4 5h12v9H4zM7 8h6M7 11h6")}</>,
    panel:      <>{P("M3 4h14v12H3zM6 7h8M6 10h5M6 13h3")}</>,
    module:     <>{P("M4 7h12v6H4zM7 7v6M13 7v6")}</>,
    strobe:     <>{P("M10 5l3 5h-2.5L13 15l-3-5h2.5L10 5Z")}</>,
    link:       <>{P("M8.5 11.5 11.5 8.5M7.5 13.5l-1 1a2.5 2.5 0 1 1-3.5-3.5l3-3a2.5 2.5 0 0 1 3.5 0M12.5 6.5l1-1a2.5 2.5 0 1 1 3.5 3.5l-3 3a2.5 2.5 0 0 1-3.5 0")}</>,
    copy:       <>{P("M7 4h7a1 1 0 0 1 1 1v9M5 7h7a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1Z")}</>,
    rotate:     <>{P("M3.5 10a6.5 6.5 0 1 1 1.9 4.6")}{P("M3 11.5 3.5 15l3.5-.6")}<ellipse cx="10" cy="10" rx="7" ry="2.6" fill="none" stroke="currentColor" strokeWidth="1.2" strokeDasharray="2 2" opacity="0.55" /></>,
    external:   <>{P("M11 4h5v5M16 4l-7 7M14 11v4a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h4")}</>,
    drag:       <>{P("M10 3v14M3 10h14M7 6 4 10l3 4M13 6l3 4-3 4")}</>,
    cart:       <>{P("M2.5 3.5h2l1.4 8.5h8.2l1.4-6H5.5")}{P("M8 16.5a1.1 1.1 0 1 1-2.2 0 1.1 1.1 0 0 1 2.2 0ZM15 16.5a1.1 1.1 0 1 1-2.2 0 1.1 1.1 0 0 1 2.2 0Z")}</>,
    x:          <>{P("M5 5l10 10M15 5L5 15")}</>,
    listSpark:  <>
      {P("M4 6h8M4 10h8M4 14h6")}
      <path d="M16 3.2 C 16 5.4 16.2 5.5 18.5 6 C 16.2 6 16 6.1 16 8.3 C 16 6.1 15.8 6 13.5 6 C 15.8 5.5 16 5.4 16 3.2 Z" fill="currentColor" stroke="none" />
    </>,
    // ---- Telefire legend (מקרא טלפייר) symbols ----
    tfSmoke:      <><circle cx="10" cy="10" r="6.6" fill="none" stroke="currentColor" strokeWidth="1.6" /><text x="10" y="13.1" textAnchor="middle" fontSize="8" fontWeight="700" fontFamily="Arial, sans-serif" fill="currentColor" stroke="none">ג</text></>,
    tfSmokeInd:   <><circle cx="8.8" cy="11.2" r="5.2" fill="none" stroke="currentColor" strokeWidth="1.5" /><text x="8.8" y="13.7" textAnchor="middle" fontSize="6.4" fontWeight="700" fontFamily="Arial, sans-serif" fill="currentColor" stroke="none">ג</text><rect x="12.6" y="2.2" width="5.2" height="5.2" rx="0.6" fill="none" stroke="currentColor" strokeWidth="1.2" /><path d="M13.2 2.8l4 4M17.2 2.8l-4 4" stroke="currentColor" strokeWidth="1" strokeLinecap="round" /></>,
    tfDuct:       <><rect x="2.5" y="6" width="15" height="8" rx="1" fill="none" stroke="currentColor" strokeWidth="1.4" /><circle cx="10" cy="10" r="3.1" fill="none" stroke="currentColor" strokeWidth="1.3" /><text x="10" y="12.3" textAnchor="middle" fontSize="5" fontWeight="700" fontFamily="Arial, sans-serif" fill="currentColor" stroke="none">ג</text><path d="M2.5 10H0.9M17.5 10h1.6" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" /></>,
    tfFloor:      <><circle cx="10" cy="6.6" r="3.9" fill="none" stroke="currentColor" strokeWidth="1.5" /><text x="10" y="8.9" textAnchor="middle" fontSize="5.4" fontWeight="700" fontFamily="Arial, sans-serif" fill="currentColor" stroke="none">ג</text><path d="M10 10.6v4.2" stroke="currentColor" strokeWidth="1.4" /><path d="M5.5 15h9" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" /><path d="M6.6 15v1.6M13.4 15v1.6" stroke="currentColor" strokeWidth="1.3" /></>,
    tfFlood:      <><path d="M3.5 15.5h13" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" /><rect x="6.3" y="8.5" width="7.4" height="5" rx="1" fill="none" stroke="currentColor" strokeWidth="1.4" /><path d="M8 13.5v2M12 13.5v2" stroke="currentColor" strokeWidth="1.3" /><circle cx="10" cy="11" r="1.3" fill="currentColor" stroke="none" /></>,
    tfBeam:       <><rect x="3" y="5.5" width="9" height="9" rx="1" fill="none" stroke="currentColor" strokeWidth="1.5" /><text x="7.5" y="12" textAnchor="middle" fontSize="6.4" fontWeight="700" fontFamily="Arial, sans-serif" fill="currentColor" stroke="none">ג</text><path d="M12 10h6.5" stroke="currentColor" strokeWidth="1.5" /><path d="M16.5 8l2.2 2-2.2 2" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round" /></>,
    tfAspirating: <><rect x="6" y="2.8" width="8" height="14.4" rx="1.6" fill="none" stroke="currentColor" strokeWidth="1.5" /><circle cx="10" cy="7.4" r="2.4" fill="none" stroke="currentColor" strokeWidth="1.3" /><circle cx="10" cy="7.4" r="0.7" fill="currentColor" stroke="none" /><path d="M8 12h4M8 14.2h4" stroke="currentColor" strokeWidth="1.2" strokeLinecap="round" /></>,
    tfButtonGlass:<><rect x="4.5" y="4.5" width="11" height="11" rx="1" fill="none" stroke="currentColor" strokeWidth="1.6" /><path d="M5.5 14.5l9-9" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" /></>,
    tfButtonDot:  <><rect x="3" y="3" width="14" height="14" rx="1" fill="none" stroke="currentColor" strokeWidth="1.4" /><rect x="6" y="6" width="8" height="8" rx="0.6" fill="none" stroke="currentColor" strokeWidth="1.2" /><circle cx="10" cy="10" r="1.9" fill="currentColor" stroke="none" /></>,
    tfLamp:       <><rect x="4.5" y="4.5" width="11" height="11" rx="1" fill="none" stroke="currentColor" strokeWidth="1.6" /><path d="M5.5 5.5l9 9M14.5 5.5l-9 9" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" /></>,
    tfGasCyl:     <><path d="M7 6.6a3 3 0 0 1 6 0v9.4a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V6.6Z" fill="none" stroke="currentColor" strokeWidth="1.5" /><rect x="8.4" y="2.4" width="3.2" height="3.2" rx="0.5" fill="none" stroke="currentColor" strokeWidth="1.3" /><circle cx="10" cy="11" r="2" fill="none" stroke="currentColor" strokeWidth="1.2" /></>,
    tfSign:       <><rect x="2.4" y="6" width="15.2" height="8" rx="1" fill="none" stroke="currentColor" strokeWidth="1.5" /><path d="M5 9.4h10M5 11.5h7" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round" /></>,
    tfSounder:    <><rect x="4" y="4" width="12" height="12" rx="2" fill="none" stroke="currentColor" strokeWidth="1.6" /><path d="M5.6 5.6l8.8 8.8M14.4 5.6l-8.8 8.8" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" /></>,
    tfSounderExt: <><path d="M2.4 8.3l4.4-2.7v8.8L2.4 11.7Z" fill="currentColor" stroke="none" /><rect x="9" y="5.5" width="9" height="9" rx="1" fill="none" stroke="currentColor" strokeWidth="1.4" /><path d="M10 6.5l7 7M17 6.5l-7 7" stroke="currentColor" strokeWidth="1.2" strokeLinecap="round" /></>,
    tfSounderInt: <><rect x="6.4" y="5.5" width="9" height="9" rx="1" fill="none" stroke="currentColor" strokeWidth="1.4" /><path d="M7.4 6.5l7 7M14.4 6.5l-7 7" stroke="currentColor" strokeWidth="1.2" strokeLinecap="round" /><path d="M4.8 7l-2 3 2 3M17 7l2 3-2 3" fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round" strokeLinejoin="round" /></>,
    tfStrobe:     <><rect x="5" y="5" width="10" height="10" rx="1.6" fill="none" stroke="currentColor" strokeWidth="1.5" /><path d="M10.6 6.4l-3 4.4h2.2l-1.4 3.4 3.8-4.8h-2.1l1.4-2.4z" fill="currentColor" stroke="none" /></>,
    tfSpeaker:    <><circle cx="10" cy="10" r="6.6" fill="none" stroke="currentColor" strokeWidth="1.6" /><text x="10" y="13.1" textAnchor="middle" fontSize="7.6" fontWeight="700" fontFamily="Arial, sans-serif" fill="currentColor" stroke="none">R</text></>,
    tfSpeakerWall:<><circle cx="8.4" cy="10" r="5.2" fill="none" stroke="currentColor" strokeWidth="1.5" /><text x="8.4" y="12.6" textAnchor="middle" fontSize="6.4" fontWeight="700" fontFamily="Arial, sans-serif" fill="currentColor" stroke="none">R</text><path d="M14 6.4v7.2M14 10h-1.4" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" /></>,
    tfSpeakerDisc:<><circle cx="10" cy="10" r="6.3" fill="none" stroke="currentColor" strokeWidth="2.4" /><circle cx="10" cy="10" r="1.4" fill="currentColor" stroke="none" /></>,
    tfHorn:       <><path d="M3.5 8h2.6l6.4-3.6v11.2L6.1 12H3.5Z" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinejoin="round" /><path d="M14 7.2c1.8 1 1.8 4.6 0 5.6" fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round" /></>,
    tfMic:        <><rect x="7.4" y="2.8" width="5.2" height="7.4" rx="2.6" fill="none" stroke="currentColor" strokeWidth="1.5" /><path d="M5.4 8.8a4.6 4.6 0 0 0 9.2 0" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" /><path d="M10 13.4v3.2M7.4 16.6h5.2" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" /></>,
    tfMicDesk:    <><ellipse cx="10" cy="15.2" rx="5.6" ry="1.8" fill="none" stroke="currentColor" strokeWidth="1.4" /><path d="M10 13.5c0-4-3.2-3.6-3.2-7.2" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" /><circle cx="6.6" cy="5.4" r="2.1" fill="none" stroke="currentColor" strokeWidth="1.4" /></>,
    tfPaSystem:   <><rect x="2.4" y="5" width="15.2" height="10" rx="1.2" fill="none" stroke="currentColor" strokeWidth="1.5" /><rect x="4.4" y="7" width="5" height="4" rx="0.6" fill="none" stroke="currentColor" strokeWidth="1.1" /><path d="M11.4 7.6h4.2M11.4 9.6h4.2" stroke="currentColor" strokeWidth="1.1" strokeLinecap="round" /><circle cx="5.4" cy="13" r="0.8" fill="currentColor" stroke="none" /><circle cx="8" cy="13" r="0.8" fill="currentColor" stroke="none" /></>,
    tfPhone:      <><path d="M6.1 5.4l2.5 2.5-1.4 1.6c1 1.9 2.4 3.3 4.3 4.3l1.6-1.4 2.5 2.5-1.1 1.2c-.6.6-1.5.8-2.3.4C8.7 14.6 5.4 11.3 4.5 7.8c-.2-.8 0-1.7.6-2.3L6.1 5.4Z" fill="currentColor" stroke="none" /><path d="M13.4 3.6a4.2 4.2 0 0 1 2.9 2.9" fill="none" stroke="currentColor" strokeWidth="1.2" strokeLinecap="round" /></>,
    tfJack:       <><rect x="2.4" y="7" width="15.2" height="6" rx="1.2" fill="none" stroke="currentColor" strokeWidth="1.5" /><circle cx="10" cy="10" r="2" fill="currentColor" stroke="none" /></>,
    tfIntercom:   <><circle cx="10" cy="11.4" r="4" fill="currentColor" stroke="none" /><path d="M4.8 11.4a5.2 5.2 0 0 1 10.4 0" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" /></>,
    tfPanel:      <><rect x="3" y="3" width="14" height="14" rx="1.6" fill="none" stroke="currentColor" strokeWidth="1.5" /><rect x="5.4" y="5.4" width="9.2" height="4" rx="0.6" fill="none" stroke="currentColor" strokeWidth="1.1" /><path d="M5.6 12h2M8.6 12h2M11.6 12h2M5.6 14.4h2M8.6 14.4h2" stroke="currentColor" strokeWidth="1.2" strokeLinecap="round" /></>,
    tfSubPanel:   <><rect x="3" y="5" width="14" height="10" rx="1.6" fill="none" stroke="currentColor" strokeWidth="1.5" /><rect x="5.4" y="6.8" width="9.2" height="3.4" rx="0.6" fill="none" stroke="currentColor" strokeWidth="1.1" /><path d="M5.6 12.6h2.4M8.8 12.6h2.4M12 12.6h1.6" stroke="currentColor" strokeWidth="1.2" strokeLinecap="round" /></>,
    tfFirePanel:  <><rect x="3.5" y="2.8" width="13" height="14.4" rx="1.6" fill="none" stroke="currentColor" strokeWidth="1.4" /><circle cx="10" cy="7.8" r="1.9" fill="none" stroke="currentColor" strokeWidth="1.3" /><path d="M6.6 7.4a3.4 2.6 0 0 1 6.8 0" fill="none" stroke="currentColor" strokeWidth="1.2" strokeLinecap="round" /><path d="M7.6 14.6c0-1.4 1.1-2.4 2.4-2.4s2.4 1 2.4 2.4" fill="none" stroke="currentColor" strokeWidth="1.2" strokeLinecap="round" /></>,
    tfSmokePanel: <><rect x="5" y="2.4" width="10" height="15.2" rx="1.2" fill="none" stroke="currentColor" strokeWidth="1.5" /><path d="M7 5.4h6M7 7.2h6" stroke="currentColor" strokeWidth="1.1" strokeLinecap="round" /><circle cx="7.6" cy="10.4" r="0.8" fill="currentColor" stroke="none" /><circle cx="10" cy="10.4" r="0.8" fill="currentColor" stroke="none" /><circle cx="12.4" cy="10.4" r="0.8" fill="currentColor" stroke="none" /><circle cx="7.6" cy="13.4" r="0.8" fill="currentColor" stroke="none" /><circle cx="10" cy="13.4" r="0.8" fill="currentColor" stroke="none" /><circle cx="12.4" cy="13.4" r="0.8" fill="currentColor" stroke="none" /></>,
    tfSmokeWin:   <><rect x="3.5" y="2.8" width="13" height="14.4" rx="1.2" fill="none" stroke="currentColor" strokeWidth="1.4" /><path d="M5.5 5.8h9" stroke="currentColor" strokeWidth="1.2" strokeLinecap="round" /><circle cx="6.6" cy="9.4" r="0.8" fill="currentColor" stroke="none" /><circle cx="9" cy="9.4" r="0.8" fill="currentColor" stroke="none" /><circle cx="11.4" cy="9.4" r="0.8" fill="currentColor" stroke="none" /><circle cx="6.6" cy="12.6" r="0.8" fill="currentColor" stroke="none" /><circle cx="9" cy="12.6" r="0.8" fill="currentColor" stroke="none" /><circle cx="11.4" cy="12.6" r="0.8" fill="currentColor" stroke="none" /></>,
    tfSmokeWinCtrl:<><rect x="4.2" y="5" width="9" height="9" rx="1" fill="none" stroke="currentColor" strokeWidth="1.4" /><path d="M5.2 13l7-7" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round" /><path d="M13.2 7h4.4M15.6 4.8l2.2 2.2-2.2 2.2" fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round" strokeLinejoin="round" /></>,
    tfOperations: <><rect x="2.4" y="5.6" width="15.2" height="8.8" rx="1" fill="none" stroke="currentColor" strokeWidth="1.5" /><path d="M5 8.6h10M5 10.6h10M5 12.6h6" stroke="currentColor" strokeWidth="1.2" strokeLinecap="round" /></>,
    tfFlow:       <><rect x="2.4" y="5" width="15.2" height="10" rx="1.6" fill="none" stroke="currentColor" strokeWidth="1.5" /><text x="10" y="12.9" textAnchor="middle" fontSize="6.4" fontWeight="700" fontFamily="Arial, sans-serif" fill="currentColor" stroke="none">F.S</text></>,
    tfTamper:     <><rect x="2.4" y="5" width="15.2" height="10" rx="1.6" fill="none" stroke="currentColor" strokeWidth="1.5" /><text x="10" y="12.9" textAnchor="middle" fontSize="6.4" fontWeight="700" fontFamily="Arial, sans-serif" fill="currentColor" stroke="none">T.S</text></>,
    tfDoorWall:   <><circle cx="9.4" cy="10" r="4" fill="none" stroke="currentColor" strokeWidth="1.6" /><circle cx="9.4" cy="10" r="1.2" fill="currentColor" stroke="none" /><path d="M15.2 6.6v6.8M15.2 10h-1.8" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" /></>,
    tfDoorFloor:  <><circle cx="10" cy="7.8" r="3.7" fill="none" stroke="currentColor" strokeWidth="1.5" /><circle cx="10" cy="7.8" r="1.1" fill="currentColor" stroke="none" /><path d="M10 11.5v3" stroke="currentColor" strokeWidth="1.4" /><path d="M5.4 15h9.2" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" /></>,
  };
  if (name === 'smoke' || name === 'bell2' || name === 'heat') {
    const inner = name === 'smoke' ? SMOKE_ICON_SVG : name === 'heat' ? HEAT_ICON_SVG : SOUNDER_ICON_SVG;
    return (
      <svg width={size} height={size} viewBox="0 0 32 32" fill="currentColor" {...rest} dangerouslySetInnerHTML={{ __html: inner }} />
    );
  }
  return (
    <svg width={size} height={size} viewBox="0 0 20 20" {...rest}>{paths[name] || null}</svg>
  );
};
window.Icon = Icon;
