Merge branch 'release/v1.7.1'
This commit is contained in:
485
.editorconfig
Normal file
485
.editorconfig
Normal file
@@ -0,0 +1,485 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = crlf
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
insert_final_newline = false
|
||||
max_line_length = 120
|
||||
tab_width = 4
|
||||
ij_continuation_indent_size = 4
|
||||
ij_formatter_off_tag = @formatter:off
|
||||
ij_formatter_on_tag = @formatter:on
|
||||
ij_formatter_tags_enabled = true
|
||||
ij_smart_tabs = false
|
||||
ij_visual_guides = none
|
||||
ij_wrap_on_typing = false
|
||||
|
||||
[*.css]
|
||||
ij_css_align_closing_brace_with_properties = false
|
||||
ij_css_blank_lines_around_nested_selector = 1
|
||||
ij_css_blank_lines_between_blocks = 1
|
||||
ij_css_block_comment_add_space = false
|
||||
ij_css_brace_placement = end_of_line
|
||||
ij_css_enforce_quotes_on_format = false
|
||||
ij_css_hex_color_long_format = false
|
||||
ij_css_hex_color_lower_case = false
|
||||
ij_css_hex_color_short_format = false
|
||||
ij_css_hex_color_upper_case = false
|
||||
ij_css_keep_blank_lines_in_code = 2
|
||||
ij_css_keep_indents_on_empty_lines = false
|
||||
ij_css_keep_single_line_blocks = false
|
||||
ij_css_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow
|
||||
ij_css_space_after_colon = true
|
||||
ij_css_space_before_opening_brace = true
|
||||
ij_css_use_double_quotes = true
|
||||
ij_css_value_alignment = do_not_align
|
||||
|
||||
[*.sass]
|
||||
indent_size = 2
|
||||
ij_sass_align_closing_brace_with_properties = false
|
||||
ij_sass_blank_lines_around_nested_selector = 1
|
||||
ij_sass_blank_lines_between_blocks = 1
|
||||
ij_sass_brace_placement = 0
|
||||
ij_sass_enforce_quotes_on_format = false
|
||||
ij_sass_hex_color_long_format = false
|
||||
ij_sass_hex_color_lower_case = false
|
||||
ij_sass_hex_color_short_format = false
|
||||
ij_sass_hex_color_upper_case = false
|
||||
ij_sass_keep_blank_lines_in_code = 2
|
||||
ij_sass_keep_indents_on_empty_lines = false
|
||||
ij_sass_keep_single_line_blocks = false
|
||||
ij_sass_line_comment_add_space = false
|
||||
ij_sass_line_comment_at_first_column = false
|
||||
ij_sass_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow
|
||||
ij_sass_space_after_colon = true
|
||||
ij_sass_space_before_opening_brace = true
|
||||
ij_sass_use_double_quotes = true
|
||||
ij_sass_value_alignment = 0
|
||||
|
||||
[*.scss]
|
||||
indent_size = 2
|
||||
ij_scss_align_closing_brace_with_properties = false
|
||||
ij_scss_blank_lines_around_nested_selector = 1
|
||||
ij_scss_blank_lines_between_blocks = 1
|
||||
ij_scss_block_comment_add_space = false
|
||||
ij_scss_brace_placement = 0
|
||||
ij_scss_enforce_quotes_on_format = false
|
||||
ij_scss_hex_color_long_format = false
|
||||
ij_scss_hex_color_lower_case = false
|
||||
ij_scss_hex_color_short_format = false
|
||||
ij_scss_hex_color_upper_case = false
|
||||
ij_scss_keep_blank_lines_in_code = 2
|
||||
ij_scss_keep_indents_on_empty_lines = false
|
||||
ij_scss_keep_single_line_blocks = false
|
||||
ij_scss_line_comment_add_space = false
|
||||
ij_scss_line_comment_at_first_column = false
|
||||
ij_scss_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow
|
||||
ij_scss_space_after_colon = true
|
||||
ij_scss_space_before_opening_brace = true
|
||||
ij_scss_use_double_quotes = true
|
||||
ij_scss_value_alignment = 0
|
||||
|
||||
[{*.ats,*.cts,*.mts,*.ts}]
|
||||
ij_continuation_indent_size = 4
|
||||
ij_typescript_align_imports = false
|
||||
ij_typescript_align_multiline_array_initializer_expression = false
|
||||
ij_typescript_align_multiline_binary_operation = false
|
||||
ij_typescript_align_multiline_chained_methods = false
|
||||
ij_typescript_align_multiline_extends_list = false
|
||||
ij_typescript_align_multiline_for = true
|
||||
ij_typescript_align_multiline_parameters = true
|
||||
ij_typescript_align_multiline_parameters_in_calls = false
|
||||
ij_typescript_align_multiline_ternary_operation = false
|
||||
ij_typescript_align_object_properties = 0
|
||||
ij_typescript_align_union_types = false
|
||||
ij_typescript_align_var_statements = 0
|
||||
ij_typescript_array_initializer_new_line_after_left_brace = false
|
||||
ij_typescript_array_initializer_right_brace_on_new_line = false
|
||||
ij_typescript_array_initializer_wrap = off
|
||||
ij_typescript_assignment_wrap = off
|
||||
ij_typescript_binary_operation_sign_on_next_line = false
|
||||
ij_typescript_binary_operation_wrap = off
|
||||
ij_typescript_blacklist_imports = rxjs/Rx, node_modules/**, **/node_modules/**, @angular/material, @angular/material/typings/**
|
||||
ij_typescript_blank_lines_after_imports = 1
|
||||
ij_typescript_blank_lines_around_class = 1
|
||||
ij_typescript_blank_lines_around_field = 0
|
||||
ij_typescript_blank_lines_around_field_in_interface = 0
|
||||
ij_typescript_blank_lines_around_function = 1
|
||||
ij_typescript_blank_lines_around_method = 1
|
||||
ij_typescript_blank_lines_around_method_in_interface = 1
|
||||
ij_typescript_block_brace_style = end_of_line
|
||||
ij_typescript_block_comment_add_space = false
|
||||
ij_typescript_block_comment_at_first_column = true
|
||||
ij_typescript_call_parameters_new_line_after_left_paren = false
|
||||
ij_typescript_call_parameters_right_paren_on_new_line = false
|
||||
ij_typescript_call_parameters_wrap = off
|
||||
ij_typescript_catch_on_new_line = false
|
||||
ij_typescript_chained_call_dot_on_new_line = true
|
||||
ij_typescript_class_brace_style = end_of_line
|
||||
ij_typescript_comma_on_new_line = false
|
||||
ij_typescript_do_while_brace_force = never
|
||||
ij_typescript_else_on_new_line = false
|
||||
ij_typescript_enforce_trailing_comma = keep
|
||||
ij_typescript_enum_constants_wrap = on_every_item
|
||||
ij_typescript_extends_keyword_wrap = off
|
||||
ij_typescript_extends_list_wrap = off
|
||||
ij_typescript_field_prefix = _
|
||||
ij_typescript_file_name_style = relaxed
|
||||
ij_typescript_finally_on_new_line = false
|
||||
ij_typescript_for_brace_force = never
|
||||
ij_typescript_for_statement_new_line_after_left_paren = false
|
||||
ij_typescript_for_statement_right_paren_on_new_line = false
|
||||
ij_typescript_for_statement_wrap = off
|
||||
ij_typescript_force_quote_style = false
|
||||
ij_typescript_force_semicolon_style = false
|
||||
ij_typescript_function_expression_brace_style = end_of_line
|
||||
ij_typescript_if_brace_force = never
|
||||
ij_typescript_import_merge_members = global
|
||||
ij_typescript_import_prefer_absolute_path = global
|
||||
ij_typescript_import_sort_members = true
|
||||
ij_typescript_import_sort_module_name = false
|
||||
ij_typescript_import_use_node_resolution = true
|
||||
ij_typescript_imports_wrap = on_every_item
|
||||
ij_typescript_indent_case_from_switch = true
|
||||
ij_typescript_indent_chained_calls = true
|
||||
ij_typescript_indent_package_children = 0
|
||||
ij_typescript_jsdoc_include_types = false
|
||||
ij_typescript_jsx_attribute_value = braces
|
||||
ij_typescript_keep_blank_lines_in_code = 2
|
||||
ij_typescript_keep_first_column_comment = true
|
||||
ij_typescript_keep_indents_on_empty_lines = false
|
||||
ij_typescript_keep_line_breaks = true
|
||||
ij_typescript_keep_simple_blocks_in_one_line = false
|
||||
ij_typescript_keep_simple_methods_in_one_line = false
|
||||
ij_typescript_line_comment_add_space = true
|
||||
ij_typescript_line_comment_at_first_column = false
|
||||
ij_typescript_method_brace_style = end_of_line
|
||||
ij_typescript_method_call_chain_wrap = off
|
||||
ij_typescript_method_parameters_new_line_after_left_paren = false
|
||||
ij_typescript_method_parameters_right_paren_on_new_line = false
|
||||
ij_typescript_method_parameters_wrap = off
|
||||
ij_typescript_object_literal_wrap = on_every_item
|
||||
ij_typescript_object_types_wrap = on_every_item
|
||||
ij_typescript_parentheses_expression_new_line_after_left_paren = false
|
||||
ij_typescript_parentheses_expression_right_paren_on_new_line = false
|
||||
ij_typescript_place_assignment_sign_on_next_line = false
|
||||
ij_typescript_prefer_as_type_cast = false
|
||||
ij_typescript_prefer_explicit_types_function_expression_returns = false
|
||||
ij_typescript_prefer_explicit_types_function_returns = false
|
||||
ij_typescript_prefer_explicit_types_vars_fields = false
|
||||
ij_typescript_prefer_parameters_wrap = false
|
||||
ij_typescript_reformat_c_style_comments = false
|
||||
ij_typescript_space_after_colon = true
|
||||
ij_typescript_space_after_comma = true
|
||||
ij_typescript_space_after_dots_in_rest_parameter = false
|
||||
ij_typescript_space_after_generator_mult = true
|
||||
ij_typescript_space_after_property_colon = true
|
||||
ij_typescript_space_after_quest = true
|
||||
ij_typescript_space_after_type_colon = true
|
||||
ij_typescript_space_after_unary_not = false
|
||||
ij_typescript_space_before_async_arrow_lparen = true
|
||||
ij_typescript_space_before_catch_keyword = true
|
||||
ij_typescript_space_before_catch_left_brace = true
|
||||
ij_typescript_space_before_catch_parentheses = true
|
||||
ij_typescript_space_before_class_lbrace = true
|
||||
ij_typescript_space_before_class_left_brace = true
|
||||
ij_typescript_space_before_colon = true
|
||||
ij_typescript_space_before_comma = false
|
||||
ij_typescript_space_before_do_left_brace = true
|
||||
ij_typescript_space_before_else_keyword = true
|
||||
ij_typescript_space_before_else_left_brace = true
|
||||
ij_typescript_space_before_finally_keyword = true
|
||||
ij_typescript_space_before_finally_left_brace = true
|
||||
ij_typescript_space_before_for_left_brace = true
|
||||
ij_typescript_space_before_for_parentheses = true
|
||||
ij_typescript_space_before_for_semicolon = false
|
||||
ij_typescript_space_before_function_left_parenth = true
|
||||
ij_typescript_space_before_generator_mult = false
|
||||
ij_typescript_space_before_if_left_brace = true
|
||||
ij_typescript_space_before_if_parentheses = true
|
||||
ij_typescript_space_before_method_call_parentheses = false
|
||||
ij_typescript_space_before_method_left_brace = true
|
||||
ij_typescript_space_before_method_parentheses = false
|
||||
ij_typescript_space_before_property_colon = false
|
||||
ij_typescript_space_before_quest = true
|
||||
ij_typescript_space_before_switch_left_brace = true
|
||||
ij_typescript_space_before_switch_parentheses = true
|
||||
ij_typescript_space_before_try_left_brace = true
|
||||
ij_typescript_space_before_type_colon = false
|
||||
ij_typescript_space_before_unary_not = false
|
||||
ij_typescript_space_before_while_keyword = true
|
||||
ij_typescript_space_before_while_left_brace = true
|
||||
ij_typescript_space_before_while_parentheses = true
|
||||
ij_typescript_spaces_around_additive_operators = true
|
||||
ij_typescript_spaces_around_arrow_function_operator = true
|
||||
ij_typescript_spaces_around_assignment_operators = true
|
||||
ij_typescript_spaces_around_bitwise_operators = true
|
||||
ij_typescript_spaces_around_equality_operators = true
|
||||
ij_typescript_spaces_around_logical_operators = true
|
||||
ij_typescript_spaces_around_multiplicative_operators = true
|
||||
ij_typescript_spaces_around_relational_operators = true
|
||||
ij_typescript_spaces_around_shift_operators = true
|
||||
ij_typescript_spaces_around_unary_operator = false
|
||||
ij_typescript_spaces_within_array_initializer_brackets = false
|
||||
ij_typescript_spaces_within_brackets = false
|
||||
ij_typescript_spaces_within_catch_parentheses = false
|
||||
ij_typescript_spaces_within_for_parentheses = false
|
||||
ij_typescript_spaces_within_if_parentheses = false
|
||||
ij_typescript_spaces_within_imports = false
|
||||
ij_typescript_spaces_within_interpolation_expressions = false
|
||||
ij_typescript_spaces_within_method_call_parentheses = false
|
||||
ij_typescript_spaces_within_method_parentheses = false
|
||||
ij_typescript_spaces_within_object_literal_braces = false
|
||||
ij_typescript_spaces_within_object_type_braces = true
|
||||
ij_typescript_spaces_within_parentheses = false
|
||||
ij_typescript_spaces_within_switch_parentheses = false
|
||||
ij_typescript_spaces_within_type_assertion = false
|
||||
ij_typescript_spaces_within_union_types = true
|
||||
ij_typescript_spaces_within_while_parentheses = false
|
||||
ij_typescript_special_else_if_treatment = true
|
||||
ij_typescript_ternary_operation_signs_on_next_line = false
|
||||
ij_typescript_ternary_operation_wrap = off
|
||||
ij_typescript_union_types_wrap = on_every_item
|
||||
ij_typescript_use_chained_calls_group_indents = false
|
||||
ij_typescript_use_double_quotes = true
|
||||
ij_typescript_use_explicit_js_extension = auto
|
||||
ij_typescript_use_path_mapping = always
|
||||
ij_typescript_use_public_modifier = false
|
||||
ij_typescript_use_semicolon_after_statement = true
|
||||
ij_typescript_var_declaration_wrap = normal
|
||||
ij_typescript_while_brace_force = never
|
||||
ij_typescript_while_on_new_line = false
|
||||
ij_typescript_wrap_comments = false
|
||||
|
||||
[{*.cjs,*.js}]
|
||||
ij_continuation_indent_size = 4
|
||||
ij_javascript_align_imports = false
|
||||
ij_javascript_align_multiline_array_initializer_expression = false
|
||||
ij_javascript_align_multiline_binary_operation = false
|
||||
ij_javascript_align_multiline_chained_methods = false
|
||||
ij_javascript_align_multiline_extends_list = false
|
||||
ij_javascript_align_multiline_for = true
|
||||
ij_javascript_align_multiline_parameters = true
|
||||
ij_javascript_align_multiline_parameters_in_calls = false
|
||||
ij_javascript_align_multiline_ternary_operation = false
|
||||
ij_javascript_align_object_properties = 0
|
||||
ij_javascript_align_union_types = false
|
||||
ij_javascript_align_var_statements = 0
|
||||
ij_javascript_array_initializer_new_line_after_left_brace = false
|
||||
ij_javascript_array_initializer_right_brace_on_new_line = false
|
||||
ij_javascript_array_initializer_wrap = off
|
||||
ij_javascript_assignment_wrap = off
|
||||
ij_javascript_binary_operation_sign_on_next_line = false
|
||||
ij_javascript_binary_operation_wrap = off
|
||||
ij_javascript_blacklist_imports = rxjs/Rx, node_modules/**, **/node_modules/**, @angular/material, @angular/material/typings/**
|
||||
ij_javascript_blank_lines_after_imports = 1
|
||||
ij_javascript_blank_lines_around_class = 1
|
||||
ij_javascript_blank_lines_around_field = 0
|
||||
ij_javascript_blank_lines_around_function = 1
|
||||
ij_javascript_blank_lines_around_method = 1
|
||||
ij_javascript_block_brace_style = end_of_line
|
||||
ij_javascript_block_comment_add_space = false
|
||||
ij_javascript_block_comment_at_first_column = true
|
||||
ij_javascript_call_parameters_new_line_after_left_paren = false
|
||||
ij_javascript_call_parameters_right_paren_on_new_line = false
|
||||
ij_javascript_call_parameters_wrap = off
|
||||
ij_javascript_catch_on_new_line = false
|
||||
ij_javascript_chained_call_dot_on_new_line = true
|
||||
ij_javascript_class_brace_style = end_of_line
|
||||
ij_javascript_comma_on_new_line = false
|
||||
ij_javascript_do_while_brace_force = never
|
||||
ij_javascript_else_on_new_line = false
|
||||
ij_javascript_enforce_trailing_comma = keep
|
||||
ij_javascript_extends_keyword_wrap = off
|
||||
ij_javascript_extends_list_wrap = off
|
||||
ij_javascript_field_prefix = _
|
||||
ij_javascript_file_name_style = relaxed
|
||||
ij_javascript_finally_on_new_line = false
|
||||
ij_javascript_for_brace_force = never
|
||||
ij_javascript_for_statement_new_line_after_left_paren = false
|
||||
ij_javascript_for_statement_right_paren_on_new_line = false
|
||||
ij_javascript_for_statement_wrap = off
|
||||
ij_javascript_force_quote_style = false
|
||||
ij_javascript_force_semicolon_style = false
|
||||
ij_javascript_function_expression_brace_style = end_of_line
|
||||
ij_javascript_if_brace_force = never
|
||||
ij_javascript_import_merge_members = global
|
||||
ij_javascript_import_prefer_absolute_path = global
|
||||
ij_javascript_import_sort_members = true
|
||||
ij_javascript_import_sort_module_name = false
|
||||
ij_javascript_import_use_node_resolution = true
|
||||
ij_javascript_imports_wrap = on_every_item
|
||||
ij_javascript_indent_case_from_switch = true
|
||||
ij_javascript_indent_chained_calls = true
|
||||
ij_javascript_indent_package_children = 0
|
||||
ij_javascript_jsx_attribute_value = braces
|
||||
ij_javascript_keep_blank_lines_in_code = 2
|
||||
ij_javascript_keep_first_column_comment = true
|
||||
ij_javascript_keep_indents_on_empty_lines = false
|
||||
ij_javascript_keep_line_breaks = true
|
||||
ij_javascript_keep_simple_blocks_in_one_line = false
|
||||
ij_javascript_keep_simple_methods_in_one_line = false
|
||||
ij_javascript_line_comment_add_space = true
|
||||
ij_javascript_line_comment_at_first_column = false
|
||||
ij_javascript_method_brace_style = end_of_line
|
||||
ij_javascript_method_call_chain_wrap = off
|
||||
ij_javascript_method_parameters_new_line_after_left_paren = false
|
||||
ij_javascript_method_parameters_right_paren_on_new_line = false
|
||||
ij_javascript_method_parameters_wrap = off
|
||||
ij_javascript_object_literal_wrap = on_every_item
|
||||
ij_javascript_object_types_wrap = on_every_item
|
||||
ij_javascript_parentheses_expression_new_line_after_left_paren = false
|
||||
ij_javascript_parentheses_expression_right_paren_on_new_line = false
|
||||
ij_javascript_place_assignment_sign_on_next_line = false
|
||||
ij_javascript_prefer_as_type_cast = false
|
||||
ij_javascript_prefer_explicit_types_function_expression_returns = false
|
||||
ij_javascript_prefer_explicit_types_function_returns = false
|
||||
ij_javascript_prefer_explicit_types_vars_fields = false
|
||||
ij_javascript_prefer_parameters_wrap = false
|
||||
ij_javascript_reformat_c_style_comments = false
|
||||
ij_javascript_space_after_colon = true
|
||||
ij_javascript_space_after_comma = true
|
||||
ij_javascript_space_after_dots_in_rest_parameter = false
|
||||
ij_javascript_space_after_generator_mult = true
|
||||
ij_javascript_space_after_property_colon = true
|
||||
ij_javascript_space_after_quest = true
|
||||
ij_javascript_space_after_type_colon = true
|
||||
ij_javascript_space_after_unary_not = false
|
||||
ij_javascript_space_before_async_arrow_lparen = true
|
||||
ij_javascript_space_before_catch_keyword = true
|
||||
ij_javascript_space_before_catch_left_brace = true
|
||||
ij_javascript_space_before_catch_parentheses = true
|
||||
ij_javascript_space_before_class_lbrace = true
|
||||
ij_javascript_space_before_class_left_brace = true
|
||||
ij_javascript_space_before_colon = true
|
||||
ij_javascript_space_before_comma = false
|
||||
ij_javascript_space_before_do_left_brace = true
|
||||
ij_javascript_space_before_else_keyword = true
|
||||
ij_javascript_space_before_else_left_brace = true
|
||||
ij_javascript_space_before_finally_keyword = true
|
||||
ij_javascript_space_before_finally_left_brace = true
|
||||
ij_javascript_space_before_for_left_brace = true
|
||||
ij_javascript_space_before_for_parentheses = true
|
||||
ij_javascript_space_before_for_semicolon = false
|
||||
ij_javascript_space_before_function_left_parenth = true
|
||||
ij_javascript_space_before_generator_mult = false
|
||||
ij_javascript_space_before_if_left_brace = true
|
||||
ij_javascript_space_before_if_parentheses = true
|
||||
ij_javascript_space_before_method_call_parentheses = false
|
||||
ij_javascript_space_before_method_left_brace = true
|
||||
ij_javascript_space_before_method_parentheses = false
|
||||
ij_javascript_space_before_property_colon = false
|
||||
ij_javascript_space_before_quest = true
|
||||
ij_javascript_space_before_switch_left_brace = true
|
||||
ij_javascript_space_before_switch_parentheses = true
|
||||
ij_javascript_space_before_try_left_brace = true
|
||||
ij_javascript_space_before_type_colon = false
|
||||
ij_javascript_space_before_unary_not = false
|
||||
ij_javascript_space_before_while_keyword = true
|
||||
ij_javascript_space_before_while_left_brace = true
|
||||
ij_javascript_space_before_while_parentheses = true
|
||||
ij_javascript_spaces_around_additive_operators = true
|
||||
ij_javascript_spaces_around_arrow_function_operator = true
|
||||
ij_javascript_spaces_around_assignment_operators = true
|
||||
ij_javascript_spaces_around_bitwise_operators = true
|
||||
ij_javascript_spaces_around_equality_operators = true
|
||||
ij_javascript_spaces_around_logical_operators = true
|
||||
ij_javascript_spaces_around_multiplicative_operators = true
|
||||
ij_javascript_spaces_around_relational_operators = true
|
||||
ij_javascript_spaces_around_shift_operators = true
|
||||
ij_javascript_spaces_around_unary_operator = false
|
||||
ij_javascript_spaces_within_array_initializer_brackets = false
|
||||
ij_javascript_spaces_within_brackets = false
|
||||
ij_javascript_spaces_within_catch_parentheses = false
|
||||
ij_javascript_spaces_within_for_parentheses = false
|
||||
ij_javascript_spaces_within_if_parentheses = false
|
||||
ij_javascript_spaces_within_imports = false
|
||||
ij_javascript_spaces_within_interpolation_expressions = false
|
||||
ij_javascript_spaces_within_method_call_parentheses = false
|
||||
ij_javascript_spaces_within_method_parentheses = false
|
||||
ij_javascript_spaces_within_object_literal_braces = false
|
||||
ij_javascript_spaces_within_object_type_braces = true
|
||||
ij_javascript_spaces_within_parentheses = false
|
||||
ij_javascript_spaces_within_switch_parentheses = false
|
||||
ij_javascript_spaces_within_type_assertion = false
|
||||
ij_javascript_spaces_within_union_types = true
|
||||
ij_javascript_spaces_within_while_parentheses = false
|
||||
ij_javascript_special_else_if_treatment = true
|
||||
ij_javascript_ternary_operation_signs_on_next_line = false
|
||||
ij_javascript_ternary_operation_wrap = off
|
||||
ij_javascript_union_types_wrap = on_every_item
|
||||
ij_javascript_use_chained_calls_group_indents = false
|
||||
ij_javascript_use_double_quotes = true
|
||||
ij_javascript_use_explicit_js_extension = auto
|
||||
ij_javascript_use_path_mapping = always
|
||||
ij_javascript_use_public_modifier = false
|
||||
ij_javascript_use_semicolon_after_statement = true
|
||||
ij_javascript_var_declaration_wrap = normal
|
||||
ij_javascript_while_brace_force = never
|
||||
ij_javascript_while_on_new_line = false
|
||||
ij_javascript_wrap_comments = false
|
||||
|
||||
[{*.har,*.jsb2,*.jsb3,*.json,.babelrc,.eslintrc,.prettierrc,.stylelintrc,bowerrc,jest.config}]
|
||||
indent_size = 2
|
||||
ij_json_array_wrapping = split_into_lines
|
||||
ij_json_keep_blank_lines_in_code = 0
|
||||
ij_json_keep_indents_on_empty_lines = false
|
||||
ij_json_keep_line_breaks = true
|
||||
ij_json_keep_trailing_comma = false
|
||||
ij_json_object_wrapping = split_into_lines
|
||||
ij_json_property_alignment = do_not_align
|
||||
ij_json_space_after_colon = true
|
||||
ij_json_space_after_comma = true
|
||||
ij_json_space_before_colon = false
|
||||
ij_json_space_before_comma = false
|
||||
ij_json_spaces_within_braces = false
|
||||
ij_json_spaces_within_brackets = false
|
||||
ij_json_wrap_long_lines = false
|
||||
|
||||
[{*.htm,*.html,*.ng,*.sht,*.shtm,*.shtml}]
|
||||
ij_html_add_new_line_before_tags = body, div, p, form, h1, h2, h3
|
||||
ij_html_align_attributes = true
|
||||
ij_html_align_text = false
|
||||
ij_html_attribute_wrap = normal
|
||||
ij_html_block_comment_add_space = false
|
||||
ij_html_block_comment_at_first_column = true
|
||||
ij_html_do_not_align_children_of_min_lines = 0
|
||||
ij_html_do_not_break_if_inline_tags = title, h1, h2, h3, h4, h5, h6, p
|
||||
ij_html_do_not_indent_children_of_tags = html, body, thead, tbody, tfoot
|
||||
ij_html_enforce_quotes = false
|
||||
ij_html_inline_tags = a, abbr, acronym, b, basefont, bdo, big, br, cite, cite, code, dfn, em, font, i, img, input, kbd, label, q, s, samp, select, small, span, strike, strong, sub, sup, textarea, tt, u, var
|
||||
ij_html_keep_blank_lines = 2
|
||||
ij_html_keep_indents_on_empty_lines = false
|
||||
ij_html_keep_line_breaks = true
|
||||
ij_html_keep_line_breaks_in_text = true
|
||||
ij_html_keep_whitespaces = false
|
||||
ij_html_keep_whitespaces_inside = span, pre, textarea
|
||||
ij_html_line_comment_at_first_column = true
|
||||
ij_html_new_line_after_last_attribute = never
|
||||
ij_html_new_line_before_first_attribute = never
|
||||
ij_html_quote_style = double
|
||||
ij_html_remove_new_line_before_tags = br
|
||||
ij_html_space_after_tag_name = false
|
||||
ij_html_space_around_equality_in_attribute = false
|
||||
ij_html_space_inside_empty_tag = false
|
||||
ij_html_text_wrap = normal
|
||||
|
||||
[{*.markdown,*.md}]
|
||||
ij_markdown_force_one_space_after_blockquote_symbol = true
|
||||
ij_markdown_force_one_space_after_header_symbol = true
|
||||
ij_markdown_force_one_space_after_list_bullet = true
|
||||
ij_markdown_force_one_space_between_words = true
|
||||
ij_markdown_format_tables = true
|
||||
ij_markdown_insert_quote_arrows_on_wrap = true
|
||||
ij_markdown_keep_indents_on_empty_lines = false
|
||||
ij_markdown_keep_line_breaks_inside_text_blocks = true
|
||||
ij_markdown_max_lines_around_block_elements = 1
|
||||
ij_markdown_max_lines_around_header = 1
|
||||
ij_markdown_max_lines_between_paragraphs = 1
|
||||
ij_markdown_min_lines_around_block_elements = 1
|
||||
ij_markdown_min_lines_around_header = 1
|
||||
ij_markdown_min_lines_between_paragraphs = 1
|
||||
ij_markdown_wrap_text_if_long = true
|
||||
ij_markdown_wrap_text_inside_blockquotes = true
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,3 +1,5 @@
|
||||
node_modules
|
||||
.next
|
||||
.env.local
|
||||
.env.local
|
||||
.idea
|
||||
package-lock.json
|
||||
68
README.md
68
README.md
@@ -1,17 +1,18 @@
|
||||
# loan-facilities-user
|
||||
|
||||
|
||||
|
||||
## Getting started
|
||||
|
||||
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
|
||||
|
||||
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
|
||||
Already a pro? Just edit this README.md and make it your own. Want to make it
|
||||
easy? [Use the template at the bottom](#editing-this-readme)!
|
||||
|
||||
## Add your files
|
||||
|
||||
- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
|
||||
- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
|
||||
- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file)
|
||||
or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
|
||||
- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line)
|
||||
or push an existing Git repository with the following command:
|
||||
|
||||
```
|
||||
cd existing_repo
|
||||
@@ -46,47 +47,82 @@ Use the built-in continuous integration in GitLab.
|
||||
|
||||
# Editing this README
|
||||
|
||||
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template.
|
||||
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to
|
||||
structure it however you want - this is just a starting point!). Thank you
|
||||
to [makeareadme.com](https://www.makeareadme.com/) for this template.
|
||||
|
||||
## Suggestions for a good README
|
||||
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
|
||||
|
||||
Every project is different, so consider which of these sections apply to yours. The sections used in the template are
|
||||
suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long
|
||||
is better than too short. If you think your README is too long, consider utilizing another form of documentation rather
|
||||
than cutting out information.
|
||||
|
||||
## Name
|
||||
|
||||
Choose a self-explaining name for your project.
|
||||
|
||||
## Description
|
||||
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
|
||||
|
||||
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be
|
||||
unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your
|
||||
project, this is a good place to list differentiating factors.
|
||||
|
||||
## Badges
|
||||
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
|
||||
|
||||
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the
|
||||
project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
|
||||
|
||||
## Visuals
|
||||
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
|
||||
|
||||
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see
|
||||
GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
|
||||
|
||||
## Installation
|
||||
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
|
||||
|
||||
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew.
|
||||
However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing
|
||||
specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a
|
||||
specific context like a particular programming language version or operating system or has dependencies that have to be
|
||||
installed manually, also add a Requirements subsection.
|
||||
|
||||
## Usage
|
||||
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
|
||||
|
||||
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of
|
||||
usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably
|
||||
include in the README.
|
||||
|
||||
## Support
|
||||
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
|
||||
|
||||
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address,
|
||||
etc.
|
||||
|
||||
## Roadmap
|
||||
|
||||
If you have ideas for releases in the future, it is a good idea to list them in the README.
|
||||
|
||||
## Contributing
|
||||
|
||||
State if you are open to contributions and what your requirements are for accepting them.
|
||||
|
||||
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
|
||||
For people who want to make changes to your project, it's helpful to have some documentation on how to get started.
|
||||
Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps
|
||||
explicit. These instructions could also be useful to your future self.
|
||||
|
||||
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
|
||||
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce
|
||||
the likelihood that the changes inadvertently break something. Having instructions for running tests is especially
|
||||
helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
|
||||
|
||||
## Authors and acknowledgment
|
||||
|
||||
Show your appreciation to those who have contributed to the project.
|
||||
|
||||
## License
|
||||
|
||||
For open source projects, say how it is licensed.
|
||||
|
||||
## Project status
|
||||
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
|
||||
|
||||
If you have run out of energy or time for your project, put a note at the top of the README saying that development has
|
||||
slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or
|
||||
owner, allowing your project to keep going. You can also make an explicit request for maintainers.
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
NEXT_PUBLIC_API_NAME = "Loan Facilities Dashboard"
|
||||
NEXT_PUBLIC_API_VERSION = "1.7.1"
|
||||
NEXT_PUBLIC_DEFAULT_LANGUAGE = "fa"
|
||||
NEXT_PUBLIC_DEFAULT_DIRECTION = "rtl"
|
||||
|
||||
NEXT_PUBLIC_API_URL = "http://Your IP:3000"
|
||||
NEXT_PUBLIC_PRIMARY_MAIN = "#084070"
|
||||
NEXT_PUBLIC_SECONDARY_MAIN = "#FF4E00"
|
||||
|
||||
NEXT_PUBLIC_BASE_URL = "deploy api"
|
||||
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"paths": {
|
||||
"@/*": ["./src/*"],
|
||||
"&/*": ["./public/*"],
|
||||
"@/*": [
|
||||
"./src/*"
|
||||
],
|
||||
"&/*": [
|
||||
"./public/*"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
/** @type {import('next').NextConfig} */
|
||||
|
||||
const nextConfig = {
|
||||
reactStrictMode: true,
|
||||
i18n: {
|
||||
defaultLocale: 'fa',
|
||||
locales: ['fa'],
|
||||
localeDetection: false,
|
||||
},
|
||||
reactStrictMode: true,
|
||||
images: {
|
||||
domains: ['loan.witel.ir', /* other domains */],
|
||||
},
|
||||
i18n: {
|
||||
defaultLocale: 'fa',
|
||||
locales: ['fa'],
|
||||
localeDetection: false,
|
||||
},
|
||||
}
|
||||
|
||||
module.exports = nextConfig
|
||||
|
||||
794
package-lock.json
generated
794
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,7 @@
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"publish-3001": "next start -p 3001",
|
||||
"lint": "next lint"
|
||||
},
|
||||
"dependencies": {
|
||||
@@ -15,9 +16,11 @@
|
||||
"@mui/icons-material": "^5.11.16",
|
||||
"@mui/material": "^5.12.0",
|
||||
"axios": "^1.4.0",
|
||||
"colord": "^2.9.3",
|
||||
"eslint": "8.36.0",
|
||||
"formik": "^2.2.9",
|
||||
"fs-extra": "^11.1.1",
|
||||
"jalali-moment": "^3.3.11",
|
||||
"material-react-table": "^1.11.1",
|
||||
"moment": "^2.29.4",
|
||||
"next": "^13.3.0",
|
||||
|
||||
@@ -17,80 +17,153 @@ This set of fonts are used in this project under the license: (.....)
|
||||
*
|
||||
**/
|
||||
@font-face {
|
||||
font-family: IRANSans;
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
src: url('./fonts/eot/IRANSansWeb_Black.eot');
|
||||
src: url('./fonts/eot/IRANSansWeb_Black.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb_Black.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb_Black.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb_Black.ttf') format('truetype');
|
||||
font-family: IRANSansFaNum;
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
src: url('./fonts/eot/IRANSansWeb(FaNum)_Black.eot');
|
||||
src: url('./fonts/eot/IRANSansWeb(FaNum)_Black.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb(FaNum)_Black.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb(FaNum)_Black.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb(FaNum)_Black.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: IRANSans;
|
||||
font-style: normal;
|
||||
font-weight: bold;
|
||||
src: url('./fonts/eot/IRANSansWeb_Bold.eot');
|
||||
src: url('./fonts/eot/IRANSansWeb_Bold.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb_Bold.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb_Bold.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb_Bold.ttf') format('truetype');
|
||||
font-family: IRANSansFaNum;
|
||||
font-style: normal;
|
||||
font-weight: bold;
|
||||
src: url('./fonts/eot/IRANSansWeb(FaNum)_Bold.eot');
|
||||
src: url('./fonts/eot/IRANSansWeb(FaNum)_Bold.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb(FaNum)_Bold.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb(FaNum)_Bold.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb(FaNum)_Bold.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: IRANSans;
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
src: url('./fonts/eot/IRANSansWeb_Medium.eot');
|
||||
src: url('./fonts/eot/IRANSansWeb_Medium.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb_Medium.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb_Medium.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb_Medium.ttf') format('truetype');
|
||||
font-family: IRANSansFaNum;
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
src: url('./fonts/eot/IRANSansWeb(FaNum)_Medium.eot');
|
||||
src: url('./fonts/eot/IRANSansWeb(FaNum)_Medium.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb(FaNum)_Medium.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb(FaNum)_Medium.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb(FaNum)_Medium.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: IRANSans;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url('./fonts/eot/IRANSansWeb_Light.eot');
|
||||
src: url('./fonts/eot/IRANSansWeb_Light.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb_Light.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb_Light.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb_Light.ttf') format('truetype');
|
||||
font-family: IRANSansFaNum;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url('./fonts/eot/IRANSansWeb(FaNum)_Light.eot');
|
||||
src: url('./fonts/eot/IRANSansWeb(FaNum)_Light.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb(FaNum)_Light.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb(FaNum)_Light.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb(FaNum)_Light.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: IRANSans;
|
||||
font-style: normal;
|
||||
font-weight: 200;
|
||||
src: url('./fonts/eot/IRANSansWeb_UltraLight.eot');
|
||||
src: url('./fonts/eot/IRANSansWeb_UltraLight.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb_UltraLight.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb_UltraLight.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb_UltraLight.ttf') format('truetype');
|
||||
font-family: IRANSansFaNum;
|
||||
font-style: normal;
|
||||
font-weight: 200;
|
||||
src: url('./fonts/eot/IRANSansWeb(FaNum)_UltraLight.eot');
|
||||
src: url('./fonts/eot/IRANSansWeb(FaNum)_UltraLight.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb(FaNum)_UltraLight.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb(FaNum)_UltraLight.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb(FaNum)_UltraLight.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: IRANSans;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: url('./fonts/eot/IRANSansWeb.eot');
|
||||
src: url('./fonts/eot/IRANSansWeb.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb.ttf') format('truetype');
|
||||
font-family: IRANSansFaNum;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: url('./fonts/eot/IRANSansWeb(FaNum).eot');
|
||||
src: url('./fonts/eot/IRANSansWeb(FaNum).eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb(FaNum).woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb(FaNum).woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb(FaNum).ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: Parastoo;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: url('./fonts/eot/Parastoo.eot');
|
||||
src: url('./fonts/eot/Parastoo.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff/Parastoo.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/Parastoo.ttf') format('truetype');
|
||||
font-family: IRANSans;
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
src: url('./fonts/eot/IRANSansWeb_Black.eot');
|
||||
src: url('./fonts/eot/IRANSansWeb_Black.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb_Black.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb_Black.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb_Black.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: Parastoo;
|
||||
font-style: normal;
|
||||
font-weight: bold;
|
||||
src: url('./fonts/eot/Parastoo-Bold.eot');
|
||||
src: url('./fonts/eot/Parastoo-Bold.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff/Parastoo-Bold.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/Parastoo-Bold.ttf') format('truetype');
|
||||
font-family: IRANSans;
|
||||
font-style: normal;
|
||||
font-weight: bold;
|
||||
src: url('./fonts/eot/IRANSansWeb_Bold.eot');
|
||||
src: url('./fonts/eot/IRANSansWeb_Bold.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb_Bold.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb_Bold.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb_Bold.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: IRANSans;
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
src: url('./fonts/eot/IRANSansWeb_Medium.eot');
|
||||
src: url('./fonts/eot/IRANSansWeb_Medium.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb_Medium.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb_Medium.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb_Medium.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: IRANSans;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url('./fonts/eot/IRANSansWeb_Light.eot');
|
||||
src: url('./fonts/eot/IRANSansWeb_Light.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb_Light.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb_Light.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb_Light.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: IRANSans;
|
||||
font-style: normal;
|
||||
font-weight: 200;
|
||||
src: url('./fonts/eot/IRANSansWeb_UltraLight.eot');
|
||||
src: url('./fonts/eot/IRANSansWeb_UltraLight.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb_UltraLight.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb_UltraLight.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb_UltraLight.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: IRANSans;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: url('./fonts/eot/IRANSansWeb.eot');
|
||||
src: url('./fonts/eot/IRANSansWeb.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff2/IRANSansWeb.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
|
||||
url('./fonts/woff/IRANSansWeb.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/IRANSansWeb.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: Parastoo;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: url('./fonts/eot/Parastoo.eot');
|
||||
src: url('./fonts/eot/Parastoo.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff/Parastoo.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/Parastoo.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: Parastoo;
|
||||
font-style: normal;
|
||||
font-weight: bold;
|
||||
src: url('./fonts/eot/Parastoo-Bold.eot');
|
||||
src: url('./fonts/eot/Parastoo-Bold.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
|
||||
url('./fonts/woff/Parastoo-Bold.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
|
||||
url('./fonts/ttf/Parastoo-Bold.ttf') format('truetype');
|
||||
}
|
||||
|
||||
BIN
public/fonts/eot/IRANSansWeb(FaNum).eot
Normal file
BIN
public/fonts/eot/IRANSansWeb(FaNum).eot
Normal file
Binary file not shown.
BIN
public/fonts/eot/IRANSansWeb(FaNum)_Black.eot
Normal file
BIN
public/fonts/eot/IRANSansWeb(FaNum)_Black.eot
Normal file
Binary file not shown.
BIN
public/fonts/eot/IRANSansWeb(FaNum)_Bold.eot
Normal file
BIN
public/fonts/eot/IRANSansWeb(FaNum)_Bold.eot
Normal file
Binary file not shown.
BIN
public/fonts/eot/IRANSansWeb(FaNum)_Light.eot
Normal file
BIN
public/fonts/eot/IRANSansWeb(FaNum)_Light.eot
Normal file
Binary file not shown.
BIN
public/fonts/eot/IRANSansWeb(FaNum)_Medium.eot
Normal file
BIN
public/fonts/eot/IRANSansWeb(FaNum)_Medium.eot
Normal file
Binary file not shown.
BIN
public/fonts/eot/IRANSansWeb(FaNum)_UltraLight.eot
Normal file
BIN
public/fonts/eot/IRANSansWeb(FaNum)_UltraLight.eot
Normal file
Binary file not shown.
BIN
public/fonts/ttf/IRANSansWeb(FaNum).ttf
Normal file
BIN
public/fonts/ttf/IRANSansWeb(FaNum).ttf
Normal file
Binary file not shown.
BIN
public/fonts/ttf/IRANSansWeb(FaNum)_Black.ttf
Normal file
BIN
public/fonts/ttf/IRANSansWeb(FaNum)_Black.ttf
Normal file
Binary file not shown.
BIN
public/fonts/ttf/IRANSansWeb(FaNum)_Bold.ttf
Normal file
BIN
public/fonts/ttf/IRANSansWeb(FaNum)_Bold.ttf
Normal file
Binary file not shown.
BIN
public/fonts/ttf/IRANSansWeb(FaNum)_Light.ttf
Normal file
BIN
public/fonts/ttf/IRANSansWeb(FaNum)_Light.ttf
Normal file
Binary file not shown.
BIN
public/fonts/ttf/IRANSansWeb(FaNum)_Medium.ttf
Normal file
BIN
public/fonts/ttf/IRANSansWeb(FaNum)_Medium.ttf
Normal file
Binary file not shown.
BIN
public/fonts/ttf/IRANSansWeb(FaNum)_UltraLight.ttf
Normal file
BIN
public/fonts/ttf/IRANSansWeb(FaNum)_UltraLight.ttf
Normal file
Binary file not shown.
BIN
public/fonts/woff/IRANSansWeb(FaNum).woff
Normal file
BIN
public/fonts/woff/IRANSansWeb(FaNum).woff
Normal file
Binary file not shown.
BIN
public/fonts/woff/IRANSansWeb(FaNum)_Black.woff
Normal file
BIN
public/fonts/woff/IRANSansWeb(FaNum)_Black.woff
Normal file
Binary file not shown.
BIN
public/fonts/woff/IRANSansWeb(FaNum)_Bold.woff
Normal file
BIN
public/fonts/woff/IRANSansWeb(FaNum)_Bold.woff
Normal file
Binary file not shown.
BIN
public/fonts/woff/IRANSansWeb(FaNum)_Light.woff
Normal file
BIN
public/fonts/woff/IRANSansWeb(FaNum)_Light.woff
Normal file
Binary file not shown.
BIN
public/fonts/woff/IRANSansWeb(FaNum)_Medium.woff
Normal file
BIN
public/fonts/woff/IRANSansWeb(FaNum)_Medium.woff
Normal file
Binary file not shown.
BIN
public/fonts/woff/IRANSansWeb(FaNum)_UltraLight.woff
Normal file
BIN
public/fonts/woff/IRANSansWeb(FaNum)_UltraLight.woff
Normal file
Binary file not shown.
BIN
public/fonts/woff2/IRANSansWeb(FaNum).woff2
Normal file
BIN
public/fonts/woff2/IRANSansWeb(FaNum).woff2
Normal file
Binary file not shown.
BIN
public/fonts/woff2/IRANSansWeb(FaNum)_Black.woff2
Normal file
BIN
public/fonts/woff2/IRANSansWeb(FaNum)_Black.woff2
Normal file
Binary file not shown.
BIN
public/fonts/woff2/IRANSansWeb(FaNum)_Bold.woff2
Normal file
BIN
public/fonts/woff2/IRANSansWeb(FaNum)_Bold.woff2
Normal file
Binary file not shown.
BIN
public/fonts/woff2/IRANSansWeb(FaNum)_Light.woff2
Normal file
BIN
public/fonts/woff2/IRANSansWeb(FaNum)_Light.woff2
Normal file
Binary file not shown.
BIN
public/fonts/woff2/IRANSansWeb(FaNum)_Medium.woff2
Normal file
BIN
public/fonts/woff2/IRANSansWeb(FaNum)_Medium.woff2
Normal file
Binary file not shown.
BIN
public/fonts/woff2/IRANSansWeb(FaNum)_UltraLight.woff2
Normal file
BIN
public/fonts/woff2/IRANSansWeb(FaNum)_UltraLight.woff2
Normal file
Binary file not shown.
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 9.1 KiB |
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 9.4 KiB |
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 6.2 KiB |
@@ -1,10 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="611.781" height="634.738" viewBox="0 0 611.781 634.738">
|
||||
<g id="Group_67" data-name="Group 67" transform="translate(17717.998 5548)">
|
||||
<g id="Group_35" data-name="Group 35" transform="translate(-18337.291 -5635.72)">
|
||||
<path id="Path_5" data-name="Path 5" d="M126.892,461.042c-1.676-6.24-3.057-12-4.776-17.668-6.5-21.426-17.146-40.936-27.846-60.456-10.362-18.9-20.22-38.081-30.31-57.132-.389-.734-.9-1.406-1.791-2.8C36.884,364.062,18.983,407.918,1.474,451.962l-1.21-.256a8.878,8.878,0,0,1-.214-2.524c2.581-12.372,4.479-24.951,8.05-37.034a334.761,334.761,0,0,1,13.91-37.364Q35.923,342.5,51.02,310.733c3.525-7.389,1.922-13.976.051-20.991a185.716,185.716,0,0,1-6.18-54.9,183.572,183.572,0,0,1,21.089-78.7A248.249,248.249,0,0,1,132.8,75.26a320,320,0,0,1,59.11-36.67c23.209-11.317,47.033-21.1,72.336-26.513A487.808,487.808,0,0,1,314.282,3.7C333.731,1.624,353.352,1.16,372.9.018a22,22,0,0,1,3.3.145c.4.037.775.291,1.236,1.13L360.926,4.642c-26.4,5.318-52.988,9.831-79.147,16.136a295.335,295.335,0,0,0-105.32,48.21c-24.648,17.9-45.935,39.123-61.823,65.3-11.419,18.813-17.813,39.38-20.064,61.275-1.445,14.062-1.024,28.1.166,42.133a44.216,44.216,0,0,0,1,4.8c1.418-1.165,2.427-1.875,3.3-2.728,10.2-10.038,20.041-20.48,30.661-30.055,14.1-12.713,29.419-23.882,46.9-31.678,21.42-9.55,43.69-13.568,66.553-6.9,10.553,3.079,20.531,8.393,30.44,13.353,20.075,10.051,39.841,20.721,59.892,30.821a182.512,182.512,0,0,0,68.478,19.421c33.07,2.549,64.407-3.894,93.662-19.748,25.04-13.571,46.544-31.674,66.252-52.041,15.44-15.956,28.916-33.487,41.494-51.746,2.217-3.219,4.962-6.073,7.463-9.1l.983.382a15.039,15.039,0,0,1-.828,3.67c-3.9,7.643-7.67,15.361-11.911,22.812-17.8,31.272-39.019,60-64.85,85.13-26.732,26.009-56.556,47.619-90.953,62.526a162.5,162.5,0,0,1-74.241,14.106c-24.876-.775-48.015,5.5-69.742,17.063-14.861,7.91-29.333,16.559-43.879,25.049-13.773,8.039-28.189,13.431-44.484,11.949-2.667-.242-2.49,1.854-2.988,3.479-2.151,7.019-3.92,14.193-6.627,20.993-3.8,9.547-10.327,17.4-17.557,24.572-15.526,15.4-28.738,32.778-42.59,49.608-4.68,5.687-9.284,11.436-14.28,17.6M284.4,266.987c-.334-.819-.375-1.206-.591-1.393a13.8,13.8,0,0,0-1.854-1.356c-22.793-13.885-46.277-26.286-71.807-34.532-20.915-6.755-41.455-6.841-61.848,1.941-15.741,6.779-28.925,17.112-41,29.01-5.591,5.508-5.981,8.93-2.421,15.921q12.355,24.272,24.657,48.572c10.087,19.93,20.125,39.886,30.279,59.783.543,1.062,1.967,1.674,2.98,2.5a12.859,12.859,0,0,0,1.933-3.081,49.022,49.022,0,0,0-2.4-33.292c-6.476-14.911-14.075-29.337-21.275-43.93-4.967-10.065-10.144-20.026-15.07-30.112-1.63-3.338-2.558-6.917.574-10.1,10.226-10.371,22.1-18.1,36.115-22.335,3.993-1.206,5.77-.416,7.975,3.16,3.927,6.365,7.687,12.846,11.888,19.028,9.727,14.31,23.437,21.051,40.7,20.974,16.93-.075,32.491-5.033,47.273-12.854,4.715-2.495,9.282-5.27,13.894-7.9" transform="translate(619.257 87.713)" fill="#231955"/>
|
||||
<path id="Path_6" data-name="Path 6" d="M104.479,767.41c2.322-11.049,4.27-22.193,7.046-33.127,5.72-22.532,15.277-43.572,26.263-63.957,16.423-30.474,34.631-59.844,55.63-87.405,20.939-27.481,43.511-53.464,70.53-75.261,24.13-19.467,50.887-33.842,81.027-41.582,4.676-1.2,9.437-2.118,14.2-2.939a15,15,0,0,0,11.744-9.6c4.286-10.252,11.9-14.085,22.732-13.761a202.3,202.3,0,0,0,89.232-17.644A257.328,257.328,0,0,0,528.458,395.6c1.4-1.009,2.885-1.912,5.222-3.451-.953,3.026-1.265,5.258-2.293,7.089-14.936,26.6-31.633,51.891-54.057,72.956-18.879,17.734-40.265,31.046-65.744,36.862-15.1,3.446-30.348,6.253-45.529,9.349-18.622,3.8-37.406,6.945-55.825,11.553-27.566,6.9-51.782,20.673-73.654,38.685-23.608,19.441-42.473,43.054-59.8,68-24.96,35.939-44.814,74.717-63.24,114.278q-3.9,8.368-7.793,16.738l-1.263-.245" transform="translate(583.845 -45.198)" fill="#231955"/>
|
||||
<path id="Path_7" data-name="Path 7" d="M405.392,690.855l-53.546,54.494-55.389-51.215,55.1-53.062L405.4,690.854" transform="translate(518.777 -129.57)" fill="#ff9100"/>
|
||||
</g>
|
||||
<text id="MARHABA" transform="translate(-17322 -4931)" fill="#bcbcbc" font-size="50" font-family="Montserrat-ExtraBold, Montserrat" font-weight="800"><tspan x="-281.35" y="0">MARHABA</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 4.1 KiB |
92
public/images/upload-image.svg
Normal file
92
public/images/upload-image.svg
Normal file
@@ -0,0 +1,92 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" width="667.44532" height="589.48587"
|
||||
viewBox="0 0 667.44532 589.48587">
|
||||
<path
|
||||
d="M783.23262,532.89214a7.72132,7.72132,0,0,1,4.04472-11.12741l-.39756-27.43609,12.016,7.67645L797.4311,526.882a7.76317,7.76317,0,0,1-14.19848,6.01015Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#a0616a"/>
|
||||
<path
|
||||
d="M768.75126,383.9362A15.63963,15.63963,0,0,0,755.837,398.99425c-.174,8.02961,2.50557,11.02363,6.29215,12.10551,7,2,18.14816,42.44832,18.14816,42.44832s1.18325,37.72571,3.09163,35.86286-.25137,2.4842.3285,3.81067-2.74888,3.313.4155,4.81973,1.16437,13.50674,1.16437,13.50674l14-1s-2.32454-9.77573.83773-10.38786,1.72534-3.39426.44381-5.5032,2.26732-5.11484.49289-6.11189,3.22557-39.997,3.22557-39.997L784.7285,391.02842a15.64187,15.64187,0,0,0-15.97722-7.09223Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#6c63ff"/>
|
||||
<polygon points="460 230.943 470.071 213.291 483.677 213.291 493.882 231.943 460 230.943" fill="#6c63ff"/>
|
||||
<path
|
||||
d="M699.18878,227.46306c-8.04694-26.95441-30.7807-44.551-58.25122-48.41126-.30219-.0426-.589.01367-.8899-.00574a8.68011,8.68011,0,0,0-1.18756-.27349c-37.778-4.88251-79.0177,3.86193-111.84076,24.3988-31.46228,19.68549-67.61309,30.793-104.72552,30.5462q-1.72879-.01145-3.47113.075c-28.56079,1.42511-53.76636,22.21533-61.48755,49.5606-1.01331,3.58777.75244,6.79352,3.59186,8.82673,4.98932,3.57348,8.3974,6.078,14.53607,7.37841q16.43014,3.48075,32.9726,6.40137V262.03075a15.70447,15.70447,0,0,1,15.68627-15.68628H639.59106a15.70448,15.70448,0,0,1,15.68628,15.68628V316.738a64.51829,64.51829,0,0,0,8.63245-3.39789,66.83714,66.83714,0,0,0,25.76849-22.487C702.15289,272.75279,705.44769,248.42662,699.18878,227.46306Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M608.4671,484.54808H417.99a16.59835,16.59835,0,0,1-16.57911-16.5791V394.05852a172.96506,172.96506,0,0,0-71.7163-6.286,8.68011,8.68011,0,0,0-1.18756.27349c-.30085.01941-.58771-.03686-.8899.00574-27.47052,3.86029-50.20428,21.45685-58.25122,48.41126-6.25891,20.96356-2.96411,45.28973,9.5105,63.39a66.83714,66.83714,0,0,0,25.76849,22.487c14.28736,6.88226,29.32532,7.39972,44.91919,7.88568a1018.27653,1018.27653,0,0,0,140.261-5.30163q34.38208-3.68766,68.47858-9.63837,17.4516-3.0541,34.788-6.72742c6.13867-1.30041,9.54675-3.80493,14.53607-7.37841,2.83942-2.03321,4.60517-5.239,3.59186-8.82673A65.80907,65.80907,0,0,0,608.4671,484.54808Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M625.32431,462.62108H438.38871a13.62481,13.62481,0,0,1-13.609-13.609V275.28913a13.62481,13.62481,0,0,1,13.609-13.609h186.9356a13.6248,13.6248,0,0,1,13.609,13.609V449.01205A13.6248,13.6248,0,0,1,625.32431,462.62108Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#e6e6e6"/>
|
||||
<path
|
||||
d="M585.97983,453.4416H447.57038a13.62481,13.62481,0,0,1-13.609-13.609V284.47592a13.62481,13.62481,0,0,1,13.609-13.609H616.14483a13.62481,13.62481,0,0,1,13.609,13.609V409.66757A43.82338,43.82338,0,0,1,585.97983,453.4416Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#fff"/>
|
||||
<circle cx="265.58027" cy="206.89718" r="61" fill="#6c63ff"/>
|
||||
<path
|
||||
d="M557.5542,359.08519l-20.356-24.75391a6.00075,6.00075,0,0,0-9.14014-.15136l-21.76855,24.7539a6.00029,6.00029,0,0,0,9.01172,7.92481L526.564,354.05119v32.115a6,6,0,0,0,12,0V354.8853l9.72168,11.822a6,6,0,0,0,9.26856-7.62207Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#fff"/>
|
||||
<polygon points="528.453 578.324 519.404 578.323 515.099 543.416 528.456 543.417 528.453 578.324" fill="#a0616a"/>
|
||||
<path
|
||||
d="M795.04973,743.0215l-27.82942-.001v-.35195a10.83258,10.83258,0,0,1,10.832-10.83181h.00067l5.0834-3.85654,9.4845,3.85712,2.42932.00009Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#2f2e41"/>
|
||||
<polygon points="460.453 578.324 451.404 578.323 447.099 543.416 460.456 543.417 460.453 578.324" fill="#a0616a"/>
|
||||
<path
|
||||
d="M727.04973,743.0215l-27.82942-.001v-.35195a10.83258,10.83258,0,0,1,10.832-10.83181h.00067l5.0834-3.85654,9.4845,3.85712,2.42932.00009Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#2f2e41"/>
|
||||
<path
|
||||
d="M797.61645,704.6906c3.30164-2.1576,1.38892-2.01752,1.38892-2.01752s-7.383-59.85993-13-78l-6.49994-88.33655s-.41266,1.76215,0-2.52069,3.41266-1.28284.41266-4.28284-5-4.52868-3-6.76434,7.51721-6.75861,4.2586-9.49713-9.67126-20.59845-9.67126-20.59845l-62.50006.5,2.5-.5s-7.80182-2.89459-4.228.875-2,13-4,22c-1.65643,7.454-6.57379,9.43207,0,11,6.57379,1.56787.62476,6.01092.62476,6.01092s-9.89673,47.11408-2.39673,78.11408c0,0,5.17413,76.67175,7.79339,83.26587,2.61933,6.59405,3.61933,2.59405,2.61933,6.59405s-3-3-1,4a92.51269,92.51269,0,0,1,2.58728,11.14008l13.56231-1s3.1496-9.92743,0-12.53375-.97491,5,2.43775-.80316-.58734-3.80317-1.58734-11.80317,8.17468-45.2677,1.58734-68.13385l12.17328-64.16278,19.32666,66.43671s10.25128,81.14014,13.582,84.00006c3.33069,2.85986,1.9856-4.08209,3.33069,2.85986,1.35925,7.01508,4.44653,5.15515,4.35925,6.01508-.93127,9.17242,15.33911.125,15.33911.125a51.36513,51.36513,0,0,1,0-6.99994C797.91809,707.533,794.31482,706.84813,797.61645,704.6906Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#2f2e41"/>
|
||||
<path
|
||||
d="M715.27734,513.54808c-4,0-15-5.41732-13-7.70866s2-9.89764,2-12.09449,9-83.19685,9-83.19685l-.68388-19.83247a8.86212,8.86212,0,0,1,8.85686-9.16753l8.827-3,25-1,12.46645,4A7.22686,7.22686,0,0,1,774.181,392.0598l0,0a65.07422,65.07422,0,0,1,9.55278,35.95453c-.28682,9.47129-5.08528,21.038-6.24161,31.73814-.1015.93921-.17494,1.87174-.2148,2.79559-.01112.25761-2.05815,1.54144-.02907.77072s-1.08747,1.94967-.0292,3.58947,3.10929.635.08378,2.63741,3.63258,21.34431,2.97449,22.0024c-2,2-6,3-3,6s6,1,2,5-15.98425,11-15.98425,11Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#3f3d56"/>
|
||||
<circle cx="475.73406" cy="189.15557" r="21.52319" fill="#a0616a"/>
|
||||
<path
|
||||
d="M610.92115,411.192a7.72133,7.72133,0,0,1,10.62241,5.2291l27.317,2.584-8.93584,11.11135L615.354,425.9591a7.76317,7.76317,0,0,1-4.43284-14.76715Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#a0616a"/>
|
||||
<path
|
||||
d="M740.44091,395.17016a15.63965,15.63965,0,0,0-15.058-12.91423c-8.02961-.174-11.02364,2.50557-12.10552,6.29215-2,7-34.19685,31.60617-34.19685,31.60617l-27.65117-2.99243c-1.66278-.54016-.87427-2.05438-7.12586-.77115-3.07953-2.01669-5.07055-1.675-6.785-.73428l-10.24109-1.10831,1,16s10.96343-2.608,13,2,1.57046,5.26992,6,2,4,0,4,0l32,8,50.07135-31.40068a15.64187,15.64187,0,0,0,7.09222-15.97722Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#6c63ff"/>
|
||||
<path
|
||||
d="M750.36737,363.628l1.41.45c-4.41.37-12.27,2.83-11.5,1.47s-2.14-6.49-.72-7.14a9.03069,9.03069,0,0,0,3.82-2.59c.9-1.26.88-3.34-.47-4.11-1.31-.76-2.93.06-4.23.83-1.31.76-3.73-10.42-3.11-13.91-3.65-2-8.07,1.83-12.17,1.08-2.51-.46-4.32-2.52-5.46-4.86a15.246,15.246,0,0,0,4.03-6.42,19.90965,19.90965,0,0,1-5.52,1.83,12.97091,12.97091,0,0,1,.14-5.48,8.94283,8.94283,0,0,1,5.57-6.34,6.48235,6.48235,0,0,1,7.6,2.82,6.44436,6.44436,0,0,0-4.08-6.4,6.77636,6.77636,0,0,1,9.75,4.61,20.93429,20.93429,0,0,1,14.59-1.56c4.84,1.27,11.26,6.64,11.26,6.64C772.19732,326.95805,771.67736,368.47807,750.36737,363.628Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#2f2e41"/>
|
||||
<path
|
||||
d="M864.39375,734.43979a1.2164,1.2164,0,0,0,.88157-2.10832l-.08335-.33136.03312-.07954a3.26656,3.26656,0,0,1,6.02555.02239c.98551,2.37356,2.24023,4.75117,2.54918,7.26082a9.66393,9.66393,0,0,1-.16964,3.32354,38.74392,38.74392,0,0,0,3.52438-16.09157,37.39746,37.39746,0,0,0-.232-4.17178q-.19217-1.70334-.53318-3.38243a39.19285,39.19285,0,0,0-7.77228-16.61089A10.43034,10.43034,0,0,1,864.2792,697.77a7.95618,7.95618,0,0,1-.72357-2.17417,9.819,9.819,0,0,0,.637-3.3859c.2943-.44659.82105-.66859,1.14248-1.10437,1.59857-2.16733,3.801-1.78891,4.95074,1.15632,2.45615,1.23962,2.47993,3.29545.97284,5.27269-.95881,1.25793-1.09055,2.96-1.93184,4.30676.08657.1108.17659.21813.26313.32893a39.4457,39.4457,0,0,1,4.11715,6.52255,16.39818,16.39818,0,0,1,.979-7.61655c.93706-2.26054,2.69343-4.16438,4.24012-6.11862a3.36576,3.36576,0,0,1,5.9948,1.65271l.00927.0864q-.3446.1944-.67464.41269a1.65,1.65,0,0,0,.66523,3.00262l.03364.00518a16.41807,16.41807,0,0,1-.43274,2.45462c1.98421,7.67347-2.29957,10.46831-8.41623,10.59386-.135.06923-.2666.13847-.40163.20427a40.262,40.262,0,0,1,2.16725,10.19917,38.18677,38.18677,0,0,1-.0277,6.1659l.0104-.07269a10.09082,10.09082,0,0,1,3.44475-5.82663c2.65092-2.17763,6.39617-2.97954,9.256-4.72993a1.89376,1.89376,0,0,1,2.90049,1.84233l-.01169.07644a11.08173,11.08173,0,0,0-1.24287.5989q-.3446.19445-.67465.41269a1.65,1.65,0,0,0,.66524,3.00265l.03367.00517.0692.01042a16.43116,16.43116,0,0,1-3.02234,4.73259c-1.24068,6.69864-6.56941,7.3342-12.2695,5.38348h-.00347a40.251,40.251,0,0,1-2.70387,7.89347h-9.65909c-.03464-.10732-.06579-.21812-.097-.32545a10.97506,10.97506,0,0,0,2.67273-.15921c-.71666-.87938-1.43329-1.76569-2.14994-2.645a.60206.60206,0,0,1-.045-.05194c-.36351-.45-.73049-.89666-1.094-1.34671l-.0002-.00055a16.07543,16.07543,0,0,1,.471-4.09507Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M542.80633,744.4356l389.72565.30734a1.19068,1.19068,0,0,0,0-2.38137l-389.72565-.30733a1.19068,1.19068,0,0,0,0,2.38136Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#cacaca"/>
|
||||
<path
|
||||
d="M522.8955,577.54808A14.14551,14.14551,0,1,1,537.041,563.40257,14.16159,14.16159,0,0,1,522.8955,577.54808Zm0-26.291A12.14551,12.14551,0,1,0,535.041,563.40257,12.159,12.159,0,0,0,522.8955,551.25706Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M528.43314,562.741l-4.38677-5.33454a1.29319,1.29319,0,0,0-1.96972-.03262l-4.69119,5.33454a1.29308,1.29308,0,0,0,1.942,1.70782l2.42714-2.76v6.92088a1.293,1.293,0,1,0,2.586,0v-6.74113l2.09505,2.54767a1.293,1.293,0,0,0,1.9974-1.64258Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M683.8955,368.54808A14.14551,14.14551,0,1,1,698.041,354.40257,14.16159,14.16159,0,0,1,683.8955,368.54808Zm0-26.291A12.14551,12.14551,0,1,0,696.041,354.40257,12.159,12.159,0,0,0,683.8955,342.25706Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M689.43314,353.741l-4.38677-5.33454a1.29319,1.29319,0,0,0-1.96972-.03262l-4.69119,5.33454a1.29308,1.29308,0,0,0,1.942,1.70782l2.42714-2.76v6.92088a1.293,1.293,0,1,0,2.586,0v-6.74113l2.09505,2.54767a1.293,1.293,0,0,0,1.9974-1.64258Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M364.8955,356.54808A14.14551,14.14551,0,1,1,379.041,342.40257,14.16159,14.16159,0,0,1,364.8955,356.54808Zm0-26.291A12.14551,12.14551,0,1,0,377.041,342.40257,12.159,12.159,0,0,0,364.8955,330.25706Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M370.43314,341.741l-4.38677-5.33454a1.29319,1.29319,0,0,0-1.96972-.03262l-4.69119,5.33454a1.29308,1.29308,0,0,0,1.942,1.70782l2.42714-2.76v6.92088a1.293,1.293,0,0,0,2.586,0v-6.74113l2.09505,2.54767a1.293,1.293,0,0,0,1.9974-1.64258Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M477.8955,183.54808A14.14551,14.14551,0,1,1,492.041,169.40257,14.16159,14.16159,0,0,1,477.8955,183.54808Zm0-26.291A12.14551,12.14551,0,1,0,490.041,169.40257,12.159,12.159,0,0,0,477.8955,157.25706Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M483.43314,168.741l-4.38677-5.33454a1.29319,1.29319,0,0,0-1.96972-.03262l-4.69119,5.33454a1.29308,1.29308,0,0,0,1.942,1.70782l2.42714-2.76v6.92088a1.293,1.293,0,0,0,2.586,0v-6.74113l2.09505,2.54767a1.293,1.293,0,0,0,1.9974-1.64258Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M326.8955,461.54808A14.14575,14.14575,0,1,1,341.041,447.40257,14.16159,14.16159,0,0,1,326.8955,461.54808Zm0-26.2915a12.14575,12.14575,0,1,0,12.14551,12.146A12.15941,12.15941,0,0,0,326.8955,435.25658Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#fff"/>
|
||||
<path
|
||||
d="M332.43314,446.741l-4.38677-5.33454a1.29319,1.29319,0,0,0-1.96972-.03262l-4.69119,5.33454a1.29308,1.29308,0,0,0,1.942,1.70782l2.42714-2.76v6.92088a1.293,1.293,0,0,0,2.586,0v-6.74113l2.09505,2.54767a1.293,1.293,0,0,0,1.9974-1.64258Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#fff"/>
|
||||
<path
|
||||
d="M632.8955,224.54808A14.14575,14.14575,0,1,1,647.041,210.40257,14.16159,14.16159,0,0,1,632.8955,224.54808Zm0-26.2915a12.14575,12.14575,0,1,0,12.14551,12.146A12.15941,12.15941,0,0,0,632.8955,198.25658Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#fff"/>
|
||||
<path
|
||||
d="M638.43314,209.741l-4.38677-5.33454a1.29319,1.29319,0,0,0-1.96972-.03262l-4.69119,5.33454a1.29308,1.29308,0,0,0,1.942,1.70782l2.42714-2.76v6.92088a1.293,1.293,0,1,0,2.586,0v-6.74113l2.09505,2.54767a1.293,1.293,0,0,0,1.9974-1.64258Z"
|
||||
transform="translate(-266.27734 -155.25706)" fill="#fff"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
@@ -4,48 +4,158 @@
|
||||
"dashboard": "داشبورد",
|
||||
"first_page": "خوش آمدید",
|
||||
"login": "ورود",
|
||||
"login_navy": "ورود اعضای ناوگان",
|
||||
"login_welfare_services": "ورود اعضای خدمات رفاهی",
|
||||
"user_welfare_services": "خدمات رفاهی",
|
||||
"pending": "درحال اجرا...",
|
||||
"login_user_panel": "ورود به پنل کاربران",
|
||||
"register_navy": "ثبت نام اعضای ناوگان",
|
||||
"register_welfare_services": "ثبت نام اعضای خدمات رفاهی",
|
||||
"user_navy": "ناوگان",
|
||||
"page_not_found": "صفحه مورد نظر یافت نشد",
|
||||
"delete": "حذف",
|
||||
"resend_code": "ارسال مجدد کد",
|
||||
"Resend_code_in": "ارسال مجدد کد در",
|
||||
"seconds_later": "ثانیه دیگر",
|
||||
"upload_file_text": "بارگذاری فایل",
|
||||
"header": {
|
||||
"open_profile": "پروفایل",
|
||||
"edit_profile": "ویرایش پروفایل",
|
||||
"change_password": "تغییر رمز عبور",
|
||||
"logout": "خروج"
|
||||
},
|
||||
"notifications": {
|
||||
"error_static_text": "عملیات با خطا مواجه شد",
|
||||
"success_static_text": "عملیات با موفقیت انجام شد",
|
||||
"code": "کد",
|
||||
"success": "موفق",
|
||||
"error": "خطا",
|
||||
"pending": "درحال اجرا..."
|
||||
},
|
||||
"Permission": {
|
||||
"typography_you_dont_have_access": "شما دسترسی لازم برای مشاهده این صفحه را ندارید!",
|
||||
"button_back_dashboard": "بازگشت به صفحه اصلی"
|
||||
},
|
||||
"Titles": {
|
||||
"title_login_page": "صفحه ورود",
|
||||
"title_register_page": "صفحه ثبت نام",
|
||||
"title_login_navy_page": "ورود اعضای ناوگان",
|
||||
"title_login_welfare_services_page": "ورود اعضای خدمات رفاهی",
|
||||
"title_register_navy_page": "ثبت نام اعضای ناوگان",
|
||||
"title_register_welfare_services_page": "ثبت نام اعضای خدمات رفاهی"
|
||||
"title_register_welfare_services_page": "ثبت نام اعضای خدمات رفاهی",
|
||||
"title_custom_404": "صفحه یافت نشد",
|
||||
"title_custom_403": "عدم دسترسی",
|
||||
"title_custom_500": "خطای سرور"
|
||||
},
|
||||
"ErrorPage": {
|
||||
"custom_404": "صفحه مورد نظر یافت نشد | 404",
|
||||
"custom_500": "دسترسی به سامانه امکانپذیر نمی باشد دقایقی دیگر تلاش نمائید | 500",
|
||||
"custom_403": "شما دسترسی به این بخش را ندارید | 403",
|
||||
"link_routing_back_to": "بازگشت به",
|
||||
"link_routing_previuos_page": "صفحه قبل",
|
||||
"link_routing_main_page": "صفحه اصلی"
|
||||
},
|
||||
"sidebar": {
|
||||
"dashboard": "داشبورد",
|
||||
"loan-request": "درخواست وام",
|
||||
"loan-follow-up": "پیگیری درخواست"
|
||||
"add-request-loan": "درخواست وام",
|
||||
"followUp-loan": "پیگیری درخواست",
|
||||
"edit-request-loan": "ویرایش درخواست وام"
|
||||
},
|
||||
"Authorization": {
|
||||
"typography_your_login_is_valid_and_you_do_not_need_to_login_again": "شما دسترسی لازم به این صفحه را دارید نیاز به ورود مجدد نیست.",
|
||||
"typography_your_access_to_this_page_has_expired_Please_login_again": "دسترسی شما منقضی شده است لطفا دوباره ورود نمایید.",
|
||||
"typography_redirect_to": "رفتن به صفحه",
|
||||
"typography_redirect_to": "درحال رفتن به صفحه",
|
||||
"typography_routing_previuos_page": "صفحه قبل...",
|
||||
"typography_routing_dashbaord_page": "داشبورد..."
|
||||
},
|
||||
"LoginPage": {
|
||||
"text_field_user_name": "نام کاربری",
|
||||
"text_field_enter_your_username": "نام کاربری خود را وارد کنید",
|
||||
"text_field_password": "رمز عبور",
|
||||
"text_field_enter_your_password": "رمز عبور خود را وارد کنید",
|
||||
"text_field_phone_number": "شماره تلفن",
|
||||
"text_field_enter_your_phone_number": "شماره تلفن خود را وارد کنید",
|
||||
"text_field_verification_code": "کد یکبار مصرف",
|
||||
"text_field_enter_your_verification_code": "کد یکبار مصرف خود را وارد کنید",
|
||||
"button_submit": "ورود",
|
||||
"link_routing_back_to": "بازگشت به",
|
||||
"link_routing_previuos_page": "صفحه قبل",
|
||||
"link_routing_main_page": "صفحه اصلی",
|
||||
"error_message_required": "اجباری!",
|
||||
"button_make_account": "ایجاد حساب"
|
||||
"error_message_phone_number": "شماره تلفن خود را وارد کنید!",
|
||||
"error_message_verification_code": "کد یکبار مصرف خود را وارد کنید!",
|
||||
"button_make_account": "ایجاد حساب",
|
||||
"button_request_verification": "دریافت کد یکبارمصرف",
|
||||
"sent_token_to": "ارسال کد یکبار مصرف به شماره",
|
||||
"change_phone_number": "تغییر شماره"
|
||||
},
|
||||
"dashboard": {
|
||||
"RegisterPage": {
|
||||
"link_routing_back_to": "بازگشت به",
|
||||
"link_routing_register": "صفحه انتخاب نوع ثبت نام",
|
||||
"link_routing_login": "صفحه ورود",
|
||||
"text_field_phone_number": "شماره تلفن",
|
||||
"text_field_enter_your_phone_number": "شماره تلفن خود را وارد کنید",
|
||||
"text_field_verification_code": "کد یکبار مصرف",
|
||||
"text_field_enter_your_verification_code": "کد یکبار مصرف خود را وارد کنید",
|
||||
"text_field_national_id": "کد ملی",
|
||||
"text_field_enter_your_national_id": "کد ملی خود را وارد کنید",
|
||||
"text_field_navgan_id": "شماره ناوگان",
|
||||
"text_field_enter_your_navgan_id": "شماره ناوگان خود را وارد کنید",
|
||||
"error_message_phone_number": "لطفا شماره تلفن خود را وارد کنید!",
|
||||
"error_message_verification_code": "لطفا کد یکبار مصرف خود را وارد کنید!",
|
||||
"error_message_national_id": "لطفا کد ملی خود را وارد کنید!",
|
||||
"error_message_navgan_id": "لطفا کد ناوگان خود را وارد کنید!",
|
||||
"button_request_verification": "دریافت کد یکبارمصرف",
|
||||
"button_submit": "ثبت و ورود",
|
||||
"button_back_to_send_data": "بازگشت",
|
||||
"sent_token_to": "ارسال کد یکبار مصرف به شماره",
|
||||
"change_phone_number": "تغییر شماره",
|
||||
"complete_information": "مشخصات"
|
||||
},
|
||||
"Dashboard": {
|
||||
"dashboard_page": "داشبورد"
|
||||
},
|
||||
"LoanFollowUp": {
|
||||
"loan_follow_up_page": "پیگیری درخواست",
|
||||
"loan_request_correction": "اصلاح درخواست",
|
||||
"loan_request_detail": "مشاهده جزئیات",
|
||||
"request_number": "درخواست شماره"
|
||||
},
|
||||
"LoanRequest": {
|
||||
"loan_request_page": "ثبت درخواست وام",
|
||||
"personal_info": "اطلاعات شخصی",
|
||||
"uploading_documents": "اسناد",
|
||||
"error_message_name": "لطفا نام خود را وارد کنید!",
|
||||
"error_message_phone_number": "لطفا شماره تلفن خود را وارد کنید!",
|
||||
"error_message_vehicle_type": "لطفا نوع وسیله نقلیه خود را وارد کنید!",
|
||||
"error_message_plate_number": "لطفا شماره پلاک خود را وارد کنید!",
|
||||
"error_message_navgan_id": "لطفا کد ناوگان خود را وارد کنید!",
|
||||
"error_message_province": "لطفا استان خود را وارد کنید!",
|
||||
"error_message_national_code": "لطفا کد ملی خود را وارد کنید!",
|
||||
"error_message_shenasname_id": "لطفا شماره شناسنامه خود را وارد کنید!",
|
||||
"text_field_phone_number": "شماره تلفن",
|
||||
"text_field_enter_your_phone_number": "شماره تلفن خود را وارد کنید",
|
||||
"text_field_name": "نام",
|
||||
"text_field_enter_your_name": "نام خود را وارد کنید",
|
||||
"text_field_vehicle_type": "نام وسیله نقلیه",
|
||||
"text_field_enter_your_vehicle_type": "نام وسیله نقلیه خود را وارد کنید",
|
||||
"text_field_province": "استان",
|
||||
"text_field_enter_your_province": "استان خود را وارد کنید",
|
||||
"text_field_navgan_id": "شماره ناوگان",
|
||||
"text_field_enter_your_navgan_id": "شماره ناوگان خود را وارد کنید",
|
||||
"text_field_national_code": "کد ملی",
|
||||
"text_field_enter_your_national_code": "کد ملی خود را وارد کنید",
|
||||
"text_field_shenasname_id": "شماره شناسنامه",
|
||||
"text_field_enter_your_shenasname_id": "شماره شناسنامه خود را وارد کنید",
|
||||
"text_field_plate_number": "شماره پلاک",
|
||||
"text_field_enter_your_plate_number": "شماره پلاک خود را وارد کنید",
|
||||
"button_submit": "ثبت درخواست",
|
||||
"file_field_sherkat_naft_doc": "مجوز شرکت نفت",
|
||||
"file_field_estate_doc": "سند مالکیت",
|
||||
"file_field_agreement_doc": "موافقت نامه اصولی",
|
||||
"error_message_sherkat_naft_doc": "مجوز شرکت نفت خود را وارد کنید",
|
||||
"error_message_estate_doc": "سند مالکیت خود را وارد کنید",
|
||||
"error_message_agreement_doc": "موافقت نامه اصولی خود را وارد کنید",
|
||||
"file_field_shenasname_image": "تصویر شناسنامه",
|
||||
"file_field_national_card_image": "تصویر کارت ملی",
|
||||
"file_field_payan_khedmat_image": "تصویر کارت پایان خدمت",
|
||||
"error_message_national_card_image": "تصویر کارت ملی خود را وارد کنید",
|
||||
"error_message_shenasname_image": "تصویر شناسنامه خود را وارد کنید",
|
||||
"error_message_payan_khedmat_image": "تصویر کارت پایان خدمت خود را وارد کنید"
|
||||
},
|
||||
"EditLoanRequest": {
|
||||
"edit_loan_request_page": "ویرایش درخواست وام"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,92 +1,92 @@
|
||||
export const FA_DATATABLE_LOCALIZATION = {
|
||||
actions: "Actions",
|
||||
and: "and",
|
||||
cancel: "Cancel",
|
||||
changeFilterMode: "Change filter mode",
|
||||
changeSearchMode: "Change search mode",
|
||||
clearFilter: "Clear filter",
|
||||
clearSearch: "Clear search",
|
||||
clearSort: "Clear sort",
|
||||
clickToCopy: "Click to copy",
|
||||
collapse: "Collapse",
|
||||
collapseAll: "Collapse all",
|
||||
columnActions: "Column Actions",
|
||||
copiedToClipboard: "Copied to clipboard",
|
||||
dropToGroupBy: "Drop to group by {column}",
|
||||
edit: "Edit",
|
||||
expand: "Expand",
|
||||
expandAll: "Expand all",
|
||||
filterArrIncludes: "Includes",
|
||||
filterArrIncludesAll: "Includes all",
|
||||
filterArrIncludesSome: "Includes",
|
||||
filterBetween: "Between",
|
||||
filterBetweenInclusive: "Between Inclusive",
|
||||
filterByColumn: "Filter by {column}",
|
||||
filterContains: "Contains",
|
||||
filterEmpty: "Empty",
|
||||
filterEndsWith: "Ends With",
|
||||
filterEquals: "Equals",
|
||||
filterEqualsString: "Equals",
|
||||
filterFuzzy: "Fuzzy",
|
||||
filterGreaterThan: "Greater Than",
|
||||
filterGreaterThanOrEqualTo: "Greater Than Or Equal To",
|
||||
filterInNumberRange: "Between",
|
||||
filterIncludesString: "Contains",
|
||||
filterIncludesStringSensitive: "Contains",
|
||||
filterLessThan: "Less Than",
|
||||
filterLessThanOrEqualTo: "Less Than Or Equal To",
|
||||
filterMode: "Filter Mode: {filterType}",
|
||||
filterNotEmpty: "Not Empty",
|
||||
filterNotEquals: "Not Equals",
|
||||
filterStartsWith: "Starts With",
|
||||
filterWeakEquals: "Equals",
|
||||
filteringByColumn: "Filtering by {column} - {filterType} {filterValue}",
|
||||
goToFirstPage: "Go to first page",
|
||||
goToLastPage: "Go to last page",
|
||||
goToNextPage: "Go to next page",
|
||||
goToPreviousPage: "Go to previous page",
|
||||
grab: "Grab",
|
||||
groupByColumn: "Group by {column}",
|
||||
groupedBy: "Grouped by ",
|
||||
hideAll: "Hide all",
|
||||
hideColumn: "Hide {column} column",
|
||||
max: "Max",
|
||||
min: "Min",
|
||||
move: "Move",
|
||||
noRecordsToDisplay: "No records to display",
|
||||
noResultsFound: "No results found",
|
||||
of: "of",
|
||||
or: "or",
|
||||
pinToLeft: "Pin to left",
|
||||
pinToRight: "Pin to right",
|
||||
resetColumnSize: "Reset column size",
|
||||
resetOrder: "Reset order",
|
||||
rowActions: "Row Actions",
|
||||
rowNumber: "#",
|
||||
rowNumbers: "Row Numbers",
|
||||
rowsPerPage: "Rows per page",
|
||||
save: "Save",
|
||||
search: "Search",
|
||||
selectedCountOfRowCountRowsSelected:
|
||||
"{selectedCount} of {rowCount} row(s) selected",
|
||||
select: "Select",
|
||||
showAll: "Show all",
|
||||
showAllColumns: "Show all columns",
|
||||
showHideColumns: "Show/Hide columns",
|
||||
showHideFilters: "Show/Hide filters",
|
||||
showHideSearch: "Show/Hide search",
|
||||
sortByColumnAsc: "Sort by {column} ascending",
|
||||
sortByColumnDesc: "Sort by {column} descending",
|
||||
sortedByColumnAsc: "Sorted by {column} ascending",
|
||||
sortedByColumnDesc: "Sorted by {column} descending",
|
||||
thenBy: ", then by ",
|
||||
toggleDensity: "Toggle density",
|
||||
toggleFullScreen: "Toggle full screen",
|
||||
toggleSelectAll: "Toggle select all",
|
||||
toggleSelectRow: "Toggle select row",
|
||||
toggleVisibility: "Toggle visibility",
|
||||
ungroupByColumn: "Ungroup by {column}",
|
||||
unpin: "Unpin",
|
||||
unpinAll: "Unpin all",
|
||||
unsorted: "Unsorted",
|
||||
actions: "Actions",
|
||||
and: "and",
|
||||
cancel: "Cancel",
|
||||
changeFilterMode: "Change filter mode",
|
||||
changeSearchMode: "Change search mode",
|
||||
clearFilter: "Clear filter",
|
||||
clearSearch: "Clear search",
|
||||
clearSort: "Clear sort",
|
||||
clickToCopy: "Click to copy",
|
||||
collapse: "Collapse",
|
||||
collapseAll: "Collapse all",
|
||||
columnActions: "Column Actions",
|
||||
copiedToClipboard: "Copied to clipboard",
|
||||
dropToGroupBy: "Drop to group by {column}",
|
||||
edit: "Edit",
|
||||
expand: "Expand",
|
||||
expandAll: "Expand all",
|
||||
filterArrIncludes: "Includes",
|
||||
filterArrIncludesAll: "Includes all",
|
||||
filterArrIncludesSome: "Includes",
|
||||
filterBetween: "Between",
|
||||
filterBetweenInclusive: "Between Inclusive",
|
||||
filterByColumn: "Filter by {column}",
|
||||
filterContains: "Contains",
|
||||
filterEmpty: "Empty",
|
||||
filterEndsWith: "Ends With",
|
||||
filterEquals: "Equals",
|
||||
filterEqualsString: "Equals",
|
||||
filterFuzzy: "Fuzzy",
|
||||
filterGreaterThan: "Greater Than",
|
||||
filterGreaterThanOrEqualTo: "Greater Than Or Equal To",
|
||||
filterInNumberRange: "Between",
|
||||
filterIncludesString: "Contains",
|
||||
filterIncludesStringSensitive: "Contains",
|
||||
filterLessThan: "Less Than",
|
||||
filterLessThanOrEqualTo: "Less Than Or Equal To",
|
||||
filterMode: "Filter Mode: {filterType}",
|
||||
filterNotEmpty: "Not Empty",
|
||||
filterNotEquals: "Not Equals",
|
||||
filterStartsWith: "Starts With",
|
||||
filterWeakEquals: "Equals",
|
||||
filteringByColumn: "Filtering by {column} - {filterType} {filterValue}",
|
||||
goToFirstPage: "Go to first page",
|
||||
goToLastPage: "Go to last page",
|
||||
goToNextPage: "Go to next page",
|
||||
goToPreviousPage: "Go to previous page",
|
||||
grab: "Grab",
|
||||
groupByColumn: "Group by {column}",
|
||||
groupedBy: "Grouped by ",
|
||||
hideAll: "Hide all",
|
||||
hideColumn: "Hide {column} column",
|
||||
max: "Max",
|
||||
min: "Min",
|
||||
move: "Move",
|
||||
noRecordsToDisplay: "No records to display",
|
||||
noResultsFound: "No results found",
|
||||
of: "of",
|
||||
or: "or",
|
||||
pinToLeft: "Pin to left",
|
||||
pinToRight: "Pin to right",
|
||||
resetColumnSize: "Reset column size",
|
||||
resetOrder: "Reset order",
|
||||
rowActions: "Row Actions",
|
||||
rowNumber: "#",
|
||||
rowNumbers: "Row Numbers",
|
||||
rowsPerPage: "Rows per page",
|
||||
save: "Save",
|
||||
search: "Search",
|
||||
selectedCountOfRowCountRowsSelected:
|
||||
"{selectedCount} of {rowCount} row(s) selected",
|
||||
select: "Select",
|
||||
showAll: "Show all",
|
||||
showAllColumns: "Show all columns",
|
||||
showHideColumns: "Show/Hide columns",
|
||||
showHideFilters: "Show/Hide filters",
|
||||
showHideSearch: "Show/Hide search",
|
||||
sortByColumnAsc: "Sort by {column} ascending",
|
||||
sortByColumnDesc: "Sort by {column} descending",
|
||||
sortedByColumnAsc: "Sorted by {column} ascending",
|
||||
sortedByColumnDesc: "Sorted by {column} descending",
|
||||
thenBy: ", then by ",
|
||||
toggleDensity: "Toggle density",
|
||||
toggleFullScreen: "Toggle full screen",
|
||||
toggleSelectAll: "Toggle select all",
|
||||
toggleSelectRow: "Toggle select row",
|
||||
toggleVisibility: "Toggle visibility",
|
||||
ungroupByColumn: "Ungroup by {column}",
|
||||
unpin: "Unpin",
|
||||
unpinAll: "Unpin all",
|
||||
unsorted: "Unsorted",
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import DashboardLayouts from "@/layouts/dashboardLayouts";
|
||||
|
||||
const DashboardFirstComponent = () => {
|
||||
return <DashboardLayouts></DashboardLayouts>;
|
||||
const FirstComponent = () => {
|
||||
return <DashboardLayouts></DashboardLayouts>;
|
||||
};
|
||||
|
||||
export default DashboardFirstComponent;
|
||||
export default FirstComponent;
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
import CenterLayout from "@/layouts/CenterLayout";
|
||||
import DashboardLayouts from "@/layouts/dashboardLayouts";
|
||||
import useUser from "@/lib/app/hooks/useUser";
|
||||
import { useTranslations } from "next-intl";
|
||||
import React from "react";
|
||||
|
||||
const DashboardLoanFollowUpComponent = () => {
|
||||
const t = useTranslations();
|
||||
const { token } = useUser();
|
||||
return (
|
||||
<DashboardLayouts>
|
||||
<CenterLayout>
|
||||
<p>چه کشکی چه پشمی</p>
|
||||
</CenterLayout>
|
||||
</DashboardLayouts>
|
||||
);
|
||||
};
|
||||
|
||||
export default DashboardLoanFollowUpComponent;
|
||||
@@ -1,19 +0,0 @@
|
||||
import CenterLayout from "@/layouts/CenterLayout";
|
||||
import DashboardLayouts from "@/layouts/dashboardLayouts";
|
||||
import useUser from "@/lib/app/hooks/useUser";
|
||||
import { useTranslations } from "next-intl";
|
||||
import React from "react";
|
||||
|
||||
const DashboardLoanRequestComponent = () => {
|
||||
const t = useTranslations();
|
||||
const { token } = useUser();
|
||||
return (
|
||||
<DashboardLayouts>
|
||||
<CenterLayout>
|
||||
<p>نکنه وامم میخوای؟؟؟</p>
|
||||
</CenterLayout>
|
||||
</DashboardLayouts>
|
||||
);
|
||||
};
|
||||
|
||||
export default DashboardLoanRequestComponent;
|
||||
@@ -0,0 +1,489 @@
|
||||
import Notifications from "@/core/components/notifications";
|
||||
import SelectBox from "@/core/components/SelectBox";
|
||||
import StyledForm from "@/core/components/StyledForm";
|
||||
import UploadSystem from "@/core/components/UploadSystem";
|
||||
import {GET_PROVINCE_LIST, SEND_LOAN_REQUEST_NAVGAN,} from "@/core/data/apiRoutes";
|
||||
import useDirection from "@/lib/app/hooks/useDirection";
|
||||
import useUser from "@/lib/app/hooks/useUser";
|
||||
import DataSaverOnIcon from "@mui/icons-material/DataSaverOn";
|
||||
import {Box, Button, Stack, TextField} from "@mui/material";
|
||||
import axios from "axios";
|
||||
import {Field, Formik} from "formik";
|
||||
import {useTranslations} from "next-intl";
|
||||
import {useEffect, useState} from "react";
|
||||
import * as Yup from "yup";
|
||||
|
||||
const AddFormComponent = () => {
|
||||
const t = useTranslations();
|
||||
const {directionApp} = useDirection();
|
||||
const {token} = useUser();
|
||||
|
||||
// get province list
|
||||
const [provinceList, setProvinceList] = useState([]);
|
||||
useEffect(() => {
|
||||
axios
|
||||
.get(GET_PROVINCE_LIST, {
|
||||
headers: {Authorization: `Bearer ${token}`},
|
||||
})
|
||||
.then(({data}) => {
|
||||
const formattedData = data.map((province, index) => ({
|
||||
id: index,
|
||||
name: province.name,
|
||||
value: province.id,
|
||||
}));
|
||||
setProvinceList(formattedData);
|
||||
})
|
||||
.catch((error) => {
|
||||
Notifications(t, error.response);
|
||||
});
|
||||
}, []);
|
||||
// end get province list
|
||||
|
||||
// upload files
|
||||
const [selectedImageShenasname, setSelectedImageShenasname] = useState(
|
||||
"/images/upload-image.svg"
|
||||
);
|
||||
const [fileTypeShenasname, setFileTypeShenasname] = useState(null);
|
||||
const [fileNameShenasname, setFileNameShenasname] = useState(null);
|
||||
const [selectedImageNationalCard, setSelectedImageNationalCard] = useState(
|
||||
"/images/upload-image.svg"
|
||||
);
|
||||
const [fileTypeNationalCard, setFileTypeNationalCard] = useState(null);
|
||||
const [fileNameNationalCard, setFileNameNationalCard] = useState(null);
|
||||
|
||||
const handleUploadChangeShenasname = (event, setFieldValue) => {
|
||||
const uploadedFile = event.target?.files?.[0];
|
||||
if (uploadedFile) {
|
||||
const fileType = event.target?.files?.[0].type;
|
||||
const fileName = event.target?.files?.[0].name;
|
||||
setSelectedImageShenasname(URL.createObjectURL(uploadedFile));
|
||||
setFileTypeShenasname(fileType);
|
||||
setFileNameShenasname(fileName);
|
||||
setFieldValue("shenasname_img", uploadedFile);
|
||||
}
|
||||
};
|
||||
const handleUploadChangeNationalCard = (event, setFieldValue) => {
|
||||
const uploadedFile = event.target?.files?.[0];
|
||||
const fileType = event.target.files[0].type;
|
||||
const fileName = event.target.files[0].name;
|
||||
if (uploadedFile) {
|
||||
setSelectedImageNationalCard(URL.createObjectURL(uploadedFile));
|
||||
setFileTypeNationalCard(fileType);
|
||||
setFileNameNationalCard(fileName);
|
||||
setFieldValue("national_card_img", uploadedFile);
|
||||
}
|
||||
};
|
||||
// end upload files
|
||||
|
||||
// initial values
|
||||
const initialValues = {
|
||||
name: "",
|
||||
phone_number: "",
|
||||
vehicle_type: "",
|
||||
plate_number: "",
|
||||
province: "",
|
||||
navgan_id: "",
|
||||
national_code: "",
|
||||
shenasname_id: "",
|
||||
national_card_img: null,
|
||||
shenasname_img: null,
|
||||
};
|
||||
// end initial values
|
||||
|
||||
// validation
|
||||
const validationSchema = Yup.object().shape({
|
||||
name: Yup.string().required(t("LoanRequest.error_message_name")),
|
||||
phone_number: Yup.string().required(
|
||||
t("LoanRequest.error_message_phone_number")
|
||||
),
|
||||
vehicle_type: Yup.string().required(
|
||||
t("LoanRequest.error_message_vehicle_type")
|
||||
),
|
||||
plate_number: Yup.string().required(
|
||||
t("LoanRequest.error_message_plate_number")
|
||||
),
|
||||
navgan_id: Yup.string().required(t("LoanRequest.error_message_navgan_id")),
|
||||
province: Yup.string().required(t("LoanRequest.error_message_province")),
|
||||
national_code: Yup.string().required(
|
||||
t("LoanRequest.error_message_national_code")
|
||||
),
|
||||
shenasname_id: Yup.string().required(
|
||||
t("LoanRequest.error_message_shenasname_id")
|
||||
),
|
||||
});
|
||||
// end validation
|
||||
|
||||
// submit
|
||||
const handleSubmit = async (values, props) => {
|
||||
Notifications(t, undefined);
|
||||
const formData = new FormData();
|
||||
formData.append("name", values.name);
|
||||
formData.append("phone_number", values.phone_number);
|
||||
formData.append("vehicle_type", values.vehicle_type);
|
||||
formData.append("plate_number", values.plate_number);
|
||||
formData.append("province_id", values.province);
|
||||
formData.append("navgan_id", values.navgan_id);
|
||||
formData.append("national_code", values.national_code);
|
||||
formData.append("shenasname_id", values.shenasname_id);
|
||||
if (values.shenasname_img != null)
|
||||
formData.append("shenasname_image", values.shenasname_img);
|
||||
if (values.national_card_img != null)
|
||||
formData.append("national_card_image", values.national_card_img);
|
||||
|
||||
await axios
|
||||
.post(SEND_LOAN_REQUEST_NAVGAN, formData, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${token}`,
|
||||
"Content-Type": "multipart/form-data",
|
||||
},
|
||||
})
|
||||
.then(function (response) {
|
||||
Notifications(t, response);
|
||||
})
|
||||
.catch(function (error) {
|
||||
Notifications(t, error.response);
|
||||
props.setSubmitting(false);
|
||||
});
|
||||
};
|
||||
// end submit
|
||||
|
||||
return (
|
||||
<Formik
|
||||
initialValues={initialValues}
|
||||
onSubmit={handleSubmit}
|
||||
validationSchema={validationSchema}
|
||||
>
|
||||
{(props) => (
|
||||
<Stack
|
||||
spacing={2}
|
||||
sx={{
|
||||
p: 1,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<StyledForm sx={{width: "100%"}}>
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
flexDirection: {xs: "column", sm: "row"},
|
||||
alignItems: "start",
|
||||
justifyContent: "center",
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
as={TextField}
|
||||
sx={{width: "100%"}}
|
||||
name="name"
|
||||
variant="outlined"
|
||||
size="small"
|
||||
label={t("LoanRequest.text_field_name")}
|
||||
placeholder={t("LoanRequest.text_field_enter_your_name")}
|
||||
type={"text"}
|
||||
error={props.touched.name && props.errors.name ? true : false}
|
||||
fullWidth
|
||||
helperText={props.touched.name ? props.errors.name : null}
|
||||
/>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
as={TextField}
|
||||
sx={{width: "100%"}}
|
||||
name="phone_number"
|
||||
variant="outlined"
|
||||
size="small"
|
||||
label={t("LoanRequest.text_field_phone_number")}
|
||||
placeholder={t(
|
||||
"LoanRequest.text_field_enter_your_phone_number"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
props.touched.phone_number && props.errors.phone_number
|
||||
? true
|
||||
: false
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.phone_number
|
||||
? props.errors.phone_number
|
||||
: null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
flexDirection: {xs: "column", sm: "row"},
|
||||
alignItems: "start",
|
||||
justifyContent: "center",
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
as={TextField}
|
||||
sx={{width: "100%"}}
|
||||
name="vehicle_type"
|
||||
variant="outlined"
|
||||
size="small"
|
||||
label={t("LoanRequest.text_field_vehicle_type")}
|
||||
placeholder={t(
|
||||
"LoanRequest.text_field_enter_your_vehicle_type"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
props.touched.vehicle_type && props.errors.vehicle_type
|
||||
? true
|
||||
: false
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.vehicle_type
|
||||
? props.errors.vehicle_type
|
||||
: null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
as={TextField}
|
||||
sx={{width: "100%"}}
|
||||
name="plate_number"
|
||||
variant="outlined"
|
||||
size="small"
|
||||
label={t("LoanRequest.text_field_plate_number")}
|
||||
placeholder={t(
|
||||
"LoanRequest.text_field_enter_your_plate_number"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
props.touched.plate_number && props.errors.plate_number
|
||||
? true
|
||||
: false
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.plate_number
|
||||
? props.errors.plate_number
|
||||
: null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
name="province"
|
||||
label={t("LoanRequest.text_field_province")} // t("LoanRequest.text_field_enter_your_province")
|
||||
size="small"
|
||||
selectType="province"
|
||||
component={SelectBox}
|
||||
selectors={provinceList}
|
||||
select={props.values.province}
|
||||
setFieldValue={props.setFieldValue}
|
||||
setFieldTouched={props.setFieldTouched}
|
||||
error={
|
||||
props.touched.gender && props.errors.province ? true : false
|
||||
}
|
||||
helperText={
|
||||
props.touched.gender ? props.errors.province : null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
flexDirection: {xs: "column", sm: "row"},
|
||||
alignItems: "start",
|
||||
justifyContent: "center",
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
as={TextField}
|
||||
sx={{width: "100%"}}
|
||||
name="navgan_id"
|
||||
variant="outlined"
|
||||
size="small"
|
||||
label={t("LoanRequest.text_field_navgan_id")}
|
||||
placeholder={t("LoanRequest.text_field_enter_your_navgan_id")}
|
||||
type={"text"}
|
||||
error={
|
||||
props.touched.navgan_id && props.errors.navgan_id
|
||||
? true
|
||||
: false
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.navgan_id ? props.errors.navgan_id : null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
as={TextField}
|
||||
sx={{width: "100%"}}
|
||||
name="national_code"
|
||||
variant="outlined"
|
||||
size="small"
|
||||
label={t("LoanRequest.text_field_national_code")}
|
||||
placeholder={t(
|
||||
"LoanRequest.text_field_enter_your_national_code"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
props.touched.national_code && props.errors.national_code
|
||||
? true
|
||||
: false
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.national_code
|
||||
? props.errors.national_code
|
||||
: null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
as={TextField}
|
||||
sx={{width: "100%"}}
|
||||
name="shenasname_id"
|
||||
variant="outlined"
|
||||
size="small"
|
||||
label={t("LoanRequest.text_field_shenasname_id")}
|
||||
placeholder={t(
|
||||
"LoanRequest.text_field_enter_your_shenasname_id"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
props.touched.shenasname_id && props.errors.shenasname_id
|
||||
? true
|
||||
: false
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.shenasname_id
|
||||
? props.errors.shenasname_id
|
||||
: null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
flexDirection: {xs: "column", sm: "row"},
|
||||
alignItems: "center",
|
||||
justifyContent: "space-around",
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<UploadSystem
|
||||
selectedImage={selectedImageShenasname}
|
||||
handleUploadChange={(e) =>
|
||||
handleUploadChangeShenasname(e, props.setFieldValue)
|
||||
}
|
||||
setselectedImage={setSelectedImageShenasname}
|
||||
setFieldValue={props.setFieldValue}
|
||||
fieldname="shenasname_img"
|
||||
fileType={fileTypeShenasname}
|
||||
fileName={fileNameShenasname}
|
||||
imageAlt={t("app_name")}
|
||||
imageSize={[300 /*width*/, 150 /*height*/]}
|
||||
label={t("LoanRequest.file_field_shenasname_image")}
|
||||
/>
|
||||
<UploadSystem
|
||||
selectedImage={selectedImageNationalCard}
|
||||
handleUploadChange={(e) =>
|
||||
handleUploadChangeNationalCard(e, props.setFieldValue)
|
||||
}
|
||||
setselectedImage={setSelectedImageNationalCard}
|
||||
setFieldValue={props.setFieldValue}
|
||||
fieldname="national_card_img"
|
||||
fileType={fileTypeNationalCard}
|
||||
fileName={fileNameNationalCard}
|
||||
imageAlt={t("app_name")}
|
||||
imageSize={[300 /*width*/, 150 /*height*/]}
|
||||
label={t("LoanRequest.file_field_national_card_image")}
|
||||
/>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
flexDirection: {xs: "column", sm: "row"},
|
||||
alignItems: "center",
|
||||
mx: "auto",
|
||||
width: {xs: "100%", sm: "30%", md: "25%"},
|
||||
}}
|
||||
>
|
||||
<Button
|
||||
fullWidth
|
||||
type="submit"
|
||||
variant="contained"
|
||||
size="large"
|
||||
sx={{mt: 2}}
|
||||
endIcon={<DataSaverOnIcon/>}
|
||||
disabled={props.isSubmitting ? true : false}
|
||||
>
|
||||
{t("LoanRequest.button_submit")}
|
||||
</Button>
|
||||
</Box>
|
||||
</StyledForm>
|
||||
</Stack>
|
||||
)}
|
||||
</Formik>
|
||||
);
|
||||
};
|
||||
|
||||
export default AddFormComponent;
|
||||
30
src/components/dashboard/navgan/add-request-loan/index.jsx
Normal file
30
src/components/dashboard/navgan/add-request-loan/index.jsx
Normal file
@@ -0,0 +1,30 @@
|
||||
import CenterLayout from "@/layouts/CenterLayout";
|
||||
import DashboardLayouts from "@/layouts/dashboardLayouts";
|
||||
import useUser from "@/lib/app/hooks/useUser";
|
||||
import {Box, Chip, Divider} from "@mui/material";
|
||||
import {useTranslations} from "next-intl";
|
||||
import AddFormComponent from "@/components/dashboard/navgan/add-request-loan/forms/AddForm";
|
||||
|
||||
const LoanRequestComponent = () => {
|
||||
const t = useTranslations();
|
||||
const {user} = useUser();
|
||||
|
||||
return (
|
||||
<DashboardLayouts>
|
||||
<CenterLayout>
|
||||
<Box sx={{width: "80%", my: 2}}>
|
||||
<Divider>
|
||||
<Chip
|
||||
label={`${t("LoanRequest.loan_request_page")} | ${
|
||||
user.type_name
|
||||
}`}
|
||||
/>
|
||||
</Divider>
|
||||
</Box>
|
||||
<AddFormComponent/>
|
||||
</CenterLayout>
|
||||
</DashboardLayouts>
|
||||
);
|
||||
};
|
||||
|
||||
export default LoanRequestComponent;
|
||||
@@ -0,0 +1,29 @@
|
||||
import {Card, CardContent, CardHeader, Grid, Typography} from "@mui/material";
|
||||
import SellIcon from '@mui/icons-material/Sell';
|
||||
import {useTranslations} from "next-intl";
|
||||
|
||||
|
||||
const RequestCard = ({item}) => {
|
||||
const t = useTranslations();
|
||||
return (
|
||||
<Grid item xs={12} md={6} lg={4}>
|
||||
<Card sx={{
|
||||
width: "100%",
|
||||
boxShadow: "rgba(0, 0, 0, 0.15) 0px 5px 15px 0px"
|
||||
}}>
|
||||
<CardHeader
|
||||
avatar={<SellIcon color="primary"/>}
|
||||
title={`${t("LoanFollowUp.request_number")}: (${item.id})`}
|
||||
subheader={item.latest_history_created_at}
|
||||
/>
|
||||
<CardContent sx={{pt: 0}}>
|
||||
<Typography variant="button">
|
||||
{item.loan_state}
|
||||
</Typography>
|
||||
</CardContent>
|
||||
</Card>
|
||||
</Grid>
|
||||
);
|
||||
};
|
||||
|
||||
export default RequestCard;
|
||||
60
src/components/dashboard/navgan/followUp-loan/index.jsx
Normal file
60
src/components/dashboard/navgan/followUp-loan/index.jsx
Normal file
@@ -0,0 +1,60 @@
|
||||
import DashboardLayouts from "@/layouts/dashboardLayouts";
|
||||
import {
|
||||
Grid,
|
||||
Stack,
|
||||
} from "@mui/material";
|
||||
import {useEffect, useState} from "react";
|
||||
import {SHOW_LOAN_REQUEST_NAVGAN} from "@/core/data/apiRoutes";
|
||||
import useLoading from "@/lib/app/hooks/useLoading";
|
||||
import useRequest from "@/lib/app/hooks/useRequest";
|
||||
import moment from "jalali-moment";
|
||||
import RequestCard from "@/components/dashboard/navgan/followUp-loan/RequestCard";
|
||||
|
||||
const LoanFollowUpComponent = () => {
|
||||
const requestServer = useRequest();
|
||||
const {setLoadingPage} = useLoading();
|
||||
const [requestsList, setRequestsList] = useState([]);
|
||||
// get form data
|
||||
useEffect(() => {
|
||||
setLoadingPage(true)
|
||||
requestServer(SHOW_LOAN_REQUEST_NAVGAN, "get", {auth: true, notification: false})
|
||||
.then(function ({data}) {
|
||||
const items = data.data;
|
||||
const formattedData = items.map((item, index) => ({
|
||||
id: item.id,
|
||||
latest_history_created_at: moment(item.latest_history_created_at).locale("fa").format("HH:mm | YYYY/MM/DD"),
|
||||
state_id: item.state_id,
|
||||
loan_state: item.loan_state,
|
||||
}));
|
||||
setRequestsList(formattedData);
|
||||
setLoadingPage(false)
|
||||
})
|
||||
.catch(function (error) {
|
||||
})
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<DashboardLayouts>
|
||||
<Stack
|
||||
spacing={2}
|
||||
sx={{
|
||||
p: 4,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Grid
|
||||
container
|
||||
columnSpacing={2}
|
||||
rowSpacing={2}
|
||||
sx={{alignItems: "start", justifyContent: "center"}}
|
||||
>
|
||||
{requestsList.map((item, index) => (
|
||||
<RequestCard item={item} key={item.id}/>
|
||||
))}
|
||||
</Grid>
|
||||
</Stack>
|
||||
</DashboardLayouts>
|
||||
);
|
||||
};
|
||||
|
||||
export default LoanFollowUpComponent;
|
||||
@@ -0,0 +1,424 @@
|
||||
import StyledForm from "@/core/components/StyledForm";
|
||||
import UploadSystem from "@/core/components/UploadSystem";
|
||||
import {GET_PROVINCE_LIST, SEND_LOAN_REQUEST_WELFARE} from "@/core/data/apiRoutes";
|
||||
import useDirection from "@/lib/app/hooks/useDirection";
|
||||
import useUser from "@/lib/app/hooks/useUser";
|
||||
import DataSaverOnIcon from "@mui/icons-material/DataSaverOn";
|
||||
import {Box, Button, Chip, Divider, Stack, TextField} from "@mui/material";
|
||||
import {Field, Formik} from "formik";
|
||||
import {useTranslations} from "next-intl";
|
||||
import {useEffect, useState} from "react";
|
||||
import * as Yup from "yup";
|
||||
import SelectBox from "@/core/components/SelectBox";
|
||||
import useRequest from "@/lib/app/hooks/useRequest";
|
||||
|
||||
const AddFormComponent = () => {
|
||||
const t = useTranslations();
|
||||
const {directionApp} = useDirection();
|
||||
const {token} = useUser();
|
||||
const requestServer = useRequest()
|
||||
|
||||
const [provinceList, setProvinceList] = useState([]);
|
||||
|
||||
// get province list
|
||||
useEffect(() => {
|
||||
requestServer(GET_PROVINCE_LIST, "get", {auth: true, notification: false})
|
||||
.then(function ({data}) {
|
||||
const formattedData = data.map((province, index) => ({
|
||||
id: index,
|
||||
name: province.name,
|
||||
value: province.id,
|
||||
}));
|
||||
setProvinceList(formattedData);
|
||||
}).catch(() => {
|
||||
})
|
||||
}, []);
|
||||
// end get province list
|
||||
|
||||
// initial values, validation and request action of form
|
||||
const initialValues = {
|
||||
name: "",
|
||||
phone_number: "",
|
||||
province: "",
|
||||
national_code: "",
|
||||
shenasname_id: "",
|
||||
sherkat_naft_doc: null,
|
||||
estate_doc: null,
|
||||
agreement_doc: null,
|
||||
national_card_image: null,
|
||||
shenasname_image: null,
|
||||
payan_khedmat_image: null,
|
||||
};
|
||||
|
||||
const validationSchema = Yup.object().shape({
|
||||
name: Yup.string().required(t("LoanRequest.error_message_name")),
|
||||
phone_number: Yup.string().required(
|
||||
t("LoanRequest.error_message_phone_number")
|
||||
),
|
||||
province: Yup.string().required(t("LoanRequest.error_message_province")),
|
||||
national_code: Yup.string().required(
|
||||
t("LoanRequest.error_message_national_code")
|
||||
),
|
||||
shenasname_id: Yup.string().required(
|
||||
t("LoanRequest.error_message_shenasname_id")
|
||||
),
|
||||
sherkat_naft_doc: Yup.mixed().required(t("LoanRequest.error_message_sherkat_naft_doc")),
|
||||
estate_doc: Yup.mixed().required(t("LoanRequest.error_message_estate_doc")),
|
||||
agreement_doc: Yup.mixed().required(t("LoanRequest.error_message_agreement_doc")),
|
||||
national_card_image: Yup.mixed().required(t("LoanRequest.error_message_national_card_image")),
|
||||
shenasname_image: Yup.mixed().required(t("LoanRequest.error_message_shenasname_image")),
|
||||
payan_khedmat_image: Yup.mixed().required(t("LoanRequest.error_message_payan_khedmat_image")),
|
||||
});
|
||||
const handleSubmit = (values, props) => {
|
||||
const formData = new FormData();
|
||||
formData.append("name", values.name);
|
||||
formData.append("phone_number", values.phone_number);
|
||||
formData.append("province_id", values.province);
|
||||
formData.append("national_id", values.national_code);
|
||||
formData.append("shenasname_id", values.shenasname_id);
|
||||
if (values.sherkat_naft_doc != null)
|
||||
formData.append("sherkat_naft_doc", values.sherkat_naft_doc);
|
||||
if (values.estate_doc != null)
|
||||
formData.append("estate_doc", values.estate_doc);
|
||||
if (values.agreement_doc != null)
|
||||
formData.append("agreement_doc", values.agreement_doc);
|
||||
if (values.shenasname_image != null)
|
||||
formData.append("shenasname_image", values.shenasname_image);
|
||||
if (values.national_card_image != null)
|
||||
formData.append("national_card_image", values.national_card_image);
|
||||
if (values.payan_khedmat_image != null)
|
||||
formData.append("payan_khedmat_image", values.payan_khedmat_image);
|
||||
requestServer(SEND_LOAN_REQUEST_WELFARE, "post", {auth: true, data: formData})
|
||||
.then(function (response) {
|
||||
})
|
||||
.catch(function (error) {
|
||||
})
|
||||
.finally(function () {
|
||||
props.setSubmitting(false);
|
||||
});
|
||||
};
|
||||
// end initial values, validation and request action of form
|
||||
|
||||
return (
|
||||
<Formik
|
||||
initialValues={initialValues}
|
||||
onSubmit={handleSubmit}
|
||||
validationSchema={validationSchema}
|
||||
>
|
||||
{(props) => (
|
||||
<Stack
|
||||
spacing={2}
|
||||
sx={{
|
||||
p: 1,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<StyledForm sx={{width: "100%"}}>
|
||||
<Box sx={{my: 1}}>
|
||||
<Divider>
|
||||
<Chip
|
||||
label={t("LoanRequest.personal_info")}
|
||||
/>
|
||||
</Divider>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
flexDirection: {xs: "column", sm: "row"},
|
||||
alignItems: "start",
|
||||
justifyContent: "center",
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
as={TextField}
|
||||
sx={{width: "100%"}}
|
||||
name="name"
|
||||
variant="outlined"
|
||||
size="small"
|
||||
label={t("LoanRequest.text_field_name")}
|
||||
placeholder={t("LoanRequest.text_field_enter_your_name")}
|
||||
type={"text"}
|
||||
error={!!(props.touched.name && props.errors.name)}
|
||||
fullWidth
|
||||
helperText={props.touched.name ? props.errors.name : null}
|
||||
/>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
as={TextField}
|
||||
sx={{width: "100%"}}
|
||||
name="phone_number"
|
||||
variant="outlined"
|
||||
size="small"
|
||||
label={t("LoanRequest.text_field_phone_number")}
|
||||
placeholder={t(
|
||||
"LoanRequest.text_field_enter_your_phone_number"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
!!(props.touched.phone_number && props.errors.phone_number)
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.phone_number
|
||||
? props.errors.phone_number
|
||||
: null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
name="province"
|
||||
label={t("LoanRequest.text_field_province")} // t("LoanRequest.text_field_enter_your_province")
|
||||
size="small"
|
||||
selectType="province"
|
||||
component={SelectBox}
|
||||
selectors={provinceList}
|
||||
select={props.values.province}
|
||||
setFieldValue={props.setFieldValue}
|
||||
setFieldTouched={props.setFieldTouched}
|
||||
error={
|
||||
!!(props.touched.province && props.errors.province)
|
||||
}
|
||||
helperText={
|
||||
props.touched.province ? props.errors.province : null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
flexDirection: {xs: "column", sm: "row"},
|
||||
alignItems: "start",
|
||||
justifyContent: "center",
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
as={TextField}
|
||||
sx={{width: "100%"}}
|
||||
name="national_code"
|
||||
variant="outlined"
|
||||
size="small"
|
||||
label={t("LoanRequest.text_field_national_code")}
|
||||
placeholder={t(
|
||||
"LoanRequest.text_field_enter_your_national_code"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
!!(props.touched.national_code && props.errors.national_code)
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.national_code
|
||||
? props.errors.national_code
|
||||
: null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
as={TextField}
|
||||
sx={{width: "100%"}}
|
||||
name="shenasname_id"
|
||||
variant="outlined"
|
||||
size="small"
|
||||
label={t("LoanRequest.text_field_shenasname_id")}
|
||||
placeholder={t(
|
||||
"LoanRequest.text_field_enter_your_shenasname_id"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
!!(props.touched.shenasname_id && props.errors.shenasname_id)
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.shenasname_id
|
||||
? props.errors.shenasname_id
|
||||
: null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
</Box>
|
||||
<Box sx={{my: 1}}>
|
||||
<Divider>
|
||||
<Chip
|
||||
label={t("LoanRequest.uploading_documents")}
|
||||
/>
|
||||
</Divider>
|
||||
</Box>
|
||||
<Stack spacing={{xs: 1, sm: 2}} direction="row" useFlexGap flexWrap="wrap"
|
||||
sx={{justifyContent: "center"}}>
|
||||
<Box sx={{
|
||||
mx: {xs: 0, sm: 1},
|
||||
maxWidth: "200px"
|
||||
}}>
|
||||
<UploadSystem
|
||||
setFieldValue={props.setFieldValue}
|
||||
fieldName="sherkat_naft_doc"
|
||||
imageAlt={t("app_name")}
|
||||
label={t("LoanRequest.file_field_sherkat_naft_doc")}
|
||||
enableDelete={false}
|
||||
error={
|
||||
!!(props.touched.sherkat_naft_doc && props.errors.sherkat_naft_doc)
|
||||
}
|
||||
helperText={
|
||||
props.touched.sherkat_naft_doc ? props.errors.sherkat_naft_doc : null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box sx={{
|
||||
mx: {xs: 0, sm: 1},
|
||||
maxWidth: "200px"
|
||||
}}>
|
||||
<UploadSystem
|
||||
setFieldValue={props.setFieldValue}
|
||||
fieldName="estate_doc"
|
||||
imageAlt={t("app_name")}
|
||||
label={t("LoanRequest.file_field_estate_doc")}
|
||||
enableDelete={false}
|
||||
error={
|
||||
!!(props.touched.estate_doc && props.errors.estate_doc)
|
||||
}
|
||||
helperText={
|
||||
props.touched.estate_doc ? props.errors.estate_doc : null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box sx={{
|
||||
mx: {xs: 0, sm: 1},
|
||||
maxWidth: "200px"
|
||||
}}>
|
||||
<UploadSystem
|
||||
setFieldValue={props.setFieldValue}
|
||||
fieldName="agreement_doc"
|
||||
imageAlt={t("app_name")}
|
||||
label={t("LoanRequest.file_field_agreement_doc")}
|
||||
enableDelete={false}
|
||||
error={
|
||||
!!(props.touched.agreement_doc && props.errors.agreement_doc)
|
||||
}
|
||||
helperText={
|
||||
props.touched.agreement_doc ? props.errors.agreement_doc : null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box sx={{
|
||||
mx: {xs: 0, sm: 1},
|
||||
maxWidth: "200px"
|
||||
}}>
|
||||
<UploadSystem
|
||||
setFieldValue={props.setFieldValue}
|
||||
fieldName="shenasname_image"
|
||||
imageAlt={t("app_name")}
|
||||
label={t("LoanRequest.file_field_shenasname_image")}
|
||||
enableDelete={false}
|
||||
error={
|
||||
!!(props.touched.shenasname_image && props.errors.shenasname_image)
|
||||
}
|
||||
helperText={
|
||||
props.touched.shenasname_image ? props.errors.shenasname_image : null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box sx={{
|
||||
mx: {xs: 0, sm: 1},
|
||||
maxWidth: "200px"
|
||||
}}>
|
||||
<UploadSystem
|
||||
setFieldValue={props.setFieldValue}
|
||||
fieldName="payan_khedmat_image"
|
||||
imageAlt={t("app_name")}
|
||||
label={t("LoanRequest.file_field_payan_khedmat_image")}
|
||||
enableDelete={false}
|
||||
error={
|
||||
!!(props.touched.payan_khedmat_image && props.errors.payan_khedmat_image)
|
||||
}
|
||||
helperText={
|
||||
props.touched.payan_khedmat_image ? props.errors.payan_khedmat_image : null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box sx={{
|
||||
mx: {xs: 0, sm: 1},
|
||||
maxWidth: "200px"
|
||||
}}>
|
||||
<UploadSystem
|
||||
setFieldValue={props.setFieldValue}
|
||||
fieldName="national_card_image"
|
||||
imageAlt={t("app_name")}
|
||||
label={t("LoanRequest.file_field_national_card_image")}
|
||||
enableDelete={false}
|
||||
error={
|
||||
!!(props.touched.national_card_image && props.errors.national_card_image)
|
||||
}
|
||||
helperText={
|
||||
props.touched.national_card_image ? props.errors.national_card_image : null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
</Stack>
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
flexDirection: {xs: "column", sm: "row"},
|
||||
alignItems: "center",
|
||||
mx: "auto",
|
||||
my: 2,
|
||||
width: {xs: "100%", sm: "30%", md: "25%"},
|
||||
}}
|
||||
>
|
||||
<Button
|
||||
fullWidth
|
||||
type="submit"
|
||||
variant="contained"
|
||||
size="large"
|
||||
sx={{mt: 2}}
|
||||
endIcon={<DataSaverOnIcon/>}
|
||||
disabled={props.isSubmitting}
|
||||
>
|
||||
{t("LoanRequest.button_submit")}
|
||||
</Button>
|
||||
</Box>
|
||||
</StyledForm>
|
||||
</Stack>
|
||||
)}
|
||||
</Formik>
|
||||
);
|
||||
};
|
||||
|
||||
export default AddFormComponent;
|
||||
18
src/components/dashboard/refahi/add-request-loan/index.jsx
Normal file
18
src/components/dashboard/refahi/add-request-loan/index.jsx
Normal file
@@ -0,0 +1,18 @@
|
||||
import DashboardLayouts from "@/layouts/dashboardLayouts";
|
||||
import useUser from "@/lib/app/hooks/useUser";
|
||||
import {Box, Chip, Divider} from "@mui/material";
|
||||
import {useTranslations} from "next-intl";
|
||||
import AddFormComponent from "@/components/dashboard/refahi/add-request-loan/forms/AddForm";
|
||||
|
||||
const LoanRequestComponent = () => {
|
||||
const t = useTranslations();
|
||||
const {user} = useUser();
|
||||
|
||||
return (
|
||||
<DashboardLayouts>
|
||||
<AddFormComponent/>
|
||||
</DashboardLayouts>
|
||||
);
|
||||
};
|
||||
|
||||
export default LoanRequestComponent;
|
||||
@@ -0,0 +1,446 @@
|
||||
import StyledForm from "@/core/components/StyledForm";
|
||||
import UploadSystem from "@/core/components/UploadSystem";
|
||||
import {GET_PROVINCE_LIST, UPDATE_LOAN_REQUEST_WELFARE, DETAILS_LOAN_REQUEST_WELFARE} from "@/core/data/apiRoutes";
|
||||
import useDirection from "@/lib/app/hooks/useDirection";
|
||||
import useUser from "@/lib/app/hooks/useUser";
|
||||
import DataSaverOnIcon from "@mui/icons-material/DataSaverOn";
|
||||
import {Box, Button, Chip, Divider, Stack, TextField} from "@mui/material";
|
||||
import axios from "axios";
|
||||
import {Field, Formik} from "formik";
|
||||
import {useTranslations} from "next-intl";
|
||||
import {useEffect, useMemo, useState} from "react";
|
||||
import * as Yup from "yup";
|
||||
import SelectBox from "@/core/components/SelectBox";
|
||||
import useRequest from "@/lib/app/hooks/useRequest";
|
||||
import {useRouter} from "next/router";
|
||||
import useLoading from "@/lib/app/hooks/useLoading";
|
||||
|
||||
const EditFormComponent = () => {
|
||||
const t = useTranslations();
|
||||
const {directionApp} = useDirection();
|
||||
const {token} = useUser();
|
||||
const requestServer = useRequest();
|
||||
const router = useRouter();
|
||||
const {setLoadingPage} = useLoading();
|
||||
|
||||
const [provinceList, setProvinceList] = useState(null);
|
||||
const [initialValues, setInitialValues] = useState(null);
|
||||
|
||||
// get province list
|
||||
useEffect(() => {
|
||||
setLoadingPage(true)
|
||||
requestServer(GET_PROVINCE_LIST, "get", {auth: true, notification: false})
|
||||
.then(function ({data}) {
|
||||
const formattedData = data.map((province, index) => ({
|
||||
id: index,
|
||||
name: province.name,
|
||||
value: province.id,
|
||||
}));
|
||||
setProvinceList(formattedData);
|
||||
}).catch(() => {
|
||||
});
|
||||
}, []);
|
||||
|
||||
|
||||
// get form data
|
||||
useEffect(() => {
|
||||
if (!provinceList) return;
|
||||
requestServer(DETAILS_LOAN_REQUEST_WELFARE + router.query.id, "get", {auth: true, notification: false})
|
||||
.then(function ({data}) {
|
||||
const item = data.data;
|
||||
const formattedData = {
|
||||
name: item.name,
|
||||
phone_number: item.phone_number,
|
||||
province_id: item.province_id,
|
||||
national_id: item.national_id,
|
||||
shenasname_id: item.shenasname_id,
|
||||
sherkat_naft_doc: item.sherkat_naft_doc,
|
||||
estate_doc: item.estate_doc,
|
||||
agreement_doc: item.agreement_doc,
|
||||
national_card_image: item.national_card_image,
|
||||
shenasname_image: item.shenasname_image,
|
||||
payan_khedmat_image: item.payan_khedmat_image,
|
||||
}
|
||||
setInitialValues(formattedData);
|
||||
setLoadingPage(false)
|
||||
})
|
||||
.catch(() => {
|
||||
})
|
||||
}, [provinceList]);
|
||||
|
||||
// validation and request action of form
|
||||
const validationSchema = Yup.object().shape({
|
||||
name: Yup.string().required(t("LoanRequest.error_message_name")),
|
||||
phone_number: Yup.string().required(
|
||||
t("LoanRequest.error_message_phone_number")
|
||||
),
|
||||
province_id: Yup.string().required(t("LoanRequest.error_message_province")),
|
||||
national_id: Yup.string().required(t("LoanRequest.error_message_national_code")),
|
||||
shenasname_id: Yup.string().required(t("LoanRequest.error_message_shenasname_id")),
|
||||
sherkat_naft_doc: Yup.mixed().required(t("LoanRequest.error_message_sherkat_naft_doc")),
|
||||
estate_doc: Yup.mixed().required(t("LoanRequest.error_message_estate_doc")),
|
||||
agreement_doc: Yup.mixed().required(t("LoanRequest.error_message_agreement_doc")),
|
||||
national_card_image: Yup.mixed().required(t("LoanRequest.error_message_national_card_image")),
|
||||
shenasname_image: Yup.mixed().required(t("LoanRequest.error_message_shenasname_image")),
|
||||
payan_khedmat_image: Yup.mixed().required(t("LoanRequest.error_message_payan_khedmat_image")),
|
||||
});
|
||||
|
||||
const handleSubmit = (values, props) => {
|
||||
const formData = new FormData();
|
||||
formData.append("name", values.name);
|
||||
formData.append("phone_number", values.phone_number);
|
||||
formData.append("province_id", values.province_id);
|
||||
formData.append("national_id", values.national_id);
|
||||
formData.append("shenasname_id", values.shenasname_id);
|
||||
if (values.sherkat_naft_doc != initialValues.sherkat_naft_doc)
|
||||
formData.append("sherkat_naft_doc", values.sherkat_naft_doc);
|
||||
if (values.estate_doc != initialValues.estate_doc)
|
||||
formData.append("estate_doc", values.estate_doc);
|
||||
if (values.agreement_doc != initialValues.agreement_doc)
|
||||
formData.append("agreement_doc", values.agreement_doc);
|
||||
if (values.shenasname_image != initialValues.shenasname_image)
|
||||
formData.append("shenasname_image", values.shenasname_image);
|
||||
if (values.national_card_image != initialValues.national_card_image)
|
||||
formData.append("national_card_image", values.national_card_image);
|
||||
if (values.payan_khedmat_image != initialValues.payan_khedmat_image)
|
||||
formData.append("payan_khedmat_image", values.payan_khedmat_image);
|
||||
|
||||
requestServer(UPDATE_LOAN_REQUEST_WELFARE + router.query.id, "post", {auth: true, data: formData})
|
||||
.then(function (response) {
|
||||
})
|
||||
.catch(function (error) {
|
||||
})
|
||||
.finally(function () {
|
||||
props.setSubmitting(false);
|
||||
});
|
||||
};
|
||||
if (!initialValues) return "";
|
||||
return (
|
||||
<Formik
|
||||
initialValues={initialValues}
|
||||
onSubmit={handleSubmit}
|
||||
validationSchema={validationSchema}
|
||||
>
|
||||
{(props) => (
|
||||
<Stack
|
||||
spacing={2}
|
||||
sx={{
|
||||
p: 1,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<StyledForm sx={{width: "100%"}}>
|
||||
<Box sx={{my: 1}}>
|
||||
<Divider>
|
||||
<Chip
|
||||
label={t("LoanRequest.personal_info")}
|
||||
/>
|
||||
</Divider>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
flexDirection: {xs: "column", sm: "row"},
|
||||
alignItems: "start",
|
||||
justifyContent: "center",
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
as={TextField}
|
||||
sx={{width: "100%"}}
|
||||
name="name"
|
||||
variant="outlined"
|
||||
size="small"
|
||||
label={t("LoanRequest.text_field_name")}
|
||||
placeholder={t("LoanRequest.text_field_enter_your_name")}
|
||||
type={"text"}
|
||||
error={!!(props.touched.name && props.errors.name)}
|
||||
fullWidth
|
||||
helperText={props.touched.name ? props.errors.name : null}
|
||||
/>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
as={TextField}
|
||||
sx={{width: "100%"}}
|
||||
name="phone_number"
|
||||
variant="outlined"
|
||||
size="small"
|
||||
label={t("LoanRequest.text_field_phone_number")}
|
||||
placeholder={t(
|
||||
"LoanRequest.text_field_enter_your_phone_number"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
!!(props.touched.phone_number && props.errors.phone_number)
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.phone_number
|
||||
? props.errors.phone_number
|
||||
: null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
name="province_id"
|
||||
label={t("LoanRequest.text_field_province")} // t("LoanRequest.text_field_enter_your_province")
|
||||
size="small"
|
||||
selectType="province_id"
|
||||
component={SelectBox}
|
||||
selectors={provinceList}
|
||||
select={props.values.province_id}
|
||||
setFieldValue={props.setFieldValue}
|
||||
setFieldTouched={props.setFieldTouched}
|
||||
error={
|
||||
!!(props.touched.province_id && props.errors.province_id)
|
||||
}
|
||||
helperText={
|
||||
props.touched.province_id ? props.errors.province_id : null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
flexDirection: {xs: "column", sm: "row"},
|
||||
alignItems: "start",
|
||||
justifyContent: "center",
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
as={TextField}
|
||||
sx={{width: "100%"}}
|
||||
name="national_id"
|
||||
variant="outlined"
|
||||
size="small"
|
||||
label={t("LoanRequest.text_field_national_code")}
|
||||
placeholder={t(
|
||||
"LoanRequest.text_field_enter_your_national_code"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
!!(props.touched.national_id && props.errors.national_id)
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.national_id
|
||||
? props.errors.national_id
|
||||
: null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
mx: {xs: 0, sm: 2},
|
||||
my: 2,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
as={TextField}
|
||||
sx={{width: "100%"}}
|
||||
name="shenasname_id"
|
||||
variant="outlined"
|
||||
size="small"
|
||||
label={t("LoanRequest.text_field_shenasname_id")}
|
||||
placeholder={t(
|
||||
"LoanRequest.text_field_enter_your_shenasname_id"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
!!(props.touched.shenasname_id && props.errors.shenasname_id)
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.shenasname_id
|
||||
? props.errors.shenasname_id
|
||||
: null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
</Box>
|
||||
<Box sx={{my: 1}}>
|
||||
<Divider>
|
||||
<Chip
|
||||
label={t("LoanRequest.uploading_documents")}
|
||||
/>
|
||||
</Divider>
|
||||
</Box>
|
||||
<Stack spacing={{xs: 1, sm: 2}} direction="row" useFlexGap flexWrap="wrap"
|
||||
sx={{justifyContent: "center"}}>
|
||||
<Box sx={{
|
||||
mx: {xs: 0, sm: 1},
|
||||
maxWidth: "200px"
|
||||
}}>
|
||||
<UploadSystem
|
||||
setFieldValue={props.setFieldValue}
|
||||
default_image={initialValues.sherkat_naft_doc}
|
||||
fieldName="sherkat_naft_doc"
|
||||
imageAlt={t("app_name")}
|
||||
label={t("LoanRequest.file_field_sherkat_naft_doc")}
|
||||
enableDelete={false}
|
||||
error={
|
||||
!!(props.touched.sherkat_naft_doc && props.errors.sherkat_naft_doc)
|
||||
}
|
||||
helperText={
|
||||
props.touched.sherkat_naft_doc ? props.errors.sherkat_naft_doc : null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box sx={{
|
||||
mx: {xs: 0, sm: 1},
|
||||
maxWidth: "200px"
|
||||
}}>
|
||||
<UploadSystem
|
||||
setFieldValue={props.setFieldValue}
|
||||
default_image={initialValues.estate_doc}
|
||||
fieldName="estate_doc"
|
||||
imageAlt={t("app_name")}
|
||||
label={t("LoanRequest.file_field_estate_doc")}
|
||||
enableDelete={false}
|
||||
error={
|
||||
!!(props.touched.estate_doc && props.errors.estate_doc)
|
||||
}
|
||||
helperText={
|
||||
props.touched.estate_doc ? props.errors.estate_doc : null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box sx={{
|
||||
mx: {xs: 0, sm: 1},
|
||||
maxWidth: "200px"
|
||||
}}>
|
||||
<UploadSystem
|
||||
setFieldValue={props.setFieldValue}
|
||||
default_image={initialValues.agreement_doc}
|
||||
fieldName="agreement_doc"
|
||||
imageAlt={t("app_name")}
|
||||
label={t("LoanRequest.file_field_agreement_doc")}
|
||||
enableDelete={false}
|
||||
error={
|
||||
!!(props.touched.agreement_doc && props.errors.agreement_doc)
|
||||
}
|
||||
helperText={
|
||||
props.touched.agreement_doc ? props.errors.agreement_doc : null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box sx={{
|
||||
mx: {xs: 0, sm: 1},
|
||||
maxWidth: "200px"
|
||||
}}>
|
||||
<UploadSystem
|
||||
setFieldValue={props.setFieldValue}
|
||||
default_image={initialValues.shenasname_image}
|
||||
fieldName="shenasname_image"
|
||||
imageAlt={t("app_name")}
|
||||
label={t("LoanRequest.file_field_shenasname_image")}
|
||||
enableDelete={false}
|
||||
error={
|
||||
!!(props.touched.shenasname_image && props.errors.shenasname_image)
|
||||
}
|
||||
helperText={
|
||||
props.touched.shenasname_image ? props.errors.shenasname_image : null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box sx={{
|
||||
mx: {xs: 0, sm: 1},
|
||||
maxWidth: "200px"
|
||||
}}>
|
||||
<UploadSystem
|
||||
setFieldValue={props.setFieldValue}
|
||||
default_image={initialValues.payan_khedmat_image}
|
||||
fieldName="payan_khedmat_image"
|
||||
imageAlt={t("app_name")}
|
||||
label={t("LoanRequest.file_field_payan_khedmat_image")}
|
||||
enableDelete={false}
|
||||
error={
|
||||
!!(props.touched.payan_khedmat_image && props.errors.payan_khedmat_image)
|
||||
}
|
||||
helperText={
|
||||
props.touched.payan_khedmat_image ? props.errors.payan_khedmat_image : null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
<Box sx={{
|
||||
mx: {xs: 0, sm: 1},
|
||||
maxWidth: "200px"
|
||||
}}>
|
||||
<UploadSystem
|
||||
setFieldValue={props.setFieldValue}
|
||||
default_image={initialValues.national_card_image}
|
||||
fieldName="national_card_image"
|
||||
imageAlt={t("app_name")}
|
||||
label={t("LoanRequest.file_field_national_card_image")}
|
||||
enableDelete={false}
|
||||
error={
|
||||
!!(props.touched.national_card_image && props.errors.national_card_image)
|
||||
}
|
||||
helperText={
|
||||
props.touched.national_card_image ? props.errors.national_card_image : null
|
||||
}
|
||||
/>
|
||||
</Box>
|
||||
</Stack>
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
flexDirection: {xs: "column", sm: "row"},
|
||||
alignItems: "center",
|
||||
mx: "auto",
|
||||
my: 2,
|
||||
width: {xs: "100%", sm: "30%", md: "25%"},
|
||||
}}
|
||||
>
|
||||
<Button
|
||||
fullWidth
|
||||
type="submit"
|
||||
variant="contained"
|
||||
size="large"
|
||||
sx={{mt: 2}}
|
||||
endIcon={<DataSaverOnIcon/>}
|
||||
disabled={props.isSubmitting}
|
||||
>
|
||||
{t("LoanRequest.button_submit")}
|
||||
</Button>
|
||||
</Box>
|
||||
</StyledForm>
|
||||
</Stack>
|
||||
)}
|
||||
</Formik>
|
||||
);
|
||||
};
|
||||
|
||||
export default EditFormComponent;
|
||||
17
src/components/dashboard/refahi/edit-request-loan/index.jsx
Normal file
17
src/components/dashboard/refahi/edit-request-loan/index.jsx
Normal file
@@ -0,0 +1,17 @@
|
||||
import DashboardLayouts from "@/layouts/dashboardLayouts";
|
||||
import useUser from "@/lib/app/hooks/useUser";
|
||||
import {useTranslations} from "next-intl";
|
||||
import EditFormComponent from "@/components/dashboard/refahi/edit-request-loan/forms/EditForm";
|
||||
|
||||
const LoanRequestComponent = () => {
|
||||
const t = useTranslations();
|
||||
const {user} = useUser();
|
||||
|
||||
return (
|
||||
<DashboardLayouts>
|
||||
<EditFormComponent/>
|
||||
</DashboardLayouts>
|
||||
);
|
||||
};
|
||||
|
||||
export default LoanRequestComponent;
|
||||
@@ -0,0 +1,52 @@
|
||||
import {
|
||||
Card,
|
||||
CardContent,
|
||||
CardHeader,
|
||||
Grid, IconButton, Tooltip,
|
||||
Typography,
|
||||
} from "@mui/material";
|
||||
import SellIcon from '@mui/icons-material/Sell';
|
||||
import EditIcon from '@mui/icons-material/Edit';
|
||||
import {useTranslations} from "next-intl";
|
||||
import {NextLinkComposed} from "@/core/components/LinkRouting";
|
||||
|
||||
|
||||
const RequestCard = ({item}) => {
|
||||
const t = useTranslations();
|
||||
return (
|
||||
<Grid item xs={12} md={6} lg={4}>
|
||||
<Card sx={{
|
||||
width: "100%",
|
||||
boxShadow: "rgba(0, 0, 0, 0.15) 0px 5px 15px 0px"
|
||||
}}>
|
||||
<CardHeader
|
||||
avatar={<SellIcon color="primary"/>}
|
||||
title={`${t("LoanFollowUp.request_number")}: (${item.id})`}
|
||||
subheader={item.latest_history_created_at}
|
||||
action={
|
||||
item.state_id === 7 ? ( // Use the ternary operator or if/else inside curly braces
|
||||
<Tooltip title={t("LoanFollowUp.loan_request_correction")}>
|
||||
<IconButton size="small"
|
||||
color="primary"
|
||||
variant="outlined"
|
||||
component={NextLinkComposed}
|
||||
to={{
|
||||
pathname: `edit-request-loan/${item.id}`,
|
||||
}} aria-label="fingerprint">
|
||||
<EditIcon/>
|
||||
</IconButton>
|
||||
</Tooltip>
|
||||
) : null
|
||||
}
|
||||
/>
|
||||
<CardContent sx={{pt: 0}}>
|
||||
<Typography variant="button">
|
||||
{item.loan_state}
|
||||
</Typography>
|
||||
</CardContent>
|
||||
</Card>
|
||||
</Grid>
|
||||
);
|
||||
};
|
||||
|
||||
export default RequestCard;
|
||||
60
src/components/dashboard/refahi/followUp-loan/index.jsx
Normal file
60
src/components/dashboard/refahi/followUp-loan/index.jsx
Normal file
@@ -0,0 +1,60 @@
|
||||
import DashboardLayouts from "@/layouts/dashboardLayouts";
|
||||
import {
|
||||
Grid,
|
||||
Stack,
|
||||
} from "@mui/material";
|
||||
import {useEffect, useState} from "react";
|
||||
import {SHOW_LOAN_REQUEST_WELFARE} from "@/core/data/apiRoutes";
|
||||
import useLoading from "@/lib/app/hooks/useLoading";
|
||||
import useRequest from "@/lib/app/hooks/useRequest";
|
||||
import moment from "jalali-moment";
|
||||
import RequestCard from "@/components/dashboard/refahi/followUp-loan/RequestCard";
|
||||
|
||||
const LoanFollowUpComponent = () => {
|
||||
const requestServer = useRequest();
|
||||
const {setLoadingPage} = useLoading();
|
||||
const [requestsList, setRequestsList] = useState([]);
|
||||
// get form data
|
||||
useEffect(() => {
|
||||
setLoadingPage(true)
|
||||
requestServer(SHOW_LOAN_REQUEST_WELFARE, "get", {auth: true, notification: false})
|
||||
.then(function ({data}) {
|
||||
const items = data.data;
|
||||
const formattedData = items.map((item, index) => ({
|
||||
id: item.id,
|
||||
latest_history_created_at: moment(item.latest_history_created_at).locale("fa").format("HH:mm | YYYY/MM/DD"),
|
||||
state_id: item.state_id,
|
||||
loan_state: item.loan_state,
|
||||
}));
|
||||
setRequestsList(formattedData);
|
||||
setLoadingPage(false)
|
||||
})
|
||||
.catch(function (error) {
|
||||
})
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<DashboardLayouts>
|
||||
<Stack
|
||||
spacing={2}
|
||||
sx={{
|
||||
p: 4,
|
||||
width: "100%",
|
||||
}}
|
||||
>
|
||||
<Grid
|
||||
container
|
||||
columnSpacing={2}
|
||||
rowSpacing={2}
|
||||
sx={{alignItems: "start", justifyContent: "center"}}
|
||||
>
|
||||
{requestsList.map((item, index) => (
|
||||
<RequestCard item={item} key={item.id}/>
|
||||
))}
|
||||
</Grid>
|
||||
</Stack>
|
||||
</DashboardLayouts>
|
||||
);
|
||||
};
|
||||
|
||||
export default LoanFollowUpComponent;
|
||||
37
src/components/errors/403.jsx
Normal file
37
src/components/errors/403.jsx
Normal file
@@ -0,0 +1,37 @@
|
||||
import CenterLayout from "@/layouts/CenterLayout";
|
||||
import FullPageLayout from "@/layouts/FullPageLayout";
|
||||
import {Button, Typography} from "@mui/material";
|
||||
import {NextLinkComposed} from "@/core/components/LinkRouting";
|
||||
import {useTranslations} from "next-intl";
|
||||
import TitlePage from "@/core/components/TitlePage";
|
||||
import Svg403 from "@/core/components/svgs/Svg403";
|
||||
|
||||
const UnAuthorizedComponent = () => {
|
||||
const t = useTranslations();
|
||||
|
||||
return (
|
||||
<>
|
||||
<TitlePage text="Titles.title_custom_403"/>
|
||||
<FullPageLayout sx={{p: 1}}>
|
||||
<CenterLayout spacing={3}>
|
||||
<Svg403 width={300} height={200}/>
|
||||
<Typography margin={2} variant="h6" textAlign="center">
|
||||
{t("ErrorPage.custom_403")}
|
||||
</Typography>
|
||||
<Button
|
||||
variant="contained"
|
||||
component={NextLinkComposed}
|
||||
to={{
|
||||
pathname: "/",
|
||||
}}
|
||||
>
|
||||
{t("ErrorPage.link_routing_back_to")}{" "}
|
||||
{t("ErrorPage.link_routing_main_page")}
|
||||
</Button>
|
||||
</CenterLayout>
|
||||
</FullPageLayout>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default UnAuthorizedComponent;
|
||||
37
src/components/errors/404.jsx
Normal file
37
src/components/errors/404.jsx
Normal file
@@ -0,0 +1,37 @@
|
||||
import CenterLayout from "@/layouts/CenterLayout";
|
||||
import FullPageLayout from "@/layouts/FullPageLayout";
|
||||
import {Button, Typography} from "@mui/material";
|
||||
import {NextLinkComposed} from "@/core/components/LinkRouting";
|
||||
import {useTranslations} from "next-intl";
|
||||
import TitlePage from "@/core/components/TitlePage";
|
||||
import Svg404 from "@/core/components/svgs/Svg404";
|
||||
|
||||
const NotFoundComponent = () => {
|
||||
const t = useTranslations();
|
||||
|
||||
return (
|
||||
<>
|
||||
<TitlePage text="Titles.title_custom_404"/>
|
||||
<FullPageLayout sx={{p: 1}}>
|
||||
<CenterLayout spacing={3}>
|
||||
<Svg404 width={300} height={200}/>
|
||||
<Typography margin={2} variant="h6" textAlign="center">
|
||||
{t("ErrorPage.custom_404")}
|
||||
</Typography>
|
||||
<Button
|
||||
variant="contained"
|
||||
component={NextLinkComposed}
|
||||
to={{
|
||||
pathname: "/",
|
||||
}}
|
||||
>
|
||||
{t("ErrorPage.link_routing_back_to")}{" "}
|
||||
{t("ErrorPage.link_routing_main_page")}
|
||||
</Button>
|
||||
</CenterLayout>
|
||||
</FullPageLayout>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default NotFoundComponent;
|
||||
37
src/components/errors/500.jsx
Normal file
37
src/components/errors/500.jsx
Normal file
@@ -0,0 +1,37 @@
|
||||
import CenterLayout from "@/layouts/CenterLayout";
|
||||
import FullPageLayout from "@/layouts/FullPageLayout";
|
||||
import {Button, Typography} from "@mui/material";
|
||||
import {NextLinkComposed} from "@/core/components/LinkRouting";
|
||||
import {useTranslations} from "next-intl";
|
||||
import TitlePage from "@/core/components/TitlePage";
|
||||
import Svg500 from "@/core/components/svgs/Svg500";
|
||||
|
||||
const ServerErrorComponent = () => {
|
||||
const t = useTranslations();
|
||||
|
||||
return (
|
||||
<>
|
||||
<TitlePage text="Titles.title_custom_500"/>
|
||||
<FullPageLayout sx={{p: 1}}>
|
||||
<CenterLayout spacing={3}>
|
||||
<Svg500 width={300} height={200}/>
|
||||
<Typography margin={2} variant="h6" textAlign="center">
|
||||
{t("ErrorPage.custom_500")}
|
||||
</Typography>
|
||||
<Button
|
||||
variant="contained"
|
||||
component={NextLinkComposed}
|
||||
to={{
|
||||
pathname: "/",
|
||||
}}
|
||||
>
|
||||
{t("ErrorPage.link_routing_back_to")}{" "}
|
||||
{t("ErrorPage.link_routing_main_page")}
|
||||
</Button>
|
||||
</CenterLayout>
|
||||
</FullPageLayout>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default ServerErrorComponent;
|
||||
@@ -1,66 +1,56 @@
|
||||
import dahsboardImage from "&/images/dashboard.svg";
|
||||
import { NextLinkComposed } from "@/core/components/LinkRouting";
|
||||
import StyledImage from "@/core/components/StyledImage";
|
||||
import {NextLinkComposed} from "@/core/components/LinkRouting";
|
||||
import CenterLayout from "@/layouts/CenterLayout";
|
||||
import FullPageLayout from "@/layouts/FullPageLayout";
|
||||
import useUser from "@/lib/app/hooks/useUser";
|
||||
import { Box, Button, Divider, Typography } from "@mui/material";
|
||||
import { useTranslations } from "next-intl";
|
||||
import {Button, Stack, Typography} from "@mui/material";
|
||||
import {useTranslations} from "next-intl";
|
||||
import SvgDashboard from "@/core/components/svgs/SvgDashboard";
|
||||
|
||||
const FirstComponent = () => {
|
||||
const t = useTranslations();
|
||||
const { isAuth } = useUser();
|
||||
const t = useTranslations();
|
||||
const {isAuth} = useUser();
|
||||
|
||||
return (
|
||||
<FullPageLayout sx={{ p: 1 }}>
|
||||
<CenterLayout spacing={3}>
|
||||
<StyledImage
|
||||
src={dahsboardImage}
|
||||
alt={t("app_name")}
|
||||
width={300}
|
||||
height={200}
|
||||
/>
|
||||
<Typography variant="h5" sx={{ textAlign: "center" }}>
|
||||
{t("app_name")}
|
||||
</Typography>
|
||||
{isAuth ? (
|
||||
<Button
|
||||
variant="outlined"
|
||||
component={NextLinkComposed}
|
||||
to={{
|
||||
pathname: "/dashboard",
|
||||
}}
|
||||
>
|
||||
{t("dashboard")}
|
||||
</Button>
|
||||
) : (
|
||||
<Box sx={{ display: "flex" }}>
|
||||
<Button
|
||||
sx={{ mx: 2 }}
|
||||
variant="contained"
|
||||
component={NextLinkComposed}
|
||||
to={{
|
||||
pathname: "/login-navy",
|
||||
}}
|
||||
>
|
||||
{t("login_navy")}
|
||||
</Button>
|
||||
<Divider orientation="vertical" flexItem />
|
||||
<Button
|
||||
sx={{ mx: 2 }}
|
||||
variant="contained"
|
||||
component={NextLinkComposed}
|
||||
to={{
|
||||
pathname: "/login-welfare-services",
|
||||
}}
|
||||
>
|
||||
{t("login_welfare_services")}
|
||||
</Button>
|
||||
</Box>
|
||||
)}
|
||||
</CenterLayout>
|
||||
</FullPageLayout>
|
||||
);
|
||||
return (
|
||||
<FullPageLayout sx={{p: 1}}>
|
||||
<CenterLayout spacing={3}>
|
||||
<SvgDashboard width={300} height={200}/>
|
||||
<Typography variant="h5" sx={{textAlign: "center"}}>
|
||||
{t("app_name")}
|
||||
</Typography>
|
||||
{isAuth ? (
|
||||
<Button
|
||||
variant="contained"
|
||||
component={NextLinkComposed}
|
||||
to={{
|
||||
pathname: "/dashboard",
|
||||
}}
|
||||
>
|
||||
{t("dashboard")}
|
||||
</Button>
|
||||
) : (
|
||||
<Button
|
||||
sx={{whiteSpace: "nowrap"}}
|
||||
variant="contained"
|
||||
size="large"
|
||||
component={NextLinkComposed}
|
||||
to={{
|
||||
pathname: "/login",
|
||||
}}
|
||||
>
|
||||
{t("login_user_panel")}
|
||||
</Button>
|
||||
)}
|
||||
</CenterLayout>
|
||||
<Stack direction="row" alignItems="center" justifyContent="center">
|
||||
<Typography variant={"caption"}
|
||||
sx={{
|
||||
color: 'primary.main',
|
||||
fontFamily: 'Arial',
|
||||
fontWeight: 'bold'
|
||||
}}>v{process.env.NEXT_PUBLIC_API_VERSION}</Typography>
|
||||
</Stack>
|
||||
</FullPageLayout>
|
||||
);
|
||||
};
|
||||
|
||||
export default FirstComponent;
|
||||
|
||||
@@ -1,170 +0,0 @@
|
||||
import LinkRouting from "@/core/components/LinkRouting";
|
||||
// import Notifications from "@/core/components/notifications";
|
||||
import PasswordField from "@/core/components/PasswordField";
|
||||
import StyledForm from "@/core/components/StyledForm";
|
||||
// import { GET_USER_TOKEN } from "@/core/data/apiRoutes";
|
||||
import CenterLayout from "@/layouts/CenterLayout";
|
||||
import FullPageLayout from "@/layouts/FullPageLayout";
|
||||
import useDirection from "@/lib/app/hooks/useDirection";
|
||||
import useUser from "@/lib/app/hooks/useUser";
|
||||
import LoginIcon from "@mui/icons-material/Login";
|
||||
import PersonAddIcon from "@mui/icons-material/PersonAdd";
|
||||
import {
|
||||
Box,
|
||||
Button,
|
||||
Container,
|
||||
Paper,
|
||||
Stack,
|
||||
TextField,
|
||||
Typography,
|
||||
} from "@mui/material";
|
||||
// import axios from "axios";
|
||||
import { Field, Formik } from "formik";
|
||||
import { useTranslations } from "next-intl";
|
||||
import Image from "next/image";
|
||||
import { useSearchParams } from "next/navigation";
|
||||
import * as Yup from "yup";
|
||||
|
||||
const LoginComponent = () => {
|
||||
const t = useTranslations();
|
||||
const { directionApp } = useDirection();
|
||||
const { setToken } = useUser(); // pass token to set token
|
||||
|
||||
// gettin url query
|
||||
const searchParams = useSearchParams();
|
||||
const backUrlDecodedPath = searchParams.get("back_url");
|
||||
|
||||
// formik properties
|
||||
// const handleSubmit = async (values, props) => {
|
||||
// await axios
|
||||
// .post(GET_USER_TOKEN, {
|
||||
// username: values.username,
|
||||
// password: values.password,
|
||||
// })
|
||||
// .then(function (response) {
|
||||
// setToken(response.data.token);
|
||||
// })
|
||||
// .catch(function (error) {
|
||||
// Notifications(directionApp, error.response, t);
|
||||
// props.setSubmitting(false);
|
||||
// });
|
||||
// };
|
||||
const initialValues = {
|
||||
username: "",
|
||||
password: "",
|
||||
};
|
||||
const validationSchema = Yup.object().shape({
|
||||
username: Yup.string().required(t("LoginPage.error_message_required")),
|
||||
password: Yup.string().required(t("LoginPage.error_message_required")),
|
||||
});
|
||||
|
||||
return (
|
||||
<FullPageLayout sx={{ p: 1 }}>
|
||||
<CenterLayout>
|
||||
<Container maxWidth="sm">
|
||||
<Paper elevation={0}>
|
||||
<Formik
|
||||
initialValues={initialValues}
|
||||
// onSubmit={handleSubmit}
|
||||
validationSchema={validationSchema}
|
||||
>
|
||||
{(props) => (
|
||||
<Stack spacing={2} sx={{ p: 2 }}>
|
||||
<Box
|
||||
sx={{ position: "relative", width: "100%", height: 200 }}
|
||||
>
|
||||
<Image fill src="/images/login.svg" alt={t("app_name")} />
|
||||
</Box>
|
||||
<Typography margin={2} variant="h4" textAlign="center">
|
||||
{t("login_navy")}
|
||||
</Typography>
|
||||
<StyledForm sx={{ width: "100%" }}>
|
||||
<Stack spacing={3} sx={{ p: 2 }}>
|
||||
<Field
|
||||
as={TextField}
|
||||
name="username"
|
||||
variant="outlined"
|
||||
label={t("LoginPage.text_field_user_name")}
|
||||
placeholder={t(
|
||||
"LoginPage.text_field_enter_your_username"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
props.touched.username && props.errors.username
|
||||
? true
|
||||
: false
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.username ? props.errors.username : null
|
||||
}
|
||||
/>
|
||||
<PasswordField
|
||||
name="password"
|
||||
label={t("LoginPage.text_field_password")}
|
||||
error={
|
||||
props.touched.password && props.errors.password
|
||||
? true
|
||||
: false
|
||||
}
|
||||
helperText={
|
||||
props.touched.password ? props.errors.password : null
|
||||
}
|
||||
placeholder={t(
|
||||
"LoginPage.text_field_enter_your_password"
|
||||
)}
|
||||
/>
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
alignItems: "center",
|
||||
justifyContent: "space-between",
|
||||
}}
|
||||
>
|
||||
<LinkRouting href={"/register-navy"}>
|
||||
<Button
|
||||
type="submit"
|
||||
variant="outlined"
|
||||
size="small"
|
||||
endIcon={<PersonAddIcon />}
|
||||
disabled={props.isSubmitting ? true : false}
|
||||
>
|
||||
</Button>
|
||||
</LinkRouting>
|
||||
{t("LoginPage.button_make_account")}
|
||||
<Button
|
||||
type="submit"
|
||||
variant="contained"
|
||||
size="medium"
|
||||
endIcon={<LoginIcon />}
|
||||
disabled={props.isSubmitting ? true : false}
|
||||
>
|
||||
{t("LoginPage.button_submit")}
|
||||
</Button>
|
||||
</Box>
|
||||
</Stack>
|
||||
</StyledForm>
|
||||
</Stack>
|
||||
)}
|
||||
</Formik>
|
||||
</Paper>
|
||||
</Container>
|
||||
</CenterLayout>
|
||||
<Stack direction="row" alignItems="center" justifyContent="center">
|
||||
<LinkRouting
|
||||
sx={{ margin: 2 }}
|
||||
href={
|
||||
backUrlDecodedPath ? decodeURIComponent(backUrlDecodedPath) : "/"
|
||||
}
|
||||
>
|
||||
{t("LoginPage.link_routing_back_to")}{" "}
|
||||
{backUrlDecodedPath
|
||||
? t("LoginPage.link_routing_previuos_page")
|
||||
: t("LoginPage.link_routing_main_page")}
|
||||
</LinkRouting>
|
||||
</Stack>
|
||||
</FullPageLayout>
|
||||
);
|
||||
};
|
||||
|
||||
export default LoginComponent;
|
||||
@@ -1,170 +0,0 @@
|
||||
import LinkRouting from "@/core/components/LinkRouting";
|
||||
// import Notifications from "@/core/components/notifications";
|
||||
import PasswordField from "@/core/components/PasswordField";
|
||||
import StyledForm from "@/core/components/StyledForm";
|
||||
// import { GET_USER_TOKEN } from "@/core/data/apiRoutes";
|
||||
import CenterLayout from "@/layouts/CenterLayout";
|
||||
import FullPageLayout from "@/layouts/FullPageLayout";
|
||||
import useDirection from "@/lib/app/hooks/useDirection";
|
||||
import useUser from "@/lib/app/hooks/useUser";
|
||||
import LoginIcon from "@mui/icons-material/Login";
|
||||
import PersonAddIcon from "@mui/icons-material/PersonAdd";
|
||||
import {
|
||||
Box,
|
||||
Button,
|
||||
Container,
|
||||
Paper,
|
||||
Stack,
|
||||
TextField,
|
||||
Typography,
|
||||
} from "@mui/material";
|
||||
// import axios from "axios";
|
||||
import { Field, Formik } from "formik";
|
||||
import { useTranslations } from "next-intl";
|
||||
import Image from "next/image";
|
||||
import { useSearchParams } from "next/navigation";
|
||||
import * as Yup from "yup";
|
||||
|
||||
const LoginComponent = () => {
|
||||
const t = useTranslations();
|
||||
const { directionApp } = useDirection();
|
||||
const { setToken } = useUser(); // pass token to set token
|
||||
|
||||
// gettin url query
|
||||
const searchParams = useSearchParams();
|
||||
const backUrlDecodedPath = searchParams.get("back_url");
|
||||
|
||||
// formik properties
|
||||
// const handleSubmit = async (values, props) => {
|
||||
// await axios
|
||||
// .post(GET_USER_TOKEN, {
|
||||
// username: values.username,
|
||||
// password: values.password,
|
||||
// })
|
||||
// .then(function (response) {
|
||||
// setToken(response.data.token);
|
||||
// })
|
||||
// .catch(function (error) {
|
||||
// Notifications(directionApp, error.response, t);
|
||||
// props.setSubmitting(false);
|
||||
// });
|
||||
// };
|
||||
const initialValues = {
|
||||
username: "",
|
||||
password: "",
|
||||
};
|
||||
const validationSchema = Yup.object().shape({
|
||||
username: Yup.string().required(t("LoginPage.error_message_required")),
|
||||
password: Yup.string().required(t("LoginPage.error_message_required")),
|
||||
});
|
||||
|
||||
return (
|
||||
<FullPageLayout sx={{ p: 1 }}>
|
||||
<CenterLayout>
|
||||
<Container maxWidth="sm">
|
||||
<Paper elevation={0}>
|
||||
<Formik
|
||||
initialValues={initialValues}
|
||||
// onSubmit={handleSubmit}
|
||||
validationSchema={validationSchema}
|
||||
>
|
||||
{(props) => (
|
||||
<Stack spacing={2} sx={{ p: 2 }}>
|
||||
<Box
|
||||
sx={{ position: "relative", width: "100%", height: 200 }}
|
||||
>
|
||||
<Image fill src="/images/login.svg" alt={t("app_name")} />
|
||||
</Box>
|
||||
<Typography margin={2} variant="h4" textAlign="center">
|
||||
{t("login_welfare_services")}
|
||||
</Typography>
|
||||
<StyledForm sx={{ width: "100%" }}>
|
||||
<Stack spacing={3} sx={{ p: 2 }}>
|
||||
<Field
|
||||
as={TextField}
|
||||
name="username"
|
||||
variant="outlined"
|
||||
label={t("LoginPage.text_field_user_name")}
|
||||
placeholder={t(
|
||||
"LoginPage.text_field_enter_your_username"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
props.touched.username && props.errors.username
|
||||
? true
|
||||
: false
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.username ? props.errors.username : null
|
||||
}
|
||||
/>
|
||||
<PasswordField
|
||||
name="password"
|
||||
label={t("LoginPage.text_field_password")}
|
||||
error={
|
||||
props.touched.password && props.errors.password
|
||||
? true
|
||||
: false
|
||||
}
|
||||
helperText={
|
||||
props.touched.password ? props.errors.password : null
|
||||
}
|
||||
placeholder={t(
|
||||
"LoginPage.text_field_enter_your_password"
|
||||
)}
|
||||
/>
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
alignItems: "center",
|
||||
justifyContent: "space-between",
|
||||
}}
|
||||
>
|
||||
<LinkRouting href={"/register-welfare-services"}>
|
||||
<Button
|
||||
type="submit"
|
||||
variant="outlined"
|
||||
size="small"
|
||||
endIcon={<PersonAddIcon />}
|
||||
disabled={props.isSubmitting ? true : false}
|
||||
>
|
||||
{t("LoginPage.button_make_account")}
|
||||
</Button>
|
||||
</LinkRouting>
|
||||
<Button
|
||||
type="submit"
|
||||
variant="contained"
|
||||
size="medium"
|
||||
endIcon={<LoginIcon />}
|
||||
disabled={props.isSubmitting ? true : false}
|
||||
>
|
||||
{t("LoginPage.button_submit")}
|
||||
</Button>
|
||||
</Box>
|
||||
</Stack>
|
||||
</StyledForm>
|
||||
</Stack>
|
||||
)}
|
||||
</Formik>
|
||||
</Paper>
|
||||
</Container>
|
||||
</CenterLayout>
|
||||
<Stack direction="row" alignItems="center" justifyContent="center">
|
||||
<LinkRouting
|
||||
sx={{ margin: 2 }}
|
||||
href={
|
||||
backUrlDecodedPath ? decodeURIComponent(backUrlDecodedPath) : "/"
|
||||
}
|
||||
>
|
||||
{t("LoginPage.link_routing_back_to")}{" "}
|
||||
{backUrlDecodedPath
|
||||
? t("LoginPage.link_routing_previuos_page")
|
||||
: t("LoginPage.link_routing_main_page")}
|
||||
</LinkRouting>
|
||||
</Stack>
|
||||
</FullPageLayout>
|
||||
);
|
||||
};
|
||||
|
||||
export default LoginComponent;
|
||||
147
src/components/login/SendToken.jsx
Normal file
147
src/components/login/SendToken.jsx
Normal file
@@ -0,0 +1,147 @@
|
||||
import ResendToken from "@/core/components/ResendToken";
|
||||
import StyledForm from "@/core/components/StyledForm";
|
||||
import {LOGIN} from "@/core/data/apiRoutes";
|
||||
import CenterLayout from "@/layouts/CenterLayout";
|
||||
import FullPageLayout from "@/layouts/FullPageLayout";
|
||||
import useUser from "@/lib/app/hooks/useUser";
|
||||
import ChangeCircleIcon from "@mui/icons-material/ChangeCircle";
|
||||
import LoginIcon from "@mui/icons-material/Login";
|
||||
import {Box, Button, Container, Grid, Paper, Stack, TextField, Typography,} from "@mui/material";
|
||||
import {Field, Formik} from "formik";
|
||||
import {useTranslations} from "next-intl";
|
||||
import * as Yup from "yup";
|
||||
import SvgLogin from "@/core/components/svgs/SvgLogin";
|
||||
import useRequest from "@/lib/app/hooks/useRequest";
|
||||
|
||||
const SendTokenComponent = ({
|
||||
PhoneNumber,
|
||||
setOtpToken,
|
||||
timer,
|
||||
setTimer,
|
||||
initialTimerValue,
|
||||
}) => {
|
||||
const t = useTranslations();
|
||||
const requestServer = useRequest();
|
||||
const {setToken} = useUser();
|
||||
|
||||
const initialValues = {
|
||||
phone_number: PhoneNumber,
|
||||
verification_code: "",
|
||||
};
|
||||
const validationSchema = Yup.object().shape({
|
||||
verification_code: Yup.string().required(
|
||||
t("LoginPage.error_message_verification_code")
|
||||
),
|
||||
});
|
||||
|
||||
const handleSubmit = (values, props) => {
|
||||
requestServer(LOGIN, "post", {
|
||||
auth: false, data: {
|
||||
phone_number: values.phone_number,
|
||||
verification_code: values.verification_code,
|
||||
}
|
||||
})
|
||||
.then(function (response) {
|
||||
setToken(response.data.token);
|
||||
}).catch(function (error) {
|
||||
props.setSubmitting(false);
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<FullPageLayout sx={{p: 1}}>
|
||||
<CenterLayout>
|
||||
<Container maxWidth="sm">
|
||||
<Paper elevation={0}>
|
||||
<Formik
|
||||
initialValues={initialValues}
|
||||
onSubmit={handleSubmit}
|
||||
validationSchema={validationSchema}
|
||||
>
|
||||
{(props) => (
|
||||
<Stack spacing={2} sx={{p: 2}}>
|
||||
<Stack
|
||||
sx={{width: "100%"}}
|
||||
alignItems='center'
|
||||
>
|
||||
<SvgLogin width={300} height={200}/>
|
||||
</Stack>
|
||||
<Typography margin={2} variant="h4" textAlign="center">
|
||||
{t("login")}
|
||||
</Typography>
|
||||
<StyledForm sx={{width: "100%"}}>
|
||||
<Stack spacing={3} sx={{p: 2}}>
|
||||
<Box
|
||||
sx={{
|
||||
display: {xs: "column", sm: "flex"},
|
||||
alignItems: "center",
|
||||
textAlign: {xs: "center", sm: "unset"},
|
||||
justifyContent: "space-between",
|
||||
}}
|
||||
>
|
||||
<Typography variant="button" sx={{display: "block"}}>
|
||||
{t("LoginPage.sent_token_to")}: {PhoneNumber}
|
||||
</Typography>
|
||||
<Button
|
||||
size="small"
|
||||
startIcon={<ChangeCircleIcon/>}
|
||||
variant="outlined"
|
||||
onClick={() => setOtpToken(false)}
|
||||
sx={{whiteSpace: "nowrap", my: {xs: 1, sm: 0}}}
|
||||
>
|
||||
{t("LoginPage.change_phone_number")}
|
||||
</Button>
|
||||
</Box>
|
||||
<Field
|
||||
as={TextField}
|
||||
name="verification_code"
|
||||
variant="outlined"
|
||||
label={t("LoginPage.text_field_verification_code")}
|
||||
placeholder={t(
|
||||
"LoginPage.text_field_enter_your_verification_code"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
!!(props.touched.verification_code && props.errors.verification_code)
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.verification_code
|
||||
? props.errors.verification_code
|
||||
: null
|
||||
}
|
||||
/>
|
||||
<Grid container>
|
||||
<Grid item xs={12}>
|
||||
<Button
|
||||
fullWidth
|
||||
type="submit"
|
||||
variant="contained"
|
||||
size="large"
|
||||
endIcon={<LoginIcon/>}
|
||||
disabled={props.isSubmitting}
|
||||
>
|
||||
{t("LoginPage.button_submit")}
|
||||
</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<ResendToken
|
||||
initialTimerValue={initialTimerValue}
|
||||
timer={timer}
|
||||
setTimer={setTimer}
|
||||
PhoneNumber={PhoneNumber}
|
||||
disabled={props.isSubmitting}
|
||||
/>
|
||||
</Stack>
|
||||
</StyledForm>
|
||||
</Stack>
|
||||
)}
|
||||
</Formik>
|
||||
</Paper>
|
||||
</Container>
|
||||
</CenterLayout>
|
||||
</FullPageLayout>
|
||||
);
|
||||
};
|
||||
|
||||
export default SendTokenComponent;
|
||||
152
src/components/login/SendUserData.jsx
Normal file
152
src/components/login/SendUserData.jsx
Normal file
@@ -0,0 +1,152 @@
|
||||
import LinkRouting from "@/core/components/LinkRouting";
|
||||
import StyledForm from "@/core/components/StyledForm";
|
||||
import {SEND_OTP_TOKEN} from "@/core/data/apiRoutes";
|
||||
import CenterLayout from "@/layouts/CenterLayout";
|
||||
import FullPageLayout from "@/layouts/FullPageLayout";
|
||||
import FingerprintIcon from "@mui/icons-material/Fingerprint";
|
||||
import PersonAddIcon from "@mui/icons-material/PersonAdd";
|
||||
import {Button, Container, Grid, Paper, Stack, TextField, Typography,} from "@mui/material";
|
||||
import {Field, Formik} from "formik";
|
||||
import {useTranslations} from "next-intl";
|
||||
import {useSearchParams} from "next/navigation";
|
||||
import * as Yup from "yup";
|
||||
import SvgLogin from "@/core/components/svgs/SvgLogin";
|
||||
import useRequest from "@/lib/app/hooks/useRequest";
|
||||
|
||||
const SendUserDataComponent = ({
|
||||
setOtpToken,
|
||||
setPhoneNumber,
|
||||
PhoneNumber,
|
||||
setTimer,
|
||||
initialTimerValue,
|
||||
}) => {
|
||||
const t = useTranslations();
|
||||
const requestServer = useRequest();
|
||||
|
||||
const searchParams = useSearchParams();
|
||||
const backUrlDecodedPath = searchParams.get("back_url");
|
||||
|
||||
const initialValues = {
|
||||
phone_number: PhoneNumber,
|
||||
};
|
||||
const validationSchema = Yup.object().shape({
|
||||
phone_number: Yup.string().required(t("LoginPage.error_message_phone_number")),
|
||||
});
|
||||
|
||||
const handleSubmit = (values, props) => {
|
||||
requestServer(SEND_OTP_TOKEN, "post", {
|
||||
auth: false, data: {
|
||||
phone_number: values.phone_number,
|
||||
}
|
||||
})
|
||||
.then(function (response) {
|
||||
setPhoneNumber(values.phone_number);
|
||||
setOtpToken(true);
|
||||
setTimer(initialTimerValue);
|
||||
}).catch(function (error) {
|
||||
props.setSubmitting(false);
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<FullPageLayout sx={{p: 1}}>
|
||||
<CenterLayout>
|
||||
<Container maxWidth="sm">
|
||||
<Paper elevation={0}>
|
||||
<Formik
|
||||
initialValues={initialValues}
|
||||
onSubmit={handleSubmit}
|
||||
validationSchema={validationSchema}
|
||||
>
|
||||
{(props) => (
|
||||
<Stack spacing={2} sx={{p: 2}}>
|
||||
<Stack
|
||||
sx={{width: "100%"}}
|
||||
alignItems='center'
|
||||
>
|
||||
<SvgLogin width={300} height={200}/>
|
||||
</Stack>
|
||||
<Typography margin={2} variant="h4" textAlign="center">
|
||||
{t("Titles.title_login_page")}
|
||||
</Typography>
|
||||
<StyledForm sx={{width: "100%"}}>
|
||||
<Stack spacing={3} sx={{p: 2}}>
|
||||
<Field
|
||||
as={TextField}
|
||||
name="phone_number"
|
||||
variant="outlined"
|
||||
label={t("LoginPage.text_field_phone_number")}
|
||||
placeholder={t(
|
||||
"LoginPage.text_field_enter_your_phone_number"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
!!(props.touched.phone_number && props.errors.phone_number)
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.phone_number
|
||||
? props.errors.phone_number
|
||||
: null
|
||||
}
|
||||
/>
|
||||
<Grid
|
||||
container
|
||||
rowSpacing={{xs: 1, sm: 0}}
|
||||
sx={{
|
||||
flexDirection: {xs: "column-reverse", sm: "row"},
|
||||
}}
|
||||
>
|
||||
<Grid item xs={12} sm={6} sx={{pr: {xs: 0, sm: 1}}}>
|
||||
<LinkRouting href={"/register"}>
|
||||
<Button
|
||||
fullWidth
|
||||
type="button"
|
||||
variant="outlined"
|
||||
size="large"
|
||||
endIcon={<PersonAddIcon/>}
|
||||
disabled={props.isSubmitting}
|
||||
>
|
||||
{t("LoginPage.button_make_account")}
|
||||
</Button>
|
||||
</LinkRouting>
|
||||
</Grid>
|
||||
<Grid item xs={12} sm={6} sx={{pl: {xs: 0, sm: 1}}}>
|
||||
<Button
|
||||
fullWidth
|
||||
type="submit"
|
||||
variant="contained"
|
||||
size="large"
|
||||
endIcon={<FingerprintIcon/>}
|
||||
disabled={props.isSubmitting}
|
||||
>
|
||||
{t("LoginPage.button_request_verification")}
|
||||
</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Stack>
|
||||
</StyledForm>
|
||||
</Stack>
|
||||
)}
|
||||
</Formik>
|
||||
</Paper>
|
||||
</Container>
|
||||
</CenterLayout>
|
||||
<Stack direction="row" alignItems="center" justifyContent="center">
|
||||
<LinkRouting
|
||||
sx={{margin: 2}}
|
||||
href={
|
||||
backUrlDecodedPath ? decodeURIComponent(backUrlDecodedPath) : "/"
|
||||
}
|
||||
>
|
||||
{t("LoginPage.link_routing_back_to")}{" "}
|
||||
{backUrlDecodedPath
|
||||
? t("LoginPage.link_routing_previuos_page")
|
||||
: t("LoginPage.link_routing_main_page")}
|
||||
</LinkRouting>
|
||||
</Stack>
|
||||
</FullPageLayout>
|
||||
);
|
||||
};
|
||||
|
||||
export default SendUserDataComponent;
|
||||
37
src/components/login/index.jsx
Normal file
37
src/components/login/index.jsx
Normal file
@@ -0,0 +1,37 @@
|
||||
import {useState} from "react";
|
||||
import SendTokenComponent from "./SendToken";
|
||||
import SendUserDataComponent from "./SendUserData";
|
||||
|
||||
const LoginComponent = () => {
|
||||
const [otpToken, setOtpToken] = useState(false);
|
||||
const [PhoneNumber, setPhoneNumber] = useState("");
|
||||
|
||||
// For Resend Token (read ResendToken Component Doc)
|
||||
const initialTimerValue = 30;
|
||||
const [timer, setTimer] = useState(initialTimerValue);
|
||||
// End For Resend Token
|
||||
|
||||
if (!otpToken) {
|
||||
return (
|
||||
<SendUserDataComponent
|
||||
setOtpToken={setOtpToken}
|
||||
setPhoneNumber={setPhoneNumber}
|
||||
PhoneNumber={PhoneNumber}
|
||||
initialTimerValue={initialTimerValue}
|
||||
setTimer={setTimer}
|
||||
/>
|
||||
);
|
||||
} else {
|
||||
return (
|
||||
<SendTokenComponent
|
||||
PhoneNumber={PhoneNumber}
|
||||
setOtpToken={setOtpToken}
|
||||
timer={timer}
|
||||
initialTimerValue={initialTimerValue}
|
||||
setTimer={setTimer}
|
||||
/>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
export default LoginComponent;
|
||||
131
src/components/register/RequestOtp.jsx
Normal file
131
src/components/register/RequestOtp.jsx
Normal file
@@ -0,0 +1,131 @@
|
||||
import LinkRouting from "@/core/components/LinkRouting";
|
||||
import StyledForm from "@/core/components/StyledForm";
|
||||
import {SEND_OTP_TOKEN} from "@/core/data/apiRoutes";
|
||||
import CenterLayout from "@/layouts/CenterLayout";
|
||||
import FullPageLayout from "@/layouts/FullPageLayout";
|
||||
import FingerprintIcon from "@mui/icons-material/Fingerprint";
|
||||
import {Button, Container, Paper, Stack, TextField, Typography,} from "@mui/material";
|
||||
import {Field, Formik} from "formik";
|
||||
import {useTranslations} from "next-intl";
|
||||
import {useSearchParams} from "next/navigation";
|
||||
import * as Yup from "yup";
|
||||
import SvgLogin from "@/core/components/svgs/SvgLogin";
|
||||
import useRequest from "@/lib/app/hooks/useRequest";
|
||||
|
||||
const RequestOtpComponent = ({
|
||||
setOtpToken,
|
||||
setPhoneNumber,
|
||||
PhoneNumber,
|
||||
setTimer,
|
||||
initialTimerValue,
|
||||
}) => {
|
||||
const t = useTranslations();
|
||||
const requestServer = useRequest();
|
||||
|
||||
const searchParams = useSearchParams();
|
||||
const backUrlDecodedPath = searchParams.get("back_url");
|
||||
|
||||
const initialValues = {
|
||||
phone_number: PhoneNumber,
|
||||
};
|
||||
const validationSchema = Yup.object().shape({
|
||||
phone_number: Yup.string().required(
|
||||
t("RegisterPage.error_message_phone_number")
|
||||
),
|
||||
});
|
||||
|
||||
const handleSubmit = (values, props) => {
|
||||
requestServer(SEND_OTP_TOKEN, "post", {
|
||||
auth: false, data: {
|
||||
phone_number: values.phone_number,
|
||||
}
|
||||
})
|
||||
.then(function (response) {
|
||||
setPhoneNumber(values.phone_number);
|
||||
setOtpToken(true);
|
||||
setTimer(initialTimerValue);
|
||||
}).catch(function (error) {
|
||||
props.setSubmitting(false);
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<FullPageLayout sx={{p: 1}}>
|
||||
<CenterLayout>
|
||||
<Container maxWidth="sm">
|
||||
<Paper elevation={0}>
|
||||
<Formik
|
||||
initialValues={initialValues}
|
||||
onSubmit={handleSubmit}
|
||||
validationSchema={validationSchema}
|
||||
>
|
||||
{(props) => (
|
||||
<Stack spacing={2} sx={{p: 2}}>
|
||||
<Stack
|
||||
sx={{width: "100%"}}
|
||||
alignItems='center'
|
||||
>
|
||||
<SvgLogin width={300} height={200}/>
|
||||
</Stack>
|
||||
<Typography margin={2} variant="h4" textAlign="center">
|
||||
{t("Titles.title_register_page")}
|
||||
</Typography>
|
||||
<StyledForm sx={{width: "100%"}}>
|
||||
<Stack spacing={3} sx={{p: 2}}>
|
||||
<Field
|
||||
as={TextField}
|
||||
name="phone_number"
|
||||
variant="outlined"
|
||||
label={t("RegisterPage.text_field_phone_number")}
|
||||
placeholder={t(
|
||||
"RegisterPage.text_field_enter_your_phone_number"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
!!(props.touched.phone_number && props.errors.phone_number)
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.phone_number
|
||||
? props.errors.phone_number
|
||||
: null
|
||||
}
|
||||
/>
|
||||
<Button
|
||||
fullWidth
|
||||
type="submit"
|
||||
variant="contained"
|
||||
size="large"
|
||||
endIcon={<FingerprintIcon/>}
|
||||
disabled={props.isSubmitting}
|
||||
>
|
||||
{t("RegisterPage.button_request_verification")}
|
||||
</Button>
|
||||
</Stack>
|
||||
</StyledForm>
|
||||
</Stack>
|
||||
)}
|
||||
</Formik>
|
||||
</Paper>
|
||||
</Container>
|
||||
</CenterLayout>
|
||||
<Stack direction="row" alignItems="center" justifyContent="center">
|
||||
<LinkRouting
|
||||
sx={{margin: 2}}
|
||||
href={
|
||||
backUrlDecodedPath
|
||||
? decodeURIComponent(backUrlDecodedPath)
|
||||
: "/register"
|
||||
}
|
||||
>
|
||||
{t("RegisterPage.link_routing_back_to")}{" "}
|
||||
{backUrlDecodedPath
|
||||
? t("RegisterPage.link_routing_previuos_page")
|
||||
: t("RegisterPage.link_routing_register")}
|
||||
</LinkRouting>
|
||||
</Stack>
|
||||
</FullPageLayout>
|
||||
);
|
||||
};
|
||||
|
||||
export default RequestOtpComponent;
|
||||
90
src/components/register/index.jsx
Normal file
90
src/components/register/index.jsx
Normal file
@@ -0,0 +1,90 @@
|
||||
import LinkRouting, {NextLinkComposed} from "@/core/components/LinkRouting";
|
||||
import CenterLayout from "@/layouts/CenterLayout";
|
||||
import FullPageLayout from "@/layouts/FullPageLayout";
|
||||
import useUser from "@/lib/app/hooks/useUser";
|
||||
import {Box, Button, Grid, Stack} from "@mui/material";
|
||||
import {useTranslations} from "next-intl";
|
||||
import {useSearchParams} from "next/navigation";
|
||||
import SvgDashboard from "@/core/components/svgs/SvgDashboard";
|
||||
|
||||
const RegisterComponent = () => {
|
||||
const t = useTranslations();
|
||||
const {isAuth} = useUser();
|
||||
|
||||
const searchParams = useSearchParams();
|
||||
const backUrlDecodedPath = searchParams.get("back_url");
|
||||
|
||||
return (
|
||||
<FullPageLayout sx={{p: 1}}>
|
||||
<CenterLayout spacing={3}>
|
||||
<SvgDashboard width={300} height={200}/>
|
||||
{isAuth ? (
|
||||
<Button
|
||||
variant="contained"
|
||||
component={NextLinkComposed}
|
||||
to={{
|
||||
pathname: "/dashboard",
|
||||
}}
|
||||
>
|
||||
{t("dashboard")}
|
||||
</Button>
|
||||
) : (
|
||||
<Box>
|
||||
<Grid
|
||||
container
|
||||
rowSpacing={{xs: 1, sm: 0}}
|
||||
sx={{
|
||||
flexDirection: {xs: "column", sm: "row"},
|
||||
alignItems: "center",
|
||||
}}
|
||||
>
|
||||
<Grid item xs={12} sm={6} sx={{px: {xs: 0, sm: 1}}}>
|
||||
<Button
|
||||
sx={{whiteSpace: "nowrap"}}
|
||||
variant="contained"
|
||||
size="large"
|
||||
component={NextLinkComposed}
|
||||
to={{
|
||||
pathname: "register/navy",
|
||||
}}
|
||||
>
|
||||
{t("register_navy")}
|
||||
</Button>
|
||||
</Grid>
|
||||
<Grid item xs={12} sm={6} sx={{px: {xs: 0, sm: 1}}}>
|
||||
<Button
|
||||
sx={{whiteSpace: "nowrap"}}
|
||||
variant="contained"
|
||||
size="large"
|
||||
component={NextLinkComposed}
|
||||
to={{
|
||||
pathname: "register/welfare-services",
|
||||
}}
|
||||
>
|
||||
{t("register_welfare_services")}
|
||||
</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Box>
|
||||
)}
|
||||
</CenterLayout>
|
||||
<Stack direction="row" alignItems="center" justifyContent="center">
|
||||
<LinkRouting
|
||||
sx={{margin: 2}}
|
||||
href={
|
||||
backUrlDecodedPath
|
||||
? decodeURIComponent(backUrlDecodedPath)
|
||||
: "/login"
|
||||
}
|
||||
>
|
||||
{t("RegisterPage.link_routing_back_to")}{" "}
|
||||
{backUrlDecodedPath
|
||||
? t("RegisterPage.link_routing_previuos_page")
|
||||
: t("RegisterPage.link_routing_login")}
|
||||
</LinkRouting>
|
||||
</Stack>
|
||||
</FullPageLayout>
|
||||
);
|
||||
};
|
||||
|
||||
export default RegisterComponent;
|
||||
195
src/components/register/navy/UserRegister.jsx
Normal file
195
src/components/register/navy/UserRegister.jsx
Normal file
@@ -0,0 +1,195 @@
|
||||
import StyledForm from "@/core/components/StyledForm";
|
||||
import {REGISTER} from "@/core/data/apiRoutes";
|
||||
import CenterLayout from "@/layouts/CenterLayout";
|
||||
import FullPageLayout from "@/layouts/FullPageLayout";
|
||||
import LoginIcon from "@mui/icons-material/Login";
|
||||
import ChangeCircleIcon from "@mui/icons-material/ChangeCircle";
|
||||
import {Box, Button, Chip, Container, Divider, Paper, Stack, TextField, Typography,} from "@mui/material";
|
||||
import {Field, Formik} from "formik";
|
||||
import {useTranslations} from "next-intl";
|
||||
import * as Yup from "yup";
|
||||
import ResendToken from "@/core/components/ResendToken";
|
||||
import useUser from "@/lib/app/hooks/useUser";
|
||||
import SvgRegister from "@/core/components/svgs/SvgRegister";
|
||||
import useRequest from "@/lib/app/hooks/useRequest";
|
||||
|
||||
const UserRegisterComponent = ({
|
||||
PhoneNumber,
|
||||
setOtpToken,
|
||||
initialTimerValue,
|
||||
timer,
|
||||
setTimer,
|
||||
}) => {
|
||||
const t = useTranslations();
|
||||
const {setToken} = useUser();
|
||||
const requestServer = useRequest();
|
||||
|
||||
const initialValues = {
|
||||
type_id: "1",
|
||||
verification_code: "",
|
||||
phone_number: PhoneNumber,
|
||||
national_id: "",
|
||||
navgan_id: "",
|
||||
};
|
||||
|
||||
const validationSchema = Yup.object().shape({
|
||||
verification_code: Yup.string().required(
|
||||
t("RegisterPage.error_message_verification_code")
|
||||
),
|
||||
national_id: Yup.string().required(
|
||||
t("RegisterPage.error_message_national_id")
|
||||
),
|
||||
navgan_id: Yup.string().required(t("RegisterPage.error_message_navgan_id")),
|
||||
});
|
||||
|
||||
const handleSubmit = (values, props) => {
|
||||
requestServer(REGISTER, "post", {
|
||||
auth: false, data: {
|
||||
type_id: values.type_id,
|
||||
national_id: values.national_id,
|
||||
navgan_id: values.navgan_id,
|
||||
phone_number: values.phone_number,
|
||||
verification_code: values.verification_code,
|
||||
}
|
||||
})
|
||||
.then(function (response) {
|
||||
setOtpToken(true);
|
||||
setToken(response.data.token);
|
||||
}).catch(function (error) {
|
||||
props.setSubmitting(false);
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<FullPageLayout sx={{p: 1}}>
|
||||
<CenterLayout>
|
||||
<Container maxWidth="sm">
|
||||
<Paper elevation={0}>
|
||||
<Formik
|
||||
initialValues={initialValues}
|
||||
onSubmit={handleSubmit}
|
||||
validationSchema={validationSchema}
|
||||
>
|
||||
{(props) => (
|
||||
<Stack spacing={2} sx={{p: 2}}>
|
||||
<Stack
|
||||
sx={{width: "100%"}}
|
||||
alignItems='center'
|
||||
>
|
||||
<SvgRegister width={300} height={200}/>
|
||||
</Stack>
|
||||
<Typography margin={2} variant="h4" textAlign="center">
|
||||
{t("register_navy")}
|
||||
</Typography>
|
||||
<StyledForm sx={{width: "100%"}}>
|
||||
<Stack spacing={3} sx={{p: 2}}>
|
||||
<Box
|
||||
sx={{
|
||||
display: {xs: "column", sm: "flex"},
|
||||
alignItems: "center",
|
||||
textAlign: {xs: "center", sm: "unset"},
|
||||
justifyContent: "space-between",
|
||||
}}
|
||||
>
|
||||
<Typography variant="button" sx={{display: "block"}}>
|
||||
{t("LoginPage.sent_token_to")}: {PhoneNumber}
|
||||
</Typography>
|
||||
<Button
|
||||
size="small"
|
||||
startIcon={<ChangeCircleIcon/>}
|
||||
variant="outlined"
|
||||
sx={{whiteSpace: "nowrap", my: {xs: 1, sm: 0}}}
|
||||
onClick={() => setOtpToken(false)}
|
||||
>
|
||||
{t("LoginPage.change_phone_number")}
|
||||
</Button>
|
||||
</Box>
|
||||
<Field
|
||||
as={TextField}
|
||||
name="verification_code"
|
||||
variant="outlined"
|
||||
label={t("LoginPage.text_field_verification_code")}
|
||||
placeholder={t(
|
||||
"LoginPage.text_field_enter_your_verification_code"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
!!(props.touched.verification_code && props.errors.verification_code)
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.verification_code
|
||||
? props.errors.verification_code
|
||||
: null
|
||||
}
|
||||
/>
|
||||
<ResendToken
|
||||
initialTimerValue={initialTimerValue}
|
||||
timer={timer}
|
||||
setTimer={setTimer}
|
||||
PhoneNumber={PhoneNumber}
|
||||
/>
|
||||
<Divider>
|
||||
<Chip label={t("RegisterPage.complete_information")}/>
|
||||
</Divider>
|
||||
<Field
|
||||
as={TextField}
|
||||
name="national_id"
|
||||
variant="outlined"
|
||||
label={t("RegisterPage.text_field_national_id")}
|
||||
placeholder={t(
|
||||
"RegisterPage.text_field_enter_your_national_id"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
!!(props.touched.national_id && props.errors.national_id)
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.national_id
|
||||
? props.errors.national_id
|
||||
: null
|
||||
}
|
||||
/>
|
||||
<Field
|
||||
as={TextField}
|
||||
name="navgan_id"
|
||||
variant="outlined"
|
||||
label={t("RegisterPage.text_field_navgan_id")}
|
||||
placeholder={t(
|
||||
"RegisterPage.text_field_enter_your_navgan_id"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
!!(props.touched.navgan_id && props.errors.navgan_id)
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.navgan_id
|
||||
? props.errors.navgan_id
|
||||
: null
|
||||
}
|
||||
/>
|
||||
<Button
|
||||
fullWidth
|
||||
type="submit"
|
||||
variant="contained"
|
||||
size="large"
|
||||
endIcon={<LoginIcon/>}
|
||||
disabled={props.isSubmitting}
|
||||
>
|
||||
{t("RegisterPage.button_submit")}
|
||||
</Button>
|
||||
</Stack>
|
||||
</StyledForm>
|
||||
</Stack>
|
||||
)}
|
||||
</Formik>
|
||||
</Paper>
|
||||
</Container>
|
||||
</CenterLayout>
|
||||
</FullPageLayout>
|
||||
);
|
||||
};
|
||||
|
||||
export default UserRegisterComponent;
|
||||
37
src/components/register/navy/index.jsx
Normal file
37
src/components/register/navy/index.jsx
Normal file
@@ -0,0 +1,37 @@
|
||||
import {useState} from "react";
|
||||
import RequestOtpComponent from "../RequestOtp";
|
||||
import UserRegisterComponent from "./UserRegister";
|
||||
|
||||
const NavyComponent = () => {
|
||||
const [otpToken, setOtpToken] = useState(false);
|
||||
const [PhoneNumber, setPhoneNumber] = useState("");
|
||||
|
||||
// For Resend Token (read ResendToken Component Doc)
|
||||
const initialTimerValue = 30;
|
||||
const [timer, setTimer] = useState(initialTimerValue);
|
||||
// End For Resend Token
|
||||
|
||||
if (!otpToken) {
|
||||
return (
|
||||
<RequestOtpComponent
|
||||
setOtpToken={setOtpToken}
|
||||
PhoneNumber={PhoneNumber}
|
||||
setPhoneNumber={setPhoneNumber}
|
||||
setTimer={setTimer}
|
||||
initialTimerValue={initialTimerValue}
|
||||
/>
|
||||
);
|
||||
} else {
|
||||
return (
|
||||
<UserRegisterComponent
|
||||
PhoneNumber={PhoneNumber}
|
||||
setOtpToken={setOtpToken}
|
||||
timer={timer}
|
||||
setTimer={setTimer}
|
||||
initialTimerValue={initialTimerValue}
|
||||
/>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
export default NavyComponent;
|
||||
174
src/components/register/welfare-services/UserRegister.jsx
Normal file
174
src/components/register/welfare-services/UserRegister.jsx
Normal file
@@ -0,0 +1,174 @@
|
||||
import StyledForm from "@/core/components/StyledForm";
|
||||
import {REGISTER} from "@/core/data/apiRoutes";
|
||||
import CenterLayout from "@/layouts/CenterLayout";
|
||||
import FullPageLayout from "@/layouts/FullPageLayout";
|
||||
import LoginIcon from "@mui/icons-material/Login";
|
||||
import ChangeCircleIcon from "@mui/icons-material/ChangeCircle";
|
||||
import {Box, Button, Chip, Container, Divider, Paper, Stack, TextField, Typography,} from "@mui/material";
|
||||
import {Field, Formik} from "formik";
|
||||
import {useTranslations} from "next-intl";
|
||||
import * as Yup from "yup";
|
||||
import ResendToken from "@/core/components/ResendToken";
|
||||
import useUser from "@/lib/app/hooks/useUser";
|
||||
import SvgRegister from "@/core/components/svgs/SvgRegister";
|
||||
import useRequest from "@/lib/app/hooks/useRequest";
|
||||
|
||||
const UserRegisterComponent = ({
|
||||
PhoneNumber,
|
||||
setOtpToken,
|
||||
initialTimerValue,
|
||||
timer,
|
||||
setTimer,
|
||||
}) => {
|
||||
const t = useTranslations();
|
||||
const {setToken} = useUser();
|
||||
const requestServer = useRequest();
|
||||
|
||||
const initialValues = {
|
||||
type_id: "2",
|
||||
verification_code: "",
|
||||
phone_number: PhoneNumber,
|
||||
national_id: "",
|
||||
};
|
||||
|
||||
const validationSchema = Yup.object().shape({
|
||||
verification_code: Yup.string().required(
|
||||
t("RegisterPage.error_message_verification_code")
|
||||
),
|
||||
national_id: Yup.string().required(
|
||||
t("RegisterPage.error_message_national_id")
|
||||
),
|
||||
});
|
||||
|
||||
const handleSubmit = (values, props) => {
|
||||
requestServer(REGISTER, "post", {
|
||||
auth: false, data: {
|
||||
type_id: values.type_id,
|
||||
national_id: values.national_id,
|
||||
phone_number: values.phone_number,
|
||||
verification_code: values.verification_code,
|
||||
}
|
||||
})
|
||||
.then(function (response) {
|
||||
setOtpToken(true);
|
||||
setToken(response.data.token);
|
||||
}).catch(function (error) {
|
||||
props.setSubmitting(false);
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<FullPageLayout sx={{p: 1}}>
|
||||
<CenterLayout>
|
||||
<Container maxWidth="sm">
|
||||
<Paper elevation={0}>
|
||||
<Formik
|
||||
initialValues={initialValues}
|
||||
onSubmit={handleSubmit}
|
||||
validationSchema={validationSchema}
|
||||
>
|
||||
{(props) => (
|
||||
<Stack spacing={2} sx={{p: 2}}>
|
||||
<Stack
|
||||
sx={{width: "100%"}}
|
||||
alignItems='center'
|
||||
>
|
||||
<SvgRegister width={300} height={200}/>
|
||||
</Stack>
|
||||
<Typography margin={2} variant="h4" textAlign="center">
|
||||
{t("register_welfare_services")}
|
||||
</Typography>
|
||||
<StyledForm sx={{width: "100%"}}>
|
||||
<Stack spacing={3} sx={{p: 2}}>
|
||||
<Box
|
||||
sx={{
|
||||
display: {xs: "column", sm: "flex"},
|
||||
alignItems: "center",
|
||||
textAlign: {xs: "center", sm: "unset"},
|
||||
justifyContent: "space-between",
|
||||
}}
|
||||
>
|
||||
<Typography variant="button" sx={{display: "block"}}>
|
||||
{t("LoginPage.sent_token_to")}: {PhoneNumber}
|
||||
</Typography>
|
||||
<Button
|
||||
size="small"
|
||||
startIcon={<ChangeCircleIcon/>}
|
||||
variant="outlined"
|
||||
onClick={() => setOtpToken(false)}
|
||||
sx={{whiteSpace: "nowrap", my: {xs: 1, sm: 0}}}
|
||||
>
|
||||
{t("LoginPage.change_phone_number")}
|
||||
</Button>
|
||||
</Box>
|
||||
<Field
|
||||
as={TextField}
|
||||
name="verification_code"
|
||||
variant="outlined"
|
||||
label={t("LoginPage.text_field_verification_code")}
|
||||
placeholder={t(
|
||||
"LoginPage.text_field_enter_your_verification_code"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
!!(props.touched.verification_code && props.errors.verification_code)
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.verification_code
|
||||
? props.errors.verification_code
|
||||
: null
|
||||
}
|
||||
/>
|
||||
<ResendToken
|
||||
initialTimerValue={initialTimerValue}
|
||||
timer={timer}
|
||||
setTimer={setTimer}
|
||||
PhoneNumber={PhoneNumber}
|
||||
disabled={props.isSubmitting}
|
||||
/>
|
||||
<Divider>
|
||||
<Chip label={t("RegisterPage.complete_information")}/>
|
||||
</Divider>
|
||||
<Field
|
||||
as={TextField}
|
||||
name="national_id"
|
||||
variant="outlined"
|
||||
label={t("RegisterPage.text_field_national_id")}
|
||||
placeholder={t(
|
||||
"RegisterPage.text_field_enter_your_national_id"
|
||||
)}
|
||||
type={"text"}
|
||||
error={
|
||||
!!(props.touched.national_id && props.errors.national_id)
|
||||
}
|
||||
fullWidth
|
||||
helperText={
|
||||
props.touched.national_id
|
||||
? props.errors.national_id
|
||||
: null
|
||||
}
|
||||
/>
|
||||
<Button
|
||||
fullWidth
|
||||
type="submit"
|
||||
variant="contained"
|
||||
size="large"
|
||||
endIcon={<LoginIcon/>}
|
||||
disabled={props.isSubmitting}
|
||||
>
|
||||
{t("RegisterPage.button_submit")}
|
||||
</Button>
|
||||
</Stack>
|
||||
</StyledForm>
|
||||
</Stack>
|
||||
)}
|
||||
</Formik>
|
||||
</Paper>
|
||||
</Container>
|
||||
</CenterLayout>
|
||||
</FullPageLayout>
|
||||
);
|
||||
};
|
||||
|
||||
export default UserRegisterComponent;
|
||||
37
src/components/register/welfare-services/index.jsx
Normal file
37
src/components/register/welfare-services/index.jsx
Normal file
@@ -0,0 +1,37 @@
|
||||
import {useState} from "react";
|
||||
import RequestOtpComponent from "../RequestOtp";
|
||||
import UserRegisterComponent from "./UserRegister";
|
||||
|
||||
const WelfareServicesComponent = () => {
|
||||
const [otpToken, setOtpToken] = useState(false);
|
||||
const [PhoneNumber, setPhoneNumber] = useState("");
|
||||
|
||||
// For Resend Token (read ResendToken Component Doc)
|
||||
const initialTimerValue = 30;
|
||||
const [timer, setTimer] = useState(initialTimerValue);
|
||||
// End For Resend Token
|
||||
|
||||
if (!otpToken) {
|
||||
return (
|
||||
<RequestOtpComponent
|
||||
setOtpToken={setOtpToken}
|
||||
PhoneNumber={PhoneNumber}
|
||||
setPhoneNumber={setPhoneNumber}
|
||||
setTimer={setTimer}
|
||||
initialTimerValue={initialTimerValue}
|
||||
/>
|
||||
);
|
||||
} else {
|
||||
return (
|
||||
<UserRegisterComponent
|
||||
PhoneNumber={PhoneNumber}
|
||||
setOtpToken={setOtpToken}
|
||||
timer={timer}
|
||||
setTimer={setTimer}
|
||||
initialTimerValue={initialTimerValue}
|
||||
/>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
export default WelfareServicesComponent;
|
||||
@@ -1,116 +1,116 @@
|
||||
import MuiLink from "@mui/material/Link";
|
||||
import { styled } from "@mui/material/styles";
|
||||
import {styled} from "@mui/material/styles";
|
||||
import clsx from "clsx";
|
||||
import NextLink from "next/link";
|
||||
import { useRouter } from "next/router";
|
||||
import {useRouter} from "next/router";
|
||||
import * as React from "react";
|
||||
|
||||
// Add support for the sx prop for consistency with the other branches.
|
||||
const Anchor = styled("a")({});
|
||||
|
||||
export const NextLinkComposed = React.forwardRef(function NextLinkComposed(
|
||||
props,
|
||||
ref
|
||||
props,
|
||||
ref
|
||||
) {
|
||||
const {
|
||||
to,
|
||||
linkAs,
|
||||
replace,
|
||||
scroll,
|
||||
shallow,
|
||||
prefetch,
|
||||
legacyBehavior = true,
|
||||
locale,
|
||||
...other
|
||||
} = props;
|
||||
const {
|
||||
to,
|
||||
linkAs,
|
||||
replace,
|
||||
scroll,
|
||||
shallow,
|
||||
prefetch,
|
||||
legacyBehavior = true,
|
||||
locale,
|
||||
...other
|
||||
} = props;
|
||||
|
||||
return (
|
||||
<NextLink
|
||||
href={to}
|
||||
prefetch={prefetch}
|
||||
as={linkAs}
|
||||
replace={replace}
|
||||
scroll={scroll}
|
||||
shallow={shallow}
|
||||
passHref
|
||||
locale={locale}
|
||||
legacyBehavior={legacyBehavior}
|
||||
>
|
||||
<Anchor ref={ref} {...other} />
|
||||
</NextLink>
|
||||
);
|
||||
return (
|
||||
<NextLink
|
||||
href={to}
|
||||
prefetch={prefetch}
|
||||
as={linkAs}
|
||||
replace={replace}
|
||||
scroll={scroll}
|
||||
shallow={shallow}
|
||||
passHref
|
||||
locale={locale}
|
||||
legacyBehavior={legacyBehavior}
|
||||
>
|
||||
<Anchor ref={ref} {...other} />
|
||||
</NextLink>
|
||||
);
|
||||
});
|
||||
|
||||
// A styled version of the Next.js Link component:
|
||||
// https://nextjs.org/docs/api-reference/next/link
|
||||
const LinkRouting = React.forwardRef(function Link(props, ref) {
|
||||
const {
|
||||
activeClassName = "active",
|
||||
as,
|
||||
className: classNameProps,
|
||||
href,
|
||||
legacyBehavior,
|
||||
linkAs: linkAsProp,
|
||||
locale,
|
||||
noLinkStyle,
|
||||
prefetch,
|
||||
replace,
|
||||
role, // Link don't have roles.
|
||||
scroll,
|
||||
shallow,
|
||||
...other
|
||||
} = props;
|
||||
const {
|
||||
activeClassName = "active",
|
||||
as,
|
||||
className: classNameProps,
|
||||
href,
|
||||
legacyBehavior,
|
||||
linkAs: linkAsProp,
|
||||
locale,
|
||||
noLinkStyle,
|
||||
prefetch,
|
||||
replace,
|
||||
role, // Link don't have roles.
|
||||
scroll,
|
||||
shallow,
|
||||
...other
|
||||
} = props;
|
||||
|
||||
const router = useRouter();
|
||||
const pathname = typeof href === "string" ? href : href.pathname;
|
||||
const className = clsx(classNameProps, {
|
||||
[activeClassName]: router.pathname === pathname && activeClassName,
|
||||
});
|
||||
const router = useRouter();
|
||||
const pathname = typeof href === "string" ? href : href.pathname;
|
||||
const className = clsx(classNameProps, {
|
||||
[activeClassName]: router.pathname === pathname && activeClassName,
|
||||
});
|
||||
|
||||
const isExternal =
|
||||
typeof href === "string" &&
|
||||
(href.indexOf("http") === 0 || href.indexOf("mailto:") === 0);
|
||||
const isExternal =
|
||||
typeof href === "string" &&
|
||||
(href.indexOf("http") === 0 || href.indexOf("mailto:") === 0);
|
||||
|
||||
if (isExternal) {
|
||||
if (noLinkStyle) {
|
||||
return <Anchor className={className} href={href} ref={ref} {...other} />;
|
||||
if (isExternal) {
|
||||
if (noLinkStyle) {
|
||||
return <Anchor className={className} href={href} ref={ref} {...other} />;
|
||||
}
|
||||
|
||||
return <MuiLink className={className} href={href} ref={ref} {...other} />;
|
||||
}
|
||||
|
||||
return <MuiLink className={className} href={href} ref={ref} {...other} />;
|
||||
}
|
||||
const linkAs = linkAsProp || as;
|
||||
const nextjsProps = {
|
||||
to: href,
|
||||
linkAs,
|
||||
replace,
|
||||
scroll,
|
||||
shallow,
|
||||
prefetch,
|
||||
legacyBehavior,
|
||||
locale,
|
||||
};
|
||||
|
||||
const linkAs = linkAsProp || as;
|
||||
const nextjsProps = {
|
||||
to: href,
|
||||
linkAs,
|
||||
replace,
|
||||
scroll,
|
||||
shallow,
|
||||
prefetch,
|
||||
legacyBehavior,
|
||||
locale,
|
||||
};
|
||||
if (noLinkStyle) {
|
||||
return (
|
||||
<NextLinkComposed
|
||||
className={className}
|
||||
ref={ref}
|
||||
{...nextjsProps}
|
||||
{...other}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
if (noLinkStyle) {
|
||||
return (
|
||||
<NextLinkComposed
|
||||
className={className}
|
||||
ref={ref}
|
||||
{...nextjsProps}
|
||||
{...other}
|
||||
/>
|
||||
<MuiLink
|
||||
component={NextLinkComposed}
|
||||
className={className}
|
||||
ref={ref}
|
||||
{...nextjsProps}
|
||||
{...other}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<MuiLink
|
||||
component={NextLinkComposed}
|
||||
className={className}
|
||||
ref={ref}
|
||||
{...nextjsProps}
|
||||
{...other}
|
||||
/>
|
||||
);
|
||||
});
|
||||
|
||||
export default LinkRouting;
|
||||
|
||||
@@ -1,44 +1,44 @@
|
||||
import { Backdrop, Fade, styled } from "@mui/material";
|
||||
import StyledImage from "./StyledImage";
|
||||
import {Backdrop, Box, Fade, styled} from "@mui/material";
|
||||
import SvgLoading from "@/core/components/svgs/SvgLoading";
|
||||
|
||||
const LoadingImage = styled(StyledImage)({
|
||||
"@keyframes load": {
|
||||
"0%": {
|
||||
// opacity: 0,
|
||||
transform: "scale(1)",
|
||||
const LoadingImage = styled(Box)({
|
||||
"@keyframes load": {
|
||||
"0%": {
|
||||
// opacity: 0,
|
||||
transform: "scale(1)",
|
||||
},
|
||||
"50%": {
|
||||
// opacity: 1,
|
||||
transform: "scale(2)",
|
||||
},
|
||||
"100%": {
|
||||
// opacity: 0,
|
||||
transform: "scale(1)",
|
||||
},
|
||||
},
|
||||
"50%": {
|
||||
// opacity: 1,
|
||||
transform: "scale(2)",
|
||||
},
|
||||
"100%": {
|
||||
// opacity: 0,
|
||||
transform: "scale(1)",
|
||||
},
|
||||
},
|
||||
animation: "load 2s infinite",
|
||||
animation: "load 2s infinite",
|
||||
});
|
||||
|
||||
const LoadingHardPage = ({ children, loading }) => {
|
||||
return (
|
||||
<>
|
||||
<Backdrop
|
||||
sx={{ bgcolor: "#fff", zIndex: (theme) => theme.zIndex.drawer + 1 }}
|
||||
open={loading}
|
||||
>
|
||||
<Fade in={true}>
|
||||
<LoadingImage
|
||||
src={"/images/logo.svg"}
|
||||
alt="loading marhaba"
|
||||
priority
|
||||
width={100}
|
||||
height={100}
|
||||
/>
|
||||
</Fade>
|
||||
</Backdrop>
|
||||
{children}
|
||||
</>
|
||||
);
|
||||
const LoadingHardPage = ({children, loading}) => {
|
||||
return (
|
||||
<>
|
||||
<Backdrop
|
||||
sx={{bgcolor: "#fff", zIndex: (theme) => theme.zIndex.drawer + 1}}
|
||||
open={loading}
|
||||
>
|
||||
<Fade in={true}>
|
||||
<LoadingImage
|
||||
width={100}
|
||||
height={100}
|
||||
>
|
||||
<SvgLoading width={100}
|
||||
height={100}/>
|
||||
</LoadingImage>
|
||||
</Fade>
|
||||
</Backdrop>
|
||||
{children}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default LoadingHardPage;
|
||||
|
||||
@@ -1,22 +1,18 @@
|
||||
import CenterLayout from "@/layouts/CenterLayout";
|
||||
import FullPageLayout from "@/layouts/FullPageLayout";
|
||||
import StyledImage from "./StyledImage";
|
||||
import SvgLoading from "@/core/components/svgs/SvgLoading";
|
||||
|
||||
const Message = ({ text, actions }) => {
|
||||
return (
|
||||
<FullPageLayout sx={{ p: 1 }}>
|
||||
<CenterLayout spacing={3}>
|
||||
<StyledImage
|
||||
src={"/images/logo.svg"}
|
||||
alt="loading loan facilities"
|
||||
width={100}
|
||||
height={100}
|
||||
/>
|
||||
{text}
|
||||
{actions}
|
||||
</CenterLayout>
|
||||
</FullPageLayout>
|
||||
);
|
||||
const Message = ({text, actions}) => {
|
||||
return (
|
||||
<FullPageLayout sx={{p: 1}}>
|
||||
<CenterLayout spacing={3}>
|
||||
<SvgLoading width={100}
|
||||
height={100}/>
|
||||
{text}
|
||||
{actions}
|
||||
</CenterLayout>
|
||||
</FullPageLayout>
|
||||
);
|
||||
};
|
||||
|
||||
export default Message;
|
||||
|
||||
8
src/core/components/NoSsrHandler.jsx
Normal file
8
src/core/components/NoSsrHandler.jsx
Normal file
@@ -0,0 +1,8 @@
|
||||
import {NoSsr} from "@mui/material";
|
||||
|
||||
const NoSsrHandler = ({isBot, children}) => {
|
||||
if (isBot) return children;
|
||||
return <NoSsr>{children}</NoSsr>;
|
||||
};
|
||||
|
||||
export default NoSsrHandler;
|
||||
@@ -1,33 +1,33 @@
|
||||
import { useState } from "react";
|
||||
import { IconButton, InputAdornment, TextField } from "@mui/material";
|
||||
import { Visibility, VisibilityOff } from "@mui/icons-material";
|
||||
import { Field } from "formik";
|
||||
import {useState} from "react";
|
||||
import {IconButton, InputAdornment, TextField} from "@mui/material";
|
||||
import {Visibility, VisibilityOff} from "@mui/icons-material";
|
||||
import {Field} from "formik";
|
||||
|
||||
const PasswordField = (props) => {
|
||||
const [showPassword, setShowPassword] = useState(false);
|
||||
const [showPassword, setShowPassword] = useState(false);
|
||||
|
||||
const handleClickShowPassword = () => {
|
||||
setShowPassword(!showPassword);
|
||||
};
|
||||
const handleClickShowPassword = () => {
|
||||
setShowPassword(!showPassword);
|
||||
};
|
||||
|
||||
return (
|
||||
<Field
|
||||
variant="outlined"
|
||||
fullWidth
|
||||
as={TextField}
|
||||
{...props}
|
||||
type={showPassword ? "text" : "password"}
|
||||
InputProps={{
|
||||
endAdornment: (
|
||||
<InputAdornment position="end">
|
||||
<IconButton onClick={handleClickShowPassword}>
|
||||
{showPassword ? <Visibility /> : <VisibilityOff />}
|
||||
</IconButton>
|
||||
</InputAdornment>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
);
|
||||
return (
|
||||
<Field
|
||||
variant="outlined"
|
||||
fullWidth
|
||||
as={TextField}
|
||||
{...props}
|
||||
type={showPassword ? "text" : "password"}
|
||||
InputProps={{
|
||||
endAdornment: (
|
||||
<InputAdornment position="end">
|
||||
<IconButton onClick={handleClickShowPassword}>
|
||||
{showPassword ? <Visibility/> : <VisibilityOff/>}
|
||||
</IconButton>
|
||||
</InputAdornment>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export default PasswordField;
|
||||
|
||||
78
src/core/components/ResendToken.jsx
Normal file
78
src/core/components/ResendToken.jsx
Normal file
@@ -0,0 +1,78 @@
|
||||
import Notifications from "@/core/components/notifications";
|
||||
import useDirection from "@/lib/app/hooks/useDirection";
|
||||
import {Button} from "@mui/material";
|
||||
import axios from "axios";
|
||||
import {useTranslations} from "next-intl";
|
||||
import {useEffect} from "react";
|
||||
import {LOGIN, SEND_OTP_TOKEN} from "../data/apiRoutes";
|
||||
import useRequest from "@/lib/app/hooks/useRequest";
|
||||
|
||||
const ResendToken = ({initialTimerValue, timer, setTimer, PhoneNumber, disabled}) => {
|
||||
const t = useTranslations();
|
||||
const {directionApp} = useDirection();
|
||||
const requestServer = useRequest();
|
||||
// Countdown Timer
|
||||
useEffect(() => {
|
||||
let interval;
|
||||
if (timer > 0) {
|
||||
interval = setInterval(() => {
|
||||
setTimer((prevTimer) => prevTimer - 1);
|
||||
}, 1000);
|
||||
} else {
|
||||
clearInterval(interval);
|
||||
}
|
||||
|
||||
return () => clearInterval(interval);
|
||||
}, [timer]);
|
||||
// End Countdown Timer
|
||||
|
||||
// Handle Resend Token
|
||||
const handleResendClick = () => {
|
||||
if (timer != 0) return;
|
||||
requestServer(SEND_OTP_TOKEN, "post", {
|
||||
auth: false, data: {
|
||||
phone_number: PhoneNumber,
|
||||
}
|
||||
})
|
||||
.then(function (response) {
|
||||
setTimer(initialTimerValue);
|
||||
}).catch(function (error) {
|
||||
});
|
||||
};
|
||||
// End Handle Resend Token
|
||||
|
||||
return (
|
||||
<>
|
||||
{timer > 0 ? (
|
||||
<Button
|
||||
color="success"
|
||||
disabled
|
||||
sx={{width: "auto", alignSelf: "center", mt: 0}}
|
||||
onClick={handleResendClick}
|
||||
>
|
||||
{t("Resend_code_in")} {timer} {" "}
|
||||
{t("seconds_later")}
|
||||
</Button>
|
||||
) : (
|
||||
<Button
|
||||
color="success"
|
||||
sx={{width: "120px", alignSelf: "center", mt: 0}}
|
||||
disabled={disabled}
|
||||
onClick={handleResendClick}
|
||||
>
|
||||
{t("resend_code")}
|
||||
</Button>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default ResendToken;
|
||||
|
||||
//////****** usage document ******/////////
|
||||
// 1.) use <ResendToken /> component inside your page
|
||||
// 2.) list of props that you need to send is down below
|
||||
// 2.1) initialTimerValue **** Delay Time For Sending Token
|
||||
// 2.2) timer **** Timer Of Resending Token
|
||||
// 2.3) setTimer **** Set Timer Of Resend (note: every places in your components if you are requesting for getting token you should use this prop like this setTimer(initialTimerValue) )
|
||||
// 2.4) PhoneNumber **** Phone Number That Should Recive Token
|
||||
52
src/core/components/SelectBox.jsx
Normal file
52
src/core/components/SelectBox.jsx
Normal file
@@ -0,0 +1,52 @@
|
||||
import {FormControl, FormHelperText, InputLabel, MenuItem, Select,} from "@mui/material";
|
||||
|
||||
function SelectBox({
|
||||
select,
|
||||
selectType,
|
||||
selectors,
|
||||
label,
|
||||
setFieldValue,
|
||||
setFieldTouched,
|
||||
error,
|
||||
helperText,
|
||||
}) {
|
||||
|
||||
const selectId = String(select);
|
||||
const handleChange = (event) => {
|
||||
setFieldValue(selectType, event.target.value);
|
||||
};
|
||||
const handleBlur = () => {
|
||||
setFieldTouched(select, true);
|
||||
};
|
||||
return (
|
||||
<FormControl
|
||||
variant="outlined"
|
||||
margin="normal"
|
||||
fullWidth
|
||||
size="small"
|
||||
error={error}
|
||||
sx={{mt: 0}}
|
||||
>
|
||||
<InputLabel id="language-label">{label}</InputLabel>
|
||||
<Select
|
||||
labelId="language-label"
|
||||
id={selectId}
|
||||
name={selectId}
|
||||
size="small"
|
||||
value={select}
|
||||
onChange={handleChange}
|
||||
label="Language"
|
||||
onBlur={handleBlur}
|
||||
>
|
||||
{selectors.map((selector) => (
|
||||
<MenuItem key={selector.id} value={selector.value}>
|
||||
{selector.name}
|
||||
</MenuItem>
|
||||
))}
|
||||
</Select>
|
||||
<FormHelperText>{helperText}</FormHelperText>
|
||||
</FormControl>
|
||||
);
|
||||
}
|
||||
|
||||
export default SelectBox;
|
||||
@@ -1,5 +1,5 @@
|
||||
import { styled } from "@mui/material";
|
||||
import { Form } from "formik";
|
||||
import {styled} from "@mui/material";
|
||||
import {Form} from "formik";
|
||||
|
||||
const StyledForm = styled(Form)``;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { styled } from "@mui/material";
|
||||
import {styled} from "@mui/material";
|
||||
import Image from "next/image";
|
||||
|
||||
const StyledImage = styled(Image)``;
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
import { useTranslations } from "next-intl";
|
||||
import {useTranslations} from "next-intl";
|
||||
import Head from "next/head";
|
||||
|
||||
const TitlePage = ({ text }) => {
|
||||
const t = useTranslations();
|
||||
return (
|
||||
<Head>
|
||||
<title>
|
||||
{text ? `${t("app_short_name")} | ${t(text)}` : t("app_short_name")}
|
||||
</title>
|
||||
</Head>
|
||||
);
|
||||
const TitlePage = ({text}) => {
|
||||
const t = useTranslations();
|
||||
return (
|
||||
<Head>
|
||||
<title>
|
||||
{text ? `${t("app_short_name")} | ${t(text)}` : t("app_short_name")}
|
||||
</title>
|
||||
</Head>
|
||||
);
|
||||
};
|
||||
|
||||
export default TitlePage;
|
||||
|
||||
152
src/core/components/UploadSystem.jsx
Normal file
152
src/core/components/UploadSystem.jsx
Normal file
@@ -0,0 +1,152 @@
|
||||
import {Box, Button, FormHelperText, TextField, Typography} from "@mui/material";
|
||||
import {useTranslations} from "next-intl";
|
||||
import Image from "next/image";
|
||||
import DeleteForeverIcon from "@mui/icons-material/DeleteForever";
|
||||
import {useRef, useState} from "react";
|
||||
|
||||
const UploadSystem = ({
|
||||
fieldName,
|
||||
default_image,
|
||||
helperText,
|
||||
error,
|
||||
setFieldValue,
|
||||
imageAlt,
|
||||
label,
|
||||
enableDelete
|
||||
}) => {
|
||||
const t = useTranslations();
|
||||
const fileInputRef = useRef(null);
|
||||
const [selectedImage, setSelectedImage] = useState(default_image || "/images/upload-image.svg");
|
||||
const [fileType, setFileType] = useState(null);
|
||||
const [fileName, setFileName] = useState("");
|
||||
|
||||
// upload files
|
||||
const handleUploadChange = (event) => {
|
||||
const uploadedFile = event.target?.files?.[0];
|
||||
if (uploadedFile) {
|
||||
setSelectedImage(URL.createObjectURL(uploadedFile));
|
||||
setFileType(uploadedFile.type);
|
||||
setFileName(uploadedFile.name);
|
||||
setFieldValue(fieldName, uploadedFile);
|
||||
}
|
||||
};
|
||||
// end upload files
|
||||
|
||||
const uploadBoxStyle = error ? {
|
||||
cursor: "pointer",
|
||||
objectFit: "contain",
|
||||
border: "1px dashed #d32f2f",
|
||||
borderRadius: "5px",
|
||||
padding: "5px",
|
||||
} : {
|
||||
cursor: "pointer",
|
||||
objectFit: "contain",
|
||||
border: "1px dashed #e1e1e1",
|
||||
borderRadius: "5px",
|
||||
padding: "5px",
|
||||
}
|
||||
|
||||
const handleClick = () => {
|
||||
fileInputRef.current.click();
|
||||
};
|
||||
const handleDeleteImage = () => {
|
||||
setselectedImage("/images/upload-image.svg");
|
||||
setFieldValue(fieldname, null);
|
||||
};
|
||||
|
||||
return (
|
||||
<Box sx={{my: 2}}>
|
||||
<Typography
|
||||
margin={1}
|
||||
sx={{
|
||||
fontWeight: 500,
|
||||
fontSize: "0.9rem",
|
||||
color: "#a19d9d",
|
||||
}}
|
||||
textAlign="center"
|
||||
>
|
||||
{label}
|
||||
</Typography>
|
||||
<Box sx={{position: "relative"}}>
|
||||
|
||||
</Box>
|
||||
{selectedImage === "/images/upload-image.svg" || selectedImage === default_image ? (
|
||||
<Image
|
||||
src={selectedImage}
|
||||
priority
|
||||
alt={imageAlt}
|
||||
width={200}
|
||||
height={200}
|
||||
onClick={handleClick}
|
||||
style={uploadBoxStyle}
|
||||
/>
|
||||
) : fileType && fileType.startsWith("image/") ? (
|
||||
<Image
|
||||
src={selectedImage}
|
||||
priority
|
||||
alt={imageAlt}
|
||||
width={200}
|
||||
height={200}
|
||||
onClick={handleClick}
|
||||
style={uploadBoxStyle}
|
||||
/>
|
||||
) : (
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
border: "1px dashed #e1e1e1",
|
||||
cursor: "pointer",
|
||||
borderRadius: "5px",
|
||||
alignItems: "center",
|
||||
justifyContent: "center",
|
||||
width: "200px",
|
||||
height: "200px"
|
||||
}}
|
||||
onClick={handleClick}
|
||||
>
|
||||
<Typography
|
||||
margin={2}
|
||||
sx={{
|
||||
fontWeight: 600,
|
||||
fontSize: "1rem",
|
||||
color: "#a19d9d",
|
||||
textAlign: "center",
|
||||
display: "flex",
|
||||
justifyContent: "end",
|
||||
overflow: "hidden"
|
||||
}}
|
||||
textAlign="center"
|
||||
>
|
||||
{fileName}
|
||||
</Typography>
|
||||
</Box>
|
||||
)}
|
||||
|
||||
<TextField
|
||||
id="avatar-upload"
|
||||
type="file"
|
||||
accept="image/*"
|
||||
style={{display: "none"}}
|
||||
onChange={(e) => handleUploadChange(e)}
|
||||
inputRef={fileInputRef}
|
||||
/>
|
||||
{enableDelete ? <Button
|
||||
sx={{
|
||||
width: "100%",
|
||||
borderTopLeftRadius: "unset",
|
||||
borderTopRightRadius: "unset",
|
||||
}}
|
||||
color="error"
|
||||
disabled={selectedImage === "/images/upload-image.svg"}
|
||||
endIcon={<DeleteForeverIcon/>}
|
||||
variant="contained"
|
||||
onClick={handleDeleteImage}
|
||||
>
|
||||
{t("delete")}
|
||||
</Button> : ""}
|
||||
<FormHelperText sx={{color: "#d32f2f"}}>{helperText}</FormHelperText>
|
||||
</Box>
|
||||
);
|
||||
};
|
||||
|
||||
export default UploadSystem;
|
||||
@@ -1,8 +0,0 @@
|
||||
import { NoSsr } from "@mui/material";
|
||||
|
||||
const NoSsrHandler = ({ isBot, children }) => {
|
||||
if (isBot) return children;
|
||||
return <NoSsr>{children}</NoSsr>;
|
||||
};
|
||||
|
||||
export default NoSsrHandler;
|
||||
39
src/core/components/notifications/ErrorNotification.jsx
Normal file
39
src/core/components/notifications/ErrorNotification.jsx
Normal file
@@ -0,0 +1,39 @@
|
||||
import DangerousIcon from "@mui/icons-material/Dangerous";
|
||||
import {Box, Typography} from "@mui/material";
|
||||
import {toast} from "react-toastify";
|
||||
|
||||
const ErrorNotification = (t, status, message) => {
|
||||
toast(
|
||||
({closeToast}) => (
|
||||
<>
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
flexDirection: "column",
|
||||
alignItems: "start",
|
||||
justifyContent: "start",
|
||||
}}
|
||||
>
|
||||
<Box sx={{display: "flex", alignItems: "center"}}>
|
||||
<DangerousIcon color="error" sx={{mr: 1.6}}/>
|
||||
<Box sx={{display: "flex", flexDirection: "column"}}>
|
||||
<Typography color="error" variant="button">
|
||||
{t("notifications.error")} ({t("notifications.code")}: {status})
|
||||
</Typography>
|
||||
<Typography variant="caption">
|
||||
{message || t("notifications.error_static_text")}
|
||||
</Typography>
|
||||
</Box>
|
||||
</Box>
|
||||
</Box>
|
||||
</>
|
||||
),
|
||||
{
|
||||
autoClose: false,
|
||||
closeOnClick: false,
|
||||
draggable: false,
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
export default ErrorNotification;
|
||||
11
src/core/components/notifications/PendingNotification.jsx
Normal file
11
src/core/components/notifications/PendingNotification.jsx
Normal file
@@ -0,0 +1,11 @@
|
||||
import {toast} from "react-toastify";
|
||||
|
||||
const PendingNotification = (t) => {
|
||||
toast(t("notifications.pending"), {
|
||||
autoClose: false,
|
||||
closeOnClick: false,
|
||||
draggable: false,
|
||||
});
|
||||
};
|
||||
|
||||
export default PendingNotification;
|
||||
42
src/core/components/notifications/SuccessNotification.jsx
Normal file
42
src/core/components/notifications/SuccessNotification.jsx
Normal file
@@ -0,0 +1,42 @@
|
||||
import BeenhereIcon from "@mui/icons-material/Beenhere";
|
||||
import {Box, Typography} from "@mui/material";
|
||||
import {toast} from "react-toastify";
|
||||
|
||||
const SuccessNotification = (t, status) => {
|
||||
toast(
|
||||
() => (
|
||||
<>
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
flexDirection: "column",
|
||||
alignItems: "start",
|
||||
justifyContent: "start",
|
||||
}}
|
||||
>
|
||||
<Box sx={{display: "flex", alignItems: "center"}}>
|
||||
<BeenhereIcon color="success" sx={{mr: 1.6}}/>
|
||||
<Box sx={{display: "flex", flexDirection: "column"}}>
|
||||
<Typography color="success.main" variant="button">
|
||||
{t("notifications.success")} ({t("notifications.code")}:{" "}
|
||||
{status})
|
||||
</Typography>
|
||||
<Typography variant="caption">
|
||||
{t("notifications.success_static_text")}
|
||||
</Typography>
|
||||
</Box>
|
||||
</Box>
|
||||
</Box>
|
||||
</>
|
||||
),
|
||||
{
|
||||
autoClose: 3000,
|
||||
hideProgressBar: true,
|
||||
pauseOnHover: true,
|
||||
closeOnClick: false,
|
||||
draggable: true,
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
export default SuccessNotification;
|
||||
40
src/core/components/notifications/WarningNotification.jsx
Normal file
40
src/core/components/notifications/WarningNotification.jsx
Normal file
@@ -0,0 +1,40 @@
|
||||
import ReportIcon from "@mui/icons-material/Report";
|
||||
import {Box, Divider, Typography} from "@mui/material";
|
||||
import {toast} from "react-toastify";
|
||||
|
||||
const WarningNotification = (t, status) => {
|
||||
toast(
|
||||
({closeToast}) => (
|
||||
<>
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
flexDirection: "column",
|
||||
alignItems: "start",
|
||||
justifyContent: "start",
|
||||
}}
|
||||
>
|
||||
<Box sx={{display: "flex", alignItems: "center"}}>
|
||||
<ReportIcon color="warning" sx={{mr: 1.6}}/>
|
||||
<Box sx={{display: "flex", flexDirection: "column"}}>
|
||||
<Typography color="warning.main" variant="button">
|
||||
{t("warning")} ({t("code")}: {status})
|
||||
</Typography>
|
||||
<Typography variant="caption">
|
||||
{t("warning_static_text")}
|
||||
</Typography>
|
||||
</Box>
|
||||
</Box>
|
||||
</Box>
|
||||
<Divider sx={{my: 1}}/>
|
||||
</>
|
||||
),
|
||||
{
|
||||
autoClose: false,
|
||||
closeOnClick: false,
|
||||
draggable: false,
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
export default WarningNotification;
|
||||
54
src/core/components/notifications/index.jsx
Normal file
54
src/core/components/notifications/index.jsx
Normal file
@@ -0,0 +1,54 @@
|
||||
import {toast} from "react-toastify";
|
||||
import ErrorNotification from "./ErrorNotification";
|
||||
import SuccessNotification from "./SuccessNotification";
|
||||
import WarningNotification from "./WarningNotification";
|
||||
|
||||
const Notifications = async (t, response) => {
|
||||
const {status, data} = response != undefined ? response : ""
|
||||
toast.dismiss();
|
||||
switch (status) {
|
||||
case 200:
|
||||
SuccessNotification(t, status);
|
||||
break;
|
||||
case 400:
|
||||
ErrorNotification(t, status);
|
||||
break;
|
||||
case 401:
|
||||
ErrorNotification(t, status);
|
||||
break;
|
||||
case 403:
|
||||
ErrorNotification(t, status);
|
||||
break;
|
||||
case 422:
|
||||
ErrorNotification(t, status, data.message);
|
||||
break;
|
||||
case 500:
|
||||
WarningNotification(t, status);
|
||||
break;
|
||||
case 503:
|
||||
WarningNotification(t, status);
|
||||
break;
|
||||
case 504:
|
||||
WarningNotification(t, status);
|
||||
break;
|
||||
default:
|
||||
toast(t("pending"), {
|
||||
autoClose: false,
|
||||
closeOnClick: false,
|
||||
draggable: false,
|
||||
});
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
export default Notifications;
|
||||
|
||||
/*
|
||||
usage document
|
||||
|
||||
** for pending use ( Notifications( t, undefined) ) this before your request.
|
||||
** for success use ( Notifications( t, response) ) this inside .then() of your request.
|
||||
** for Error and Warning use ( Notifications( t, error.response) ) this inside .catche() of your request.
|
||||
|
||||
end usage document
|
||||
*/
|
||||
131
src/core/components/svgs/Svg403.jsx
Normal file
131
src/core/components/svgs/Svg403.jsx
Normal file
@@ -0,0 +1,131 @@
|
||||
import {useTheme} from "@mui/material";
|
||||
|
||||
const Svg403 = ({width, height}) => {
|
||||
const theme = useTheme()
|
||||
const fillColor = theme.palette.primary.main
|
||||
|
||||
return (
|
||||
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" width={width} height={height}
|
||||
viewBox="0 0 742.41705 712.57302">
|
||||
<path id="aa38b2e7-2ea9-4025-adcf-83f87c0cfc4a-338" data-name="Path 968"
|
||||
d="M853.60644,262.60547h-3.9v-106.977a61.915,61.915,0,0,0-61.915-61.915h-226.65a61.915,61.915,0,0,0-61.916,61.914v586.884a61.915,61.915,0,0,0,61.915,61.915h226.648a61.915,61.915,0,0,0,61.915-61.915v-403.758h3.9Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#3f3d56"/>
|
||||
<path id="f27259c2-0089-4137-bfd8-cb22dff914f1-339" data-name="Path 969"
|
||||
d="M837.00647,151.48149v595.175a46.959,46.959,0,0,1-46.942,46.952h-231.3a46.966,46.966,0,0,1-46.973-46.952v-595.175a46.965,46.965,0,0,1,46.971-46.951h28.058a22.329,22.329,0,0,0,20.656,30.74h131.868a22.329,22.329,0,0,0,20.656-30.74h30.055a46.959,46.959,0,0,1,46.951,46.942Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#fff"/>
|
||||
<circle id="fc31cc31-f989-45cc-bd1e-521a0ee1871b" data-name="Ellipse 18" cx="445.56497" cy="200.129"
|
||||
r="96.565" fill="#084070"/>
|
||||
<path id="a573942c-3bf3-4c43-b474-689725a927f7-340" data-name="Path 39"
|
||||
d="M779.67245,494.30947h-205.537a3.81,3.81,0,0,1-3.806-3.806V439.51949a3.811,3.811,0,0,1,3.806-3.806h205.537a3.811,3.811,0,0,1,3.806,3.806v50.985a3.811,3.811,0,0,1-3.806,3.806Zm-205.537-57.074a2.286,2.286,0,0,0-2.284,2.284v50.985a2.286,2.286,0,0,0,2.284,2.284h205.537a2.286,2.286,0,0,0,2.284-2.284v-50.985a2.286,2.286,0,0,0-2.284-2.284Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="fb5feb1e-1fe2-48fa-806d-0a2b51d12b49-341" data-name="Path 40"
|
||||
d="M637.69945,454.07448a2.66449,2.66449,0,0,0,0,5.329h125.605a2.665,2.665,0,0,0,.2041-5.32611q-.0585-.00221-.11713-.0019h-125.692Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="bcb9932f-0864-4b7e-b0ed-f7254bb9b8bf-342" data-name="Path 41"
|
||||
d="M637.69945,470.05846a2.66449,2.66449,0,0,0,0,5.329h125.605a2.665,2.665,0,0,0,.2041-5.32611q-.0585-.00219-.11713-.00189h-125.692Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="f88e2a8b-becc-4da9-bd36-af011daaaaf2-343" data-name="Path 42"
|
||||
d="M779.67245,579.28947h-205.537a3.81,3.81,0,0,1-3.806-3.806V524.49949a3.811,3.811,0,0,1,3.806-3.806h205.537a3.811,3.811,0,0,1,3.806,3.806v50.985A3.811,3.811,0,0,1,779.67245,579.28947Zm-205.537-57.074a2.286,2.286,0,0,0-2.284,2.284v50.985a2.286,2.286,0,0,0,2.284,2.284h205.537a2.286,2.286,0,0,0,2.284-2.284v-50.985a2.286,2.286,0,0,0-2.284-2.284Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="e192d34f-2ccc-4f79-b47a-46430e4d87f6-344" data-name="Path 43"
|
||||
d="M637.69945,539.33047a2.66449,2.66449,0,0,0,0,5.329h125.605a2.665,2.665,0,0,0,.087-5.328h-125.692Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="b230677c-48cc-4ee6-87d6-a753204ffe47-345" data-name="Path 44"
|
||||
d="M637.69945,555.3185a2.66449,2.66449,0,0,0,0,5.329h125.605a2.665,2.665,0,0,0,.087-5.328h-125.692Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="b88a2a79-0ae3-4fd9-9894-02e0db9a2271-346" data-name="Path 39-2"
|
||||
d="M779.67245,664.54748h-205.537a3.81,3.81,0,0,1-3.806-3.806V609.7575a3.811,3.811,0,0,1,3.806-3.806h205.537a3.811,3.811,0,0,1,3.806,3.806v50.985a3.811,3.811,0,0,1-3.806,3.806Zm-205.537-57.074a2.286,2.286,0,0,0-2.284,2.284v50.985a2.286,2.286,0,0,0,2.284,2.284h205.537a2.286,2.286,0,0,0,2.284-2.284v-50.985a2.286,2.286,0,0,0-2.284-2.284Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="aa2394a9-8b56-4a12-a2cd-a583e6ea12eb-347" data-name="Path 40-2"
|
||||
d="M637.69945,624.59148a2.66449,2.66449,0,1,0,0,5.329h125.605a2.665,2.665,0,0,0,.2041-5.32611q-.0585-.00219-.11713-.00189h-125.692Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="bc352cb2-8959-4b51-bd18-df6817a9a47e-348" data-name="Path 41-2"
|
||||
d="M637.69945,640.57846a2.66449,2.66449,0,0,0,0,5.329h125.605a2.665,2.665,0,0,0,.2041-5.32611q-.0585-.0022-.11713-.00189h-125.692Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="b30ee82f-5b3a-4aa4-9db7-ead828191937-349" data-name="Path 970"
|
||||
d="M969.27042,806.28651h-738.541c-1.071,0-1.938-.468-1.938-1.045s.868-1.045,1.938-1.045H969.27054c1.06994,0,1.938.468,1.938,1.045S970.34146,806.28651,969.27042,806.28651Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e6e6e6"/>
|
||||
<g id="f24cf2fd-107c-4150-a0f1-6f6b12d88bf3" data-name="Group 58">
|
||||
<path id="a2b576eb-bb95-4480-aa60-cd8aa023fe61-350" data-name="Path 438"
|
||||
d="M937.99248,765.52151a19.4741,19.4741,0,0,1-18.806-3.313c-6.587-5.528-8.652-14.636-10.332-23.07l-4.97-24.945,10.405,7.165c7.483,5.152,15.134,10.47,20.316,17.933s7.443,17.651,3.28,25.726"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="fe1c5433-44e0-47a6-8430-329cbd7c4dea-351" data-name="Path 439"
|
||||
d="M936.38547,797.45852c1.31-9.542,2.657-19.206,1.738-28.849-.816-8.565-3.429-16.93-8.749-23.789a39.57365,39.57365,0,0,0-10.153-9.2c-1.015-.641-1.95.968-.939,1.606a37.62192,37.62192,0,0,1,14.881,17.956c3.24,8.241,3.76,17.224,3.2,25.977-.338,5.294-1.053,10.553-1.774,15.805a.964.964,0,0,0,.65,1.144.936.936,0,0,0,1.144-.65Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#f2f2f2"/>
|
||||
<path id="f0043cfc-c9b9-4981-8afd-8c13c1b6f93f-352" data-name="Path 442"
|
||||
d="M926.95847,782.14846a14.336,14.336,0,0,1-12.491,6.447c-6.323-.3-11.595-4.713-16.34-8.9l-14.035-12.395,9.289-.444c6.68-.32,13.533-.618,19.9,1.442s12.231,7.018,13.394,13.6"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="b883c521-5e9e-4a38-b47c-4f8b0cd8c6cd-353" data-name="Path 443"
|
||||
d="M940.08649,802.94344c-6.3-11.156-13.618-23.555-26.685-27.518a29.77874,29.77874,0,0,0-11.224-1.159c-1.192.1-.894,1.94.3,1.837a27.6648,27.6648,0,0,1,17.912,4.739c5.051,3.438,8.983,8.217,12.311,13.286,2.039,3.1,3.865,6.341,5.691,9.573C938.97147,804.73348,940.67746,803.98843,940.08649,802.94344Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#f2f2f2"/>
|
||||
</g>
|
||||
<g id="b241f6a5-c54d-499c-8ecd-4235a19d143f" data-name="Group 59">
|
||||
<circle id="bfaee8a8-2192-45bf-83cb-a2f223d41a02" data-name="Ellipse 5" cx="370.98597" cy="370.985"
|
||||
r="15.986" fill="#084070"/>
|
||||
<path id="ae47602b-fb54-4e88-955d-49b260f35f7f-354" data-name="Path 40-3"
|
||||
d="M592.12445,461.71247c-.184,0-.333,1.193-.333,2.664s.149,2.665.333,2.665h15.719c.184.024.336-1.149.339-2.62a5.94291,5.94291,0,0,0-.328-2.708h-15.73Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e6e6e6"/>
|
||||
</g>
|
||||
<g id="a1e1e52b-75f8-4aa9-8279-faf451e6aae1" data-name="Group 60">
|
||||
<circle id="fa3a3ce2-c232-40ee-81b4-25b83d5b931c" data-name="Ellipse 5-2" cx="370.98597" cy="456.278"
|
||||
r="15.986" fill="#084070"/>
|
||||
<path id="aaaffa69-7c16-47ec-b12d-87139789d2df-355" data-name="Path 40-4"
|
||||
d="M592.12445,547.00547c-.184,0-.333,1.193-.333,2.664s.149,2.665.333,2.665h15.719c.184.024.336-1.149.339-2.62a5.94291,5.94291,0,0,0-.328-2.708h-15.73Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e6e6e6"/>
|
||||
</g>
|
||||
<g id="fd2b54c2-3dec-4fb6-9f72-e6c667a136b8" data-name="Group 61">
|
||||
<circle id="abc19202-5605-459b-9c25-b430addb8839" data-name="Ellipse 5-3" cx="370.98597" cy="541.53599"
|
||||
r="15.986" fill="#084070"/>
|
||||
<path id="f69fbb38-8754-494b-94fa-96f6df4fd0e7-356" data-name="Path 40-5"
|
||||
d="M592.12445,632.26346c-.184,0-.333,1.193-.333,2.664s.149,2.665.333,2.665h15.719c.184.024.336-1.149.339-2.62a5.943,5.943,0,0,0-.328-2.708h-15.73Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e6e6e6"/>
|
||||
</g>
|
||||
<rect x="670.35645" y="260.34249" width="8" height="67"
|
||||
transform="translate(-239.05506 469.193) rotate(-45)" fill="#fff"/>
|
||||
<rect x="670.35645" y="260.34249" width="8" height="67"
|
||||
transform="translate(176.50097 -484.49103) rotate(45)" fill="#fff"/>
|
||||
<path
|
||||
d="M319.05083,549.84841a10.05579,10.05579,0,0,0,5.38778-14.44741l23.56521-26.86373-18.39547-2.53779-19.5577,25.89933a10.11027,10.11027,0,0,0,9.00018,17.9496Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#9f616a"/>
|
||||
<polygon points="118.679 694.215 102.244 694.214 94.425 630.82 118.682 630.821 118.679 694.215"
|
||||
fill="#9f616a"/>
|
||||
<path
|
||||
d="M351.66209,803.8602l-52.99477-.002v-.6703a20.62815,20.62815,0,0,1,20.627-20.62671h.00131l32.3674.00131Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#2f2e41"/>
|
||||
<polygon points="204.713 680.461 189.017 685.334 162.751 627.11 185.917 619.918 204.713 680.461"
|
||||
fill="#9f616a"/>
|
||||
<path
|
||||
d="M442.23214,788.14677,391.62055,803.8602l-.19877-.64014a20.62813,20.62813,0,0,1,13.58247-25.81574l.00126-.00039,30.91186-9.59713Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#2f2e41"/>
|
||||
<path id="ae9bdfa9-f7e0-4b2f-8168-ca8868d01318-357" data-name="Path 973"
|
||||
d="M334.88445,495.65649l-24.34114,27.8773,19.05613,1.71471Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="b88343d2-9c47-4183-8a8a-427a73d8d9be-358" data-name="Path 975"
|
||||
d="M325.37344,531.58948s-8.455,4.227-9.512,23.251,3.171,68.7,3.171,68.7-4.227,22.194,0,42.274-4.227,93,1.057,93,32.762,3.171,33.819,0,2.114-50.729,2.114-50.729,8.455-24.308,0-39.1c0,0,29.52086,51.54832,48.615,90.889,4.17891,8.61,35.933-1.057,30.649-10.569s-17.966-52.843-17.966-52.843-9.512-31.706-26.421-45.445l8.455-67.639s17.967-45.445,7.4-51.786S325.37344,531.58948,325.37344,531.58948Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#2f2e41"/>
|
||||
<circle id="fdc24b21-a9e1-47f2-b2e4-7458730b7c21" data-name="Ellipse 182" cx="128.28696" cy="238.129"
|
||||
r="27.478" fill="#a0616a"/>
|
||||
<path id="ac268c91-41f4-49c7-bce6-773e5eb69fa2-359" data-name="Path 976"
|
||||
d="M387.72745,361.43447l-34.16,20.08s-13.08,7.366-17.966,20.08c-5.208,13.55-2.181,32.628,0,36.99,4.227,8.455-1.773,29.592-1.773,29.592l-5.284,48.615s-19.023,17.966-4.227,20.08,41.217-1.057,57.07,0,33.819,3.171,28.535-7.4-11.625-17.967-5.284-39.1c4.962-16.54,4.747-78.383,4.419-104.5a21.025,21.025,0,0,0-10.211-17.767Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e5e5e5"/>
|
||||
<path id="aebed2c8-94ca-417e-8b11-27e17cbf3024-360" data-name="Path 980"
|
||||
d="M372.40744,394.72649l3.17,64.468-30.726,62.223-5.211-1.983,31.706-58.127Z"
|
||||
transform="translate(-228.79147 -93.71349)" opacity="0.1" style="isolation:isolate"/>
|
||||
<path id="e13ea0c4-bc86-4025-9528-1665a42d3372-361" data-name="Path 982"
|
||||
d="M407.27945,472.93247v-7.4l-35.929,59.186Z" transform="translate(-228.79147 -93.71349)"
|
||||
opacity="0.1" style="isolation:isolate"/>
|
||||
<path id="eb3190ba-6b3f-4b2b-91d1-1543e580b413-362" data-name="Path 983"
|
||||
d="M337.57645,306.38749l-4.539-1.816s9.5-10.457,22.713-9.548l-3.717-4.092s9.085-3.637,17.345,5.91c4.342,5.019,9.365,10.919,12.5,17.564h4.865l-2.03,4.471,7.106,4.471-7.294-.8a24.73921,24.73921,0,0,1-.69,11.579l.2,3.534s-8.459-13.089-8.459-14.905v4.547s-4.543-4.092-4.543-6.82l-2.478,3.183-1.239-5-15.28,5,2.476-4.094-9.5,1.364,3.717-5s-10.737,5.91-11.15,10.912-5.781,11.366-5.781,11.366l-2.478-4.547S325.60443,313.20747,337.57645,306.38749Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#2f2e41"/>
|
||||
<path
|
||||
d="M355.35408,552.83885a10.05581,10.05581,0,0,0,2.73778-15.17434l18.42263-30.62-18.55382.76775-14.64995,28.95959a10.11028,10.11028,0,0,0,12.04336,16.067Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#9f616a"/>
|
||||
<path id="a62f6567-f472-4931-86f9-ff652851a370-363" data-name="Path 981"
|
||||
d="M397.24046,375.17548l7.926-1.585s23.779,17.438,16.381,52.314-40.16,87.719-40.16,87.719-7.4,9.512-9.512,11.625-6.341,0-4.227,3.171-3.171,5.284-3.171,5.284-23.251,0-21.137-8.455,38.047-68.7,38.047-68.7l-5.284-56.013S371.87446,373.0615,397.24046,375.17548Z"
|
||||
transform="translate(-228.79147 -93.71349)" fill="#e5e5e5"/>
|
||||
</svg>
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
export default Svg403
|
||||
101
src/core/components/svgs/Svg404.jsx
Normal file
101
src/core/components/svgs/Svg404.jsx
Normal file
@@ -0,0 +1,101 @@
|
||||
import {useTheme} from "@mui/material";
|
||||
|
||||
const Svg404 = ({width, height}) => {
|
||||
const theme = useTheme()
|
||||
const fillColor = theme.palette.primary.main
|
||||
|
||||
return (
|
||||
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" width={width} height={height}
|
||||
viewBox="0 0 860.13137 571.14799">
|
||||
<path
|
||||
d="M605.66974,324.95306c-7.66934-12.68446-16.7572-26.22768-30.98954-30.36953-16.482-4.7965-33.4132,4.73193-47.77473,14.13453a1392.15692,1392.15692,0,0,0-123.89338,91.28311l.04331.49238q46.22556-3.1878,92.451-6.37554c22.26532-1.53546,45.29557-3.2827,64.97195-13.8156,7.46652-3.99683,14.74475-9.33579,23.20555-9.70782,10.51175-.46217,19.67733,6.87923,26.8802,14.54931,42.60731,45.371,54.937,114.75409,102.73817,154.61591A1516.99453,1516.99453,0,0,0,605.66974,324.95306Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M867.57068,709.78146c-4.71167-5.94958-6.6369-7.343-11.28457-13.34761q-56.7644-73.41638-106.70791-151.79237-33.92354-53.23-64.48275-108.50439-14.54864-26.2781-28.29961-52.96872-10.67044-20.6952-20.8646-41.63793c-1.94358-3.98782-3.8321-7.99393-5.71122-12.00922-4.42788-9.44232-8.77341-18.93047-13.43943-28.24449-5.31686-10.61572-11.789-21.74485-21.55259-28.877a29.40493,29.40493,0,0,0-15.31855-5.89458c-7.948-.51336-15.28184,2.76855-22.17568,6.35295-50.43859,26.301-97.65922,59.27589-140.3696,96.79771A730.77816,730.77816,0,0,0,303.32241,496.24719c-1.008,1.43927-3.39164.06417-2.37419-1.38422q6.00933-8.49818,12.25681-16.81288A734.817,734.817,0,0,1,500.80465,303.06436q18.24824-11.82581,37.18269-22.54245c6.36206-3.60275,12.75188-7.15967,19.25136-10.49653,6.37146-3.27274,13.13683-6.21547,20.41563-6.32547,24.7701-.385,37.59539,27.66695,46.40506,46.54248q4.15283,8.9106,8.40636,17.76626,16.0748,33.62106,33.38729,66.628,10.68453,20.379,21.83683,40.51955,34.7071,62.71816,73.77854,122.897c34.5059,53.1429,68.73651,100.08874,108.04585,149.78472C870.59617,709.21309,868.662,711.17491,867.57068,709.78146Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#e4e4e4"/>
|
||||
<path
|
||||
d="M414.91613,355.804c-1.43911-1.60428-2.86927-3.20856-4.31777-4.81284-11.42244-12.63259-23.6788-25.11847-39.3644-32.36067a57.11025,57.11025,0,0,0-23.92679-5.54622c-8.56213.02753-16.93178,2.27348-24.84306,5.41792-3.74034,1.49427-7.39831,3.1902-11.00078,4.99614-4.11634,2.07182-8.15927,4.28118-12.1834,6.50883q-11.33112,6.27044-22.36816,13.09089-21.9606,13.57221-42.54566,29.21623-10.67111,8.11311-20.90174,16.75788-9.51557,8.03054-18.64618,16.492c-1.30169,1.20091-3.24527-.74255-1.94358-1.94347,1.60428-1.49428,3.22691-2.97938,4.84955-4.44613q6.87547-6.21546,13.9712-12.19257,12.93921-10.91827,26.54851-20.99312,21.16293-15.67614,43.78288-29.22541,11.30361-6.76545,22.91829-12.96259c2.33794-1.24675,4.70318-2.466,7.09572-3.6211a113.11578,113.11578,0,0,1,16.86777-6.86632,60.0063,60.0063,0,0,1,25.476-2.50265,66.32706,66.32706,0,0,1,23.50512,8.1314c15.40091,8.60812,27.34573,21.919,38.97,34.90915C418.03337,355.17141,416.09875,357.12405,414.91613,355.804Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#e4e4e4"/>
|
||||
<path
|
||||
d="M730.47659,486.71092l36.90462-13.498,18.32327-6.70183c5.96758-2.18267,11.92082-4.66747,18.08988-6.23036a28.53871,28.53871,0,0,1,16.37356.20862,37.73753,37.73753,0,0,1,12.771,7.91666,103.63965,103.63965,0,0,1,10.47487,11.18643c3.98932,4.79426,7.91971,9.63877,11.86772,14.46706q24.44136,29.89094,48.56307,60.04134,24.12117,30.14991,47.91981,60.556,23.85681,30.48041,47.38548,61.21573,2.88229,3.76518,5.75966,7.53415c1.0598,1.38809,3.44949.01962,2.37472-1.38808Q983.582,650.9742,959.54931,620.184q-24.09177-30.86383-48.51647-61.46586-24.42421-30.60141-49.17853-60.93743-6.16706-7.55761-12.35445-15.09858c-3.47953-4.24073-6.91983-8.52718-10.73628-12.47427-7.00539-7.24516-15.75772-13.64794-26.23437-13.82166-6.15972-.10214-12.121,1.85248-17.844,3.92287-6.16968,2.232-12.32455,4.50571-18.48633,6.75941l-37.16269,13.59243-9.29067,3.3981c-1.64875.603-.93651,3.2619.73111,2.652Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#e4e4e4"/>
|
||||
<path
|
||||
d="M366.37741,334.52609c-18.75411-9.63866-42.77137-7.75087-60.00508,4.29119a855.84708,855.84708,0,0,1,97.37056,22.72581C390.4603,353.75916,380.07013,341.5635,366.37741,334.52609Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M306.18775,338.7841l-3.61042,2.93462c1.22123-1.02713,2.4908-1.99013,3.795-2.90144C306.31073,338.80665,306.24935,338.79473,306.18775,338.7841Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M831.54929,486.84576c-3.6328-4.42207-7.56046-9.05222-12.99421-10.84836l-5.07308.20008A575.436,575.436,0,0,0,966.74929,651.418Q899.14929,569.13192,831.54929,486.84576Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M516.08388,450.36652A37.4811,37.4811,0,0,0,531.015,471.32518c2.82017,1.92011,6.15681,3.76209,7.12158,7.03463a8.37858,8.37858,0,0,1-.87362,6.1499,24.88351,24.88351,0,0,1-3.86126,5.04137l-.13667.512c-6.99843-4.14731-13.65641-9.3934-17.52227-16.55115s-4.40553-16.53895.34116-23.14544"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M749.08388,653.36652A37.4811,37.4811,0,0,0,764.015,674.32518c2.82017,1.92011,6.15681,3.76209,7.12158,7.03463a8.37858,8.37858,0,0,1-.87362,6.1499,24.88351,24.88351,0,0,1-3.86126,5.04137l-.13667.512c-6.99843-4.14731-13.65641-9.3934-17.52227-16.55115s-4.40553-16.53895.34116-23.14544"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M284.08388,639.36652A37.4811,37.4811,0,0,0,299.015,660.32518c2.82017,1.92011,6.15681,3.76209,7.12158,7.03463a8.37858,8.37858,0,0,1-.87362,6.1499,24.88351,24.88351,0,0,1-3.86126,5.04137l-.13667.512c-6.99843-4.14731-13.65641-9.3934-17.52227-16.55115s-4.40553-16.53895.34116-23.14544"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#f2f2f2"/>
|
||||
<circle cx="649.24878" cy="51" r="51" fill={fillColor}/>
|
||||
<path
|
||||
d="M911.21851,176.29639c-24.7168-3.34094-52.93512,10.01868-59.34131,34.12353a21.59653,21.59653,0,0,0-41.09351,2.10871l2.82972,2.02667a372.27461,372.27461,0,0,0,160.65881-.72638C957.07935,195.76,935.93537,179.63727,911.21851,176.29639Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#f0f0f0"/>
|
||||
<path
|
||||
d="M805.21851,244.29639c-24.7168-3.34094-52.93512,10.01868-59.34131,34.12353a21.59653,21.59653,0,0,0-41.09351,2.10871l2.82972,2.02667a372.27461,372.27461,0,0,0,160.65881-.72638C851.07935,263.76,829.93537,247.63727,805.21851,244.29639Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#f0f0f0"/>
|
||||
<path
|
||||
d="M1020.94552,257.15423a.98189.98189,0,0,1-.30176-.04688C756.237,173.48919,523.19942,184.42376,374.26388,208.32122c-20.26856,3.251-40.59131,7.00586-60.40381,11.16113-5.05811,1.05957-10.30567,2.19532-15.59668,3.37793-6.31885,1.40723-12.55371,2.85645-18.53223,4.30567q-3.873.917-7.59472,1.84863c-3.75831.92773-7.57178,1.89453-11.65967,2.957-4.56787,1.17774-9.209,2.41309-13.79737,3.67188a.44239.44239,0,0,1-.05127.01465l.00049.001c-5.18261,1.415-10.33789,2.8711-15.32324,4.3252-2.69824.77929-5.30371,1.54785-7.79932,2.30664-.2788.07715-.52587.15136-.77636.22754l-.53614.16308c-.31054.09473-.61718.1875-.92382.27539l-.01953.00586.00048.001-.81152.252c-.96777.293-1.91211.5791-2.84082.86426-24.54492,7.56641-38.03809,12.94922-38.17139,13.00195a1,1,0,1,1-.74414-1.85644c.13428-.05274,13.69336-5.46289,38.32764-13.05762.93213-.28613,1.87891-.57226,2.84961-.86621l.7539-.23438c.02588-.00976.05176-.01757.07813-.02539.30518-.08691.60986-.17968.91943-.27343l.53711-.16309c.26758-.08105.53125-.16113.80127-.23535,2.47852-.75391,5.09278-1.52441,7.79785-2.30664,4.98731-1.45508,10.14746-2.91113,15.334-4.32813.01611-.00586.03271-.00976.04883-.01464v-.001c4.60449-1.2627,9.26269-2.50293,13.84521-3.68457,4.09424-1.06348,7.915-2.03223,11.67969-2.96192q3.73755-.93017,7.60937-1.85253c5.98536-1.45118,12.23291-2.90235,18.563-4.3125,5.29932-1.1836,10.55567-2.32227,15.62207-3.38282,19.84326-4.16211,40.19776-7.92285,60.49707-11.17871C523.09591,182.415,756.46749,171.46282,1021.2463,255.2011a.99974.99974,0,0,1-.30078,1.95313Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#ccc"/>
|
||||
<path
|
||||
d="M432.92309,584.266a6.72948,6.72948,0,0,0-1.7-2.67,6.42983,6.42983,0,0,0-.92-.71c-2.61-1.74-6.51-2.13-8.99,0a5.81012,5.81012,0,0,0-.69.71q-1.11,1.365-2.28,2.67c-1.28,1.46-2.59,2.87-3.96,4.24-.39.38-.78.77-1.18,1.15-.23.23-.46.45-.69.67-.88.84-1.78,1.65-2.69,2.45-.48.43-.96.85-1.45,1.26-.73.61-1.46,1.22-2.2,1.81-.07.05-.14.1-.21.16-.02.01-.03.03-.05.04-.01,0-.02,0-.03.02a.17861.17861,0,0,0-.07.05c-.22.15-.37.25-.48.34.04-.01995.08-.05.12-.07-.18.14-.37.28-.55.42-1.75,1.29-3.54,2.53-5.37,3.69a99.21022,99.21022,0,0,1-14.22,7.55c-.33.13-.67.27-1.01.4a85.96993,85.96993,0,0,1-40.85,6.02q-2.13008-.165-4.26-.45c-1.64-.24-3.27-.53-4.89-.86a97.93186,97.93186,0,0,1-18.02-5.44,118.65185,118.65185,0,0,1-20.66-12.12c-1-.71-2.01-1.42-3.02-2.11,1.15-2.82,2.28-5.64,3.38-8.48.55-1.37,1.08-2.74,1.6-4.12,4.09-10.63,7.93-21.36,11.61-32.13q5.58-16.365,10.53-32.92.51-1.68.99-3.36,2.595-8.745,4.98-17.53c.15-.56994.31-1.12994.45-1.7q.68994-2.52,1.35-5.04c1-3.79-1.26-8.32-5.24-9.23a7.63441,7.63441,0,0,0-9.22,5.24c-.43,1.62-.86,3.23-1.3,4.85q-3.165,11.74494-6.66,23.41-.51,1.68-1.02,3.36-7.71,25.41-16.93,50.31-1.11,3.015-2.25,6.01c-.37.98-.74,1.96-1.12,2.94-.73,1.93-1.48,3.86-2.23,5.79-.43006,1.13-.87006,2.26-1.31,3.38-.29.71-.57,1.42-.85,2.12a41.80941,41.80941,0,0,0-8.81-2.12l-.48-.06a27.397,27.397,0,0,0-7.01.06,23.91419,23.91419,0,0,0-17.24,10.66c-4.77,7.51-4.71,18.25,1.98,24.63,6.89,6.57,17.32,6.52,25.43,2.41a28.35124,28.35124,0,0,0,10.52-9.86,50.56939,50.56939,0,0,0,2.74-4.65c.21.14.42.28.63.43.8.56,1.6,1.13,2.39,1.69a111.73777,111.73777,0,0,0,14.51,8.91,108.35887,108.35887,0,0,0,34.62,10.47c.27.03.53.07.8.1,1.33.17,2.67.3,4.01.41a103.78229,103.78229,0,0,0,55.58-11.36q2.175-1.125,4.31-2.36,3.315-1.92,6.48-4.08c1.15-.78,2.27-1.57,3.38-2.4a101.04244,101.04244,0,0,0,13.51-11.95q2.35491-2.475,4.51-5.11005a8.0612,8.0612,0,0,0,2.2-5.3A7.5644,7.5644,0,0,0,432.92309,584.266Zm-165.59,23.82c.21-.15.42-.31.62-.47C267.89312,607.766,267.60308,607.936,267.33312,608.086Zm3.21-3.23c-.23.26-.44.52-.67.78a23.36609,23.36609,0,0,1-2.25,2.2c-.11.1-.23.2-.35.29a.00976.00976,0,0,0-.01.01,3.80417,3.80417,0,0,0-.42005.22q-.645.39-1.31994.72a17.00459,17.00459,0,0,1-2.71.75,16.79925,16.79925,0,0,1-2.13.02h-.02a14.82252,14.82252,0,0,1-1.45-.4c-.24-.12-.47-.25994-.7-.4-.09-.08-.17005-.16-.22-.21a2.44015,2.44015,0,0,1-.26995-.29.0098.0098,0,0,0-.01-.01c-.11005-.2-.23005-.4-.34-.6a.031.031,0,0,1-.01-.02c-.08-.25-.15-.51-.21-.77a12.51066,12.51066,0,0,1,.01-1.37,13.4675,13.4675,0,0,1,.54-1.88,11.06776,11.06776,0,0,1,.69-1.26c.02-.04.12-.2.23-.38.01-.01.01-.01.01-.02.15-.17.3-.35.46-.51.27-.3.56-.56.85-.83a18.02212,18.02212,0,0,1,1.75-1.01,19.48061,19.48061,0,0,1,2.93-.79,24.98945,24.98945,0,0,1,4.41.04,30.30134,30.30134,0,0,1,4.1,1.01,36.94452,36.94452,0,0,1-2.77,4.54C270.6231,604.746,270.58312,604.806,270.54308,604.856Zm-11.12-3.29a2.18029,2.18029,0,0,1-.31.38995A1.40868,1.40868,0,0,1,259.42309,601.566Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#3f3d56"/>
|
||||
<path
|
||||
d="M402.86309,482.136q-.13494,4.71-.27,9.42-.285,10.455-.59,20.92-.315,11.775-.66,23.54-.165,6.07507-.34,12.15-.465,16.365-.92,32.72c-.03,1.13-.07,2.25-.1,3.38q-.225,8.11506-.45,16.23-.255,8.805-.5,17.61-.18,6.59994-.37,13.21-1.34994,47.895-2.7,95.79a7.64844,7.64844,0,0,1-7.5,7.5,7.56114,7.56114,0,0,1-7.5-7.5q.75-26.94,1.52-53.88.675-24.36,1.37-48.72.225-8.025.45-16.06.345-12.09.68-24.18c.03-1.13.07-2.25.1-3.38.02-.99.05-1.97.08-2.96q.66-23.475,1.32-46.96.27-9.24.52-18.49.3-10.545.6-21.08c.09-3.09.17005-6.17.26-9.26a7.64844,7.64844,0,0,1,7.5-7.5A7.56116,7.56116,0,0,1,402.86309,482.136Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#3f3d56"/>
|
||||
<path
|
||||
d="M814.29118,484.2172a893.23753,893.23753,0,0,1-28.16112,87.94127c-3.007,7.94641-6.08319,15.877-9.3715,23.71185l.75606-1.7916a54.58274,54.58274,0,0,1-5.58953,10.61184q-.22935.32119-.46685.63642,1.16559-1.49043.4428-.589c-.25405.30065-.5049.60219-.7676.89546a23.66436,23.66436,0,0,1-2.2489,2.20318q-.30139.25767-.61188.5043l.93783-.729c-.10884.25668-.87275.59747-1.11067.74287a18.25362,18.25362,0,0,1-2.40479,1.21853l1.7916-.75606a19.0859,19.0859,0,0,1-4.23122,1.16069l1.9938-.26791a17.02055,17.02055,0,0,1-4.29785.046l1.99379.2679a14.0022,14.0022,0,0,1-3.40493-.917l1.79159.75606a12.01175,12.01175,0,0,1-1.67882-.89614c-.27135-.17688-1.10526-.80852-.01487.02461,1.13336.86595.14562.07434-.08763-.15584-.19427-.19171-.36962-.4-.55974-.595-.88208-.90454.99637,1.55662.39689.49858a18.18179,18.18179,0,0,1-.87827-1.63672l.75606,1.7916a11.92493,11.92493,0,0,1-.728-2.65143l.26791,1.9938a13.65147,13.65147,0,0,1-.00316-3.40491l-.2679,1.9938a15.96371,15.96371,0,0,1,.99486-3.68011l-.75606,1.7916a16.72914,16.72914,0,0,1,1.17794-2.29848,6.72934,6.72934,0,0,1,.72851-1.0714c.04915.01594-1.26865,1.51278-.56937.757.1829-.19767.354-.40592.539-.602.29617-.31382.61354-.60082.92561-.89791,1.04458-.99442-1.46188.966-.25652.17907a19.0489,19.0489,0,0,1,2.74925-1.49923l-1.79159.75606a20.31136,20.31136,0,0,1,4.99523-1.33984l-1.9938.2679a25.62828,25.62828,0,0,1,6.46062.07647l-1.9938-.2679a33.21056,33.21056,0,0,1,7.89178,2.2199l-1.7916-.75606c5.38965,2.31383,10.16308,5.74926,14.928,9.118a111.94962,111.94962,0,0,0,14.50615,8.9065,108.38849,108.38849,0,0,0,34.62226,10.47371,103.93268,103.93268,0,0,0,92.58557-36.75192,8.07773,8.07773,0,0,0,2.1967-5.3033,7.63232,7.63232,0,0,0-2.1967-5.3033c-2.75154-2.52586-7.94926-3.239-10.6066,0a95.63575,95.63575,0,0,1-8.10664,8.72692q-2.01736,1.914-4.14232,3.70983-1.21364,1.02588-2.46086,2.01121c-.3934.31081-1.61863,1.13807.26309-.19744-.43135.30614-.845.64036-1.27058.95478a99.26881,99.26881,0,0,1-20.33215,11.56478l1.79159-.75606a96.8364,96.8364,0,0,1-24.17119,6.62249l1.99379-.2679a97.64308,97.64308,0,0,1-25.75362-.03807l1.99379.2679a99.79982,99.79982,0,0,1-24.857-6.77027l1.7916.75607a116.02515,116.02515,0,0,1-21.7364-12.59112,86.87725,86.87725,0,0,0-11.113-6.99417,42.8238,42.8238,0,0,0-14.43784-4.38851c-9.43884-1.11076-19.0571,2.56562-24.24624,10.72035-4.77557,7.50482-4.71394,18.24362,1.97369,24.62519,6.8877,6.5725,17.31846,6.51693,25.43556,2.40567,7.81741-3.95946,12.51288-12.18539,15.815-19.94186,7.43109-17.45514,14.01023-35.31364,20.1399-53.263q9.09651-26.63712,16.49855-53.81332.91661-3.36581,1.80683-6.73869c1.001-3.78869-1.26094-8.32-5.23829-9.22589a7.63317,7.63317,0,0,0-9.22589,5.23829Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#3f3d56"/>
|
||||
<path
|
||||
d="M889.12382,482.13557l-2.69954,95.79311-2.68548,95.29418-1.5185,53.88362a7.56465,7.56465,0,0,0,7.5,7.5,7.64923,7.64923,0,0,0,7.5-7.5l2.69955-95.79311,2.68548-95.29418,1.51849-53.88362a7.56465,7.56465,0,0,0-7.5-7.5,7.64923,7.64923,0,0,0-7.5,7.5Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#3f3d56"/>
|
||||
<path
|
||||
d="M629.52566,700.36106h2.32885V594.31942h54.32863v-2.32291H631.85451V547.25214H673.8102q-.92256-1.17339-1.89893-2.31694H631.85451V515.38231c-.7703-.32846-1.54659-.64493-2.32885-.9435V544.9352h-45.652V507.07c-.78227.03583-1.55258.08959-2.3289.15527v37.71h-36.4201V516.68409c-.78227.34636-1.55258.71061-2.31694,1.0928V544.9352h-30.6158v2.31694h30.6158v44.74437h-30.6158v2.32291h30.6158V700.36106h2.31694V594.31942a36.41283,36.41283,0,0,1,36.4201,36.42007v69.62157h2.3289V594.31942h45.652Zm-84.401-108.36455V547.25214h36.4201v44.74437Zm38.749,0V547.25214h.91362a44.74135,44.74135,0,0,1,44.73842,44.74437Z"
|
||||
transform="translate(-169.93432 -164.42601)" opacity="0.2"/>
|
||||
<path
|
||||
d="M615.30309,668.566a63.05854,63.05854,0,0,1-20.05,33.7c-.74.64-1.48,1.26-2.25,1.87q-2.805.25506-5.57.52c-1.53.14-3.04.29-4.54.43l-.27.03-.19-1.64-.76-6.64a37.623,37.623,0,0,1-3.3-32.44c2.64-7.12,7.42-13.41,12.12-19.65,6.49-8.62,12.8-17.14,13.03-27.65a60.54415,60.54415,0,0,1,7.9,13.33,16.432,16.432,0,0,0-5.12,3.76995c-.41.45-.82,1.08-.54,1.62006.24.46.84.57,1.36.62994,1.25.13,2.51.26,3.76.39,1,.11,2,.21,3,.32a63.99025,63.99025,0,0,1,2.45,12.18A61.18851,61.18851,0,0,1,615.30309,668.566Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#3f3d56"/>
|
||||
<path
|
||||
d="M648.50311,642.356c-5.9,4.29-9.35,10.46-12.03,17.26a16.62776,16.62776,0,0,0-7.17,4.58c-.41.45-.82,1.08-.54,1.62006.24.46.84.57,1.36.62994,1.25.13,2.51.26,3.76.39-2.68,8.04-5.14,16.36-9.88,23.15a36.98942,36.98942,0,0,1-12.03,10.91,38.49166,38.49166,0,0,1-4.02,1.99q-7.62.585-14.95,1.25-2.805.25506-5.57.52c-1.53.14-3.04.29-4.54.43q-.015-.825,0-1.65a63.30382,63.30382,0,0,1,15.25-39.86c.45-.52.91-1.03,1.38-1.54a61.7925,61.7925,0,0,1,16.81-12.7A62.65425,62.65425,0,0,1,648.50311,642.356Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill={fillColor}/>
|
||||
<path
|
||||
d="M589.16308,699.526l-1.15,3.4-.58,1.73c-1.53.14-3.04.29-4.54.43l-.27.03c-1.66.17-3.31.34-4.96.51-.43-.5-.86-1.01-1.28-1.53a62.03045,62.03045,0,0,1,8.07-87.11c-1.32,6.91.22,13.53,2.75,20.1-.27.11-.53.22-.78.34a16.432,16.432,0,0,0-5.12,3.76995c-.41.45-.82,1.08-.54,1.62006.24.46.84.57,1.36.62994,1.25.13,2.51.26,3.76.39,1,.11,2,.21,3,.32q.705.075,1.41.15c.07.15.13.29.2.44,2.85,6.18,5.92,12.39,7.65,18.83a43.66591,43.66591,0,0,1,1.02,4.91A37.604,37.604,0,0,1,589.16308,699.526Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill={fillColor}/>
|
||||
<path
|
||||
d="M689.82123,554.48655c-8.60876-16.79219-21.94605-30.92088-37.63219-41.30357a114.2374,114.2374,0,0,0-52.5626-18.37992q-3.69043-.33535-7.399-.39281c-2.92141-.04371-46.866,12.63176-61.58712,22.98214a114.29462,114.29462,0,0,0-35.333,39.527,102.49972,102.49972,0,0,0-12.12557,51.6334,113.56387,113.56387,0,0,0,14.70268,51.47577,110.47507,110.47507,0,0,0,36.44425,38.74592C549.66655,708.561,565.07375,734.51,583.1831,735.426c18.24576.923,39.05418-23.55495,55.6951-30.98707a104.42533,104.42533,0,0,0,41.72554-34.005,110.24964,110.24964,0,0,0,19.599-48.94777c2.57368-18.08313,1.37415-36.73271-4.80123-54.01627a111.85969,111.85969,0,0,0-5.58024-12.9833c-1.77961-3.50519-6.996-4.7959-10.26142-2.69063a7.67979,7.67979,0,0,0-2.69064,10.26142q1.56766,3.08773,2.91536,6.27758l-.75606-1.7916a101.15088,101.15088,0,0,1,6.87641,25.53816l-.26791-1.99379a109.2286,109.2286,0,0,1-.06613,28.68252l.26791-1.9938a109.73379,109.73379,0,0,1-7.55462,27.67419l.75606-1.79159a104.212,104.212,0,0,1-6.67151,13.09835q-1.92308,3.18563-4.08062,6.22159c-.63172.8881-1.28287,1.761-1.939,2.63114-.85625,1.13555,1.16691-1.48321.28228-.36941-.15068.18972-.30049.3801-.45182.5693q-.68121.85165-1.3818,1.68765a93.61337,93.61337,0,0,1-10.17647,10.38359q-1.36615,1.19232-2.77786,2.33115c-.46871.37832-.932.77269-1.42079,1.12472.01861-.0134,1.57956-1.19945.65556-.511-.2905.21644-.57851.43619-.86961.65184q-2.90994,2.1558-5.97433,4.092a103.48509,103.48509,0,0,1-14.75565,7.7131l1.7916-.75606a109.21493,109.21493,0,0,1-27.59663,7.55154l1.9938-.26791a108.15361,108.15361,0,0,1-28.58907.0506l1.99379.2679a99.835,99.835,0,0,1-25.09531-6.78448l1.79159.75607a93.64314,93.64314,0,0,1-13.41605-6.99094q-3.17437-2-6.18358-4.24743c-.2862-.21359-.56992-.43038-.855-.64549-.9155-.69088.65765.50965.67021.51787a19.16864,19.16864,0,0,1-1.535-1.22469q-1.45353-1.18358-2.86136-2.4218a101.98931,101.98931,0,0,1-10.49319-10.70945q-1.21308-1.43379-2.37407-2.91054c-.33524-.4263-.9465-1.29026.40424.5289-.17775-.23939-.36206-.47414-.54159-.71223q-.64657-.85751-1.27568-1.72793-2.203-3.048-4.18787-6.24586a109.29037,109.29037,0,0,1-7.8054-15.10831l.75606,1.7916a106.58753,106.58753,0,0,1-7.34039-26.837l.26791,1.9938a97.86589,97.86589,0,0,1-.04843-25.63587l-.2679,1.9938A94.673,94.673,0,0,1,505.27587,570.55l-.75606,1.7916a101.55725,101.55725,0,0,1,7.19519-13.85624q2.0655-3.32328,4.37767-6.4847.52528-.71832,1.06244-1.42786c.324-.4279,1.215-1.49333-.30537.38842.14906-.18449.29252-.37428.43942-.56041q1.26882-1.60756,2.59959-3.1649A107.40164,107.40164,0,0,1,530.772,536.21508q1.47408-1.29171,2.99464-2.52906.6909-.56218,1.39108-1.11284c.18664-.14673.37574-.29073.56152-.43858-1.99743,1.58953-.555.43261-.10157.09288q3.13393-2.34833,6.43534-4.46134a103.64393,103.64393,0,0,1,15.38655-8.10791l-1.7916.75606c7.76008-3.25839,42.14086-10.9492,48.394-10.10973l-1.99379-.26791A106.22471,106.22471,0,0,1,628.768,517.419l-1.7916-.75606a110.31334,110.31334,0,0,1,12.6002,6.32922q3.04344,1.78405,5.96742,3.76252,1.38351.93658,2.73809,1.915.677.48917,1.34626.98885c.24789.185.49386.37253.74135.558,1.03924.779-1.43148-1.1281-.34209-.26655a110.84261,110.84261,0,0,1,10.36783,9.2532q2.401,2.445,4.63686,5.04515,1.14659,1.33419,2.24643,2.70757c.36436.45495,1.60506,2.101.08448.08457.37165.49285.74744.98239,1.11436,1.47884a97.97718,97.97718,0,0,1,8.39161,13.53807c1.79317,3.49775,6.98675,4.80186,10.26142,2.69064A7.67666,7.67666,0,0,0,689.82123,554.48655Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#3f3d56"/>
|
||||
<path
|
||||
d="M602.43116,676.88167a3.77983,3.77983,0,0,1-2.73939-6.55137c.09531-.37882.16368-.65085.259-1.02968q-.05115-.12366-.1029-.24717c-3.47987-8.29769-25.685,14.83336-26.645,22.63179a30.029,30.029,0,0,0,.52714,10.32752A120.39223,120.39223,0,0,1,562.77838,652.01a116.20247,116.20247,0,0,1,.72078-12.96332q.59712-5.293,1.65679-10.51055a121.78667,121.78667,0,0,1,24.1515-51.61646c6.87378.38364,12.898-.66348,13.47967-13.98532.10346-2.36972,1.86113-4.42156,2.24841-6.756-.65621.08607-1.32321.13985-1.97941.18285-.20444.0107-.41958.02149-.624.03228l-.07709.00346a3.745,3.745,0,0,1-3.07566-6.10115q.425-.52305.85054-1.04557c.43036-.53793.87143-1.06507,1.30171-1.60292a1.865,1.865,0,0,0,.13986-.16144c.49494-.61322.98971-1.21564,1.48465-1.82885a10.82911,10.82911,0,0,0-3.55014-3.43169c-4.95941-2.90463-11.80146-.89293-15.38389,3.59313-3.59313,4.486-4.27083,10.77947-3.023,16.3843a43.39764,43.39764,0,0,0,6.003,13.3828c-.269.34429-.54872.67779-.81765,1.02209a122.57366,122.57366,0,0,0-12.79359,20.2681c1.0163-7.93863-11.41159-36.60795-16.21776-42.68052-5.773-7.29409-17.61108-4.11077-18.62815,5.13562q-.01476.13428-.02884.26849,1.07082.60411,2.0964,1.28237a5.12707,5.12707,0,0,1-2.06713,9.33031l-.10452.01613c-9.55573,13.64367,21.07745,49.1547,28.74518,41.18139a125.11045,125.11045,0,0,0-6.73449,31.69282,118.66429,118.66429,0,0,0,.08607,19.15986l-.03231-.22593C558.90163,648.154,529.674,627.51374,521.139,629.233c-4.91675.99041-9.75952.76525-9.01293,5.72484q.01788.11874.03635.2375a34.4418,34.4418,0,0,1,3.862,1.86105q1.07082.60423,2.09639,1.28237a5.12712,5.12712,0,0,1-2.06712,9.33039l-.10464.01606c-.07528.01079-.13987.02157-.21507.03237-4.34967,14.96631,27.90735,39.12,47.5177,31.43461h.01081a125.07484,125.07484,0,0,0,8.402,24.52806H601.679c.10765-.3335.20443-.67779.3013-1.01129a34.102,34.102,0,0,1-8.30521-.49477c2.22693-2.73257,4.45377-5.48664,6.6807-8.21913a1.86122,1.86122,0,0,0,.13986-.16135c1.12956-1.39849,2.26992-2.78627,3.39948-4.18476l.00061-.00173a49.95232,49.95232,0,0,0-1.46367-12.72495Zm-34.37066-67.613.0158-.02133-.0158.04282Zm-6.64832,59.93237-.25822-.58084c.01079-.41957.01079-.83914,0-1.26942,0-.11845-.0215-.23672-.0215-.35508.09678.74228.18285,1.48464.29042,2.22692Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#3f3d56"/>
|
||||
<circle cx="95.24878" cy="439" r="11" fill="#3f3d56"/>
|
||||
<circle cx="227.24878" cy="559" r="11" fill="#3f3d56"/>
|
||||
<circle cx="728.24878" cy="559" r="11" fill="#3f3d56"/>
|
||||
<circle cx="755.24878" cy="419" r="11" fill="#3f3d56"/>
|
||||
<circle cx="723.24878" cy="317" r="11" fill="#3f3d56"/>
|
||||
<path d="M434.1831,583.426a10.949,10.949,0,1,1-.21-2.16A10.9921,10.9921,0,0,1,434.1831,583.426Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#3f3d56"/>
|
||||
<circle cx="484.24878" cy="349" r="11" fill="#3f3d56"/>
|
||||
<path d="M545.1831,513.426a10.949,10.949,0,1,1-.21-2.16A10.9921,10.9921,0,0,1,545.1831,513.426Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#3f3d56"/>
|
||||
<path d="M403.1831,481.426a10.949,10.949,0,1,1-.21-2.16A10.9921,10.9921,0,0,1,403.1831,481.426Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#3f3d56"/>
|
||||
<circle cx="599.24878" cy="443" r="11" fill="#3f3d56"/>
|
||||
<circle cx="426.24878" cy="338" r="16" fill="#3f3d56"/>
|
||||
<path
|
||||
d="M1028.875,735.26666l-857.75.30733a1.19068,1.19068,0,1,1,0-2.38136l857.75-.30734a1.19069,1.19069,0,0,1,0,2.38137Z"
|
||||
transform="translate(-169.93432 -164.42601)" fill="#cacaca"/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export default Svg404
|
||||
81
src/core/components/svgs/Svg500.jsx
Normal file
81
src/core/components/svgs/Svg500.jsx
Normal file
@@ -0,0 +1,81 @@
|
||||
import {useTheme} from "@mui/material";
|
||||
|
||||
const Svg404 = ({width, height}) => {
|
||||
const theme = useTheme()
|
||||
const fillColor = theme.palette.primary.main
|
||||
|
||||
return (
|
||||
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" width={width} height={height}
|
||||
viewBox="0 0 888 710.80704">
|
||||
<path
|
||||
d="M600.93555,699.40352a260.06372,260.06372,0,1,1,183.89355-76.1709A258.36518,258.36518,0,0,1,600.93555,699.40352Zm0-518.12891c-142.29688,0-258.06446,115.76758-258.06446,258.06494s115.76758,258.064,258.06446,258.064S859,581.63692,859,439.33955,743.23242,181.27461,600.93555,181.27461Z"
|
||||
transform="translate(-156 -94.59648)" fill="#ccc"/>
|
||||
<rect x="469" y="509.90391" width="262" height="195" transform="translate(1051.40391 -87.19257) rotate(90)"
|
||||
fill="#2f2e41"/>
|
||||
<rect x="313" y="373.80743" width="262" height="104" fill="#3f3d56"/>
|
||||
<rect x="313" y="489.80743" width="262" height="104" fill="#3f3d56"/>
|
||||
<rect x="313" y="605.80743" width="262" height="104" fill="#3f3d56"/>
|
||||
<rect x="313" y="417.90372" width="262" height="16" fill={fillColor}/>
|
||||
<rect x="313" y="533.90372" width="262" height="16" fill={fillColor}/>
|
||||
<rect x="313" y="649.90372" width="262" height="16" fill={fillColor}/>
|
||||
<circle cx="524" cy="388.80743" r="6" fill={fillColor}/>
|
||||
<circle cx="545" cy="388.80743" r="6" fill={fillColor}/>
|
||||
<circle cx="566" cy="388.80743" r="6" fill={fillColor}/>
|
||||
<circle cx="524" cy="502.80743" r="6" fill={fillColor}/>
|
||||
<circle cx="545" cy="502.80743" r="6" fill={fillColor}/>
|
||||
<circle cx="566" cy="502.80743" r="6" fill={fillColor}/>
|
||||
<circle cx="524" cy="616.80743" r="6" fill={fillColor}/>
|
||||
<circle cx="545" cy="616.80743" r="6" fill={fillColor}/>
|
||||
<circle cx="566" cy="616.80743" r="6" fill={fillColor}/>
|
||||
<rect y="708.80704" width="888" height="2" fill="#3f3d56"/>
|
||||
<path
|
||||
d="M397.8787,365.66116v185.9917a14.67525,14.67525,0,0,1-14.67227,14.67231H310.928a14.67656,14.67656,0,0,1-14.6784-14.67231V365.66116a14.67655,14.67655,0,0,1,14.6784-14.67228h8.76786a6.9778,6.9778,0,0,0,6.4551,9.60614h41.20843a6.97774,6.97774,0,0,0,6.45506-9.60614h9.392A14.67524,14.67524,0,0,1,397.8787,365.66116Z"
|
||||
transform="translate(-156 -94.59648)" fill="#e6e6e6"/>
|
||||
<rect x="145.06414" y="291.91002" width="92" height="128" fill="#fff"/>
|
||||
<rect x="171.18557" y="379.92719" width="36.71978" height="2.09827" fill="#e6e6e6"/>
|
||||
<rect x="171.14869" y="387.63152" width="56.81724" height="2.09827" fill={fillColor}/>
|
||||
<rect x="171.14869" y="394.89011" width="44.5883" height="2.09827" fill="#e6e6e6"/>
|
||||
<rect x="171.14869" y="402.1487" width="26.22841" height="2.09827" fill="#e6e6e6"/>
|
||||
<rect x="171.14869" y="409.40729" width="39.34262" height="2.09827" fill="#e6e6e6"/>
|
||||
<rect x="154.53324" y="379.32379" width="4.19655" height="4.19655" fill="#e6e6e6"/>
|
||||
<rect x="154.53324" y="386.58238" width="4.19655" height="4.19655" fill={fillColor}/>
|
||||
<rect x="154.53324" y="393.84097" width="4.19655" height="4.19655" fill="#e6e6e6"/>
|
||||
<rect x="154.53324" y="401.09956" width="4.19655" height="4.19655" fill="#e6e6e6"/>
|
||||
<rect x="154.53324" y="408.35815" width="4.19655" height="4.19655" fill="#e6e6e6"/>
|
||||
<rect x="172.75082" y="307.91002" width="36.99753" height="36.99753" fill="#e6e6e6"/>
|
||||
<rect x="321.11058" y="0.13939" width="245.88383" height="157.47494" fill="#e6e6e6"/>
|
||||
<rect x="339.64671" y="44.19534" width="203.86136" height="77.03517" fill="#fff"/>
|
||||
<rect x="376.78939" y="57.54179" width="48.92684" height="2.79582" fill="#e6e6e6"/>
|
||||
<rect x="376.74025" y="67.80733" width="75.70547" height="2.79582" fill={fillColor}/>
|
||||
<rect x="376.74025" y="77.47895" width="59.41117" height="2.79582" fill="#e6e6e6"/>
|
||||
<rect x="376.74025" y="87.15058" width="34.94775" height="2.79582" fill="#e6e6e6"/>
|
||||
<rect x="376.74025" y="96.8222" width="52.42162" height="2.79582" fill="#e6e6e6"/>
|
||||
<rect x="354.60119" y="56.7378" width="5.59164" height="5.59164" fill="#e6e6e6"/>
|
||||
<rect x="354.60119" y="66.40942" width="5.59164" height="5.59164" fill={fillColor}/>
|
||||
<rect x="354.60119" y="76.08104" width="5.59164" height="5.59164" fill="#e6e6e6"/>
|
||||
<rect x="354.60119" y="85.75267" width="5.59164" height="5.59164" fill="#e6e6e6"/>
|
||||
<rect x="354.60119" y="95.42429" width="5.59164" height="5.59164" fill="#e6e6e6"/>
|
||||
<rect x="483.44507" y="53.8475" width="50.05873" height="50.05873" fill="#e6e6e6"/>
|
||||
<rect x="321.00559" width="245.88383" height="10.44604" fill={fillColor}/>
|
||||
<circle cx="328.76825" cy="5.34057" r="2.09686" fill="#fff"/>
|
||||
<circle cx="336.11718" cy="5.34057" r="2.09686" fill="#fff"/>
|
||||
<circle cx="343.46611" cy="5.34057" r="2.09686" fill="#fff"/>
|
||||
<rect x="671.64772" y="294.80743" width="60" height="31" fill="#e6e6e6"/>
|
||||
<rect x="671.64772" y="405.80743" width="60" height="31" fill="#e6e6e6"/>
|
||||
<circle cx="701.64772" cy="365.80743" r="50" fill="#e6e6e6"/>
|
||||
<circle cx="701.64772" cy="365.80743" r="39" fill="#fff"/>
|
||||
<rect x="688.87659" y="355.12175" width="30.24683" height="1.72839" fill="#e2e2e2"/>
|
||||
<rect x="688.84621" y="361.46796" width="46.80151" height="1.72839" fill={fillColor}/>
|
||||
<rect x="688.84621" y="367.44701" width="36.72829" height="1.72839" fill="#e2e2e2"/>
|
||||
<rect x="688.84621" y="373.42605" width="21.60488" height="1.72839" fill="#e2e2e2"/>
|
||||
<rect x="688.84621" y="379.4051" width="32.40732" height="1.72839" fill="#e2e2e2"/>
|
||||
<rect x="675.15972" y="354.62472" width="3.45678" height="3.45678" fill="#e2e2e2"/>
|
||||
<rect x="675.15972" y="360.60376" width="3.45678" height="3.45678" fill={fillColor}/>
|
||||
<rect x="675.15972" y="366.58281" width="3.45678" height="3.45678" fill="#e2e2e2"/>
|
||||
<rect x="675.15972" y="372.56186" width="3.45678" height="3.45678" fill="#e2e2e2"/>
|
||||
<rect x="675.15972" y="378.54091" width="3.45678" height="3.45678" fill="#e2e2e2"/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export default Svg404
|
||||
117
src/core/components/svgs/SvgDashboard.jsx
Normal file
117
src/core/components/svgs/SvgDashboard.jsx
Normal file
@@ -0,0 +1,117 @@
|
||||
import {useTheme} from "@mui/material";
|
||||
|
||||
const SvgDashboard = ({width, height}) => {
|
||||
const theme = useTheme()
|
||||
const fillColor = theme.palette.primary.main
|
||||
|
||||
return (
|
||||
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" width={width} height={height}
|
||||
viewBox="0 0 1029.56255 548.69495">
|
||||
<path
|
||||
d="M133.37467,722.76736l.21351-1.12612c.04736-.24754,4.90753-24.90966,23.12635-39.22042,18.21964-14.3114,43.33085-13.19135,43.58186-13.17828l1.145.05909-.21358,1.12564c-.04737.24754-4.90763,24.90918-23.12636,39.22042-18.21964,14.3114-43.33084,13.19135-43.58186,13.17828ZM157.95,683.994c-15.40414,12.09937-20.95072,31.88327-22.13763,36.85812,5.11571.02181,25.6644-.68921,41.0536-12.77757,15.38743-12.08706,20.94624-31.88051,22.13762-36.85812C193.88493,671.19461,173.33832,671.90627,157.95,683.994Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#f1f1f1"/>
|
||||
<path
|
||||
d="M165.19537,689.48163c-8.34609,21.49794-30.31721,33.0224-30.31721,33.0224s-8.43942-23.33063-.09333-44.82857S165.102,644.65305,165.102,644.65305,173.54146,667.98369,165.19537,689.48163Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#f1f1f1"/>
|
||||
<path
|
||||
d="M1084.55991,722.826c-.251.01307-25.36223,1.13312-43.58186-13.17828-18.21874-14.31124-23.079-38.97288-23.12636-39.22042l-.21359-1.12564,1.145-.05909c.251-.01307,25.36223-1.13312,43.58186,13.17828,18.21882,14.31076,23.079,38.97288,23.12636,39.22042l.2135,1.12612Zm-64.484-51.60955c1.19139,4.97761,6.75019,24.77106,22.13763,36.85812,15.38919,12.08836,35.93789,12.79938,41.05359,12.77757-1.1869-4.97485-6.73348-24.75875-22.13762-36.85812C1045.74117,671.90627,1025.19457,671.19461,1020.076,671.21642Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#f1f1f1"/>
|
||||
<path
|
||||
d="M1053.88412,689.48163c8.34609,21.49794,30.31722,33.0224,30.31722,33.0224s8.43942-23.33063.09333-44.82857-30.31722-33.02241-30.31722-33.02241S1045.538,667.98369,1053.88412,689.48163Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#f1f1f1"/>
|
||||
<path
|
||||
d="M675.31479,717.62706l-14.5923-6.1443-10.01026-73.15138H517.40762L506.55725,711.1839l-13.05512,6.52746a3.10016,3.10016,0,0,0,1.38657,5.873H674.11213A3.1,3.1,0,0,0,675.31479,717.62706Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#e6e6e6"/>
|
||||
<path
|
||||
d="M912.20621,648.06385H257.377a12.97344,12.97344,0,0,1-12.9443-12.97332V542.751h680.7178v92.33952A12.97356,12.97356,0,0,1,912.20621,648.06385Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#ccc"/>
|
||||
<path
|
||||
d="M925.835,586.39288h-682V191.29161a15.6572,15.6572,0,0,1,15.63964-15.63909H910.1952A15.65735,15.65735,0,0,1,925.835,191.29161Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#3f3d56"/>
|
||||
<path
|
||||
d="M885.10186,557.71639H284.56818a12.07023,12.07023,0,0,1-12.057-12.05667v-329.274a12.07087,12.07087,0,0,1,12.057-12.05741H885.10186a12.07088,12.07088,0,0,1,12.057,12.05741v329.274A12.07024,12.07024,0,0,1,885.10186,557.71639Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#fff"/>
|
||||
<path
|
||||
d="M1113.255,724.34746l-1026.44821,0a1.56682,1.56682,0,0,1-1.53909-1.13363,1.52912,1.52912,0,0,1,1.47725-1.91893l1026.385,0a1.61535,1.61535,0,0,1,1.61617,1.19368A1.52819,1.52819,0,0,1,1113.255,724.34746Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#ccc"/>
|
||||
<rect x="219.58182" y="153.2027" width="98.80647" height="9.27916" fill="#e5e5e5"/>
|
||||
<rect x="219.58182" y="175.70578" width="98.80647" height="9.27916" fill="#e5e5e5"/>
|
||||
<rect x="219.58182" y="198.70578" width="98.80647" height="9.27916" fill="#e5e5e5"/>
|
||||
<rect x="219.58182" y="221.70578" width="98.80647" height="9.27916" fill="#e5e5e5"/>
|
||||
<rect x="242.98506" y="250.93227" width="52" height="8.05267" fill={fillColor}/>
|
||||
<rect x="471.19198" y="210.75367" width="0.94479" height="2.83436" fill="#e5e5e5"/>
|
||||
<path
|
||||
d="M557.35549,449.63117h-.94478V443.592h.94478Zm0-12.07807h-.94478v-6.03916h.94478Zm0-12.07831h-.94478v-6.03893h.94478Zm0-12.07808h-.94478v-6.03916h.94478Zm0-12.07808h-.94478v-6.03916h.94478Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#e5e5e5"/>
|
||||
<rect x="471.19198" y="280.01781" width="0.94479" height="2.83436" fill="#e5e5e5"/>
|
||||
<rect x="574.64601" y="210.75367" width="0.94479" height="2.83436" fill="#e5e5e5"/>
|
||||
<path
|
||||
d="M660.80952,449.63117h-.94479V443.592h.94479Zm0-12.07807h-.94479v-6.03916h.94479Zm0-12.07831h-.94479v-6.03893h.94479Zm0-12.07808h-.94479v-6.03916h.94479Zm0-12.07808h-.94479v-6.03916h.94479Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#e5e5e5"/>
|
||||
<rect x="574.64601" y="280.01781" width="0.94479" height="2.83436" fill="#e5e5e5"/>
|
||||
<rect x="626.83111" y="155.3061" width="0.94479" height="2.83436" fill="#e5e5e5"/>
|
||||
<path
|
||||
d="M712.99462,449.86668h-.94478V444.063h.94478Zm0-11.6073h-.94478V432.4555h.94478Zm0-11.60753h-.94478V420.8482h.94478Zm0-11.6073h-.94478V409.2409h.94478Zm0-11.6073h-.94478v-5.80388h.94478Zm0-11.60753h-.94478v-5.80365h.94478Zm0-11.60731h-.94478v-5.80365h.94478Zm0-11.6073h-.94478v-5.80365h.94478Zm0-11.60753h-.94478v-5.80365h.94478Zm0-11.6073h-.94478v-5.80365h.94478Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#e5e5e5"/>
|
||||
<rect x="626.83111" y="280.01781" width="0.94479" height="2.83436" fill="#e5e5e5"/>
|
||||
<rect x="678.49585" y="132.63125" width="0.94479" height="2.83436" fill="#e5e5e5"/>
|
||||
<path
|
||||
d="M764.65936,449.88836h-.94479v-5.7822h.94479Zm0-11.56417h-.94479V432.542h.94479Zm0-11.56416h-.94479v-5.7822h.94479Zm0-11.56417h-.94479v-5.7822h.94479Zm0-11.56417h-.94479v-5.7822h.94479Zm0-11.56416h-.94479v-5.7822h.94479Zm0-11.56417h-.94479v-5.7822h.94479Zm0-11.56417h-.94479V363.157h.94479Zm0-11.56416h-.94479v-5.7822h.94479Zm0-11.56417h-.94479v-5.7822h.94479Zm0-11.56417h-.94479v-5.7822h.94479Zm0-11.56417h-.94479v-5.78219h.94479Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#e5e5e5"/>
|
||||
<rect x="678.49585" y="280.01781" width="0.94479" height="2.83436" fill="#e5e5e5"/>
|
||||
<rect x="523.15519" y="172.78464" width="0.94479" height="2.83436" fill="#e5e5e5"/>
|
||||
<path
|
||||
d="M609.3187,450.17576h-.94478V444.6812h.94478Zm0-10.98936h-.94478v-5.49456h.94478Zm0-10.98936h-.94478v-5.49456h.94478Zm0-10.98936h-.94478v-5.49456h.94478Zm0-10.98936h-.94478v-5.49456h.94478Zm0-10.98936h-.94478v-5.49457h.94478Zm0-10.98936h-.94478V378.745h.94478Zm0-10.98936h-.94478v-5.49457h.94478Zm0-10.98936h-.94478v-5.49457h.94478Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#e5e5e5"/>
|
||||
<rect x="523.15519" y="280.01781" width="0.94479" height="2.83436" fill="#e5e5e5"/>
|
||||
<path
|
||||
d="M817.06089,459.82073H504.27977a.97891.97891,0,0,1-.97886-.97886v-149.916a.97886.97886,0,0,1,1.95772,0V457.863H817.06089a.97886.97886,0,1,1,0,1.95772Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#3f3d56"/>
|
||||
<polygon
|
||||
points="575.548 212.069 523.544 173.118 472.251 211.537 471.077 209.97 523.544 170.672 575.3 209.438 626.731 153.155 626.938 153.071 678.817 132.168 679.549 133.985 627.876 154.804 575.548 212.069"
|
||||
fill="#3f3d56"/>
|
||||
<circle cx="471.66442" cy="210.75355" r="5.87317" fill={fillColor}/>
|
||||
<circle cx="523.54411" cy="172.57792" r="5.87317" fill={fillColor}/>
|
||||
<circle cx="575.42381" cy="210.75355" r="5.87317" fill={fillColor}/>
|
||||
<circle cx="627.3035" cy="153.97954" r="5.87317" fill={fillColor}/>
|
||||
<circle cx="679.1832" cy="132.44458" r="5.87317" fill={fillColor}/>
|
||||
<rect x="347.26975" y="28.67555" width="2" height="353.38818" fill="#e5e5e5"/>
|
||||
<path
|
||||
d="M905.98772,554.09977a7.34552,7.34552,0,0,0-1.961-11.09143l4.882-25.64286-12.52095,5.218L893.6713,546.1344a7.38532,7.38532,0,0,0,12.31642,7.96537Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#ffb7b7"/>
|
||||
<polygon points="883.2 535.797 872.598 535.797 867.554 494.903 883.202 494.904 883.2 535.797"
|
||||
fill="#ffb7b7"/>
|
||||
<path
|
||||
d="M971.1222,721.727l-34.18529-.00126v-.43239a13.30659,13.30659,0,0,1,13.30587-13.30566h.00084l20.87921.00085Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#2f2e41"/>
|
||||
<polygon points="825.26 535.797 814.658 535.797 809.614 494.903 825.262 494.904 825.26 535.797"
|
||||
fill="#ffb7b7"/>
|
||||
<path
|
||||
d="M910.58783,721.727l-34.18529-.00126v-.43239a13.30659,13.30659,0,0,1,13.30587-13.30566h.00084l20.87921.00085Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#2f2e41"/>
|
||||
<polygon
|
||||
points="824.391 363.083 814.014 386.99 805.453 524.403 827.073 523.538 832.978 458.033 851.192 399.689 861.664 464.733 865.988 521.808 883.877 522.583 891.005 363.083 824.391 363.083"
|
||||
fill="#2f2e41"/>
|
||||
<path
|
||||
d="M961.48266,420.76584l-30.07691.75236-17.65821,9.065-.96906,66.87968-11.0131,46.17488s68.811,4.73581,78.32355-2.1824L968.84683,488.704,983.925,431.69483Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill={fillColor}/>
|
||||
<path
|
||||
d="M916.96023,431.62873l-3.21269-1.04552s-10.19135,6.54059-9.22166,22.35367c0,0-.382,8.1827-.01724,13.62852.41834,6.24634-12.10688,68.31736-12.10688,68.31736h18.16032l7.783-56.21048Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill={fillColor}/>
|
||||
<path
|
||||
d="M983.45379,554.96455a7.34552,7.34552,0,0,1,1.961-11.09143l-4.882-25.64286,12.52095,5.218,2.71649,23.55092a7.38532,7.38532,0,0,1-12.31642,7.96537Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#ffb7b7"/>
|
||||
<path
|
||||
d="M979.39949,432.4935l3.2127-1.04551s10.19134,6.54059,9.22166,22.35367c0,0,.382,8.1827.01724,13.62852-.41834,6.24634,5.18866,68.31736,5.18866,68.31736H978.87944l-7.783-56.21049Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill={fillColor}/>
|
||||
<path
|
||||
d="M968.86587,392.707a20.84977,20.84977,0,1,1-20.84978-20.84975h0a20.79787,20.79787,0,0,1,20.84975,20.74588Q968.866,392.655,968.86587,392.707Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#ffb7b7"/>
|
||||
<path
|
||||
d="M927.23562,364.702c2.44244-5.25207,7.169-4.21369,11.30278-2.43339,5.23475-1.16114,10.21334-4.63745,15.85348-2.58158,5.55578,8.08056,24.209,5.70314,20.24058,18.85835-.00519,3.15227,5.93159,1.31744,4.89514,6.48014,3.14494,9.93555-11.35179,28.752-19.674,24.78956,2.05822-3.77215,6.76-12.34-.37128-13.18978-15.34037,14.27367-1.58274-27.18028-20.85755-15.1248C932.24272,387.341,923.50556,370.544,927.23562,364.702Z"
|
||||
transform="translate(-85.21873 -175.65252)" fill="#2f2e41"/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export default SvgDashboard
|
||||
136
src/core/components/svgs/SvgLoading.jsx
Normal file
136
src/core/components/svgs/SvgLoading.jsx
Normal file
@@ -0,0 +1,136 @@
|
||||
import {useTheme} from "@mui/material";
|
||||
|
||||
const SvgLoading = ({width, height}) => {
|
||||
const theme = useTheme()
|
||||
const fillColor = theme.palette.primary.main
|
||||
|
||||
return (
|
||||
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" width={width} height={height}
|
||||
viewBox="0 0 693.97296 712.57302">
|
||||
<path id="a7e0d23c-0c47-41f1-93b9-87dfccd4c0f5-182" data-name="Path 968"
|
||||
d="M752.75753,262.60547h-3.9v-106.977a61.915,61.915,0,0,0-61.915-61.915h-226.65a61.915,61.915,0,0,0-61.916,61.914v586.884a61.915,61.915,0,0,0,61.915,61.915h226.648a61.915,61.915,0,0,0,61.915-61.915v-403.758h3.9Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#3f3d56"/>
|
||||
<path id="a1ad11fc-8226-4675-bbe0-e36020d9de96-183" data-name="Path 969"
|
||||
d="M736.15756,151.48149v595.175a46.959,46.959,0,0,1-46.942,46.952h-231.3a46.966,46.966,0,0,1-46.973-46.952v-595.175a46.965,46.965,0,0,1,46.971-46.951h28.058a22.329,22.329,0,0,0,20.656,30.74h131.868a22.329,22.329,0,0,0,20.656-30.74h30.055a46.959,46.959,0,0,1,46.951,46.942Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#fff"/>
|
||||
<path id="a71e44ec-7616-4081-86af-b6db32cd39f3-184" data-name="Path 39"
|
||||
d="M678.82353,494.30947h-205.537a3.81,3.81,0,0,1-3.806-3.806V439.51949a3.811,3.811,0,0,1,3.806-3.806h205.537a3.811,3.811,0,0,1,3.806,3.806v50.985a3.811,3.811,0,0,1-3.806,3.806Zm-205.537-57.074a2.286,2.286,0,0,0-2.284,2.284v50.985a2.286,2.286,0,0,0,2.284,2.284h205.537a2.286,2.286,0,0,0,2.284-2.284v-50.985a2.286,2.286,0,0,0-2.284-2.284Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="a3f57aef-fb20-4553-8f82-b751eb5ec42c-185" data-name="Path 40"
|
||||
d="M536.85153,454.07448a2.66449,2.66449,0,0,0,0,5.329h125.605a2.665,2.665,0,0,0,.2041-5.32611q-.0585-.00221-.11712-.0019h-125.692Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="a617e1da-1a45-4bf0-a146-8b20186fa5b6-186" data-name="Path 41"
|
||||
d="M536.85153,470.05846a2.66449,2.66449,0,0,0,0,5.329h125.605a2.665,2.665,0,0,0,.2041-5.32611q-.0585-.00219-.11712-.00189h-125.692Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="f83fafa3-5270-49ac-8952-eedc3d6c92ed-187" data-name="Path 42"
|
||||
d="M678.82353,579.28947h-205.537a3.81,3.81,0,0,1-3.806-3.806V524.49949a3.811,3.811,0,0,1,3.806-3.806h205.537a3.811,3.811,0,0,1,3.806,3.806v50.985A3.811,3.811,0,0,1,678.82353,579.28947Zm-205.537-57.074a2.286,2.286,0,0,0-2.284,2.284v50.985a2.286,2.286,0,0,0,2.284,2.284h205.537a2.286,2.286,0,0,0,2.284-2.284v-50.985a2.286,2.286,0,0,0-2.284-2.284Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="b1e095e5-1d51-47f4-b1e9-85a21efab4ec-188" data-name="Path 43"
|
||||
d="M536.85153,539.33047a2.66449,2.66449,0,0,0,0,5.329h125.605a2.665,2.665,0,0,0,.087-5.328h-125.692Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="e7ccabbb-2f45-40c9-adc9-a92013dc0f4d-189" data-name="Path 44"
|
||||
d="M536.85153,555.3185a2.66449,2.66449,0,0,0,0,5.329h125.605a2.665,2.665,0,0,0,.087-5.328h-125.692Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="ec532991-8ec8-4eba-a86f-87c70c278f41-190" data-name="Path 39-2"
|
||||
d="M678.82353,664.54748h-205.537a3.81,3.81,0,0,1-3.806-3.806V609.7575a3.811,3.811,0,0,1,3.806-3.806h205.537a3.811,3.811,0,0,1,3.806,3.806v50.985a3.811,3.811,0,0,1-3.806,3.806Zm-205.537-57.074a2.286,2.286,0,0,0-2.284,2.284v50.985a2.286,2.286,0,0,0,2.284,2.284h205.537a2.286,2.286,0,0,0,2.284-2.284v-50.985a2.286,2.286,0,0,0-2.284-2.284Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="a788f10e-f95b-4590-bad9-be702445c232-191" data-name="Path 40-2"
|
||||
d="M536.85153,624.59148a2.66449,2.66449,0,1,0,0,5.329h125.605a2.665,2.665,0,0,0,.2041-5.32611q-.0585-.00219-.11712-.00189h-125.692Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="f15a5014-9b42-4c0b-a546-80766b911601-192" data-name="Path 41-2"
|
||||
d="M536.85153,640.57846a2.66449,2.66449,0,0,0,0,5.329h125.605a2.665,2.665,0,0,0,.2041-5.32611q-.0585-.0022-.11712-.00189h-125.692Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="b97f850c-7352-4ff9-8496-0f681ff3b244-193" data-name="Path 970"
|
||||
d="M945.17252,806.28651h-690.347c-1,0-1.812-.468-1.812-1.045s.812-1.04505,1.812-1.04505H945.17447c1,0,1.812.468,1.812,1.045S946.17252,806.28651,945.17252,806.28651Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e6e6e6"/>
|
||||
<g id="ac055b4e-9afd-48c4-86db-12c8e2993e8d" data-name="Group 58">
|
||||
<path id="b77ebe88-e0c7-4a9a-a2fb-b51dce897c46-194" data-name="Path 438"
|
||||
d="M282.08554,765.52248a19.47406,19.47406,0,0,0,18.806-3.313c6.587-5.528,8.652-14.637,10.332-23.07l4.97-24.945-10.405,7.165c-7.483,5.152-15.134,10.47-20.316,17.933s-7.443,17.651-3.28,25.727"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="a8a7bc76-ff28-4167-bc9c-ebff63445848-195" data-name="Path 439"
|
||||
d="M283.69254,797.45852c-1.31-9.542-2.657-19.206-1.738-28.85.816-8.565,3.429-16.93,8.749-23.789a39.57353,39.57353,0,0,1,10.153-9.2c1.015-.641,1.95.968.939,1.606a37.622,37.622,0,0,0-14.885,17.955c-3.24,8.241-3.76,17.224-3.2,25.978.338,5.294,1.053,10.553,1.774,15.806a.964.964,0,0,1-.65,1.144.936.936,0,0,1-1.144-.65Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#f2f2f2"/>
|
||||
<path id="abfc2b94-a38f-4778-bd11-bd0282c86570-196" data-name="Path 442"
|
||||
d="M293.11954,782.1495a14.336,14.336,0,0,0,12.491,6.447c6.323-.3,11.595-4.713,16.34-8.9l14.036-12.392-9.289-.444c-6.68-.32-13.533-.618-19.9,1.442s-12.231,7.018-13.394,13.6"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="ba99c695-899d-4604-b38e-601ed41861fa-197" data-name="Path 443"
|
||||
d="M279.99051,802.94448c6.3-11.156,13.618-23.555,26.685-27.518a29.77893,29.77893,0,0,1,11.224-1.159c1.192.1.894,1.94-.3,1.837a27.66479,27.66479,0,0,0-17.912,4.739c-5.051,3.438-8.983,8.217-12.311,13.286-2.039,3.1-3.865,6.341-5.691,9.573C281.10352,804.73452,279.4035,803.98946,279.99051,802.94448Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#f2f2f2"/>
|
||||
</g>
|
||||
<g id="bf60e786-3805-43a5-8cdd-bbea060079bf" data-name="Group 59">
|
||||
<circle id="a323e3dd-8f2c-40f7-a0c1-7a235f78e8b7" data-name="Ellipse 5" cx="245.91502" cy="370.985"
|
||||
r="15.986"
|
||||
fill={fillColor}/>
|
||||
<path id="b21d221e-9b86-4bff-9dca-a61a27263db1-198" data-name="Path 40-3"
|
||||
d="M491.27554,461.71247c-.184,0-.333,1.193-.333,2.664s.149,2.665.333,2.665h15.719c.184.024.336-1.149.339-2.62a5.94306,5.94306,0,0,0-.328-2.708h-15.73Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e6e6e6"/>
|
||||
</g>
|
||||
<g id="b51141dd-8175-4f5a-b697-41b89601b37f" data-name="Group 60">
|
||||
<circle id="e363222e-d569-47a6-8bf5-edbaac636a07" data-name="Ellipse 5-2" cx="245.91502" cy="456.278"
|
||||
r="15.986"
|
||||
fill={fillColor}/>
|
||||
<path id="bf4b9d9b-b2cd-48cd-bc0b-2e6b007ef33d-199" data-name="Path 40-4"
|
||||
d="M491.27554,547.00547c-.184,0-.333,1.193-.333,2.664s.149,2.665.333,2.665h15.719c.184.024.336-1.149.339-2.62a5.94306,5.94306,0,0,0-.328-2.708h-15.73Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e6e6e6"/>
|
||||
</g>
|
||||
<g id="b35aa588-fd9e-4429-8570-fee6b5da93cc" data-name="Group 61">
|
||||
<circle id="b896a996-d737-41ee-9642-d5eaf8a9fd6b" data-name="Ellipse 5-3" cx="245.91502" cy="541.53599"
|
||||
r="15.986" fill={fillColor}/>
|
||||
<path id="f0c90521-3626-484d-9767-39f7327e6a31-200" data-name="Path 40-5"
|
||||
d="M491.27554,632.26346c-.184,0-.333,1.193-.333,2.664s.149,2.665.333,2.665h15.719c.184.024.336-1.149.339-2.62a5.9431,5.9431,0,0,0-.328-2.708h-15.73Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e6e6e6"/>
|
||||
</g>
|
||||
<path
|
||||
d="M625.19989,350.38193a4.48656,4.48656,0,0,1-4.01245-2.4497,52.87438,52.87438,0,0,0-31.37232-26.41114,59.99908,59.99908,0,0,0-8.408-1.9038l-.57959-.08789L610.74725,225.983l.50586.01758c58.12769,15.79492,91.385,62.38134,100.19336,76.2832a4.49382,4.49382,0,0,1-1.79663,6.42334L627.21918,349.9044A4.50685,4.50685,0,0,1,625.19989,350.38193Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e6e6e6"/>
|
||||
<path id="e0f3bbc9-2b9f-408e-80ac-e1d5d48fdbc4-201" data-name="Path 2881"
|
||||
d="M804.63654,549.70647a9.27592,9.27592,0,0,1,12.711-6.383l22.283-24.293,4.164,16.616-21.8,20.521a9.326,9.326,0,0,1-17.359-6.462Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#feb8b8"/>
|
||||
<path id="b7278a0b-1b02-42c5-a26a-5568eba21726-202" data-name="Path 2882"
|
||||
d="M852.49454,792.04449h-13.613l-6.478-52.517h20.1Z" transform="translate(-253.01352 -93.71349)"
|
||||
fill="#feb8b8"/>
|
||||
<path id="ae5e3f59-c07c-4936-a848-b4ed4a22f493-203" data-name="Path 2883"
|
||||
d="M855.96756,787.5985h-26.815a17.089,17.089,0,0,0-17.088,17.087v.556h43.9Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#2f2e41"/>
|
||||
<path id="e2dcac65-80ca-45a3-9c58-68329f82aa19-204" data-name="Path 2884"
|
||||
d="M930.68353,778.55646l-12.729,4.832-24.693-46.8,18.787-7.13Z"
|
||||
transform="translate(-253.01352 -93.71349)"
|
||||
fill="#feb8b8"/>
|
||||
<path id="e33efd2e-5dad-4e18-8ce5-ea4b13e613d2-205" data-name="Path 2885"
|
||||
d="M932.35455,773.16747l-25.069,9.515h0a17.089,17.089,0,0,0-9.911,22.039l.2.519,41.045-15.578Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#2f2e41"/>
|
||||
<path id="aea1be6b-88fd-4404-a4b2-fdb70dea932e-206" data-name="Path 2886"
|
||||
d="M885.86453,617.36046l11.283,60.71405s30.625,85.428,28.476,87.577-31.7,9.671-30.088,4.836-35.461-77.369-35.461-77.369Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#2f2e41"/>
|
||||
<path id="a45d4c0e-5c31-49a4-b00c-14ea50dd8cbe-207" data-name="Path 2887"
|
||||
d="M840.10855,507.03047s-22.777,29.774-19.792,31.4,14.547,10.236,14.547,10.236l11.764-32.284Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e4e4e4"/>
|
||||
<path id="ababf4ae-7dbc-4717-bb50-ecd0b5fac405-208" data-name="Path 2888"
|
||||
d="M833.74753,537.0825s-3.761,27.939-2.149,33.849.537,173.543-.537,176.229-4.3,11.82-2.686,16.118,23.64,15.044,26.864,11.283,26.866-140.768,26.866-140.768,33.312-82.742,25.79-90.8S833.74753,537.0825,833.74753,537.0825Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#2f2e41"/>
|
||||
<circle id="a4a0a325-f198-46ef-8204-e1264a7da486" data-name="Ellipse 542" cx="629.07161" cy="237.48247"
|
||||
r="26.32701"
|
||||
fill="#feb8b8"/>
|
||||
<path id="f1bcc5ff-8c37-42ba-ac71-fb7b653723a6-209" data-name="Path 2890"
|
||||
d="M854.57553,390.69649a18.66405,18.66405,0,0,1,6-11.04l4.8-14.675h28.209l7.861,12.335c8.5,3.661,14.8,9.467,15.039,16.311,1.3,4.545-4.3,148.828-5.91,154.2-.473,1.564-6.9,2.4-15.936,2.772-8.285.338-18.756.29-28.809.059-16.645-.387-32.162-1.279-34.773-1.757C825.15152,547.82848,853.99054,394.08647,854.57553,390.69649Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e4e4e4"/>
|
||||
<path id="f2ae932d-f3ee-421e-b804-f39bdd3d1485-210" data-name="Path 2891"
|
||||
d="M879.51553,582.02647a9.276,9.276,0,0,0,1.826-14.106l15.569-29.056-17.059,1.558-12.168,27.352a9.326,9.326,0,0,0,11.833,14.251Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#feb8b8"/>
|
||||
<path id="a13bc27c-3d22-450d-9b6a-4857ac9e22b6-211" data-name="Path 2893"
|
||||
d="M882.10355,374.82347s-24.715,10.208-15.581,36,19.342,56.415,19.342,56.415-12.895,69.31-12.895,72-8.059,17.193-4.836,19.88,24.715,8.059,25.252,5.373a181.71945,181.71945,0,0,1,5.91-18.268c1.075-2.149,26.327-69.31,23.1-75.22-2.372-4.349-4.454-44.2-5.388-64.939a34.107,34.107,0,0,0-17.781-28.715C894.22256,374.68749,888.39056,373.25148,882.10355,374.82347Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#e4e4e4"/>
|
||||
<path id="a3aad1c3-1778-4515-92de-8de9e018032c-212" data-name="Path 2800"
|
||||
d="M892.21851,342.96248c-2-.922-4.317-1.113-6.479-1.686-7.734-2.052-12.916-9.689-11.261-16.6a7.47905,7.47905,0,0,0,.406-2.736c-.289-2.047-2.687-3.368-4.986-3.837s-4.746-.4-6.943-1.155a9.39,9.39,0,0,1-6.136-7.366,13.67394,13.67394,0,0,1,2.327-9.171l.831,2.088a7.77124,7.77124,0,0,0,2.714-3.545,5.5,5.5,0,0,1,4.26,2.992c1.333.687,1.525-2.133,3-2.549a2.945,2.945,0,0,1,1.838.4c2.967,1.209,6.414.175,9.6-.495a41.22185,41.22185,0,0,1,16.771-.017c3.663.763,7.29,2.093,9.912,4.455a20.35,20.35,0,0,1,4.636,6.96c2.812,6.182,4.669,12.871,3.741,19.473a26.05108,26.05108,0,0,1-7.436,14.6c-2.123,2.137-9.05,9.591-12.848,8.321C891.38751,351.49449,897.84155,345.5595,892.21851,342.96248Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#2f2e41"/>
|
||||
<circle cx="321.97861" cy="266.45946" r="8" fill="#3f3d56"/>
|
||||
<path
|
||||
d="M521.30463,350.26524a4.492,4.492,0,0,1-2.1001-.52442l-81.95288-43.23437a4.5,4.5,0,0,1-1.74121-6.32471,181.66635,181.66635,0,0,1,40.991-45.9751c28.30152-22.43066,60.4939-33.68408,95.678-33.49512a151.88378,151.88378,0,0,1,39.064,5.28858l.50464.13672-29.927,93.541-.42114-.06347a66.68158,66.68158,0,0,0-8.13867-.72168c-30.45068-.85938-43.64649,19.876-47.90772,28.82959a4.41453,4.41453,0,0,1-2.62011,2.31005A4.52734,4.52734,0,0,1,521.30463,350.26524Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill={fillColor}/>
|
||||
<path d="M611.122,226.483l-21.15967,94.56a60.38421,60.38421,0,0,0-8.48-1.92l29.62988-92.64Z"
|
||||
transform="translate(-253.01352 -93.71349)" fill="#3f3d56"/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export default SvgLoading
|
||||
75
src/core/components/svgs/SvgLogin.jsx
Normal file
75
src/core/components/svgs/SvgLogin.jsx
Normal file
@@ -0,0 +1,75 @@
|
||||
import {useTheme} from "@mui/material";
|
||||
|
||||
const SvgLogin = ({width, height}) => {
|
||||
const theme = useTheme()
|
||||
const fillColor = theme.palette.primary.main
|
||||
|
||||
return (
|
||||
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" width={width} height={height}
|
||||
viewBox="0 0 869.99994 520.13854">
|
||||
<path
|
||||
d="M831.09242,704.18737c-11.13833-9.4118-17.90393-24.27967-16.12965-38.75366s12.76358-27.78,27.01831-30.85364,30.50415,5.43465,34.83378,19.3594c2.3828-26.84637,5.12854-54.81757,19.40179-77.67976,12.92407-20.70115,35.3088-35.51364,59.5688-38.16357s49.80265,7.35859,64.93272,26.50671,18.83461,46.98549,8.2379,68.96911c-7.80623,16.19456-22.188,28.24676-37.2566,38.05184a240.45181,240.45181,0,0,1-164.45376,35.97709Z"
|
||||
transform="translate(-165.00003 -189.93073)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M996.72788,546.00953a393.41394,393.41394,0,0,0-54.82622,54.44229,394.561,394.561,0,0,0-61.752,103.194c-1.112,2.72484,3.31272,3.911,4.4123,1.21642A392.34209,392.34209,0,0,1,999.96343,549.24507c2.28437-1.86015-.97-5.08035-3.23555-3.23554Z"
|
||||
transform="translate(-165.00003 -189.93073)" fill="#fff"/>
|
||||
<path
|
||||
d="M445.06712,701.63014c15.2985-12.92712,24.591-33.34815,22.15408-53.22817s-17.53079-38.15588-37.10966-42.37749-41.89745,7.46449-47.8442,26.59014c-3.27278-36.87349-7.04406-75.29195-26.64837-106.69317-17.75122-28.433-48.49666-48.778-81.81777-52.41768s-68.40395,10.107-89.18511,36.407-25.86934,64.53459-11.31476,94.72909c10.72185,22.24324,30.47528,38.79693,51.17195,52.26422,66.02954,42.9653,147.93912,60.88443,225.8773,49.41454"
|
||||
transform="translate(-165.00003 -189.93073)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M217.56676,484.37281a540.35491,540.35491,0,0,1,75.30383,74.77651A548.0761,548.0761,0,0,1,352.25665,647.04a545.835,545.835,0,0,1,25.43041,53.8463c1.52726,3.74257-4.55,5.37169-6.06031,1.67075a536.35952,536.35952,0,0,0-49.009-92.727A539.73411,539.73411,0,0,0,256.889,528.63168a538.44066,538.44066,0,0,0-43.76626-39.81484c-3.13759-2.55492,1.33232-6.97788,4.444-4.444Z"
|
||||
transform="translate(-165.00003 -189.93073)" fill="#fff"/>
|
||||
<path
|
||||
d="M789.5,708.93073h-365v-374.5c0-79.67773,64.82227-144.5,144.49976-144.5h76.00049c79.67749,0,144.49975,64.82227,144.49975,144.5Z"
|
||||
transform="translate(-165.00003 -189.93073)" fill="#f2f2f2"/>
|
||||
<path
|
||||
d="M713.5,708.93073h-289v-374.5a143.38177,143.38177,0,0,1,27.59571-84.94434c.66381-.90478,1.32592-1.79785,2.00878-2.68115a144.46633,144.46633,0,0,1,30.75415-29.85058c.65967-.48,1.322-.95166,1.99415-1.42334a144.15958,144.15958,0,0,1,31.47216-16.459c.66089-.25049,1.33374-.50146,2.00659-.74219a144.01979,144.01979,0,0,1,31.1084-7.33593c.65772-.08985,1.333-.16016,2.0083-.23047a146.28769,146.28769,0,0,1,31.10547,0c.67334.07031,1.34864.14062,2.01416.23144a143.995,143.995,0,0,1,31.10034,7.335c.6731.24073,1.346.4917,2.00879.74268a143.79947,143.79947,0,0,1,31.10645,16.21582c.67163.46143,1.344.93311,2.00635,1.40478a145.987,145.987,0,0,1,18.38354,15.564,144.305,144.305,0,0,1,12.72437,14.55078c.68066.88037,1.34277,1.77344,2.00537,2.67676A143.38227,143.38227,0,0,1,713.5,334.43073Z"
|
||||
transform="translate(-165.00003 -189.93073)" fill="#ccc"/>
|
||||
<circle cx="524.99994" cy="335.5" r="16" fill={fillColor}/>
|
||||
<polygon points="594.599 507.783 582.339 507.783 576.506 460.495 594.601 460.496 594.599 507.783"
|
||||
fill="#ffb8b8"/>
|
||||
<path
|
||||
d="M573.58165,504.27982h23.64384a0,0,0,0,1,0,0v14.88687a0,0,0,0,1,0,0H558.69478a0,0,0,0,1,0,0v0a14.88688,14.88688,0,0,1,14.88688-14.88688Z"
|
||||
fill="#2f2e41"/>
|
||||
<polygon points="655.599 507.783 643.339 507.783 637.506 460.495 655.601 460.496 655.599 507.783"
|
||||
fill="#ffb8b8"/>
|
||||
<path
|
||||
d="M634.58165,504.27982h23.64384a0,0,0,0,1,0,0v14.88687a0,0,0,0,1,0,0H619.69478a0,0,0,0,1,0,0v0a14.88688,14.88688,0,0,1,14.88688-14.88688Z"
|
||||
fill="#2f2e41"/>
|
||||
<path
|
||||
d="M698.09758,528.60035a10.74272,10.74272,0,0,1,4.51052-15.84307l41.67577-114.86667L764.791,409.082,717.20624,518.85271a10.80091,10.80091,0,0,1-19.10866,9.74764Z"
|
||||
transform="translate(-165.00003 -189.93073)" fill="#ffb8b8"/>
|
||||
<path
|
||||
d="M814.33644,550.1843a10.74269,10.74269,0,0,1-2.89305-16.21659L798.53263,412.4583l23.33776,1.06622L827.23606,533.045a10.80091,10.80091,0,0,1-12.89962,17.13934Z"
|
||||
transform="translate(-165.00003 -189.93073)" fill="#ffb8b8"/>
|
||||
<circle cx="612.1058" cy="162.12254" r="24.56103" fill="#ffb8b8"/>
|
||||
<path
|
||||
d="M814.17958,522.54937H740.13271l.08911-.57617c.13306-.86133,13.19678-86.439,3.56177-114.436a11.813,11.813,0,0,1,6.06933-14.5835h.00025c13.77173-6.48535,40.20752-14.47119,62.52,4.90918a28.23448,28.23448,0,0,1,9.45947,23.396Z"
|
||||
transform="translate(-165.00003 -189.93073)" fill={fillColor}/>
|
||||
<path d="M754.35439,448.1812,721.01772,441.418l15.62622-37.02978a13.99723,13.99723,0,0,1,27.10571,6.99755Z"
|
||||
transform="translate(-165.00003 -189.93073)" fill={fillColor}/>
|
||||
<path
|
||||
d="M797.05043,460.73882l-2.00415-45.94141c-1.51977-8.63623,3.42408-16.80029,11.02735-18.13476,7.60547-1.32959,15.03174,4.66016,16.55835,13.35986l7.533,42.92774Z"
|
||||
transform="translate(-165.00003 -189.93073)" fill={fillColor}/>
|
||||
<path
|
||||
d="M811.71606,517.04933c11.91455,45.37671,13.21436,103.0694,10,166l-16-2-29-120-16,122-18-1c-5.37744-66.02972-10.61328-122.71527-2-160Z"
|
||||
transform="translate(-165.00003 -189.93073)" fill="#2f2e41"/>
|
||||
<path
|
||||
d="M793.2891,371.03474c-4.582,4.88079-13.09131,2.26067-13.68835-4.40717a8.05467,8.05467,0,0,1,.01014-1.55569c.30826-2.95357,2.01461-5.63506,1.60587-8.7536a4.59046,4.59046,0,0,0-.84011-2.14892c-3.65124-4.88933-12.22227,2.18687-15.6682-2.23929-2.113-2.714.3708-6.98713-1.25065-10.02051-2.14006-4.00358-8.47881-2.0286-12.45388-4.22116-4.42275-2.43948-4.15822-9.22524-1.24686-13.35269,3.55052-5.03359,9.77572-7.71951,15.92336-8.10661s12.25292,1.27475,17.99229,3.51145c6.52109,2.54134,12.98768,6.05351,17.00067,11.78753,4.88021,6.97317,5.34986,16.34793,2.90917,24.50174C802.09785,360.98987,797.03077,367.04906,793.2891,371.03474Z"
|
||||
transform="translate(-165.00003 -189.93073)" fill="#2f2e41"/>
|
||||
<path
|
||||
d="M1004.98163,709.57417h-738.294a1.19069,1.19069,0,0,1,0-2.38137h738.294a1.19069,1.19069,0,0,1,0,2.38137Z"
|
||||
transform="translate(-165.00003 -189.93073)" fill="#3f3d56"/>
|
||||
<path
|
||||
d="M634,600.43073H504a6.46539,6.46539,0,0,1-6.5-6.41531V303.846a6.46539,6.46539,0,0,1,6.5-6.41531H634a6.46539,6.46539,0,0,1,6.5,6.41531V594.01542A6.46539,6.46539,0,0,1,634,600.43073Z"
|
||||
transform="translate(-165.00003 -189.93073)" fill="#fff"/>
|
||||
<rect x="332.49994" y="201.38965" width="143" height="2" fill="#ccc"/>
|
||||
<rect x="332.99994" y="315.5" width="143" height="2" fill="#ccc"/>
|
||||
<rect x="377.49994" y="107.5" width="2" height="304" fill="#ccc"/>
|
||||
<rect x="427.49994" y="107.5" width="2" height="304" fill="#ccc"/>
|
||||
</svg>
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
export default SvgLogin
|
||||
109
src/core/components/svgs/SvgRegister.jsx
Normal file
109
src/core/components/svgs/SvgRegister.jsx
Normal file
@@ -0,0 +1,109 @@
|
||||
import {useTheme} from "@mui/material";
|
||||
|
||||
const SvgRegister = ({width, height}) => {
|
||||
const theme = useTheme()
|
||||
const fillColor = theme.palette.primary.main
|
||||
|
||||
return (
|
||||
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" width={width} height={height}
|
||||
viewBox="0 0 839.79697 523.44409">
|
||||
<path
|
||||
d="M259.30182,695.092a50.79366,50.79366,0,0,0,13.58985,12.63c1.12011.71,2.27,1.38,3.43994,2h27.52978c-.32959-.66-.6499-1.33-.96-2a95.35442,95.35442,0,0,1,19.84033-109.34c-16.64013,5.14-32.02,15.16-42.08008,29.37a64.46989,64.46989,0,0,0-10.23,23,96.27579,96.27579,0,0,1,7.66993-48.41c-13.50977,10.99-24.03028,26.04-28.04,42.98C246.05182,662.272,248.96149,681.082,259.30182,695.092Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#f0f0f0"/>
|
||||
<path
|
||||
d="M1015.54573,469.26684H828.37712a4.35775,4.35775,0,0,1-4.35276-4.35276V349.13072a4.35775,4.35775,0,0,1,4.35276-4.35276h187.16861a4.35774,4.35774,0,0,1,4.35275,4.35276V464.91408A4.35774,4.35774,0,0,1,1015.54573,469.26684Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#fff"/>
|
||||
<path
|
||||
d="M1015.54573,469.26684H828.37712a4.35775,4.35775,0,0,1-4.35276-4.35276V349.13072a4.35775,4.35775,0,0,1,4.35276-4.35276h187.16861a4.35774,4.35774,0,0,1,4.35275,4.35276V464.91408A4.35774,4.35774,0,0,1,1015.54573,469.26684ZM828.37712,346.51906a2.61451,2.61451,0,0,0-2.61165,2.61166V464.91408a2.61451,2.61451,0,0,0,2.61165,2.61166h187.16861a2.61451,2.61451,0,0,0,2.61165-2.61166V349.13072a2.61451,2.61451,0,0,0-2.61165-2.61166Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#3f3d56"/>
|
||||
<path
|
||||
d="M978.54728,383.44633H865.37557a3.91748,3.91748,0,1,1,0-7.835H978.54728a3.91748,3.91748,0,0,1,0,7.835Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#ccc"/>
|
||||
<path
|
||||
d="M978.54728,410.43343H865.37557a3.91748,3.91748,0,1,1,0-7.835H978.54728a3.91748,3.91748,0,0,1,0,7.835Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#ccc"/>
|
||||
<circle cx="788.36325" cy="250.94409" r="14" fill={fillColor}/>
|
||||
<path
|
||||
d="M968.84939,432.6268V431.293h.39488v1.33382a4.25848,4.25848,0,0,1,1.61464.39489,2.372,2.372,0,0,1,.92139.768,1.79468,1.79468,0,0,1,.33346,1.0485,1.13131,1.13131,0,0,1-.25887.75466.801.801,0,0,1-.6362.30713.66792.66792,0,0,1-.49141-.20183.67875.67875,0,0,1-.20183-.50018.94972.94972,0,0,1,.079-.37733l.158-.33346a1.10866,1.10866,0,0,0,.079-.43876,1.03337,1.03337,0,0,0-.21061-.64483,1.27287,1.27287,0,0,0-.59671-.417,3.37919,3.37919,0,0,0-.78977-.158v4.8l.08776.05265a8.74061,8.74061,0,0,1,2.22011,1.67606,3.942,3.942,0,0,1,.67131,1.13653,3.48548,3.48548,0,0,1,.24131,1.25909,3.05619,3.05619,0,0,1-.42121,1.58831,2.85171,2.85171,0,0,1-1.16709,1.0969,4.92848,4.92848,0,0,1-1.63219.47386v1.43035h-.39488v-1.404a4.40491,4.40491,0,0,1-1.66728-.34223,3.15528,3.15528,0,0,1-1.347-.96527,2.18559,2.18559,0,0,1-.47825-1.3777,1.55743,1.55743,0,0,1,.30713-.97857.91445.91445,0,0,1,.74589-.39913.64469.64469,0,0,1,.66692.66549,1.30412,1.30412,0,0,1-.32469.72665,2.20278,2.20278,0,0,0-.24131.4028.89954.89954,0,0,0-.06582.35016,1.41757,1.41757,0,0,0,.31152.87978,1.98877,1.98877,0,0,0,.838.62587,3.08659,3.08659,0,0,0,1.18465.21032h.0702v-5.73019l-.50018-.28958q-.71079-.41229-1.08374-.68446a4.52619,4.52619,0,0,1-.6713-.59671,2.88251,2.88251,0,0,1-.781-1.98319,2.69087,2.69087,0,0,1,.33346-1.31175,2.61657,2.61657,0,0,1,.92139-.97857A3.75,3.75,0,0,1,968.84939,432.6268Zm0,.19306a2.71562,2.71562,0,0,0-.98721.21909,1.68175,1.68175,0,0,0-.734.70938,2.17061,2.17061,0,0,0-.27953,1.09463,2.22358,2.22358,0,0,0,.41059,1.305,2.6476,2.6476,0,0,0,.51109.552,9.52086,9.52086,0,0,0,.99173.64795l.08733.05265Zm.39488,11.89913a2.72113,2.72113,0,0,0,.66394-.1404,1.74956,1.74956,0,0,0,.48052-.2808,2.17254,2.17254,0,0,0,.61157-.85544,2.94766,2.94766,0,0,0,.22716-1.15408,3.62464,3.62464,0,0,0-1.98319-3.03621Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#fff"/>
|
||||
<path
|
||||
d="M888.04573,391.76684H700.87712a4.35775,4.35775,0,0,1-4.35276-4.35276V271.63072a4.35775,4.35775,0,0,1,4.35276-4.35276H888.04573a4.35774,4.35774,0,0,1,4.35275,4.35276V387.41408A4.35774,4.35774,0,0,1,888.04573,391.76684Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#fff"/>
|
||||
<path
|
||||
d="M888.04573,391.76684H700.87712a4.35775,4.35775,0,0,1-4.35276-4.35276V271.63072a4.35775,4.35775,0,0,1,4.35276-4.35276H888.04573a4.35774,4.35774,0,0,1,4.35275,4.35276V387.41408A4.35774,4.35774,0,0,1,888.04573,391.76684ZM700.87712,269.01906a2.61451,2.61451,0,0,0-2.61165,2.61166V387.41408a2.61451,2.61451,0,0,0,2.61165,2.61166H888.04573a2.61451,2.61451,0,0,0,2.61165-2.61166V271.63072a2.61451,2.61451,0,0,0-2.61165-2.61166Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#3f3d56"/>
|
||||
<path
|
||||
d="M851.04728,305.94633H737.87557a3.91748,3.91748,0,1,1,0-7.835H851.04728a3.91748,3.91748,0,0,1,0,7.835Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#ccc"/>
|
||||
<path
|
||||
d="M851.04728,332.93343H737.87557a3.91748,3.91748,0,1,1,0-7.835H851.04728a3.91748,3.91748,0,0,1,0,7.835Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#ccc"/>
|
||||
<circle cx="660.86325" cy="173.44409" r="14" fill={fillColor}/>
|
||||
<path
|
||||
d="M841.34939,355.1268V353.793h.39488v1.33382a4.25848,4.25848,0,0,1,1.61464.39489,2.372,2.372,0,0,1,.92139.768,1.79468,1.79468,0,0,1,.33346,1.0485,1.13131,1.13131,0,0,1-.25887.75466.801.801,0,0,1-.6362.30713.66792.66792,0,0,1-.49141-.20183.67875.67875,0,0,1-.20183-.50018.94972.94972,0,0,1,.079-.37733l.158-.33346a1.10866,1.10866,0,0,0,.079-.43876,1.03337,1.03337,0,0,0-.21061-.64483,1.27287,1.27287,0,0,0-.59671-.417,3.37919,3.37919,0,0,0-.78977-.158v4.8l.08776.05265a8.74061,8.74061,0,0,1,2.22011,1.67606,3.942,3.942,0,0,1,.67131,1.13653,3.48548,3.48548,0,0,1,.24131,1.25909,3.05619,3.05619,0,0,1-.42121,1.58831,2.85171,2.85171,0,0,1-1.16709,1.0969,4.92848,4.92848,0,0,1-1.63219.47386v1.43035h-.39488v-1.404a4.40491,4.40491,0,0,1-1.66728-.34223,3.15528,3.15528,0,0,1-1.347-.96527,2.18559,2.18559,0,0,1-.47825-1.3777,1.55743,1.55743,0,0,1,.30713-.97857.91445.91445,0,0,1,.74589-.39913.64469.64469,0,0,1,.66692.66549,1.30412,1.30412,0,0,1-.32469.72665,2.20278,2.20278,0,0,0-.24131.4028.89954.89954,0,0,0-.06582.35016,1.41757,1.41757,0,0,0,.31152.87978,1.98877,1.98877,0,0,0,.838.62587,3.08659,3.08659,0,0,0,1.18465.21032h.0702v-5.73019l-.50018-.28958q-.71079-.41229-1.08374-.68446a4.52619,4.52619,0,0,1-.6713-.59671,2.88251,2.88251,0,0,1-.781-1.98319,2.69087,2.69087,0,0,1,.33346-1.31175,2.61657,2.61657,0,0,1,.92139-.97857A3.75,3.75,0,0,1,841.34939,355.1268Zm0,.19306a2.71562,2.71562,0,0,0-.98721.21909,1.68175,1.68175,0,0,0-.734.70938,2.17061,2.17061,0,0,0-.27953,1.09463,2.22358,2.22358,0,0,0,.41059,1.305,2.6476,2.6476,0,0,0,.51109.552,9.52086,9.52086,0,0,0,.99173.64795l.08733.05265Zm.39488,11.89913a2.72113,2.72113,0,0,0,.66394-.1404,1.74956,1.74956,0,0,0,.48052-.2808,2.17254,2.17254,0,0,0,.61157-.85544,2.94766,2.94766,0,0,0,.22716-1.15408,3.62464,3.62464,0,0,0-1.98319-3.03621Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#fff"/>
|
||||
<path
|
||||
d="M500.04705,374.49034a11.18294,11.18294,0,0,0-11.92823,12.31914l-35.98248,16.86895,17.6119,10.78392L501.21773,396.79a11.24355,11.24355,0,0,0-1.17068-22.29968Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#ffb6b6"/>
|
||||
<polygon points="171.049 510.77 183.476 510.769 189.388 462.837 171.047 462.838 171.049 510.77"
|
||||
fill="#ffb6b6"/>
|
||||
<path
|
||||
d="M347.981,694.99057l24.47283-.001h.001a15.59684,15.59684,0,0,1,15.596,15.59575v.50681l-40.06908.00149Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#2f2e41"/>
|
||||
<polygon points="234.459 510.77 246.886 510.769 252.798 462.837 234.457 462.838 234.459 510.77"
|
||||
fill="#ffb6b6"/>
|
||||
<path
|
||||
d="M411.391,694.99057l24.47283-.001h.001a15.59684,15.59684,0,0,1,15.596,15.59575v.50681l-40.06908.00149Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#2f2e41"/>
|
||||
<polygon
|
||||
points="242.76 262.159 249.067 275.738 260.438 397.176 251.599 501.554 230.926 501.554 206.532 337.03 195.074 497.764 167.18 496.638 161.825 278.718 242.76 262.159"
|
||||
fill="#2f2e41"/>
|
||||
<path
|
||||
d="M322.35011,338.37232l26.14948-10.63882,36.90884,2.07,32.81286,11.95777L429.16882,464.016c-28.5463,15.58821-57.46265,19.84291-86.88214,8.69662l-27.30385-79.62774Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#e4e4e4"/>
|
||||
<path
|
||||
d="M408.01258,344.99321l11.60412-3.232s8.777-5.70687,11.66475,11.25755,17.74674,43.35179,17.74674,43.35179l25.43689-13.55623,11.77684,25.71876-40.17082,24.3336-42.30322-42.62435Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#e4e4e4"/>
|
||||
<path id="a80a6b0c-a21b-4eb6-b764-70793a425e46-43" data-name="Path 40"
|
||||
d="M344.36137,305.08309h0a26.60911,26.60911,0,1,1,48.69886-21.4616l.15213.352a26.61391,26.61391,0,1,1-48.86107,21.11392Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#ffb6b6"/>
|
||||
<path id="b51b91e7-03ed-46d5-9b2a-c48431fd2f0d-44" data-name="Path 72"
|
||||
d="M380.48666,280.72968c5.53288,1.00387,14.09526,4.48722,18.84719.40069a23.29107,23.29107,0,0,0-8.623-6.30727,5.31442,5.31442,0,0,1-1.78491-1.00876c-1.62011-1.63724-.36833-4.45837-1.10968-6.672a5.71717,5.71717,0,0,0-3.93656-3.24591c-1.64929-.49349-3.3776-.57358-4.99779-1.172-3.8341-1.441-6.55991-5.56482-10.49-6.68541-3.42422-.99049-6.86978.54889-9.825,2.3453s-5.87861,3.92779-9.33592,4.26872c-2.58351.23566-4.219,4.48522-6.81269,4.60972-5.43518.2644-5.13334-3.31789-5.53535,2.392-.232,3.4073-5.10057,10.18578-5.0215,13.62274.08048,2.25207-.31795,4.4826-.2537,6.74168a17.51461,17.51461,0,0,0,4.84751,11.51147c2.47446,2.54466,5.69295,4.261,7.77591,7.16149,1.08319,1.53982,1.83464,3.33723,3.09558,4.73049s3.39672,2.23181,4.80406,1.23711,1.43356-3.14743,2.13182-4.78553a5.23317,5.23317,0,0,1,5.20088-3.166,6.12882,6.12882,0,0,1,5.0008,4.08254c-.659-3.62008-2.39634-7.012-3.05657-10.63483s.20019-7.95066,3.31979-9.36513c1.33937-.62327,3.1487-.79073,3.68711-2.22693.32959-.86507.02807-1.88717.15511-2.8228C369.25528,281.1561,376.879,280.02172,380.48666,280.72968Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#2f2e41"/>
|
||||
<path
|
||||
d="M345.42185,471.2991a11.18295,11.18295,0,0,0-14.61214-8.97379l-24.26862-31.46958-6.70925,19.531,24.07449,26.88974a11.24355,11.24355,0,0,0,21.51552-5.97733Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#ffb6b6"/>
|
||||
<path
|
||||
d="M330.73254,344.30787l-8.38243-5.93555s-19.17686-1.09855-21.96661,14.64645l-35.16332,57.84515,43.59811,60.14755,21.13747-22.25082-26.671-31.1678L325.678,376.47733Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#e4e4e4"/>
|
||||
<path
|
||||
d="M534.95585,353.47372h-.43976V341.42666a6.9725,6.9725,0,0,0-6.9725-6.97251H502.02026a6.9725,6.9725,0,0,0-6.97252,6.97249v66.0911a6.97251,6.97251,0,0,0,6.9725,6.97252h25.52331a6.97251,6.97251,0,0,0,6.97253-6.97249V362.049h.43977Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#3f3d56"/>
|
||||
<path
|
||||
d="M527.8249,336.26815h-3.33163a2.47382,2.47382,0,0,1-2.29043,3.40813h-14.622a2.47384,2.47384,0,0,1-2.29043-3.40813h-3.11175a5.207,5.207,0,0,0-5.207,5.207v65.99413a5.207,5.207,0,0,0,5.207,5.207H527.8249a5.207,5.207,0,0,0,5.207-5.207h0V341.47514A5.207,5.207,0,0,0,527.8249,336.26815Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill={fillColor}/>
|
||||
<path
|
||||
d="M758.04573,312.76684H570.87712a4.35775,4.35775,0,0,1-4.35276-4.35276V192.63072a4.35775,4.35775,0,0,1,4.35276-4.35276H758.04573a4.35774,4.35774,0,0,1,4.35275,4.35276V308.41408A4.35774,4.35774,0,0,1,758.04573,312.76684Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#fff"/>
|
||||
<path
|
||||
d="M758.04573,312.76684H570.87712a4.35775,4.35775,0,0,1-4.35276-4.35276V192.63072a4.35775,4.35775,0,0,1,4.35276-4.35276H758.04573a4.35774,4.35774,0,0,1,4.35275,4.35276V308.41408A4.35774,4.35774,0,0,1,758.04573,312.76684ZM570.87712,190.01906a2.61451,2.61451,0,0,0-2.61165,2.61166V308.41408a2.61451,2.61451,0,0,0,2.61165,2.61166H758.04573a2.61451,2.61451,0,0,0,2.61165-2.61166V192.63072a2.61451,2.61451,0,0,0-2.61165-2.61166Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#3f3d56"/>
|
||||
<path
|
||||
d="M721.04728,226.94633H607.87557a3.91748,3.91748,0,1,1,0-7.835H721.04728a3.91748,3.91748,0,0,1,0,7.835Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#ccc"/>
|
||||
<path
|
||||
d="M721.04728,253.93343H607.87557a3.91748,3.91748,0,1,1,0-7.835H721.04728a3.91748,3.91748,0,0,1,0,7.835Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#ccc"/>
|
||||
<circle cx="530.86325" cy="94.44409" r="14" fill={fillColor}/>
|
||||
<path
|
||||
d="M711.34939,276.1268V274.793h.39488v1.33382a4.25848,4.25848,0,0,1,1.61464.39489,2.372,2.372,0,0,1,.92139.768,1.79468,1.79468,0,0,1,.33346,1.0485,1.13131,1.13131,0,0,1-.25887.75466.801.801,0,0,1-.6362.30713.66792.66792,0,0,1-.49141-.20183.67875.67875,0,0,1-.20183-.50018.94972.94972,0,0,1,.079-.37733l.158-.33346a1.10866,1.10866,0,0,0,.079-.43876,1.03337,1.03337,0,0,0-.21061-.64483,1.27287,1.27287,0,0,0-.59671-.417,3.37919,3.37919,0,0,0-.78977-.158v4.8l.08776.05265a8.74061,8.74061,0,0,1,2.22011,1.67606,3.942,3.942,0,0,1,.67131,1.13653,3.48548,3.48548,0,0,1,.24131,1.25909,3.05619,3.05619,0,0,1-.42121,1.58831,2.85171,2.85171,0,0,1-1.16709,1.0969,4.92848,4.92848,0,0,1-1.63219.47386v1.43035h-.39488v-1.404a4.40491,4.40491,0,0,1-1.66728-.34223,3.15528,3.15528,0,0,1-1.347-.96527,2.18559,2.18559,0,0,1-.47825-1.3777,1.55743,1.55743,0,0,1,.30713-.97857.91445.91445,0,0,1,.74589-.39913.64469.64469,0,0,1,.66692.66549,1.30412,1.30412,0,0,1-.32469.72665,2.20278,2.20278,0,0,0-.24131.4028.89954.89954,0,0,0-.06582.35016,1.41757,1.41757,0,0,0,.31152.87978,1.98877,1.98877,0,0,0,.838.62587,3.08659,3.08659,0,0,0,1.18465.21032h.0702v-5.73019l-.50018-.28958q-.71079-.41229-1.08374-.68446a4.52619,4.52619,0,0,1-.6713-.59671,2.88251,2.88251,0,0,1-.781-1.98319,2.69087,2.69087,0,0,1,.33346-1.31175,2.61657,2.61657,0,0,1,.92139-.97857A3.75,3.75,0,0,1,711.34939,276.1268Zm0,.19306a2.71562,2.71562,0,0,0-.98721.21909,1.68175,1.68175,0,0,0-.734.70938,2.17061,2.17061,0,0,0-.27953,1.09463,2.22358,2.22358,0,0,0,.41059,1.305,2.6476,2.6476,0,0,0,.51109.552,9.52086,9.52086,0,0,0,.99173.64795l.08733.05265Zm.39488,11.89913a2.72113,2.72113,0,0,0,.66394-.1404,1.74956,1.74956,0,0,0,.48052-.2808,2.17254,2.17254,0,0,0,.61157-.85544,2.94766,2.94766,0,0,0,.22716-1.15408,3.62464,3.62464,0,0,0-1.98319-3.03621Z"
|
||||
transform="translate(-180.10152 -188.27796)" fill="#fff"/>
|
||||
<path d="M562.10152,711.722h-381a1,1,0,0,1,0-2h381a1,1,0,0,1,0,2Z"
|
||||
transform="translate(-180.10152 -188.27796)"
|
||||
fill="#cacaca"/>
|
||||
</svg>
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
export default SvgRegister
|
||||
@@ -0,0 +1,17 @@
|
||||
const BASE_URL = process.env.NEXT_PUBLIC_BASE_URL + "/api";
|
||||
|
||||
// export const LOGIN_SEND_OTP_TOKEN = BASE_URL + "/login/send_otp";
|
||||
export const LOGIN = BASE_URL + "/login";
|
||||
// export const REGISTER_SEND_OTP_TOKEN = BASE_URL + "/register/send_otp";
|
||||
export const SEND_OTP_TOKEN = BASE_URL + "/otp";
|
||||
export const REGISTER = BASE_URL + "/register";
|
||||
export const USER_INFO = BASE_URL + "/profile/info";
|
||||
export const SHOW_LOAN_REQUEST_NAVGAN = BASE_URL + "/navgan/loan/index";
|
||||
export const SEND_LOAN_REQUEST_NAVGAN = BASE_URL + "/navgan/loan/store";
|
||||
export const SHOW_LOAN_REQUEST_WELFARE = BASE_URL + "/refahi/loan/index";
|
||||
export const SEND_LOAN_REQUEST_WELFARE = BASE_URL + "/refahi/loan/store";
|
||||
export const UPDATE_LOAN_REQUEST_WELFARE = BASE_URL + "/refahi/loan/update/";
|
||||
export const DETAILS_LOAN_REQUEST_WELFARE = BASE_URL + "/refahi/loan/details/";
|
||||
export const GET_PROVINCE_LIST = BASE_URL + "/provinces";
|
||||
|
||||
|
||||
|
||||
@@ -1,19 +1,3 @@
|
||||
import BorderColorIcon from "@mui/icons-material/BorderColor";
|
||||
import PasswordIcon from "@mui/icons-material/Password";
|
||||
|
||||
const headerProfileItems = [
|
||||
{
|
||||
key: 0,
|
||||
name: "header.edit_profile",
|
||||
route: "/dashboard/edit-profile",
|
||||
icon: <BorderColorIcon />,
|
||||
},
|
||||
{
|
||||
key: 1,
|
||||
name: "header.change_password",
|
||||
route: "/dashboard/change-password",
|
||||
icon: <PasswordIcon />,
|
||||
},
|
||||
];
|
||||
const headerProfileItems = [];
|
||||
|
||||
export default headerProfileItems;
|
||||
|
||||
@@ -3,29 +3,53 @@ import BookmarkAddedIcon from "@mui/icons-material/BookmarkAdded";
|
||||
import DataSaverOnIcon from "@mui/icons-material/DataSaverOn";
|
||||
|
||||
const sidebarMenu = [
|
||||
[
|
||||
{
|
||||
key: "sidebar.dashboard",
|
||||
type: "page",
|
||||
route: "/dashboard",
|
||||
icon: <SpaceDashboardIcon />,
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
key: "sidebar.loan-request",
|
||||
type: "page",
|
||||
route: "/dashboard/loan-request",
|
||||
icon: <DataSaverOnIcon />,
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
key: "sidebar.loan-follow-up",
|
||||
type: "page",
|
||||
route: "/dashboard/loan-follow-up",
|
||||
icon: <BookmarkAddedIcon />,
|
||||
selected: false,
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
key: "sidebar.dashboard",
|
||||
type: "page",
|
||||
route: "/dashboard",
|
||||
icon: <SpaceDashboardIcon/>,
|
||||
userType: 0,
|
||||
selected: false,
|
||||
permission_name: "all"
|
||||
},
|
||||
{
|
||||
key: "sidebar.add-request-loan",
|
||||
type: "page",
|
||||
route: "/dashboard/navgan/add-request-loan",
|
||||
icon: <DataSaverOnIcon/>,
|
||||
userType: 1,
|
||||
selected: false,
|
||||
permission_name: "can_request_a_new_loan"
|
||||
},
|
||||
{
|
||||
key: "sidebar.followUp-loan",
|
||||
type: "page",
|
||||
route: "/dashboard/navgan/followUp-loan",
|
||||
icon: <BookmarkAddedIcon/>,
|
||||
userType: 1,
|
||||
selected: false,
|
||||
permission_name: "all"
|
||||
},
|
||||
{
|
||||
key: "sidebar.add-request-loan",
|
||||
type: "page",
|
||||
route: "/dashboard/refahi/add-request-loan",
|
||||
icon: <DataSaverOnIcon/>,
|
||||
userType: 2,
|
||||
selected: false,
|
||||
permission_name: "can_request_a_new_loan"
|
||||
},
|
||||
{
|
||||
key: "sidebar.followUp-loan",
|
||||
type: "page",
|
||||
route: "/dashboard/refahi/followUp-loan",
|
||||
icon: <BookmarkAddedIcon/>,
|
||||
userType: 2,
|
||||
selected: false,
|
||||
permission_name: "all"
|
||||
},
|
||||
],
|
||||
];
|
||||
|
||||
export default sidebarMenu;
|
||||
|
||||
@@ -1,38 +1,38 @@
|
||||
import createCache from "@emotion/cache";
|
||||
import { prefixer } from "stylis";
|
||||
import {prefixer} from "stylis";
|
||||
import stylisRTLPlugin from "stylis-plugin-rtl";
|
||||
|
||||
const isBrowser = typeof document !== "undefined";
|
||||
|
||||
export const createEmotionCacheLtr = () => {
|
||||
let insertionPoint;
|
||||
let insertionPoint;
|
||||
|
||||
if (isBrowser) {
|
||||
const emotionInsertionPoint = document.querySelector(
|
||||
'meta[name="emotion-insertion-point"]'
|
||||
);
|
||||
insertionPoint = emotionInsertionPoint ?? undefined;
|
||||
}
|
||||
if (isBrowser) {
|
||||
const emotionInsertionPoint = document.querySelector(
|
||||
'meta[name="emotion-insertion-point"]'
|
||||
);
|
||||
insertionPoint = emotionInsertionPoint ?? undefined;
|
||||
}
|
||||
|
||||
return createCache({
|
||||
key: "mui-style",
|
||||
insertionPoint,
|
||||
});
|
||||
return createCache({
|
||||
key: "mui-style",
|
||||
insertionPoint,
|
||||
});
|
||||
};
|
||||
|
||||
export const createEmotionCacheRtl = () => {
|
||||
let insertionPoint;
|
||||
let insertionPoint;
|
||||
|
||||
if (isBrowser) {
|
||||
const emotionInsertionPoint = document.querySelector(
|
||||
'meta[name="emotion-insertion-point"]'
|
||||
);
|
||||
insertionPoint = emotionInsertionPoint ?? undefined;
|
||||
}
|
||||
if (isBrowser) {
|
||||
const emotionInsertionPoint = document.querySelector(
|
||||
'meta[name="emotion-insertion-point"]'
|
||||
);
|
||||
insertionPoint = emotionInsertionPoint ?? undefined;
|
||||
}
|
||||
|
||||
return createCache({
|
||||
key: "muirtl",
|
||||
stylisPlugins: [prefixer, stylisRTLPlugin],
|
||||
insertionPoint,
|
||||
});
|
||||
return createCache({
|
||||
key: "muirtl",
|
||||
stylisPlugins: [prefixer, stylisRTLPlugin],
|
||||
insertionPoint,
|
||||
});
|
||||
};
|
||||
|
||||
62
src/core/utils/errorHandler.js
Normal file
62
src/core/utils/errorHandler.js
Normal file
@@ -0,0 +1,62 @@
|
||||
import ErrorNotification from "@/core/components/notifications/ErrorNotification";
|
||||
import WarningNotification from "@/core/components/notifications/WarningNotification";
|
||||
import {toast} from "react-toastify";
|
||||
|
||||
export const errorSetting = (t, notification) => {
|
||||
//todo
|
||||
}
|
||||
|
||||
export const errorRequest = (t, notification) => {
|
||||
//todo
|
||||
}
|
||||
|
||||
export const errorResponse = (response, clearToken, t, notification) => {
|
||||
if (notification) toast.dismiss();
|
||||
if (isServerError(response.status)) {
|
||||
errorServer(response, t, notification)
|
||||
} else if (isClientError(response.status)) {
|
||||
errorClient(response, clearToken, t, notification)
|
||||
}
|
||||
}
|
||||
|
||||
const errorServer = (response, t, notification) => {
|
||||
if (notification) WarningNotification(t, response.status);
|
||||
}
|
||||
const errorClient = (response, clearToken, t, notification) => {
|
||||
switch (response.status) {
|
||||
case 401:
|
||||
clearToken()
|
||||
if (notification) ErrorNotification(t, response.status)
|
||||
break;
|
||||
case 422:
|
||||
if ('type' in response.data) {
|
||||
errorLogic(response, t, notification)
|
||||
break;
|
||||
}
|
||||
errorValidation(response, t, notification)
|
||||
break;
|
||||
case 429:
|
||||
if (notification) ErrorNotification(t, response.status)
|
||||
break
|
||||
default:
|
||||
if (notification) ErrorNotification(t, response.status)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
const isServerError = status => status >= 500 && status <= 599;
|
||||
const isClientError = status => status >= 400 && status <= 499;
|
||||
|
||||
const errorLogic = (response, t, notification) => {
|
||||
if (notification) ErrorNotification(t, response.status)
|
||||
}
|
||||
const errorValidation = (response, t, notification) => {
|
||||
if (notification) {
|
||||
const errorsMap = Object.keys(response.data.errors)
|
||||
const errorsArray = response.data.errors
|
||||
|
||||
errorsMap.map((item, index) => {
|
||||
ErrorNotification(t, response.status, errorsArray[item][0]);
|
||||
})
|
||||
}
|
||||
}
|
||||
9
src/core/utils/succesHandler.js
Normal file
9
src/core/utils/succesHandler.js
Normal file
@@ -0,0 +1,9 @@
|
||||
import SuccessNotification from "@/core/components/notifications/SuccessNotification";
|
||||
import {toast} from "react-toastify";
|
||||
|
||||
export const successRequest = (response, t, options) => {
|
||||
if (options.notification && options.success.notification.show) {
|
||||
toast.dismiss();
|
||||
SuccessNotification(t, response.status)
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user