123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686 |
- """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.471.1"
- 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']}"
- props.setdefault("color", "var(--current-color)")
- 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",
- "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_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",
- "box",
- "box_select",
- "boxes",
- "braces",
- "brackets",
- "brain",
- "brain_circuit",
- "brain_cog",
- "brick_wall",
- "briefcase",
- "briefcase_business",
- "briefcase_conveyor_belt",
- "briefcase_medical",
- "bring_to_front",
- "brush",
- "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",
- "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_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",
- "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_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",
- "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_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",
- "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",
- "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",
- "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_off",
- "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",
- "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",
- "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",
- "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",
- "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_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_square",
- "rotate_cw",
- "rotate_cw_square",
- "route",
- "route_off",
- "router",
- "rows_2",
- "rows_3",
- "rows_4",
- "rss",
- "ruler",
- "russian_ruble",
- "sailboat",
- "salad",
- "sandwich",
- "satellite",
- "satellite_dish",
- "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_x",
- "ship",
- "ship_wheel",
- "shirt",
- "shopping_bag",
- "shopping_basket",
- "shopping_cart",
- "shovel",
- "shower_head",
- "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",
- "sofa",
- "soup",
- "space",
- "spade",
- "sparkle",
- "sparkles",
- "speaker",
- "speech",
- "spell_check",
- "spell_check_2",
- "spline",
- "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_scissors",
- "square_sigma",
- "square_slash",
- "square_split_horizontal",
- "square_split_vertical",
- "square_square",
- "square_stack",
- "square_terminal",
- "square_user",
- "square_user_round",
- "square_x",
- "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",
- "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",
- "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_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",
- "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_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",
- }
|