Icon.tsx 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098
  1. import clsx from 'clsx';
  2. const icons = {
  3. plus: ({ className }) => (
  4. <svg
  5. xmlns="http://www.w3.org/2000/svg"
  6. className={clsx('icon icon-tabler icon icon-tabler icon-tabler-plus', className)}
  7. width="24"
  8. height="24"
  9. viewBox="0 0 24 24"
  10. strokeWidth="2"
  11. stroke="currentColor"
  12. fill="none"
  13. strokeLinecap="round"
  14. strokeLinejoin="round"
  15. >
  16. <line x1="12" y1="5" x2="12" y2="19" />
  17. <line x1="5" y1="12" x2="19" y2="12" />
  18. </svg>
  19. ),
  20. 'brand-github': ({ className }) => (
  21. <svg
  22. xmlns="http://www.w3.org/2000/svg"
  23. className={clsx('icon icon-tabler icon-tabler-brand-github', className)}
  24. width={24}
  25. height={24}
  26. viewBox="0 0 24 24"
  27. strokeWidth="2"
  28. stroke="currentColor"
  29. fill="none"
  30. strokeLinecap="round"
  31. strokeLinejoin="round"
  32. >
  33. <path d="M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5" />
  34. </svg>
  35. ),
  36. 'brand-google': ({ className }) => (
  37. <svg
  38. xmlns="http://www.w3.org/2000/svg"
  39. className={clsx('icon icon-tabler icon-tabler-brand-google', className)}
  40. width={24}
  41. height={24}
  42. viewBox="0 0 24 24"
  43. strokeWidth="2"
  44. stroke="currentColor"
  45. fill="none"
  46. strokeLinecap="round"
  47. strokeLinejoin="round"
  48. >
  49. <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
  50. <path d="M17.788 5.108a9 9 0 1 0 3.212 6.892h-8"></path>
  51. </svg>
  52. ),
  53. 'brand-sketch': ({ className }) => (
  54. <svg
  55. xmlns="http://www.w3.org/2000/svg"
  56. className={clsx('icon icon-tabler icon-tabler-brand-sketch', className)}
  57. width={24}
  58. height={24}
  59. viewBox="0 0 24 24"
  60. strokeWidth="2"
  61. stroke="currentColor"
  62. fill="none"
  63. strokeLinecap="round"
  64. strokeLinejoin="round"
  65. >
  66. <path d="M3.262 10.878l8 8.789c.4 .44 1.091 .44 1.491 0l8 -8.79c.313 -.344 .349 -.859 .087 -1.243l-3.537 -5.194a1 1 0 0 0 -.823 -.436h-8.926a1 1 0 0 0 -.823 .436l-3.54 5.192c-.263 .385 -.227 .901 .087 1.246z" />
  67. </svg>
  68. ),
  69. 'brand-figma': ({ className }) => (
  70. <svg
  71. xmlns="http://www.w3.org/2000/svg"
  72. className={clsx('icon icon-tabler icon-tabler-brand-figma', className)}
  73. width={24}
  74. height={24}
  75. viewBox="0 0 24 24"
  76. strokeWidth={2}
  77. stroke="currentColor"
  78. fill="none"
  79. strokeLinecap="round"
  80. strokeLinejoin="round"
  81. >
  82. <circle cx={15} cy={12} r={3} />
  83. <rect x={6} y={3} width={12} height={6} rx={3} />
  84. <path d="M9 9a3 3 0 0 0 0 6h3m-3 0a3 3 0 1 0 3 3v-15" />
  85. </svg>
  86. ),
  87. 'brand-twitter': ({ className }) => (
  88. <svg
  89. xmlns="http://www.w3.org/2000/svg"
  90. className={clsx('icon icon-tabler icon-tabler-brand-twitter', className)}
  91. width={24}
  92. height={24}
  93. viewBox="0 0 24 24"
  94. strokeWidth={2}
  95. stroke="currentColor"
  96. fill="none"
  97. strokeLinecap="round"
  98. strokeLinejoin="round"
  99. >
  100. <path d="M22 4.01c-1 .49 -1.98 .689 -3 .99c-1.121 -1.265 -2.783 -1.335 -4.38 -.737s-2.643 2.06 -2.62 3.737v1c-3.245 .083 -6.135 -1.395 -8 -4c0 0 -4.182 7.433 4 11c-1.872 1.247 -3.739 2.088 -6 2c3.308 1.803 6.913 2.423 10.034 1.517c3.58 -1.04 6.522 -3.723 7.651 -7.742a13.84 13.84 0 0 0 .497 -3.753c-.002 -.249 1.51 -2.772 1.818 -4.013z" />
  101. </svg>
  102. ),
  103. 'brand-facebook': ({ className }) => (
  104. <svg
  105. xmlns="http://www.w3.org/2000/svg"
  106. className={clsx('icon icon-tabler icon-tabler-brand-facebook', className)}
  107. width={24}
  108. height={24}
  109. viewBox="0 0 24 24"
  110. strokeWidth={2}
  111. stroke="currentColor"
  112. fill="none"
  113. strokeLinecap="round"
  114. strokeLinejoin="round"
  115. >
  116. <path d="M7 10v4h3v7h4v-7h3l1 -4h-4v-2a1 1 0 0 1 1 -1h3v-4h-3a5 5 0 0 0 -5 5v2h-3" />
  117. </svg>
  118. ),
  119. 'brand-dribbble': ({ className }) => (
  120. <svg
  121. xmlns="http://www.w3.org/2000/svg"
  122. className={clsx('icon icon-tabler icon-tabler-brand-dribbble', className)}
  123. width={24}
  124. height={24}
  125. viewBox="0 0 24 24"
  126. strokeWidth={2}
  127. stroke="currentColor"
  128. fill="none"
  129. strokeLinecap="round"
  130. strokeLinejoin="round"
  131. >
  132. <circle cx={12} cy={12} r={9} />
  133. <path d="M9 3.6c5 6 7 10.5 7.5 16.2" />
  134. <path d="M6.4 19c3.5 -3.5 6 -6.5 14.5 -6.4" />
  135. <path d="M3.1 10.75c5 0 9.814 -.38 15.314 -5" />
  136. </svg>
  137. ),
  138. heart: ({ className }) => (
  139. <svg
  140. xmlns="http://www.w3.org/2000/svg"
  141. className={clsx('icon icon-tabler icon-tabler-heart', className)}
  142. width={24}
  143. height={24}
  144. viewBox="0 0 24 24"
  145. strokeWidth={2}
  146. stroke="currentColor"
  147. fill="none"
  148. strokeLinecap="round"
  149. strokeLinejoin="round"
  150. >
  151. <path d="M19.5 13.572l-7.5 7.428l-7.5 -7.428m0 0a5 5 0 1 1 7.5 -6.566a5 5 0 1 1 7.5 6.572" />
  152. </svg>
  153. ),
  154. download: ({ className }) => (
  155. <svg
  156. xmlns="http://www.w3.org/2000/svg"
  157. className={clsx('icon icon-tabler icon-tabler-download', className)}
  158. width={24}
  159. height={24}
  160. viewBox="0 0 24 24"
  161. strokeWidth={2}
  162. stroke="currentColor"
  163. fill="none"
  164. strokeLinecap="round"
  165. strokeLinejoin="round"
  166. >
  167. <path d="M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2" />
  168. <polyline points="7 11 12 16 17 11" />
  169. <line x1={12} y1={4} x2={12} y2={16} />
  170. </svg>
  171. ),
  172. edit: ({ className }) => (
  173. <svg
  174. xmlns="http://www.w3.org/2000/svg"
  175. className={clsx('icon icon-tabler icon-tabler-edit', className)}
  176. width={24}
  177. height={24}
  178. viewBox="0 0 24 24"
  179. strokeWidth={2}
  180. stroke="currentColor"
  181. fill="none"
  182. strokeLinecap="round"
  183. strokeLinejoin="round"
  184. >
  185. <path d="M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1" />
  186. <path d="M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z" />
  187. <path d="M16 5l3 3" />
  188. </svg>
  189. ),
  190. search: ({ className }) => (
  191. <svg
  192. xmlns="http://www.w3.org/2000/svg"
  193. className={clsx('icon icon-tabler icon-tabler-search', className)}
  194. width={24}
  195. height={24}
  196. viewBox="0 0 24 24"
  197. strokeWidth={2}
  198. stroke="currentColor"
  199. fill="none"
  200. strokeLinecap="round"
  201. strokeLinejoin="round"
  202. >
  203. <circle cx={10} cy={10} r={7} />
  204. <line x1={21} y1={21} x2={15} y2={15} />
  205. </svg>
  206. ),
  207. lock: ({ className }) => (
  208. <svg
  209. xmlns="http://www.w3.org/2000/svg"
  210. className={clsx('icon icon-tabler icon-tabler-lock', className)}
  211. width={24}
  212. height={24}
  213. viewBox="0 0 24 24"
  214. strokeWidth={2}
  215. stroke="currentColor"
  216. fill="none"
  217. strokeLinecap="round"
  218. strokeLinejoin="round"
  219. >
  220. <rect x={5} y={11} width={14} height={10} rx={2} />
  221. <circle cx={12} cy={16} r={1} />
  222. <path d="M8 11v-4a4 4 0 0 1 8 0v4" />
  223. </svg>
  224. ),
  225. 'brand-bootstrap': ({ className }) => (
  226. <svg
  227. xmlns="http://www.w3.org/2000/svg"
  228. className={clsx('icon icon-tabler icon-tabler-brand-bootstrap', className)}
  229. width={24}
  230. height={24}
  231. viewBox="0 0 24 24"
  232. strokeWidth={2}
  233. stroke="currentColor"
  234. fill="none"
  235. strokeLinecap="round"
  236. strokeLinejoin="round"
  237. >
  238. <path d="M2 12a2 2 0 0 0 2 -2v-4a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v4a2 2 0 0 0 2 2" />
  239. <path d="M2 12a2 2 0 0 1 2 2v4a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-4a2 2 0 0 1 2 -2" />
  240. <path d="M9 16v-8h3.5a2 2 0 1 1 0 4h-3.5h4a2 2 0 1 1 0 4h-4z" />
  241. </svg>
  242. ),
  243. 'brand-html5': ({ className }) => (
  244. <svg
  245. xmlns="http://www.w3.org/2000/svg"
  246. className={clsx('icon icon-tabler icon-tabler-brand-html5', className)}
  247. width={24}
  248. height={24}
  249. viewBox="0 0 24 24"
  250. strokeWidth={2}
  251. stroke="currentColor"
  252. fill="none"
  253. strokeLinecap="round"
  254. strokeLinejoin="round"
  255. >
  256. <path d="M20 4l-2 14.5l-6 2l-6 -2l-2 -14.5z" />
  257. <path d="M15.5 8h-7l.5 4h6l-.5 3.5l-2.5 .75l-2.5 -.75l-.1 -.5" />
  258. </svg>
  259. ),
  260. tools: ({ className }) => (
  261. <svg
  262. xmlns="http://www.w3.org/2000/svg"
  263. className={clsx('icon icon-tabler icon-tabler-tools', className)}
  264. width={24}
  265. height={24}
  266. viewBox="0 0 24 24"
  267. strokeWidth={2}
  268. stroke="currentColor"
  269. fill="none"
  270. strokeLinecap="round"
  271. strokeLinejoin="round"
  272. >
  273. <path d="M3 21h4l13 -13a1.5 1.5 0 0 0 -4 -4l-13 13v4" />
  274. <line x1="14.5" y1="5.5" x2="18.5" y2="9.5" />
  275. <polyline points="12 8 7 3 3 7 8 12" />
  276. <line x1={7} y1={8} x2="5.5" y2="9.5" />
  277. <polyline points="16 12 21 17 17 21 12 16" />
  278. <line x1={16} y1={17} x2="14.5" y2="18.5" />
  279. </svg>
  280. ),
  281. paint: ({ className }) => (
  282. <svg
  283. xmlns="http://www.w3.org/2000/svg"
  284. className={clsx('icon icon-tabler icon-tabler-paint', className)}
  285. width={24}
  286. height={24}
  287. viewBox="0 0 24 24"
  288. strokeWidth={2}
  289. stroke="currentColor"
  290. fill="none"
  291. strokeLinecap="round"
  292. strokeLinejoin="round"
  293. >
  294. <rect x={5} y={3} width={14} height={6} rx={2} />
  295. <path d="M19 6h1a2 2 0 0 1 2 2a5 5 0 0 1 -5 5l-5 0v2" />
  296. <rect x={10} y={15} width={4} height={6} rx={1} />
  297. </svg>
  298. ),
  299. check: ({ className }) => (
  300. <svg
  301. xmlns="http://www.w3.org/2000/svg"
  302. className={clsx('icon icon-tabler icon-tabler-check', className)}
  303. width={24}
  304. height={24}
  305. viewBox="0 0 24 24"
  306. strokeWidth={2}
  307. stroke="currentColor"
  308. fill="none"
  309. strokeLinecap="round"
  310. strokeLinejoin="round"
  311. >
  312. <path d="M5 12l5 5l10 -10" />
  313. </svg>
  314. ),
  315. x: ({ className }) => (
  316. <svg
  317. xmlns="http://www.w3.org/2000/svg"
  318. className={clsx('icon icon-tabler icon-tabler-x', className)}
  319. width={24}
  320. height={24}
  321. viewBox="0 0 24 24"
  322. strokeWidth={2}
  323. stroke="currentColor"
  324. fill="none"
  325. strokeLinecap="round"
  326. strokeLinejoin="round"
  327. >
  328. <line x1="18" y1="6" x2="6" y2="18" />
  329. <line x1="6" y1="6" x2="18" y2="18" />
  330. </svg>
  331. ),
  332. copy: ({ className }) => (
  333. <svg
  334. xmlns="http://www.w3.org/2000/svg"
  335. className={clsx('icon icon-tabler icon-tabler-copy', className)}
  336. width="24"
  337. height="24"
  338. viewBox="0 0 24 24"
  339. strokeWidth="2"
  340. stroke="currentColor"
  341. fill="none"
  342. strokeLinecap="round"
  343. strokeLinejoin="round"
  344. >
  345. <rect x="8" y="8" width="12" height="12" rx="2" />
  346. <path d="M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2" />
  347. </svg>
  348. ),
  349. 'arrow-down-circle': ({ className }) => (
  350. <svg
  351. xmlns="http://www.w3.org/2000/svg"
  352. className={clsx('icon icon-tabler icon-tabler-arrow-down-circle', className)}
  353. width="24"
  354. height="24"
  355. viewBox="0 0 24 24"
  356. strokeWidth="2"
  357. stroke="currentColor"
  358. fill="none"
  359. strokeLinecap="round"
  360. strokeLinejoin="round"
  361. >
  362. <circle cx="12" cy="12" r="9" />
  363. <line x1="8" y1="12" x2="12" y2="16" />
  364. <line x1="12" y1="8" x2="12" y2="16" />
  365. <line x1="16" y1="12" x2="12" y2="16" />
  366. </svg>
  367. ),
  368. 'arrow-right': ({ className }) => (
  369. <svg
  370. xmlns="http://www.w3.org/2000/svg"
  371. className={clsx('icon icon-tabler icon-tabler-arrow-right', className)}
  372. width="24"
  373. height="24"
  374. viewBox="0 0 24 24"
  375. strokeWidth="2"
  376. stroke="currentColor"
  377. fill="none"
  378. strokeLinecap="round"
  379. strokeLinejoin="round"
  380. >
  381. <path d="M5 12l14 0" />
  382. <path d="M13 18l6 -6" />
  383. <path d="M13 6l6 6" />
  384. </svg>
  385. ),
  386. 'thumb-up': ({ className }) => (
  387. <svg
  388. xmlns="http://www.w3.org/2000/svg"
  389. className={clsx('icon icon-tabler icon-tabler-thumb-up', className)}
  390. width="24"
  391. height="24"
  392. viewBox="0 0 24 24"
  393. strokeWidth="2"
  394. stroke="currentColor"
  395. fill="none"
  396. strokeLinecap="round"
  397. strokeLinejoin="round"
  398. >
  399. <path d="M7 11v8a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1v-7a1 1 0 0 1 1 -1h3a4 4 0 0 0 4 -4v-1a2 2 0 0 1 4 0v5h3a2 2 0 0 1 2 2l-1 5a2 3 0 0 1 -2 2h-7a3 3 0 0 1 -3 -3" />
  400. </svg>
  401. ),
  402. 'device-mobile': ({ className }) => (
  403. <svg
  404. xmlns="http://www.w3.org/2000/svg"
  405. className={clsx('icon icon-tabler icon-tabler-device-mobile', className)}
  406. width="24"
  407. height="24"
  408. viewBox="0 0 24 24"
  409. strokeWidth="2"
  410. stroke="currentColor"
  411. fill="none"
  412. strokeLinecap="round"
  413. strokeLinejoin="round"
  414. >
  415. <rect x="6" y="3" width="12" height="18" rx="2" />
  416. <line x1="11" y1="4" x2="13" y2="4" />
  417. <line x1="12" y1="17" x2="12" y2="17.01" />
  418. </svg>
  419. ),
  420. 'device-tablet': ({ className }) => (
  421. <svg
  422. xmlns="http://www.w3.org/2000/svg"
  423. className={clsx('icon icon-tabler icon-tabler-device-tablet', className)}
  424. width="24"
  425. height="24"
  426. viewBox="0 0 24 24"
  427. strokeWidth="1.5"
  428. stroke="currentColor"
  429. fill="none"
  430. strokeLinecap="round"
  431. strokeLinejoin="round"
  432. >
  433. <rect x="5" y="3" width="14" height="18" rx="1" />
  434. <circle cx="12" cy="17" r="1" />
  435. </svg>
  436. ),
  437. 'device-desktop': ({ className }) => (
  438. <svg
  439. xmlns="http://www.w3.org/2000/svg"
  440. className={clsx('icon icon-tabler icon-tabler-device-desktop', className)}
  441. width="24"
  442. height="24"
  443. viewBox="0 0 24 24"
  444. strokeWidth="1.5"
  445. stroke="currentColor"
  446. fill="none"
  447. strokeLinecap="round"
  448. strokeLinejoin="round"
  449. >
  450. <rect x="3" y="4" width="18" height="12" rx="1" />
  451. <line x1="7" y1="20" x2="17" y2="20" />
  452. <line x1="9" y1="16" x2="9" y2="20" />
  453. <line x1="15" y1="16" x2="15" y2="20" />
  454. </svg>
  455. ),
  456. 'chevron-left': ({ className }) => (
  457. <svg
  458. xmlns="http://www.w3.org/2000/svg"
  459. className={clsx('icon icon-tabler icon-tabler-chevron-left', className)}
  460. width="24"
  461. height="24"
  462. viewBox="0 0 24 24"
  463. strokeWidth="1.5"
  464. stroke="currentColor"
  465. fill="none"
  466. strokeLinecap="round"
  467. strokeLinejoin="round"
  468. >
  469. <polyline points="15 6 9 12 15 18" />
  470. </svg>
  471. ),
  472. 'chevron-right': ({ className }) => (
  473. <svg
  474. xmlns="http://www.w3.org/2000/svg"
  475. className={clsx('icon icon-tabler icon-tabler-chevron-right', className)}
  476. width="24"
  477. height="24"
  478. viewBox="0 0 24 24"
  479. strokeWidth="2"
  480. stroke="currentColor"
  481. fill="none"
  482. strokeLinecap="round"
  483. strokeLinejoin="round"
  484. >
  485. <polyline points="9 6 15 12 9 18" />
  486. </svg>
  487. ),
  488. lego: ({ className }) => (
  489. <svg
  490. xmlns="http://www.w3.org/2000/svg"
  491. className={clsx('icon icon-tabler icon-tabler-lego', className)}
  492. width="24"
  493. height="24"
  494. viewBox="0 0 24 24"
  495. strokeWidth="2"
  496. stroke="currentColor"
  497. fill="none"
  498. strokeLinecap="round"
  499. strokeLinejoin="round"
  500. >
  501. <line x1="9.5" y1="11" x2="9.51" y2="11" />
  502. <line x1="14.5" y1="11" x2="14.51" y2="11" />
  503. <path d="M9.5 15a3.5 3.5 0 0 0 5 0" />
  504. <path d="M7 5h1v-2h8v2h1a3 3 0 0 1 3 3v9a3 3 0 0 1 -3 3v1h-10v-1a3 3 0 0 1 -3 -3v-9a3 3 0 0 1 3 -3" />
  505. </svg>
  506. ),
  507. 'chevron-up': ({ className }) => (
  508. <svg
  509. xmlns="http://www.w3.org/2000/svg"
  510. className={clsx('icon icon-tabler icon-tabler-chevron-up', className)}
  511. width="24"
  512. height="24"
  513. viewBox="0 0 24 24"
  514. strokeWidth="2"
  515. stroke="currentColor"
  516. fill="none"
  517. strokeLinecap="round"
  518. strokeLinejoin="round"
  519. >
  520. <polyline points="6 15 12 9 18 15" />
  521. </svg>
  522. ),
  523. devices: ({ className }) => (
  524. <svg
  525. xmlns="http://www.w3.org/2000/svg"
  526. className={clsx('icon icon-tabler icon-tabler-devices', className)}
  527. width="24"
  528. height="24"
  529. viewBox="0 0 24 24"
  530. strokeWidth="2"
  531. stroke="currentColor"
  532. fill="none"
  533. strokeLinecap="round"
  534. strokeLinejoin="round"
  535. >
  536. <rect x="13" y="8" width="8" height="12" rx="1" />
  537. <path d="M18 8v-3a1 1 0 0 0 -1 -1h-13a1 1 0 0 0 -1 1v12a1 1 0 0 0 1 1h9" />
  538. <line x1="16" y1="9" x2="18" y2="9" />
  539. </svg>
  540. ),
  541. mailbox: ({ className }) => (
  542. <svg
  543. xmlns="http://www.w3.org/2000/svg"
  544. className={clsx('icon icon-tabler icon-tabler-mailbox', className)}
  545. width="24"
  546. height="24"
  547. viewBox="0 0 24 24"
  548. strokeWidth="2"
  549. stroke="currentColor"
  550. fill="none"
  551. strokeLinecap="round"
  552. strokeLinejoin="round"
  553. >
  554. <path d="M10 21v-6.5a3.5 3.5 0 0 0 -7 0v6.5h18v-6a4 4 0 0 0 -4 -4h-10.5" />
  555. <path d="M12 11v-8h4l2 2l-2 2h-4" />
  556. <path d="M6 15h1" />
  557. </svg>
  558. ),
  559. palette: ({ className }) => (
  560. <svg
  561. xmlns="http://www.w3.org/2000/svg"
  562. className={clsx('icon icon-tabler icon-tabler-palette', className)}
  563. width="24"
  564. height="24"
  565. viewBox="0 0 24 24"
  566. strokeWidth="2"
  567. stroke="currentColor"
  568. fill="none"
  569. strokeLinecap="round"
  570. strokeLinejoin="round"
  571. >
  572. <path d="M12 21a9 9 0 1 1 0 -18a9 8 0 0 1 9 8a4.5 4 0 0 1 -4.5 4h-2.5a2 2 0 0 0 -1 3.75a1.3 1.3 0 0 1 -1 2.25" />
  573. <circle cx="7.5" cy="10.5" r=".5" fill="currentColor" />
  574. <circle cx="12" cy="7.5" r=".5" fill="currentColor" />
  575. <circle cx="16.5" cy="10.5" r=".5" fill="currentColor" />
  576. </svg>
  577. ),
  578. message: ({ className }) => (
  579. <svg
  580. xmlns="http://www.w3.org/2000/svg"
  581. className={clsx('icon icon-tabler icon-tabler-message', className)}
  582. width="24"
  583. height="24"
  584. viewBox="0 0 24 24"
  585. strokeWidth="2"
  586. stroke="currentColor"
  587. fill="none"
  588. strokeLinecap="round"
  589. strokeLinejoin="round"
  590. >
  591. <path d="M4 21v-13a3 3 0 0 1 3 -3h10a3 3 0 0 1 3 3v6a3 3 0 0 1 -3 3h-9l-4 4" />
  592. <line x1="8" y1="9" x2="16" y2="9" />
  593. <line x1="8" y1="13" x2="14" y2="13" />
  594. </svg>
  595. ),
  596. settings: ({ className }) => (
  597. <svg
  598. xmlns="http://www.w3.org/2000/svg"
  599. className={clsx('icon icon-tabler icon-tabler-settings', className)}
  600. width="24"
  601. height="24"
  602. viewBox="0 0 24 24"
  603. strokeWidth="2"
  604. stroke="currentColor"
  605. fill="none"
  606. strokeLinecap="round"
  607. strokeLinejoin="round"
  608. >
  609. <path d="M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z" />
  610. <circle cx="12" cy="12" r="3" />
  611. </svg>
  612. ),
  613. adjustments: ({ className }) => (
  614. <svg
  615. xmlns="http://www.w3.org/2000/svg"
  616. className={clsx('icon icon-tabler icon-tabler-adjustments', className)}
  617. width="24"
  618. height="24"
  619. viewBox="0 0 24 24"
  620. strokeWidth="2"
  621. stroke="currentColor"
  622. fill="none"
  623. strokeLinecap="round"
  624. strokeLinejoin="round"
  625. >
  626. <circle cx="6" cy="10" r="2" />
  627. <line x1="6" y1="4" x2="6" y2="8" />
  628. <line x1="6" y1="12" x2="6" y2="20" />
  629. <circle cx="12" cy="16" r="2" />
  630. <line x1="12" y1="4" x2="12" y2="14" />
  631. <line x1="12" y1="18" x2="12" y2="20" />
  632. <circle cx="18" cy="7" r="2" />
  633. <line x1="18" y1="4" x2="18" y2="5" />
  634. <line x1="18" y1="9" x2="18" y2="20" />
  635. </svg>
  636. ),
  637. clipboard: ({ className }) => (
  638. <svg
  639. xmlns="http://www.w3.org/2000/svg"
  640. className={clsx('icon icon-tabler icon-tabler-clipboard-copy', className)}
  641. width="24"
  642. height="24"
  643. viewBox="0 0 24 24"
  644. strokeWidth="2"
  645. stroke="currentColor"
  646. fill="none"
  647. strokeLinecap="round"
  648. strokeLinejoin="round"
  649. >
  650. <path stroke="none" d="M0 0h24v24H0z" fill="none" />
  651. <path d="M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h3m9 -9v-5a2 2 0 0 0 -2 -2h-2" />
  652. <path d="M13 17v-1a1 1 0 0 1 1 -1h1m3 0h1a1 1 0 0 1 1 1v1m0 3v1a1 1 0 0 1 -1 1h-1m-3 0h-1a1 1 0 0 1 -1 -1v-1" />
  653. <rect x="9" y="3" width="6" height="4" rx="2" />
  654. </svg>
  655. ),
  656. home: ({ className }) => (
  657. <svg
  658. xmlns="http://www.w3.org/2000/svg"
  659. className={clsx('icon icon-tabler icon-tabler-home', className)}
  660. width="24"
  661. height="24"
  662. viewBox="0 0 24 24"
  663. strokeWidth="2"
  664. stroke="currentColor"
  665. fill="none"
  666. strokeLinecap="round"
  667. strokeLinejoin="round"
  668. >
  669. <polyline points="5 12 3 12 12 3 21 12 19 12" />
  670. <path d="M5 12v7a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-7" />
  671. <path d="M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v6" />
  672. </svg>
  673. ),
  674. box: ({ className }) => (
  675. <svg
  676. xmlns="http://www.w3.org/2000/svg"
  677. className={clsx('icon icon-tabler icon-tabler-box', className)}
  678. width="24"
  679. height="24"
  680. viewBox="0 0 24 24"
  681. strokeWidth="2"
  682. stroke="currentColor"
  683. fill="none"
  684. strokeLinecap="round"
  685. strokeLinejoin="round"
  686. >
  687. <polyline points="12 3 20 7.5 20 16.5 12 21 4 16.5 4 7.5 12 3" />
  688. <line x1="12" y1="12" x2="20" y2="7.5" />
  689. <line x1="12" y1="12" x2="12" y2="21" />
  690. <line x1="12" y1="12" x2="4" y2="7.5" />
  691. </svg>
  692. ),
  693. lifebuoy: ({ className }) => (
  694. <svg
  695. xmlns="http://www.w3.org/2000/svg"
  696. className={clsx('icon icon-tabler icon-tabler-lifebuoy', className)}
  697. width="24"
  698. height="24"
  699. viewBox="0 0 24 24"
  700. strokeWidth="2"
  701. stroke="currentColor"
  702. fill="none"
  703. strokeLinecap="round"
  704. strokeLinejoin="round"
  705. >
  706. <circle cx="12" cy="12" r="4" />
  707. <circle cx="12" cy="12" r="9" />
  708. <line x1="15" y1="15" x2="18.35" y2="18.35" />
  709. <line x1="9" y1="15" x2="5.65" y2="18.35" />
  710. <line x1="5.65" y1="5.65" x2="9" y2="9" />
  711. <line x1="18.35" y1="5.65" x2="15" y2="9" />
  712. </svg>
  713. ),
  714. code: ({ className }) => (
  715. <svg
  716. xmlns="http://www.w3.org/2000/svg"
  717. className={clsx('icon icon-tabler icon-tabler-code', className)}
  718. width="24"
  719. height="24"
  720. viewBox="0 0 24 24"
  721. strokeWidth="2"
  722. stroke="currentColor"
  723. fill="none"
  724. strokeLinecap="round"
  725. strokeLinejoin="round"
  726. >
  727. <polyline points="7 8 3 12 7 16" />
  728. <polyline points="17 8 21 12 17 16" />
  729. <line x1="14" y1="4" x2="10" y2="20" />
  730. </svg>
  731. ),
  732. versions: ({ className }) => (
  733. <svg
  734. xmlns="http://www.w3.org/2000/svg"
  735. className={clsx('icon icon-tabler icon-tabler-versions', className)}
  736. width="24"
  737. height="24"
  738. viewBox="0 0 24 24"
  739. strokeWidth="2"
  740. stroke="currentColor"
  741. fill="none"
  742. strokeLinecap="round"
  743. strokeLinejoin="round"
  744. >
  745. <rect x="10" y="5" width="10" height="14" rx="2" />
  746. <line x1="7" y1="7" x2="7" y2="17" />
  747. <line x1="4" y1="8" x2="4" y2="16" />
  748. </svg>
  749. ),
  750. maximize: ({ className }) => (
  751. <svg
  752. xmlns="http://www.w3.org/2000/svg"
  753. className={clsx('icon icon-tabler icon-tabler-maximize', className)}
  754. width="24"
  755. height="24"
  756. viewBox="0 0 24 24"
  757. strokeWidth="2"
  758. stroke="currentColor"
  759. fill="none"
  760. strokeLinecap="round"
  761. strokeLinejoin="round"
  762. >
  763. <path d="M4 8v-2a2 2 0 0 1 2 -2h2" />
  764. <path d="M4 16v2a2 2 0 0 0 2 2h2" />
  765. <path d="M16 4h2a2 2 0 0 1 2 2v2" />
  766. <path d="M16 20h2a2 2 0 0 0 2 -2v-2" />
  767. </svg>
  768. ),
  769. minimize: ({ className }) => (
  770. <svg
  771. xmlns="http://www.w3.org/2000/svg"
  772. className={clsx('icon icon-tabler icon-tabler-minimize', className)}
  773. width="24"
  774. height="24"
  775. viewBox="0 0 24 24"
  776. strokeWidth="2"
  777. stroke="currentColor"
  778. fill="none"
  779. strokeLinecap="round"
  780. strokeLinejoin="round"
  781. >
  782. <path d="M15 19v-2a2 2 0 0 1 2 -2h2" />
  783. <path d="M15 5v2a2 2 0 0 0 2 2h2" />
  784. <path d="M5 15h2a2 2 0 0 1 2 2v2" />
  785. <path d="M5 9h2a2 2 0 0 0 2 -2v-2" />
  786. </svg>
  787. ),
  788. 'external-link': ({ className }) => (
  789. <svg
  790. xmlns="http://www.w3.org/2000/svg"
  791. className={clsx('icon icon-tabler icon-tabler-external-link', className)}
  792. width="24"
  793. height="24"
  794. viewBox="0 0 24 24"
  795. strokeWidth="2"
  796. stroke="currentColor"
  797. fill="none"
  798. strokeLinecap="round"
  799. strokeLinejoin="round"
  800. >
  801. <path d="M11 7h-5a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-5" />
  802. <line x1="10" y1="14" x2="20" y2="4" />
  803. <polyline points="15 4 20 4 20 9" />
  804. </svg>
  805. ),
  806. star: ({ className }) => (
  807. <svg
  808. xmlns="http://www.w3.org/2000/svg"
  809. className={clsx('icon icon-tabler icon-tabler-star', className)}
  810. width="24"
  811. height="24"
  812. viewBox="0 0 24 24"
  813. strokeWidth="2"
  814. stroke="currentColor"
  815. fill="none"
  816. strokeLinecap="round"
  817. strokeLinejoin="round"
  818. >
  819. <path d="M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z" />
  820. </svg>
  821. ),
  822. 'target-arrow': ({ className }) => (
  823. <svg
  824. xmlns="http://www.w3.org/2000/svg"
  825. className={clsx('icon icon-tabler icon-tabler-target-arrow', className)}
  826. width="24"
  827. height="24"
  828. viewBox="0 0 24 24"
  829. strokeWidth="2"
  830. stroke="currentColor"
  831. fill="none"
  832. strokeLinecap="round"
  833. strokeLinejoin="round"
  834. >
  835. <circle cx="12" cy="12" r="1" />
  836. <path d="M12 7a5 5 0 1 0 5 5" />
  837. <path d="M13.004 3.055a9 9 0 1 0 7.941 7.945" />
  838. <path d="M15 6v3h3l3 -3h-3v-3z" />
  839. <path d="M15 9l-3 3" />
  840. </svg>
  841. ),
  842. brush: ({ className }) => (
  843. <svg
  844. xmlns="http://www.w3.org/2000/svg"
  845. className={clsx('icon icon-tabler icon-tabler-brush', className)}
  846. width="24"
  847. height="24"
  848. viewBox="0 0 24 24"
  849. strokeWidth="2"
  850. stroke="currentColor"
  851. fill="none"
  852. strokeLinecap="round"
  853. strokeLinejoin="round"
  854. >
  855. <path d="M3 21v-4a4 4 0 1 1 4 4h-4" />
  856. <path d="M21 3a16 16 0 0 0 -12.8 10.2" />
  857. <path d="M21 3a16 16 0 0 1 -10.2 12.8" />
  858. <path d="M10.6 9a9 9 0 0 1 4.4 4.4" />
  859. </svg>
  860. ),
  861. 'layout-dashboard': ({ className }) => (
  862. <svg
  863. xmlns="http://www.w3.org/2000/svg"
  864. className={clsx('icon icon-tabler icon-tabler-layout-dashboard', className)}
  865. width="24"
  866. height="24"
  867. viewBox="0 0 24 24"
  868. strokeWidth="2"
  869. stroke="currentColor"
  870. fill="none"
  871. strokeLinecap="round"
  872. strokeLinejoin="round"
  873. >
  874. <path d="M4 4h6v8h-6z" />
  875. <path d="M4 16h6v4h-6z" />
  876. <path d="M14 12h6v8h-6z" />
  877. <path d="M14 4h6v4h-6z" />
  878. </svg>
  879. ),
  880. 'logout': ({ className }) => (
  881. <svg
  882. xmlns="http://www.w3.org/2000/svg"
  883. className={clsx('icon icon-tabler icon-tabler-logout', className)}
  884. width={24}
  885. height={24}
  886. viewBox="0 0 24 24"
  887. strokeWidth="2"
  888. stroke="currentColor"
  889. fill="none"
  890. strokeLinecap="round"
  891. strokeLinejoin="round"
  892. >
  893. <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
  894. <path d="M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2"></path>
  895. <path d="M9 12h12l-3 -3"></path>
  896. <path d="M18 15l3 -3"></path>
  897. </svg>
  898. ),
  899. 'rocket': ({ className }) => (
  900. <svg
  901. xmlns="http://www.w3.org/2000/svg"
  902. className={clsx('icon icon-tabler icon-tabler-rocket', className)}
  903. width={24}
  904. height={24}
  905. viewBox="0 0 24 24"
  906. strokeWidth="2"
  907. stroke="currentColor"
  908. fill="none"
  909. strokeLinecap="round"
  910. strokeLinejoin="round"
  911. >
  912. <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
  913. <path d="M4 13a8 8 0 0 1 7 7a6 6 0 0 0 3 -5a9 9 0 0 0 6 -8a3 3 0 0 0 -3 -3a9 9 0 0 0 -8 6a6 6 0 0 0 -5 3"></path>
  914. <path d="M7 14a6 6 0 0 0 -3 6a6 6 0 0 0 6 -3"></path>
  915. <path d="M15 9m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path>
  916. </svg>
  917. ),
  918. 'sun-moon': ({ className }) => (
  919. <svg
  920. xmlns="http://www.w3.org/2000/svg"
  921. className={clsx('icon icon-tabler icon-tabler-sun-moon', className)}
  922. width="24"
  923. height="24"
  924. viewBox="0 0 24 24"
  925. strokeWidth="2"
  926. stroke="currentColor"
  927. fill="none"
  928. strokeLinecap="round"
  929. strokeLinejoin="round"
  930. >
  931. <path d="M9.173 14.83a4 4 0 1 1 5.657 -5.657" />
  932. <path d="M11.294 12.707l.174 .247a7.5 7.5 0 0 0 8.845 2.492a9 9 0 0 1 -14.671 2.914" />
  933. <path d="M3 12h1" />
  934. <path d="M12 3v1" />
  935. <path d="M5.6 5.6l.7 .7" />
  936. <path d="M3 21l18 -18" />
  937. </svg>
  938. ),
  939. 'circle-x-filled': ({ className }) => (
  940. <svg
  941. xmlns="http://www.w3.org/2000/svg"
  942. className={clsx('icon icon-tabler icon-tabler-circle-x-filled', className)}
  943. width="24"
  944. height="24"
  945. viewBox="0 0 24 24"
  946. strokeWidth="2"
  947. stroke="currentColor"
  948. fill="none"
  949. strokeLinecap="round"
  950. strokeLinejoin="round"
  951. >
  952. <path
  953. d="M17 3.34a10 10 0 1 1 -14.995 8.984l-.005 -.324l.005 -.324a10 10 0 0 1 14.995 -8.336zm-6.489 5.8a1 1 0 0 0 -1.218 1.567l1.292 1.293l-1.292 1.293l-.083 .094a1 1 0 0 0 1.497 1.32l1.293 -1.292l1.293 1.292l.094 .083a1 1 0 0 0 1.32 -1.497l-1.292 -1.293l1.292 -1.293l.083 -.094a1 1 0 0 0 -1.497 -1.32l-1.293 1.292l-1.293 -1.292l-.094 -.083z"
  954. strokeWidth="0"
  955. fill="currentColor"
  956. ></path>
  957. </svg>
  958. ),
  959. 'circle-check-filled': ({ className }) => (
  960. <svg
  961. xmlns="http://www.w3.org/2000/svg"
  962. className={clsx('icon icon-tabler icon-tabler-circle-check-filled', className)}
  963. width="24"
  964. height="24"
  965. viewBox="0 0 24 24"
  966. strokeWidth="2"
  967. stroke="currentColor"
  968. fill="none"
  969. strokeLinecap="round"
  970. strokeLinejoin="round"
  971. >
  972. <path
  973. d="M17 3.34a10 10 0 1 1 -14.995 8.984l-.005 -.324l.005 -.324a10 10 0 0 1 14.995 -8.336zm-1.293 5.953a1 1 0 0 0 -1.32 -.083l-.094 .083l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.403 1.403l.083 .094l2 2l.094 .083a1 1 0 0 0 1.226 0l.094 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z"
  974. strokeWidth="0"
  975. fill="currentColor"
  976. ></path>
  977. </svg>
  978. ),
  979. 'alert-circle-filled': ({ className }) => (
  980. <svg
  981. xmlns="http://www.w3.org/2000/svg"
  982. className={clsx('icon icon-tabler icon-tabler-alert-circle-filled', className)}
  983. width="24"
  984. height="24"
  985. viewBox="0 0 24 24"
  986. strokeWidth="2"
  987. stroke="currentColor"
  988. fill="none"
  989. strokeLinecap="round"
  990. strokeLinejoin="round"
  991. >
  992. <path
  993. d="M12 2c5.523 0 10 4.477 10 10a10 10 0 0 1 -19.995 .324l-.005 -.324l.004 -.28c.148 -5.393 4.566 -9.72 9.996 -9.72zm.01 13l-.127 .007a1 1 0 0 0 0 1.986l.117 .007l.127 -.007a1 1 0 0 0 0 -1.986l-.117 -.007zm-.01 -8a1 1 0 0 0 -.993 .883l-.007 .117v4l.007 .117a1 1 0 0 0 1.986 0l.007 -.117v-4l-.007 -.117a1 1 0 0 0 -.993 -.883z"
  994. stroke-width="0"
  995. fill="currentColor"
  996. ></path>
  997. </svg>
  998. ),
  999. sparkles: ({ className }) => (
  1000. <svg
  1001. xmlns="http://www.w3.org/2000/svg"
  1002. className={clsx('icon icon-tabler icon-tabler-sparkles', className)}
  1003. width="24"
  1004. height="24"
  1005. viewBox="0 0 24 24"
  1006. strokeWidth="2"
  1007. stroke="currentColor"
  1008. fill="none"
  1009. strokeLinecap="round"
  1010. strokeLinejoin="round"
  1011. >
  1012. <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
  1013. <path d="M16 18a2 2 0 0 1 2 2a2 2 0 0 1 2 -2a2 2 0 0 1 -2 -2a2 2 0 0 1 -2 2zm0 -12a2 2 0 0 1 2 2a2 2 0 0 1 2 -2a2 2 0 0 1 -2 -2a2 2 0 0 1 -2 2zm-7 12a6 6 0 0 1 6 -6a6 6 0 0 1 -6 -6a6 6 0 0 1 -6 6a6 6 0 0 1 6 6z"></path>
  1014. </svg>
  1015. ),
  1016. script: ({ className }) => (
  1017. <svg
  1018. xmlns="http://www.w3.org/2000/svg"
  1019. className={clsx('icon icon-tabler icon-tabler-script', className)}
  1020. width="24"
  1021. height="24"
  1022. viewBox="0 0 24 24"
  1023. strokeWidth="2"
  1024. stroke="currentColor"
  1025. fill="none"
  1026. strokeLinecap="round"
  1027. strokeLinejoin="round"
  1028. >
  1029. <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
  1030. <path d="M17 20h-11a3 3 0 0 1 0 -6h11a3 3 0 0 0 0 6h1a3 3 0 0 0 3 -3v-11a2 2 0 0 0 -2 -2h-10a2 2 0 0 0 -2 2v8"></path>
  1031. </svg>
  1032. ),
  1033. link: ({ className }) => (
  1034. <svg
  1035. xmlns="http://www.w3.org/2000/svg"
  1036. className={clsx('icon icon-tabler icon-tabler-link', className)}
  1037. width="24"
  1038. height="24"
  1039. viewBox="0 0 24 24"
  1040. strokeWidth="2"
  1041. stroke="currentColor"
  1042. fill="none"
  1043. strokeLinecap="round"
  1044. strokeLinejoin="round"
  1045. >
  1046. <path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path>
  1047. <path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path>
  1048. </svg>
  1049. ),
  1050. 'brand-linkedin': ({ className }) => (
  1051. <svg
  1052. xmlns="http://www.w3.org/2000/svg"
  1053. className={clsx('icon icon-tabler icon-tabler-brand-linkedin', className)}
  1054. width="24"
  1055. height="24"
  1056. viewBox="0 0 24 24"
  1057. strokeWidth="2"
  1058. stroke="currentColor"
  1059. fill="none"
  1060. strokeLinecap="round"
  1061. strokeLinejoin="round"
  1062. >
  1063. <path d="M4 4m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z"></path>
  1064. <path d="M8 11l0 5"></path>
  1065. <path d="M8 8l0 .01"></path>
  1066. <path d="M12 16l0 -5"></path>
  1067. <path d="M16 16v-3a2 2 0 0 0 -4 0"></path>
  1068. </svg>
  1069. ),
  1070. };
  1071. export default function Icon({
  1072. name,
  1073. color,
  1074. filled = false,
  1075. className = null,
  1076. }: {
  1077. name: string
  1078. color?: string
  1079. filled?: boolean
  1080. className?: string | null
  1081. }) {
  1082. if (icons[name]) {
  1083. const Component = icons[name];
  1084. return (
  1085. <Component
  1086. className={clsx('icon', className, {
  1087. [`text-${color}`]: color,
  1088. 'icon-filled': filled,
  1089. })}
  1090. />
  1091. );
  1092. } else {
  1093. throw Error(`Icon ${name} doesn't exists`);
  1094. }
  1095. }