icon.py 31 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648
  1. """Lucide Icon component."""
  2. from reflex.components.component import Component
  3. from reflex.utils import format
  4. from reflex.vars.base import Var
  5. class LucideIconComponent(Component):
  6. """Lucide Icon Component."""
  7. library = "lucide-react@0.469.0"
  8. class Icon(LucideIconComponent):
  9. """An Icon component."""
  10. tag = "None"
  11. # The size of the icon in pixels.
  12. size: Var[int]
  13. @classmethod
  14. def create(cls, *children, **props) -> Component:
  15. """Initialize the Icon component.
  16. Run some additional checks on Icon component.
  17. Args:
  18. *children: The positional arguments
  19. **props: The keyword arguments
  20. Raises:
  21. AttributeError: The errors tied to bad usage of the Icon component.
  22. ValueError: If the icon tag is invalid.
  23. Returns:
  24. The created component.
  25. """
  26. if children:
  27. if len(children) == 1 and isinstance(children[0], str):
  28. props["tag"] = children[0]
  29. children = []
  30. else:
  31. raise AttributeError(
  32. f"Passing multiple children to Icon component is not allowed: remove positional arguments {children[1:]} to fix"
  33. )
  34. if "tag" not in props:
  35. raise AttributeError("Missing 'tag' keyword-argument for Icon")
  36. if (
  37. not isinstance(props["tag"], str)
  38. or format.to_snake_case(props["tag"]) not in LUCIDE_ICON_LIST
  39. ):
  40. raise ValueError(
  41. f"Invalid icon tag: {props['tag']}. Please use one of the following: {', '.join(LUCIDE_ICON_LIST[0:25])}, ..."
  42. "\nSee full list at https://lucide.dev/icons."
  43. )
  44. if props["tag"] in LUCIDE_ICON_MAPPING_OVERRIDE:
  45. props["tag"] = LUCIDE_ICON_MAPPING_OVERRIDE[props["tag"]]
  46. else:
  47. props["tag"] = (
  48. format.to_title_case(format.to_snake_case(props["tag"])) + "Icon"
  49. )
  50. props["alias"] = f"Lucide{props['tag']}"
  51. props.setdefault("color", "var(--current-color)")
  52. return super().create(*children, **props)
  53. LUCIDE_ICON_LIST = [
  54. "a_arrow_down",
  55. "a_arrow_up",
  56. "a_large_small",
  57. "accessibility",
  58. "activity",
  59. "air_vent",
  60. "airplay",
  61. "alarm_clock",
  62. "alarm_clock_check",
  63. "alarm_clock_minus",
  64. "alarm_clock_off",
  65. "alarm_clock_plus",
  66. "alarm_smoke",
  67. "album",
  68. "align_center",
  69. "align_center_horizontal",
  70. "align_center_vertical",
  71. "align_end_horizontal",
  72. "align_end_vertical",
  73. "align_horizontal_distribute_center",
  74. "align_horizontal_distribute_end",
  75. "align_horizontal_distribute_start",
  76. "align_horizontal_justify_center",
  77. "align_horizontal_justify_end",
  78. "align_horizontal_justify_start",
  79. "align_horizontal_space_around",
  80. "align_horizontal_space_between",
  81. "align_justify",
  82. "align_left",
  83. "align_right",
  84. "align_start_horizontal",
  85. "align_start_vertical",
  86. "align_vertical_distribute_center",
  87. "align_vertical_distribute_end",
  88. "align_vertical_distribute_start",
  89. "align_vertical_justify_center",
  90. "align_vertical_justify_end",
  91. "align_vertical_justify_start",
  92. "align_vertical_space_around",
  93. "align_vertical_space_between",
  94. "ambulance",
  95. "ampersand",
  96. "ampersands",
  97. "amphora",
  98. "anchor",
  99. "angry",
  100. "annoyed",
  101. "antenna",
  102. "anvil",
  103. "aperture",
  104. "app_window",
  105. "app_window_mac",
  106. "apple",
  107. "archive",
  108. "archive_restore",
  109. "archive_x",
  110. "area_chart",
  111. "armchair",
  112. "arrow_big_down",
  113. "arrow_big_down_dash",
  114. "arrow_big_left",
  115. "arrow_big_left_dash",
  116. "arrow_big_right",
  117. "arrow_big_right_dash",
  118. "arrow_big_up",
  119. "arrow_big_up_dash",
  120. "arrow_down",
  121. "arrow_down_0_1",
  122. "arrow_down_1_0",
  123. "arrow_down_a_z",
  124. "arrow_down_from_line",
  125. "arrow_down_left",
  126. "arrow_down_narrow_wide",
  127. "arrow_down_right",
  128. "arrow_down_to_dot",
  129. "arrow_down_to_line",
  130. "arrow_down_up",
  131. "arrow_down_wide_narrow",
  132. "arrow_down_z_a",
  133. "arrow_left",
  134. "arrow_left_from_line",
  135. "arrow_left_right",
  136. "arrow_left_to_line",
  137. "arrow_right",
  138. "arrow_right_from_line",
  139. "arrow_right_left",
  140. "arrow_right_to_line",
  141. "arrow_up",
  142. "arrow_up_0_1",
  143. "arrow_up_1_0",
  144. "arrow_up_a_z",
  145. "arrow_up_down",
  146. "arrow_up_from_dot",
  147. "arrow_up_from_line",
  148. "arrow_up_left",
  149. "arrow_up_narrow_wide",
  150. "arrow_up_right",
  151. "arrow_up_to_line",
  152. "arrow_up_wide_narrow",
  153. "arrow_up_z_a",
  154. "arrows_up_from_line",
  155. "asterisk",
  156. "at_sign",
  157. "atom",
  158. "audio_lines",
  159. "audio_waveform",
  160. "award",
  161. "axe",
  162. "axis_3d",
  163. "baby",
  164. "backpack",
  165. "badge",
  166. "badge_alert",
  167. "badge_cent",
  168. "badge_check",
  169. "badge_dollar_sign",
  170. "badge_euro",
  171. "badge_help",
  172. "badge_indian_rupee",
  173. "badge_info",
  174. "badge_japanese_yen",
  175. "badge_minus",
  176. "badge_percent",
  177. "badge_plus",
  178. "badge_pound_sterling",
  179. "badge_russian_ruble",
  180. "badge_swiss_franc",
  181. "badge_x",
  182. "baggage_claim",
  183. "ban",
  184. "banana",
  185. "bandage",
  186. "banknote",
  187. "bar_chart",
  188. "bar_chart_2",
  189. "bar_chart_3",
  190. "bar_chart_4",
  191. "bar_chart_big",
  192. "bar_chart_horizontal",
  193. "bar_chart_horizontal_big",
  194. "barcode",
  195. "baseline",
  196. "bath",
  197. "battery",
  198. "battery_charging",
  199. "battery_full",
  200. "battery_low",
  201. "battery_medium",
  202. "battery_warning",
  203. "beaker",
  204. "bean",
  205. "bean_off",
  206. "bed",
  207. "bed_double",
  208. "bed_single",
  209. "beef",
  210. "beer",
  211. "beer_off",
  212. "bell",
  213. "bell_dot",
  214. "bell_electric",
  215. "bell_minus",
  216. "bell_off",
  217. "bell_plus",
  218. "bell_ring",
  219. "between_horizontal_end",
  220. "between_horizontal_start",
  221. "between_vertical_end",
  222. "between_vertical_start",
  223. "biceps_flexed",
  224. "bike",
  225. "binary",
  226. "binoculars",
  227. "biohazard",
  228. "bird",
  229. "bitcoin",
  230. "blend",
  231. "blinds",
  232. "blocks",
  233. "bluetooth",
  234. "bluetooth_connected",
  235. "bluetooth_off",
  236. "bluetooth_searching",
  237. "bold",
  238. "bolt",
  239. "bomb",
  240. "bone",
  241. "book",
  242. "book_a",
  243. "book_audio",
  244. "book_check",
  245. "book_copy",
  246. "book_dashed",
  247. "book_down",
  248. "book_headphones",
  249. "book_heart",
  250. "book_image",
  251. "book_key",
  252. "book_lock",
  253. "book_marked",
  254. "book_minus",
  255. "book_open",
  256. "book_open_check",
  257. "book_open_text",
  258. "book_plus",
  259. "book_text",
  260. "book_type",
  261. "book_up",
  262. "book_up_2",
  263. "book_user",
  264. "book_x",
  265. "bookmark",
  266. "bookmark_check",
  267. "bookmark_minus",
  268. "bookmark_plus",
  269. "bookmark_x",
  270. "boom_box",
  271. "bot",
  272. "bot_message_square",
  273. "bot_off",
  274. "box",
  275. "box_select",
  276. "boxes",
  277. "braces",
  278. "brackets",
  279. "brain",
  280. "brain_circuit",
  281. "brain_cog",
  282. "brick_wall",
  283. "briefcase",
  284. "briefcase_business",
  285. "briefcase_conveyor_belt",
  286. "briefcase_medical",
  287. "bring_to_front",
  288. "brush",
  289. "bug",
  290. "bug_off",
  291. "bug_play",
  292. "building",
  293. "building_2",
  294. "bus",
  295. "bus_front",
  296. "cable",
  297. "cable_car",
  298. "cake",
  299. "cake_slice",
  300. "calculator",
  301. "calendar",
  302. "calendar_1",
  303. "calendar_arrow_down",
  304. "calendar_arrow_up",
  305. "calendar_check",
  306. "calendar_check_2",
  307. "calendar_clock",
  308. "calendar_cog",
  309. "calendar_days",
  310. "calendar_fold",
  311. "calendar_heart",
  312. "calendar_minus",
  313. "calendar_minus_2",
  314. "calendar_off",
  315. "calendar_plus",
  316. "calendar_plus_2",
  317. "calendar_range",
  318. "calendar_search",
  319. "calendar_sync",
  320. "calendar_x",
  321. "calendar_x_2",
  322. "camera",
  323. "camera_off",
  324. "candlestick_chart",
  325. "candy",
  326. "candy_cane",
  327. "candy_off",
  328. "cannabis",
  329. "captions",
  330. "captions_off",
  331. "car",
  332. "car_front",
  333. "car_taxi_front",
  334. "caravan",
  335. "carrot",
  336. "case_lower",
  337. "case_sensitive",
  338. "case_upper",
  339. "cassette_tape",
  340. "cast",
  341. "castle",
  342. "cat",
  343. "cctv",
  344. "chart_area",
  345. "chart_bar",
  346. "chart_bar_big",
  347. "chart_bar_decreasing",
  348. "chart_bar_increasing",
  349. "chart_bar_stacked",
  350. "chart_candlestick",
  351. "chart_column",
  352. "chart_column_big",
  353. "chart_column_decreasing",
  354. "chart_column_increasing",
  355. "chart_column_stacked",
  356. "chart_gantt",
  357. "chart_line",
  358. "chart_network",
  359. "chart_no_axes_column",
  360. "chart_no_axes_column_decreasing",
  361. "chart_no_axes_column_increasing",
  362. "chart_no_axes_combined",
  363. "chart_no_axes_gantt",
  364. "chart_pie",
  365. "chart_scatter",
  366. "chart_spline",
  367. "check",
  368. "check_check",
  369. "chef_hat",
  370. "cherry",
  371. "chevron_down",
  372. "chevron_first",
  373. "chevron_last",
  374. "chevron_left",
  375. "chevron_right",
  376. "chevron_up",
  377. "chevrons_down",
  378. "chevrons_down_up",
  379. "chevrons_left",
  380. "chevrons_left_right",
  381. "chevrons_left_right_ellipsis",
  382. "chevrons_right",
  383. "chevrons_right_left",
  384. "chevrons_up",
  385. "chevrons_up_down",
  386. "chrome",
  387. "church",
  388. "cigarette",
  389. "cigarette_off",
  390. "circle",
  391. "circle_alert",
  392. "circle_arrow_down",
  393. "circle_arrow_left",
  394. "circle_arrow_out_down_left",
  395. "circle_arrow_out_down_right",
  396. "circle_arrow_out_up_left",
  397. "circle_arrow_out_up_right",
  398. "circle_arrow_right",
  399. "circle_arrow_up",
  400. "circle_check",
  401. "circle_check_big",
  402. "circle_chevron_down",
  403. "circle_chevron_left",
  404. "circle_chevron_right",
  405. "circle_chevron_up",
  406. "circle_dashed",
  407. "circle_divide",
  408. "circle_dollar_sign",
  409. "circle_dot",
  410. "circle_dot_dashed",
  411. "circle_ellipsis",
  412. "circle_equal",
  413. "circle_fading_arrow_up",
  414. "circle_fading_plus",
  415. "circle_gauge",
  416. "circle_help",
  417. "circle_minus",
  418. "circle_off",
  419. "circle_parking",
  420. "circle_parking_off",
  421. "circle_pause",
  422. "circle_percent",
  423. "circle_play",
  424. "circle_plus",
  425. "circle_power",
  426. "circle_slash",
  427. "circle_slash_2",
  428. "circle_stop",
  429. "circle_user",
  430. "circle_user_round",
  431. "circle_x",
  432. "circuit_board",
  433. "citrus",
  434. "clapperboard",
  435. "clipboard",
  436. "clipboard_check",
  437. "clipboard_copy",
  438. "clipboard_list",
  439. "clipboard_minus",
  440. "clipboard_paste",
  441. "clipboard_pen",
  442. "clipboard_pen_line",
  443. "clipboard_plus",
  444. "clipboard_type",
  445. "clipboard_x",
  446. "clock",
  447. "clock_1",
  448. "clock_10",
  449. "clock_11",
  450. "clock_12",
  451. "clock_2",
  452. "clock_3",
  453. "clock_4",
  454. "clock_5",
  455. "clock_6",
  456. "clock_7",
  457. "clock_8",
  458. "clock_9",
  459. "clock_alert",
  460. "clock_arrow_down",
  461. "clock_arrow_up",
  462. "cloud",
  463. "cloud_alert",
  464. "cloud_cog",
  465. "cloud_download",
  466. "cloud_drizzle",
  467. "cloud_fog",
  468. "cloud_hail",
  469. "cloud_lightning",
  470. "cloud_moon",
  471. "cloud_moon_rain",
  472. "cloud_off",
  473. "cloud_rain",
  474. "cloud_rain_wind",
  475. "cloud_snow",
  476. "cloud_sun",
  477. "cloud_sun_rain",
  478. "cloud_upload",
  479. "cloudy",
  480. "clover",
  481. "club",
  482. "code",
  483. "code_xml",
  484. "codepen",
  485. "codesandbox",
  486. "coffee",
  487. "cog",
  488. "coins",
  489. "columns_2",
  490. "columns_3",
  491. "columns_4",
  492. "combine",
  493. "command",
  494. "compass",
  495. "component",
  496. "computer",
  497. "concierge_bell",
  498. "cone",
  499. "construction",
  500. "contact",
  501. "contact_round",
  502. "container",
  503. "contrast",
  504. "cookie",
  505. "cooking_pot",
  506. "copy",
  507. "copy_check",
  508. "copy_minus",
  509. "copy_plus",
  510. "copy_slash",
  511. "copy_x",
  512. "copyleft",
  513. "copyright",
  514. "corner_down_left",
  515. "corner_down_right",
  516. "corner_left_down",
  517. "corner_left_up",
  518. "corner_right_down",
  519. "corner_right_up",
  520. "corner_up_left",
  521. "corner_up_right",
  522. "cpu",
  523. "creative_commons",
  524. "credit_card",
  525. "croissant",
  526. "crop",
  527. "cross",
  528. "crosshair",
  529. "crown",
  530. "cuboid",
  531. "cup_soda",
  532. "currency",
  533. "cylinder",
  534. "dam",
  535. "database",
  536. "database_backup",
  537. "database_zap",
  538. "delete",
  539. "dessert",
  540. "diameter",
  541. "diamond",
  542. "diamond_minus",
  543. "diamond_percent",
  544. "diamond_plus",
  545. "dice_1",
  546. "dice_2",
  547. "dice_3",
  548. "dice_4",
  549. "dice_5",
  550. "dice_6",
  551. "dices",
  552. "diff",
  553. "disc",
  554. "disc_2",
  555. "disc_3",
  556. "disc_album",
  557. "divide",
  558. "dna",
  559. "dna_off",
  560. "dock",
  561. "dog",
  562. "dollar_sign",
  563. "donut",
  564. "door_closed",
  565. "door_open",
  566. "dot",
  567. "download",
  568. "drafting_compass",
  569. "drama",
  570. "dribbble",
  571. "drill",
  572. "droplet",
  573. "droplet_off",
  574. "droplets",
  575. "drum",
  576. "drumstick",
  577. "dumbbell",
  578. "ear",
  579. "ear_off",
  580. "earth",
  581. "earth_lock",
  582. "eclipse",
  583. "egg",
  584. "egg_fried",
  585. "egg_off",
  586. "ellipsis",
  587. "ellipsis_vertical",
  588. "equal",
  589. "equal_approximately",
  590. "equal_not",
  591. "eraser",
  592. "ethernet_port",
  593. "euro",
  594. "expand",
  595. "external_link",
  596. "eye",
  597. "eye_closed",
  598. "eye_off",
  599. "facebook",
  600. "factory",
  601. "fan",
  602. "fast_forward",
  603. "feather",
  604. "fence",
  605. "ferris_wheel",
  606. "figma",
  607. "file",
  608. "file_archive",
  609. "file_audio",
  610. "file_audio_2",
  611. "file_axis_3d",
  612. "file_badge",
  613. "file_badge_2",
  614. "file_bar_chart",
  615. "file_bar_chart_2",
  616. "file_box",
  617. "file_chart_column",
  618. "file_chart_column_increasing",
  619. "file_chart_line",
  620. "file_chart_pie",
  621. "file_check",
  622. "file_check_2",
  623. "file_clock",
  624. "file_code",
  625. "file_code_2",
  626. "file_cog",
  627. "file_diff",
  628. "file_digit",
  629. "file_down",
  630. "file_heart",
  631. "file_image",
  632. "file_input",
  633. "file_json",
  634. "file_json_2",
  635. "file_key",
  636. "file_key_2",
  637. "file_line_chart",
  638. "file_lock",
  639. "file_lock_2",
  640. "file_minus",
  641. "file_minus_2",
  642. "file_music",
  643. "file_output",
  644. "file_pen",
  645. "file_pen_line",
  646. "file_pie_chart",
  647. "file_plus",
  648. "file_plus_2",
  649. "file_question",
  650. "file_scan",
  651. "file_search",
  652. "file_search_2",
  653. "file_sliders",
  654. "file_spreadsheet",
  655. "file_stack",
  656. "file_symlink",
  657. "file_terminal",
  658. "file_text",
  659. "file_type",
  660. "file_type_2",
  661. "file_up",
  662. "file_user",
  663. "file_video",
  664. "file_video_2",
  665. "file_volume",
  666. "file_volume_2",
  667. "file_warning",
  668. "file_x",
  669. "file_x_2",
  670. "files",
  671. "film",
  672. "filter",
  673. "filter_x",
  674. "fingerprint",
  675. "fire_extinguisher",
  676. "fish",
  677. "fish_off",
  678. "fish_symbol",
  679. "flag",
  680. "flag_off",
  681. "flag_triangle_left",
  682. "flag_triangle_right",
  683. "flame",
  684. "flame_kindling",
  685. "flashlight",
  686. "flashlight_off",
  687. "flask_conical",
  688. "flask_conical_off",
  689. "flask_round",
  690. "flip_horizontal",
  691. "flip_horizontal_2",
  692. "flip_vertical",
  693. "flip_vertical_2",
  694. "flower",
  695. "flower_2",
  696. "focus",
  697. "fold_horizontal",
  698. "fold_vertical",
  699. "folder",
  700. "folder_archive",
  701. "folder_check",
  702. "folder_clock",
  703. "folder_closed",
  704. "folder_code",
  705. "folder_cog",
  706. "folder_dot",
  707. "folder_down",
  708. "folder_git",
  709. "folder_git_2",
  710. "folder_heart",
  711. "folder_input",
  712. "folder_kanban",
  713. "folder_key",
  714. "folder_lock",
  715. "folder_minus",
  716. "folder_open",
  717. "folder_open_dot",
  718. "folder_output",
  719. "folder_pen",
  720. "folder_plus",
  721. "folder_root",
  722. "folder_search",
  723. "folder_search_2",
  724. "folder_symlink",
  725. "folder_sync",
  726. "folder_tree",
  727. "folder_up",
  728. "folder_x",
  729. "folders",
  730. "footprints",
  731. "forklift",
  732. "forward",
  733. "frame",
  734. "framer",
  735. "frown",
  736. "fuel",
  737. "fullscreen",
  738. "gallery_horizontal",
  739. "gallery_horizontal_end",
  740. "gallery_thumbnails",
  741. "gallery_vertical",
  742. "gallery_vertical_end",
  743. "gamepad",
  744. "gamepad_2",
  745. "gantt_chart",
  746. "gauge",
  747. "gavel",
  748. "gem",
  749. "ghost",
  750. "gift",
  751. "git_branch",
  752. "git_branch_plus",
  753. "git_commit_horizontal",
  754. "git_commit_vertical",
  755. "git_compare",
  756. "git_compare_arrows",
  757. "git_fork",
  758. "git_graph",
  759. "git_merge",
  760. "git_pull_request",
  761. "git_pull_request_arrow",
  762. "git_pull_request_closed",
  763. "git_pull_request_create",
  764. "git_pull_request_create_arrow",
  765. "git_pull_request_draft",
  766. "github",
  767. "gitlab",
  768. "glass_water",
  769. "glasses",
  770. "globe",
  771. "globe_lock",
  772. "goal",
  773. "grab",
  774. "graduation_cap",
  775. "grape",
  776. "grid_2x2",
  777. "grid_2x_2",
  778. "grid_2x_2_check",
  779. "grid_2x_2_plus",
  780. "grid_2x_2_x",
  781. "grid_3x3",
  782. "grid_3x_3",
  783. "grip",
  784. "grip_horizontal",
  785. "grip_vertical",
  786. "group",
  787. "guitar",
  788. "ham",
  789. "hammer",
  790. "hand",
  791. "hand_coins",
  792. "hand_heart",
  793. "hand_helping",
  794. "hand_metal",
  795. "hand_platter",
  796. "handshake",
  797. "hard_drive",
  798. "hard_drive_download",
  799. "hard_drive_upload",
  800. "hard_hat",
  801. "hash",
  802. "haze",
  803. "hdmi_port",
  804. "heading",
  805. "heading_1",
  806. "heading_2",
  807. "heading_3",
  808. "heading_4",
  809. "heading_5",
  810. "heading_6",
  811. "headphone_off",
  812. "headphones",
  813. "headset",
  814. "heart",
  815. "heart_crack",
  816. "heart_handshake",
  817. "heart_off",
  818. "heart_pulse",
  819. "heater",
  820. "hexagon",
  821. "highlighter",
  822. "history",
  823. "home",
  824. "hop",
  825. "hop_off",
  826. "hospital",
  827. "hotel",
  828. "hourglass",
  829. "house",
  830. "house_plug",
  831. "house_plus",
  832. "ice_cream_bowl",
  833. "ice_cream_cone",
  834. "id_card",
  835. "image",
  836. "image_down",
  837. "image_minus",
  838. "image_off",
  839. "image_play",
  840. "image_plus",
  841. "image_up",
  842. "image_upscale",
  843. "images",
  844. "import",
  845. "inbox",
  846. "indent_decrease",
  847. "indent_increase",
  848. "indian_rupee",
  849. "infinity",
  850. "info",
  851. "inspection_panel",
  852. "instagram",
  853. "italic",
  854. "iteration_ccw",
  855. "iteration_cw",
  856. "japanese_yen",
  857. "joystick",
  858. "kanban",
  859. "key",
  860. "key_round",
  861. "key_square",
  862. "keyboard",
  863. "keyboard_music",
  864. "keyboard_off",
  865. "lamp",
  866. "lamp_ceiling",
  867. "lamp_desk",
  868. "lamp_floor",
  869. "lamp_wall_down",
  870. "lamp_wall_up",
  871. "land_plot",
  872. "landmark",
  873. "languages",
  874. "laptop",
  875. "laptop_minimal",
  876. "laptop_minimal_check",
  877. "lasso",
  878. "lasso_select",
  879. "laugh",
  880. "layers",
  881. "layers_2",
  882. "layers_3",
  883. "layout_dashboard",
  884. "layout_grid",
  885. "layout_list",
  886. "layout_panel_left",
  887. "layout_panel_top",
  888. "layout_template",
  889. "leaf",
  890. "leafy_green",
  891. "lectern",
  892. "letter_text",
  893. "library",
  894. "library_big",
  895. "life_buoy",
  896. "ligature",
  897. "lightbulb",
  898. "lightbulb_off",
  899. "line_chart",
  900. "link",
  901. "link_2",
  902. "link_2_off",
  903. "linkedin",
  904. "list",
  905. "list_check",
  906. "list_checks",
  907. "list_collapse",
  908. "list_end",
  909. "list_filter",
  910. "list_filter_plus",
  911. "list_minus",
  912. "list_music",
  913. "list_ordered",
  914. "list_plus",
  915. "list_restart",
  916. "list_start",
  917. "list_todo",
  918. "list_tree",
  919. "list_video",
  920. "list_x",
  921. "loader",
  922. "loader_circle",
  923. "loader_pinwheel",
  924. "locate",
  925. "locate_fixed",
  926. "locate_off",
  927. "lock",
  928. "lock_keyhole",
  929. "lock_keyhole_open",
  930. "lock_open",
  931. "log_in",
  932. "log_out",
  933. "logs",
  934. "lollipop",
  935. "luggage",
  936. "magnet",
  937. "mail",
  938. "mail_check",
  939. "mail_minus",
  940. "mail_open",
  941. "mail_plus",
  942. "mail_question",
  943. "mail_search",
  944. "mail_warning",
  945. "mail_x",
  946. "mailbox",
  947. "mails",
  948. "map",
  949. "map_pin",
  950. "map_pin_check",
  951. "map_pin_check_inside",
  952. "map_pin_house",
  953. "map_pin_minus",
  954. "map_pin_minus_inside",
  955. "map_pin_off",
  956. "map_pin_plus",
  957. "map_pin_plus_inside",
  958. "map_pin_x",
  959. "map_pin_x_inside",
  960. "map_pinned",
  961. "martini",
  962. "maximize",
  963. "maximize_2",
  964. "medal",
  965. "megaphone",
  966. "megaphone_off",
  967. "meh",
  968. "memory_stick",
  969. "menu",
  970. "merge",
  971. "message_circle",
  972. "message_circle_code",
  973. "message_circle_dashed",
  974. "message_circle_heart",
  975. "message_circle_more",
  976. "message_circle_off",
  977. "message_circle_plus",
  978. "message_circle_question",
  979. "message_circle_reply",
  980. "message_circle_warning",
  981. "message_circle_x",
  982. "message_square",
  983. "message_square_code",
  984. "message_square_dashed",
  985. "message_square_diff",
  986. "message_square_dot",
  987. "message_square_heart",
  988. "message_square_lock",
  989. "message_square_more",
  990. "message_square_off",
  991. "message_square_plus",
  992. "message_square_quote",
  993. "message_square_reply",
  994. "message_square_share",
  995. "message_square_text",
  996. "message_square_warning",
  997. "message_square_x",
  998. "messages_square",
  999. "mic",
  1000. "mic_off",
  1001. "mic_vocal",
  1002. "microchip",
  1003. "microscope",
  1004. "microwave",
  1005. "milestone",
  1006. "milk",
  1007. "milk_off",
  1008. "minimize",
  1009. "minimize_2",
  1010. "minus",
  1011. "monitor",
  1012. "monitor_check",
  1013. "monitor_cog",
  1014. "monitor_dot",
  1015. "monitor_down",
  1016. "monitor_off",
  1017. "monitor_pause",
  1018. "monitor_play",
  1019. "monitor_smartphone",
  1020. "monitor_speaker",
  1021. "monitor_stop",
  1022. "monitor_up",
  1023. "monitor_x",
  1024. "moon",
  1025. "moon_star",
  1026. "mountain",
  1027. "mountain_snow",
  1028. "mouse",
  1029. "mouse_off",
  1030. "mouse_pointer",
  1031. "mouse_pointer_2",
  1032. "mouse_pointer_ban",
  1033. "mouse_pointer_click",
  1034. "move",
  1035. "move_3d",
  1036. "move_diagonal",
  1037. "move_diagonal_2",
  1038. "move_down",
  1039. "move_down_left",
  1040. "move_down_right",
  1041. "move_horizontal",
  1042. "move_left",
  1043. "move_right",
  1044. "move_up",
  1045. "move_up_left",
  1046. "move_up_right",
  1047. "move_vertical",
  1048. "music",
  1049. "music_2",
  1050. "music_3",
  1051. "music_4",
  1052. "navigation",
  1053. "navigation_2",
  1054. "navigation_2_off",
  1055. "navigation_off",
  1056. "network",
  1057. "newspaper",
  1058. "nfc",
  1059. "notebook",
  1060. "notebook_pen",
  1061. "notebook_tabs",
  1062. "notebook_text",
  1063. "notepad_text",
  1064. "notepad_text_dashed",
  1065. "nut",
  1066. "nut_off",
  1067. "octagon",
  1068. "octagon_alert",
  1069. "octagon_minus",
  1070. "octagon_pause",
  1071. "octagon_x",
  1072. "omega",
  1073. "option",
  1074. "orbit",
  1075. "origami",
  1076. "package",
  1077. "package_2",
  1078. "package_check",
  1079. "package_minus",
  1080. "package_open",
  1081. "package_plus",
  1082. "package_search",
  1083. "package_x",
  1084. "paint_bucket",
  1085. "paint_roller",
  1086. "paintbrush",
  1087. "paintbrush_2",
  1088. "paintbrush_vertical",
  1089. "palette",
  1090. "panel_bottom",
  1091. "panel_bottom_close",
  1092. "panel_bottom_dashed",
  1093. "panel_bottom_open",
  1094. "panel_left",
  1095. "panel_left_close",
  1096. "panel_left_dashed",
  1097. "panel_left_open",
  1098. "panel_right",
  1099. "panel_right_close",
  1100. "panel_right_dashed",
  1101. "panel_right_open",
  1102. "panel_top",
  1103. "panel_top_close",
  1104. "panel_top_dashed",
  1105. "panel_top_open",
  1106. "panels_left_bottom",
  1107. "panels_right_bottom",
  1108. "panels_top_left",
  1109. "paperclip",
  1110. "parentheses",
  1111. "parking_meter",
  1112. "party_popper",
  1113. "pause",
  1114. "paw_print",
  1115. "pc_case",
  1116. "pen",
  1117. "pen_line",
  1118. "pen_off",
  1119. "pen_tool",
  1120. "pencil",
  1121. "pencil_line",
  1122. "pencil_off",
  1123. "pencil_ruler",
  1124. "pentagon",
  1125. "percent",
  1126. "person_standing",
  1127. "philippine_peso",
  1128. "phone",
  1129. "phone_call",
  1130. "phone_forwarded",
  1131. "phone_incoming",
  1132. "phone_missed",
  1133. "phone_off",
  1134. "phone_outgoing",
  1135. "pi",
  1136. "piano",
  1137. "pickaxe",
  1138. "picture_in_picture",
  1139. "picture_in_picture_2",
  1140. "pie_chart",
  1141. "piggy_bank",
  1142. "pilcrow",
  1143. "pilcrow_left",
  1144. "pilcrow_right",
  1145. "pill",
  1146. "pill_bottle",
  1147. "pin",
  1148. "pin_off",
  1149. "pipette",
  1150. "pizza",
  1151. "plane",
  1152. "plane_landing",
  1153. "plane_takeoff",
  1154. "play",
  1155. "plug",
  1156. "plug_2",
  1157. "plug_zap",
  1158. "plug_zap_2",
  1159. "plus",
  1160. "pocket",
  1161. "pocket_knife",
  1162. "podcast",
  1163. "pointer",
  1164. "pointer_off",
  1165. "popcorn",
  1166. "popsicle",
  1167. "pound_sterling",
  1168. "power",
  1169. "power_off",
  1170. "presentation",
  1171. "printer",
  1172. "printer_check",
  1173. "projector",
  1174. "proportions",
  1175. "puzzle",
  1176. "pyramid",
  1177. "qr_code",
  1178. "quote",
  1179. "rabbit",
  1180. "radar",
  1181. "radiation",
  1182. "radical",
  1183. "radio",
  1184. "radio_receiver",
  1185. "radio_tower",
  1186. "radius",
  1187. "rail_symbol",
  1188. "rainbow",
  1189. "rat",
  1190. "ratio",
  1191. "receipt",
  1192. "receipt_cent",
  1193. "receipt_euro",
  1194. "receipt_indian_rupee",
  1195. "receipt_japanese_yen",
  1196. "receipt_pound_sterling",
  1197. "receipt_russian_ruble",
  1198. "receipt_swiss_franc",
  1199. "receipt_text",
  1200. "rectangle_ellipsis",
  1201. "rectangle_horizontal",
  1202. "rectangle_vertical",
  1203. "recycle",
  1204. "redo",
  1205. "redo_2",
  1206. "redo_dot",
  1207. "refresh_ccw",
  1208. "refresh_ccw_dot",
  1209. "refresh_cw",
  1210. "refresh_cw_off",
  1211. "refrigerator",
  1212. "regex",
  1213. "remove_formatting",
  1214. "repeat",
  1215. "repeat_1",
  1216. "repeat_2",
  1217. "replace",
  1218. "replace_all",
  1219. "reply",
  1220. "reply_all",
  1221. "rewind",
  1222. "ribbon",
  1223. "rocket",
  1224. "rocking_chair",
  1225. "roller_coaster",
  1226. "rotate_3d",
  1227. "rotate_ccw",
  1228. "rotate_ccw_square",
  1229. "rotate_cw",
  1230. "rotate_cw_square",
  1231. "route",
  1232. "route_off",
  1233. "router",
  1234. "rows_2",
  1235. "rows_3",
  1236. "rows_4",
  1237. "rss",
  1238. "ruler",
  1239. "russian_ruble",
  1240. "sailboat",
  1241. "salad",
  1242. "sandwich",
  1243. "satellite",
  1244. "satellite_dish",
  1245. "save",
  1246. "save_all",
  1247. "save_off",
  1248. "scale",
  1249. "scale_3d",
  1250. "scaling",
  1251. "scan",
  1252. "scan_barcode",
  1253. "scan_eye",
  1254. "scan_face",
  1255. "scan_heart",
  1256. "scan_line",
  1257. "scan_qr_code",
  1258. "scan_search",
  1259. "scan_text",
  1260. "scatter_chart",
  1261. "school",
  1262. "scissors",
  1263. "scissors_line_dashed",
  1264. "screen_share",
  1265. "screen_share_off",
  1266. "scroll",
  1267. "scroll_text",
  1268. "search",
  1269. "search_check",
  1270. "search_code",
  1271. "search_slash",
  1272. "search_x",
  1273. "section",
  1274. "send",
  1275. "send_horizontal",
  1276. "send_to_back",
  1277. "separator_horizontal",
  1278. "separator_vertical",
  1279. "server",
  1280. "server_cog",
  1281. "server_crash",
  1282. "server_off",
  1283. "settings",
  1284. "settings_2",
  1285. "shapes",
  1286. "share",
  1287. "share_2",
  1288. "sheet",
  1289. "shell",
  1290. "shield",
  1291. "shield_alert",
  1292. "shield_ban",
  1293. "shield_check",
  1294. "shield_ellipsis",
  1295. "shield_half",
  1296. "shield_minus",
  1297. "shield_off",
  1298. "shield_plus",
  1299. "shield_question",
  1300. "shield_x",
  1301. "ship",
  1302. "ship_wheel",
  1303. "shirt",
  1304. "shopping_bag",
  1305. "shopping_basket",
  1306. "shopping_cart",
  1307. "shovel",
  1308. "shower_head",
  1309. "shrink",
  1310. "shrub",
  1311. "shuffle",
  1312. "sigma",
  1313. "signal",
  1314. "signal_high",
  1315. "signal_low",
  1316. "signal_medium",
  1317. "signal_zero",
  1318. "signature",
  1319. "signpost",
  1320. "signpost_big",
  1321. "siren",
  1322. "skip_back",
  1323. "skip_forward",
  1324. "skull",
  1325. "slack",
  1326. "slash",
  1327. "slice",
  1328. "sliders_horizontal",
  1329. "sliders_vertical",
  1330. "smartphone",
  1331. "smartphone_charging",
  1332. "smartphone_nfc",
  1333. "smile",
  1334. "smile_plus",
  1335. "snail",
  1336. "snowflake",
  1337. "sofa",
  1338. "soup",
  1339. "space",
  1340. "spade",
  1341. "sparkle",
  1342. "sparkles",
  1343. "speaker",
  1344. "speech",
  1345. "spell_check",
  1346. "spell_check_2",
  1347. "spline",
  1348. "split",
  1349. "spray_can",
  1350. "sprout",
  1351. "square",
  1352. "square_activity",
  1353. "square_arrow_down",
  1354. "square_arrow_down_left",
  1355. "square_arrow_down_right",
  1356. "square_arrow_left",
  1357. "square_arrow_out_down_left",
  1358. "square_arrow_out_down_right",
  1359. "square_arrow_out_up_left",
  1360. "square_arrow_out_up_right",
  1361. "square_arrow_right",
  1362. "square_arrow_up",
  1363. "square_arrow_up_left",
  1364. "square_arrow_up_right",
  1365. "square_asterisk",
  1366. "square_bottom_dashed_scissors",
  1367. "square_chart_gantt",
  1368. "square_check",
  1369. "square_check_big",
  1370. "square_chevron_down",
  1371. "square_chevron_left",
  1372. "square_chevron_right",
  1373. "square_chevron_up",
  1374. "square_code",
  1375. "square_dashed",
  1376. "square_dashed_bottom",
  1377. "square_dashed_bottom_code",
  1378. "square_dashed_kanban",
  1379. "square_dashed_mouse_pointer",
  1380. "square_divide",
  1381. "square_dot",
  1382. "square_equal",
  1383. "square_function",
  1384. "square_gantt_chart",
  1385. "square_kanban",
  1386. "square_library",
  1387. "square_m",
  1388. "square_menu",
  1389. "square_minus",
  1390. "square_mouse_pointer",
  1391. "square_parking",
  1392. "square_parking_off",
  1393. "square_pen",
  1394. "square_percent",
  1395. "square_pi",
  1396. "square_pilcrow",
  1397. "square_play",
  1398. "square_plus",
  1399. "square_power",
  1400. "square_radical",
  1401. "square_scissors",
  1402. "square_sigma",
  1403. "square_slash",
  1404. "square_split_horizontal",
  1405. "square_split_vertical",
  1406. "square_square",
  1407. "square_stack",
  1408. "square_terminal",
  1409. "square_user",
  1410. "square_user_round",
  1411. "square_x",
  1412. "squircle",
  1413. "squirrel",
  1414. "stamp",
  1415. "star",
  1416. "star_half",
  1417. "star_off",
  1418. "step_back",
  1419. "step_forward",
  1420. "stethoscope",
  1421. "sticker",
  1422. "sticky_note",
  1423. "store",
  1424. "stretch_horizontal",
  1425. "stretch_vertical",
  1426. "strikethrough",
  1427. "subscript",
  1428. "sun",
  1429. "sun_dim",
  1430. "sun_medium",
  1431. "sun_moon",
  1432. "sun_snow",
  1433. "sunrise",
  1434. "sunset",
  1435. "superscript",
  1436. "swatch_book",
  1437. "swiss_franc",
  1438. "switch_camera",
  1439. "sword",
  1440. "swords",
  1441. "syringe",
  1442. "table",
  1443. "table_2",
  1444. "table_cells_merge",
  1445. "table_cells_split",
  1446. "table_columns_split",
  1447. "table_of_contents",
  1448. "table_properties",
  1449. "table_rows_split",
  1450. "tablet",
  1451. "tablet_smartphone",
  1452. "tablets",
  1453. "tag",
  1454. "tags",
  1455. "tally_1",
  1456. "tally_2",
  1457. "tally_3",
  1458. "tally_4",
  1459. "tally_5",
  1460. "tangent",
  1461. "target",
  1462. "telescope",
  1463. "tent",
  1464. "tent_tree",
  1465. "terminal",
  1466. "test_tube",
  1467. "test_tube_diagonal",
  1468. "test_tubes",
  1469. "text",
  1470. "text_cursor",
  1471. "text_cursor_input",
  1472. "text_quote",
  1473. "text_search",
  1474. "text_select",
  1475. "theater",
  1476. "thermometer",
  1477. "thermometer_snowflake",
  1478. "thermometer_sun",
  1479. "thumbs_down",
  1480. "thumbs_up",
  1481. "ticket",
  1482. "ticket_check",
  1483. "ticket_minus",
  1484. "ticket_percent",
  1485. "ticket_plus",
  1486. "ticket_slash",
  1487. "ticket_x",
  1488. "tickets",
  1489. "tickets_plane",
  1490. "timer",
  1491. "timer_off",
  1492. "timer_reset",
  1493. "toggle_left",
  1494. "toggle_right",
  1495. "toilet",
  1496. "tornado",
  1497. "torus",
  1498. "touchpad",
  1499. "touchpad_off",
  1500. "tower_control",
  1501. "toy_brick",
  1502. "tractor",
  1503. "traffic_cone",
  1504. "train_front",
  1505. "train_front_tunnel",
  1506. "train_track",
  1507. "tram_front",
  1508. "trash",
  1509. "trash_2",
  1510. "tree_deciduous",
  1511. "tree_palm",
  1512. "tree_pine",
  1513. "trees",
  1514. "trello",
  1515. "trending_down",
  1516. "trending_up",
  1517. "trending_up_down",
  1518. "triangle",
  1519. "triangle_alert",
  1520. "triangle_right",
  1521. "trophy",
  1522. "truck",
  1523. "turtle",
  1524. "tv",
  1525. "tv_2",
  1526. "tv_minimal",
  1527. "tv_minimal_play",
  1528. "twitch",
  1529. "twitter",
  1530. "type",
  1531. "type_outline",
  1532. "umbrella",
  1533. "umbrella_off",
  1534. "underline",
  1535. "undo",
  1536. "undo_2",
  1537. "undo_dot",
  1538. "unfold_horizontal",
  1539. "unfold_vertical",
  1540. "ungroup",
  1541. "university",
  1542. "unlink",
  1543. "unlink_2",
  1544. "unplug",
  1545. "upload",
  1546. "usb",
  1547. "user",
  1548. "user_check",
  1549. "user_cog",
  1550. "user_minus",
  1551. "user_pen",
  1552. "user_plus",
  1553. "user_round",
  1554. "user_round_check",
  1555. "user_round_cog",
  1556. "user_round_minus",
  1557. "user_round_pen",
  1558. "user_round_plus",
  1559. "user_round_search",
  1560. "user_round_x",
  1561. "user_search",
  1562. "user_x",
  1563. "users",
  1564. "users_round",
  1565. "utensils",
  1566. "utensils_crossed",
  1567. "utility_pole",
  1568. "variable",
  1569. "vault",
  1570. "vegan",
  1571. "venetian_mask",
  1572. "vibrate",
  1573. "vibrate_off",
  1574. "video",
  1575. "video_off",
  1576. "videotape",
  1577. "view",
  1578. "voicemail",
  1579. "volleyball",
  1580. "volume",
  1581. "volume_1",
  1582. "volume_2",
  1583. "volume_off",
  1584. "volume_x",
  1585. "vote",
  1586. "wallet",
  1587. "wallet_cards",
  1588. "wallet_minimal",
  1589. "wallpaper",
  1590. "wand",
  1591. "wand_sparkles",
  1592. "warehouse",
  1593. "washing_machine",
  1594. "watch",
  1595. "waves",
  1596. "waves_ladder",
  1597. "waypoints",
  1598. "webcam",
  1599. "webhook",
  1600. "webhook_off",
  1601. "weight",
  1602. "wheat",
  1603. "wheat_off",
  1604. "whole_word",
  1605. "wifi",
  1606. "wifi_high",
  1607. "wifi_low",
  1608. "wifi_off",
  1609. "wifi_zero",
  1610. "wind",
  1611. "wind_arrow_down",
  1612. "wine",
  1613. "wine_off",
  1614. "workflow",
  1615. "worm",
  1616. "wrap_text",
  1617. "wrench",
  1618. "x",
  1619. "youtube",
  1620. "zap",
  1621. "zap_off",
  1622. "zoom_in",
  1623. "zoom_out",
  1624. ]
  1625. # The default transformation of some icon names doesn't match how the
  1626. # icons are exported from Lucide. Manual overrides can go here.
  1627. LUCIDE_ICON_MAPPING_OVERRIDE = {
  1628. "grid_2x_2_check": "Grid2x2Check",
  1629. "grid_2x_2_x": "Grid2x2X",
  1630. }