- content_for :page_title do
  = t('settings.preferences')

%ul.quick-nav
  %li= link_to t('preferences.languages'), '#settings_languages'
  %li= link_to t('preferences.publishing'), '#settings_publishing'
  %li= link_to t('preferences.other'), '#settings_other'
  %li= link_to t('preferences.web'), '#settings_web'
  %li= link_to t('settings.notifications'), settings_notifications_path

= simple_form_for current_user, url: settings_preferences_path, html: { method: :put } do |f|
  = render 'shared/error_messages', object: current_user

  %hr#settings_publishing/

  .fields-group
    = f.input :setting_default_privacy, collection: Status.selectable_visibilities, wrapper: :with_floating_label, include_blank: false, label_method: lambda { |visibility| safe_join([I18n.t("statuses.visibilities.#{visibility}"), content_tag(:span, I18n.t("statuses.visibilities.#{visibility}_long"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'

  .fields-group
    .fields-row
      .fields-group.fields-row__column.fields-row__column-6
        = f.input :setting_max_public_history, collection: [1, 3, 6, 7, 14, 30, 60, 90, 180, 365, 730, 1095, 2190], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.lifespan.#{item}")]) }, selected: current_user.max_public_history
      .fields-group.fields-row__column.fields-row__column-6
        = f.input :setting_max_public_access, collection: [1, 3, 6, 7, 14, 30, 60, 90, 180, 365, 730, 1095, 2190], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.lifespan.#{item}")]) }, selected: current_user.max_public_access

  .fields-group
    .fields-row
      .fields-group.fields-row__column.fields-row__column-6
        = f.input :setting_roar_defederate, collection: [0, 1, 3, 6, 7, 14, 30, 60, 90, 180, 365, 730, 1095, 2190], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.lifespan.#{item}")]) }, selected: current_user.roar_defederate
        = f.input :setting_roar_defederate_old, as: :boolean, wrapper: :with_label

      .fields-group.fields-row__column.fields-row__column-6
        = f.input :setting_roar_lifespan, collection: [0, 1, 3, 6, 7, 14, 30, 60, 90, 180, 365, 730, 1095, 2190], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.lifespan.#{item}")]) }, selected: current_user.roar_lifespan
        = f.input :setting_roar_lifespan_old, as: :boolean, wrapper: :with_label

  .fields-group
    = f.input :setting_default_sensitive, as: :boolean, wrapper: :with_label
    = f.input :setting_default_local, as: :boolean, wrapper: :with_label
    = f.input :setting_always_local, as: :boolean, wrapper: :with_label
    = f.input :setting_hide_public_profile, as: :boolean, wrapper: :with_label
    = f.input :setting_hide_public_outbox, as: :boolean, wrapper: :with_label

  %hr/

  .fields-group
    = f.input :setting_default_content_type, collection: ['text/x-bbcode+markdown', 'text/markdown', 'text/x-bbcode', 'text/html', 'text/plain', 'text/console'], wrapper: :with_floating_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.defaults.setting_default_content_type_#{item.split('/')[1].gsub(/[+-]/, '_')}"), content_tag(:span, t("simple_form.hints.defaults.setting_default_content_type_#{item.split('/')[1].gsub(/[+-]/, '_')}_html"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'

  %hr/

  .fields-group
    = f.input :setting_delayed_roars, as: :boolean, wrapper: :with_label
    = f.input :setting_delayed_for, collection: [5, 10, 15, 30, 60, 120, 180, 300, 360, 600, 1800, 3600], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.delayed_for.#{item}")]) }, selected: current_user.delayed_for

  %hr/

  .fields-group
    = f.input :setting_boost_interval, as: :boolean, wrapper: :with_label
    = f.input :setting_boost_random, as: :boolean, wrapper: :with_label
    = f.input :setting_boost_interval_from, collection: [1, 2, 3, 4, 5, 6, 10, 15, 30, 60, 120, 180, 300, 360, 720, 1440], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.boost_interval.#{item}")]) }, selected: current_user.boost_interval_from
    = f.input :setting_boost_interval_to, collection: [1, 2, 3, 4, 5, 6, 10, 15, 30, 60, 120, 180, 300, 360, 720, 1440], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.boost_interval.#{item}")]) }, selected: current_user.boost_interval_to

  %hr#settings_other/

  .fields-group
    = f.input :filters_enabled, as: :boolean, wrapper: :with_label
    = f.input :invert_filters, as: :boolean, wrapper: :with_label
    = f.input :filter_timelines_only, as: :boolean, wrapper: :with_label
    = f.input :setting_filter_mentions, as: :boolean, wrapper: :with_label

  %hr/

  .fields-group
    = f.input :allow_unknown_follows, as: :boolean, wrapper: :with_label

  %hr/

  .fields-group
    = f.input :only_known, as: :boolean, wrapper: :with_label
    = f.input :hide_boosts, as: :boolean, wrapper: :with_label
    = f.input :media_only, as: :boolean, wrapper: :with_label
    = f.input :filter_undescribed, as: :boolean, wrapper: :with_label

  .fields-group
    = f.input :setting_rawr_federated, as: :boolean, wrapper: :with_label

  %hr/

  .fields-group
    = f.input :monsterfork_api, collection: [:vanilla, :basic, :full], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.monsterfork_api.#{item}")]) }, selected: current_user.monsterfork_api

  %hr/

  .fields-group
    = f.input :setting_hide_network, as: :boolean, wrapper: :with_label
    = f.input :setting_hide_interactions, as: :boolean, wrapper: :with_label
    = f.input :setting_hide_stats, as: :boolean, wrapper: :with_label
    = f.input :setting_show_application, as: :boolean, wrapper: :with_label
    = f.input :setting_noindex, as: :boolean, wrapper: :with_label

  - unless Setting.hide_followers_count
    .fields-group
      = f.input :setting_hide_followers_count, as: :boolean, wrapper: :with_label

  %hr#settings_web/

  .fields-group
    = f.input :setting_auto_play_gif, as: :boolean, wrapper: :with_label
    = f.input :setting_reduce_motion, as: :boolean, wrapper: :with_label
    = f.input :setting_system_font_ui, as: :boolean, wrapper: :with_label
    = f.input :setting_hide_captions, as: :boolean, wrapper: :with_label
    = f.input :setting_larger_menus, as: :boolean, wrapper: :with_label
    = f.input :setting_larger_buttons, as: :boolean, wrapper: :with_label
    = f.input :setting_larger_drawer, as: :boolean, wrapper: :with_label
    = f.input :setting_larger_emoji, as: :boolean, wrapper: :with_label
    = f.input :setting_show_cursor, as: :boolean, wrapper: :with_label
    = f.input :setting_force_lowercase, as: :boolean, wrapper: :with_label

  %hr/

  .fields-group
    = f.input :setting_hide_mascot, as: :boolean, wrapper: :with_label
    = f.input :setting_hide_replies_muted, as: :boolean, wrapper: :with_label
    = f.input :setting_hide_replies_blocked, as: :boolean, wrapper: :with_label
    = f.input :setting_hide_replies_blocker, as: :boolean, wrapper: :with_label
    = f.input :setting_hide_mntions_muted, as: :boolean, wrapper: :with_label
    = f.input :setting_hide_mntions_blocked, as: :boolean, wrapper: :with_label
    = f.input :setting_hide_mntions_blocker, as: :boolean, wrapper: :with_label
    = f.input :setting_hide_mntions_packm8, as: :boolean, wrapper: :with_label

  %hr/

  .fields-group
    = f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label
    = f.input :setting_advanced_layout, as: :boolean, wrapper: :with_label

  %hr/

  .fields-group
    = f.input :setting_unfollow_modal, as: :boolean, wrapper: :with_label
    = f.input :setting_boost_modal, as: :boolean, wrapper: :with_label
    = f.input :setting_favourite_modal, as: :boolean, wrapper: :with_label
    = f.input :setting_delete_modal, as: :boolean, wrapper: :with_label

  %hr/

  .fields-group
    = f.input :setting_display_media, collection: ['default', 'show_all', 'hide_all'], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.defaults.setting_display_media_#{item}"), content_tag(:span, t("simple_form.hints.defaults.setting_display_media_#{item}"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
    = f.input :setting_expand_spoilers, as: :boolean, wrapper: :with_label

  %hr/

  .fields-row#settings_languages
    .fields-group.fields-row__column.fields-row__column-6
      = f.input :locale, collection: I18n.available_locales, wrapper: :with_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, selected: I18n.locale
    .fields-group.fields-row__column.fields-row__column-6
      = f.input :setting_default_language, collection: [nil] + filterable_languages.sort, wrapper: :with_label, label_method: lambda { |locale| locale.nil? ? I18n.t('statuses.language_detection') : human_locale(locale) }, required: false, include_blank: false

  .fields-group
    = f.input :chosen_languages, collection: filterable_languages.sort, wrapper: :with_block_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'

  %hr/

  .actions
    = f.button :button, t('generic.save_changes'), type: :submit
