cybercore-css 0.2.0

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.
Files changed (381) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +479 -0
  3. package/dist/cybercore.css +3546 -0
  4. package/dist/cybercore.css.map +1 -0
  5. package/dist/cybercore.min.css +3 -0
  6. package/dist/cybercore.min.css.map +1 -0
  7. package/package.json +214 -0
  8. package/src/cybercore.d.ts +107 -0
  9. package/src/icons/README.md +378 -0
  10. package/src/icons/defs/_template.ts +27 -0
  11. package/src/icons/defs/actions/check.ts +36 -0
  12. package/src/icons/defs/actions/copy.ts +37 -0
  13. package/src/icons/defs/actions/cut.ts +44 -0
  14. package/src/icons/defs/actions/delete.ts +42 -0
  15. package/src/icons/defs/actions/download.ts +36 -0
  16. package/src/icons/defs/actions/drag.ts +60 -0
  17. package/src/icons/defs/actions/edit.ts +36 -0
  18. package/src/icons/defs/actions/filter.ts +33 -0
  19. package/src/icons/defs/actions/index.ts +28 -0
  20. package/src/icons/defs/actions/link.ts +40 -0
  21. package/src/icons/defs/actions/minus.ts +42 -0
  22. package/src/icons/defs/actions/paste.ts +39 -0
  23. package/src/icons/defs/actions/pin.ts +36 -0
  24. package/src/icons/defs/actions/plus.ts +46 -0
  25. package/src/icons/defs/actions/redo.ts +37 -0
  26. package/src/icons/defs/actions/refresh.ts +36 -0
  27. package/src/icons/defs/actions/save.ts +36 -0
  28. package/src/icons/defs/actions/search.ts +37 -0
  29. package/src/icons/defs/actions/share.ts +45 -0
  30. package/src/icons/defs/actions/sort.ts +39 -0
  31. package/src/icons/defs/actions/undo.ts +37 -0
  32. package/src/icons/defs/actions/unlink.ts +44 -0
  33. package/src/icons/defs/actions/upload.ts +36 -0
  34. package/src/icons/defs/actions/x.ts +40 -0
  35. package/src/icons/defs/communication/at-sign.ts +37 -0
  36. package/src/icons/defs/communication/bell-off.ts +44 -0
  37. package/src/icons/defs/communication/bell.ts +37 -0
  38. package/src/icons/defs/communication/inbox.ts +40 -0
  39. package/src/icons/defs/communication/index.ts +15 -0
  40. package/src/icons/defs/communication/mail.ts +40 -0
  41. package/src/icons/defs/communication/message.ts +42 -0
  42. package/src/icons/defs/communication/phone-off.ts +35 -0
  43. package/src/icons/defs/communication/phone.ts +36 -0
  44. package/src/icons/defs/communication/send.ts +37 -0
  45. package/src/icons/defs/communication/video-call.ts +44 -0
  46. package/src/icons/defs/data/calendar.ts +55 -0
  47. package/src/icons/defs/data/chart-bar.ts +48 -0
  48. package/src/icons/defs/data/chart-line.ts +41 -0
  49. package/src/icons/defs/data/chart-pie.ts +42 -0
  50. package/src/icons/defs/data/clock.ts +37 -0
  51. package/src/icons/defs/data/cloud-download.ts +41 -0
  52. package/src/icons/defs/data/cloud-upload.ts +41 -0
  53. package/src/icons/defs/data/cloud.ts +36 -0
  54. package/src/icons/defs/data/database.ts +50 -0
  55. package/src/icons/defs/data/hash.ts +43 -0
  56. package/src/icons/defs/data/index.ts +19 -0
  57. package/src/icons/defs/data/percent.ts +39 -0
  58. package/src/icons/defs/data/sync.ts +43 -0
  59. package/src/icons/defs/data/table.ts +50 -0
  60. package/src/icons/defs/data/timer.ts +47 -0
  61. package/src/icons/defs/files/archive.ts +39 -0
  62. package/src/icons/defs/files/attachment.ts +34 -0
  63. package/src/icons/defs/files/clipboard.ts +45 -0
  64. package/src/icons/defs/files/file-archive.ts +45 -0
  65. package/src/icons/defs/files/file-audio.ts +41 -0
  66. package/src/icons/defs/files/file-code.ts +41 -0
  67. package/src/icons/defs/files/file-image.ts +41 -0
  68. package/src/icons/defs/files/file-minus.ts +37 -0
  69. package/src/icons/defs/files/file-plus.ts +41 -0
  70. package/src/icons/defs/files/file-text.ts +41 -0
  71. package/src/icons/defs/files/file-video.ts +37 -0
  72. package/src/icons/defs/files/file.ts +34 -0
  73. package/src/icons/defs/files/folder-open.ts +34 -0
  74. package/src/icons/defs/files/folder-plus.ts +38 -0
  75. package/src/icons/defs/files/folder.ts +30 -0
  76. package/src/icons/defs/files/index.ts +20 -0
  77. package/src/icons/defs/index.ts +58 -0
  78. package/src/icons/defs/media/camera-off.ts +39 -0
  79. package/src/icons/defs/media/camera.ts +34 -0
  80. package/src/icons/defs/media/fast-forward.ts +34 -0
  81. package/src/icons/defs/media/image.ts +39 -0
  82. package/src/icons/defs/media/index.ts +22 -0
  83. package/src/icons/defs/media/mic-off.ts +44 -0
  84. package/src/icons/defs/media/mic.ts +39 -0
  85. package/src/icons/defs/media/music.ts +39 -0
  86. package/src/icons/defs/media/pause.ts +36 -0
  87. package/src/icons/defs/media/play.ts +34 -0
  88. package/src/icons/defs/media/rewind.ts +34 -0
  89. package/src/icons/defs/media/skip-back.ts +34 -0
  90. package/src/icons/defs/media/skip-forward.ts +34 -0
  91. package/src/icons/defs/media/stop.ts +34 -0
  92. package/src/icons/defs/media/video.ts +39 -0
  93. package/src/icons/defs/media/volume-high.ts +39 -0
  94. package/src/icons/defs/media/volume-low.ts +34 -0
  95. package/src/icons/defs/media/volume-off.ts +34 -0
  96. package/src/icons/defs/navigation/arrow-down.ts +34 -0
  97. package/src/icons/defs/navigation/arrow-left.ts +34 -0
  98. package/src/icons/defs/navigation/arrow-right.ts +34 -0
  99. package/src/icons/defs/navigation/arrow-up.ts +34 -0
  100. package/src/icons/defs/navigation/chevron-down.ts +31 -0
  101. package/src/icons/defs/navigation/chevron-left.ts +31 -0
  102. package/src/icons/defs/navigation/chevron-right.ts +31 -0
  103. package/src/icons/defs/navigation/chevron-up.ts +31 -0
  104. package/src/icons/defs/navigation/external-link.ts +37 -0
  105. package/src/icons/defs/navigation/home.ts +34 -0
  106. package/src/icons/defs/navigation/index.ts +19 -0
  107. package/src/icons/defs/navigation/maximize.ts +36 -0
  108. package/src/icons/defs/navigation/menu-dots.ts +42 -0
  109. package/src/icons/defs/navigation/menu.ts +42 -0
  110. package/src/icons/defs/navigation/minimize.ts +32 -0
  111. package/src/icons/defs/security/eye-off.ts +42 -0
  112. package/src/icons/defs/security/eye.ts +37 -0
  113. package/src/icons/defs/security/fingerprint.ts +51 -0
  114. package/src/icons/defs/security/index.ts +20 -0
  115. package/src/icons/defs/security/key.ts +43 -0
  116. package/src/icons/defs/security/lock.ts +40 -0
  117. package/src/icons/defs/security/log-in.ts +40 -0
  118. package/src/icons/defs/security/log-out.ts +40 -0
  119. package/src/icons/defs/security/shield-check.ts +34 -0
  120. package/src/icons/defs/security/shield-x.ts +38 -0
  121. package/src/icons/defs/security/shield.ts +36 -0
  122. package/src/icons/defs/security/unlock.ts +40 -0
  123. package/src/icons/defs/security/user-minus.ts +39 -0
  124. package/src/icons/defs/security/user-plus.ts +43 -0
  125. package/src/icons/defs/security/user.ts +41 -0
  126. package/src/icons/defs/security/users.ts +43 -0
  127. package/src/icons/defs/social/award.ts +41 -0
  128. package/src/icons/defs/social/bookmark-filled.ts +24 -0
  129. package/src/icons/defs/social/bookmark.ts +25 -0
  130. package/src/icons/defs/social/flag.ts +35 -0
  131. package/src/icons/defs/social/heart-filled.ts +24 -0
  132. package/src/icons/defs/social/heart.ts +25 -0
  133. package/src/icons/defs/social/index.ts +11 -0
  134. package/src/icons/defs/social/star-filled.ts +24 -0
  135. package/src/icons/defs/social/star.ts +25 -0
  136. package/src/icons/defs/social/thumbs-down.ts +42 -0
  137. package/src/icons/defs/social/thumbs-up.ts +42 -0
  138. package/src/icons/defs/social/trending.ts +36 -0
  139. package/src/icons/defs/status/battery-charging.ts +30 -0
  140. package/src/icons/defs/status/battery-full.ts +30 -0
  141. package/src/icons/defs/status/battery-low.ts +31 -0
  142. package/src/icons/defs/status/error.ts +31 -0
  143. package/src/icons/defs/status/help.ts +30 -0
  144. package/src/icons/defs/status/index.ts +12 -0
  145. package/src/icons/defs/status/info.ts +30 -0
  146. package/src/icons/defs/status/loading.ts +52 -0
  147. package/src/icons/defs/status/offline.ts +28 -0
  148. package/src/icons/defs/status/online.ts +30 -0
  149. package/src/icons/defs/status/progress.ts +31 -0
  150. package/src/icons/defs/status/success.ts +27 -0
  151. package/src/icons/defs/status/warning.ts +30 -0
  152. package/src/icons/defs/tech/api.ts +55 -0
  153. package/src/icons/defs/tech/bluetooth.ts +33 -0
  154. package/src/icons/defs/tech/bug.ts +58 -0
  155. package/src/icons/defs/tech/chip.ts +80 -0
  156. package/src/icons/defs/tech/circuit.ts +57 -0
  157. package/src/icons/defs/tech/code.ts +36 -0
  158. package/src/icons/defs/tech/cpu.ts +58 -0
  159. package/src/icons/defs/tech/git-branch.ts +41 -0
  160. package/src/icons/defs/tech/git-commit.ts +38 -0
  161. package/src/icons/defs/tech/git-merge.ts +46 -0
  162. package/src/icons/defs/tech/git-pull.ts +50 -0
  163. package/src/icons/defs/tech/globe.ts +36 -0
  164. package/src/icons/defs/tech/index.ts +27 -0
  165. package/src/icons/defs/tech/memory.ts +61 -0
  166. package/src/icons/defs/tech/qr-code.ts +81 -0
  167. package/src/icons/defs/tech/server.ts +45 -0
  168. package/src/icons/defs/tech/settings.ts +33 -0
  169. package/src/icons/defs/tech/signal.ts +43 -0
  170. package/src/icons/defs/tech/sliders.ts +63 -0
  171. package/src/icons/defs/tech/terminal.ts +36 -0
  172. package/src/icons/defs/tech/wifi-off.ts +43 -0
  173. package/src/icons/defs/tech/wifi.ts +38 -0
  174. package/src/icons/defs/tech/zap.ts +30 -0
  175. package/src/icons/icon-list.ts +305 -0
  176. package/src/icons/index.ts +95 -0
  177. package/src/icons/individual.ts +210 -0
  178. package/src/icons/registry.ts +2276 -0
  179. package/src/icons/svg/actions/check.svg +5 -0
  180. package/src/icons/svg/actions/copy.svg +6 -0
  181. package/src/icons/svg/actions/cut.svg +7 -0
  182. package/src/icons/svg/actions/delete.svg +7 -0
  183. package/src/icons/svg/actions/download.svg +5 -0
  184. package/src/icons/svg/actions/drag.svg +8 -0
  185. package/src/icons/svg/actions/edit.svg +5 -0
  186. package/src/icons/svg/actions/filter.svg +4 -0
  187. package/src/icons/svg/actions/link.svg +6 -0
  188. package/src/icons/svg/actions/minus.svg +7 -0
  189. package/src/icons/svg/actions/paste.svg +6 -0
  190. package/src/icons/svg/actions/pin.svg +5 -0
  191. package/src/icons/svg/actions/plus.svg +8 -0
  192. package/src/icons/svg/actions/redo.svg +5 -0
  193. package/src/icons/svg/actions/refresh.svg +5 -0
  194. package/src/icons/svg/actions/save.svg +5 -0
  195. package/src/icons/svg/actions/search.svg +5 -0
  196. package/src/icons/svg/actions/share.svg +7 -0
  197. package/src/icons/svg/actions/sort.svg +6 -0
  198. package/src/icons/svg/actions/undo.svg +5 -0
  199. package/src/icons/svg/actions/unlink.svg +7 -0
  200. package/src/icons/svg/actions/upload.svg +5 -0
  201. package/src/icons/svg/actions/x.svg +6 -0
  202. package/src/icons/svg/communication/at-sign.svg +5 -0
  203. package/src/icons/svg/communication/bell-off.svg +8 -0
  204. package/src/icons/svg/communication/bell.svg +5 -0
  205. package/src/icons/svg/communication/inbox.svg +6 -0
  206. package/src/icons/svg/communication/mail.svg +6 -0
  207. package/src/icons/svg/communication/message.svg +6 -0
  208. package/src/icons/svg/communication/phone-off.svg +4 -0
  209. package/src/icons/svg/communication/phone.svg +5 -0
  210. package/src/icons/svg/communication/send.svg +5 -0
  211. package/src/icons/svg/communication/video-call.svg +7 -0
  212. package/src/icons/svg/data/calendar.svg +11 -0
  213. package/src/icons/svg/data/chart-bar.svg +6 -0
  214. package/src/icons/svg/data/chart-line.svg +5 -0
  215. package/src/icons/svg/data/chart-pie.svg +6 -0
  216. package/src/icons/svg/data/clock.svg +5 -0
  217. package/src/icons/svg/data/cloud-download.svg +5 -0
  218. package/src/icons/svg/data/cloud-upload.svg +5 -0
  219. package/src/icons/svg/data/cloud.svg +4 -0
  220. package/src/icons/svg/data/database.svg +7 -0
  221. package/src/icons/svg/data/hash.svg +6 -0
  222. package/src/icons/svg/data/percent.svg +5 -0
  223. package/src/icons/svg/data/sync.svg +6 -0
  224. package/src/icons/svg/data/table.svg +7 -0
  225. package/src/icons/svg/data/timer.svg +7 -0
  226. package/src/icons/svg/files/archive.svg +5 -0
  227. package/src/icons/svg/files/attachment.svg +4 -0
  228. package/src/icons/svg/files/clipboard.svg +6 -0
  229. package/src/icons/svg/files/file-archive.svg +7 -0
  230. package/src/icons/svg/files/file-audio.svg +6 -0
  231. package/src/icons/svg/files/file-code.svg +6 -0
  232. package/src/icons/svg/files/file-image.svg +6 -0
  233. package/src/icons/svg/files/file-minus.svg +5 -0
  234. package/src/icons/svg/files/file-plus.svg +6 -0
  235. package/src/icons/svg/files/file-text.svg +6 -0
  236. package/src/icons/svg/files/file-video.svg +5 -0
  237. package/src/icons/svg/files/file.svg +4 -0
  238. package/src/icons/svg/files/folder-open.svg +4 -0
  239. package/src/icons/svg/files/folder-plus.svg +5 -0
  240. package/src/icons/svg/files/folder.svg +3 -0
  241. package/src/icons/svg/media/camera-off.svg +5 -0
  242. package/src/icons/svg/media/camera.svg +4 -0
  243. package/src/icons/svg/media/fast-forward.svg +4 -0
  244. package/src/icons/svg/media/image.svg +5 -0
  245. package/src/icons/svg/media/mic-off.svg +6 -0
  246. package/src/icons/svg/media/mic.svg +5 -0
  247. package/src/icons/svg/media/music.svg +5 -0
  248. package/src/icons/svg/media/pause.svg +4 -0
  249. package/src/icons/svg/media/play.svg +4 -0
  250. package/src/icons/svg/media/rewind.svg +4 -0
  251. package/src/icons/svg/media/skip-back.svg +4 -0
  252. package/src/icons/svg/media/skip-forward.svg +4 -0
  253. package/src/icons/svg/media/stop.svg +4 -0
  254. package/src/icons/svg/media/video.svg +5 -0
  255. package/src/icons/svg/media/volume-high.svg +5 -0
  256. package/src/icons/svg/media/volume-low.svg +4 -0
  257. package/src/icons/svg/media/volume-off.svg +4 -0
  258. package/src/icons/svg/navigation/arrow-down.svg +4 -0
  259. package/src/icons/svg/navigation/arrow-left.svg +4 -0
  260. package/src/icons/svg/navigation/arrow-right.svg +4 -0
  261. package/src/icons/svg/navigation/arrow-up.svg +4 -0
  262. package/src/icons/svg/navigation/chevron-down.svg +3 -0
  263. package/src/icons/svg/navigation/chevron-left.svg +3 -0
  264. package/src/icons/svg/navigation/chevron-right.svg +3 -0
  265. package/src/icons/svg/navigation/chevron-up.svg +3 -0
  266. package/src/icons/svg/navigation/external-link.svg +5 -0
  267. package/src/icons/svg/navigation/home.svg +4 -0
  268. package/src/icons/svg/navigation/maximize.svg +3 -0
  269. package/src/icons/svg/navigation/menu-dots.svg +5 -0
  270. package/src/icons/svg/navigation/menu.svg +5 -0
  271. package/src/icons/svg/navigation/minimize.svg +3 -0
  272. package/src/icons/svg/security/eye-off.svg +6 -0
  273. package/src/icons/svg/security/eye.svg +5 -0
  274. package/src/icons/svg/security/fingerprint.svg +9 -0
  275. package/src/icons/svg/security/key.svg +7 -0
  276. package/src/icons/svg/security/lock.svg +6 -0
  277. package/src/icons/svg/security/log-in.svg +6 -0
  278. package/src/icons/svg/security/log-out.svg +6 -0
  279. package/src/icons/svg/security/shield-check.svg +4 -0
  280. package/src/icons/svg/security/shield-x.svg +5 -0
  281. package/src/icons/svg/security/shield.svg +5 -0
  282. package/src/icons/svg/security/unlock.svg +6 -0
  283. package/src/icons/svg/security/user-minus.svg +5 -0
  284. package/src/icons/svg/security/user-plus.svg +6 -0
  285. package/src/icons/svg/security/user.svg +6 -0
  286. package/src/icons/svg/security/users.svg +6 -0
  287. package/src/icons/svg/social/award.svg +5 -0
  288. package/src/icons/svg/social/bookmark-filled.svg +3 -0
  289. package/src/icons/svg/social/bookmark.svg +3 -0
  290. package/src/icons/svg/social/flag.svg +4 -0
  291. package/src/icons/svg/social/heart-filled.svg +3 -0
  292. package/src/icons/svg/social/heart.svg +3 -0
  293. package/src/icons/svg/social/star-filled.svg +3 -0
  294. package/src/icons/svg/social/star.svg +3 -0
  295. package/src/icons/svg/social/thumbs-down.svg +5 -0
  296. package/src/icons/svg/social/thumbs-up.svg +5 -0
  297. package/src/icons/svg/social/trending.svg +4 -0
  298. package/src/icons/svg/status/battery-charging.svg +5 -0
  299. package/src/icons/svg/status/battery-full.svg +5 -0
  300. package/src/icons/svg/status/battery-low.svg +5 -0
  301. package/src/icons/svg/status/error.svg +5 -0
  302. package/src/icons/svg/status/help.svg +5 -0
  303. package/src/icons/svg/status/info.svg +5 -0
  304. package/src/icons/svg/status/loading.svg +10 -0
  305. package/src/icons/svg/status/offline.svg +4 -0
  306. package/src/icons/svg/status/online.svg +5 -0
  307. package/src/icons/svg/status/progress.svg +5 -0
  308. package/src/icons/svg/status/success.svg +4 -0
  309. package/src/icons/svg/status/warning.svg +5 -0
  310. package/src/icons/svg/tech/api.svg +10 -0
  311. package/src/icons/svg/tech/bluetooth.svg +4 -0
  312. package/src/icons/svg/tech/bug.svg +11 -0
  313. package/src/icons/svg/tech/chip.svg +16 -0
  314. package/src/icons/svg/tech/circuit.svg +15 -0
  315. package/src/icons/svg/tech/code.svg +5 -0
  316. package/src/icons/svg/tech/cpu.svg +12 -0
  317. package/src/icons/svg/tech/git-branch.svg +6 -0
  318. package/src/icons/svg/tech/git-commit.svg +5 -0
  319. package/src/icons/svg/tech/git-merge.svg +7 -0
  320. package/src/icons/svg/tech/git-pull.svg +8 -0
  321. package/src/icons/svg/tech/globe.svg +5 -0
  322. package/src/icons/svg/tech/memory.svg +12 -0
  323. package/src/icons/svg/tech/qr-code.svg +9 -0
  324. package/src/icons/svg/tech/server.svg +7 -0
  325. package/src/icons/svg/tech/settings.svg +4 -0
  326. package/src/icons/svg/tech/signal.svg +7 -0
  327. package/src/icons/svg/tech/sliders.svg +11 -0
  328. package/src/icons/svg/tech/terminal.svg +5 -0
  329. package/src/icons/svg/tech/wifi-off.svg +7 -0
  330. package/src/icons/svg/tech/wifi.svg +6 -0
  331. package/src/icons/svg/tech/zap.svg +3 -0
  332. package/src/icons/types.ts +73 -0
  333. package/src/icons/utils.ts +216 -0
  334. package/src/scss/components/_alerts.scss +76 -0
  335. package/src/scss/components/_badges.scss +198 -0
  336. package/src/scss/components/_buttons.scss +180 -0
  337. package/src/scss/components/_cards.scss +178 -0
  338. package/src/scss/components/_dropdown.scss +213 -0
  339. package/src/scss/components/_index.scss +19 -0
  340. package/src/scss/components/_inputs.scss +193 -0
  341. package/src/scss/components/_modal.scss +303 -0
  342. package/src/scss/components/_nav.scss +116 -0
  343. package/src/scss/components/_progress.scss +218 -0
  344. package/src/scss/components/_skeleton.scss +337 -0
  345. package/src/scss/components/_spinner.scss +300 -0
  346. package/src/scss/components/_tables.scss +244 -0
  347. package/src/scss/components/_tabs.scss +327 -0
  348. package/src/scss/components/_terminal.scss +259 -0
  349. package/src/scss/core/_base.scss +25 -0
  350. package/src/scss/core/_index.scss +6 -0
  351. package/src/scss/core/_layers.scss +5 -0
  352. package/src/scss/core/_mixins.scss +96 -0
  353. package/src/scss/core/_reset.scss +26 -0
  354. package/src/scss/core/_typography.scss +43 -0
  355. package/src/scss/core/_variables.scss +163 -0
  356. package/src/scss/cybercore.scss +46 -0
  357. package/src/scss/effects/_datastream.scss +43 -0
  358. package/src/scss/effects/_glitch.scss +389 -0
  359. package/src/scss/effects/_index.scss +9 -0
  360. package/src/scss/effects/_neon-border.scss +107 -0
  361. package/src/scss/effects/_noise.scss +75 -0
  362. package/src/scss/effects/_scanlines.scss +86 -0
  363. package/src/scss/utilities/_accessibility.scss +57 -0
  364. package/src/scss/utilities/_animation.scss +246 -0
  365. package/src/scss/utilities/_backgrounds.scss +201 -0
  366. package/src/scss/utilities/_borders.scss +198 -0
  367. package/src/scss/utilities/_display.scss +33 -0
  368. package/src/scss/utilities/_filters.scss +279 -0
  369. package/src/scss/utilities/_flex.scss +95 -0
  370. package/src/scss/utilities/_grid.scss +68 -0
  371. package/src/scss/utilities/_icons.scss +152 -0
  372. package/src/scss/utilities/_index.scss +35 -0
  373. package/src/scss/utilities/_interactivity.scss +186 -0
  374. package/src/scss/utilities/_layout.scss +202 -0
  375. package/src/scss/utilities/_position.scss +168 -0
  376. package/src/scss/utilities/_shadows.scss +164 -0
  377. package/src/scss/utilities/_sizing.scss +229 -0
  378. package/src/scss/utilities/_spacing.scss +185 -0
  379. package/src/scss/utilities/_text.scss +177 -0
  380. package/src/scss/utilities/_transforms.scss +212 -0
  381. package/src/scss/utilities/_transitions.scss +174 -0
@@ -0,0 +1,2276 @@
1
+ /**
2
+ * Cyber Icons Registry
3
+ * Maps icon names to their SVG definitions
4
+ *
5
+ * Icons are now loaded from individual definition files in ./defs/
6
+ * which include all variants (outline, solid, duotone, glitch).
7
+ *
8
+ * For backwards compatibility, this file also contains inline definitions
9
+ * that will be merged/overridden by the defs/ definitions.
10
+ */
11
+
12
+ import type { IconDefinition, IconRegistry } from './types';
13
+ import { buildRegistry } from './defs';
14
+
15
+ // Build the primary registry from definition files (includes all variants)
16
+ const defsRegistry = buildRegistry();
17
+
18
+ /**
19
+ * Legacy icon definitions (kept for reference, overridden by defs/)
20
+ * New icons should be added to ./defs/{category}/{icon-name}.ts
21
+ */
22
+ const legacyIcons: IconRegistry = {
23
+ // ═══════════════════════════════════════════════════════════════════════════
24
+ // EXAMPLE ICONS - Reference implementations
25
+ // ═══════════════════════════════════════════════════════════════════════════
26
+
27
+ chip: {
28
+ name: 'chip',
29
+ category: 'tech',
30
+ description: 'CPU/processor chip with connection pins',
31
+ tags: ['hardware', 'cpu', 'processor', 'tech'],
32
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
33
+ <rect x="6" y="6" width="12" height="12" rx="1"/>
34
+ <rect x="9" y="9" width="6" height="6" rx="0.5"/>
35
+ <line x1="8" y1="6" x2="8" y2="3"/>
36
+ <line x1="12" y1="6" x2="12" y2="3"/>
37
+ <line x1="16" y1="6" x2="16" y2="3"/>
38
+ <line x1="8" y1="18" x2="8" y2="21"/>
39
+ <line x1="12" y1="18" x2="12" y2="21"/>
40
+ <line x1="16" y1="18" x2="16" y2="21"/>
41
+ <line x1="6" y1="8" x2="3" y2="8"/>
42
+ <line x1="6" y1="12" x2="3" y2="12"/>
43
+ <line x1="6" y1="16" x2="3" y2="16"/>
44
+ <line x1="18" y1="8" x2="21" y2="8"/>
45
+ <line x1="18" y1="12" x2="21" y2="12"/>
46
+ <line x1="18" y1="16" x2="21" y2="16"/>
47
+ </svg>`,
48
+ },
49
+
50
+ signal: {
51
+ name: 'signal',
52
+ category: 'tech',
53
+ description: 'Broadcast/wireless signal with waves',
54
+ tags: ['wifi', 'wireless', 'connection', 'broadcast'],
55
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
56
+ <circle cx="12" cy="12" r="2"/>
57
+ <path d="M8.5 8.5a5 5 0 0 1 7 0"/>
58
+ <path d="M15.5 15.5a5 5 0 0 1-7 0"/>
59
+ <path d="M5.5 5.5a9 9 0 0 1 13 0"/>
60
+ <path d="M18.5 18.5a9 9 0 0 1-13 0"/>
61
+ <line x1="12" y1="14" x2="12" y2="21"/>
62
+ <polyline points="9 18 12 21 15 18"/>
63
+ </svg>`,
64
+ },
65
+
66
+ terminal: {
67
+ name: 'terminal',
68
+ category: 'tech',
69
+ description: 'Command line terminal interface',
70
+ tags: ['cli', 'command', 'shell', 'console'],
71
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
72
+ <rect x="2" y="4" width="20" height="16" rx="2"/>
73
+ <line x1="2" y1="8" x2="22" y2="8"/>
74
+ <circle cx="5" cy="6" r="0.5" fill="currentColor"/>
75
+ <circle cx="7.5" cy="6" r="0.5" fill="currentColor"/>
76
+ <circle cx="10" cy="6" r="0.5" fill="currentColor"/>
77
+ <polyline points="6 12 9 14.5 6 17"/>
78
+ <line x1="11" y1="17" x2="17" y2="17"/>
79
+ </svg>`,
80
+ },
81
+
82
+ // ═══════════════════════════════════════════════════════════════════════════
83
+ // NAVIGATION ICONS
84
+ // ═══════════════════════════════════════════════════════════════════════════
85
+
86
+ 'arrow-up': {
87
+ name: 'arrow-up',
88
+ category: 'navigation',
89
+ description: 'Upward arrow with cyberpunk chamfered tip',
90
+ tags: ['arrow', 'up', 'navigation', 'direction'],
91
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
92
+ <line x1="12" y1="20" x2="12" y2="4"/>
93
+ <polyline points="5 11 12 4 19 11"/>
94
+ <line x1="12" y1="4" x2="10" y2="6"/>
95
+ <line x1="12" y1="4" x2="14" y2="6"/>
96
+ </svg>`,
97
+ },
98
+
99
+ 'arrow-down': {
100
+ name: 'arrow-down',
101
+ category: 'navigation',
102
+ description: 'Downward arrow with cyberpunk chamfered tip',
103
+ tags: ['arrow', 'down', 'navigation', 'direction'],
104
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
105
+ <line x1="12" y1="4" x2="12" y2="20"/>
106
+ <polyline points="5 13 12 20 19 13"/>
107
+ <line x1="12" y1="20" x2="10" y2="18"/>
108
+ <line x1="12" y1="20" x2="14" y2="18"/>
109
+ </svg>`,
110
+ },
111
+
112
+ 'arrow-left': {
113
+ name: 'arrow-left',
114
+ category: 'navigation',
115
+ description: 'Leftward arrow with cyberpunk chamfered tip',
116
+ tags: ['arrow', 'left', 'navigation', 'direction', 'back'],
117
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
118
+ <line x1="20" y1="12" x2="4" y2="12"/>
119
+ <polyline points="11 5 4 12 11 19"/>
120
+ <line x1="4" y1="12" x2="6" y2="10"/>
121
+ <line x1="4" y1="12" x2="6" y2="14"/>
122
+ </svg>`,
123
+ },
124
+
125
+ 'arrow-right': {
126
+ name: 'arrow-right',
127
+ category: 'navigation',
128
+ description: 'Rightward arrow with cyberpunk chamfered tip',
129
+ tags: ['arrow', 'right', 'navigation', 'direction', 'forward'],
130
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
131
+ <line x1="4" y1="12" x2="20" y2="12"/>
132
+ <polyline points="13 5 20 12 13 19"/>
133
+ <line x1="20" y1="12" x2="18" y2="10"/>
134
+ <line x1="20" y1="12" x2="18" y2="14"/>
135
+ </svg>`,
136
+ },
137
+
138
+ 'chevron-up': {
139
+ name: 'chevron-up',
140
+ category: 'navigation',
141
+ description: 'Upward chevron with angular geometry',
142
+ tags: ['chevron', 'up', 'navigation', 'collapse', 'expand'],
143
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
144
+ <polyline points="18 15 12 9 6 15"/>
145
+ </svg>`,
146
+ },
147
+
148
+ 'chevron-down': {
149
+ name: 'chevron-down',
150
+ category: 'navigation',
151
+ description: 'Downward chevron with angular geometry',
152
+ tags: ['chevron', 'down', 'navigation', 'collapse', 'expand'],
153
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
154
+ <polyline points="6 9 12 15 18 9"/>
155
+ </svg>`,
156
+ },
157
+
158
+ 'chevron-left': {
159
+ name: 'chevron-left',
160
+ category: 'navigation',
161
+ description: 'Leftward chevron with angular geometry',
162
+ tags: ['chevron', 'left', 'navigation', 'back', 'previous'],
163
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
164
+ <polyline points="15 18 9 12 15 6"/>
165
+ </svg>`,
166
+ },
167
+
168
+ 'chevron-right': {
169
+ name: 'chevron-right',
170
+ category: 'navigation',
171
+ description: 'Rightward chevron with angular geometry',
172
+ tags: ['chevron', 'right', 'navigation', 'forward', 'next'],
173
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
174
+ <polyline points="9 18 15 12 9 6"/>
175
+ </svg>`,
176
+ },
177
+
178
+ home: {
179
+ name: 'home',
180
+ category: 'navigation',
181
+ description: 'Home/dashboard icon with tech-inspired geometric house',
182
+ tags: ['home', 'dashboard', 'main', 'start'],
183
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
184
+ <path d="M3 10l9-7 9 7v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>
185
+ <path d="M9 21V13h6v8"/>
186
+ <line x1="12" y1="3" x2="12" y2="7"/>
187
+ <circle cx="12" cy="7" r="0.5" fill="currentColor"/>
188
+ </svg>`,
189
+ },
190
+
191
+ menu: {
192
+ name: 'menu',
193
+ category: 'navigation',
194
+ description: 'Hamburger menu with tech accent dots',
195
+ tags: ['menu', 'hamburger', 'navigation', 'drawer'],
196
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
197
+ <line x1="4" y1="6" x2="20" y2="6"/>
198
+ <line x1="4" y1="12" x2="20" y2="12"/>
199
+ <line x1="4" y1="18" x2="20" y2="18"/>
200
+ <circle cx="3" cy="6" r="0.5" fill="currentColor"/>
201
+ <circle cx="3" cy="12" r="0.5" fill="currentColor"/>
202
+ <circle cx="3" cy="18" r="0.5" fill="currentColor"/>
203
+ </svg>`,
204
+ },
205
+
206
+ 'menu-dots': {
207
+ name: 'menu-dots',
208
+ category: 'navigation',
209
+ description: 'Three dots kebab menu with subtle gaps',
210
+ tags: ['menu', 'dots', 'kebab', 'more', 'options'],
211
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
212
+ <circle cx="12" cy="6" r="1.5"/>
213
+ <circle cx="12" cy="12" r="1.5"/>
214
+ <circle cx="12" cy="18" r="1.5"/>
215
+ <line x1="11" y1="6" x2="10.5" y2="6"/>
216
+ <line x1="13" y1="6" x2="13.5" y2="6"/>
217
+ </svg>`,
218
+ },
219
+
220
+ 'external-link': {
221
+ name: 'external-link',
222
+ category: 'navigation',
223
+ description: 'External link with diagonal arrow breaking boundary',
224
+ tags: ['external', 'link', 'open', 'new-tab', 'outside'],
225
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
226
+ <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/>
227
+ <polyline points="15 3 21 3 21 9"/>
228
+ <line x1="10" y1="14" x2="21" y2="3"/>
229
+ <line x1="21" y1="3" x2="19" y2="5"/>
230
+ </svg>`,
231
+ },
232
+
233
+ maximize: {
234
+ name: 'maximize',
235
+ category: 'navigation',
236
+ description: 'Maximize/fullscreen with expanding corner brackets',
237
+ tags: ['maximize', 'fullscreen', 'expand', 'enlarge'],
238
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
239
+ <polyline points="15 3 21 3 21 9"/>
240
+ <polyline points="9 21 3 21 3 15"/>
241
+ <polyline points="21 15 21 21 15 21"/>
242
+ <polyline points="3 9 3 3 9 3"/>
243
+ <line x1="21" y1="3" x2="18" y2="6"/>
244
+ <line x1="3" y1="21" x2="6" y2="18"/>
245
+ </svg>`,
246
+ },
247
+
248
+ minimize: {
249
+ name: 'minimize',
250
+ category: 'navigation',
251
+ description: 'Minimize/exit fullscreen with contracting corner brackets',
252
+ tags: ['minimize', 'exit-fullscreen', 'contract', 'reduce'],
253
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
254
+ <polyline points="4 14 10 14 10 8"/>
255
+ <polyline points="20 10 14 10 14 16"/>
256
+ <polyline points="14 8 14 14 20 14"/>
257
+ <polyline points="10 16 10 10 4 10"/>
258
+ <line x1="4" y1="14" x2="6" y2="16"/>
259
+ <line x1="20" y1="10" x2="18" y2="8"/>
260
+ </svg>`,
261
+ },
262
+
263
+ // ═══════════════════════════════════════════════════════════════════════════
264
+ // ACTIONS CATEGORY - User interaction and common actions
265
+ // ═══════════════════════════════════════════════════════════════════════════
266
+
267
+ search: {
268
+ name: 'search',
269
+ category: 'actions',
270
+ description: 'Search or find content',
271
+ tags: ['search', 'find', 'magnify', 'lookup'],
272
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
273
+ <circle cx="10.5" cy="10.5" r="6.5"/>
274
+ <line x1="15" y1="15" x2="21" y2="21"/>
275
+ <line x1="8" y1="10.5" x2="13" y2="10.5"/>
276
+ </svg>`,
277
+ },
278
+
279
+ filter: {
280
+ name: 'filter',
281
+ category: 'actions',
282
+ description: 'Filter results or data',
283
+ tags: ['filter', 'funnel', 'sort', 'refine'],
284
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
285
+ <polygon points="4 4 4 6 10 13 10 20 14 22 14 13 20 6 20 4"/>
286
+ <line x1="4" y1="4" x2="20" y2="4"/>
287
+ <circle cx="12" cy="9.5" r="1" fill="currentColor"/>
288
+ </svg>`,
289
+ },
290
+
291
+ sort: {
292
+ name: 'sort',
293
+ category: 'actions',
294
+ description: 'Sort order ascending/descending',
295
+ tags: ['sort', 'order', 'arrange', 'organize'],
296
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
297
+ <line x1="4" y1="6" x2="11" y2="6"/>
298
+ <line x1="4" y1="12" x2="15" y2="12"/>
299
+ <line x1="4" y1="18" x2="18" y2="18"/>
300
+ <polyline points="17 4 20 7 17 10"/>
301
+ <line x1="20" y1="7" x2="20" y2="20"/>
302
+ </svg>`,
303
+ },
304
+
305
+ edit: {
306
+ name: 'edit',
307
+ category: 'actions',
308
+ description: 'Edit or modify content',
309
+ tags: ['edit', 'pencil', 'modify', 'write'],
310
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
311
+ <path d="M17 3l4 4-12 12H5v-4L17 3z"/>
312
+ <line x1="13" y1="7" x2="17" y2="11"/>
313
+ <path d="M19 21H9"/>
314
+ </svg>`,
315
+ },
316
+
317
+ delete: {
318
+ name: 'delete',
319
+ category: 'actions',
320
+ description: 'Delete or remove item',
321
+ tags: ['delete', 'trash', 'remove', 'bin'],
322
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
323
+ <polyline points="3 6 5 6 21 6"/>
324
+ <path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/>
325
+ <line x1="10" y1="11" x2="10" y2="17"/>
326
+ <line x1="14" y1="11" x2="14" y2="17"/>
327
+ <path d="M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"/>
328
+ <line x1="8" y1="3" x2="9" y2="4"/>
329
+ <line x1="15" y1="4" x2="16" y2="3"/>
330
+ </svg>`,
331
+ },
332
+
333
+ copy: {
334
+ name: 'copy',
335
+ category: 'actions',
336
+ description: 'Copy to clipboard',
337
+ tags: ['copy', 'duplicate', 'clipboard', 'clone'],
338
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
339
+ <rect x="9" y="9" width="13" height="13" rx="2"/>
340
+ <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>
341
+ <line x1="9" y1="14" x2="9" y2="14.01"/>
342
+ <line x1="13" y1="14" x2="13" y2="14.01"/>
343
+ </svg>`,
344
+ },
345
+
346
+ paste: {
347
+ name: 'paste',
348
+ category: 'actions',
349
+ description: 'Paste from clipboard',
350
+ tags: ['paste', 'clipboard', 'insert'],
351
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
352
+ <path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/>
353
+ <rect x="8" y="2" width="8" height="4" rx="1"/>
354
+ <line x1="9" y1="12" x2="15" y2="12"/>
355
+ <line x1="9" y1="16" x2="15" y2="16"/>
356
+ <circle cx="12" cy="12" r="0.5" fill="currentColor"/>
357
+ </svg>`,
358
+ },
359
+
360
+ cut: {
361
+ name: 'cut',
362
+ category: 'actions',
363
+ description: 'Cut to clipboard',
364
+ tags: ['cut', 'scissors', 'remove', 'clipboard'],
365
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
366
+ <circle cx="6" cy="6" r="3"/>
367
+ <circle cx="6" cy="18" r="3"/>
368
+ <line x1="20" y1="4" x2="8.5" y2="10"/>
369
+ <line x1="20" y1="20" x2="8.5" y2="14"/>
370
+ <line x1="20" y1="12" x2="12" y2="12"/>
371
+ <line x1="19" y1="4" x2="21" y2="4"/>
372
+ </svg>`,
373
+ },
374
+
375
+ download: {
376
+ name: 'download',
377
+ category: 'actions',
378
+ description: 'Download file or content',
379
+ tags: ['download', 'save', 'export', 'get'],
380
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
381
+ <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/>
382
+ <polyline points="7 10 12 15 17 10"/>
383
+ <line x1="12" y1="15" x2="12" y2="3"/>
384
+ <line x1="8" y1="6" x2="9" y2="5"/>
385
+ <line x1="15" y1="5" x2="16" y2="6"/>
386
+ </svg>`,
387
+ },
388
+
389
+ upload: {
390
+ name: 'upload',
391
+ category: 'actions',
392
+ description: 'Upload file or content',
393
+ tags: ['upload', 'import', 'send', 'publish'],
394
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
395
+ <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/>
396
+ <polyline points="17 8 12 3 7 8"/>
397
+ <line x1="12" y1="3" x2="12" y2="15"/>
398
+ <line x1="15" y1="17" x2="16" y2="18"/>
399
+ <line x1="9" y1="18" x2="8" y2="17"/>
400
+ </svg>`,
401
+ },
402
+
403
+ share: {
404
+ name: 'share',
405
+ category: 'actions',
406
+ description: 'Share content with others',
407
+ tags: ['share', 'export', 'send', 'distribute'],
408
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
409
+ <circle cx="18" cy="5" r="3"/>
410
+ <circle cx="6" cy="12" r="3"/>
411
+ <circle cx="18" cy="19" r="3"/>
412
+ <line x1="8.5" y1="13.5" x2="15.5" y2="17.5"/>
413
+ <line x1="15.5" y1="6.5" x2="8.5" y2="10.5"/>
414
+ <line x1="17" y1="7" x2="17" y2="7.01"/>
415
+ </svg>`,
416
+ },
417
+
418
+ save: {
419
+ name: 'save',
420
+ category: 'actions',
421
+ description: 'Save changes or data',
422
+ tags: ['save', 'disk', 'floppy', 'store'],
423
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
424
+ <path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/>
425
+ <polyline points="17 21 17 13 7 13 7 21"/>
426
+ <polyline points="7 3 7 8 15 8"/>
427
+ <line x1="10" y1="17" x2="10" y2="17.01"/>
428
+ <line x1="14" y1="17" x2="14" y2="17.01"/>
429
+ </svg>`,
430
+ },
431
+
432
+ undo: {
433
+ name: 'undo',
434
+ category: 'actions',
435
+ description: 'Undo previous action',
436
+ tags: ['undo', 'revert', 'back', 'restore'],
437
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
438
+ <path d="M3 7v6h6"/>
439
+ <path d="M21 17a9 9 0 0 0-9-9 9 9 0 0 0-9 9"/>
440
+ <polyline points="3 7 6 10 3 13"/>
441
+ <line x1="14" y1="14" x2="14" y2="14.01"/>
442
+ </svg>`,
443
+ },
444
+
445
+ redo: {
446
+ name: 'redo',
447
+ category: 'actions',
448
+ description: 'Redo undone action',
449
+ tags: ['redo', 'forward', 'repeat', 'restore'],
450
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
451
+ <path d="M21 7v6h-6"/>
452
+ <path d="M3 17a9 9 0 0 1 9-9 9 9 0 0 1 9 9"/>
453
+ <polyline points="21 7 18 10 21 13"/>
454
+ <line x1="10" y1="14" x2="10" y2="14.01"/>
455
+ </svg>`,
456
+ },
457
+
458
+ plus: {
459
+ name: 'plus',
460
+ category: 'actions',
461
+ description: 'Add or create new item',
462
+ tags: ['add', 'plus', 'create', 'new'],
463
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
464
+ <circle cx="12" cy="12" r="10"/>
465
+ <line x1="12" y1="8" x2="12" y2="16"/>
466
+ <line x1="8" y1="12" x2="16" y2="12"/>
467
+ <line x1="9" y1="9" x2="9.01" y2="9"/>
468
+ <line x1="15" y1="9" x2="15.01" y2="9"/>
469
+ </svg>`,
470
+ },
471
+
472
+ minus: {
473
+ name: 'minus',
474
+ category: 'actions',
475
+ description: 'Remove or subtract item',
476
+ tags: ['minus', 'remove', 'subtract', 'delete'],
477
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
478
+ <circle cx="12" cy="12" r="10"/>
479
+ <line x1="8" y1="12" x2="16" y2="12"/>
480
+ <line x1="9" y1="15" x2="9.01" y2="15"/>
481
+ <line x1="15" y1="15" x2="15.01" y2="15"/>
482
+ </svg>`,
483
+ },
484
+
485
+ check: {
486
+ name: 'check',
487
+ category: 'actions',
488
+ description: 'Confirm or checkmark',
489
+ tags: ['check', 'confirm', 'done', 'success'],
490
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
491
+ <circle cx="12" cy="12" r="10"/>
492
+ <polyline points="8 12 11 15 16 9"/>
493
+ <line x1="7" y1="7" x2="8" y2="6"/>
494
+ <line x1="16" y1="6" x2="17" y2="7"/>
495
+ </svg>`,
496
+ },
497
+
498
+ x: {
499
+ name: 'x',
500
+ category: 'actions',
501
+ description: 'Close or cancel action',
502
+ tags: ['close', 'cancel', 'exit', 'dismiss'],
503
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
504
+ <circle cx="12" cy="12" r="10"/>
505
+ <line x1="15" y1="9" x2="9" y2="15"/>
506
+ <line x1="9" y1="9" x2="15" y2="15"/>
507
+ <line x1="7" y1="7" x2="6" y2="6"/>
508
+ <line x1="17" y1="17" x2="18" y2="18"/>
509
+ </svg>`,
510
+ },
511
+
512
+ refresh: {
513
+ name: 'refresh',
514
+ category: 'actions',
515
+ description: 'Refresh or reload content',
516
+ tags: ['refresh', 'reload', 'sync', 'update'],
517
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
518
+ <polyline points="23 4 23 10 17 10"/>
519
+ <polyline points="1 20 1 14 7 14"/>
520
+ <path d="M20.5 9A9 9 0 0 0 4 7l-3 3"/>
521
+ <path d="M3.5 15A9 9 0 0 0 20 17l3-3"/>
522
+ <circle cx="12" cy="12" r="1" fill="currentColor"/>
523
+ </svg>`,
524
+ },
525
+
526
+ drag: {
527
+ name: 'drag',
528
+ category: 'actions',
529
+ description: 'Drag and drop handle',
530
+ tags: ['drag', 'move', 'handle', 'grip'],
531
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
532
+ <circle cx="9" cy="5" r="1" fill="currentColor"/>
533
+ <circle cx="15" cy="5" r="1" fill="currentColor"/>
534
+ <circle cx="9" cy="12" r="1" fill="currentColor"/>
535
+ <circle cx="15" cy="12" r="1" fill="currentColor"/>
536
+ <circle cx="9" cy="19" r="1" fill="currentColor"/>
537
+ <circle cx="15" cy="19" r="1" fill="currentColor"/>
538
+ <rect x="7" y="3" width="10" height="18" rx="2"/>
539
+ </svg>`,
540
+ },
541
+
542
+ pin: {
543
+ name: 'pin',
544
+ category: 'actions',
545
+ description: 'Pin or bookmark item',
546
+ tags: ['pin', 'bookmark', 'favorite', 'anchor'],
547
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
548
+ <path d="M16 3l-4 4-4-4v6l-3 3 3 3v6l4-4 4 4v-6l3-3-3-3V3z"/>
549
+ <line x1="12" y1="21" x2="12" y2="23"/>
550
+ <line x1="10" y1="2" x2="10" y2="3"/>
551
+ <line x1="14" y1="3" x2="14" y2="2"/>
552
+ </svg>`,
553
+ },
554
+
555
+ link: {
556
+ name: 'link',
557
+ category: 'actions',
558
+ description: 'Create or insert link',
559
+ tags: ['link', 'chain', 'url', 'hyperlink'],
560
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
561
+ <path d="M10 13a5 5 0 0 0 7.5 4.3l3-3a5 5 0 0 0 0-7.1 5 5 0 0 0-7.1 0l-1.4 1.4"/>
562
+ <path d="M14 11a5 5 0 0 0-7.5-4.3l-3 3a5 5 0 0 0 0 7.1 5 5 0 0 0 7.1 0l1.4-1.4"/>
563
+ <line x1="8" y1="8" x2="8.01" y2="8"/>
564
+ <line x1="16" y1="16" x2="16.01" y2="16"/>
565
+ </svg>`,
566
+ },
567
+
568
+ unlink: {
569
+ name: 'unlink',
570
+ category: 'actions',
571
+ description: 'Break or remove link',
572
+ tags: ['unlink', 'disconnect', 'break', 'remove'],
573
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
574
+ <path d="M10 13a5 5 0 0 0 7.5 4.3l1.5-1.5"/>
575
+ <path d="M14 11a5 5 0 0 0-5-5"/>
576
+ <path d="M16 8l-4-4"/>
577
+ <path d="M18.5 5.5a5 5 0 0 1 0 7.1"/>
578
+ <path d="M9 16l-4 4"/>
579
+ <path d="M5.5 18.5a5 5 0 0 1 0-7.1"/>
580
+ <line x1="3" y1="3" x2="21" y2="21"/>
581
+ </svg>`,
582
+ },
583
+
584
+ // ═══════════════════════════════════════════════════════════════════════════
585
+ // FILES CATEGORY
586
+ // ═══════════════════════════════════════════════════════════════════════════
587
+
588
+ file: {
589
+ name: 'file',
590
+ category: 'files',
591
+ description: 'Generic file document',
592
+ tags: ['file', 'document', 'blank'],
593
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
594
+ <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/>
595
+ <polyline points="13 2 13 9 20 9"/>
596
+ </svg>`,
597
+ },
598
+
599
+ 'file-text': {
600
+ name: 'file-text',
601
+ category: 'files',
602
+ description: 'Text file document with lines',
603
+ tags: ['file', 'document', 'text', 'lines'],
604
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
605
+ <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/>
606
+ <polyline points="13 2 13 9 20 9"/>
607
+ <line x1="8" y1="13" x2="16" y2="13"/>
608
+ <line x1="8" y1="17" x2="16" y2="17"/>
609
+ <line x1="8" y1="9" x2="10" y2="9"/>
610
+ </svg>`,
611
+ },
612
+
613
+ 'file-code': {
614
+ name: 'file-code',
615
+ category: 'files',
616
+ description: 'Code file document with brackets',
617
+ tags: ['file', 'document', 'code', 'programming'],
618
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
619
+ <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/>
620
+ <polyline points="13 2 13 9 20 9"/>
621
+ <polyline points="10 14 8 16 10 18"/>
622
+ <polyline points="14 14 16 16 14 18"/>
623
+ </svg>`,
624
+ },
625
+
626
+ 'file-image': {
627
+ name: 'file-image',
628
+ category: 'files',
629
+ description: 'Image file document with picture icon',
630
+ tags: ['file', 'document', 'image', 'photo'],
631
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
632
+ <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/>
633
+ <polyline points="13 2 13 9 20 9"/>
634
+ <circle cx="10" cy="13" r="1.5"/>
635
+ <polyline points="7 18 11 14 13 16 17 12 17 18 7 18"/>
636
+ </svg>`,
637
+ },
638
+
639
+ 'file-video': {
640
+ name: 'file-video',
641
+ category: 'files',
642
+ description: 'Video file document with play icon',
643
+ tags: ['file', 'document', 'video', 'media'],
644
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
645
+ <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/>
646
+ <polyline points="13 2 13 9 20 9"/>
647
+ <polygon points="10 12 10 18 15 15 10 12"/>
648
+ </svg>`,
649
+ },
650
+
651
+ 'file-audio': {
652
+ name: 'file-audio',
653
+ category: 'files',
654
+ description: 'Audio file document with music note',
655
+ tags: ['file', 'document', 'audio', 'music', 'sound'],
656
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
657
+ <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/>
658
+ <polyline points="13 2 13 9 20 9"/>
659
+ <path d="M14 11v5.5"/>
660
+ <circle cx="12" cy="16.5" r="1.5"/>
661
+ <path d="M14 11a2 2 0 0 1 2 2"/>
662
+ </svg>`,
663
+ },
664
+
665
+ 'file-archive': {
666
+ name: 'file-archive',
667
+ category: 'files',
668
+ description: 'Archive/zip file document with zipper',
669
+ tags: ['file', 'document', 'archive', 'zip', 'compress'],
670
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
671
+ <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/>
672
+ <polyline points="13 2 13 9 20 9"/>
673
+ <line x1="10" y1="11" x2="12" y2="11"/>
674
+ <line x1="10" y1="13" x2="12" y2="13"/>
675
+ <line x1="10" y1="15" x2="12" y2="15"/>
676
+ <path d="M10 17h2l1 2h-4z"/>
677
+ </svg>`,
678
+ },
679
+
680
+ 'file-plus': {
681
+ name: 'file-plus',
682
+ category: 'files',
683
+ description: 'New file document with plus icon',
684
+ tags: ['file', 'document', 'new', 'add', 'create'],
685
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
686
+ <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/>
687
+ <polyline points="13 2 13 9 20 9"/>
688
+ <line x1="12" y1="12" x2="12" y2="18"/>
689
+ <line x1="9" y1="15" x2="15" y2="15"/>
690
+ </svg>`,
691
+ },
692
+
693
+ 'file-minus': {
694
+ name: 'file-minus',
695
+ category: 'files',
696
+ description: 'Remove file document with minus icon',
697
+ tags: ['file', 'document', 'remove', 'delete', 'subtract'],
698
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
699
+ <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/>
700
+ <polyline points="13 2 13 9 20 9"/>
701
+ <line x1="9" y1="15" x2="15" y2="15"/>
702
+ </svg>`,
703
+ },
704
+
705
+ folder: {
706
+ name: 'folder',
707
+ category: 'files',
708
+ description: 'Folder closed with angled edge',
709
+ tags: ['folder', 'directory', 'closed', 'storage'],
710
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
711
+ <path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/>
712
+ <line x1="2" y1="9" x2="22" y2="9"/>
713
+ </svg>`,
714
+ },
715
+
716
+ 'folder-open': {
717
+ name: 'folder-open',
718
+ category: 'files',
719
+ description: 'Folder open showing contents',
720
+ tags: ['folder', 'directory', 'open', 'expanded'],
721
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
722
+ <path d="M2 9V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2v1"/>
723
+ <path d="M2 9h20l-2 9a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2L2 9z"/>
724
+ </svg>`,
725
+ },
726
+
727
+ 'folder-plus': {
728
+ name: 'folder-plus',
729
+ category: 'files',
730
+ description: 'New folder with plus icon',
731
+ tags: ['folder', 'directory', 'new', 'add', 'create'],
732
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
733
+ <path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/>
734
+ <line x1="12" y1="11" x2="12" y2="17"/>
735
+ <line x1="9" y1="14" x2="15" y2="14"/>
736
+ </svg>`,
737
+ },
738
+
739
+ archive: {
740
+ name: 'archive',
741
+ category: 'files',
742
+ description: 'Archive storage box',
743
+ tags: ['archive', 'storage', 'box', 'backup'],
744
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
745
+ <rect x="3" y="3" width="18" height="4" rx="1"/>
746
+ <path d="M3 7v12a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V7"/>
747
+ <line x1="10" y1="11" x2="14" y2="11"/>
748
+ <path d="M12 11v4"/>
749
+ <polyline points="10 15 12 17 14 15"/>
750
+ </svg>`,
751
+ },
752
+
753
+ clipboard: {
754
+ name: 'clipboard',
755
+ category: 'files',
756
+ description: 'Clipboard with document',
757
+ tags: ['clipboard', 'copy', 'paste', 'document'],
758
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
759
+ <rect x="8" y="2" width="8" height="4" rx="1"/>
760
+ <path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/>
761
+ <line x1="9" y1="12" x2="15" y2="12"/>
762
+ <line x1="9" y1="16" x2="15" y2="16"/>
763
+ </svg>`,
764
+ },
765
+
766
+ attachment: {
767
+ name: 'attachment',
768
+ category: 'files',
769
+ description: 'Attachment paperclip with angled design',
770
+ tags: ['attachment', 'paperclip', 'attach', 'link'],
771
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
772
+ <path d="M21 10.5V18a3 3 0 0 1-3 3h-1a3 3 0 0 1-3-3V7a5 5 0 0 1 10 0v10.5"/>
773
+ <path d="M8 12V7a3 3 0 0 1 6 0v10a1 1 0 0 1-2 0V9"/>
774
+ </svg>`,
775
+ },
776
+
777
+ // ═══════════════════════════════════════════════════════════════════════════
778
+ // MEDIA ICONS - Media playback and control icons
779
+ // ═══════════════════════════════════════════════════════════════════════════
780
+
781
+ play: {
782
+ name: 'play',
783
+ category: 'media',
784
+ description: 'Play media content',
785
+ tags: ['play', 'start', 'media', 'video', 'audio'],
786
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
787
+ <circle cx="12" cy="12" r="10"/>
788
+ <polygon points="10 8 16 12 10 16 10 8" fill="currentColor"/>
789
+ </svg>`,
790
+ },
791
+
792
+ pause: {
793
+ name: 'pause',
794
+ category: 'media',
795
+ description: 'Pause media playback',
796
+ tags: ['pause', 'stop', 'media', 'video', 'audio'],
797
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
798
+ <circle cx="12" cy="12" r="10"/>
799
+ <line x1="10" y1="9" x2="10" y2="15"/>
800
+ <line x1="14" y1="9" x2="14" y2="15"/>
801
+ </svg>`,
802
+ },
803
+
804
+ stop: {
805
+ name: 'stop',
806
+ category: 'media',
807
+ description: 'Stop media playback',
808
+ tags: ['stop', 'end', 'media', 'video', 'audio'],
809
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
810
+ <circle cx="12" cy="12" r="10"/>
811
+ <rect x="9" y="9" width="6" height="6" rx="0.5" fill="currentColor"/>
812
+ </svg>`,
813
+ },
814
+
815
+ 'skip-back': {
816
+ name: 'skip-back',
817
+ category: 'media',
818
+ description: 'Skip to previous track',
819
+ tags: ['previous', 'back', 'rewind', 'media', 'track'],
820
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
821
+ <polygon points="19 20 9 12 19 4 19 20" fill="currentColor"/>
822
+ <line x1="5" y1="4" x2="5" y2="20"/>
823
+ </svg>`,
824
+ },
825
+
826
+ 'skip-forward': {
827
+ name: 'skip-forward',
828
+ category: 'media',
829
+ description: 'Skip to next track',
830
+ tags: ['next', 'forward', 'skip', 'media', 'track'],
831
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
832
+ <polygon points="5 4 15 12 5 20 5 4" fill="currentColor"/>
833
+ <line x1="19" y1="4" x2="19" y2="20"/>
834
+ </svg>`,
835
+ },
836
+
837
+ rewind: {
838
+ name: 'rewind',
839
+ category: 'media',
840
+ description: 'Rewind playback',
841
+ tags: ['rewind', 'back', 'media', 'video'],
842
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
843
+ <polygon points="11 19 2 12 11 5 11 19" fill="currentColor"/>
844
+ <polygon points="22 19 13 12 22 5 22 19" fill="currentColor"/>
845
+ </svg>`,
846
+ },
847
+
848
+ 'fast-forward': {
849
+ name: 'fast-forward',
850
+ category: 'media',
851
+ description: 'Fast forward playback',
852
+ tags: ['fast-forward', 'skip', 'media', 'video'],
853
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
854
+ <polygon points="13 5 22 12 13 19 13 5" fill="currentColor"/>
855
+ <polygon points="2 5 11 12 2 19 2 5" fill="currentColor"/>
856
+ </svg>`,
857
+ },
858
+
859
+ 'volume-high': {
860
+ name: 'volume-high',
861
+ category: 'media',
862
+ description: 'Volume on/high',
863
+ tags: ['volume', 'sound', 'audio', 'speaker', 'loud'],
864
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
865
+ <polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"/>
866
+ <path d="M15.5 8.5a5 5 0 0 1 0 7"/>
867
+ <path d="M18 5.5a9 9 0 0 1 0 13"/>
868
+ </svg>`,
869
+ },
870
+
871
+ 'volume-low': {
872
+ name: 'volume-low',
873
+ category: 'media',
874
+ description: 'Volume low',
875
+ tags: ['volume', 'sound', 'audio', 'speaker', 'quiet'],
876
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
877
+ <polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"/>
878
+ <path d="M15.5 8.5a5 5 0 0 1 0 7"/>
879
+ </svg>`,
880
+ },
881
+
882
+ 'volume-off': {
883
+ name: 'volume-off',
884
+ category: 'media',
885
+ description: 'Volume muted',
886
+ tags: ['volume', 'mute', 'audio', 'speaker', 'silent'],
887
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
888
+ <polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"/>
889
+ <line x1="17" y1="9" x2="21" y2="15"/>
890
+ <line x1="21" y1="9" x2="17" y2="15"/>
891
+ </svg>`,
892
+ },
893
+
894
+ mic: {
895
+ name: 'mic',
896
+ category: 'media',
897
+ description: 'Microphone on',
898
+ tags: ['microphone', 'audio', 'record', 'voice', 'input'],
899
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
900
+ <rect x="9" y="2" width="6" height="11" rx="3"/>
901
+ <path d="M5 10v2a7 7 0 0 0 14 0v-2"/>
902
+ <line x1="12" y1="19" x2="12" y2="23"/>
903
+ <line x1="8" y1="23" x2="16" y2="23"/>
904
+ </svg>`,
905
+ },
906
+
907
+ 'mic-off': {
908
+ name: 'mic-off',
909
+ category: 'media',
910
+ description: 'Microphone muted',
911
+ tags: ['microphone', 'mute', 'audio', 'silent', 'disabled'],
912
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
913
+ <line x1="2" y1="2" x2="22" y2="22"/>
914
+ <path d="M9 9v4a3 3 0 0 0 5.12 2.12"/>
915
+ <path d="M15 5v5"/>
916
+ <path d="M9 2h6a3 3 0 0 1 3 3v3"/>
917
+ <path d="M5 10v2a7 7 0 0 0 11.5 5.5"/>
918
+ <path d="M19 10v1"/>
919
+ <line x1="12" y1="19" x2="12" y2="23"/>
920
+ <line x1="8" y1="23" x2="16" y2="23"/>
921
+ </svg>`,
922
+ },
923
+
924
+ camera: {
925
+ name: 'camera',
926
+ category: 'media',
927
+ description: 'Camera/video on',
928
+ tags: ['camera', 'video', 'photo', 'record', 'capture'],
929
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
930
+ <rect x="2" y="6" width="20" height="14" rx="2"/>
931
+ <path d="M7 6V4a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v2"/>
932
+ <circle cx="12" cy="13" r="3"/>
933
+ <path d="M17 9.5h.01"/>
934
+ </svg>`,
935
+ },
936
+
937
+ 'camera-off': {
938
+ name: 'camera-off',
939
+ category: 'media',
940
+ description: 'Camera/video off',
941
+ tags: ['camera', 'video', 'disabled', 'off', 'hidden'],
942
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
943
+ <line x1="2" y1="2" x2="22" y2="22"/>
944
+ <path d="M7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16"/>
945
+ <path d="M9.5 4h5L17 7h3a2 2 0 0 1 2 2v7.5"/>
946
+ <path d="M14.121 15.121A3 3 0 1 1 9.88 10.88"/>
947
+ </svg>`,
948
+ },
949
+
950
+ image: {
951
+ name: 'image',
952
+ category: 'media',
953
+ description: 'Image/photo file',
954
+ tags: ['image', 'photo', 'picture', 'file', 'media'],
955
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
956
+ <rect x="3" y="3" width="18" height="18" rx="2"/>
957
+ <circle cx="8.5" cy="8.5" r="1.5" fill="currentColor"/>
958
+ <polyline points="21 15 16 10 5 21"/>
959
+ <line x1="10" y1="14" x2="3" y2="21"/>
960
+ </svg>`,
961
+ },
962
+
963
+ video: {
964
+ name: 'video',
965
+ category: 'media',
966
+ description: 'Video file',
967
+ tags: ['video', 'film', 'movie', 'file', 'media'],
968
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
969
+ <rect x="2" y="5" width="14" height="14" rx="2"/>
970
+ <polygon points="16 9 22 6 22 18 16 15 16 9"/>
971
+ <circle cx="9" cy="12" r="2"/>
972
+ </svg>`,
973
+ },
974
+
975
+ music: {
976
+ name: 'music',
977
+ category: 'media',
978
+ description: 'Music/audio file',
979
+ tags: ['music', 'audio', 'sound', 'file', 'song'],
980
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
981
+ <path d="M9 18V5l12-2v13"/>
982
+ <circle cx="6" cy="18" r="3"/>
983
+ <circle cx="18" cy="16" r="3"/>
984
+ <line x1="9" y1="9" x2="21" y2="7"/>
985
+ </svg>`,
986
+ },
987
+
988
+ // ═══════════════════════════════════════════════════════════════════════════
989
+ // DATA ICONS - Charts, databases, cloud, time
990
+ // ═══════════════════════════════════════════════════════════════════════════
991
+
992
+ 'chart-bar': {
993
+ name: 'chart-bar',
994
+ category: 'data',
995
+ description: 'Bar chart for data visualization',
996
+ tags: ['chart', 'graph', 'statistics', 'analytics', 'data'],
997
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
998
+ <line x1="3" y1="20" x2="21" y2="20"/>
999
+ <line x1="3" y1="20" x2="3" y2="4"/>
1000
+ <rect x="7" y="12" width="3" height="8"/>
1001
+ <rect x="14" y="8" width="3" height="12"/>
1002
+ <line x1="7" y1="7" x2="10" y2="7"/>
1003
+ <line x1="7" y1="8" x2="10" y2="8"/>
1004
+ </svg>`,
1005
+ },
1006
+
1007
+ 'chart-line': {
1008
+ name: 'chart-line',
1009
+ category: 'data',
1010
+ description: 'Line chart showing trends over time',
1011
+ tags: ['chart', 'graph', 'trend', 'analytics', 'data'],
1012
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1013
+ <line x1="3" y1="20" x2="21" y2="20"/>
1014
+ <line x1="3" y1="20" x2="3" y2="4"/>
1015
+ <polyline points="6 15 9 9 13 11 16 6 20 10"/>
1016
+ <circle cx="6" cy="15" r="1.5" fill="currentColor"/>
1017
+ <circle cx="9" cy="9" r="1.5" fill="currentColor"/>
1018
+ <circle cx="13" cy="11" r="1.5" fill="currentColor"/>
1019
+ <circle cx="16" cy="6" r="1.5" fill="currentColor"/>
1020
+ <circle cx="20" cy="10" r="1.5" fill="currentColor"/>
1021
+ </svg>`,
1022
+ },
1023
+
1024
+ 'chart-pie': {
1025
+ name: 'chart-pie',
1026
+ category: 'data',
1027
+ description: 'Pie chart for proportional data display',
1028
+ tags: ['chart', 'graph', 'pie', 'proportion', 'data'],
1029
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1030
+ <circle cx="12" cy="12" r="9"/>
1031
+ <path d="M12 3v9l6.36 3.68"/>
1032
+ <line x1="12" y1="12" x2="19" y2="7"/>
1033
+ </svg>`,
1034
+ },
1035
+
1036
+ database: {
1037
+ name: 'database',
1038
+ category: 'data',
1039
+ description: 'Database storage with stacked cylinders',
1040
+ tags: ['database', 'storage', 'server', 'data'],
1041
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1042
+ <ellipse cx="12" cy="5" rx="8" ry="3"/>
1043
+ <path d="M4 5v5c0 1.66 3.58 3 8 3s8-1.34 8-3V5"/>
1044
+ <path d="M4 10v5c0 1.66 3.58 3 8 3s8-1.34 8-3v-5"/>
1045
+ <path d="M4 15v4c0 1.66 3.58 3 8 3s8-1.34 8-3v-4"/>
1046
+ </svg>`,
1047
+ },
1048
+
1049
+ table: {
1050
+ name: 'table',
1051
+ category: 'data',
1052
+ description: 'Data table grid layout',
1053
+ tags: ['table', 'grid', 'spreadsheet', 'data'],
1054
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1055
+ <rect x="3" y="4" width="18" height="16" rx="1"/>
1056
+ <line x1="3" y1="10" x2="21" y2="10"/>
1057
+ <line x1="3" y1="15" x2="21" y2="15"/>
1058
+ <line x1="10" y1="10" x2="10" y2="20"/>
1059
+ <line x1="15" y1="10" x2="15" y2="20"/>
1060
+ </svg>`,
1061
+ },
1062
+
1063
+ cloud: {
1064
+ name: 'cloud',
1065
+ category: 'data',
1066
+ description: 'Cloud storage or cloud computing',
1067
+ tags: ['cloud', 'storage', 'sync', 'remote'],
1068
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1069
+ <path d="M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z"/>
1070
+ </svg>`,
1071
+ },
1072
+
1073
+ 'cloud-upload': {
1074
+ name: 'cloud-upload',
1075
+ category: 'data',
1076
+ description: 'Upload to cloud storage',
1077
+ tags: ['cloud', 'upload', 'sync', 'backup'],
1078
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1079
+ <path d="M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z"/>
1080
+ <line x1="12" y1="16" x2="12" y2="10"/>
1081
+ <polyline points="9 12 12 9 15 12"/>
1082
+ </svg>`,
1083
+ },
1084
+
1085
+ 'cloud-download': {
1086
+ name: 'cloud-download',
1087
+ category: 'data',
1088
+ description: 'Download from cloud storage',
1089
+ tags: ['cloud', 'download', 'sync', 'restore'],
1090
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1091
+ <path d="M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z"/>
1092
+ <line x1="12" y1="10" x2="12" y2="16"/>
1093
+ <polyline points="15 14 12 17 9 14"/>
1094
+ </svg>`,
1095
+ },
1096
+
1097
+ sync: {
1098
+ name: 'sync',
1099
+ category: 'data',
1100
+ description: 'Synchronize or refresh data',
1101
+ tags: ['sync', 'refresh', 'reload', 'update'],
1102
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1103
+ <path d="M21 10c-1.5-4-5.5-7-10-7-5.5 0-10 4.5-10 10s4.5 10 10 10c4 0 7.5-2.3 9.2-5.6"/>
1104
+ <polyline points="17 10 21 10 21 6"/>
1105
+ <path d="M3 14c1.5 4 5.5 7 10 7"/>
1106
+ <polyline points="7 14 3 14 3 18"/>
1107
+ </svg>`,
1108
+ },
1109
+
1110
+ calendar: {
1111
+ name: 'calendar',
1112
+ category: 'data',
1113
+ description: 'Calendar for date selection',
1114
+ tags: ['calendar', 'date', 'schedule', 'time'],
1115
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1116
+ <rect x="3" y="4" width="18" height="18" rx="2"/>
1117
+ <line x1="3" y1="10" x2="21" y2="10"/>
1118
+ <line x1="8" y1="2" x2="8" y2="6"/>
1119
+ <line x1="16" y1="2" x2="16" y2="6"/>
1120
+ <line x1="8" y1="14" x2="8.01" y2="14"/>
1121
+ <line x1="12" y1="14" x2="12.01" y2="14"/>
1122
+ <line x1="16" y1="14" x2="16.01" y2="14"/>
1123
+ <line x1="8" y1="18" x2="8.01" y2="18"/>
1124
+ <line x1="12" y1="18" x2="12.01" y2="18"/>
1125
+ </svg>`,
1126
+ },
1127
+
1128
+ clock: {
1129
+ name: 'clock',
1130
+ category: 'data',
1131
+ description: 'Clock showing time',
1132
+ tags: ['clock', 'time', 'schedule', 'hour'],
1133
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1134
+ <circle cx="12" cy="12" r="9"/>
1135
+ <polyline points="12 6 12 12 16 14"/>
1136
+ <line x1="12" y1="3" x2="12" y2="4"/>
1137
+ <line x1="12" y1="20" x2="12" y2="21"/>
1138
+ <line x1="3" y1="12" x2="4" y2="12"/>
1139
+ <line x1="20" y1="12" x2="21" y2="12"/>
1140
+ </svg>`,
1141
+ },
1142
+
1143
+ timer: {
1144
+ name: 'timer',
1145
+ category: 'data',
1146
+ description: 'Timer for countdown or duration',
1147
+ tags: ['timer', 'countdown', 'stopwatch', 'time'],
1148
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1149
+ <circle cx="12" cy="13" r="8"/>
1150
+ <polyline points="12 9 12 13 15 15"/>
1151
+ <line x1="9" y1="3" x2="15" y2="3"/>
1152
+ <line x1="12" y1="3" x2="12" y2="5"/>
1153
+ <path d="M18 7l1.5-1.5"/>
1154
+ </svg>`,
1155
+ },
1156
+
1157
+ hash: {
1158
+ name: 'hash',
1159
+ category: 'data',
1160
+ description: 'Hashtag symbol for numbers or tags',
1161
+ tags: ['hash', 'hashtag', 'number', 'tag', 'symbol'],
1162
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1163
+ <line x1="4" y1="9" x2="20" y2="9"/>
1164
+ <line x1="4" y1="15" x2="20" y2="15"/>
1165
+ <line x1="10" y1="3" x2="8" y2="21"/>
1166
+ <line x1="16" y1="3" x2="14" y2="21"/>
1167
+ </svg>`,
1168
+ },
1169
+
1170
+ percent: {
1171
+ name: 'percent',
1172
+ category: 'data',
1173
+ description: 'Percentage symbol for rates or statistics',
1174
+ tags: ['percent', 'percentage', 'rate', 'statistics'],
1175
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1176
+ <line x1="19" y1="5" x2="5" y2="19"/>
1177
+ <circle cx="7" cy="7" r="2.5"/>
1178
+ <circle cx="17" cy="17" r="2.5"/>
1179
+ </svg>`,
1180
+ },
1181
+
1182
+ // ═══════════════════════════════════════════════════════════════════════════
1183
+ // SOCIAL ICONS - Likes, favorites, bookmarks, engagement
1184
+ // ═══════════════════════════════════════════════════════════════════════════
1185
+
1186
+ heart: {
1187
+ name: 'heart',
1188
+ category: 'social',
1189
+ description: 'Heart for liking or favoriting (outline)',
1190
+ tags: ['heart', 'like', 'favorite', 'love'],
1191
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1192
+ <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/>
1193
+ </svg>`,
1194
+ },
1195
+
1196
+ 'heart-filled': {
1197
+ name: 'heart-filled',
1198
+ category: 'social',
1199
+ description: 'Heart for liked or favorited state (filled)',
1200
+ tags: ['heart', 'like', 'favorite', 'love', 'filled'],
1201
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1202
+ <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z" fill="currentColor"/>
1203
+ </svg>`,
1204
+ },
1205
+
1206
+ star: {
1207
+ name: 'star',
1208
+ category: 'social',
1209
+ description: 'Star for rating or marking favorites (outline)',
1210
+ tags: ['star', 'rating', 'favorite', 'bookmark'],
1211
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1212
+ <polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/>
1213
+ </svg>`,
1214
+ },
1215
+
1216
+ 'star-filled': {
1217
+ name: 'star-filled',
1218
+ category: 'social',
1219
+ description: 'Star for rated or favorited state (filled)',
1220
+ tags: ['star', 'rating', 'favorite', 'bookmark', 'filled'],
1221
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1222
+ <polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2" fill="currentColor"/>
1223
+ </svg>`,
1224
+ },
1225
+
1226
+ 'thumbs-up': {
1227
+ name: 'thumbs-up',
1228
+ category: 'social',
1229
+ description: 'Thumbs up for approval or positive feedback',
1230
+ tags: ['thumbs', 'like', 'approve', 'positive'],
1231
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1232
+ <path d="M7 22V11"/>
1233
+ <path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"/>
1234
+ </svg>`,
1235
+ },
1236
+
1237
+ 'thumbs-down': {
1238
+ name: 'thumbs-down',
1239
+ category: 'social',
1240
+ description: 'Thumbs down for disapproval or negative feedback',
1241
+ tags: ['thumbs', 'dislike', 'disapprove', 'negative'],
1242
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1243
+ <path d="M17 2v11"/>
1244
+ <path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zM17 2h3a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2h-3"/>
1245
+ </svg>`,
1246
+ },
1247
+
1248
+ bookmark: {
1249
+ name: 'bookmark',
1250
+ category: 'social',
1251
+ description: 'Bookmark for saving content (outline)',
1252
+ tags: ['bookmark', 'save', 'favorite', 'mark'],
1253
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1254
+ <path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"/>
1255
+ </svg>`,
1256
+ },
1257
+
1258
+ 'bookmark-filled': {
1259
+ name: 'bookmark-filled',
1260
+ category: 'social',
1261
+ description: 'Bookmark for bookmarked state (filled)',
1262
+ tags: ['bookmark', 'save', 'favorite', 'mark', 'filled'],
1263
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1264
+ <path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z" fill="currentColor"/>
1265
+ </svg>`,
1266
+ },
1267
+
1268
+ flag: {
1269
+ name: 'flag',
1270
+ category: 'social',
1271
+ description: 'Flag for reporting or marking content',
1272
+ tags: ['flag', 'report', 'mark', 'alert'],
1273
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1274
+ <path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z"/>
1275
+ <line x1="4" y1="22" x2="4" y2="15"/>
1276
+ </svg>`,
1277
+ },
1278
+
1279
+ award: {
1280
+ name: 'award',
1281
+ category: 'social',
1282
+ description: 'Award badge for achievements or recognition',
1283
+ tags: ['award', 'badge', 'achievement', 'medal'],
1284
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1285
+ <circle cx="12" cy="9" r="6"/>
1286
+ <polyline points="8 14 8 21 12 19 16 21 16 14"/>
1287
+ <circle cx="12" cy="9" r="2" fill="currentColor"/>
1288
+ </svg>`,
1289
+ },
1290
+
1291
+ trending: {
1292
+ name: 'trending',
1293
+ category: 'social',
1294
+ description: 'Trending upward arrow for popular content',
1295
+ tags: ['trending', 'popular', 'growth', 'arrow', 'up'],
1296
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1297
+ <polyline points="23 6 13.5 15.5 8.5 10.5 1 18"/>
1298
+ <polyline points="17 6 23 6 23 12"/>
1299
+ </svg>`,
1300
+ },
1301
+
1302
+ // ═══════════════════════════════════════════════════════════════════════════
1303
+ // SECURITY ICONS
1304
+ // ═══════════════════════════════════════════════════════════════════════════
1305
+
1306
+ lock: {
1307
+ name: 'lock',
1308
+ category: 'security',
1309
+ description: 'Locked/secure state with closed padlock',
1310
+ tags: ['secure', 'locked', 'padlock', 'privacy', 'encrypted'],
1311
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1312
+ <rect x="5" y="11" width="14" height="10" rx="2"/>
1313
+ <path d="M8 11V7a4 4 0 0 1 8 0v4"/>
1314
+ <circle cx="12" cy="16" r="1" fill="currentColor"/>
1315
+ <line x1="12" y1="17" x2="12" y2="18.5"/>
1316
+ </svg>`,
1317
+ },
1318
+
1319
+ unlock: {
1320
+ name: 'unlock',
1321
+ category: 'security',
1322
+ description: 'Unlocked state with open padlock',
1323
+ tags: ['unlocked', 'open', 'accessible', 'public'],
1324
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1325
+ <rect x="5" y="11" width="14" height="10" rx="2"/>
1326
+ <path d="M8 11V7a4 4 0 0 1 7.5-2"/>
1327
+ <circle cx="12" cy="16" r="1" fill="currentColor"/>
1328
+ <line x1="12" y1="17" x2="12" y2="18.5"/>
1329
+ </svg>`,
1330
+ },
1331
+
1332
+ key: {
1333
+ name: 'key',
1334
+ category: 'security',
1335
+ description: 'Access key with geometric design',
1336
+ tags: ['access', 'password', 'authentication', 'unlock'],
1337
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1338
+ <circle cx="7" cy="7" r="4"/>
1339
+ <path d="M10.5 10.5L20 21"/>
1340
+ <path d="M17 21l3-3"/>
1341
+ <path d="M20 18v3h-3"/>
1342
+ <line x1="11" y1="6" x2="13" y2="6"/>
1343
+ </svg>`,
1344
+ },
1345
+
1346
+ shield: {
1347
+ name: 'shield',
1348
+ category: 'security',
1349
+ description: 'Security shield outline with tech angles',
1350
+ tags: ['protection', 'security', 'defense', 'safe'],
1351
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1352
+ <path d="M12 3L4 7v5c0 5 2.5 9.5 8 11 5.5-1.5 8-6 8-11V7l-8-4z"/>
1353
+ <path d="M12 8v8"/>
1354
+ </svg>`,
1355
+ },
1356
+
1357
+ 'shield-check': {
1358
+ name: 'shield-check',
1359
+ category: 'security',
1360
+ description: 'Verified/protected with shield and checkmark',
1361
+ tags: ['verified', 'protected', 'secure', 'approved', 'safe'],
1362
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1363
+ <path d="M12 3L4 7v5c0 5 2.5 9.5 8 11 5.5-1.5 8-6 8-11V7l-8-4z"/>
1364
+ <polyline points="9 12 11 14 15 10"/>
1365
+ </svg>`,
1366
+ },
1367
+
1368
+ 'shield-x': {
1369
+ name: 'shield-x',
1370
+ category: 'security',
1371
+ description: 'Not protected with shield and X mark',
1372
+ tags: ['unprotected', 'vulnerable', 'warning', 'blocked', 'denied'],
1373
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1374
+ <path d="M12 3L4 7v5c0 5 2.5 9.5 8 11 5.5-1.5 8-6 8-11V7l-8-4z"/>
1375
+ <line x1="10" y1="10" x2="14" y2="14"/>
1376
+ <line x1="14" y1="10" x2="10" y2="14"/>
1377
+ </svg>`,
1378
+ },
1379
+
1380
+ eye: {
1381
+ name: 'eye',
1382
+ category: 'security',
1383
+ description: 'Visible/show with cyberpunk eye design',
1384
+ tags: ['visible', 'show', 'view', 'watch', 'visibility'],
1385
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1386
+ <path d="M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z"/>
1387
+ <circle cx="12" cy="12" r="3"/>
1388
+ <circle cx="12" cy="12" r="1" fill="currentColor"/>
1389
+ </svg>`,
1390
+ },
1391
+
1392
+ 'eye-off': {
1393
+ name: 'eye-off',
1394
+ category: 'security',
1395
+ description: 'Hidden/hide with eye and slash',
1396
+ tags: ['hidden', 'hide', 'invisible', 'privacy', 'conceal'],
1397
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1398
+ <path d="M9.88 9.88a3 3 0 1 0 4.24 4.24"/>
1399
+ <path d="M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68"/>
1400
+ <path d="M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61"/>
1401
+ <line x1="3" y1="3" x2="21" y2="21"/>
1402
+ </svg>`,
1403
+ },
1404
+
1405
+ fingerprint: {
1406
+ name: 'fingerprint',
1407
+ category: 'security',
1408
+ description: 'Biometric authentication fingerprint scan',
1409
+ tags: ['biometric', 'auth', 'identity', 'scan', 'fingerprint'],
1410
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1411
+ <path d="M12 11c0-2.5 1.5-5 4-5"/>
1412
+ <path d="M12 18c2.5 0 4-2.5 4-5s-1.5-5-4-5-4 2.5-4 5"/>
1413
+ <path d="M8 13c0-2 1-3 1-3"/>
1414
+ <path d="M8 17c0-1.5.5-2.5.5-2.5"/>
1415
+ <path d="M14 18c0 1.5.5 2.5.5 2.5"/>
1416
+ <path d="M12 11v-1"/>
1417
+ <path d="M12 18v3"/>
1418
+ <path d="M16 13c0 1.5-.5 2.5-.5 2.5"/>
1419
+ </svg>`,
1420
+ },
1421
+
1422
+ user: {
1423
+ name: 'user',
1424
+ category: 'security',
1425
+ description: 'User/profile person silhouette',
1426
+ tags: ['profile', 'account', 'person', 'avatar', 'identity'],
1427
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1428
+ <circle cx="12" cy="8" r="4"/>
1429
+ <path d="M5 20c0-3.5 3-6 7-6s7 2.5 7 6"/>
1430
+ <path d="M9 8l.5-1"/>
1431
+ <path d="M15 8l-.5-1"/>
1432
+ </svg>`,
1433
+ },
1434
+
1435
+ users: {
1436
+ name: 'users',
1437
+ category: 'security',
1438
+ description: 'Multiple users with two person silhouettes',
1439
+ tags: ['group', 'team', 'people', 'multiple', 'community'],
1440
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1441
+ <circle cx="9" cy="7" r="3"/>
1442
+ <circle cx="16" cy="9" r="2.5"/>
1443
+ <path d="M3 19c0-3 2.5-5 6-5s6 2 6 5"/>
1444
+ <path d="M16 19c0-2 1.5-4 5-4"/>
1445
+ </svg>`,
1446
+ },
1447
+
1448
+ 'user-plus': {
1449
+ name: 'user-plus',
1450
+ category: 'security',
1451
+ description: 'Add user with plus icon',
1452
+ tags: ['add', 'invite', 'new', 'register', 'signup'],
1453
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1454
+ <circle cx="10" cy="8" r="4"/>
1455
+ <path d="M3 20c0-3.5 3-6 7-6s7 2.5 7 6"/>
1456
+ <line x1="19" y1="8" x2="19" y2="14"/>
1457
+ <line x1="16" y1="11" x2="22" y2="11"/>
1458
+ </svg>`,
1459
+ },
1460
+
1461
+ 'user-minus': {
1462
+ name: 'user-minus',
1463
+ category: 'security',
1464
+ description: 'Remove user with minus icon',
1465
+ tags: ['remove', 'delete', 'ban', 'revoke', 'kick'],
1466
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1467
+ <circle cx="10" cy="8" r="4"/>
1468
+ <path d="M3 20c0-3.5 3-6 7-6s7 2.5 7 6"/>
1469
+ <line x1="16" y1="11" x2="22" y2="11"/>
1470
+ </svg>`,
1471
+ },
1472
+
1473
+ 'log-in': {
1474
+ name: 'log-in',
1475
+ category: 'security',
1476
+ description: 'Log in with arrow entering door frame',
1477
+ tags: ['login', 'signin', 'enter', 'access', 'authenticate'],
1478
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1479
+ <path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"/>
1480
+ <polyline points="10 17 15 12 10 7"/>
1481
+ <line x1="15" y1="12" x2="3" y2="12"/>
1482
+ <line x1="18" y1="7" x2="18" y2="9"/>
1483
+ <line x1="18" y1="15" x2="18" y2="17"/>
1484
+ </svg>`,
1485
+ },
1486
+
1487
+ 'log-out': {
1488
+ name: 'log-out',
1489
+ category: 'security',
1490
+ description: 'Log out with arrow exiting door frame',
1491
+ tags: ['logout', 'signout', 'exit', 'leave', 'disconnect'],
1492
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1493
+ <path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/>
1494
+ <polyline points="16 17 21 12 16 7"/>
1495
+ <line x1="21" y1="12" x2="9" y2="12"/>
1496
+ <line x1="6" y1="7" x2="6" y2="9"/>
1497
+ <line x1="6" y1="15" x2="6" y2="17"/>
1498
+ </svg>`,
1499
+ },
1500
+
1501
+ // ═══════════════════════════════════════════════════════════════════════════
1502
+ // TODO: Add more icons here
1503
+
1504
+ // ═══════════════════════════════════════════════════════════════════════════
1505
+ // TECH ICONS (Additional)
1506
+ // ═══════════════════════════════════════════════════════════════════════════
1507
+
1508
+ code: {
1509
+ name: 'code',
1510
+ category: 'tech',
1511
+ description: 'Code/programming with angle brackets',
1512
+ tags: ['programming', 'code', 'developer', 'markup'],
1513
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1514
+ <polyline points="16 18 22 12 16 6"/>
1515
+ <polyline points="8 6 2 12 8 18"/>
1516
+ <line x1="13" y1="4" x2="11" y2="20"/>
1517
+ </svg>`,
1518
+ },
1519
+
1520
+ circuit: {
1521
+ name: 'circuit',
1522
+ category: 'tech',
1523
+ description: 'Circuit board pattern',
1524
+ tags: ['circuit', 'board', 'electronics', 'pcb', 'connections'],
1525
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1526
+ <rect x="4" y="4" width="16" height="16" rx="2"/>
1527
+ <circle cx="8" cy="8" r="1"/>
1528
+ <circle cx="16" cy="8" r="1"/>
1529
+ <circle cx="8" cy="16" r="1"/>
1530
+ <circle cx="16" cy="16" r="1"/>
1531
+ <line x1="8" y1="9" x2="8" y2="15"/>
1532
+ <line x1="16" y1="9" x2="16" y2="15"/>
1533
+ <line x1="9" y1="12" x2="15" y2="12"/>
1534
+ </svg>`,
1535
+ },
1536
+
1537
+ wifi: {
1538
+ name: 'wifi',
1539
+ category: 'tech',
1540
+ description: 'WiFi wireless connection',
1541
+ tags: ['wireless', 'network', 'connection', 'internet'],
1542
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1543
+ <path d="M5 12.5a10.5 10.5 0 0 1 14 0"/>
1544
+ <path d="M8.5 15.5a6 6 0 0 1 7 0"/>
1545
+ <circle cx="12" cy="19" r="1" fill="currentColor"/>
1546
+ <path d="M1.5 9a14.5 14.5 0 0 1 21 0"/>
1547
+ </svg>`,
1548
+ },
1549
+
1550
+ 'wifi-off': {
1551
+ name: 'wifi-off',
1552
+ category: 'tech',
1553
+ description: 'No WiFi or disconnected',
1554
+ tags: ['wireless', 'disconnected', 'offline', 'no-connection'],
1555
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1556
+ <path d="M5 12.5a10.5 10.5 0 0 1 3.5-2.5"/>
1557
+ <path d="M15.5 10a10.5 10.5 0 0 1 3.5 2.5"/>
1558
+ <path d="M8.5 15.5a6 6 0 0 1 2.5-1.5"/>
1559
+ <path d="M13 14a6 6 0 0 1 2.5 1.5"/>
1560
+ <circle cx="12" cy="19" r="1" fill="currentColor"/>
1561
+ <line x1="2" y1="2" x2="22" y2="22"/>
1562
+ </svg>`,
1563
+ },
1564
+
1565
+ bluetooth: {
1566
+ name: 'bluetooth',
1567
+ category: 'tech',
1568
+ description: 'Bluetooth wireless connection',
1569
+ tags: ['wireless', 'connection', 'pairing', 'device'],
1570
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1571
+ <path d="M12 3l7 5-7 5V3z"/>
1572
+ <path d="M12 21l7-5-7-5v10z"/>
1573
+ <line x1="5" y1="7" x2="12" y2="13"/>
1574
+ <line x1="5" y1="17" x2="12" y2="11"/>
1575
+ </svg>`,
1576
+ },
1577
+
1578
+ server: {
1579
+ name: 'server',
1580
+ category: 'tech',
1581
+ description: 'Server or database storage',
1582
+ tags: ['database', 'storage', 'backend', 'hosting'],
1583
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1584
+ <rect x="3" y="3" width="18" height="6" rx="1"/>
1585
+ <rect x="3" y="9" width="18" height="6" rx="1"/>
1586
+ <rect x="3" y="15" width="18" height="6" rx="1"/>
1587
+ <circle cx="7" cy="6" r="0.5" fill="currentColor"/>
1588
+ <circle cx="7" cy="12" r="0.5" fill="currentColor"/>
1589
+ <circle cx="7" cy="18" r="0.5" fill="currentColor"/>
1590
+ <line x1="10" y1="6" x2="13" y2="6"/>
1591
+ <line x1="10" y1="12" x2="13" y2="12"/>
1592
+ <line x1="10" y1="18" x2="13" y2="18"/>
1593
+ </svg>`,
1594
+ },
1595
+
1596
+ api: {
1597
+ name: 'api',
1598
+ category: 'tech',
1599
+ description: 'API endpoint or interface',
1600
+ tags: ['interface', 'endpoint', 'connection', 'integration'],
1601
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1602
+ <rect x="3" y="8" width="6" height="8" rx="1"/>
1603
+ <rect x="15" y="8" width="6" height="8" rx="1"/>
1604
+ <circle cx="12" cy="12" r="2"/>
1605
+ <line x1="9" y1="12" x2="10" y2="12"/>
1606
+ <line x1="14" y1="12" x2="15" y2="12"/>
1607
+ <path d="M6 8V6a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2"/>
1608
+ <path d="M6 16v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2"/>
1609
+ </svg>`,
1610
+ },
1611
+
1612
+ 'git-branch': {
1613
+ name: 'git-branch',
1614
+ category: 'tech',
1615
+ description: 'Git branch workflow',
1616
+ tags: ['git', 'version-control', 'branch', 'development'],
1617
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1618
+ <circle cx="6" cy="6" r="3"/>
1619
+ <circle cx="18" cy="18" r="3"/>
1620
+ <circle cx="6" cy="18" r="3"/>
1621
+ <path d="M6 9v6"/>
1622
+ <path d="M9 9a6 6 0 0 0 6 6h0a3 3 0 0 1 3 3"/>
1623
+ </svg>`,
1624
+ },
1625
+
1626
+ 'git-commit': {
1627
+ name: 'git-commit',
1628
+ category: 'tech',
1629
+ description: 'Git commit point',
1630
+ tags: ['git', 'version-control', 'commit', 'checkpoint'],
1631
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1632
+ <circle cx="12" cy="12" r="4"/>
1633
+ <line x1="2" y1="12" x2="8" y2="12"/>
1634
+ <line x1="16" y1="12" x2="22" y2="12"/>
1635
+ </svg>`,
1636
+ },
1637
+
1638
+ 'git-merge': {
1639
+ name: 'git-merge',
1640
+ category: 'tech',
1641
+ description: 'Git merge branches',
1642
+ tags: ['git', 'version-control', 'merge', 'combine'],
1643
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1644
+ <circle cx="6" cy="6" r="3"/>
1645
+ <circle cx="18" cy="18" r="3"/>
1646
+ <circle cx="6" cy="18" r="3"/>
1647
+ <path d="M6 9v6"/>
1648
+ <path d="M15 15a6 6 0 0 0-6-6h0a3 3 0 0 1-3-3"/>
1649
+ </svg>`,
1650
+ },
1651
+
1652
+ 'git-pull': {
1653
+ name: 'git-pull',
1654
+ category: 'tech',
1655
+ description: 'Git pull request',
1656
+ tags: ['git', 'version-control', 'pull-request', 'review'],
1657
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1658
+ <circle cx="6" cy="6" r="3"/>
1659
+ <circle cx="18" cy="6" r="3"/>
1660
+ <circle cx="6" cy="18" r="3"/>
1661
+ <line x1="6" y1="9" x2="6" y2="15"/>
1662
+ <polyline points="14 9 18 9 18 18"/>
1663
+ <polyline points="15 12 18 9 21 12"/>
1664
+ </svg>`,
1665
+ },
1666
+
1667
+ bug: {
1668
+ name: 'bug',
1669
+ category: 'tech',
1670
+ description: 'Bug or software issue',
1671
+ tags: ['debug', 'error', 'issue', 'insect'],
1672
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1673
+ <path d="M12 7V4"/>
1674
+ <path d="M7.5 7.5L5 5"/>
1675
+ <path d="M16.5 7.5L19 5"/>
1676
+ <rect x="8" y="9" width="8" height="10" rx="3"/>
1677
+ <line x1="3" y1="12" x2="8" y2="12"/>
1678
+ <line x1="16" y1="12" x2="21" y2="12"/>
1679
+ <line x1="3" y1="16" x2="8" y2="16"/>
1680
+ <line x1="16" y1="16" x2="21" y2="16"/>
1681
+ <path d="M7.5 19.5L5 22"/>
1682
+ <path d="M16.5 19.5L19 22"/>
1683
+ </svg>`,
1684
+ },
1685
+
1686
+ settings: {
1687
+ name: 'settings',
1688
+ category: 'tech',
1689
+ description: 'Settings or configuration',
1690
+ tags: ['config', 'preferences', 'gear', 'options'],
1691
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1692
+ <circle cx="12" cy="12" r="3"/>
1693
+ <path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"/>
1694
+ </svg>`,
1695
+ },
1696
+
1697
+ sliders: {
1698
+ name: 'sliders',
1699
+ category: 'tech',
1700
+ description: 'Sliders or adjustments',
1701
+ tags: ['controls', 'adjust', 'settings', 'parameters'],
1702
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1703
+ <line x1="4" y1="6" x2="8" y2="6"/>
1704
+ <line x1="12" y1="6" x2="20" y2="6"/>
1705
+ <circle cx="10" cy="6" r="2"/>
1706
+ <line x1="4" y1="12" x2="14" y2="12"/>
1707
+ <line x1="18" y1="12" x2="20" y2="12"/>
1708
+ <circle cx="16" cy="12" r="2"/>
1709
+ <line x1="4" y1="18" x2="6" y2="18"/>
1710
+ <line x1="10" y1="18" x2="20" y2="18"/>
1711
+ <circle cx="8" cy="18" r="2"/>
1712
+ </svg>`,
1713
+ },
1714
+
1715
+ zap: {
1716
+ name: 'zap',
1717
+ category: 'tech',
1718
+ description: 'Lightning bolt or power',
1719
+ tags: ['power', 'energy', 'fast', 'performance'],
1720
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1721
+ <polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/>
1722
+ </svg>`,
1723
+ },
1724
+
1725
+ cpu: {
1726
+ name: 'cpu',
1727
+ category: 'tech',
1728
+ description: 'CPU processor usage',
1729
+ tags: ['processor', 'performance', 'computing', 'hardware'],
1730
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1731
+ <rect x="7" y="7" width="10" height="10" rx="1"/>
1732
+ <line x1="9" y1="7" x2="9" y2="4"/>
1733
+ <line x1="12" y1="7" x2="12" y2="4"/>
1734
+ <line x1="15" y1="7" x2="15" y2="4"/>
1735
+ <line x1="9" y1="17" x2="9" y2="20"/>
1736
+ <line x1="12" y1="17" x2="12" y2="20"/>
1737
+ <line x1="15" y1="17" x2="15" y2="20"/>
1738
+ <line x1="7" y1="9" x2="4" y2="9"/>
1739
+ <line x1="7" y1="12" x2="4" y2="12"/>
1740
+ <line x1="7" y1="15" x2="4" y2="15"/>
1741
+ <line x1="17" y1="9" x2="20" y2="9"/>
1742
+ <line x1="17" y1="12" x2="20" y2="12"/>
1743
+ <line x1="17" y1="15" x2="20" y2="15"/>
1744
+ <rect x="10" y="10" width="4" height="4" rx="0.5"/>
1745
+ </svg>`,
1746
+ },
1747
+
1748
+ memory: {
1749
+ name: 'memory',
1750
+ category: 'tech',
1751
+ description: 'Memory or RAM module',
1752
+ tags: ['ram', 'storage', 'hardware', 'performance'],
1753
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1754
+ <rect x="5" y="3" width="14" height="18" rx="1"/>
1755
+ <line x1="9" y1="7" x2="9" y2="14"/>
1756
+ <line x1="12" y1="7" x2="12" y2="14"/>
1757
+ <line x1="15" y1="7" x2="15" y2="14"/>
1758
+ <line x1="5" y1="17" x2="19" y2="17"/>
1759
+ <line x1="8" y1="21" x2="8" y2="19"/>
1760
+ <line x1="12" y1="21" x2="12" y2="19"/>
1761
+ <line x1="16" y1="21" x2="16" y2="19"/>
1762
+ </svg>`,
1763
+ },
1764
+
1765
+ globe: {
1766
+ name: 'globe',
1767
+ category: 'tech',
1768
+ description: 'Web or internet globe',
1769
+ tags: ['web', 'internet', 'world', 'network'],
1770
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1771
+ <circle cx="12" cy="12" r="10"/>
1772
+ <line x1="2" y1="12" x2="22" y2="12"/>
1773
+ <path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/>
1774
+ </svg>`,
1775
+ },
1776
+
1777
+ 'qr-code': {
1778
+ name: 'qr-code',
1779
+ category: 'tech',
1780
+ description: 'QR code scanner',
1781
+ tags: ['scan', 'barcode', 'reader', 'mobile'],
1782
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1783
+ <rect x="3" y="3" width="7" height="7" rx="1"/>
1784
+ <rect x="14" y="3" width="7" height="7" rx="1"/>
1785
+ <rect x="3" y="14" width="7" height="7" rx="1"/>
1786
+ <rect x="5" y="5" width="3" height="3"/>
1787
+ <rect x="16" y="5" width="3" height="3"/>
1788
+ <rect x="5" y="16" width="3" height="3"/>
1789
+ <line x1="14" y1="14" x2="14" y2="16"/>
1790
+ <line x1="17" y1="14" x2="17" y2="16"/>
1791
+ <line x1="20" y1="14" x2="20" y2="16"/>
1792
+ <line x1="14" y1="18" x2="16" y2="18"/>
1793
+ <line x1="14" y1="21" x2="16" y2="21"/>
1794
+ <line x1="18" y1="18" x2="21" y2="18"/>
1795
+ <line x1="18" y1="21" x2="21" y2="21"/>
1796
+ </svg>`,
1797
+ },
1798
+
1799
+ // ═══════════════════════════════════════════════════════════════════════════
1800
+ // COMMUNICATION ICONS
1801
+ // ═══════════════════════════════════════════════════════════════════════════
1802
+
1803
+ bell: {
1804
+ name: 'bell',
1805
+ category: 'communication',
1806
+ description: 'Notification bell',
1807
+ tags: ['notification', 'alert', 'reminder', 'alarm'],
1808
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1809
+ <path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"/>
1810
+ <path d="M13.73 21a2 2 0 0 1-3.46 0"/>
1811
+ <line x1="12" y1="3" x2="12" y2="5"/>
1812
+ <line x1="9" y1="3" x2="9.5" y2="4.5"/>
1813
+ <line x1="15" y1="3" x2="14.5" y2="4.5"/>
1814
+ </svg>`,
1815
+ variants: {
1816
+ solid: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
1817
+ <path d="M12 2c.552 0 1 .448 1 1v1.07A6.002 6.002 0 0 1 18 10c0 3.5 1.5 6 3 7.5v.5H3v-.5c1.5-1.5 3-4 3-7.5a6.002 6.002 0 0 1 5-5.93V3c0-.552.448-1 1-1zm1 19c0 .552-.448 1-1 1s-1-.448-1-1h2z"/>
1818
+ </svg>`,
1819
+ duotone: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1820
+ <path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9" fill="currentColor" opacity="0.3"/>
1821
+ <path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"/>
1822
+ <path d="M13.73 21a2 2 0 0 1-3.46 0"/>
1823
+ <line x1="12" y1="3" x2="12" y2="5"/>
1824
+ </svg>`,
1825
+ glitch: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1826
+ <path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9" transform="translate(1,-1)" opacity="0.5"/>
1827
+ <path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"/>
1828
+ <path d="M13.73 21a2 2 0 0 1-3.46 0" transform="translate(1,-1)" opacity="0.5"/>
1829
+ <path d="M13.73 21a2 2 0 0 1-3.46 0"/>
1830
+ <line x1="12" y1="3" x2="12" y2="5"/>
1831
+ </svg>`,
1832
+ },
1833
+ },
1834
+
1835
+ 'bell-off': {
1836
+ name: 'bell-off',
1837
+ category: 'communication',
1838
+ description: 'Notifications disabled (bell with slash)',
1839
+ tags: ['notification', 'disabled', 'mute', 'silent', 'off'],
1840
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1841
+ <path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"/>
1842
+ <path d="M13.73 21a2 2 0 0 1-3.46 0"/>
1843
+ <line x1="2" y1="2" x2="22" y2="22"/>
1844
+ </svg>`,
1845
+ },
1846
+
1847
+ message: {
1848
+ name: 'message',
1849
+ category: 'communication',
1850
+ description: 'Message or comment bubble',
1851
+ tags: ['chat', 'comment', 'conversation', 'talk'],
1852
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1853
+ <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
1854
+ <line x1="8" y1="10" x2="16" y2="10"/>
1855
+ <line x1="8" y1="14" x2="12" y2="14"/>
1856
+ <circle cx="18" cy="8" r="0.5" fill="currentColor"/>
1857
+ </svg>`,
1858
+ variants: {
1859
+ solid: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
1860
+ <path d="M5 3h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H7.414l-4.707 4.707A1 1 0 0 1 1 21V5a2 2 0 0 1 2-2h2zm3 6a1 1 0 1 0 0 2h8a1 1 0 1 0 0-2H8zm0 4a1 1 0 1 0 0 2h4a1 1 0 1 0 0-2H8z"/>
1861
+ </svg>`,
1862
+ duotone: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1863
+ <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" fill="currentColor" opacity="0.3"/>
1864
+ <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
1865
+ <line x1="8" y1="10" x2="16" y2="10"/>
1866
+ <line x1="8" y1="14" x2="12" y2="14"/>
1867
+ </svg>`,
1868
+ glitch: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1869
+ <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" transform="translate(1,-1)" opacity="0.5"/>
1870
+ <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
1871
+ <line x1="8" y1="10" x2="16" y2="10" transform="translate(1,-1)" opacity="0.5"/>
1872
+ <line x1="8" y1="10" x2="16" y2="10"/>
1873
+ <line x1="8" y1="14" x2="12" y2="14"/>
1874
+ </svg>`,
1875
+ },
1876
+ },
1877
+
1878
+ mail: {
1879
+ name: 'mail',
1880
+ category: 'communication',
1881
+ description: 'Email envelope',
1882
+ tags: ['email', 'envelope', 'message', 'send'],
1883
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1884
+ <path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/>
1885
+ <polyline points="22,6 12,13 2,6"/>
1886
+ <line x1="16" y1="9" x2="16" y2="9.5"/>
1887
+ <line x1="8" y1="9" x2="8" y2="9.5"/>
1888
+ </svg>`,
1889
+ variants: {
1890
+ solid: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
1891
+ <path d="M4 4h16a2 2 0 0 1 2 2v.58l-10 6.25L2 6.58V6a2 2 0 0 1 2-2zm-2 4.42l10 6.25 10-6.25V18a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8.42z"/>
1892
+ </svg>`,
1893
+ duotone: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1894
+ <path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z" fill="currentColor" opacity="0.3"/>
1895
+ <path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/>
1896
+ <polyline points="22,6 12,13 2,6"/>
1897
+ </svg>`,
1898
+ glitch: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1899
+ <path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z" transform="translate(1,-1)" opacity="0.5"/>
1900
+ <path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/>
1901
+ <polyline points="22,6 12,13 2,6" transform="translate(1,-1)" opacity="0.5"/>
1902
+ <polyline points="22,6 12,13 2,6"/>
1903
+ </svg>`,
1904
+ },
1905
+ },
1906
+
1907
+ inbox: {
1908
+ name: 'inbox',
1909
+ category: 'communication',
1910
+ description: 'Inbox tray',
1911
+ tags: ['mail', 'messages', 'receive', 'tray'],
1912
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1913
+ <polyline points="22 12 16 12 14 15 10 15 8 12 2 12"/>
1914
+ <path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"/>
1915
+ <line x1="6" y1="8" x2="18" y2="8"/>
1916
+ </svg>`,
1917
+ variants: {
1918
+ solid: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
1919
+ <path d="M7.24 4h9.52a2 2 0 0 1 1.79 1.11L22 12v6a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-6l3.45-6.89A2 2 0 0 1 7.24 4zm8.76 9h-2l-2 3h-4l-2-3H8v5h8v-5z"/>
1920
+ </svg>`,
1921
+ duotone: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1922
+ <path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z" fill="currentColor" opacity="0.3"/>
1923
+ <polyline points="22 12 16 12 14 15 10 15 8 12 2 12"/>
1924
+ <path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"/>
1925
+ </svg>`,
1926
+ glitch: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1927
+ <polyline points="22 12 16 12 14 15 10 15 8 12 2 12" transform="translate(1,-1)" opacity="0.5"/>
1928
+ <polyline points="22 12 16 12 14 15 10 15 8 12 2 12"/>
1929
+ <path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z" transform="translate(1,-1)" opacity="0.5"/>
1930
+ <path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"/>
1931
+ </svg>`,
1932
+ },
1933
+ },
1934
+
1935
+ send: {
1936
+ name: 'send',
1937
+ category: 'communication',
1938
+ description: 'Send message or paper plane',
1939
+ tags: ['send', 'transmit', 'share', 'deliver'],
1940
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1941
+ <line x1="22" y1="2" x2="11" y2="13"/>
1942
+ <polygon points="22 2 15 22 11 13 2 9 22 2"/>
1943
+ <line x1="14" y1="10" x2="16" y2="8"/>
1944
+ <circle cx="20" cy="4" r="0.5" fill="currentColor"/>
1945
+ </svg>`,
1946
+ variants: {
1947
+ solid: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
1948
+ <path d="M22.707 1.293a1 1 0 0 1 .083 1.32l-.083.094-7 13a1 1 0 0 1-1.706.107l-.07-.107-3.224-5.981-5.98-3.223a1 1 0 0 1 .107-1.707l.094-.083 13-7a1 1 0 0 1 1.32.083l.459.504z"/>
1949
+ </svg>`,
1950
+ duotone: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1951
+ <polygon points="22 2 15 22 11 13 2 9 22 2" fill="currentColor" opacity="0.3"/>
1952
+ <line x1="22" y1="2" x2="11" y2="13"/>
1953
+ <polygon points="22 2 15 22 11 13 2 9 22 2"/>
1954
+ </svg>`,
1955
+ glitch: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1956
+ <line x1="22" y1="2" x2="11" y2="13" transform="translate(1,-1)" opacity="0.5"/>
1957
+ <line x1="22" y1="2" x2="11" y2="13"/>
1958
+ <polygon points="22 2 15 22 11 13 2 9 22 2" transform="translate(1,-1)" opacity="0.5"/>
1959
+ <polygon points="22 2 15 22 11 13 2 9 22 2"/>
1960
+ </svg>`,
1961
+ },
1962
+ },
1963
+
1964
+ 'at-sign': {
1965
+ name: 'at-sign',
1966
+ category: 'communication',
1967
+ description: 'Mention or at symbol',
1968
+ tags: ['mention', 'email', 'tag', 'username'],
1969
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1970
+ <circle cx="12" cy="12" r="4"/>
1971
+ <path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94"/>
1972
+ <line x1="19" y1="10" x2="19" y2="10.5"/>
1973
+ </svg>`,
1974
+ variants: {
1975
+ solid: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
1976
+ <path d="M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10a9.96 9.96 0 0 0 3.92-.79l.63 1.87A11.96 11.96 0 0 1 12 24C5.373 24 0 18.627 0 12S5.373 0 12 0s12 5.373 12 12v1a5 5 0 0 1-10 0V8h2v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94l.63 1.87zM12 16a4 4 0 1 1 0-8 4 4 0 0 1 0 8z"/>
1977
+ </svg>`,
1978
+ duotone: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1979
+ <circle cx="12" cy="12" r="4" fill="currentColor" opacity="0.3"/>
1980
+ <circle cx="12" cy="12" r="4"/>
1981
+ <path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94"/>
1982
+ </svg>`,
1983
+ glitch: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1984
+ <circle cx="12" cy="12" r="4" transform="translate(1,-1)" opacity="0.5"/>
1985
+ <circle cx="12" cy="12" r="4"/>
1986
+ <path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94" transform="translate(1,-1)" opacity="0.5"/>
1987
+ <path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94"/>
1988
+ </svg>`,
1989
+ },
1990
+ },
1991
+
1992
+ phone: {
1993
+ name: 'phone',
1994
+ category: 'communication',
1995
+ description: 'Phone call',
1996
+ tags: ['call', 'telephone', 'contact', 'voice'],
1997
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
1998
+ <path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"/>
1999
+ <line x1="15" y1="3" x2="15" y2="3.5"/>
2000
+ <line x1="18" y1="5" x2="18" y2="5.5"/>
2001
+ </svg>`,
2002
+ variants: {
2003
+ solid: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
2004
+ <path d="M20.01 15.38c-1.23 0-2.42-.2-3.53-.56a.977.977 0 0 0-1.01.24l-1.57 1.97c-2.83-1.35-5.48-3.9-6.89-6.83l1.95-1.66c.27-.28.35-.67.24-1.02-.37-1.11-.56-2.3-.56-3.53 0-.54-.45-.99-.99-.99H4.19C3.65 3 3 3.24 3 3.99 3 13.28 10.73 21 20.01 21c.71 0 .99-.63.99-1.18v-3.45c0-.54-.45-.99-.99-.99z"/>
2005
+ </svg>`,
2006
+ duotone: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2007
+ <path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z" fill="currentColor" opacity="0.3"/>
2008
+ <path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"/>
2009
+ </svg>`,
2010
+ glitch: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2011
+ <path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z" transform="translate(1,-1)" opacity="0.5"/>
2012
+ <path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"/>
2013
+ </svg>`,
2014
+ },
2015
+ },
2016
+
2017
+ 'phone-off': {
2018
+ name: 'phone-off',
2019
+ category: 'communication',
2020
+ description: 'End call (phone with X)',
2021
+ tags: ['phone', 'end', 'hangup', 'disconnect', 'off'],
2022
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2023
+ <path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"/>
2024
+ <line x1="2" y1="2" x2="22" y2="22"/>
2025
+ </svg>`,
2026
+ },
2027
+
2028
+ 'video-call': {
2029
+ name: 'video-call',
2030
+ category: 'communication',
2031
+ description: 'Video call or video chat',
2032
+ tags: ['video', 'camera', 'conference', 'chat'],
2033
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2034
+ <rect x="2" y="6" width="14" height="12" rx="2"/>
2035
+ <polygon points="16 10 22 7 22 17 16 14 16 10"/>
2036
+ <circle cx="6" cy="10" r="1" fill="currentColor"/>
2037
+ <line x1="18" y1="4" x2="20" y2="4"/>
2038
+ <line x1="5" y1="15" x2="11" y2="15"/>
2039
+ </svg>`,
2040
+ variants: {
2041
+ solid: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
2042
+ <path d="M4 6a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6zm2 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 5h6v-1H6v1z"/>
2043
+ <path d="M22 7l-6 3v4l6 3V7z"/>
2044
+ </svg>`,
2045
+ duotone: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2046
+ <rect x="2" y="6" width="14" height="12" rx="2" fill="currentColor" opacity="0.3"/>
2047
+ <rect x="2" y="6" width="14" height="12" rx="2"/>
2048
+ <polygon points="16 10 22 7 22 17 16 14 16 10"/>
2049
+ <circle cx="6" cy="10" r="1" fill="currentColor"/>
2050
+ <line x1="5" y1="15" x2="11" y2="15"/>
2051
+ </svg>`,
2052
+ glitch: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2053
+ <rect x="2" y="6" width="14" height="12" rx="2" transform="translate(1,-1)" opacity="0.5"/>
2054
+ <rect x="2" y="6" width="14" height="12" rx="2"/>
2055
+ <polygon points="16 10 22 7 22 17 16 14 16 10" transform="translate(1,-1)" opacity="0.5"/>
2056
+ <polygon points="16 10 22 7 22 17 16 14 16 10"/>
2057
+ <circle cx="6" cy="10" r="1" fill="currentColor"/>
2058
+ <line x1="5" y1="15" x2="11" y2="15"/>
2059
+ </svg>`,
2060
+ },
2061
+ },
2062
+
2063
+ // ═══════════════════════════════════════════════════════════════════════════
2064
+ // STATUS ICONS
2065
+ // ═══════════════════════════════════════════════════════════════════════════
2066
+
2067
+ info: {
2068
+ name: 'info',
2069
+ category: 'status',
2070
+ description: 'Information indicator',
2071
+ tags: ['information', 'help', 'about', 'details'],
2072
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2073
+ <circle cx="12" cy="12" r="10"/>
2074
+ <line x1="12" y1="16" x2="12" y2="12"/>
2075
+ <line x1="12" y1="8" x2="12" y2="8.5"/>
2076
+ <line x1="8" y1="12" x2="8.5" y2="12"/>
2077
+ <line x1="15.5" y1="12" x2="16" y2="12"/>
2078
+ </svg>`,
2079
+ },
2080
+
2081
+ warning: {
2082
+ name: 'warning',
2083
+ category: 'status',
2084
+ description: 'Warning or caution indicator',
2085
+ tags: ['alert', 'caution', 'attention', 'danger'],
2086
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2087
+ <path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/>
2088
+ <line x1="12" y1="9" x2="12" y2="13"/>
2089
+ <line x1="12" y1="17" x2="12" y2="17.5"/>
2090
+ <line x1="8" y1="16" x2="8.5" y2="16"/>
2091
+ <line x1="15.5" y1="16" x2="16" y2="16"/>
2092
+ </svg>`,
2093
+ },
2094
+
2095
+ error: {
2096
+ name: 'error',
2097
+ category: 'status',
2098
+ description: 'Error or danger indicator',
2099
+ tags: ['error', 'danger', 'cancel', 'wrong', 'failed'],
2100
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2101
+ <circle cx="12" cy="12" r="10"/>
2102
+ <line x1="15" y1="9" x2="9" y2="15"/>
2103
+ <line x1="9" y1="9" x2="15" y2="15"/>
2104
+ <line x1="6" y1="6" x2="6.5" y2="6.5"/>
2105
+ <line x1="17.5" y1="17.5" x2="18" y2="18"/>
2106
+ </svg>`,
2107
+ },
2108
+
2109
+ success: {
2110
+ name: 'success',
2111
+ category: 'status',
2112
+ description: 'Success or completion indicator',
2113
+ tags: ['success', 'complete', 'done', 'check', 'verified'],
2114
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2115
+ <circle cx="12" cy="12" r="10"/>
2116
+ <polyline points="9 12 11 14 15 10"/>
2117
+ <line x1="17" y1="7" x2="17.5" y2="6.5"/>
2118
+ <line x1="6.5" y1="17.5" x2="7" y2="17"/>
2119
+ </svg>`,
2120
+ },
2121
+
2122
+ help: {
2123
+ name: 'help',
2124
+ category: 'status',
2125
+ description: 'Help or question indicator',
2126
+ tags: ['help', 'question', 'support', 'faq', 'unknown'],
2127
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2128
+ <circle cx="12" cy="12" r="10"/>
2129
+ <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/>
2130
+ <line x1="12" y1="17" x2="12" y2="17.5"/>
2131
+ <line x1="16" y1="8" x2="16.5" y2="8"/>
2132
+ </svg>`,
2133
+ },
2134
+
2135
+ loading: {
2136
+ name: 'loading',
2137
+ category: 'status',
2138
+ description: 'Loading spinner',
2139
+ tags: ['loading', 'spinner', 'waiting', 'processing', 'busy'],
2140
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2141
+ <line x1="12" y1="2" x2="12" y2="6"/>
2142
+ <line x1="12" y1="18" x2="12" y2="22"/>
2143
+ <line x1="4.93" y1="4.93" x2="7.76" y2="7.76"/>
2144
+ <line x1="16.24" y1="16.24" x2="19.07" y2="19.07"/>
2145
+ <line x1="2" y1="12" x2="6" y2="12"/>
2146
+ <line x1="18" y1="12" x2="22" y2="12"/>
2147
+ <line x1="4.93" y1="19.07" x2="7.76" y2="16.24"/>
2148
+ <line x1="16.24" y1="7.76" x2="19.07" y2="4.93"/>
2149
+ <circle cx="12" cy="12" r="1" fill="currentColor"/>
2150
+ </svg>`,
2151
+ },
2152
+
2153
+ progress: {
2154
+ name: 'progress',
2155
+ category: 'status',
2156
+ description: 'Progress indicator',
2157
+ tags: ['progress', 'loading', 'percentage', 'completion'],
2158
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2159
+ <circle cx="12" cy="12" r="10"/>
2160
+ <path d="M12 2a10 10 0 0 1 8.66 5"/>
2161
+ <path d="M20.66 7a10 10 0 0 1 1.34 5"/>
2162
+ <line x1="15" y1="5" x2="15.5" y2="4.5"/>
2163
+ <line x1="19" y1="9" x2="19.5" y2="8.5"/>
2164
+ </svg>`,
2165
+ },
2166
+
2167
+ online: {
2168
+ name: 'online',
2169
+ category: 'status',
2170
+ description: 'Online or connected status',
2171
+ tags: ['online', 'connected', 'active', 'available', 'live'],
2172
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2173
+ <circle cx="12" cy="12" r="4" fill="currentColor"/>
2174
+ <circle cx="12" cy="12" r="8"/>
2175
+ <line x1="8.5" y1="8.5" x2="9" y2="9"/>
2176
+ <line x1="15" y1="15" x2="15.5" y2="15.5"/>
2177
+ </svg>`,
2178
+ },
2179
+
2180
+ offline: {
2181
+ name: 'offline',
2182
+ category: 'status',
2183
+ description: 'Offline or disconnected status',
2184
+ tags: ['offline', 'disconnected', 'unavailable', 'away'],
2185
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2186
+ <circle cx="12" cy="12" r="8"/>
2187
+ <line x1="4.93" y1="4.93" x2="19.07" y2="19.07"/>
2188
+ <line x1="8" y1="8" x2="8.5" y2="8.5"/>
2189
+ <line x1="15.5" y1="15.5" x2="16" y2="16"/>
2190
+ </svg>`,
2191
+ },
2192
+
2193
+ 'battery-full': {
2194
+ name: 'battery-full',
2195
+ category: 'status',
2196
+ description: 'Battery fully charged',
2197
+ tags: ['battery', 'power', 'full', 'charged', 'energy'],
2198
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2199
+ <rect x="2" y="7" width="18" height="10" rx="2" ry="2"/>
2200
+ <line x1="22" y1="11" x2="22" y2="13"/>
2201
+ <rect x="5" y="10" width="12" height="4" fill="currentColor"/>
2202
+ <line x1="18" y1="9" x2="18.5" y2="9"/>
2203
+ </svg>`,
2204
+ },
2205
+
2206
+ 'battery-low': {
2207
+ name: 'battery-low',
2208
+ category: 'status',
2209
+ description: 'Battery low charge',
2210
+ tags: ['battery', 'low', 'power', 'warning', 'empty'],
2211
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2212
+ <rect x="2" y="7" width="18" height="10" rx="2" ry="2"/>
2213
+ <line x1="22" y1="11" x2="22" y2="13"/>
2214
+ <rect x="5" y="10" width="3" height="4" fill="currentColor"/>
2215
+ <line x1="10" y1="10" x2="10" y2="14"/>
2216
+ <line x1="12" y1="10" x2="12" y2="14"/>
2217
+ </svg>`,
2218
+ },
2219
+
2220
+ 'battery-charging': {
2221
+ name: 'battery-charging',
2222
+ category: 'status',
2223
+ description: 'Battery currently charging',
2224
+ tags: ['battery', 'charging', 'power', 'energy', 'recharge'],
2225
+ svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2226
+ <rect x="2" y="7" width="18" height="10" rx="2" ry="2"/>
2227
+ <line x1="22" y1="11" x2="22" y2="13"/>
2228
+ <polyline points="11 10 8 12 10 12 8 14"/>
2229
+ <line x1="15" y1="9" x2="15.5" y2="8.5"/>
2230
+ <line x1="18" y1="14" x2="18.5" y2="14.5"/>
2231
+ </svg>`,
2232
+ },
2233
+ // Artist agents can add icons by following the format above
2234
+ // ═══════════════════════════════════════════════════════════════════════════
2235
+ };
2236
+
2237
+ /**
2238
+ * Master icon registry - merges defs/ definitions (with variants) over legacy
2239
+ * The defs/ definitions take precedence and include all 4 variants
2240
+ */
2241
+ export const icons: IconRegistry = { ...legacyIcons, ...defsRegistry };
2242
+
2243
+ /**
2244
+ * Get all registered icon names
2245
+ */
2246
+ export function getRegisteredIcons(): string[] {
2247
+ return Object.keys(icons);
2248
+ }
2249
+
2250
+ /**
2251
+ * Check if an icon is registered
2252
+ */
2253
+ export function isIconRegistered(name: string): boolean {
2254
+ return name in icons;
2255
+ }
2256
+
2257
+ /**
2258
+ * Get icon definition by name
2259
+ */
2260
+ export function getIconDefinition(name: string): IconDefinition | undefined {
2261
+ return icons[name];
2262
+ }
2263
+
2264
+ /**
2265
+ * Register a new icon (for runtime registration)
2266
+ */
2267
+ export function registerIcon(definition: IconDefinition): void {
2268
+ icons[definition.name] = definition;
2269
+ }
2270
+
2271
+ /**
2272
+ * Get icons by category from registry
2273
+ */
2274
+ export function getRegisteredByCategory(category: IconDefinition['category']): IconDefinition[] {
2275
+ return Object.values(icons).filter((icon) => icon.category === category);
2276
+ }