1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732 |
- """Lucide Icon component."""
- from reflex.components.component import Component
- from reflex.utils import console, format
- from reflex.utils.imports import ImportVar
- from reflex.vars.base import LiteralVar, Var
- from reflex.vars.sequence import LiteralStringVar, StringVar
- class LucideIconComponent(Component):
- """Lucide Icon Component."""
- library = "lucide-react@0.510.0"
- class Icon(LucideIconComponent):
- """An Icon component."""
- tag = "None"
- # The size of the icon in pixels.
- size: Var[int]
- @classmethod
- def create(cls, *children, **props) -> Component:
- """Initialize the Icon component.
- Run some additional checks on Icon component.
- Args:
- *children: The positional arguments
- **props: The keyword arguments
- Raises:
- AttributeError: The errors tied to bad usage of the Icon component.
- TypeError: If the icon name is not a string.
- Returns:
- The created component.
- """
- if children:
- if len(children) == 1:
- child = Var.create(children[0]).guess_type()
- if not isinstance(child, StringVar):
- raise AttributeError(
- f"Icon name must be a string, got {children[0]._var_type if isinstance(children[0], Var) else children[0]}"
- )
- props["tag"] = children[0]
- else:
- raise AttributeError(
- f"Passing multiple children to Icon component is not allowed: remove positional arguments {children[1:]} to fix"
- )
- if "tag" not in props:
- raise AttributeError("Missing 'tag' keyword-argument for Icon")
- tag_var: Var | LiteralVar = Var.create(props.pop("tag"))
- if isinstance(tag_var, LiteralVar):
- if isinstance(tag_var, LiteralStringVar):
- tag = format.to_snake_case(tag_var._var_value.lower())
- else:
- raise TypeError(f"Icon name must be a string, got {type(tag_var)}")
- elif isinstance(tag_var, Var):
- tag_stringified = tag_var.guess_type()
- if not isinstance(tag_stringified, StringVar):
- raise TypeError(f"Icon name must be a string, got {tag_var._var_type}")
- return DynamicIcon.create(name=tag_stringified.replace("_", "-"), **props)
- if tag not in LUCIDE_ICON_LIST:
- icons_sorted = sorted(
- LUCIDE_ICON_LIST,
- key=lambda s, tag=tag: format.length_of_largest_common_substring(
- tag, s
- ),
- reverse=True,
- )
- console.warn(
- f"Invalid icon tag: {tag}. Please use one of the following: {', '.join(icons_sorted[0:10])}, ..."
- "\nSee full list at https://reflex.dev/docs/library/data-display/icon/#icons-list. Using 'circle_help' icon instead."
- )
- tag = "circle_help"
- props["tag"] = LUCIDE_ICON_MAPPING_OVERRIDE.get(tag, format.to_title_case(tag))
- props["alias"] = f"Lucide{props['tag']}"
- return super().create(**props)
- class DynamicIcon(LucideIconComponent):
- """A DynamicIcon component."""
- tag = "DynamicIcon"
- name: Var[str]
- def _get_imports(self):
- _imports = super()._get_imports()
- if self.library:
- _imports.pop(self.library)
- _imports["lucide-react"] = [ImportVar("DynamicIcon", package_path="/dynamic")]
- return _imports
- LUCIDE_ICON_LIST = [
- "a_arrow_down",
- "a_arrow_up",
- "a_large_small",
- "accessibility",
- "activity",
- "air_vent",
- "airplay",
- "alarm_clock",
- "alarm_clock_check",
- "alarm_clock_minus",
- "alarm_clock_off",
- "alarm_clock_plus",
- "alarm_smoke",
- "album",
- "align_center",
- "align_center_horizontal",
- "align_center_vertical",
- "align_end_horizontal",
- "align_end_vertical",
- "align_horizontal_distribute_center",
- "align_horizontal_distribute_end",
- "align_horizontal_distribute_start",
- "align_horizontal_justify_center",
- "align_horizontal_justify_end",
- "align_horizontal_justify_start",
- "align_horizontal_space_around",
- "align_horizontal_space_between",
- "align_justify",
- "align_left",
- "align_right",
- "align_start_horizontal",
- "align_start_vertical",
- "align_vertical_distribute_center",
- "align_vertical_distribute_end",
- "align_vertical_distribute_start",
- "align_vertical_justify_center",
- "align_vertical_justify_end",
- "align_vertical_justify_start",
- "align_vertical_space_around",
- "align_vertical_space_between",
- "ambulance",
- "ampersand",
- "ampersands",
- "amphora",
- "anchor",
- "angry",
- "annoyed",
- "antenna",
- "anvil",
- "aperture",
- "app_window",
- "app_window_mac",
- "apple",
- "archive",
- "archive_restore",
- "archive_x",
- "area_chart",
- "armchair",
- "arrow_big_down",
- "arrow_big_down_dash",
- "arrow_big_left",
- "arrow_big_left_dash",
- "arrow_big_right",
- "arrow_big_right_dash",
- "arrow_big_up",
- "arrow_big_up_dash",
- "arrow_down",
- "arrow_down_0_1",
- "arrow_down_1_0",
- "arrow_down_a_z",
- "arrow_down_from_line",
- "arrow_down_left",
- "arrow_down_narrow_wide",
- "arrow_down_right",
- "arrow_down_to_dot",
- "arrow_down_to_line",
- "arrow_down_up",
- "arrow_down_wide_narrow",
- "arrow_down_z_a",
- "arrow_left",
- "arrow_left_from_line",
- "arrow_left_right",
- "arrow_left_to_line",
- "arrow_right",
- "arrow_right_from_line",
- "arrow_right_left",
- "arrow_right_to_line",
- "arrow_up",
- "arrow_up_0_1",
- "arrow_up_1_0",
- "arrow_up_a_z",
- "arrow_up_down",
- "arrow_up_from_dot",
- "arrow_up_from_line",
- "arrow_up_left",
- "arrow_up_narrow_wide",
- "arrow_up_right",
- "arrow_up_to_line",
- "arrow_up_wide_narrow",
- "arrow_up_z_a",
- "arrows_up_from_line",
- "asterisk",
- "at_sign",
- "atom",
- "audio_lines",
- "audio_waveform",
- "award",
- "axe",
- "axis_3d",
- "baby",
- "backpack",
- "badge",
- "badge_alert",
- "badge_cent",
- "badge_check",
- "badge_dollar_sign",
- "badge_euro",
- "badge_help",
- "badge_indian_rupee",
- "badge_info",
- "badge_japanese_yen",
- "badge_minus",
- "badge_percent",
- "badge_plus",
- "badge_pound_sterling",
- "badge_russian_ruble",
- "badge_swiss_franc",
- "badge_x",
- "baggage_claim",
- "ban",
- "banana",
- "bandage",
- "banknote",
- "banknote_arrow_down",
- "banknote_x",
- "bar_chart",
- "bar_chart_2",
- "bar_chart_3",
- "bar_chart_4",
- "bar_chart_big",
- "bar_chart_horizontal",
- "bar_chart_horizontal_big",
- "barcode",
- "baseline",
- "bath",
- "battery",
- "battery_charging",
- "battery_full",
- "battery_low",
- "battery_medium",
- "battery_plus",
- "battery_warning",
- "beaker",
- "bean",
- "bean_off",
- "bed",
- "bed_double",
- "bed_single",
- "beef",
- "beer",
- "beer_off",
- "bell",
- "bell_dot",
- "bell_electric",
- "bell_minus",
- "bell_off",
- "bell_plus",
- "bell_ring",
- "between_horizontal_end",
- "between_horizontal_start",
- "between_vertical_end",
- "between_vertical_start",
- "biceps_flexed",
- "bike",
- "binary",
- "binoculars",
- "biohazard",
- "bird",
- "bitcoin",
- "blend",
- "blinds",
- "blocks",
- "bluetooth",
- "bluetooth_connected",
- "bluetooth_off",
- "bluetooth_searching",
- "bold",
- "bolt",
- "bomb",
- "bone",
- "book",
- "book_a",
- "book_audio",
- "book_check",
- "book_copy",
- "book_dashed",
- "book_down",
- "book_headphones",
- "book_heart",
- "book_image",
- "book_key",
- "book_lock",
- "book_marked",
- "book_minus",
- "book_open",
- "book_open_check",
- "book_open_text",
- "book_plus",
- "book_text",
- "book_type",
- "book_up",
- "book_up_2",
- "book_user",
- "book_x",
- "bookmark",
- "bookmark_check",
- "bookmark_minus",
- "bookmark_plus",
- "bookmark_x",
- "boom_box",
- "bot",
- "bot_message_square",
- "bot_off",
- "bow_arrow",
- "box",
- "box_select",
- "boxes",
- "braces",
- "brackets",
- "brain",
- "brain_circuit",
- "brain_cog",
- "brick_wall",
- "brick_wall_fire",
- "briefcase",
- "briefcase_business",
- "briefcase_conveyor_belt",
- "briefcase_medical",
- "bring_to_front",
- "brush",
- "brush_cleaning",
- "bubbles",
- "bug",
- "bug_off",
- "bug_play",
- "building",
- "building_2",
- "bus",
- "bus_front",
- "cable",
- "cable_car",
- "cake",
- "cake_slice",
- "calculator",
- "calendar",
- "calendar_1",
- "calendar_arrow_down",
- "calendar_arrow_up",
- "calendar_check",
- "calendar_check_2",
- "calendar_clock",
- "calendar_cog",
- "calendar_days",
- "calendar_fold",
- "calendar_heart",
- "calendar_minus",
- "calendar_minus_2",
- "calendar_off",
- "calendar_plus",
- "calendar_plus_2",
- "calendar_range",
- "calendar_search",
- "calendar_sync",
- "calendar_x",
- "calendar_x_2",
- "camera",
- "camera_off",
- "candlestick_chart",
- "candy",
- "candy_cane",
- "candy_off",
- "cannabis",
- "captions",
- "captions_off",
- "car",
- "car_front",
- "car_taxi_front",
- "caravan",
- "carrot",
- "case_lower",
- "case_sensitive",
- "case_upper",
- "cassette_tape",
- "cast",
- "castle",
- "cat",
- "cctv",
- "chart_area",
- "chart_bar",
- "chart_bar_big",
- "chart_bar_decreasing",
- "chart_bar_increasing",
- "chart_bar_stacked",
- "chart_candlestick",
- "chart_column",
- "chart_column_big",
- "chart_column_decreasing",
- "chart_column_increasing",
- "chart_column_stacked",
- "chart_gantt",
- "chart_line",
- "chart_network",
- "chart_no_axes_column",
- "chart_no_axes_column_decreasing",
- "chart_no_axes_column_increasing",
- "chart_no_axes_combined",
- "chart_no_axes_gantt",
- "chart_pie",
- "chart_scatter",
- "chart_spline",
- "check",
- "check_check",
- "check_line",
- "chef_hat",
- "cherry",
- "chevron_down",
- "chevron_first",
- "chevron_last",
- "chevron_left",
- "chevron_right",
- "chevron_up",
- "chevrons_down",
- "chevrons_down_up",
- "chevrons_left",
- "chevrons_left_right",
- "chevrons_left_right_ellipsis",
- "chevrons_right",
- "chevrons_right_left",
- "chevrons_up",
- "chevrons_up_down",
- "chrome",
- "church",
- "cigarette",
- "cigarette_off",
- "circle",
- "circle_alert",
- "circle_arrow_down",
- "circle_arrow_left",
- "circle_arrow_out_down_left",
- "circle_arrow_out_down_right",
- "circle_arrow_out_up_left",
- "circle_arrow_out_up_right",
- "circle_arrow_right",
- "circle_arrow_up",
- "circle_check",
- "circle_check_big",
- "circle_chevron_down",
- "circle_chevron_left",
- "circle_chevron_right",
- "circle_chevron_up",
- "circle_dashed",
- "circle_divide",
- "circle_dollar_sign",
- "circle_dot",
- "circle_dot_dashed",
- "circle_ellipsis",
- "circle_equal",
- "circle_fading_arrow_up",
- "circle_fading_plus",
- "circle_gauge",
- "circle_help",
- "circle_minus",
- "circle_off",
- "circle_parking",
- "circle_parking_off",
- "circle_pause",
- "circle_percent",
- "circle_play",
- "circle_plus",
- "circle_power",
- "circle_slash",
- "circle_slash_2",
- "circle_small",
- "circle_stop",
- "circle_user",
- "circle_user_round",
- "circle_x",
- "circuit_board",
- "citrus",
- "clapperboard",
- "clipboard",
- "clipboard_check",
- "clipboard_copy",
- "clipboard_list",
- "clipboard_minus",
- "clipboard_paste",
- "clipboard_pen",
- "clipboard_pen_line",
- "clipboard_plus",
- "clipboard_type",
- "clipboard_x",
- "clock",
- "clock_1",
- "clock_10",
- "clock_11",
- "clock_12",
- "clock_2",
- "clock_3",
- "clock_4",
- "clock_5",
- "clock_6",
- "clock_7",
- "clock_8",
- "clock_9",
- "clock_alert",
- "clock_arrow_down",
- "clock_arrow_up",
- "clock_fading",
- "clock_plus",
- "cloud",
- "cloud_alert",
- "cloud_cog",
- "cloud_download",
- "cloud_drizzle",
- "cloud_fog",
- "cloud_hail",
- "cloud_lightning",
- "cloud_moon",
- "cloud_moon_rain",
- "cloud_off",
- "cloud_rain",
- "cloud_rain_wind",
- "cloud_snow",
- "cloud_sun",
- "cloud_sun_rain",
- "cloud_upload",
- "cloudy",
- "clover",
- "club",
- "code",
- "code_xml",
- "codepen",
- "codesandbox",
- "coffee",
- "cog",
- "coins",
- "columns_2",
- "columns_3",
- "columns_3_cog",
- "columns_4",
- "combine",
- "command",
- "compass",
- "component",
- "computer",
- "concierge_bell",
- "cone",
- "construction",
- "contact",
- "contact_round",
- "container",
- "contrast",
- "cookie",
- "cooking_pot",
- "copy",
- "copy_check",
- "copy_minus",
- "copy_plus",
- "copy_slash",
- "copy_x",
- "copyleft",
- "copyright",
- "corner_down_left",
- "corner_down_right",
- "corner_left_down",
- "corner_left_up",
- "corner_right_down",
- "corner_right_up",
- "corner_up_left",
- "corner_up_right",
- "cpu",
- "creative_commons",
- "credit_card",
- "croissant",
- "crop",
- "cross",
- "crosshair",
- "crown",
- "cuboid",
- "cup_soda",
- "currency",
- "cylinder",
- "dam",
- "database",
- "database_backup",
- "database_zap",
- "decimals_arrow_left",
- "decimals_arrow_right",
- "delete",
- "dessert",
- "diameter",
- "diamond",
- "diamond_minus",
- "diamond_percent",
- "diamond_plus",
- "dice_1",
- "dice_2",
- "dice_3",
- "dice_4",
- "dice_5",
- "dice_6",
- "dices",
- "diff",
- "disc",
- "disc_2",
- "disc_3",
- "disc_album",
- "divide",
- "dna",
- "dna_off",
- "dock",
- "dog",
- "dollar_sign",
- "donut",
- "door_closed",
- "door_closed_locked",
- "door_open",
- "dot",
- "download",
- "drafting_compass",
- "drama",
- "dribbble",
- "drill",
- "droplet",
- "droplet_off",
- "droplets",
- "drum",
- "drumstick",
- "dumbbell",
- "ear",
- "ear_off",
- "earth",
- "earth_lock",
- "eclipse",
- "egg",
- "egg_fried",
- "egg_off",
- "ellipsis",
- "ellipsis_vertical",
- "equal",
- "equal_approximately",
- "equal_not",
- "eraser",
- "ethernet_port",
- "euro",
- "expand",
- "external_link",
- "eye",
- "eye_closed",
- "eye_off",
- "facebook",
- "factory",
- "fan",
- "fast_forward",
- "feather",
- "fence",
- "ferris_wheel",
- "figma",
- "file",
- "file_archive",
- "file_audio",
- "file_audio_2",
- "file_axis_3d",
- "file_badge",
- "file_badge_2",
- "file_bar_chart",
- "file_bar_chart_2",
- "file_box",
- "file_chart_column",
- "file_chart_column_increasing",
- "file_chart_line",
- "file_chart_pie",
- "file_check",
- "file_check_2",
- "file_clock",
- "file_code",
- "file_code_2",
- "file_cog",
- "file_diff",
- "file_digit",
- "file_down",
- "file_heart",
- "file_image",
- "file_input",
- "file_json",
- "file_json_2",
- "file_key",
- "file_key_2",
- "file_line_chart",
- "file_lock",
- "file_lock_2",
- "file_minus",
- "file_minus_2",
- "file_music",
- "file_output",
- "file_pen",
- "file_pen_line",
- "file_pie_chart",
- "file_plus",
- "file_plus_2",
- "file_question",
- "file_scan",
- "file_search",
- "file_search_2",
- "file_sliders",
- "file_spreadsheet",
- "file_stack",
- "file_symlink",
- "file_terminal",
- "file_text",
- "file_type",
- "file_type_2",
- "file_up",
- "file_user",
- "file_video",
- "file_video_2",
- "file_volume",
- "file_volume_2",
- "file_warning",
- "file_x",
- "file_x_2",
- "files",
- "film",
- "filter",
- "filter_x",
- "fingerprint",
- "fire_extinguisher",
- "fish",
- "fish_off",
- "fish_symbol",
- "flag",
- "flag_off",
- "flag_triangle_left",
- "flag_triangle_right",
- "flame",
- "flame_kindling",
- "flashlight",
- "flashlight_off",
- "flask_conical",
- "flask_conical_off",
- "flask_round",
- "flip_horizontal",
- "flip_horizontal_2",
- "flip_vertical",
- "flip_vertical_2",
- "flower",
- "flower_2",
- "focus",
- "fold_horizontal",
- "fold_vertical",
- "folder",
- "folder_archive",
- "folder_check",
- "folder_clock",
- "folder_closed",
- "folder_code",
- "folder_cog",
- "folder_dot",
- "folder_down",
- "folder_git",
- "folder_git_2",
- "folder_heart",
- "folder_input",
- "folder_kanban",
- "folder_key",
- "folder_lock",
- "folder_minus",
- "folder_open",
- "folder_open_dot",
- "folder_output",
- "folder_pen",
- "folder_plus",
- "folder_root",
- "folder_search",
- "folder_search_2",
- "folder_symlink",
- "folder_sync",
- "folder_tree",
- "folder_up",
- "folder_x",
- "folders",
- "footprints",
- "forklift",
- "forward",
- "frame",
- "framer",
- "frown",
- "fuel",
- "fullscreen",
- "funnel",
- "funnel_plus",
- "funnel_x",
- "gallery_horizontal",
- "gallery_horizontal_end",
- "gallery_thumbnails",
- "gallery_vertical",
- "gallery_vertical_end",
- "gamepad",
- "gamepad_2",
- "gantt_chart",
- "gauge",
- "gavel",
- "gem",
- "ghost",
- "gift",
- "git_branch",
- "git_branch_plus",
- "git_commit_horizontal",
- "git_commit_vertical",
- "git_compare",
- "git_compare_arrows",
- "git_fork",
- "git_graph",
- "git_merge",
- "git_pull_request",
- "git_pull_request_arrow",
- "git_pull_request_closed",
- "git_pull_request_create",
- "git_pull_request_create_arrow",
- "git_pull_request_draft",
- "github",
- "gitlab",
- "glass_water",
- "glasses",
- "globe",
- "globe_lock",
- "goal",
- "gpu",
- "grab",
- "graduation_cap",
- "grape",
- "grid_2x2",
- "grid_2x_2",
- "grid_2x_2_check",
- "grid_2x_2_plus",
- "grid_2x_2_x",
- "grid_3x3",
- "grid_3x_3",
- "grip",
- "grip_horizontal",
- "grip_vertical",
- "group",
- "guitar",
- "ham",
- "hamburger",
- "hammer",
- "hand",
- "hand_coins",
- "hand_heart",
- "hand_helping",
- "hand_metal",
- "hand_platter",
- "handshake",
- "hard_drive",
- "hard_drive_download",
- "hard_drive_upload",
- "hard_hat",
- "hash",
- "haze",
- "hdmi_port",
- "heading",
- "heading_1",
- "heading_2",
- "heading_3",
- "heading_4",
- "heading_5",
- "heading_6",
- "headphone_off",
- "headphones",
- "headset",
- "heart",
- "heart_crack",
- "heart_handshake",
- "heart_minus",
- "heart_off",
- "heart_plus",
- "heart_pulse",
- "heater",
- "hexagon",
- "highlighter",
- "history",
- "home",
- "hop",
- "hop_off",
- "hospital",
- "hotel",
- "hourglass",
- "house",
- "house_plug",
- "house_plus",
- "house_wifi",
- "ice_cream_bowl",
- "ice_cream_cone",
- "id_card",
- "image",
- "image_down",
- "image_minus",
- "image_off",
- "image_play",
- "image_plus",
- "image_up",
- "image_upscale",
- "images",
- "import",
- "inbox",
- "indent_decrease",
- "indent_increase",
- "indian_rupee",
- "infinity",
- "info",
- "inspection_panel",
- "instagram",
- "italic",
- "iteration_ccw",
- "iteration_cw",
- "japanese_yen",
- "joystick",
- "kanban",
- "key",
- "key_round",
- "key_square",
- "keyboard",
- "keyboard_music",
- "keyboard_off",
- "lamp",
- "lamp_ceiling",
- "lamp_desk",
- "lamp_floor",
- "lamp_wall_down",
- "lamp_wall_up",
- "land_plot",
- "landmark",
- "languages",
- "laptop",
- "laptop_minimal",
- "laptop_minimal_check",
- "lasso",
- "lasso_select",
- "laugh",
- "layers",
- "layers_2",
- "layers_3",
- "layout_dashboard",
- "layout_grid",
- "layout_list",
- "layout_panel_left",
- "layout_panel_top",
- "layout_template",
- "leaf",
- "leafy_green",
- "lectern",
- "letter_text",
- "library",
- "library_big",
- "life_buoy",
- "ligature",
- "lightbulb",
- "lightbulb_off",
- "line_chart",
- "link",
- "link_2",
- "link_2_off",
- "linkedin",
- "list",
- "list_check",
- "list_checks",
- "list_collapse",
- "list_end",
- "list_filter",
- "list_filter_plus",
- "list_minus",
- "list_music",
- "list_ordered",
- "list_plus",
- "list_restart",
- "list_start",
- "list_todo",
- "list_tree",
- "list_video",
- "list_x",
- "loader",
- "loader_circle",
- "loader_pinwheel",
- "locate",
- "locate_fixed",
- "locate_off",
- "location_edit",
- "lock",
- "lock_keyhole",
- "lock_keyhole_open",
- "lock_open",
- "log_in",
- "log_out",
- "logs",
- "lollipop",
- "luggage",
- "magnet",
- "mail",
- "mail_check",
- "mail_minus",
- "mail_open",
- "mail_plus",
- "mail_question",
- "mail_search",
- "mail_warning",
- "mail_x",
- "mailbox",
- "mails",
- "map",
- "map_pin",
- "map_pin_check",
- "map_pin_check_inside",
- "map_pin_house",
- "map_pin_minus",
- "map_pin_minus_inside",
- "map_pin_off",
- "map_pin_plus",
- "map_pin_plus_inside",
- "map_pin_x",
- "map_pin_x_inside",
- "map_pinned",
- "map_plus",
- "mars_stroke",
- "martini",
- "maximize",
- "maximize_2",
- "medal",
- "megaphone",
- "megaphone_off",
- "meh",
- "memory_stick",
- "menu",
- "merge",
- "message_circle",
- "message_circle_code",
- "message_circle_dashed",
- "message_circle_heart",
- "message_circle_more",
- "message_circle_off",
- "message_circle_plus",
- "message_circle_question",
- "message_circle_reply",
- "message_circle_warning",
- "message_circle_x",
- "message_square",
- "message_square_code",
- "message_square_dashed",
- "message_square_diff",
- "message_square_dot",
- "message_square_heart",
- "message_square_lock",
- "message_square_more",
- "message_square_off",
- "message_square_plus",
- "message_square_quote",
- "message_square_reply",
- "message_square_share",
- "message_square_text",
- "message_square_warning",
- "message_square_x",
- "messages_square",
- "mic",
- "mic_off",
- "mic_vocal",
- "microchip",
- "microscope",
- "microwave",
- "milestone",
- "milk",
- "milk_off",
- "minimize",
- "minimize_2",
- "minus",
- "monitor",
- "monitor_check",
- "monitor_cog",
- "monitor_dot",
- "monitor_down",
- "monitor_off",
- "monitor_pause",
- "monitor_play",
- "monitor_smartphone",
- "monitor_speaker",
- "monitor_stop",
- "monitor_up",
- "monitor_x",
- "moon",
- "moon_star",
- "mountain",
- "mountain_snow",
- "mouse",
- "mouse_off",
- "mouse_pointer",
- "mouse_pointer_2",
- "mouse_pointer_ban",
- "mouse_pointer_click",
- "move",
- "move_3d",
- "move_diagonal",
- "move_diagonal_2",
- "move_down",
- "move_down_left",
- "move_down_right",
- "move_horizontal",
- "move_left",
- "move_right",
- "move_up",
- "move_up_left",
- "move_up_right",
- "move_vertical",
- "music",
- "music_2",
- "music_3",
- "music_4",
- "navigation",
- "navigation_2",
- "navigation_2_off",
- "navigation_off",
- "network",
- "newspaper",
- "nfc",
- "non_binary",
- "notebook",
- "notebook_pen",
- "notebook_tabs",
- "notebook_text",
- "notepad_text",
- "notepad_text_dashed",
- "nut",
- "nut_off",
- "octagon",
- "octagon_alert",
- "octagon_minus",
- "octagon_pause",
- "octagon_x",
- "omega",
- "option",
- "orbit",
- "origami",
- "package",
- "package_2",
- "package_check",
- "package_minus",
- "package_open",
- "package_plus",
- "package_search",
- "package_x",
- "paint_bucket",
- "paint_roller",
- "paintbrush",
- "paintbrush_2",
- "paintbrush_vertical",
- "palette",
- "panda",
- "panel_bottom",
- "panel_bottom_close",
- "panel_bottom_dashed",
- "panel_bottom_open",
- "panel_left",
- "panel_left_close",
- "panel_left_dashed",
- "panel_left_open",
- "panel_right",
- "panel_right_close",
- "panel_right_dashed",
- "panel_right_open",
- "panel_top",
- "panel_top_close",
- "panel_top_dashed",
- "panel_top_open",
- "panels_left_bottom",
- "panels_right_bottom",
- "panels_top_left",
- "paperclip",
- "parentheses",
- "parking_meter",
- "party_popper",
- "pause",
- "paw_print",
- "pc_case",
- "pen",
- "pen_line",
- "pen_off",
- "pen_tool",
- "pencil",
- "pencil_line",
- "pencil_off",
- "pencil_ruler",
- "pentagon",
- "percent",
- "person_standing",
- "philippine_peso",
- "phone",
- "phone_call",
- "phone_forwarded",
- "phone_incoming",
- "phone_missed",
- "phone_off",
- "phone_outgoing",
- "pi",
- "piano",
- "pickaxe",
- "picture_in_picture",
- "picture_in_picture_2",
- "pie_chart",
- "piggy_bank",
- "pilcrow",
- "pilcrow_left",
- "pilcrow_right",
- "pill",
- "pill_bottle",
- "pin",
- "pin_off",
- "pipette",
- "pizza",
- "plane",
- "plane_landing",
- "plane_takeoff",
- "play",
- "plug",
- "plug_2",
- "plug_zap",
- "plug_zap_2",
- "plus",
- "pocket",
- "pocket_knife",
- "podcast",
- "pointer",
- "pointer_off",
- "popcorn",
- "popsicle",
- "pound_sterling",
- "power",
- "power_off",
- "presentation",
- "printer",
- "printer_check",
- "projector",
- "proportions",
- "puzzle",
- "pyramid",
- "qr_code",
- "quote",
- "rabbit",
- "radar",
- "radiation",
- "radical",
- "radio",
- "radio_receiver",
- "radio_tower",
- "radius",
- "rail_symbol",
- "rainbow",
- "rat",
- "ratio",
- "receipt",
- "receipt_cent",
- "receipt_euro",
- "receipt_indian_rupee",
- "receipt_japanese_yen",
- "receipt_pound_sterling",
- "receipt_russian_ruble",
- "receipt_swiss_franc",
- "receipt_text",
- "rectangle_ellipsis",
- "rectangle_goggles",
- "rectangle_horizontal",
- "rectangle_vertical",
- "recycle",
- "redo",
- "redo_2",
- "redo_dot",
- "refresh_ccw",
- "refresh_ccw_dot",
- "refresh_cw",
- "refresh_cw_off",
- "refrigerator",
- "regex",
- "remove_formatting",
- "repeat",
- "repeat_1",
- "repeat_2",
- "replace",
- "replace_all",
- "reply",
- "reply_all",
- "rewind",
- "ribbon",
- "rocket",
- "rocking_chair",
- "roller_coaster",
- "rotate_3d",
- "rotate_ccw",
- "rotate_ccw_key",
- "rotate_ccw_square",
- "rotate_cw",
- "rotate_cw_square",
- "route",
- "route_off",
- "router",
- "rows_2",
- "rows_3",
- "rows_4",
- "rss",
- "ruler",
- "ruler_dimension_line",
- "russian_ruble",
- "sailboat",
- "salad",
- "sandwich",
- "satellite",
- "satellite_dish",
- "saudi_riyal",
- "save",
- "save_all",
- "save_off",
- "scale",
- "scale_3d",
- "scaling",
- "scan",
- "scan_barcode",
- "scan_eye",
- "scan_face",
- "scan_heart",
- "scan_line",
- "scan_qr_code",
- "scan_search",
- "scan_text",
- "scatter_chart",
- "school",
- "scissors",
- "scissors_line_dashed",
- "screen_share",
- "screen_share_off",
- "scroll",
- "scroll_text",
- "search",
- "search_check",
- "search_code",
- "search_slash",
- "search_x",
- "section",
- "send",
- "send_horizontal",
- "send_to_back",
- "separator_horizontal",
- "separator_vertical",
- "server",
- "server_cog",
- "server_crash",
- "server_off",
- "settings",
- "settings_2",
- "shapes",
- "share",
- "share_2",
- "sheet",
- "shell",
- "shield",
- "shield_alert",
- "shield_ban",
- "shield_check",
- "shield_ellipsis",
- "shield_half",
- "shield_minus",
- "shield_off",
- "shield_plus",
- "shield_question",
- "shield_user",
- "shield_x",
- "ship",
- "ship_wheel",
- "shirt",
- "shopping_bag",
- "shopping_basket",
- "shopping_cart",
- "shovel",
- "shower_head",
- "shredder",
- "shrimp",
- "shrink",
- "shrub",
- "shuffle",
- "sigma",
- "signal",
- "signal_high",
- "signal_low",
- "signal_medium",
- "signal_zero",
- "signature",
- "signpost",
- "signpost_big",
- "siren",
- "skip_back",
- "skip_forward",
- "skull",
- "slack",
- "slash",
- "slice",
- "sliders_horizontal",
- "sliders_vertical",
- "smartphone",
- "smartphone_charging",
- "smartphone_nfc",
- "smile",
- "smile_plus",
- "snail",
- "snowflake",
- "soap_dispenser_droplet",
- "sofa",
- "soup",
- "space",
- "spade",
- "sparkle",
- "sparkles",
- "speaker",
- "speech",
- "spell_check",
- "spell_check_2",
- "spline",
- "spline_pointer",
- "split",
- "spray_can",
- "sprout",
- "square",
- "square_activity",
- "square_arrow_down",
- "square_arrow_down_left",
- "square_arrow_down_right",
- "square_arrow_left",
- "square_arrow_out_down_left",
- "square_arrow_out_down_right",
- "square_arrow_out_up_left",
- "square_arrow_out_up_right",
- "square_arrow_right",
- "square_arrow_up",
- "square_arrow_up_left",
- "square_arrow_up_right",
- "square_asterisk",
- "square_bottom_dashed_scissors",
- "square_chart_gantt",
- "square_check",
- "square_check_big",
- "square_chevron_down",
- "square_chevron_left",
- "square_chevron_right",
- "square_chevron_up",
- "square_code",
- "square_dashed",
- "square_dashed_bottom",
- "square_dashed_bottom_code",
- "square_dashed_kanban",
- "square_dashed_mouse_pointer",
- "square_divide",
- "square_dot",
- "square_equal",
- "square_function",
- "square_gantt_chart",
- "square_kanban",
- "square_library",
- "square_m",
- "square_menu",
- "square_minus",
- "square_mouse_pointer",
- "square_parking",
- "square_parking_off",
- "square_pen",
- "square_percent",
- "square_pi",
- "square_pilcrow",
- "square_play",
- "square_plus",
- "square_power",
- "square_radical",
- "square_round_corner",
- "square_scissors",
- "square_sigma",
- "square_slash",
- "square_split_horizontal",
- "square_split_vertical",
- "square_square",
- "square_stack",
- "square_terminal",
- "square_user",
- "square_user_round",
- "square_x",
- "squares_exclude",
- "squares_intersect",
- "squares_subtract",
- "squares_unite",
- "squircle",
- "squirrel",
- "stamp",
- "star",
- "star_half",
- "star_off",
- "step_back",
- "step_forward",
- "stethoscope",
- "sticker",
- "sticky_note",
- "store",
- "stretch_horizontal",
- "stretch_vertical",
- "strikethrough",
- "subscript",
- "sun",
- "sun_dim",
- "sun_medium",
- "sun_moon",
- "sun_snow",
- "sunrise",
- "sunset",
- "superscript",
- "swatch_book",
- "swiss_franc",
- "switch_camera",
- "sword",
- "swords",
- "syringe",
- "table",
- "table_2",
- "table_cells_merge",
- "table_cells_split",
- "table_columns_split",
- "table_of_contents",
- "table_properties",
- "table_rows_split",
- "tablet",
- "tablet_smartphone",
- "tablets",
- "tag",
- "tags",
- "tally_1",
- "tally_2",
- "tally_3",
- "tally_4",
- "tally_5",
- "tangent",
- "target",
- "telescope",
- "tent",
- "tent_tree",
- "terminal",
- "test_tube",
- "test_tube_diagonal",
- "test_tubes",
- "text",
- "text_cursor",
- "text_cursor_input",
- "text_quote",
- "text_search",
- "text_select",
- "theater",
- "thermometer",
- "thermometer_snowflake",
- "thermometer_sun",
- "thumbs_down",
- "thumbs_up",
- "ticket",
- "ticket_check",
- "ticket_minus",
- "ticket_percent",
- "ticket_plus",
- "ticket_slash",
- "ticket_x",
- "tickets",
- "tickets_plane",
- "timer",
- "timer_off",
- "timer_reset",
- "toggle_left",
- "toggle_right",
- "toilet",
- "tornado",
- "torus",
- "touchpad",
- "touchpad_off",
- "tower_control",
- "toy_brick",
- "tractor",
- "traffic_cone",
- "train_front",
- "train_front_tunnel",
- "train_track",
- "tram_front",
- "transgender",
- "trash",
- "trash_2",
- "tree_deciduous",
- "tree_palm",
- "tree_pine",
- "trees",
- "trello",
- "trending_down",
- "trending_up",
- "trending_up_down",
- "triangle",
- "triangle_alert",
- "triangle_dashed",
- "triangle_right",
- "trophy",
- "truck",
- "truck_electric",
- "turtle",
- "tv",
- "tv_2",
- "tv_minimal",
- "tv_minimal_play",
- "twitch",
- "twitter",
- "type",
- "type_outline",
- "umbrella",
- "umbrella_off",
- "underline",
- "undo",
- "undo_2",
- "undo_dot",
- "unfold_horizontal",
- "unfold_vertical",
- "ungroup",
- "university",
- "unlink",
- "unlink_2",
- "unplug",
- "upload",
- "usb",
- "user",
- "user_check",
- "user_cog",
- "user_lock",
- "user_minus",
- "user_pen",
- "user_plus",
- "user_round",
- "user_round_check",
- "user_round_cog",
- "user_round_minus",
- "user_round_pen",
- "user_round_plus",
- "user_round_search",
- "user_round_x",
- "user_search",
- "user_x",
- "users",
- "users_round",
- "utensils",
- "utensils_crossed",
- "utility_pole",
- "variable",
- "vault",
- "vegan",
- "venetian_mask",
- "venus",
- "venus_and_mars",
- "vibrate",
- "vibrate_off",
- "video",
- "video_off",
- "videotape",
- "view",
- "voicemail",
- "volleyball",
- "volume",
- "volume_1",
- "volume_2",
- "volume_off",
- "volume_x",
- "vote",
- "wallet",
- "wallet_cards",
- "wallet_minimal",
- "wallpaper",
- "wand",
- "wand_sparkles",
- "warehouse",
- "washing_machine",
- "watch",
- "waves",
- "waves_ladder",
- "waypoints",
- "webcam",
- "webhook",
- "webhook_off",
- "weight",
- "wheat",
- "wheat_off",
- "whole_word",
- "wifi",
- "wifi_high",
- "wifi_low",
- "wifi_off",
- "wifi_pen",
- "wifi_zero",
- "wind",
- "wind_arrow_down",
- "wine",
- "wine_off",
- "workflow",
- "worm",
- "wrap_text",
- "wrench",
- "x",
- "youtube",
- "zap",
- "zap_off",
- "zoom_in",
- "zoom_out",
- ]
- # The default transformation of some icon names doesn't match how the
- # icons are exported from Lucide. Manual overrides can go here.
- LUCIDE_ICON_MAPPING_OVERRIDE = {
- "box_select": "BoxSelectIcon",
- "grid_2x_2_check": "Grid2x2CheckIcon",
- "grid_2x_2_x": "Grid2x2XIcon",
- "grid_2x_2_plus": "Grid2x2PlusIcon",
- "layers_3": "Layers3Icon",
- }
|