Files
jcoffey-dev 319ed76dbd
Crowdin / Upload translations / upload-translations (push) Skipped
Historical data migration test / test (14-alpine) (push) Canceled after 0s
Historical data migration test / test (15-alpine) (push) Canceled after 0s
Historical data migration test / test (16-alpine) (push) Canceled after 0s
Historical data migration test / test (17-alpine) (push) Canceled after 0s
Bundler Audit / security (push) Canceled after 0s
Haml Linting / lint (push) Canceled after 0s
JavaScript Linting / lint (push) Canceled after 0s
Ruby Linting / lint (push) Canceled after 0s
JavaScript Testing / test (push) Canceled after 0s
Ruby Testing / build (production) (push) Canceled after 0s
Ruby Testing / test (.ruby-version) (push) Canceled after 0s
Ruby Testing / test (3.3) (push) Canceled after 0s
Ruby Testing / test (3.4) (push) Canceled after 0s
Ruby Testing / End to End testing (.ruby-version) (push) Canceled after 0s
Ruby Testing / End to End testing (3.3) (push) Canceled after 0s
Ruby Testing / End to End testing (3.4) (push) Canceled after 0s
Ruby Testing / Elastic Search integration testing (.ruby-version, docker.elastic.co/elasticsearch/elasticsearch:7.17.29) (push) Canceled after 0s
Check i18n / check-i18n (push) Canceled after 0s
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (javascript) (push) Canceled after 0s
CodeQL / Analyze (ruby) (push) Canceled after 0s
Ruby Testing / Elastic Search integration testing (.ruby-version, opensearchproject/opensearch:2) (push) Canceled after 0s
Ruby Testing / Elastic Search integration testing (3.3, docker.elastic.co/elasticsearch/elasticsearch:7.17.29) (push) Canceled after 0s
Ruby Testing / Elastic Search integration testing (3.4, docker.elastic.co/elasticsearch/elasticsearch:7.17.29) (push) Canceled after 0s
Check formatting / lint (push) Canceled after 0s
CSS Linting / lint (push) Canceled after 0s
Ruby Testing / Elastic Search integration testing (.ruby-version, docker.elastic.co/elasticsearch/elasticsearch:8.19.2) (push) Canceled after 0s
Chromatic / Check for relevant changes (push) Canceled after 0s
Chromatic / Run Chromatic (push) Canceled after 0s
Import Mastodon v4.7.3
Snapshot of upstream tag v4.7.3 (commit 8ff11c2bb7b9f0714e947b10fa3629c6542c7121) from
https://github.com/mastodon/mastodon, unmodified.
2026-10-05 22:03:13 -07:00

143 lines
7.0 KiB
Plaintext

- content_for :page_title do
= t('settings.appearance')
- content_for :heading_actions do
= button_tag t('generic.save_changes'), class: 'button', form: 'edit_user'
= simple_form_for current_user, url: settings_preferences_appearance_path, html: { id: :edit_user } do |f|
.fields-row
.fields-group.fields-row__column.fields-row__column-6
= f.input :locale,
collection: ui_languages,
hint: false,
include_blank: false,
label_method: ->(locale) { native_locale_name(locale) },
selected: I18n.locale,
wrapper: :with_label
.fields-group.fields-row__column.fields-row__column-6
= f.input :time_zone,
collection: time_zone_options,
hint: false,
selected: current_user.time_zone || Time.zone.tzinfo.name,
wrapper: :with_label
.fields-group
= f.simple_fields_for :settings, current_user.settings do |ff|
- if Themes.instance.names.size > 1
= ff.input :theme,
collection: Themes.instance.names,
hint: false,
include_blank: false,
label_method: ->(theme) { I18n.t("themes.#{theme}", default: theme) },
label: I18n.t('simple_form.labels.defaults.setting_theme'),
wrapper: :with_label,
required: false
.input.horizontal-options
= ff.input :'web.color_scheme',
as: :radio_buttons,
collection: user_settings_collection('web.color_scheme'),
include_blank: false,
label: I18n.t('simple_form.labels.defaults.setting_color_scheme'),
label_method: ->(contrast) { I18n.t("color_scheme.#{contrast}", default: contrast) },
wrapper: :with_label,
required: false
.input.horizontal-options
= ff.input :'web.contrast',
as: :radio_buttons,
collection: user_settings_collection('web.contrast'),
include_blank: false,
label: I18n.t('simple_form.labels.defaults.setting_contrast'),
label_method: ->(contrast) { I18n.t("contrast.#{contrast}", default: contrast) },
wrapper: :with_label,
required: false
.input.horizontal-options
= ff.input :'web.emoji_style',
as: :radio_buttons,
collection: user_settings_collection('web.emoji_style'),
include_blank: false,
hint: I18n.t('simple_form.hints.defaults.setting_emoji_style'),
label: I18n.t('simple_form.labels.defaults.setting_emoji_style'),
label_method: ->(emoji_style) { I18n.t("emoji_styles.#{emoji_style}", default: emoji_style) },
wrapper: :with_label,
required: false
- unless I18n.locale == :en
.flash-message.translation-prompt
= t 'appearance.localization.body'
= link_to t('appearance.localization.guide_link_text'), t('appearance.localization.guide_link'), target: '_blank', rel: 'noopener'
= f.simple_fields_for :settings, current_user.settings do |ff|
%h2= t 'appearance.animations_and_accessibility'
.fields-group
= ff.input :'web.use_pending_items',
hint: I18n.t('simple_form.hints.defaults.setting_use_pending_items'),
label: I18n.t('simple_form.labels.defaults.setting_use_pending_items'),
wrapper: :with_label
.fields-group
= ff.input :'web.auto_play', wrapper: :with_label, recommended: true, label: I18n.t('simple_form.labels.defaults.setting_auto_play_gif')
= ff.input :'web.reduce_motion', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_reduce_motion')
= ff.input :'web.disable_swiping', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_disable_swiping')
= ff.input :'web.disable_hover_cards', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_disable_hover_cards')
= ff.input :'web.use_system_font', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_system_font_ui')
= ff.input :'web.use_system_scrollbars', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_system_scrollbars_ui')
%h2= t 'appearance.discovery'
.fields-group
= ff.input :'web.trends', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_trends')
%h2= t 'appearance.boosting_preferences'
.fields-group
= ff.input :'web.reblog_modal',
hint: I18n.t('simple_form.hints.defaults.setting_boost_modal'),
label: I18n.t('simple_form.labels.defaults.setting_boost_modal'),
wrapper: :with_label
.fields-group
= ff.input :'web.quick_boosting',
hint: t('simple_form.hints.defaults.setting_quick_boosting_html', boost_icon: material_symbol('repeat'), options_icon: material_symbol('more_horiz')),
label: I18n.t('simple_form.labels.defaults.setting_quick_boosting'),
wrapper: :with_label
.flash-message.hidden-on-touch-devices= t('appearance.boosting_preferences_info_html', icon: material_symbol('repeat'))
%h2= t 'appearance.sensitive_content'
.fields-group
= ff.input :'web.display_media',
as: :radio_buttons,
collection_wrapper_tag: 'ul',
collection: user_settings_collection('web.display_media'),
hint: false,
item_wrapper_tag: 'li',
label_method: ->(item) { t("simple_form.hints.defaults.setting_display_media_#{item}") },
label: I18n.t('simple_form.labels.defaults.setting_display_media'),
wrapper: :with_floating_label,
required: false
.fields-group
= ff.input :'web.use_blurhash',
hint: I18n.t('simple_form.hints.defaults.setting_use_blurhash'),
label: I18n.t('simple_form.labels.defaults.setting_use_blurhash'),
wrapper: :with_label
.fields-group
= ff.input :'web.expand_content_warnings', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_expand_spoilers')
%h2= t 'appearance.advanced_settings'
.fields-group
= ff.input :'web.advanced_layout',
hint: I18n.t('simple_form.hints.defaults.setting_advanced_layout'),
label: I18n.t('simple_form.labels.defaults.setting_advanced_layout'),
wrapper: :with_label
.fields-group
= ff.input :'web.delete_modal', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_delete_modal')
= ff.input :'web.missing_alt_text_modal', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_missing_alt_text_modal')
.actions
= f.button :button, t('generic.save_changes'), type: :submit