diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 381a69b37e..029a9e6e03 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -188,11 +188,6 @@ jobs:
access: public
package: packages/react-icons-font-subsetting-webpack-plugin/package.json
- - name: Build React-Native library
- run: |
- npm run build
- working-directory: packages/react-native-icons
-
- uses: JS-DevTools/npm-publish@v1
with:
token: ${{ secrets.NPM_TOKEN }}
diff --git a/flutter/lib/fonts/FluentSystemIcons-Light.ttf b/flutter/lib/fonts/FluentSystemIcons-Light.ttf
new file mode 100644
index 0000000000..23c83dd6a4
Binary files /dev/null and b/flutter/lib/fonts/FluentSystemIcons-Light.ttf differ
diff --git a/fonts/FluentSystemIcons-Light.css b/fonts/FluentSystemIcons-Light.css
new file mode 100644
index 0000000000..43a9a11d80
--- /dev/null
+++ b/fonts/FluentSystemIcons-Light.css
@@ -0,0 +1,468 @@
+@font-face {
+ font-family: "FluentSystemIcons-Light";
+ src: url("./FluentSystemIcons-Light.woff2?d28ee75896ad379c3c432cf6635fa7e8") format("woff2"),
+url("./FluentSystemIcons-Light.woff?d28ee75896ad379c3c432cf6635fa7e8") format("woff"),
+url("./FluentSystemIcons-Light.ttf?d28ee75896ad379c3c432cf6635fa7e8") format("truetype");
+}
+
+i[class^="icon-"]:before, i[class*=" icon-"]:before {
+ font-family: FluentSystemIcons-Light !important;
+ font-style: normal;
+ font-weight: normal !important;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-ic_fluent_accessibility_checkmark_32_light:before {
+ content: "\e000";
+}
+.icon-ic_fluent_add_32_light:before {
+ content: "\e001";
+}
+.icon-ic_fluent_app_folder_32_light:before {
+ content: "\e002";
+}
+.icon-ic_fluent_archive_32_light:before {
+ content: "\e003";
+}
+.icon-ic_fluent_archive_settings_32_light:before {
+ content: "\e004";
+}
+.icon-ic_fluent_arrow_clockwise_32_light:before {
+ content: "\e005";
+}
+.icon-ic_fluent_arrow_down_32_light:before {
+ content: "\e006";
+}
+.icon-ic_fluent_arrow_forward_32_light:before {
+ content: "\e007";
+}
+.icon-ic_fluent_arrow_hook_up_left_32_light:before {
+ content: "\e008";
+}
+.icon-ic_fluent_arrow_redo_32_light:before {
+ content: "\e009";
+}
+.icon-ic_fluent_arrow_reply_32_light:before {
+ content: "\e00a";
+}
+.icon-ic_fluent_arrow_reply_all_32_light:before {
+ content: "\e00b";
+}
+.icon-ic_fluent_arrow_undo_32_light:before {
+ content: "\e00c";
+}
+.icon-ic_fluent_attach_32_light:before {
+ content: "\e00d";
+}
+.icon-ic_fluent_auto_fit_32_light:before {
+ content: "\e00e";
+}
+.icon-ic_fluent_autocorrect_32_light:before {
+ content: "\e00f";
+}
+.icon-ic_fluent_broom_32_light:before {
+ content: "\e010";
+}
+.icon-ic_fluent_calendar_3_day_32_light:before {
+ content: "\e011";
+}
+.icon-ic_fluent_calendar_clock_32_light:before {
+ content: "\e012";
+}
+.icon-ic_fluent_calendar_data_bar_32_light:before {
+ content: "\e013";
+}
+.icon-ic_fluent_calendar_day_32_light:before {
+ content: "\e014";
+}
+.icon-ic_fluent_calendar_edit_32_light:before {
+ content: "\e015";
+}
+.icon-ic_fluent_calendar_empty_32_light:before {
+ content: "\e016";
+}
+.icon-ic_fluent_calendar_ltr_32_light:before {
+ content: "\e017";
+}
+.icon-ic_fluent_calendar_month_32_light:before {
+ content: "\e018";
+}
+.icon-ic_fluent_calendar_multiple_32_light:before {
+ content: "\e019";
+}
+.icon-ic_fluent_calendar_pattern_32_light:before {
+ content: "\e01a";
+}
+.icon-ic_fluent_calendar_reply_32_light:before {
+ content: "\e01b";
+}
+.icon-ic_fluent_calendar_work_week_32_light:before {
+ content: "\e01c";
+}
+.icon-ic_fluent_checkmark_32_light:before {
+ content: "\e01d";
+}
+.icon-ic_fluent_checkmark_circle_32_light:before {
+ content: "\e01e";
+}
+.icon-ic_fluent_classification_32_light:before {
+ content: "\e01f";
+}
+.icon-ic_fluent_clipboard_paste_32_light:before {
+ content: "\e020";
+}
+.icon-ic_fluent_clock_32_light:before {
+ content: "\e021";
+}
+.icon-ic_fluent_clock_alarm_32_light:before {
+ content: "\e022";
+}
+.icon-ic_fluent_color_32_light:before {
+ content: "\e023";
+}
+.icon-ic_fluent_color_fill_32_light:before {
+ content: "\e024";
+}
+.icon-ic_fluent_comment_32_light:before {
+ content: "\e025";
+}
+.icon-ic_fluent_comment_add_32_light:before {
+ content: "\e026";
+}
+.icon-ic_fluent_compose_32_light:before {
+ content: "\e027";
+}
+.icon-ic_fluent_copy_32_light:before {
+ content: "\e028";
+}
+.icon-ic_fluent_crop_32_light:before {
+ content: "\e029";
+}
+.icon-ic_fluent_cursor_32_light:before {
+ content: "\e02a";
+}
+.icon-ic_fluent_delete_32_light:before {
+ content: "\e02b";
+}
+.icon-ic_fluent_dismiss_32_light:before {
+ content: "\e02c";
+}
+.icon-ic_fluent_dismiss_circle_32_light:before {
+ content: "\e02d";
+}
+.icon-ic_fluent_document_lightning_32_light:before {
+ content: "\e02e";
+}
+.icon-ic_fluent_document_signature_32_light:before {
+ content: "\e02f";
+}
+.icon-ic_fluent_door_arrow_right_32_light:before {
+ content: "\e030";
+}
+.icon-ic_fluent_edit_32_light:before {
+ content: "\e031";
+}
+.icon-ic_fluent_emoji_32_light:before {
+ content: "\e032";
+}
+.icon-ic_fluent_filter_32_light:before {
+ content: "\e033";
+}
+.icon-ic_fluent_flag_32_light:before {
+ content: "\e034";
+}
+.icon-ic_fluent_flag_off_32_light:before {
+ content: "\e035";
+}
+.icon-ic_fluent_flash_32_light:before {
+ content: "\e036";
+}
+.icon-ic_fluent_folder_arrow_right_32_light:before {
+ content: "\e037";
+}
+.icon-ic_fluent_folder_mail_32_light:before {
+ content: "\e038";
+}
+.icon-ic_fluent_hand_draw_32_light:before {
+ content: "\e039";
+}
+.icon-ic_fluent_image_add_32_light:before {
+ content: "\e03a";
+}
+.icon-ic_fluent_image_alt_text_32_light:before {
+ content: "\e03b";
+}
+.icon-ic_fluent_image_copy_32_light:before {
+ content: "\e03c";
+}
+.icon-ic_fluent_image_reflection_32_light:before {
+ content: "\e03d";
+}
+.icon-ic_fluent_image_shadow_32_light:before {
+ content: "\e03e";
+}
+.icon-ic_fluent_immersive_reader_32_light:before {
+ content: "\e03f";
+}
+.icon-ic_fluent_important_32_light:before {
+ content: "\e040";
+}
+.icon-ic_fluent_lasso_32_light:before {
+ content: "\e041";
+}
+.icon-ic_fluent_layout_column_two_32_light:before {
+ content: "\e042";
+}
+.icon-ic_fluent_layout_column_two_focus_left_32_light:before {
+ content: "\e043";
+}
+.icon-ic_fluent_layout_column_two_focus_right_32_light:before {
+ content: "\e044";
+}
+.icon-ic_fluent_layout_row_two_32_light:before {
+ content: "\e045";
+}
+.icon-ic_fluent_layout_row_two_focus_top_32_light:before {
+ content: "\e046";
+}
+.icon-ic_fluent_link_32_light:before {
+ content: "\e047";
+}
+.icon-ic_fluent_lock_closed_32_light:before {
+ content: "\e048";
+}
+.icon-ic_fluent_lock_open_32_light:before {
+ content: "\e049";
+}
+.icon-ic_fluent_mail_32_light:before {
+ content: "\e04a";
+}
+.icon-ic_fluent_mail_alert_32_light:before {
+ content: "\e04b";
+}
+.icon-ic_fluent_mail_arrow_clockwise_32_light:before {
+ content: "\e04c";
+}
+.icon-ic_fluent_mail_arrow_double_back_32_light:before {
+ content: "\e04d";
+}
+.icon-ic_fluent_mail_copy_32_light:before {
+ content: "\e04e";
+}
+.icon-ic_fluent_mail_edit_32_light:before {
+ content: "\e04f";
+}
+.icon-ic_fluent_mail_list_32_light:before {
+ content: "\e050";
+}
+.icon-ic_fluent_mail_multiple_32_light:before {
+ content: "\e051";
+}
+.icon-ic_fluent_mail_read_32_light:before {
+ content: "\e052";
+}
+.icon-ic_fluent_mail_rewind_32_light:before {
+ content: "\e053";
+}
+.icon-ic_fluent_mail_settings_32_light:before {
+ content: "\e054";
+}
+.icon-ic_fluent_mail_unread_32_light:before {
+ content: "\e055";
+}
+.icon-ic_fluent_mic_32_light:before {
+ content: "\e056";
+}
+.icon-ic_fluent_note_32_light:before {
+ content: "\e057";
+}
+.icon-ic_fluent_options_32_light:before {
+ content: "\e058";
+}
+.icon-ic_fluent_paint_brush_32_light:before {
+ content: "\e059";
+}
+.icon-ic_fluent_panel_left_default_32_light:before {
+ content: "\e05a";
+}
+.icon-ic_fluent_panel_left_focus_right_32_light:before {
+ content: "\e05b";
+}
+.icon-ic_fluent_pen_sparkle_32_light:before {
+ content: "\e05c";
+}
+.icon-ic_fluent_people_32_light:before {
+ content: "\e05d";
+}
+.icon-ic_fluent_people_add_32_light:before {
+ content: "\e05e";
+}
+.icon-ic_fluent_people_community_32_light:before {
+ content: "\e05f";
+}
+.icon-ic_fluent_people_list_32_light:before {
+ content: "\e060";
+}
+.icon-ic_fluent_people_settings_32_light:before {
+ content: "\e061";
+}
+.icon-ic_fluent_people_sync_32_light:before {
+ content: "\e062";
+}
+.icon-ic_fluent_person_32_light:before {
+ content: "\e063";
+}
+.icon-ic_fluent_person_add_32_light:before {
+ content: "\e064";
+}
+.icon-ic_fluent_person_available_32_light:before {
+ content: "\e065";
+}
+.icon-ic_fluent_person_feedback_32_light:before {
+ content: "\e066";
+}
+.icon-ic_fluent_person_prohibited_32_light:before {
+ content: "\e067";
+}
+.icon-ic_fluent_person_suport_32_light:before {
+ content: "\e068";
+}
+.icon-ic_fluent_phone_32_light:before {
+ content: "\e069";
+}
+.icon-ic_fluent_picture_in_picture_32_light:before {
+ content: "\e06a";
+}
+.icon-ic_fluent_pin_32_light:before {
+ content: "\e06b";
+}
+.icon-ic_fluent_pin_off_32_light:before {
+ content: "\e06c";
+}
+.icon-ic_fluent_poll_32_light:before {
+ content: "\e06d";
+}
+.icon-ic_fluent_print_32_light:before {
+ content: "\e06e";
+}
+.icon-ic_fluent_question_32_light:before {
+ content: "\e06f";
+}
+.icon-ic_fluent_read_aloud_32_light:before {
+ content: "\e070";
+}
+.icon-ic_fluent_rectangle_landscape_32_light:before {
+ content: "\e071";
+}
+.icon-ic_fluent_rotate_left_32_light:before {
+ content: "\e072";
+}
+.icon-ic_fluent_save_32_light:before {
+ content: "\e073";
+}
+.icon-ic_fluent_send_clock_32_light:before {
+ content: "\e074";
+}
+.icon-ic_fluent_settings_32_light:before {
+ content: "\e075";
+}
+.icon-ic_fluent_share_32_light:before {
+ content: "\e076";
+}
+.icon-ic_fluent_shield_error_32_light:before {
+ content: "\e077";
+}
+.icon-ic_fluent_signature_32_light:before {
+ content: "\e078";
+}
+.icon-ic_fluent_square_arrow_forward_32_light:before {
+ content: "\e079";
+}
+.icon-ic_fluent_stamp_32_light:before {
+ content: "\e07a";
+}
+.icon-ic_fluent_star_add_32_light:before {
+ content: "\e07b";
+}
+.icon-ic_fluent_star_arrow_right_32_light:before {
+ content: "\e07c";
+}
+.icon-ic_fluent_table_32_light:before {
+ content: "\e07d";
+}
+.icon-ic_fluent_table_cells_merge_32_light:before {
+ content: "\e07e";
+}
+.icon-ic_fluent_table_cells_split_32_light:before {
+ content: "\e07f";
+}
+.icon-ic_fluent_table_dismiss_32_light:before {
+ content: "\e080";
+}
+.icon-ic_fluent_table_move_above_32_light:before {
+ content: "\e081";
+}
+.icon-ic_fluent_table_move_below_32_light:before {
+ content: "\e082";
+}
+.icon-ic_fluent_table_move_left_32_light:before {
+ content: "\e083";
+}
+.icon-ic_fluent_table_move_right_32_light:before {
+ content: "\e084";
+}
+.icon-ic_fluent_table_settings_32_light:before {
+ content: "\e085";
+}
+.icon-ic_fluent_table_simple_32_light:before {
+ content: "\e086";
+}
+.icon-ic_fluent_tag_32_light:before {
+ content: "\e087";
+}
+.icon-ic_fluent_text_32_light:before {
+ content: "\e088";
+}
+.icon-ic_fluent_text_clear_formatting_32_light:before {
+ content: "\e089";
+}
+.icon-ic_fluent_text_collapse_32_light:before {
+ content: "\e08a";
+}
+.icon-ic_fluent_text_density_32_light:before {
+ content: "\e08b";
+}
+.icon-ic_fluent_text_edit_style_32_light:before {
+ content: "\e08c";
+}
+.icon-ic_fluent_text_expand_32_light:before {
+ content: "\e08d";
+}
+.icon-ic_fluent_textbox_align_top_left_32_light:before {
+ content: "\e08e";
+}
+.icon-ic_fluent_translate_32_light:before {
+ content: "\e08f";
+}
+.icon-ic_fluent_video_32_light:before {
+ content: "\e090";
+}
+.icon-ic_fluent_video_clip_32_light:before {
+ content: "\e091";
+}
+.icon-ic_fluent_window_32_light:before {
+ content: "\e092";
+}
+.icon-ic_fluent_wrench_screwdriver_32_light:before {
+ content: "\e093";
+}
+.icon-ic_fluent_zoom_in_32_light:before {
+ content: "\e094";
+}
+.icon-ic_fluent_zoom_out_32_light:before {
+ content: "\e095";
+}
diff --git a/fonts/FluentSystemIcons-Light.html b/fonts/FluentSystemIcons-Light.html
new file mode 100644
index 0000000000..9e9c3a8bd9
--- /dev/null
+++ b/fonts/FluentSystemIcons-Light.html
@@ -0,0 +1,1410 @@
+
+
+
+
+ FluentSystemIcons-Light
+
+
+
+
+
+
+
+ FluentSystemIcons-Light
+
+
+
+
+
+
+
+ ic_fluent_accessibility_checkmark_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_add_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_app_folder_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_archive_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_archive_settings_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_arrow_clockwise_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_arrow_down_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_arrow_forward_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_arrow_hook_up_left_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_arrow_redo_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_arrow_reply_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_arrow_reply_all_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_arrow_undo_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_attach_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_auto_fit_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_autocorrect_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_broom_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_calendar_3_day_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_calendar_clock_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_calendar_data_bar_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_calendar_day_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_calendar_edit_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_calendar_empty_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_calendar_ltr_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_calendar_month_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_calendar_multiple_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_calendar_pattern_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_calendar_reply_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_calendar_work_week_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_checkmark_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_checkmark_circle_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_classification_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_clipboard_paste_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_clock_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_clock_alarm_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_color_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_color_fill_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_comment_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_comment_add_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_compose_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_copy_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_crop_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_cursor_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_delete_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_dismiss_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_dismiss_circle_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_document_lightning_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_document_signature_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_door_arrow_right_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_edit_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_emoji_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_filter_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_flag_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_flag_off_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_flash_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_folder_arrow_right_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_folder_mail_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_hand_draw_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_image_add_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_image_alt_text_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_image_copy_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_image_reflection_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_image_shadow_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_immersive_reader_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_important_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_lasso_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_layout_column_two_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_layout_column_two_focus_left_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_layout_column_two_focus_right_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_layout_row_two_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_layout_row_two_focus_top_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_link_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_lock_closed_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_lock_open_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_mail_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_mail_alert_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_mail_arrow_clockwise_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_mail_arrow_double_back_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_mail_copy_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_mail_edit_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_mail_list_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_mail_multiple_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_mail_read_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_mail_rewind_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_mail_settings_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_mail_unread_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_mic_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_note_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_options_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_paint_brush_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_panel_left_default_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_panel_left_focus_right_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_pen_sparkle_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_people_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_people_add_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_people_community_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_people_list_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_people_settings_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_people_sync_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_person_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_person_add_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_person_available_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_person_feedback_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_person_prohibited_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_person_suport_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_phone_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_picture_in_picture_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_pin_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_pin_off_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_poll_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_print_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_question_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_read_aloud_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_rectangle_landscape_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_rotate_left_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_save_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_send_clock_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_settings_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_share_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_shield_error_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_signature_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_square_arrow_forward_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_stamp_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_star_add_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_star_arrow_right_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_table_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_table_cells_merge_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_table_cells_split_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_table_dismiss_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_table_move_above_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_table_move_below_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_table_move_left_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_table_move_right_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_table_settings_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_table_simple_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_tag_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_text_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_text_clear_formatting_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_text_collapse_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_text_density_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_text_edit_style_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_text_expand_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_textbox_align_top_left_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_translate_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_video_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_video_clip_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_window_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_wrench_screwdriver_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_zoom_in_32_light
+
+
+
+
+
+
+
+
+ ic_fluent_zoom_out_32_light
+
+
+
+
+
diff --git a/fonts/FluentSystemIcons-Light.json b/fonts/FluentSystemIcons-Light.json
new file mode 100644
index 0000000000..65ab122c0c
--- /dev/null
+++ b/fonts/FluentSystemIcons-Light.json
@@ -0,0 +1,152 @@
+{
+ "ic_fluent_accessibility_checkmark_32_light": 57344,
+ "ic_fluent_add_32_light": 57345,
+ "ic_fluent_app_folder_32_light": 57346,
+ "ic_fluent_archive_32_light": 57347,
+ "ic_fluent_archive_settings_32_light": 57348,
+ "ic_fluent_arrow_clockwise_32_light": 57349,
+ "ic_fluent_arrow_down_32_light": 57350,
+ "ic_fluent_arrow_forward_32_light": 57351,
+ "ic_fluent_arrow_hook_up_left_32_light": 57352,
+ "ic_fluent_arrow_redo_32_light": 57353,
+ "ic_fluent_arrow_reply_32_light": 57354,
+ "ic_fluent_arrow_reply_all_32_light": 57355,
+ "ic_fluent_arrow_undo_32_light": 57356,
+ "ic_fluent_attach_32_light": 57357,
+ "ic_fluent_auto_fit_32_light": 57358,
+ "ic_fluent_autocorrect_32_light": 57359,
+ "ic_fluent_broom_32_light": 57360,
+ "ic_fluent_calendar_3_day_32_light": 57361,
+ "ic_fluent_calendar_clock_32_light": 57362,
+ "ic_fluent_calendar_data_bar_32_light": 57363,
+ "ic_fluent_calendar_day_32_light": 57364,
+ "ic_fluent_calendar_edit_32_light": 57365,
+ "ic_fluent_calendar_empty_32_light": 57366,
+ "ic_fluent_calendar_ltr_32_light": 57367,
+ "ic_fluent_calendar_month_32_light": 57368,
+ "ic_fluent_calendar_multiple_32_light": 57369,
+ "ic_fluent_calendar_pattern_32_light": 57370,
+ "ic_fluent_calendar_reply_32_light": 57371,
+ "ic_fluent_calendar_work_week_32_light": 57372,
+ "ic_fluent_checkmark_32_light": 57373,
+ "ic_fluent_checkmark_circle_32_light": 57374,
+ "ic_fluent_classification_32_light": 57375,
+ "ic_fluent_clipboard_paste_32_light": 57376,
+ "ic_fluent_clock_32_light": 57377,
+ "ic_fluent_clock_alarm_32_light": 57378,
+ "ic_fluent_color_32_light": 57379,
+ "ic_fluent_color_fill_32_light": 57380,
+ "ic_fluent_comment_32_light": 57381,
+ "ic_fluent_comment_add_32_light": 57382,
+ "ic_fluent_compose_32_light": 57383,
+ "ic_fluent_copy_32_light": 57384,
+ "ic_fluent_crop_32_light": 57385,
+ "ic_fluent_cursor_32_light": 57386,
+ "ic_fluent_delete_32_light": 57387,
+ "ic_fluent_dismiss_32_light": 57388,
+ "ic_fluent_dismiss_circle_32_light": 57389,
+ "ic_fluent_document_lightning_32_light": 57390,
+ "ic_fluent_document_signature_32_light": 57391,
+ "ic_fluent_door_arrow_right_32_light": 57392,
+ "ic_fluent_edit_32_light": 57393,
+ "ic_fluent_emoji_32_light": 57394,
+ "ic_fluent_filter_32_light": 57395,
+ "ic_fluent_flag_32_light": 57396,
+ "ic_fluent_flag_off_32_light": 57397,
+ "ic_fluent_flash_32_light": 57398,
+ "ic_fluent_folder_arrow_right_32_light": 57399,
+ "ic_fluent_folder_mail_32_light": 57400,
+ "ic_fluent_hand_draw_32_light": 57401,
+ "ic_fluent_image_add_32_light": 57402,
+ "ic_fluent_image_alt_text_32_light": 57403,
+ "ic_fluent_image_copy_32_light": 57404,
+ "ic_fluent_image_reflection_32_light": 57405,
+ "ic_fluent_image_shadow_32_light": 57406,
+ "ic_fluent_immersive_reader_32_light": 57407,
+ "ic_fluent_important_32_light": 57408,
+ "ic_fluent_lasso_32_light": 57409,
+ "ic_fluent_layout_column_two_32_light": 57410,
+ "ic_fluent_layout_column_two_focus_left_32_light": 57411,
+ "ic_fluent_layout_column_two_focus_right_32_light": 57412,
+ "ic_fluent_layout_row_two_32_light": 57413,
+ "ic_fluent_layout_row_two_focus_top_32_light": 57414,
+ "ic_fluent_link_32_light": 57415,
+ "ic_fluent_lock_closed_32_light": 57416,
+ "ic_fluent_lock_open_32_light": 57417,
+ "ic_fluent_mail_32_light": 57418,
+ "ic_fluent_mail_alert_32_light": 57419,
+ "ic_fluent_mail_arrow_clockwise_32_light": 57420,
+ "ic_fluent_mail_arrow_double_back_32_light": 57421,
+ "ic_fluent_mail_copy_32_light": 57422,
+ "ic_fluent_mail_edit_32_light": 57423,
+ "ic_fluent_mail_list_32_light": 57424,
+ "ic_fluent_mail_multiple_32_light": 57425,
+ "ic_fluent_mail_read_32_light": 57426,
+ "ic_fluent_mail_rewind_32_light": 57427,
+ "ic_fluent_mail_settings_32_light": 57428,
+ "ic_fluent_mail_unread_32_light": 57429,
+ "ic_fluent_mic_32_light": 57430,
+ "ic_fluent_note_32_light": 57431,
+ "ic_fluent_options_32_light": 57432,
+ "ic_fluent_paint_brush_32_light": 57433,
+ "ic_fluent_panel_left_default_32_light": 57434,
+ "ic_fluent_panel_left_focus_right_32_light": 57435,
+ "ic_fluent_pen_sparkle_32_light": 57436,
+ "ic_fluent_people_32_light": 57437,
+ "ic_fluent_people_add_32_light": 57438,
+ "ic_fluent_people_community_32_light": 57439,
+ "ic_fluent_people_list_32_light": 57440,
+ "ic_fluent_people_settings_32_light": 57441,
+ "ic_fluent_people_sync_32_light": 57442,
+ "ic_fluent_person_32_light": 57443,
+ "ic_fluent_person_add_32_light": 57444,
+ "ic_fluent_person_available_32_light": 57445,
+ "ic_fluent_person_feedback_32_light": 57446,
+ "ic_fluent_person_prohibited_32_light": 57447,
+ "ic_fluent_person_suport_32_light": 57448,
+ "ic_fluent_phone_32_light": 57449,
+ "ic_fluent_picture_in_picture_32_light": 57450,
+ "ic_fluent_pin_32_light": 57451,
+ "ic_fluent_pin_off_32_light": 57452,
+ "ic_fluent_poll_32_light": 57453,
+ "ic_fluent_print_32_light": 57454,
+ "ic_fluent_question_32_light": 57455,
+ "ic_fluent_read_aloud_32_light": 57456,
+ "ic_fluent_rectangle_landscape_32_light": 57457,
+ "ic_fluent_rotate_left_32_light": 57458,
+ "ic_fluent_save_32_light": 57459,
+ "ic_fluent_send_clock_32_light": 57460,
+ "ic_fluent_settings_32_light": 57461,
+ "ic_fluent_share_32_light": 57462,
+ "ic_fluent_shield_error_32_light": 57463,
+ "ic_fluent_signature_32_light": 57464,
+ "ic_fluent_square_arrow_forward_32_light": 57465,
+ "ic_fluent_stamp_32_light": 57466,
+ "ic_fluent_star_add_32_light": 57467,
+ "ic_fluent_star_arrow_right_32_light": 57468,
+ "ic_fluent_table_32_light": 57469,
+ "ic_fluent_table_cells_merge_32_light": 57470,
+ "ic_fluent_table_cells_split_32_light": 57471,
+ "ic_fluent_table_dismiss_32_light": 57472,
+ "ic_fluent_table_move_above_32_light": 57473,
+ "ic_fluent_table_move_below_32_light": 57474,
+ "ic_fluent_table_move_left_32_light": 57475,
+ "ic_fluent_table_move_right_32_light": 57476,
+ "ic_fluent_table_settings_32_light": 57477,
+ "ic_fluent_table_simple_32_light": 57478,
+ "ic_fluent_tag_32_light": 57479,
+ "ic_fluent_text_32_light": 57480,
+ "ic_fluent_text_clear_formatting_32_light": 57481,
+ "ic_fluent_text_collapse_32_light": 57482,
+ "ic_fluent_text_density_32_light": 57483,
+ "ic_fluent_text_edit_style_32_light": 57484,
+ "ic_fluent_text_expand_32_light": 57485,
+ "ic_fluent_textbox_align_top_left_32_light": 57486,
+ "ic_fluent_translate_32_light": 57487,
+ "ic_fluent_video_32_light": 57488,
+ "ic_fluent_video_clip_32_light": 57489,
+ "ic_fluent_window_32_light": 57490,
+ "ic_fluent_wrench_screwdriver_32_light": 57491,
+ "ic_fluent_zoom_in_32_light": 57492,
+ "ic_fluent_zoom_out_32_light": 57493
+}
\ No newline at end of file
diff --git a/fonts/FluentSystemIcons-Light.ttf b/fonts/FluentSystemIcons-Light.ttf
new file mode 100644
index 0000000000..23c83dd6a4
Binary files /dev/null and b/fonts/FluentSystemIcons-Light.ttf differ
diff --git a/fonts/FluentSystemIcons-Light.woff b/fonts/FluentSystemIcons-Light.woff
new file mode 100644
index 0000000000..e8c1d2cec2
Binary files /dev/null and b/fonts/FluentSystemIcons-Light.woff differ
diff --git a/fonts/FluentSystemIcons-Light.woff2 b/fonts/FluentSystemIcons-Light.woff2
new file mode 100644
index 0000000000..ba8587cc59
Binary files /dev/null and b/fonts/FluentSystemIcons-Light.woff2 differ
diff --git a/importer/generate.js b/importer/generate.js
index e319b004df..32cdeeb8a9 100644
--- a/importer/generate.js
+++ b/importer/generate.js
@@ -82,6 +82,7 @@ function processFolder(srcPath, destPath, folderDepth) {
return;
} else if (!file.endsWith(ICON_OUTLINE_STYLE + "." + EXTENSION)
&& !file.endsWith(ICON_FILLED_STYLE + "." + EXTENSION)
+ && !file.endsWith(ICON_LIGHT_STYLE + "." + EXTENSION)
&& !(EXTENSION === "pdf" && file.endsWith(ICON_LIGHT_STYLE + "." + EXTENSION))
&& !file.endsWith(BRAND_MONO_STYLE + "." + EXTENSION)
&& !file.endsWith(BRAND_COLOR_STYLE + "." + EXTENSION)) {
diff --git a/importer/generateFont.js b/importer/generateFont.js
index d7f43387a5..a3e50b7016 100644
--- a/importer/generateFont.js
+++ b/importer/generateFont.js
@@ -31,7 +31,7 @@ if (!SRC_PATH) {
if (!DEST_PATH) {
throw new Error("Output destination folder not specified by --dest");
}
-if (!(ICON_TYPE === 'Filled' || ICON_TYPE === 'Regular' || ICON_TYPE === 'Resizable')) {
+if (!(ICON_TYPE === 'Filled' || ICON_TYPE === 'Regular' || ICON_TYPE === 'Resizable' || ICON_TYPE === 'Light')) {
throw new Error("Icon type not specified");
}
@@ -41,7 +41,7 @@ async function main() {
const stagingFolder = path.resolve(DEST_PATH, ICON_TYPE);
await mkdirp(stagingFolder);
- const svgFiles = await glob(path.resolve(SRC_PATH, `*_${ICON_TYPE === 'Resizable' ? '20_{filled,regular}' : ICON_TYPE.toLowerCase()}.svg`));
+ const svgFiles = await glob(path.resolve(SRC_PATH, `*_${ICON_TYPE === 'Resizable' ? '20_{filled,regular,light}' : ICON_TYPE.toLowerCase()}.svg`));
const icons = new Set(svgFiles.map(file => path.basename(file).replace(/\.svg$/, '')));
if (icons.size > MAX_PRIVATE_USE_CODEPOINTS) {
diff --git a/importer/package.json b/importer/package.json
index 24254ee1c8..55d2bd6c9f 100644
--- a/importer/package.json
+++ b/importer/package.json
@@ -21,11 +21,12 @@
"deploy:ios": "python3 process_ios_assets.py",
"generate:font-regular": "node generateFont.js --source=dist --dest=dist/fonts --iconType=Regular --codepoints=../fonts/FluentSystemIcons-Regular.json",
"generate:font-filled": "node generateFont.js --source=dist --dest=dist/fonts --iconType=Filled --codepoints=../fonts/FluentSystemIcons-Filled.json",
+ "generate:font-light": "node generateFont.js --source=dist --dest=dist/fonts --iconType=Light",
"generate:font-resizable": "node generateFont.js --source=dist --dest=dist/fonts --iconType=Resizable",
- "build:fonts": "npm run generate:svg && find ./dist -type f -name '*.svg' -exec svgo --config svgo_config.yml {} + && mkdir dist/fonts && npm run generate:font-regular && npm run generate:font-filled && npm run generate:font-resizable && replace '\\\\\\\\' '0x' dist/fonts/*.json",
+ "build:fonts": "npm run generate:svg && find ./dist -type f -name '*.svg' -exec svgo --config svgo_config.yml {} + && mkdir dist/fonts && npm run generate:font-regular && npm run generate:font-filled && npm run generate:font-light && npm run generate:font-resizable && replace '\\\\\\\\' '0x' dist/fonts/*.json",
"deploy:fonts": "npm run build:fonts && cp -a dist/fonts/* ../fonts && npm run clean",
- "generate:flutter-icon-lib-class": "node generate_flutter_lib_class.js --source=../fonts/FluentSystemIcons-Regular.json ../fonts/FluentSystemIcons-Filled.json --dest=dist/flutter",
- "generate:flutter-icon-demo-class": "node generate_flutter_demo_class.js --source=../fonts/FluentSystemIcons-Regular.json ../fonts/FluentSystemIcons-Filled.json --dest=dist/flutter",
+ "generate:flutter-icon-lib-class": "node generate_flutter_lib_class.js --source=../fonts/FluentSystemIcons-Regular.json ../fonts/FluentSystemIcons-Filled.json ../fonts/FluentSystemIcons-Light.json --dest=dist/flutter",
+ "generate:flutter-icon-demo-class": "node generate_flutter_demo_class.js --source=../fonts/FluentSystemIcons-Regular.json ../fonts/FluentSystemIcons-Filled.json ../fonts/FluentSystemIcons-Light.json --dest=dist/flutter",
"build:flutter": "npm run deploy:fonts && mkdir dist/flutter && npm run generate:flutter-icon-lib-class && npm run generate:flutter-icon-demo-class",
"deploy:flutter": "npm run build:flutter && cp ../fonts/*.ttf ../flutter/lib/fonts && cp dist/flutter/fluent_icons.dart ../flutter/lib/src/fluent_icons.dart && cp dist/flutter/sample_icons.dart ../flutter/example/lib/sample_icons.dart && npm run clean"
},
diff --git a/importer/rtlMetadata.js b/importer/rtlMetadata.js
index 51c35e1c08..f64ad8bf0d 100644
--- a/importer/rtlMetadata.js
+++ b/importer/rtlMetadata.js
@@ -1,7 +1,7 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
-const fs = require("fs");
+const fs = require("fs").promises;
const path = require("path");
const process = require("process");
const argv = require("yargs").boolean("selector").default("selector", false).boolean("keepdirs").default("keepdirs", false).argv;
@@ -18,92 +18,62 @@ if (!DEST_FILE) {
}
const destFolder = path.dirname(DEST_FILE);
-if (!fs.existsSync(destFolder)) {
- fs.mkdirSync(destFolder);
-}
+fs.mkdir(destFolder, { recursive: true });
+
+const result = {};
+async function processFolder(srcPath) {
+ const files = await fs.readdir(srcPath);
+ for (const file of files) {
+ const srcFile = path.join(srcPath, file);
+ const stat = await fs.stat(srcFile);
-processFolder(SRC_PATH);
-const result ={}
-function processFolder(srcPath) {
- fs.readdir(srcPath, function (err, files) {
- if (err) {
- console.error("Could not list the directory.", err);
- process.exit(1);
- }
-
- files.forEach(function (file, index) {
- var srcFile = path.join(srcPath, file);
-
- fs.stat(srcFile, function (error, stat) {
- if (error) {
- console.error("Error stating file.", error);
- return;
- }
-
- if (stat.isDirectory()) {
- processFolder(srcFile)
- return;
- } else if (file.startsWith('.')) {
- // Skip invisible files
- return;
- } else if (file.startsWith('_')) {
- // Skip invalid file names
- return;
- } else if (file === 'metadata.json') {
+ if (stat.isDirectory()) {
+ await processFolder(srcFile);
+ } else if (file.startsWith('.') || file.startsWith('_')) {
+ // Skip invisible and invalid files
+ continue;
+ } else if (file === 'metadata.json') {
// If it's a metadata file, read and parse its content
- fs.readFile(srcFile, 'utf8', (err, data) => {
- if (err) {
- console.error('Error reading metadata file:', err);
- return;
+ const data = await fs.readFile(srcFile, 'utf8');
+ try {
+ // Parse the json content
+ let metadata = JSON.parse(data);
+ let iconSize = metadata.size;
+ let iconName = metadata.name;
+ const directionType = metadata.directionType;
+ if (!directionType) { //ignore files with no directionType
+ continue;
}
- try {
- // Parse the json content
- let metadata = JSON.parse(data);
- let iconSize = metadata.size;
- let iconName = metadata.name;
- const directionType = metadata.directionType;
- if (!directionType) { //ignore files with no directionType
- return;
- }
- iconName = iconName.replace(/\s+/g, '') //remove space
- iconName = iconName.replace(iconName.substring(0, 1), iconName.substring(0, 1).toUpperCase()) // capitalize the first letter
-
- iconSize.forEach((size, i) => { //iterate through the size file and create entries for each icon file
- let tempName = iconName;
-
- tempName = tempName + size + "Filled";
- result[tempName] = directionType;
+ iconName = iconName.replace(/\s+/g, '') //remove space
+ iconName = iconName.replace(iconName.substring(0, 1), iconName.substring(0, 1).toUpperCase()) // capitalize the first letter
- tempName = iconName;
- tempName = tempName + size + "Regular";
- result[tempName] = directionType;
-
- })
- let tempName = iconName
- tempName = tempName + "Filled";
+ for (const size of iconSize) { //iterate through the size file and create entries for each icon file
+ let tempName = iconName + size + "Filled";
result[tempName] = directionType;
-
- tempName = iconName;
- tempName = tempName + "Regular";
+
+ tempName = iconName + size + "Regular";
result[tempName] = directionType;
-
- convertToJson(result)
-
- } catch (error) {
- console.error('Error parsing JSON in metadata file:', error);
}
- })
+ let tempName = iconName + "Filled";
+ result[tempName] = directionType;
+
+ tempName = iconName + "Regular";
+ result[tempName] = directionType;
+ } catch (error) {
+ console.error('Error parsing JSON in metadata file:', error);
}
- })
- })
- })
+ }
+ }
}
-function convertToJson(result) {
- const compiledJson = JSON.stringify(result, null, 2);
- fs.writeFile(DEST_FILE, compiledJson, 'utf8', (err) => {
- if (err) {
- console.error('Error writing to JSON fIle: ', err)
- }
+processFolder(SRC_PATH)
+ .then(() => {
+ const compiledJson = JSON.stringify(result, null, 2);
+ return fs.writeFile(DEST_FILE, compiledJson, 'utf8');
})
-}
+ .then(() => {
+ console.log('JSON file has been written successfully.');
+ })
+ .catch(err => {
+ console.error('Error processing folder:', err);
+ });
diff --git a/packages/icon-app/src/index.tsx b/packages/icon-app/src/index.tsx
index 0afdd37bd7..d40b847464 100644
--- a/packages/icon-app/src/index.tsx
+++ b/packages/icon-app/src/index.tsx
@@ -93,7 +93,7 @@ function IconCell({ FontIcon, SvgIcon, name }: { FontIcon: React.ComponentType,
}
function filterModuleImports(mod: Record): Record {
- const importsToFilter = new Set(['wrapIcon', 'bundleIcon', 'useIconState', 'iconFilledClassName', 'iconRegularClassName', '_esModule']);
+ const importsToFilter = new Set(['wrapIcon', 'bundleIcon', 'useIconState', 'iconFilledClassName', 'iconRegularClassName', 'iconLightClassName', '_esModule']);
const components: Record = {};
for (const [name, possibleComponent] of Object.entries(mod)) {
diff --git a/packages/react-icons-font-subsetting-webpack-plugin/src/index.ts b/packages/react-icons-font-subsetting-webpack-plugin/src/index.ts
index 8a82b9bb3f..07ddf9818d 100644
--- a/packages/react-icons-font-subsetting-webpack-plugin/src/index.ts
+++ b/packages/react-icons-font-subsetting-webpack-plugin/src/index.ts
@@ -9,6 +9,7 @@ const FONT_FILES_BASE_NAMES = [
"FluentSystemIcons-Filled",
"FluentSystemIcons-Resizable",
"FluentSystemIcons-Regular",
+ "FluentSystemIcons-Light"
];
const FONT_EXTENSIONS = [
diff --git a/packages/react-icons/convert-font.js b/packages/react-icons/convert-font.js
index 6c1a10ebca..5f737fc9f1 100644
--- a/packages/react-icons/convert-font.js
+++ b/packages/react-icons/convert-font.js
@@ -93,7 +93,7 @@ async function processFiles(src, dest) {
* @returns { Promise } - chunked icon files to insert
*/
async function processFolder(srcPath, codepointMapDestFolder, resizable) {
- var files = await glob(resizable ? 'FluentSystemIcons-Resizable.json' : 'FluentSystemIcons-{Filled,Regular}.json', { cwd: srcPath, absolute: true });
+ var files = await glob(resizable ? 'FluentSystemIcons-Resizable.json' : 'FluentSystemIcons-{Filled,Regular,Light}.json', { cwd: srcPath, absolute: true });
/** @type string[] */
const iconExports = [];
@@ -154,10 +154,11 @@ function generateReactIconEntries(iconEntries, resizable) {
for (const [iconName, codepoint] of Object.entries(iconEntries)) {
let destFilename = getReactIconNameFromGlyphName(iconName, resizable);
var flipInRtl = metadata[destFilename] === 'mirror';
+ let iconStyle = /filled$/i.test(iconName) ? 0 /* Filled */ : /regular$/i.test(iconName) ? 1 /* Regular */ : 3 /* Light */
var jsCode = `export const ${destFilename} = /*#__PURE__*/createFluentFontIcon(${JSON.stringify(destFilename)
}, ${JSON.stringify(String.fromCodePoint(codepoint))
- }, ${resizable ? 2 /* Resizable */ : /filled$/i.test(iconName) ? 0 /* Filled */ : 1 /* Regular */
- }, ${resizable ? undefined : ` ${/(?<=_)\d+(?=_filled|_regular)/.exec(iconName)?.[0]}`
+ }, ${resizable ? 2 /* Resizable */ : iconStyle
+ }, ${resizable ? undefined : ` ${/(?<=_)\d+(?=_filled|_regular|_light)/.exec(iconName)?.[0]}`
}${flipInRtl ? `, { flipInRtl: true }` : ''});`;
iconExports.push(jsCode);
diff --git a/packages/react-icons/package.json b/packages/react-icons/package.json
index 7f4334a216..c920067fa9 100644
--- a/packages/react-icons/package.json
+++ b/packages/react-icons/package.json
@@ -14,17 +14,19 @@
"scripts": {
"clean": "find ./src -type f ! -name \"wrapIcon.tsx\" -name \"*.tsx\" -delete",
"clean:svg": "rm -rf ./intermediate",
+ "clean:gitignore": "git clean -fdX",
"copy": "node ../../importer/generate.js --source=../../assets --dest=./intermediate --extension=svg --target=react",
"copy:font-files": "cpy './src/utils/fonts/*.{ttf,woff,woff2,json}' ./lib/utils/fonts/. && cpy './src/utils/fonts/*.{ttf,woff,woff2,json}' ./lib-cjs/utils/fonts/.",
"convert:svg": "node convert.js --source=./intermediate --dest=./src --rtl=./intermediate/rtl.json",
"convert:fonts": "node convert-font.js --source=./src/utils/fonts --dest=./src/fonts --codepointDest=./src/utils/fonts --rtl=./intermediate/rtl.json",
"generate:font-regular": "node ../../importer/generateFont.js --source=intermediate --dest=src/utils/fonts --iconType=Regular --codepoints=../../fonts/FluentSystemIcons-Regular.json",
"generate:font-filled": "node ../../importer/generateFont.js --source=intermediate --dest=src/utils/fonts --iconType=Filled --codepoints=../../fonts/FluentSystemIcons-Filled.json",
+ "generate:font-light": "node ../../importer/generateFont.js --source=intermediate --dest=src/utils/fonts --iconType=Light",
"generate:font-resizable": "node ../../importer/generateFont.js --source=intermediate --dest=src/utils/fonts --iconType=Resizable",
- "generate:font": "npm run generate:font-regular && npm run generate:font-filled && npm run generate:font-resizable",
+ "generate:font": "npm run generate:font-regular && npm run generate:font-filled && npm run generate:font-light && npm run generate:font-resizable",
"generate:rtl": "node ../../importer/rtlMetadata.js --source=../../assets --dest=./intermediate/rtl.json",
"rollup": "node ./generateRollup.js",
- "optimize": "svgo --config svgo.config.js --folder=./intermediate --precision=2",
+ "optimize": "svgo --config svgo.config.js --folder=./intermediate --precision=2 --quiet",
"unfill": "find ./intermediate -type f -name \"*.svg\" -exec sed -i.bak 's/fill=\"none\"//g' {} \\; && find ./intermediate -type f -name \"*.bak\" -delete",
"build": "npm run copy && npm run generate:font && npm run generate:rtl && npm run optimize && npm run unfill && npm run convert:svg && npm run convert:fonts && npm run clean:svg && npm run build:esm && npm run build:cjs && npm run copy:font-files",
"build:svg": "npm run copy && npm run generate:rtl && npm run optimize && npm run unfill && npm run convert:svg && npm run clean:svg && npm run build:esm && npm run build:cjs",
diff --git a/packages/react-icons/src/utils/bundleIcon.tsx b/packages/react-icons/src/utils/bundleIcon.tsx
index d471809804..39989c70f7 100644
--- a/packages/react-icons/src/utils/bundleIcon.tsx
+++ b/packages/react-icons/src/utils/bundleIcon.tsx
@@ -1,5 +1,5 @@
import * as React from "react";
-import { iconFilledClassName, iconRegularClassName } from "./constants";
+import { iconFilledClassName, iconRegularClassName, iconLightClassName } from "./constants";
import { FluentIconsProps } from "./FluentIconsProps.types";
import { makeStyles, mergeClasses } from "@griffel/react";
import { FluentIcon } from "./createFluentIcon";
@@ -9,7 +9,7 @@ const useBundledIconStyles = makeStyles({
visible: { display: "inline" }
});
-const bundleIcon = (FilledIcon: FluentIcon, RegularIcon: FluentIcon) => {
+const bundleIcon = (FilledIcon: FluentIcon, RegularIcon: FluentIcon, LightIcon: FluentIcon) => {
const Component: FluentIcon = (props) => {
const { className, filled, ...rest } = props;
const styles = useBundledIconStyles();
@@ -33,6 +33,15 @@ const bundleIcon = (FilledIcon: FluentIcon, RegularIcon: FluentIcon) => {
className
)}
/>
+
)
}
diff --git a/packages/react-icons/src/utils/constants.tsx b/packages/react-icons/src/utils/constants.tsx
index c13595a351..2d4d22d75a 100644
--- a/packages/react-icons/src/utils/constants.tsx
+++ b/packages/react-icons/src/utils/constants.tsx
@@ -1,2 +1,3 @@
export const iconFilledClassName = "fui-Icon-filled";
-export const iconRegularClassName = "fui-Icon-regular";
\ No newline at end of file
+export const iconRegularClassName = "fui-Icon-regular";
+export const iconLightClassName = "fui-Icon-light";
\ No newline at end of file
diff --git a/packages/react-icons/src/utils/fonts/createFluentFontIcon.tsx b/packages/react-icons/src/utils/fonts/createFluentFontIcon.tsx
index 20becf939d..894fc1c6c1 100644
--- a/packages/react-icons/src/utils/fonts/createFluentFontIcon.tsx
+++ b/packages/react-icons/src/utils/fonts/createFluentFontIcon.tsx
@@ -11,6 +11,10 @@ import fontRegularTtf from './FluentSystemIcons-Regular.ttf';
import fontRegularWoff from './FluentSystemIcons-Regular.woff';
import fontRegularWoff2 from './FluentSystemIcons-Regular.woff2';
+import fontLightTtf from './FluentSystemIcons-Light.ttf';
+import fontLightWoff from './FluentSystemIcons-Light.woff';
+import fontLightWoff2 from './FluentSystemIcons-Light.woff2';
+
import fontOneSizeTtf from './FluentSystemIcons-Resizable.ttf';
import fontOneSizeWoff from './FluentSystemIcons-Resizable.woff';
import fontOneSizeWoff2 from './FluentSystemIcons-Resizable.woff2';
@@ -18,7 +22,8 @@ import fontOneSizeWoff2 from './FluentSystemIcons-Resizable.woff2';
export const enum FontFile {
Filled = 0,
Regular = 1,
- Resizable = 2
+ Resizable = 2,
+ Light = 3
}
const FONT_FAMILY_MAP = {
@@ -42,6 +47,14 @@ const useStaticStyles = makeStaticStyles(`
url(${JSON.stringify(fontRegularWoff)}) format("woff"),
url(${JSON.stringify(fontRegularTtf)}) format("truetype");
}
+
+@font-face {
+ font-family: ${FONT_FAMILY_MAP[FontFile.Light]};
+ src: url(${JSON.stringify(fontLightWoff2)}) format("woff2"),
+ url(${JSON.stringify(fontLightWoff)}) format("woff"),
+ url(${JSON.stringify(fontLightTtf)}) format("truetype");
+}
+
@font-face {
font-family: ${FONT_FAMILY_MAP[FontFile.Resizable]};
font-display: "block";
@@ -70,6 +83,9 @@ const useRootStyles = makeStyles({
[FontFile.Resizable]: {
fontFamily: 'FluentSystemIcons',
},
+ [FontFile.Light]: {
+ fontFamily: 'FluentSystemIconsLight',
+ }
});
export type CreateFluentFontIconOptions = {
diff --git a/packages/react-native-icons/convert-font.js b/packages/react-native-icons/convert-font.js
index c67b3a04fa..69c77a4f4a 100644
--- a/packages/react-native-icons/convert-font.js
+++ b/packages/react-native-icons/convert-font.js
@@ -79,7 +79,7 @@ async function processFiles(src, dest) {
* @returns { Promise } - chunked icon files to insert
*/
async function processFolder(srcPath, codepointMapDestFolder, resizable) {
- var files = await glob(resizable ? 'FluentSystemIcons-Resizable.json' : 'FluentSystemIcons-{Filled,Regular}.json', { cwd: srcPath, absolute: true });
+ var files = await glob(resizable ? 'FluentSystemIcons-Resizable.json' : 'FluentSystemIcons-{Filled,Regular,Light}.json', { cwd: srcPath, absolute: true });
/** @type string[] */
const iconExports = [];
@@ -139,10 +139,12 @@ function generateReactIconEntries(iconEntries, resizable) {
for (const [iconName, codepoint] of Object.entries(iconEntries)) {
let destFilename = getReactIconNameFromGlyphName(iconName, resizable);
+ let iconStyle = /filled$/i.test(iconName) ? 0 /* Filled */ : /regular$/i.test(iconName) ? 1 /* Regular */ : 3 /* Light */
+
var jsCode = `export const ${destFilename} = /*#__PURE__*/createFluentFontIcon(${JSON.stringify(destFilename)
}, ${JSON.stringify(String.fromCodePoint(codepoint))
- }, ${resizable ? 2 /* Resizable */ : /filled$/i.test(iconName) ? 0 /* Filled */ : 1 /* Regular */
- }${resizable ? '' : `, ${/(?<=_)\d+(?=_filled|_regular)/.exec(iconName)[0]}`
+ }, ${resizable ? 2 /* Resizable */ : iconStyle
+ }${resizable ? '' : `, ${/(?<=_)\d+(?=_filled|_regular|_light)/.exec(iconName)[0]}`
});`;
iconExports.push(jsCode);
diff --git a/packages/react-native-icons/src/utils/constants.tsx b/packages/react-native-icons/src/utils/constants.tsx
index c13595a351..2d4d22d75a 100644
--- a/packages/react-native-icons/src/utils/constants.tsx
+++ b/packages/react-native-icons/src/utils/constants.tsx
@@ -1,2 +1,3 @@
export const iconFilledClassName = "fui-Icon-filled";
-export const iconRegularClassName = "fui-Icon-regular";
\ No newline at end of file
+export const iconRegularClassName = "fui-Icon-regular";
+export const iconLightClassName = "fui-Icon-light";
\ No newline at end of file
diff --git a/packages/react-native-icons/src/utils/fonts/createFluentFontIcon.tsx b/packages/react-native-icons/src/utils/fonts/createFluentFontIcon.tsx
index 078013631a..c41ce30bda 100644
--- a/packages/react-native-icons/src/utils/fonts/createFluentFontIcon.tsx
+++ b/packages/react-native-icons/src/utils/fonts/createFluentFontIcon.tsx
@@ -11,6 +11,10 @@ import fontRegularTtf from './FluentSystemIcons-Regular.ttf';
import fontRegularWoff from './FluentSystemIcons-Regular.woff';
import fontRegularWoff2 from './FluentSystemIcons-Regular.woff2';
+import fontLightTtf from './FluentSystemIcons-Light.ttf';
+import fontLightWoff from './FluentSystemIcons-Light.woff';
+import fontLightWoff2 from './FluentSystemIcons-Light.woff2';
+
import fontOneSizeTtf from './FluentSystemIcons-Resizable.ttf';
import fontOneSizeWoff from './FluentSystemIcons-Resizable.woff';
import fontOneSizeWoff2 from './FluentSystemIcons-Resizable.woff2';
@@ -18,7 +22,8 @@ import fontOneSizeWoff2 from './FluentSystemIcons-Resizable.woff2';
export const enum FontFile {
Filled = 0,
Regular = 1,
- Resizable = 2
+ Resizable = 2,
+ Light = 3
}
const FONT_FAMILY_MAP = {
@@ -40,6 +45,14 @@ const useStaticStyles = makeStaticStyles(`
url(${JSON.stringify(fontRegularWoff)}) format("woff"),
url(${JSON.stringify(fontRegularTtf)}) format("truetype");
}
+
+@font-face {
+ font-family: ${FONT_FAMILY_MAP[FontFile.Light]};
+ src: url(${JSON.stringify(fontLightWoff2)}) format("woff2"),
+ url(${JSON.stringify(fontLightWoff)}) format("woff"),
+ url(${JSON.stringify(fontLightTtf)}) format("truetype");
+}
+
@font-face {
font-family: ${FONT_FAMILY_MAP[FontFile.Resizable]};
src: url(${JSON.stringify(fontOneSizeWoff2)}) format("woff2"),
@@ -67,6 +80,9 @@ const useRootStyles = makeStyles({
[FontFile.Resizable]: {
fontFamily: 'FluentSystemIcons',
},
+ [FontFile.Light]: {
+ fontFamily: 'FluentSystemIconsLight',
+ }
});
export function createFluentFontIcon(displayName: string, codepoint: string, font: FontFile, fontSize?: number): React.FC>> & { codepoint: string} {