diff --git a/.bundler-audit.yml b/.bundler-audit.yml new file mode 100644 index 00000000000..0671df390fe --- /dev/null +++ b/.bundler-audit.yml @@ -0,0 +1,6 @@ +--- +ignore: + # devise-two-factor advisory about brute-forcing TOTP + # We have rate-limits on authentication endpoints in place (including second + # factor verification) since Mastodon v3.2.0 + - CVE-2024-0227 diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 21ee078d603..88979723c33 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -70,7 +70,7 @@ services: hard: -1 libretranslate: - image: libretranslate/libretranslate:v1.5.3 + image: libretranslate/libretranslate:v1.5.4 restart: unless-stopped volumes: - lt-data:/home/libretranslate/.local diff --git a/.rubocop.yml b/.rubocop.yml index a06621d6603..fcdc4e06cbd 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -109,9 +109,10 @@ Rails/LexicallyScopedActionFilter: Exclude: - 'app/controllers/auth/*' +# Reason: There are appropriate times to use these features +# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsskipsmodelvalidations Rails/SkipsModelValidations: - Exclude: - - 'db/*migrate/**/*' + Enabled: false # Reason: We want to preserve the ability to migrate from arbitrary old versions, # and cannot guarantee that every installation has run every migration as they upgrade. diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index b9874e1202f..510f4a4a7cd 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -80,41 +80,6 @@ Rails/RakeEnvironment: - 'lib/tasks/repo.rake' - 'lib/tasks/statistics.rake' -# Configuration parameters: ForbiddenMethods, AllowedMethods. -# ForbiddenMethods: decrement!, decrement_counter, increment!, increment_counter, insert, insert!, insert_all, insert_all!, toggle!, touch, touch_all, update_all, update_attribute, update_column, update_columns, update_counters, upsert, upsert_all -Rails/SkipsModelValidations: - Exclude: - - 'app/controllers/admin/invites_controller.rb' - - 'app/controllers/concerns/session_tracking_concern.rb' - - 'app/models/concerns/account/merging.rb' - - 'app/models/concerns/expireable.rb' - - 'app/models/status.rb' - - 'app/models/trends/links.rb' - - 'app/models/trends/preview_card_batch.rb' - - 'app/models/trends/preview_card_provider_batch.rb' - - 'app/models/trends/status_batch.rb' - - 'app/models/trends/statuses.rb' - - 'app/models/trends/tag_batch.rb' - - 'app/models/trends/tags.rb' - - 'app/models/user.rb' - - 'app/services/activitypub/process_status_update_service.rb' - - 'app/services/approve_appeal_service.rb' - - 'app/services/block_domain_service.rb' - - 'app/services/delete_account_service.rb' - - 'app/services/process_mentions_service.rb' - - 'app/services/unallow_domain_service.rb' - - 'app/services/unblock_domain_service.rb' - - 'app/services/update_status_service.rb' - - 'app/workers/activitypub/post_upgrade_worker.rb' - - 'app/workers/move_worker.rb' - - 'app/workers/scheduler/ip_cleanup_scheduler.rb' - - 'app/workers/scheduler/scheduled_statuses_scheduler.rb' - - 'lib/mastodon/cli/accounts.rb' - - 'lib/mastodon/cli/maintenance.rb' - - 'spec/lib/activitypub/activity/follow_spec.rb' - - 'spec/services/follow_service_spec.rb' - - 'spec/services/update_account_service_spec.rb' - # Configuration parameters: Include. # Include: app/models/**/*.rb Rails/UniqueValidationWithoutIndex: diff --git a/Gemfile b/Gemfile index 4176ddb8de4..4dc200df249 100644 --- a/Gemfile +++ b/Gemfile @@ -39,8 +39,7 @@ end gem 'net-ldap', '~> 0.18' -# TODO: Point back at released omniauth-cas gem when new version is released -gem 'omniauth-cas', github: 'dlindahl/omniauth-cas', ref: '9d9d3a91b316c55d49ab6e621977f2067010c5bf' +gem 'omniauth-cas', '~> 3.0.0.beta.1' gem 'omniauth-saml', '~> 2.0' gem 'omniauth_openid_connect', '~> 0.6.1' gem 'omniauth', '~> 2.0' diff --git a/Gemfile.lock b/Gemfile.lock index ccb9f4b1155..290702eea99 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,16 +7,6 @@ GIT hkdf (~> 0.2) jwt (~> 2.0) -GIT - remote: https://github.com/dlindahl/omniauth-cas.git - revision: 9d9d3a91b316c55d49ab6e621977f2067010c5bf - ref: 9d9d3a91b316c55d49ab6e621977f2067010c5bf - specs: - omniauth-cas (3.0.0) - addressable (~> 2.8) - nokogiri (~> 1.12) - omniauth (~> 2.1) - GIT remote: https://github.com/jhawthorn/nsa.git revision: e020fcc3a54d993ab45b7194d89ab720296c111b @@ -165,7 +155,7 @@ GEM binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) blurhash (0.1.7) - bootsnap (1.17.0) + bootsnap (1.17.1) msgpack (~> 1.2) brakeman (6.1.1) racc @@ -267,7 +257,7 @@ GEM tzinfo excon (0.109.0) fabrication (2.31.0) - faker (3.2.2) + faker (3.2.3) i18n (>= 1.8.11, < 2) faraday (1.10.3) faraday-em_http (~> 1.0) @@ -484,6 +474,10 @@ GEM hashie (>= 3.4.6) rack (>= 2.2.3) rack-protection + omniauth-cas (3.0.0.beta.1) + addressable (~> 2.8) + nokogiri (~> 1.12) + omniauth (~> 2.1) omniauth-rails_csrf_protection (1.0.1) actionpack (>= 4.2) omniauth (~> 2.0) @@ -894,7 +888,7 @@ DEPENDENCIES nsa! oj (~> 3.14) omniauth (~> 2.0) - omniauth-cas! + omniauth-cas (~> 3.0.0.beta.1) omniauth-rails_csrf_protection (~> 1.0) omniauth-saml (~> 2.0) omniauth_openid_connect (~> 0.6.1) diff --git a/app/controllers/api/v1/markers_controller.rb b/app/controllers/api/v1/markers_controller.rb index f8dfba8a941..8eaf7767df8 100644 --- a/app/controllers/api/v1/markers_controller.rb +++ b/app/controllers/api/v1/markers_controller.rb @@ -19,7 +19,7 @@ class Api::V1::MarkersController < Api::BaseController @markers = {} resource_params.each_pair do |timeline, timeline_params| - @markers[timeline] = current_user.markers.find_or_initialize_by(timeline: timeline) + @markers[timeline] = current_user.markers.find_or_create_by(timeline: timeline) @markers[timeline].update!(timeline_params) end end diff --git a/app/javascript/mastodon/components/attachment_list.jsx b/app/javascript/mastodon/components/attachment_list.jsx index e912d515cd5..59d31a3038d 100644 --- a/app/javascript/mastodon/components/attachment_list.jsx +++ b/app/javascript/mastodon/components/attachment_list.jsx @@ -7,8 +7,7 @@ import classNames from 'classnames'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import LinkIcon from '@material-symbols/svg-600/outlined/link.svg?react'; - +import LinkIcon from 'mastodon/../material-icons/400-24px/link.svg?react'; import { Icon } from 'mastodon/components/icon'; const filename = url => url.split('/').pop().split('#')[0].split('?')[0]; diff --git a/app/javascript/mastodon/components/badge.jsx b/app/javascript/mastodon/components/badge.jsx index e7164217109..bac80965665 100644 --- a/app/javascript/mastodon/components/badge.jsx +++ b/app/javascript/mastodon/components/badge.jsx @@ -2,9 +2,9 @@ import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; -import GroupsIcon from '@material-symbols/svg-600/outlined/group.svg?react'; -import PersonIcon from '@material-symbols/svg-600/outlined/person.svg?react'; -import SmartToyIcon from '@material-symbols/svg-600/outlined/smart_toy.svg?react'; +import GroupsIcon from 'mastodon/../material-icons/400-24px/group.svg?react'; +import PersonIcon from 'mastodon/../material-icons/400-24px/person.svg?react'; +import SmartToyIcon from 'mastodon/../material-icons/400-24px/smart_toy.svg?react'; export const Badge = ({ icon, label, domain }) => ( diff --git a/app/javascript/mastodon/components/column_back_button.tsx b/app/javascript/mastodon/components/column_back_button.tsx index 7a23c4e1080..f803f862893 100644 --- a/app/javascript/mastodon/components/column_back_button.tsx +++ b/app/javascript/mastodon/components/column_back_button.tsx @@ -2,8 +2,7 @@ import { useCallback } from 'react'; import { FormattedMessage } from 'react-intl'; -import ArrowBackIcon from '@material-symbols/svg-600/outlined/arrow_back.svg?react'; - +import ArrowBackIcon from 'mastodon/../material-icons/400-24px/arrow_back.svg?react'; import { Icon } from 'mastodon/components/icon'; import { ButtonInTabsBar } from 'mastodon/features/ui/util/columns_context'; diff --git a/app/javascript/mastodon/components/column_header.jsx b/app/javascript/mastodon/components/column_header.jsx index a0ce10bf17f..3e53902de63 100644 --- a/app/javascript/mastodon/components/column_header.jsx +++ b/app/javascript/mastodon/components/column_header.jsx @@ -6,13 +6,12 @@ import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; import classNames from 'classnames'; import { withRouter } from 'react-router-dom'; -import AddIcon from '@material-symbols/svg-600/outlined/add.svg?react'; -import ArrowBackIcon from '@material-symbols/svg-600/outlined/arrow_back.svg?react'; -import ChevronLeftIcon from '@material-symbols/svg-600/outlined/chevron_left.svg?react'; -import ChevronRightIcon from '@material-symbols/svg-600/outlined/chevron_right.svg?react'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; -import TuneIcon from '@material-symbols/svg-600/outlined/tune.svg?react'; - +import AddIcon from 'mastodon/../material-icons/400-24px/add.svg?react'; +import ArrowBackIcon from 'mastodon/../material-icons/400-24px/arrow_back.svg?react'; +import ChevronLeftIcon from 'mastodon/../material-icons/400-24px/chevron_left.svg?react'; +import ChevronRightIcon from 'mastodon/../material-icons/400-24px/chevron_right.svg?react'; +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; +import TuneIcon from 'mastodon/../material-icons/400-24px/tune.svg?react'; import { Icon } from 'mastodon/components/icon'; import { ButtonInTabsBar, useColumnsContext } from 'mastodon/features/ui/util/columns_context'; import { WithRouterPropTypes } from 'mastodon/utils/react_router'; diff --git a/app/javascript/mastodon/components/copy_icon_button.jsx b/app/javascript/mastodon/components/copy_icon_button.jsx index 0c250a7632a..c5216e8f800 100644 --- a/app/javascript/mastodon/components/copy_icon_button.jsx +++ b/app/javascript/mastodon/components/copy_icon_button.jsx @@ -7,8 +7,7 @@ import classNames from 'classnames'; import { useDispatch } from 'react-redux'; -import ContentCopyIcon from '@material-symbols/svg-600/outlined/content_copy.svg?react'; - +import ContentCopyIcon from 'mastodon/../material-icons/400-24px/content_copy.svg?react'; import { showAlert } from 'mastodon/actions/alerts'; import { IconButton } from 'mastodon/components/icon_button'; diff --git a/app/javascript/mastodon/components/dismissable_banner.tsx b/app/javascript/mastodon/components/dismissable_banner.tsx index c35fec983dd..d3bc28b9b96 100644 --- a/app/javascript/mastodon/components/dismissable_banner.tsx +++ b/app/javascript/mastodon/components/dismissable_banner.tsx @@ -8,8 +8,7 @@ import { useCallback, useState, useEffect } from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; - +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; import { changeSetting } from 'mastodon/actions/settings'; import { bannerSettings } from 'mastodon/settings'; import { useAppSelector, useAppDispatch } from 'mastodon/store'; diff --git a/app/javascript/mastodon/components/domain.tsx b/app/javascript/mastodon/components/domain.tsx index 26cc77604e4..637c286ce47 100644 --- a/app/javascript/mastodon/components/domain.tsx +++ b/app/javascript/mastodon/components/domain.tsx @@ -2,7 +2,7 @@ import { useCallback } from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import LockOpenIcon from '@material-symbols/svg-600/outlined/lock_open.svg?react'; +import LockOpenIcon from 'mastodon/../material-icons/400-24px/lock_open.svg?react'; import { IconButton } from './icon_button'; diff --git a/app/javascript/mastodon/components/dropdown_menu.jsx b/app/javascript/mastodon/components/dropdown_menu.jsx index 1cb5c03150b..a8fcfd10978 100644 --- a/app/javascript/mastodon/components/dropdown_menu.jsx +++ b/app/javascript/mastodon/components/dropdown_menu.jsx @@ -6,10 +6,10 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; import { supportsPassiveEvents } from 'detect-passive-events'; import Overlay from 'react-overlays/Overlay'; +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; import { CircularProgress } from 'mastodon/components/circular_progress'; import { WithRouterPropTypes } from 'mastodon/utils/react_router'; diff --git a/app/javascript/mastodon/components/edited_timestamp/index.jsx b/app/javascript/mastodon/components/edited_timestamp/index.jsx index de4c641cfb4..7497ab9922d 100644 --- a/app/javascript/mastodon/components/edited_timestamp/index.jsx +++ b/app/javascript/mastodon/components/edited_timestamp/index.jsx @@ -5,8 +5,7 @@ import { FormattedMessage, injectIntl } from 'react-intl'; import { connect } from 'react-redux'; -import ArrowDropDownIcon from '@material-symbols/svg-600/outlined/arrow_drop_down.svg?react'; - +import ArrowDropDownIcon from 'mastodon/../material-icons/400-24px/arrow_drop_down.svg?react'; import { openModal } from 'mastodon/actions/modal'; import { Icon } from 'mastodon/components/icon'; import InlineAccount from 'mastodon/components/inline_account'; diff --git a/app/javascript/mastodon/components/icon.tsx b/app/javascript/mastodon/components/icon.tsx index 4b17f063b99..948492d91c2 100644 --- a/app/javascript/mastodon/components/icon.tsx +++ b/app/javascript/mastodon/components/icon.tsx @@ -1,7 +1,6 @@ import classNames from 'classnames'; -import CheckBoxOutlineBlankIcon from '@material-symbols/svg-600/outlined/check_box_outline_blank.svg?react'; - +import CheckBoxOutlineBlankIcon from 'mastodon/../material-icons/400-24px/check_box_outline_blank.svg?react'; import { isProduction } from 'mastodon/utils/environment'; interface SVGPropsWithTitle extends React.SVGProps { diff --git a/app/javascript/mastodon/components/load_gap.tsx b/app/javascript/mastodon/components/load_gap.tsx index ea97c3eb570..2a233b6a1cd 100644 --- a/app/javascript/mastodon/components/load_gap.tsx +++ b/app/javascript/mastodon/components/load_gap.tsx @@ -2,8 +2,7 @@ import { useCallback } from 'react'; import { useIntl, defineMessages } from 'react-intl'; -import MoreHorizIcon from '@material-symbols/svg-600/outlined/more_horiz.svg?react'; - +import MoreHorizIcon from 'mastodon/../material-icons/400-24px/more_horiz.svg?react'; import { Icon } from 'mastodon/components/icon'; const messages = defineMessages({ diff --git a/app/javascript/mastodon/components/media_gallery.jsx b/app/javascript/mastodon/components/media_gallery.jsx index 72daeea5a09..c387bb86989 100644 --- a/app/javascript/mastodon/components/media_gallery.jsx +++ b/app/javascript/mastodon/components/media_gallery.jsx @@ -8,9 +8,9 @@ import classNames from 'classnames'; import { is } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import VisibilityOffIcon from '@material-symbols/svg-600/outlined/visibility_off.svg?react'; import { debounce } from 'lodash'; +import VisibilityOffIcon from 'mastodon/../material-icons/400-24px/visibility_off.svg?react'; import { Blurhash } from 'mastodon/components/blurhash'; import { autoPlayGif, displayMedia, useBlurhash } from '../initial_state'; diff --git a/app/javascript/mastodon/components/picture_in_picture_placeholder.jsx b/app/javascript/mastodon/components/picture_in_picture_placeholder.jsx index 3ce5ea5a74f..e8cfe6cb321 100644 --- a/app/javascript/mastodon/components/picture_in_picture_placeholder.jsx +++ b/app/javascript/mastodon/components/picture_in_picture_placeholder.jsx @@ -5,8 +5,7 @@ import { FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; -import CancelPresentationIcon from '@material-symbols/svg-600/outlined/cancel_presentation.svg?react'; - +import CancelPresentationIcon from 'mastodon/../material-icons/400-24px/cancel_presentation.svg?react'; import { removePictureInPicture } from 'mastodon/actions/picture_in_picture'; import { Icon } from 'mastodon/components/icon'; diff --git a/app/javascript/mastodon/components/poll.jsx b/app/javascript/mastodon/components/poll.jsx index b8f64464099..f85c47bb402 100644 --- a/app/javascript/mastodon/components/poll.jsx +++ b/app/javascript/mastodon/components/poll.jsx @@ -7,10 +7,10 @@ import classNames from 'classnames'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import CheckIcon from '@material-symbols/svg-600/outlined/check.svg?react'; import escapeTextContentForBrowser from 'escape-html'; import spring from 'react-motion/lib/spring'; +import CheckIcon from 'mastodon/../material-icons/400-24px/check.svg?react'; import { Icon } from 'mastodon/components/icon'; import emojify from 'mastodon/features/emoji/emoji'; import Motion from 'mastodon/features/ui/util/optional_motion'; diff --git a/app/javascript/mastodon/components/status.jsx b/app/javascript/mastodon/components/status.jsx index f1ea369610a..224c8baded3 100644 --- a/app/javascript/mastodon/components/status.jsx +++ b/app/javascript/mastodon/components/status.jsx @@ -7,12 +7,12 @@ import classNames from 'classnames'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import AlternateEmailIcon from '@material-symbols/svg-600/outlined/alternate_email.svg?react'; -import PushPinIcon from '@material-symbols/svg-600/outlined/push_pin.svg?react'; -import RepeatIcon from '@material-symbols/svg-600/outlined/repeat.svg?react'; -import ReplyIcon from '@material-symbols/svg-600/outlined/reply.svg?react'; import { HotKeys } from 'react-hotkeys'; +import AlternateEmailIcon from 'mastodon/../material-icons/400-24px/alternate_email.svg?react'; +import PushPinIcon from 'mastodon/../material-icons/400-24px/push_pin.svg?react'; +import RepeatIcon from 'mastodon/../material-icons/400-24px/repeat.svg?react'; +import ReplyIcon from 'mastodon/../material-icons/400-24px/reply.svg?react'; import { Icon } from 'mastodon/components/icon'; import PictureInPicturePlaceholder from 'mastodon/components/picture_in_picture_placeholder'; import { withOptionalRouter, WithOptionalRouterPropTypes } from 'mastodon/utils/react_router'; diff --git a/app/javascript/mastodon/components/status_action_bar.jsx b/app/javascript/mastodon/components/status_action_bar.jsx index 536ea350ae9..e1e0164642f 100644 --- a/app/javascript/mastodon/components/status_action_bar.jsx +++ b/app/javascript/mastodon/components/status_action_bar.jsx @@ -9,16 +9,15 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import BookmarkIcon from '@material-symbols/svg-600/outlined/bookmark-fill.svg'; -import BookmarkBorderIcon from '@material-symbols/svg-600/outlined/bookmark.svg?react'; -import MoreHorizIcon from '@material-symbols/svg-600/outlined/more_horiz.svg?react'; -import RepeatIcon from '@material-symbols/svg-600/outlined/repeat.svg?react'; -import ReplyIcon from '@material-symbols/svg-600/outlined/reply.svg?react'; -import ReplyAllIcon from '@material-symbols/svg-600/outlined/reply_all.svg?react'; -import StarIcon from '@material-symbols/svg-600/outlined/star-fill.svg?react'; -import StarBorderIcon from '@material-symbols/svg-600/outlined/star.svg?react'; -import VisibilityIcon from '@material-symbols/svg-600/outlined/visibility.svg?react'; - +import BookmarkIcon from 'mastodon/../material-icons/400-24px/bookmark-fill.svg'; +import BookmarkBorderIcon from 'mastodon/../material-icons/400-24px/bookmark.svg?react'; +import MoreHorizIcon from 'mastodon/../material-icons/400-24px/more_horiz.svg?react'; +import RepeatIcon from 'mastodon/../material-icons/400-24px/repeat.svg?react'; +import ReplyIcon from 'mastodon/../material-icons/400-24px/reply.svg?react'; +import ReplyAllIcon from 'mastodon/../material-icons/400-24px/reply_all.svg?react'; +import StarIcon from 'mastodon/../material-icons/400-24px/star-fill.svg?react'; +import StarBorderIcon from 'mastodon/../material-icons/400-24px/star.svg?react'; +import VisibilityIcon from 'mastodon/../material-icons/400-24px/visibility.svg?react'; import RepeatDisabledIcon from 'mastodon/../svg-icons/repeat_disabled.svg?react'; import RepeatPrivateIcon from 'mastodon/../svg-icons/repeat_private.svg?react'; import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_FEDERATION } from 'mastodon/permissions'; diff --git a/app/javascript/mastodon/components/status_content.jsx b/app/javascript/mastodon/components/status_content.jsx index f8ca0b30434..6f28f6d6d52 100644 --- a/app/javascript/mastodon/components/status_content.jsx +++ b/app/javascript/mastodon/components/status_content.jsx @@ -9,8 +9,7 @@ import { Link, withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import ChevronRightIcon from '@material-symbols/svg-600/outlined/chevron_right.svg?react'; - +import ChevronRightIcon from 'mastodon/../material-icons/400-24px/chevron_right.svg?react'; import { Icon } from 'mastodon/components/icon'; import PollContainer from 'mastodon/containers/poll_container'; import { autoPlayGif, languages as preloadedLanguages } from 'mastodon/initial_state'; diff --git a/app/javascript/mastodon/components/verified_badge.tsx b/app/javascript/mastodon/components/verified_badge.tsx index add7c7acdf8..4209f68319f 100644 --- a/app/javascript/mastodon/components/verified_badge.tsx +++ b/app/javascript/mastodon/components/verified_badge.tsx @@ -1,4 +1,4 @@ -import CheckIcon from '@material-symbols/svg-600/outlined/check.svg?react'; +import CheckIcon from 'mastodon/../material-icons/400-24px/check.svg?react'; import { Icon } from './icon'; diff --git a/app/javascript/mastodon/components/visibility_icon.tsx b/app/javascript/mastodon/components/visibility_icon.tsx index e0ef1372f13..1a752614276 100644 --- a/app/javascript/mastodon/components/visibility_icon.tsx +++ b/app/javascript/mastodon/components/visibility_icon.tsx @@ -1,9 +1,9 @@ import { defineMessages, useIntl } from 'react-intl'; -import AlternateEmailIcon from '@material-symbols/svg-600/outlined/alternate_email.svg?react'; -import LockIcon from '@material-symbols/svg-600/outlined/lock.svg?react'; -import LockOpenIcon from '@material-symbols/svg-600/outlined/lock_open.svg?react'; -import PublicIcon from '@material-symbols/svg-600/outlined/public.svg?react'; +import AlternateEmailIcon from 'mastodon/../material-icons/400-24px/alternate_email.svg?react'; +import LockIcon from 'mastodon/../material-icons/400-24px/lock.svg?react'; +import LockOpenIcon from 'mastodon/../material-icons/400-24px/lock_open.svg?react'; +import PublicIcon from 'mastodon/../material-icons/400-24px/public.svg?react'; import { Icon } from './icon'; diff --git a/app/javascript/mastodon/features/about/index.jsx b/app/javascript/mastodon/features/about/index.jsx index 1e43aaea7be..bffac6357a9 100644 --- a/app/javascript/mastodon/features/about/index.jsx +++ b/app/javascript/mastodon/features/about/index.jsx @@ -10,9 +10,8 @@ import { List as ImmutableList } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import ChevronRightIcon from '@material-symbols/svg-600/outlined/chevron_right.svg?react'; -import ExpandMoreIcon from '@material-symbols/svg-600/outlined/expand_more.svg?react'; - +import ChevronRightIcon from 'mastodon/../material-icons/400-24px/chevron_right.svg?react'; +import ExpandMoreIcon from 'mastodon/../material-icons/400-24px/expand_more.svg?react'; import { fetchServer, fetchExtendedDescription, fetchDomainBlocks } from 'mastodon/actions/server'; import Column from 'mastodon/components/column'; import { Icon } from 'mastodon/components/icon'; diff --git a/app/javascript/mastodon/features/account/components/follow_request_note.jsx b/app/javascript/mastodon/features/account/components/follow_request_note.jsx index da775248ceb..a8b61f9eaf8 100644 --- a/app/javascript/mastodon/features/account/components/follow_request_note.jsx +++ b/app/javascript/mastodon/features/account/components/follow_request_note.jsx @@ -3,9 +3,8 @@ import { FormattedMessage } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import CheckIcon from '@material-symbols/svg-600/outlined/check.svg?react'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; - +import CheckIcon from 'mastodon/../material-icons/400-24px/check.svg?react'; +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; import { Icon } from 'mastodon/components/icon'; export default class FollowRequestNote extends ImmutablePureComponent { diff --git a/app/javascript/mastodon/features/account/components/header.jsx b/app/javascript/mastodon/features/account/components/header.jsx index e8b5e72145f..6f58ae35f1c 100644 --- a/app/javascript/mastodon/features/account/components/header.jsx +++ b/app/javascript/mastodon/features/account/components/header.jsx @@ -9,13 +9,12 @@ import { NavLink, withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import CheckIcon from '@material-symbols/svg-600/outlined/check.svg?react'; -import LockIcon from '@material-symbols/svg-600/outlined/lock.svg?react'; -import MoreHorizIcon from '@material-symbols/svg-600/outlined/more_horiz.svg?react'; -import NotificationsIcon from '@material-symbols/svg-600/outlined/notifications.svg?react'; -import NotificationsActiveIcon from '@material-symbols/svg-600/outlined/notifications_active-fill.svg?react'; -import ShareIcon from '@material-symbols/svg-600/outlined/share.svg?react'; - +import CheckIcon from 'mastodon/../material-icons/400-24px/check.svg?react'; +import LockIcon from 'mastodon/../material-icons/400-24px/lock.svg?react'; +import MoreHorizIcon from 'mastodon/../material-icons/400-24px/more_horiz.svg?react'; +import NotificationsIcon from 'mastodon/../material-icons/400-24px/notifications.svg?react'; +import NotificationsActiveIcon from 'mastodon/../material-icons/400-24px/notifications_active-fill.svg?react'; +import ShareIcon from 'mastodon/../material-icons/400-24px/share.svg?react'; import { Avatar } from 'mastodon/components/avatar'; import { Badge, AutomatedBadge, GroupBadge } from 'mastodon/components/badge'; import { Button } from 'mastodon/components/button'; diff --git a/app/javascript/mastodon/features/account_gallery/components/media_item.jsx b/app/javascript/mastodon/features/account_gallery/components/media_item.jsx index e4495601f55..a35092893d9 100644 --- a/app/javascript/mastodon/features/account_gallery/components/media_item.jsx +++ b/app/javascript/mastodon/features/account_gallery/components/media_item.jsx @@ -5,10 +5,9 @@ import classNames from 'classnames'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import AudiotrackIcon from '@material-symbols/svg-600/outlined/music_note.svg?react'; -import PlayArrowIcon from '@material-symbols/svg-600/outlined/play_arrow.svg?react'; -import VisibilityOffIcon from '@material-symbols/svg-600/outlined/visibility_off.svg?react'; - +import AudiotrackIcon from 'mastodon/../material-icons/400-24px/music_note.svg?react'; +import PlayArrowIcon from 'mastodon/../material-icons/400-24px/play_arrow.svg?react'; +import VisibilityOffIcon from 'mastodon/../material-icons/400-24px/visibility_off.svg?react'; import { Blurhash } from 'mastodon/components/blurhash'; import { Icon } from 'mastodon/components/icon'; import { autoPlayGif, displayMedia, useBlurhash } from 'mastodon/initial_state'; diff --git a/app/javascript/mastodon/features/audio/index.jsx b/app/javascript/mastodon/features/audio/index.jsx index 881e5cef1b1..9008e053830 100644 --- a/app/javascript/mastodon/features/audio/index.jsx +++ b/app/javascript/mastodon/features/audio/index.jsx @@ -7,14 +7,14 @@ import classNames from 'classnames'; import { is } from 'immutable'; -import DownloadIcon from '@material-symbols/svg-600/outlined/download.svg?react'; -import PauseIcon from '@material-symbols/svg-600/outlined/pause.svg?react'; -import PlayArrowIcon from '@material-symbols/svg-600/outlined/play_arrow-fill.svg?react'; -import VisibilityOffIcon from '@material-symbols/svg-600/outlined/visibility_off.svg?react'; -import VolumeOffIcon from '@material-symbols/svg-600/outlined/volume_off-fill.svg?react'; -import VolumeUpIcon from '@material-symbols/svg-600/outlined/volume_up-fill.svg?react'; import { throttle, debounce } from 'lodash'; +import DownloadIcon from 'mastodon/../material-icons/400-24px/download.svg?react'; +import PauseIcon from 'mastodon/../material-icons/400-24px/pause.svg?react'; +import PlayArrowIcon from 'mastodon/../material-icons/400-24px/play_arrow-fill.svg?react'; +import VisibilityOffIcon from 'mastodon/../material-icons/400-24px/visibility_off.svg?react'; +import VolumeOffIcon from 'mastodon/../material-icons/400-24px/volume_off-fill.svg?react'; +import VolumeUpIcon from 'mastodon/../material-icons/400-24px/volume_up-fill.svg?react'; import { Icon } from 'mastodon/components/icon'; import { formatTime, getPointerPosition, fileNameFromURL } from 'mastodon/features/video'; diff --git a/app/javascript/mastodon/features/blocks/index.jsx b/app/javascript/mastodon/features/blocks/index.jsx index 7e1eda8aca7..656784664f1 100644 --- a/app/javascript/mastodon/features/blocks/index.jsx +++ b/app/javascript/mastodon/features/blocks/index.jsx @@ -6,9 +6,10 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import BlockIcon from '@material-symbols/svg-600/outlined/block-fill.svg?react'; import { debounce } from 'lodash'; +import BlockIcon from 'mastodon/../material-icons/400-24px/block-fill.svg?react'; + import { fetchBlocks, expandBlocks } from '../../actions/blocks'; import { LoadingIndicator } from '../../components/loading_indicator'; import ScrollableList from '../../components/scrollable_list'; diff --git a/app/javascript/mastodon/features/bookmarked_statuses/index.jsx b/app/javascript/mastodon/features/bookmarked_statuses/index.jsx index 767707755b7..15db945956b 100644 --- a/app/javascript/mastodon/features/bookmarked_statuses/index.jsx +++ b/app/javascript/mastodon/features/bookmarked_statuses/index.jsx @@ -8,9 +8,9 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import BookmarksIcon from '@material-symbols/svg-600/outlined/bookmarks-fill.svg?react'; import { debounce } from 'lodash'; +import BookmarksIcon from 'mastodon/../material-icons/400-24px/bookmarks-fill.svg?react'; import { fetchBookmarkedStatuses, expandBookmarkedStatuses } from 'mastodon/actions/bookmarks'; import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns'; import ColumnHeader from 'mastodon/components/column_header'; diff --git a/app/javascript/mastodon/features/community_timeline/index.jsx b/app/javascript/mastodon/features/community_timeline/index.jsx index 1862cdf902c..5bf66c2a342 100644 --- a/app/javascript/mastodon/features/community_timeline/index.jsx +++ b/app/javascript/mastodon/features/community_timeline/index.jsx @@ -7,8 +7,7 @@ import { Helmet } from 'react-helmet'; import { connect } from 'react-redux'; -import PeopleIcon from '@material-symbols/svg-600/outlined/group.svg?react'; - +import PeopleIcon from 'mastodon/../material-icons/400-24px/group.svg?react'; import { DismissableBanner } from 'mastodon/components/dismissable_banner'; import { domain } from 'mastodon/initial_state'; diff --git a/app/javascript/mastodon/features/compose/components/action_bar.jsx b/app/javascript/mastodon/features/compose/components/action_bar.jsx index 42ed78578a3..bacafaf1e13 100644 --- a/app/javascript/mastodon/features/compose/components/action_bar.jsx +++ b/app/javascript/mastodon/features/compose/components/action_bar.jsx @@ -5,7 +5,7 @@ import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import MenuIcon from '@material-symbols/svg-600/outlined/menu.svg?react'; +import MenuIcon from 'mastodon/../material-icons/400-24px/menu.svg?react'; import DropdownMenuContainer from '../../../containers/dropdown_menu_container'; diff --git a/app/javascript/mastodon/features/compose/components/compose_form.jsx b/app/javascript/mastodon/features/compose/components/compose_form.jsx index 3f203ed0c27..4470c35f981 100644 --- a/app/javascript/mastodon/features/compose/components/compose_form.jsx +++ b/app/javascript/mastodon/features/compose/components/compose_form.jsx @@ -8,9 +8,9 @@ import classNames from 'classnames'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import LockIcon from '@material-symbols/svg-600/outlined/lock.svg?react'; import { length } from 'stringz'; +import LockIcon from 'mastodon/../material-icons/400-24px/lock.svg?react'; import { Icon } from 'mastodon/components/icon'; import { WithOptionalRouterPropTypes, withOptionalRouter } from 'mastodon/utils/react_router'; diff --git a/app/javascript/mastodon/features/compose/components/poll_button.jsx b/app/javascript/mastodon/features/compose/components/poll_button.jsx index a5025a0f402..e6ecba1a07f 100644 --- a/app/javascript/mastodon/features/compose/components/poll_button.jsx +++ b/app/javascript/mastodon/features/compose/components/poll_button.jsx @@ -3,7 +3,7 @@ import { PureComponent } from 'react'; import { defineMessages, injectIntl } from 'react-intl'; -import InsertChartIcon from '@material-symbols/svg-600/outlined/insert_chart.svg?react'; +import InsertChartIcon from 'mastodon/../material-icons/400-24px/insert_chart.svg?react'; import { IconButton } from '../../../components/icon_button'; diff --git a/app/javascript/mastodon/features/compose/components/poll_form.jsx b/app/javascript/mastodon/features/compose/components/poll_form.jsx index 04512da3563..52e743d2927 100644 --- a/app/javascript/mastodon/features/compose/components/poll_form.jsx +++ b/app/javascript/mastodon/features/compose/components/poll_form.jsx @@ -8,9 +8,8 @@ import classNames from 'classnames'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import AddIcon from '@material-symbols/svg-600/outlined/add.svg?react'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; - +import AddIcon from 'mastodon/../material-icons/400-24px/add.svg?react'; +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; import AutosuggestInput from 'mastodon/components/autosuggest_input'; import { Icon } from 'mastodon/components/icon'; import { IconButton } from 'mastodon/components/icon_button'; diff --git a/app/javascript/mastodon/features/compose/components/privacy_dropdown.jsx b/app/javascript/mastodon/features/compose/components/privacy_dropdown.jsx index 0dbbcbc2561..67298c8c438 100644 --- a/app/javascript/mastodon/features/compose/components/privacy_dropdown.jsx +++ b/app/javascript/mastodon/features/compose/components/privacy_dropdown.jsx @@ -6,14 +6,13 @@ import { injectIntl, defineMessages } from 'react-intl'; import classNames from 'classnames'; -import AlternateEmailIcon from '@material-symbols/svg-600/outlined/alternate_email.svg?react'; -import LockIcon from '@material-symbols/svg-600/outlined/lock.svg?react'; -import LockOpenIcon from '@material-symbols/svg-600/outlined/lock_open.svg?react'; -import PublicIcon from '@material-symbols/svg-600/outlined/public.svg?react'; import { supportsPassiveEvents } from 'detect-passive-events'; import Overlay from 'react-overlays/Overlay'; - +import AlternateEmailIcon from 'mastodon/../material-icons/400-24px/alternate_email.svg?react'; +import LockIcon from 'mastodon/../material-icons/400-24px/lock.svg?react'; +import LockOpenIcon from 'mastodon/../material-icons/400-24px/lock_open.svg?react'; +import PublicIcon from 'mastodon/../material-icons/400-24px/public.svg?react'; import { Icon } from 'mastodon/components/icon'; import { IconButton } from '../../../components/icon_button'; diff --git a/app/javascript/mastodon/features/compose/components/reply_indicator.jsx b/app/javascript/mastodon/features/compose/components/reply_indicator.jsx index 40e79cafaa0..f16a37347c0 100644 --- a/app/javascript/mastodon/features/compose/components/reply_indicator.jsx +++ b/app/javascript/mastodon/features/compose/components/reply_indicator.jsx @@ -5,8 +5,7 @@ import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; - +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; import AttachmentList from 'mastodon/components/attachment_list'; import { WithOptionalRouterPropTypes, withOptionalRouter } from 'mastodon/utils/react_router'; diff --git a/app/javascript/mastodon/features/compose/components/search.jsx b/app/javascript/mastodon/features/compose/components/search.jsx index 8dbbb0383de..844958bab6c 100644 --- a/app/javascript/mastodon/features/compose/components/search.jsx +++ b/app/javascript/mastodon/features/compose/components/search.jsx @@ -8,10 +8,9 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import CancelIcon from '@material-symbols/svg-600/outlined/cancel-fill.svg?react'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; -import SearchIcon from '@material-symbols/svg-600/outlined/search.svg?react'; - +import CancelIcon from 'mastodon/../material-icons/400-24px/cancel-fill.svg?react'; +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; +import SearchIcon from 'mastodon/../material-icons/400-24px/search.svg?react'; import { Icon } from 'mastodon/components/icon'; import { domain, searchEnabled } from 'mastodon/initial_state'; import { HASHTAG_REGEX } from 'mastodon/utils/hashtags'; diff --git a/app/javascript/mastodon/features/compose/components/search_results.jsx b/app/javascript/mastodon/features/compose/components/search_results.jsx index 00d4dc53292..8a63a01c895 100644 --- a/app/javascript/mastodon/features/compose/components/search_results.jsx +++ b/app/javascript/mastodon/features/compose/components/search_results.jsx @@ -5,11 +5,10 @@ import { FormattedMessage } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import FindInPageIcon from '@material-symbols/svg-600/outlined/find_in_page.svg?react'; -import PeopleIcon from '@material-symbols/svg-600/outlined/group.svg?react'; -import SearchIcon from '@material-symbols/svg-600/outlined/search.svg?react'; -import TagIcon from '@material-symbols/svg-600/outlined/tag.svg?react'; - +import FindInPageIcon from 'mastodon/../material-icons/400-24px/find_in_page.svg?react'; +import PeopleIcon from 'mastodon/../material-icons/400-24px/group.svg?react'; +import SearchIcon from 'mastodon/../material-icons/400-24px/search.svg?react'; +import TagIcon from 'mastodon/../material-icons/400-24px/tag.svg?react'; import { Icon } from 'mastodon/components/icon'; import { LoadMore } from 'mastodon/components/load_more'; import { SearchSection } from 'mastodon/features/explore/components/search_section'; diff --git a/app/javascript/mastodon/features/compose/components/upload.jsx b/app/javascript/mastodon/features/compose/components/upload.jsx index 88d6f68b54d..cb31145e8d4 100644 --- a/app/javascript/mastodon/features/compose/components/upload.jsx +++ b/app/javascript/mastodon/features/compose/components/upload.jsx @@ -5,11 +5,11 @@ import { FormattedMessage } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; -import EditIcon from '@material-symbols/svg-600/outlined/edit.svg?react'; -import InfoIcon from '@material-symbols/svg-600/outlined/info.svg?react'; import spring from 'react-motion/lib/spring'; +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; +import EditIcon from 'mastodon/../material-icons/400-24px/edit.svg?react'; +import InfoIcon from 'mastodon/../material-icons/400-24px/info.svg?react'; import { Icon } from 'mastodon/components/icon'; import Motion from '../../ui/util/optional_motion'; diff --git a/app/javascript/mastodon/features/compose/components/upload_button.jsx b/app/javascript/mastodon/features/compose/components/upload_button.jsx index 201b1b8983c..090af86b279 100644 --- a/app/javascript/mastodon/features/compose/components/upload_button.jsx +++ b/app/javascript/mastodon/features/compose/components/upload_button.jsx @@ -6,7 +6,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import AddPhotoAlternateIcon from '@material-symbols/svg-600/outlined/add_photo_alternate.svg?react'; +import AddPhotoAlternateIcon from 'mastodon/../material-icons/400-24px/add_photo_alternate.svg?react'; import { IconButton } from '../../../components/icon_button'; diff --git a/app/javascript/mastodon/features/compose/components/upload_progress.jsx b/app/javascript/mastodon/features/compose/components/upload_progress.jsx index 2c44ac6364d..8ed09b36ba1 100644 --- a/app/javascript/mastodon/features/compose/components/upload_progress.jsx +++ b/app/javascript/mastodon/features/compose/components/upload_progress.jsx @@ -3,9 +3,9 @@ import { PureComponent } from 'react'; import { FormattedMessage } from 'react-intl'; -import UploadFileIcon from '@material-symbols/svg-600/outlined/upload_file.svg?react'; import spring from 'react-motion/lib/spring'; +import UploadFileIcon from 'mastodon/../material-icons/400-24px/upload_file.svg?react'; import { Icon } from 'mastodon/components/icon'; import Motion from '../../ui/util/optional_motion'; diff --git a/app/javascript/mastodon/features/compose/index.jsx b/app/javascript/mastodon/features/compose/index.jsx index 0b9fa65fe13..a19ae71e8ef 100644 --- a/app/javascript/mastodon/features/compose/index.jsx +++ b/app/javascript/mastodon/features/compose/index.jsx @@ -9,15 +9,15 @@ import { Link } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import PeopleIcon from '@material-symbols/svg-600/outlined/group.svg?react'; -import HomeIcon from '@material-symbols/svg-600/outlined/home-fill.svg?react'; -import LogoutIcon from '@material-symbols/svg-600/outlined/logout.svg?react'; -import MenuIcon from '@material-symbols/svg-600/outlined/menu.svg?react'; -import NotificationsIcon from '@material-symbols/svg-600/outlined/notifications-fill.svg?react'; -import PublicIcon from '@material-symbols/svg-600/outlined/public.svg?react'; -import SettingsIcon from '@material-symbols/svg-600/outlined/settings-fill.svg?react'; import spring from 'react-motion/lib/spring'; +import PeopleIcon from 'mastodon/../material-icons/400-24px/group.svg?react'; +import HomeIcon from 'mastodon/../material-icons/400-24px/home-fill.svg?react'; +import LogoutIcon from 'mastodon/../material-icons/400-24px/logout.svg?react'; +import MenuIcon from 'mastodon/../material-icons/400-24px/menu.svg?react'; +import NotificationsIcon from 'mastodon/../material-icons/400-24px/notifications-fill.svg?react'; +import PublicIcon from 'mastodon/../material-icons/400-24px/public.svg?react'; +import SettingsIcon from 'mastodon/../material-icons/400-24px/settings-fill.svg?react'; import { openModal } from 'mastodon/actions/modal'; import Column from 'mastodon/components/column'; import { Icon } from 'mastodon/components/icon'; diff --git a/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx b/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx index 0aeec1e3b07..9ae95dabe9b 100644 --- a/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx +++ b/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx @@ -8,10 +8,10 @@ import { Link, withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import MoreHorizIcon from '@material-symbols/svg-600/outlined/more_horiz.svg?react'; -import ReplyIcon from '@material-symbols/svg-600/outlined/reply.svg?react'; import { HotKeys } from 'react-hotkeys'; +import MoreHorizIcon from 'mastodon/../material-icons/400-24px/more_horiz.svg?react'; +import ReplyIcon from 'mastodon/../material-icons/400-24px/reply.svg?react'; import AttachmentList from 'mastodon/components/attachment_list'; import AvatarComposite from 'mastodon/components/avatar_composite'; import { IconButton } from 'mastodon/components/icon_button'; diff --git a/app/javascript/mastodon/features/direct_timeline/index.jsx b/app/javascript/mastodon/features/direct_timeline/index.jsx index 1a11520c3b7..effc9f29dbf 100644 --- a/app/javascript/mastodon/features/direct_timeline/index.jsx +++ b/app/javascript/mastodon/features/direct_timeline/index.jsx @@ -7,8 +7,7 @@ import { Helmet } from 'react-helmet'; import { connect } from 'react-redux'; -import AlternateEmailIcon from '@material-symbols/svg-600/outlined/alternate_email.svg?react'; - +import AlternateEmailIcon from 'mastodon/../material-icons/400-24px/alternate_email.svg?react'; import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns'; import { mountConversations, unmountConversations, expandConversations } from 'mastodon/actions/conversations'; import { connectDirectStream } from 'mastodon/actions/streaming'; diff --git a/app/javascript/mastodon/features/directory/index.jsx b/app/javascript/mastodon/features/directory/index.jsx index 0de77164f59..32d79f23fc6 100644 --- a/app/javascript/mastodon/features/directory/index.jsx +++ b/app/javascript/mastodon/features/directory/index.jsx @@ -9,8 +9,7 @@ import { List as ImmutableList } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import PeopleIcon from '@material-symbols/svg-600/outlined/group.svg?react'; - +import PeopleIcon from 'mastodon/../material-icons/400-24px/group.svg?react'; import { addColumn, removeColumn, moveColumn, changeColumnParams } from 'mastodon/actions/columns'; import { fetchDirectory, expandDirectory } from 'mastodon/actions/directory'; import Column from 'mastodon/components/column'; diff --git a/app/javascript/mastodon/features/domain_blocks/index.jsx b/app/javascript/mastodon/features/domain_blocks/index.jsx index 7a57ea12629..5c9b70f02b1 100644 --- a/app/javascript/mastodon/features/domain_blocks/index.jsx +++ b/app/javascript/mastodon/features/domain_blocks/index.jsx @@ -8,9 +8,10 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import BlockIcon from '@material-symbols/svg-600/outlined/block-fill.svg?react'; import { debounce } from 'lodash'; +import BlockIcon from 'mastodon/../material-icons/400-24px/block-fill.svg?react'; + import { fetchDomainBlocks, expandDomainBlocks } from '../../actions/domain_blocks'; import { LoadingIndicator } from '../../components/loading_indicator'; import ScrollableList from '../../components/scrollable_list'; diff --git a/app/javascript/mastodon/features/explore/index.jsx b/app/javascript/mastodon/features/explore/index.jsx index a59830fb822..96a39f6b35f 100644 --- a/app/javascript/mastodon/features/explore/index.jsx +++ b/app/javascript/mastodon/features/explore/index.jsx @@ -8,9 +8,8 @@ import { NavLink, Switch, Route } from 'react-router-dom'; import { connect } from 'react-redux'; -import SearchIcon from '@material-symbols/svg-600/outlined/search.svg?react'; -import TagIcon from '@material-symbols/svg-600/outlined/tag.svg?react'; - +import SearchIcon from 'mastodon/../material-icons/400-24px/search.svg?react'; +import TagIcon from 'mastodon/../material-icons/400-24px/tag.svg?react'; import Column from 'mastodon/components/column'; import ColumnHeader from 'mastodon/components/column_header'; import Search from 'mastodon/features/compose/containers/search_container'; diff --git a/app/javascript/mastodon/features/explore/results.jsx b/app/javascript/mastodon/features/explore/results.jsx index 665f97f8ffd..891bddf737b 100644 --- a/app/javascript/mastodon/features/explore/results.jsx +++ b/app/javascript/mastodon/features/explore/results.jsx @@ -9,10 +9,9 @@ import { List as ImmutableList } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import FindInPageIcon from '@material-symbols/svg-600/outlined/find_in_page.svg?react'; -import PeopleIcon from '@material-symbols/svg-600/outlined/group.svg?react'; -import TagIcon from '@material-symbols/svg-600/outlined/tag.svg?react'; - +import FindInPageIcon from 'mastodon/../material-icons/400-24px/find_in_page.svg?react'; +import PeopleIcon from 'mastodon/../material-icons/400-24px/group.svg?react'; +import TagIcon from 'mastodon/../material-icons/400-24px/tag.svg?react'; import { submitSearch, expandSearch } from 'mastodon/actions/search'; import { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag'; import { Icon } from 'mastodon/components/icon'; diff --git a/app/javascript/mastodon/features/favourited_statuses/index.jsx b/app/javascript/mastodon/features/favourited_statuses/index.jsx index d4716580d8b..29fc6925d6c 100644 --- a/app/javascript/mastodon/features/favourited_statuses/index.jsx +++ b/app/javascript/mastodon/features/favourited_statuses/index.jsx @@ -8,9 +8,9 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import StarIcon from '@material-symbols/svg-600/outlined/star-fill.svg?react'; import { debounce } from 'lodash'; +import StarIcon from 'mastodon/../material-icons/400-24px/star-fill.svg?react'; import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns'; import { fetchFavouritedStatuses, expandFavouritedStatuses } from 'mastodon/actions/favourites'; import ColumnHeader from 'mastodon/components/column_header'; diff --git a/app/javascript/mastodon/features/favourites/index.jsx b/app/javascript/mastodon/features/favourites/index.jsx index a26afda8922..ffab6f02c96 100644 --- a/app/javascript/mastodon/features/favourites/index.jsx +++ b/app/javascript/mastodon/features/favourites/index.jsx @@ -8,9 +8,9 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import RefreshIcon from '@material-symbols/svg-600/outlined/refresh.svg?react'; import { debounce } from 'lodash'; +import RefreshIcon from 'mastodon/../material-icons/400-24px/refresh.svg?react'; import { fetchFavourites, expandFavourites } from 'mastodon/actions/interactions'; import ColumnHeader from 'mastodon/components/column_header'; import { Icon } from 'mastodon/components/icon'; diff --git a/app/javascript/mastodon/features/filters/select_filter.jsx b/app/javascript/mastodon/features/filters/select_filter.jsx index 55f2a8c09fb..9bf0c3c8e52 100644 --- a/app/javascript/mastodon/features/filters/select_filter.jsx +++ b/app/javascript/mastodon/features/filters/select_filter.jsx @@ -5,9 +5,9 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; -import AddIcon from '@material-symbols/svg-600/outlined/add.svg?react'; import fuzzysort from 'fuzzysort'; +import AddIcon from 'mastodon/../material-icons/400-24px/add.svg?react'; import { Icon } from 'mastodon/components/icon'; import { toServerSideType } from 'mastodon/utils/filters'; import { loupeIcon, deleteIcon } from 'mastodon/utils/icons'; diff --git a/app/javascript/mastodon/features/firehose/index.jsx b/app/javascript/mastodon/features/firehose/index.jsx index 337b9a65b29..22c11a182ff 100644 --- a/app/javascript/mastodon/features/firehose/index.jsx +++ b/app/javascript/mastodon/features/firehose/index.jsx @@ -6,8 +6,7 @@ import { useIntl, defineMessages, FormattedMessage } from 'react-intl'; import { Helmet } from 'react-helmet'; import { NavLink } from 'react-router-dom'; -import PublicIcon from '@material-symbols/svg-600/outlined/public.svg?react'; - +import PublicIcon from 'mastodon/../material-icons/400-24px/public.svg?react'; import { addColumn } from 'mastodon/actions/columns'; import { changeSetting } from 'mastodon/actions/settings'; import { connectPublicStream, connectCommunityStream } from 'mastodon/actions/streaming'; diff --git a/app/javascript/mastodon/features/follow_requests/components/account_authorize.jsx b/app/javascript/mastodon/features/follow_requests/components/account_authorize.jsx index ed61f2d8413..1f40e059925 100644 --- a/app/javascript/mastodon/features/follow_requests/components/account_authorize.jsx +++ b/app/javascript/mastodon/features/follow_requests/components/account_authorize.jsx @@ -7,8 +7,8 @@ import { Link } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import CheckIcon from '@material-symbols/svg-600/outlined/check.svg?react'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; +import CheckIcon from 'mastodon/../material-icons/400-24px/check.svg?react'; +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; import { Avatar } from '../../../components/avatar'; import { DisplayName } from '../../../components/display_name'; diff --git a/app/javascript/mastodon/features/follow_requests/index.jsx b/app/javascript/mastodon/features/follow_requests/index.jsx index 9f73d092529..683c7b40707 100644 --- a/app/javascript/mastodon/features/follow_requests/index.jsx +++ b/app/javascript/mastodon/features/follow_requests/index.jsx @@ -8,9 +8,10 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import PersonAddIcon from '@material-symbols/svg-600/outlined/person_add.svg?react'; import { debounce } from 'lodash'; +import PersonAddIcon from 'mastodon/../material-icons/400-24px/person_add.svg?react'; + import { fetchFollowRequests, expandFollowRequests } from '../../actions/accounts'; import ScrollableList from '../../components/scrollable_list'; import { me } from '../../initial_state'; diff --git a/app/javascript/mastodon/features/followed_tags/index.jsx b/app/javascript/mastodon/features/followed_tags/index.jsx index d4b26356b30..de3d7670ec9 100644 --- a/app/javascript/mastodon/features/followed_tags/index.jsx +++ b/app/javascript/mastodon/features/followed_tags/index.jsx @@ -8,9 +8,9 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import TagIcon from '@material-symbols/svg-600/outlined/tag.svg?react'; import { debounce } from 'lodash'; +import TagIcon from 'mastodon/../material-icons/400-24px/tag.svg?react'; import { expandFollowedHashtags, fetchFollowedHashtags } from 'mastodon/actions/tags'; import ColumnHeader from 'mastodon/components/column_header'; import { Hashtag } from 'mastodon/components/hashtag'; diff --git a/app/javascript/mastodon/features/getting_started/components/announcements.jsx b/app/javascript/mastodon/features/getting_started/components/announcements.jsx index 0818da5519e..6b752df1bd8 100644 --- a/app/javascript/mastodon/features/getting_started/components/announcements.jsx +++ b/app/javascript/mastodon/features/getting_started/components/announcements.jsx @@ -9,14 +9,14 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import AddIcon from '@material-symbols/svg-600/outlined/add.svg?react'; -import ChevronLeftIcon from '@material-symbols/svg-600/outlined/chevron_left.svg?react'; -import ChevronRightIcon from '@material-symbols/svg-600/outlined/chevron_right.svg?react'; import TransitionMotion from 'react-motion/lib/TransitionMotion'; import spring from 'react-motion/lib/spring'; import ReactSwipeableViews from 'react-swipeable-views'; import elephantUIPlane from 'mastodon/../images/elephant_ui_plane.svg'; +import AddIcon from 'mastodon/../material-icons/400-24px/add.svg?react'; +import ChevronLeftIcon from 'mastodon/../material-icons/400-24px/chevron_left.svg?react'; +import ChevronRightIcon from 'mastodon/../material-icons/400-24px/chevron_right.svg?react'; import { AnimatedNumber } from 'mastodon/components/animated_number'; import { Icon } from 'mastodon/components/icon'; import { IconButton } from 'mastodon/components/icon_button'; diff --git a/app/javascript/mastodon/features/getting_started/index.jsx b/app/javascript/mastodon/features/getting_started/index.jsx index 29bbfd35f69..68ea2013872 100644 --- a/app/javascript/mastodon/features/getting_started/index.jsx +++ b/app/javascript/mastodon/features/getting_started/index.jsx @@ -9,18 +9,17 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import AlternateEmailIcon from '@material-symbols/svg-600/outlined/alternate_email.svg?react'; -import BookmarksIcon from '@material-symbols/svg-600/outlined/bookmarks-fill.svg?react'; -import PeopleIcon from '@material-symbols/svg-600/outlined/group.svg?react'; -import HomeIcon from '@material-symbols/svg-600/outlined/home-fill.svg?react'; -import ListAltIcon from '@material-symbols/svg-600/outlined/list_alt.svg?react'; -import MenuIcon from '@material-symbols/svg-600/outlined/menu.svg?react'; -import PersonAddIcon from '@material-symbols/svg-600/outlined/person_add.svg?react'; -import PublicIcon from '@material-symbols/svg-600/outlined/public.svg?react'; -import SettingsIcon from '@material-symbols/svg-600/outlined/settings-fill.svg?react'; -import StarIcon from '@material-symbols/svg-600/outlined/star.svg?react'; -import TagIcon from '@material-symbols/svg-600/outlined/tag.svg?react'; - +import AlternateEmailIcon from 'mastodon/../material-icons/400-24px/alternate_email.svg?react'; +import BookmarksIcon from 'mastodon/../material-icons/400-24px/bookmarks-fill.svg?react'; +import PeopleIcon from 'mastodon/../material-icons/400-24px/group.svg?react'; +import HomeIcon from 'mastodon/../material-icons/400-24px/home-fill.svg?react'; +import ListAltIcon from 'mastodon/../material-icons/400-24px/list_alt.svg?react'; +import MenuIcon from 'mastodon/../material-icons/400-24px/menu.svg?react'; +import PersonAddIcon from 'mastodon/../material-icons/400-24px/person_add.svg?react'; +import PublicIcon from 'mastodon/../material-icons/400-24px/public.svg?react'; +import SettingsIcon from 'mastodon/../material-icons/400-24px/settings-fill.svg?react'; +import StarIcon from 'mastodon/../material-icons/400-24px/star.svg?react'; +import TagIcon from 'mastodon/../material-icons/400-24px/tag.svg?react'; import { fetchFollowRequests } from 'mastodon/actions/accounts'; import Column from 'mastodon/components/column'; import ColumnHeader from 'mastodon/components/column_header'; diff --git a/app/javascript/mastodon/features/hashtag_timeline/index.jsx b/app/javascript/mastodon/features/hashtag_timeline/index.jsx index bdb8da00a57..35ed4dc6097 100644 --- a/app/javascript/mastodon/features/hashtag_timeline/index.jsx +++ b/app/javascript/mastodon/features/hashtag_timeline/index.jsx @@ -8,9 +8,9 @@ import { Helmet } from 'react-helmet'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import TagIcon from '@material-symbols/svg-600/outlined/tag.svg?react'; import { isEqual } from 'lodash'; +import TagIcon from 'mastodon/../material-icons/400-24px/tag.svg?react'; import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns'; import { connectHashtagStream } from 'mastodon/actions/streaming'; import { fetchHashtag, followHashtag, unfollowHashtag } from 'mastodon/actions/tags'; diff --git a/app/javascript/mastodon/features/home_timeline/index.jsx b/app/javascript/mastodon/features/home_timeline/index.jsx index 6fc986393e0..1f93278c069 100644 --- a/app/javascript/mastodon/features/home_timeline/index.jsx +++ b/app/javascript/mastodon/features/home_timeline/index.jsx @@ -10,9 +10,8 @@ import { createSelector } from '@reduxjs/toolkit'; import { List as ImmutableList } from 'immutable'; import { connect } from 'react-redux'; -import CampaignIcon from '@material-symbols/svg-600/outlined/campaign.svg?react'; -import HomeIcon from '@material-symbols/svg-600/outlined/home-fill.svg?react'; - +import CampaignIcon from 'mastodon/../material-icons/400-24px/campaign.svg?react'; +import HomeIcon from 'mastodon/../material-icons/400-24px/home-fill.svg?react'; import { fetchAnnouncements, toggleShowAnnouncements } from 'mastodon/actions/announcements'; import { IconWithBadge } from 'mastodon/components/icon_with_badge'; import { NotSignedInIndicator } from 'mastodon/components/not_signed_in_indicator'; diff --git a/app/javascript/mastodon/features/interaction_modal/index.jsx b/app/javascript/mastodon/features/interaction_modal/index.jsx index 527cba5d97a..1d503b7343f 100644 --- a/app/javascript/mastodon/features/interaction_modal/index.jsx +++ b/app/javascript/mastodon/features/interaction_modal/index.jsx @@ -7,12 +7,12 @@ import classNames from 'classnames'; import { connect } from 'react-redux'; -import PersonAddIcon from '@material-symbols/svg-600/outlined/person_add.svg?react'; -import RepeatIcon from '@material-symbols/svg-600/outlined/repeat.svg?react'; -import ReplyIcon from '@material-symbols/svg-600/outlined/reply.svg?react'; -import StarIcon from '@material-symbols/svg-600/outlined/star.svg?react'; import { throttle, escapeRegExp } from 'lodash'; +import PersonAddIcon from 'mastodon/../material-icons/400-24px/person_add.svg?react'; +import RepeatIcon from 'mastodon/../material-icons/400-24px/repeat.svg?react'; +import ReplyIcon from 'mastodon/../material-icons/400-24px/reply.svg?react'; +import StarIcon from 'mastodon/../material-icons/400-24px/star.svg?react'; import { openModal, closeModal } from 'mastodon/actions/modal'; import api from 'mastodon/api'; import { Button } from 'mastodon/components/button'; diff --git a/app/javascript/mastodon/features/keyboard_shortcuts/index.jsx b/app/javascript/mastodon/features/keyboard_shortcuts/index.jsx index 054797d18f0..6d1df6dd0d1 100644 --- a/app/javascript/mastodon/features/keyboard_shortcuts/index.jsx +++ b/app/javascript/mastodon/features/keyboard_shortcuts/index.jsx @@ -6,8 +6,7 @@ import { Helmet } from 'react-helmet'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import InfoIcon from '@material-symbols/svg-600/outlined/info.svg?react'; - +import InfoIcon from 'mastodon/../material-icons/400-24px/info.svg?react'; import Column from 'mastodon/components/column'; import ColumnHeader from 'mastodon/components/column_header'; diff --git a/app/javascript/mastodon/features/list_adder/components/list.jsx b/app/javascript/mastodon/features/list_adder/components/list.jsx index 14e320e00bf..54ac940da43 100644 --- a/app/javascript/mastodon/features/list_adder/components/list.jsx +++ b/app/javascript/mastodon/features/list_adder/components/list.jsx @@ -6,10 +6,9 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import AddIcon from '@material-symbols/svg-600/outlined/add.svg?react'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; -import ListAltIcon from '@material-symbols/svg-600/outlined/list_alt.svg?react'; - +import AddIcon from 'mastodon/../material-icons/400-24px/add.svg?react'; +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; +import ListAltIcon from 'mastodon/../material-icons/400-24px/list_alt.svg?react'; import { Icon } from 'mastodon/components/icon'; import { removeFromListAdder, addToListAdder } from '../../../actions/lists'; diff --git a/app/javascript/mastodon/features/list_editor/components/account.jsx b/app/javascript/mastodon/features/list_editor/components/account.jsx index 30595ebc8b2..f406f24fa7f 100644 --- a/app/javascript/mastodon/features/list_editor/components/account.jsx +++ b/app/javascript/mastodon/features/list_editor/components/account.jsx @@ -6,8 +6,8 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import AddIcon from '@material-symbols/svg-600/outlined/add.svg?react'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; +import AddIcon from 'mastodon/../material-icons/400-24px/add.svg?react'; +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; import { removeFromListEditor, addToListEditor } from '../../../actions/lists'; import { Avatar } from '../../../components/avatar'; diff --git a/app/javascript/mastodon/features/list_editor/components/edit_list_form.jsx b/app/javascript/mastodon/features/list_editor/components/edit_list_form.jsx index db89611db22..ad29d08a931 100644 --- a/app/javascript/mastodon/features/list_editor/components/edit_list_form.jsx +++ b/app/javascript/mastodon/features/list_editor/components/edit_list_form.jsx @@ -5,7 +5,7 @@ import { defineMessages, injectIntl } from 'react-intl'; import { connect } from 'react-redux'; -import CheckIcon from '@material-symbols/svg-600/outlined/check.svg?react'; +import CheckIcon from 'mastodon/../material-icons/400-24px/check.svg?react'; import { changeListEditorTitle, submitListEditor } from '../../../actions/lists'; import { IconButton } from '../../../components/icon_button'; diff --git a/app/javascript/mastodon/features/list_editor/components/search.jsx b/app/javascript/mastodon/features/list_editor/components/search.jsx index 1971fd2f767..4c4138c751b 100644 --- a/app/javascript/mastodon/features/list_editor/components/search.jsx +++ b/app/javascript/mastodon/features/list_editor/components/search.jsx @@ -7,9 +7,8 @@ import classNames from 'classnames'; import { connect } from 'react-redux'; -import CancelIcon from '@material-symbols/svg-600/outlined/cancel.svg?react'; -import SearchIcon from '@material-symbols/svg-600/outlined/search.svg?react'; - +import CancelIcon from 'mastodon/../material-icons/400-24px/cancel.svg?react'; +import SearchIcon from 'mastodon/../material-icons/400-24px/search.svg?react'; import { Icon } from 'mastodon/components/icon'; import { fetchListSuggestions, clearListSuggestions, changeListSuggestions } from '../../../actions/lists'; diff --git a/app/javascript/mastodon/features/list_timeline/index.jsx b/app/javascript/mastodon/features/list_timeline/index.jsx index 4ea794bdd4e..aa87adf52a5 100644 --- a/app/javascript/mastodon/features/list_timeline/index.jsx +++ b/app/javascript/mastodon/features/list_timeline/index.jsx @@ -9,11 +9,11 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import DeleteIcon from '@material-symbols/svg-600/outlined/delete.svg?react'; -import EditIcon from '@material-symbols/svg-600/outlined/edit.svg?react'; -import ListAltIcon from '@material-symbols/svg-600/outlined/list_alt.svg?react'; import Toggle from 'react-toggle'; +import DeleteIcon from 'mastodon/../material-icons/400-24px/delete.svg?react'; +import EditIcon from 'mastodon/../material-icons/400-24px/edit.svg?react'; +import ListAltIcon from 'mastodon/../material-icons/400-24px/list_alt.svg?react'; import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns'; import { fetchList, deleteList, updateList } from 'mastodon/actions/lists'; import { openModal } from 'mastodon/actions/modal'; diff --git a/app/javascript/mastodon/features/lists/index.jsx b/app/javascript/mastodon/features/lists/index.jsx index e59a6e41300..b20bbc6b78a 100644 --- a/app/javascript/mastodon/features/lists/index.jsx +++ b/app/javascript/mastodon/features/lists/index.jsx @@ -9,8 +9,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import ListAltIcon from '@material-symbols/svg-600/outlined/list_alt.svg?react'; - +import ListAltIcon from 'mastodon/../material-icons/400-24px/list_alt.svg?react'; import { fetchLists } from 'mastodon/actions/lists'; import Column from 'mastodon/components/column'; import ColumnHeader from 'mastodon/components/column_header'; diff --git a/app/javascript/mastodon/features/mutes/index.jsx b/app/javascript/mastodon/features/mutes/index.jsx index ab0d30fcd11..316eaba220e 100644 --- a/app/javascript/mastodon/features/mutes/index.jsx +++ b/app/javascript/mastodon/features/mutes/index.jsx @@ -8,9 +8,10 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import VolumeOffIcon from '@material-symbols/svg-600/outlined/volume_off.svg?react'; import { debounce } from 'lodash'; +import VolumeOffIcon from 'mastodon/../material-icons/400-24px/volume_off.svg?react'; + import { fetchMutes, expandMutes } from '../../actions/mutes'; import { LoadingIndicator } from '../../components/loading_indicator'; import ScrollableList from '../../components/scrollable_list'; diff --git a/app/javascript/mastodon/features/notifications/components/clear_column_button.jsx b/app/javascript/mastodon/features/notifications/components/clear_column_button.jsx index 2e257ed5c3d..ac7860efd4b 100644 --- a/app/javascript/mastodon/features/notifications/components/clear_column_button.jsx +++ b/app/javascript/mastodon/features/notifications/components/clear_column_button.jsx @@ -3,8 +3,7 @@ import { PureComponent } from 'react'; import { FormattedMessage } from 'react-intl'; -import DeleteForeverIcon from '@material-symbols/svg-600/outlined/delete_forever.svg?react'; - +import DeleteForeverIcon from 'mastodon/../material-icons/400-24px/delete_forever.svg?react'; import { Icon } from 'mastodon/components/icon'; export default class ClearColumnButton extends PureComponent { diff --git a/app/javascript/mastodon/features/notifications/components/filter_bar.jsx b/app/javascript/mastodon/features/notifications/components/filter_bar.jsx index 56338333b1f..f5651a7d44f 100644 --- a/app/javascript/mastodon/features/notifications/components/filter_bar.jsx +++ b/app/javascript/mastodon/features/notifications/components/filter_bar.jsx @@ -3,13 +3,12 @@ import { PureComponent } from 'react'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import HomeIcon from '@material-symbols/svg-600/outlined/home-fill.svg?react'; -import InsertChartIcon from '@material-symbols/svg-600/outlined/insert_chart.svg?react'; -import PersonAddIcon from '@material-symbols/svg-600/outlined/person_add.svg?react'; -import RepeatIcon from '@material-symbols/svg-600/outlined/repeat.svg?react'; -import ReplyAllIcon from '@material-symbols/svg-600/outlined/reply_all.svg?react'; -import StarIcon from '@material-symbols/svg-600/outlined/star.svg?react'; - +import HomeIcon from 'mastodon/../material-icons/400-24px/home-fill.svg?react'; +import InsertChartIcon from 'mastodon/../material-icons/400-24px/insert_chart.svg?react'; +import PersonAddIcon from 'mastodon/../material-icons/400-24px/person_add.svg?react'; +import RepeatIcon from 'mastodon/../material-icons/400-24px/repeat.svg?react'; +import ReplyAllIcon from 'mastodon/../material-icons/400-24px/reply_all.svg?react'; +import StarIcon from 'mastodon/../material-icons/400-24px/star.svg?react'; import { Icon } from 'mastodon/components/icon'; const tooltips = defineMessages({ diff --git a/app/javascript/mastodon/features/notifications/components/follow_request.jsx b/app/javascript/mastodon/features/notifications/components/follow_request.jsx index 904b6048aef..c6a039adb5d 100644 --- a/app/javascript/mastodon/features/notifications/components/follow_request.jsx +++ b/app/javascript/mastodon/features/notifications/components/follow_request.jsx @@ -7,9 +7,8 @@ import { Link } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import CheckIcon from '@material-symbols/svg-600/outlined/check.svg?react'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; - +import CheckIcon from 'mastodon/../material-icons/400-24px/check.svg?react'; +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; import { Avatar } from 'mastodon/components/avatar'; import { DisplayName } from 'mastodon/components/display_name'; import { IconButton } from 'mastodon/components/icon_button'; diff --git a/app/javascript/mastodon/features/notifications/components/notification.jsx b/app/javascript/mastodon/features/notifications/components/notification.jsx index 24cead5a591..35b31fcd477 100644 --- a/app/javascript/mastodon/features/notifications/components/notification.jsx +++ b/app/javascript/mastodon/features/notifications/components/notification.jsx @@ -8,16 +8,16 @@ import { Link, withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import EditIcon from '@material-symbols/svg-600/outlined/edit.svg?react'; -import FlagIcon from '@material-symbols/svg-600/outlined/flag-fill.svg?react'; -import HomeIcon from '@material-symbols/svg-600/outlined/home-fill.svg?react'; -import InsertChartIcon from '@material-symbols/svg-600/outlined/insert_chart.svg?react'; -import PersonIcon from '@material-symbols/svg-600/outlined/person-fill.svg?react'; -import PersonAddIcon from '@material-symbols/svg-600/outlined/person_add-fill.svg?react'; -import RepeatIcon from '@material-symbols/svg-600/outlined/repeat.svg?react'; -import StarIcon from '@material-symbols/svg-600/outlined/star-fill.svg?react'; import { HotKeys } from 'react-hotkeys'; +import EditIcon from 'mastodon/../material-icons/400-24px/edit.svg?react'; +import FlagIcon from 'mastodon/../material-icons/400-24px/flag-fill.svg?react'; +import HomeIcon from 'mastodon/../material-icons/400-24px/home-fill.svg?react'; +import InsertChartIcon from 'mastodon/../material-icons/400-24px/insert_chart.svg?react'; +import PersonIcon from 'mastodon/../material-icons/400-24px/person-fill.svg?react'; +import PersonAddIcon from 'mastodon/../material-icons/400-24px/person_add-fill.svg?react'; +import RepeatIcon from 'mastodon/../material-icons/400-24px/repeat.svg?react'; +import StarIcon from 'mastodon/../material-icons/400-24px/star-fill.svg?react'; import { Icon } from 'mastodon/components/icon'; import AccountContainer from 'mastodon/containers/account_container'; import StatusContainer from 'mastodon/containers/status_container'; diff --git a/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.jsx b/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.jsx index 1c1750f72fe..a577abd8641 100644 --- a/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.jsx +++ b/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.jsx @@ -5,9 +5,8 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; -import TuneIcon from '@material-symbols/svg-600/outlined/tune.svg?react'; - +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; +import TuneIcon from 'mastodon/../material-icons/400-24px/tune.svg?react'; import { requestBrowserPermission } from 'mastodon/actions/notifications'; import { changeSetting } from 'mastodon/actions/settings'; import { Button } from 'mastodon/components/button'; diff --git a/app/javascript/mastodon/features/notifications/index.jsx b/app/javascript/mastodon/features/notifications/index.jsx index a841f346dd0..0751f1620c4 100644 --- a/app/javascript/mastodon/features/notifications/index.jsx +++ b/app/javascript/mastodon/features/notifications/index.jsx @@ -10,10 +10,10 @@ import { List as ImmutableList } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import DoneAllIcon from '@material-symbols/svg-600/outlined/done_all.svg?react'; -import NotificationsIcon from '@material-symbols/svg-600/outlined/notifications-fill.svg?react'; import { debounce } from 'lodash'; +import DoneAllIcon from 'mastodon/../material-icons/400-24px/done_all.svg?react'; +import NotificationsIcon from 'mastodon/../material-icons/400-24px/notifications-fill.svg?react'; import { compareId } from 'mastodon/compare_id'; import { Icon } from 'mastodon/components/icon'; import { NotSignedInIndicator } from 'mastodon/components/not_signed_in_indicator'; diff --git a/app/javascript/mastodon/features/onboarding/components/step.jsx b/app/javascript/mastodon/features/onboarding/components/step.jsx index 0eca65615c9..46c9b1645df 100644 --- a/app/javascript/mastodon/features/onboarding/components/step.jsx +++ b/app/javascript/mastodon/features/onboarding/components/step.jsx @@ -2,9 +2,8 @@ import PropTypes from 'prop-types'; import { Link } from 'react-router-dom'; -import ArrowRightAltIcon from '@material-symbols/svg-600/outlined/arrow_right_alt.svg?react'; -import CheckIcon from '@material-symbols/svg-600/outlined/done.svg?react'; - +import ArrowRightAltIcon from 'mastodon/../material-icons/400-24px/arrow_right_alt.svg?react'; +import CheckIcon from 'mastodon/../material-icons/400-24px/done.svg?react'; import { Icon } from 'mastodon/components/icon'; export const Step = ({ label, description, icon, iconComponent, completed, onClick, href, to }) => { diff --git a/app/javascript/mastodon/features/onboarding/index.jsx b/app/javascript/mastodon/features/onboarding/index.jsx index 54699a1349f..9271468da07 100644 --- a/app/javascript/mastodon/features/onboarding/index.jsx +++ b/app/javascript/mastodon/features/onboarding/index.jsx @@ -8,13 +8,12 @@ import { Link, Switch, Route, useHistory } from 'react-router-dom'; import { useDispatch } from 'react-redux'; -import AccountCircleIcon from '@material-symbols/svg-600/outlined/account_circle.svg?react'; -import ArrowRightAltIcon from '@material-symbols/svg-600/outlined/arrow_right_alt.svg?react'; -import ContentCopyIcon from '@material-symbols/svg-600/outlined/content_copy.svg?react'; -import EditNoteIcon from '@material-symbols/svg-600/outlined/edit_note.svg?react'; -import PersonAddIcon from '@material-symbols/svg-600/outlined/person_add.svg?react'; - import illustration from 'mastodon/../images/elephant_ui_conversation.svg'; +import AccountCircleIcon from 'mastodon/../material-icons/400-24px/account_circle.svg?react'; +import ArrowRightAltIcon from 'mastodon/../material-icons/400-24px/arrow_right_alt.svg?react'; +import ContentCopyIcon from 'mastodon/../material-icons/400-24px/content_copy.svg?react'; +import EditNoteIcon from 'mastodon/../material-icons/400-24px/edit_note.svg?react'; +import PersonAddIcon from 'mastodon/../material-icons/400-24px/person_add.svg?react'; import { focusCompose } from 'mastodon/actions/compose'; import { Icon } from 'mastodon/components/icon'; import Column from 'mastodon/features/ui/components/column'; diff --git a/app/javascript/mastodon/features/onboarding/profile.jsx b/app/javascript/mastodon/features/onboarding/profile.jsx index 6765c919e84..5217b42ad53 100644 --- a/app/javascript/mastodon/features/onboarding/profile.jsx +++ b/app/javascript/mastodon/features/onboarding/profile.jsx @@ -8,10 +8,10 @@ import { useHistory } from 'react-router-dom'; import { useDispatch } from 'react-redux'; -import AddPhotoAlternateIcon from '@material-symbols/svg-600/outlined/add_photo_alternate.svg?react'; -import EditIcon from '@material-symbols/svg-600/outlined/edit.svg?react'; import Toggle from 'react-toggle'; +import AddPhotoAlternateIcon from 'mastodon/../material-icons/400-24px/add_photo_alternate.svg?react'; +import EditIcon from 'mastodon/../material-icons/400-24px/edit.svg?react'; import { updateAccount } from 'mastodon/actions/accounts'; import { Button } from 'mastodon/components/button'; import { ColumnBackButton } from 'mastodon/components/column_back_button'; diff --git a/app/javascript/mastodon/features/onboarding/share.jsx b/app/javascript/mastodon/features/onboarding/share.jsx index 657edabd744..cde63d0b340 100644 --- a/app/javascript/mastodon/features/onboarding/share.jsx +++ b/app/javascript/mastodon/features/onboarding/share.jsx @@ -7,10 +7,10 @@ import classNames from 'classnames'; import { Link } from 'react-router-dom'; -import ArrowRightAltIcon from '@material-symbols/svg-600/outlined/arrow_right_alt.svg?react'; -import ContentCopyIcon from '@material-symbols/svg-600/outlined/content_copy.svg?react'; import SwipeableViews from 'react-swipeable-views'; +import ArrowRightAltIcon from 'mastodon/../material-icons/400-24px/arrow_right_alt.svg?react'; +import ContentCopyIcon from 'mastodon/../material-icons/400-24px/content_copy.svg?react'; import { ColumnBackButton } from 'mastodon/components/column_back_button'; import { Icon } from 'mastodon/components/icon'; import { me, domain } from 'mastodon/initial_state'; diff --git a/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx b/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx index d73b6d2adfc..d60cd5e1efa 100644 --- a/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx +++ b/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx @@ -9,12 +9,11 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import OpenInNewIcon from '@material-symbols/svg-600/outlined/open_in_new.svg?react'; -import RepeatIcon from '@material-symbols/svg-600/outlined/repeat.svg?react'; -import ReplyIcon from '@material-symbols/svg-600/outlined/reply.svg?react'; -import ReplyAllIcon from '@material-symbols/svg-600/outlined/reply_all.svg?react'; -import StarIcon from '@material-symbols/svg-600/outlined/star.svg?react'; - +import OpenInNewIcon from 'mastodon/../material-icons/400-24px/open_in_new.svg?react'; +import RepeatIcon from 'mastodon/../material-icons/400-24px/repeat.svg?react'; +import ReplyIcon from 'mastodon/../material-icons/400-24px/reply.svg?react'; +import ReplyAllIcon from 'mastodon/../material-icons/400-24px/reply_all.svg?react'; +import StarIcon from 'mastodon/../material-icons/400-24px/star.svg?react'; import { initBoostModal } from 'mastodon/actions/boosts'; import { replyCompose } from 'mastodon/actions/compose'; import { reblog, favourite, unreblog, unfavourite } from 'mastodon/actions/interactions'; diff --git a/app/javascript/mastodon/features/picture_in_picture/components/header.jsx b/app/javascript/mastodon/features/picture_in_picture/components/header.jsx index 608142b988d..12a5566d39f 100644 --- a/app/javascript/mastodon/features/picture_in_picture/components/header.jsx +++ b/app/javascript/mastodon/features/picture_in_picture/components/header.jsx @@ -8,8 +8,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; - +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; import { Avatar } from 'mastodon/components/avatar'; import { DisplayName } from 'mastodon/components/display_name'; import { IconButton } from 'mastodon/components/icon_button'; diff --git a/app/javascript/mastodon/features/pinned_statuses/index.jsx b/app/javascript/mastodon/features/pinned_statuses/index.jsx index 2e68336a4f1..3d6dc753e35 100644 --- a/app/javascript/mastodon/features/pinned_statuses/index.jsx +++ b/app/javascript/mastodon/features/pinned_statuses/index.jsx @@ -8,8 +8,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import PushPinIcon from '@material-symbols/svg-600/outlined/push_pin.svg?react'; - +import PushPinIcon from 'mastodon/../material-icons/400-24px/push_pin.svg?react'; import { getStatusList } from 'mastodon/selectors'; import { fetchPinnedStatuses } from '../../actions/pin_statuses'; diff --git a/app/javascript/mastodon/features/public_timeline/index.jsx b/app/javascript/mastodon/features/public_timeline/index.jsx index 6aa6d27b9dd..302a2956ede 100644 --- a/app/javascript/mastodon/features/public_timeline/index.jsx +++ b/app/javascript/mastodon/features/public_timeline/index.jsx @@ -7,8 +7,7 @@ import { Helmet } from 'react-helmet'; import { connect } from 'react-redux'; -import PublicIcon from '@material-symbols/svg-600/outlined/public.svg?react'; - +import PublicIcon from 'mastodon/../material-icons/400-24px/public.svg?react'; import { DismissableBanner } from 'mastodon/components/dismissable_banner'; import { domain } from 'mastodon/initial_state'; diff --git a/app/javascript/mastodon/features/reblogs/index.jsx b/app/javascript/mastodon/features/reblogs/index.jsx index aeba1ecff3f..0d5183fb88b 100644 --- a/app/javascript/mastodon/features/reblogs/index.jsx +++ b/app/javascript/mastodon/features/reblogs/index.jsx @@ -8,9 +8,9 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import RefreshIcon from '@material-symbols/svg-600/outlined/refresh.svg?react'; import { debounce } from 'lodash'; +import RefreshIcon from 'mastodon/../material-icons/400-24px/refresh.svg?react'; import { Icon } from 'mastodon/components/icon'; import { fetchReblogs, expandReblogs } from '../../actions/interactions'; diff --git a/app/javascript/mastodon/features/report/components/option.jsx b/app/javascript/mastodon/features/report/components/option.jsx index 9ffe43388c7..d6949f0c513 100644 --- a/app/javascript/mastodon/features/report/components/option.jsx +++ b/app/javascript/mastodon/features/report/components/option.jsx @@ -3,8 +3,7 @@ import { PureComponent } from 'react'; import classNames from 'classnames'; -import CheckIcon from '@material-symbols/svg-600/outlined/done.svg?react'; - +import CheckIcon from 'mastodon/../material-icons/400-24px/done.svg?react'; import { Icon } from 'mastodon/components/icon'; export default class Option extends PureComponent { diff --git a/app/javascript/mastodon/features/status/components/action_bar.jsx b/app/javascript/mastodon/features/status/components/action_bar.jsx index 9355cb1f5c9..b7608245583 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.jsx +++ b/app/javascript/mastodon/features/status/components/action_bar.jsx @@ -9,15 +9,14 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import BookmarkIcon from '@material-symbols/svg-600/outlined/bookmark-fill.svg?react'; -import BookmarkBorderIcon from '@material-symbols/svg-600/outlined/bookmark.svg?react'; -import MoreHorizIcon from '@material-symbols/svg-600/outlined/more_horiz.svg?react'; -import RepeatIcon from '@material-symbols/svg-600/outlined/repeat.svg?react'; -import ReplyIcon from '@material-symbols/svg-600/outlined/reply.svg?react'; -import ReplyAllIcon from '@material-symbols/svg-600/outlined/reply_all.svg?react'; -import StarIcon from '@material-symbols/svg-600/outlined/star-fill.svg?react'; -import StarBorderIcon from '@material-symbols/svg-600/outlined/star.svg?react'; - +import BookmarkIcon from 'mastodon/../material-icons/400-24px/bookmark-fill.svg?react'; +import BookmarkBorderIcon from 'mastodon/../material-icons/400-24px/bookmark.svg?react'; +import MoreHorizIcon from 'mastodon/../material-icons/400-24px/more_horiz.svg?react'; +import RepeatIcon from 'mastodon/../material-icons/400-24px/repeat.svg?react'; +import ReplyIcon from 'mastodon/../material-icons/400-24px/reply.svg?react'; +import ReplyAllIcon from 'mastodon/../material-icons/400-24px/reply_all.svg?react'; +import StarIcon from 'mastodon/../material-icons/400-24px/star-fill.svg?react'; +import StarBorderIcon from 'mastodon/../material-icons/400-24px/star.svg?react'; import RepeatDisabledIcon from 'mastodon/../svg-icons/repeat_disabled.svg?react'; import RepeatPrivateIcon from 'mastodon/../svg-icons/repeat_private.svg?react'; import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_FEDERATION } from 'mastodon/permissions'; diff --git a/app/javascript/mastodon/features/status/components/card.jsx b/app/javascript/mastodon/features/status/components/card.jsx index 9497acffac9..c211dc64c89 100644 --- a/app/javascript/mastodon/features/status/components/card.jsx +++ b/app/javascript/mastodon/features/status/components/card.jsx @@ -10,10 +10,9 @@ import classNames from 'classnames'; import Immutable from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import DescriptionIcon from '@material-symbols/svg-600/outlined/description-fill.svg?react'; -import OpenInNewIcon from '@material-symbols/svg-600/outlined/open_in_new.svg?react'; -import PlayArrowIcon from '@material-symbols/svg-600/outlined/play_arrow-fill.svg?react'; - +import DescriptionIcon from 'mastodon/../material-icons/400-24px/description-fill.svg?react'; +import OpenInNewIcon from 'mastodon/../material-icons/400-24px/open_in_new.svg?react'; +import PlayArrowIcon from 'mastodon/../material-icons/400-24px/play_arrow-fill.svg?react'; import { Blurhash } from 'mastodon/components/blurhash'; import { Icon } from 'mastodon/components/icon'; import { RelativeTimestamp } from 'mastodon/components/relative_timestamp'; diff --git a/app/javascript/mastodon/features/status/components/detailed_status.jsx b/app/javascript/mastodon/features/status/components/detailed_status.jsx index 03bb6a50bc5..2ebafe7b488 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.jsx +++ b/app/javascript/mastodon/features/status/components/detailed_status.jsx @@ -8,10 +8,9 @@ import { Link, withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import AlternateEmailIcon from '@material-symbols/svg-600/outlined/alternate_email.svg?react'; -import RepeatIcon from '@material-symbols/svg-600/outlined/repeat.svg?react'; -import StarIcon from '@material-symbols/svg-600/outlined/star-fill.svg?react'; - +import AlternateEmailIcon from 'mastodon/../material-icons/400-24px/alternate_email.svg?react'; +import RepeatIcon from 'mastodon/../material-icons/400-24px/repeat.svg?react'; +import StarIcon from 'mastodon/../material-icons/400-24px/star-fill.svg?react'; import { AnimatedNumber } from 'mastodon/components/animated_number'; import EditedTimestamp from 'mastodon/components/edited_timestamp'; import { getHashtagBarForStatus } from 'mastodon/components/hashtag_bar'; diff --git a/app/javascript/mastodon/features/status/index.jsx b/app/javascript/mastodon/features/status/index.jsx index d4ab3a5dcd9..c8ccddddbe2 100644 --- a/app/javascript/mastodon/features/status/index.jsx +++ b/app/javascript/mastodon/features/status/index.jsx @@ -12,10 +12,10 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import VisibilityIcon from '@material-symbols/svg-600/outlined/visibility.svg?react'; -import VisibilityOffIcon from '@material-symbols/svg-600/outlined/visibility_off.svg?react'; import { HotKeys } from 'react-hotkeys'; +import VisibilityIcon from 'mastodon/../material-icons/400-24px/visibility.svg?react'; +import VisibilityOffIcon from 'mastodon/../material-icons/400-24px/visibility_off.svg?react'; import { Icon } from 'mastodon/components/icon'; import { LoadingIndicator } from 'mastodon/components/loading_indicator'; import ScrollContainer from 'mastodon/containers/scroll_container'; diff --git a/app/javascript/mastodon/features/subscribed_languages_modal/index.jsx b/app/javascript/mastodon/features/subscribed_languages_modal/index.jsx index f6909254188..8c1a8f486cb 100644 --- a/app/javascript/mastodon/features/subscribed_languages_modal/index.jsx +++ b/app/javascript/mastodon/features/subscribed_languages_modal/index.jsx @@ -8,8 +8,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; - +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; import { followAccount } from 'mastodon/actions/accounts'; import { Button } from 'mastodon/components/button'; import { IconButton } from 'mastodon/components/icon_button'; diff --git a/app/javascript/mastodon/features/ui/components/boost_modal.jsx b/app/javascript/mastodon/features/ui/components/boost_modal.jsx index 851acbb7197..7e9d8c98192 100644 --- a/app/javascript/mastodon/features/ui/components/boost_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/boost_modal.jsx @@ -9,8 +9,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import RepeatIcon from '@material-symbols/svg-600/outlined/repeat.svg?react'; - +import RepeatIcon from 'mastodon/../material-icons/400-24px/repeat.svg?react'; import { changeBoostPrivacy } from 'mastodon/actions/boosts'; import AttachmentList from 'mastodon/components/attachment_list'; import { Icon } from 'mastodon/components/icon'; diff --git a/app/javascript/mastodon/features/ui/components/bundle_modal_error.jsx b/app/javascript/mastodon/features/ui/components/bundle_modal_error.jsx index 31c4ce0e977..dd2a10608d8 100644 --- a/app/javascript/mastodon/features/ui/components/bundle_modal_error.jsx +++ b/app/javascript/mastodon/features/ui/components/bundle_modal_error.jsx @@ -3,7 +3,7 @@ import { PureComponent } from 'react'; import { defineMessages, injectIntl } from 'react-intl'; -import RefreshIcon from '@material-symbols/svg-600/outlined/refresh.svg?react'; +import RefreshIcon from 'mastodon/../material-icons/400-24px/refresh.svg?react'; import { IconButton } from '../../../components/icon_button'; diff --git a/app/javascript/mastodon/features/ui/components/compare_history_modal.jsx b/app/javascript/mastodon/features/ui/components/compare_history_modal.jsx index 7807a103eee..1080c303c5d 100644 --- a/app/javascript/mastodon/features/ui/components/compare_history_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/compare_history_modal.jsx @@ -6,9 +6,9 @@ import { FormattedMessage } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; import escapeTextContentForBrowser from 'escape-html'; +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; import { closeModal } from 'mastodon/actions/modal'; import { IconButton } from 'mastodon/components/icon_button'; import InlineAccount from 'mastodon/components/inline_account'; diff --git a/app/javascript/mastodon/features/ui/components/embed_modal.jsx b/app/javascript/mastodon/features/ui/components/embed_modal.jsx index 60d04d23784..595e9771b5e 100644 --- a/app/javascript/mastodon/features/ui/components/embed_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/embed_modal.jsx @@ -4,8 +4,7 @@ import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; - +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; import api from 'mastodon/api'; import { IconButton } from 'mastodon/components/icon_button'; diff --git a/app/javascript/mastodon/features/ui/components/filter_modal.jsx b/app/javascript/mastodon/features/ui/components/filter_modal.jsx index 3f3855d9f14..25cda00bea9 100644 --- a/app/javascript/mastodon/features/ui/components/filter_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/filter_modal.jsx @@ -5,8 +5,7 @@ import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; - +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; import { fetchFilters, createFilter, createFilterStatus } from 'mastodon/actions/filters'; import { fetchStatus } from 'mastodon/actions/statuses'; import { IconButton } from 'mastodon/components/icon_button'; diff --git a/app/javascript/mastodon/features/ui/components/focal_point_modal.jsx b/app/javascript/mastodon/features/ui/components/focal_point_modal.jsx index f2998f217a8..a3bb22bd99e 100644 --- a/app/javascript/mastodon/features/ui/components/focal_point_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/focal_point_modal.jsx @@ -9,7 +9,6 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; import Textarea from 'react-textarea-autosize'; import { length } from 'stringz'; // eslint-disable-next-line import/extensions @@ -17,6 +16,7 @@ import tesseractWorkerPath from 'tesseract.js/dist/worker.min.js'; // eslint-disable-next-line import/no-extraneous-dependencies import tesseractCorePath from 'tesseract.js-core/tesseract-core.wasm.js'; +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; import { Button } from 'mastodon/components/button'; import { GIFV } from 'mastodon/components/gifv'; import { IconButton } from 'mastodon/components/icon_button'; diff --git a/app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx b/app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx index d40c67a7524..6df753b0694 100644 --- a/app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx +++ b/app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx @@ -6,8 +6,7 @@ import { injectIntl, defineMessages } from 'react-intl'; import { List as ImmutableList } from 'immutable'; import { connect } from 'react-redux'; -import PersonAddIcon from '@material-symbols/svg-600/outlined/person_add.svg?react'; - +import PersonAddIcon from 'mastodon/../material-icons/400-24px/person_add.svg?react'; import { fetchFollowRequests } from 'mastodon/actions/accounts'; import { IconWithBadge } from 'mastodon/components/icon_with_badge'; import ColumnLink from 'mastodon/features/ui/components/column_link'; diff --git a/app/javascript/mastodon/features/ui/components/header.jsx b/app/javascript/mastodon/features/ui/components/header.jsx index 6ece50184af..b4f388ba84c 100644 --- a/app/javascript/mastodon/features/ui/components/header.jsx +++ b/app/javascript/mastodon/features/ui/components/header.jsx @@ -7,8 +7,7 @@ import { Link, withRouter } from 'react-router-dom'; import { connect } from 'react-redux'; -import SearchIcon from '@material-symbols/svg-600/outlined/search.svg?react'; - +import SearchIcon from 'mastodon/../material-icons/400-24px/search.svg?react'; import { openModal } from 'mastodon/actions/modal'; import { fetchServer } from 'mastodon/actions/server'; import { Avatar } from 'mastodon/components/avatar'; diff --git a/app/javascript/mastodon/features/ui/components/image_modal.jsx b/app/javascript/mastodon/features/ui/components/image_modal.jsx index 44fb172ad27..5a700dc1f74 100644 --- a/app/javascript/mastodon/features/ui/components/image_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/image_modal.jsx @@ -5,8 +5,7 @@ import { defineMessages, injectIntl } from 'react-intl'; import classNames from 'classnames'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; - +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; import { IconButton } from 'mastodon/components/icon_button'; import ImageLoader from './image_loader'; diff --git a/app/javascript/mastodon/features/ui/components/list_panel.jsx b/app/javascript/mastodon/features/ui/components/list_panel.jsx index b574668b203..634f13e6118 100644 --- a/app/javascript/mastodon/features/ui/components/list_panel.jsx +++ b/app/javascript/mastodon/features/ui/components/list_panel.jsx @@ -5,8 +5,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import ListAltIcon from '@material-symbols/svg-600/outlined/list_alt.svg?react'; - +import ListAltIcon from 'mastodon/../material-icons/400-24px/list_alt.svg?react'; import { fetchLists } from 'mastodon/actions/lists'; import ColumnLink from './column_link'; diff --git a/app/javascript/mastodon/features/ui/components/media_modal.jsx b/app/javascript/mastodon/features/ui/components/media_modal.jsx index 95d8ae5df11..b5b5d88693f 100644 --- a/app/javascript/mastodon/features/ui/components/media_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/media_modal.jsx @@ -7,11 +7,11 @@ import classNames from 'classnames'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import ChevronLeftIcon from '@material-symbols/svg-600/outlined/chevron_left.svg?react'; -import ChevronRightIcon from '@material-symbols/svg-600/outlined/chevron_right.svg?react'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; import ReactSwipeableViews from 'react-swipeable-views'; +import ChevronLeftIcon from 'mastodon/../material-icons/400-24px/chevron_left.svg?react'; +import ChevronRightIcon from 'mastodon/../material-icons/400-24px/chevron_right.svg?react'; +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; import { getAverageFromBlurhash } from 'mastodon/blurhash'; import { GIFV } from 'mastodon/components/gifv'; import { Icon } from 'mastodon/components/icon'; diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.jsx b/app/javascript/mastodon/features/ui/components/navigation_panel.jsx index e5b762807d1..72da652b3d6 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.jsx +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.jsx @@ -5,17 +5,16 @@ import { defineMessages, injectIntl } from 'react-intl'; import { Link } from 'react-router-dom'; -import AlternateEmailIcon from '@material-symbols/svg-600/outlined/alternate_email.svg?react'; -import BookmarksIcon from '@material-symbols/svg-600/outlined/bookmarks-fill.svg?react'; -import HomeIcon from '@material-symbols/svg-600/outlined/home-fill.svg?react'; -import ListAltIcon from '@material-symbols/svg-600/outlined/list_alt.svg?react'; -import MoreHorizIcon from '@material-symbols/svg-600/outlined/more_horiz.svg?react'; -import PublicIcon from '@material-symbols/svg-600/outlined/public.svg?react'; -import SearchIcon from '@material-symbols/svg-600/outlined/search.svg?react'; -import SettingsIcon from '@material-symbols/svg-600/outlined/settings-fill.svg?react'; -import StarIcon from '@material-symbols/svg-600/outlined/star-fill.svg?react'; -import TagIcon from '@material-symbols/svg-600/outlined/tag.svg?react'; - +import AlternateEmailIcon from 'mastodon/../material-icons/400-24px/alternate_email.svg?react'; +import BookmarksIcon from 'mastodon/../material-icons/400-24px/bookmarks-fill.svg?react'; +import HomeIcon from 'mastodon/../material-icons/400-24px/home-fill.svg?react'; +import ListAltIcon from 'mastodon/../material-icons/400-24px/list_alt.svg?react'; +import MoreHorizIcon from 'mastodon/../material-icons/400-24px/more_horiz.svg?react'; +import PublicIcon from 'mastodon/../material-icons/400-24px/public.svg?react'; +import SearchIcon from 'mastodon/../material-icons/400-24px/search.svg?react'; +import SettingsIcon from 'mastodon/../material-icons/400-24px/settings-fill.svg?react'; +import StarIcon from 'mastodon/../material-icons/400-24px/star-fill.svg?react'; +import TagIcon from 'mastodon/../material-icons/400-24px/tag.svg?react'; import { WordmarkLogo } from 'mastodon/components/logo'; import { NavigationPortal } from 'mastodon/components/navigation_portal'; import { timelinePreview, trendsEnabled } from 'mastodon/initial_state'; diff --git a/app/javascript/mastodon/features/ui/components/notifications_counter_icon.js b/app/javascript/mastodon/features/ui/components/notifications_counter_icon.js index 435bebd0b1f..34e868acc87 100644 --- a/app/javascript/mastodon/features/ui/components/notifications_counter_icon.js +++ b/app/javascript/mastodon/features/ui/components/notifications_counter_icon.js @@ -1,7 +1,6 @@ import { connect } from 'react-redux'; -import NotificationsIcon from '@material-symbols/svg-600/outlined/notifications-fill.svg?react'; - +import NotificationsIcon from 'mastodon/../material-icons/400-24px/notifications-fill.svg?react'; import { IconWithBadge } from 'mastodon/components/icon_with_badge'; diff --git a/app/javascript/mastodon/features/ui/components/report_modal.jsx b/app/javascript/mastodon/features/ui/components/report_modal.jsx index 27207f2fbf7..aae0e96ac4f 100644 --- a/app/javascript/mastodon/features/ui/components/report_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/report_modal.jsx @@ -7,8 +7,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import CloseIcon from '@material-symbols/svg-600/outlined/close.svg?react'; - +import CloseIcon from 'mastodon/../material-icons/400-24px/close.svg?react'; import { submitReport } from 'mastodon/actions/reports'; import { fetchServer } from 'mastodon/actions/server'; import { expandAccountTimeline } from 'mastodon/actions/timelines'; diff --git a/app/javascript/mastodon/features/ui/components/zoomable_image.jsx b/app/javascript/mastodon/features/ui/components/zoomable_image.jsx index 7d4f1f55dd5..e3fa7c3b8a5 100644 --- a/app/javascript/mastodon/features/ui/components/zoomable_image.jsx +++ b/app/javascript/mastodon/features/ui/components/zoomable_image.jsx @@ -3,9 +3,8 @@ import { PureComponent } from 'react'; import { defineMessages, injectIntl } from 'react-intl'; -import FullscreenExitIcon from '@material-symbols/svg-600/outlined/fullscreen_exit.svg?react'; -import RectangleIcon from '@material-symbols/svg-600/outlined/rectangle.svg?react'; - +import FullscreenExitIcon from 'mastodon/../material-icons/400-24px/fullscreen_exit.svg?react'; +import RectangleIcon from 'mastodon/../material-icons/400-24px/rectangle.svg?react'; import { IconButton } from 'mastodon/components/icon_button'; const messages = defineMessages({ diff --git a/app/javascript/mastodon/features/video/index.jsx b/app/javascript/mastodon/features/video/index.jsx index 73034bbf668..efcbbc174e9 100644 --- a/app/javascript/mastodon/features/video/index.jsx +++ b/app/javascript/mastodon/features/video/index.jsx @@ -7,16 +7,16 @@ import classNames from 'classnames'; import { is } from 'immutable'; -import FullscreenIcon from '@material-symbols/svg-600/outlined/fullscreen.svg?react'; -import FullscreenExitIcon from '@material-symbols/svg-600/outlined/fullscreen_exit.svg?react'; -import PauseIcon from '@material-symbols/svg-600/outlined/pause.svg?react'; -import PlayArrowIcon from '@material-symbols/svg-600/outlined/play_arrow-fill.svg?react'; -import RectangleIcon from '@material-symbols/svg-600/outlined/rectangle.svg?react'; -import VisibilityOffIcon from '@material-symbols/svg-600/outlined/visibility_off.svg?react'; -import VolumeOffIcon from '@material-symbols/svg-600/outlined/volume_off-fill.svg?react'; -import VolumeUpIcon from '@material-symbols/svg-600/outlined/volume_up-fill.svg?react'; import { throttle } from 'lodash'; +import FullscreenIcon from 'mastodon/../material-icons/400-24px/fullscreen.svg?react'; +import FullscreenExitIcon from 'mastodon/../material-icons/400-24px/fullscreen_exit.svg?react'; +import PauseIcon from 'mastodon/../material-icons/400-24px/pause.svg?react'; +import PlayArrowIcon from 'mastodon/../material-icons/400-24px/play_arrow-fill.svg?react'; +import RectangleIcon from 'mastodon/../material-icons/400-24px/rectangle.svg?react'; +import VisibilityOffIcon from 'mastodon/../material-icons/400-24px/visibility_off.svg?react'; +import VolumeOffIcon from 'mastodon/../material-icons/400-24px/volume_off-fill.svg?react'; +import VolumeUpIcon from 'mastodon/../material-icons/400-24px/volume_up-fill.svg?react'; import { Blurhash } from 'mastodon/components/blurhash'; import { Icon } from 'mastodon/components/icon'; import { playerSettings } from 'mastodon/settings'; diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index c4238edcd40..4b555c4829c 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -13,14 +13,12 @@ "about.rules": "Normes del sirvidor", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Amestar o quitar de les llistes", - "account.badges.bot": "Automatizáu", "account.badges.group": "Grupu", "account.block": "Bloquiar a @{name}", "account.block_domain": "Bloquiar el dominiu {domain}", "account.block_short": "Bloquiar", "account.blocked": "Perfil bloquiáu", "account.browse_more_on_origin_server": "Restolar más nel perfil orixinal", - "account.cancel_follow_request": "Atayar siguimientu", "account.copy": "Copiar I'enllaz al perfil", "account.direct": "Mentar a @{name} per privao", "account.disable_notifications": "Dexar d'avisame cuando @{name} espublice artículos", @@ -28,13 +26,11 @@ "account.edit_profile": "Editar el perfil", "account.enable_notifications": "Avisame cuando @{name} espublice artículos", "account.endorse": "Destacar nel perfil", - "account.featured_tags.last_status_at": "Últimu estáu en {date}", - "account.featured_tags.last_status_never": "Sin estaos", + "account.featured_tags.last_status_never": "Nun hai nengún artículu", "account.featured_tags.title": "Etiquetes destacaes de: {name}", "account.follow": "Siguir", "account.followers": "Siguidores", "account.followers.empty": "Naide sigue a esti perfil.", - "account.followers_counter": "{count, plural, one {{counter} Siguíu} other {{counter} Siguíos}}", "account.following": "Siguiendo", "account.following_counter": "{count, plural,one {Sigue a {counter}} other {Sigue a {counter}}}", "account.follows.empty": "Esti perfil nun sigue a naide.", @@ -42,7 +38,6 @@ "account.hide_reblogs": "Anubrir los artículos compartíos de @{name}", "account.in_memoriam": "N'alcordanza.", "account.joined_short": "Data de xunión", - "account.languages": "Camudar llingües suscrites", "account.link_verified_on": "La propiedá d'esti enllaz foi comprobada'l {date}", "account.media": "Multimedia", "account.mention": "Mentar a @{name}", @@ -108,6 +103,7 @@ "community.column_settings.remote_only": "Namás lo remoto", "compose.language.change": "Camudar la llingua", "compose.language.search": "Buscar llingües…", + "compose.published.body": "Espublizóse l'artículu.", "compose_form.direct_message_warning_learn_more": "Saber más", "compose_form.encryption_warning": "Los artículos de Mastodon nun tán cifraos de puntu a puntu. Nun compartas nengún tipu d'información sensible per Mastodon.", "compose_form.lock_disclaimer": "La to cuenta nun ye {locked}. Cualesquier perfil pue siguite pa ver los artículos que son namás pa siguidores.", @@ -299,6 +295,7 @@ "navigation_bar.lists": "Llistes", "navigation_bar.logout": "Zarrar la sesión", "navigation_bar.mutes": "Perfiles colos avisos desactivaos", + "navigation_bar.opened_in_classic_interface": "Los artículos, les cuentes ya otres páxines específiques ábrense por defeutu na interfaz web clásica.", "navigation_bar.pins": "Artículos fixaos", "navigation_bar.preferences": "Preferencies", "navigation_bar.public_timeline": "Llinia de tiempu federada", @@ -334,7 +331,7 @@ "notifications.group": "{count} avisos", "notifications.mark_as_read": "Marcar tolos avisos como lleíos", "notifications.permission_required": "Los avisos d'escritoriu nun tán disponibles porque nun se concedió'l permisu riquíu.", - "onboarding.actions.go_to_explore": "See what's trending", + "onboarding.profile.note_hint": "Pues @mentar a otros perfiles o poner #etiquetes…", "onboarding.start.lead": "Xá yes parte de Mastodon, una plataforma social multimedia descentralizada onde tu ya non un algoritmu, personalices la to esperiencia. Vamos presentate esti llugar social nuevu:", "onboarding.start.skip": "¿Nun precises ayuda pa comenzar?", "onboarding.steps.follow_people.body": "Mastodon trata namás de siguir a cuentes interesantes.", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 76d7c1d3812..412159bef9b 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -386,6 +386,7 @@ "navigation_bar.security": "सुरक्षा", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.reblog": "{name} boosted your status", + "notification.status": "{name} ने अभी पोस्ट किया", "notifications.clear": "सूचनाएं हटाए", "notifications.column_settings.admin.report": "नई रिपोर्ट:", "notifications.column_settings.favourite": "पसंदीदा:", @@ -399,9 +400,12 @@ "notifications.column_settings.show": "कॉलम में दिखाएँ", "notifications.column_settings.sound": "ध्वनि चलाएँ", "notifications.column_settings.status": "New toots:", + "notifications.column_settings.unread_notifications.category": "अपठित सूचनाएं", + "notifications.column_settings.unread_notifications.highlight": "अपठित सूचनाओं को हाइलाइट करें", "notifications.column_settings.update": "संपादन:", "notifications.filter.all": "सभी", "notifications.filter.boosts": "बूस्ट", + "notifications.filter.favourites": "पसंदीदा", "notifications.filter.follows": "फॉलो", "notifications.filter.mentions": "उल्लेख", "notifications.filter.polls": "चुनाव परिणाम", @@ -416,6 +420,7 @@ "onboarding.follows.title": "Popular on Mastodon", "onboarding.profile.discoverable": "अपना प्रोफाइल खोजने योग्य बनाएं", "onboarding.profile.discoverable_hint": "जब आप मॅस्टोडॉन पर डिस्कवरेबिलिटी चुनते हैं तो आपके पोस्ट ट्रेंडिंग और सर्च में दिख सकते हैं और आपका प्रोफाइल आपके ही जैसे अकाउंट्स को सुझाया जा सकता है।", + "onboarding.profile.display_name": "प्रदर्शित नाम", "onboarding.share.message": "मैं {username} मॅस्टोडॉन पर हूं! मुझे यहां {url} फॉलो करें", "onboarding.share.next_steps": "आगे कि संभवित विधि", "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:", @@ -445,6 +450,9 @@ "recommended": "अनुशंसित", "refresh": "रीफ्रेश करें", "regeneration_indicator.label": "लोड हो रहा है...", + "relative_time.days": "{number}दिन", + "relative_time.full.days": "{number, plural, one {# दिन} other {# दिन}} पहले", + "relative_time.full.hours": "{number, plural,one {# घंटा} other {# घंटे}} पहले", "relative_time.full.just_now": "अभी-अभी", "relative_time.full.minutes": "{number, plural, one {# मिनट} other {# मिनट}} पहले", "relative_time.full.seconds": "{number, plural, one {# सेकंड} other {# सेकंड}} पहले", @@ -454,15 +462,23 @@ "relative_time.seconds": "{number} सेकंड", "relative_time.today": "आज", "reply_indicator.cancel": "रद्द करें", + "report.block": "ब्लॉक", "report.block_explanation": "आपको उनकी पोस्टें नहीं दिखेंगे। वे आपकी पोस्टें को देख नहीं पाएंगे और आपको फ़ॉलो नहीं कर पाएंगे। उन्हे पता लगेगा कि वे blocked हैं।", "report.categories.other": "अन्य", "report.categories.spam": "अवांछित", "report.category.title_account": "रूपरेखा", "report.close": "स्वीकार करें", "report.comment.title": "क्या और कुछ है जिसके बारे में आपको लगता है कि हमें सूचित होना चाहिए?", + "report.next": "आगे", "report.placeholder": "Type or paste additional comments", "report.reasons.dislike": "मुझे यह पसंद नहीं है", + "report.reasons.legal": "यह अवैध है", + "report.reasons.legal_description": "आप मानते हैं कि यह आपके या सर्वर के देश के कानून का उल्लंघन करता है", "report.reasons.other": "कुछ और है।", + "report.reasons.violation": "यह सर्वर नियमों का उल्लंघन करता है", + "report.rules.title": "किन नियमों का उल्लंघन हो रहा है?", + "report.statuses.subtitle": "लागू होने वाले सभी का चयन करें", + "report.statuses.title": "क्या ऐसे कोई पोस्ट हैं जो इस रिपोर्ट का समर्थन करते हों?", "report.submit": "सबमिट करें", "report.target": "Report {target}", "report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached", @@ -480,11 +496,24 @@ "search_results.statuses": "Toots", "sign_in_banner.sign_in": "Sign in", "status.admin_status": "Open this status in the moderation interface", + "status.block": "@{name} को ब्लॉक करें", + "status.bookmark": "बुकमार्क", + "status.cannot_reblog": "रिपोस्ट को बूस्ट नहीं किया जा सकता", "status.copy": "Copy link to status", + "status.delete": "हटाएं", + "status.detailed_status": "विस्तृत वार्ता दृश्य", "status.direct": "निजी संदेश @{name} से", "status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}", + "status.media.open": "खोलने के लिए क्लिक करें", + "status.media.show": "दिखाने के लिए क्लिक करें", + "status.mention": "@{name} का उल्लेख करें", + "status.more": "अतिरिक्त", + "status.mute": "@{name} म्यूट करें", + "status.mute_conversation": "इस वार्तालाप को म्यूट करें", "status.open": "Expand this status", + "status.pin": "प्रोफ़ाइल पर पिन करें", "status.pinned": "Pinned toot", + "status.read_more": "और पढ़ें", "status.reblog": "बूस्ट", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.replied_to": "{name} का उत्तर दें", diff --git a/app/javascript/material-icons/400-24px/account_circle-fill.svg b/app/javascript/material-icons/400-24px/account_circle-fill.svg new file mode 100644 index 00000000000..1bf9d57a31a --- /dev/null +++ b/app/javascript/material-icons/400-24px/account_circle-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/account_circle.svg b/app/javascript/material-icons/400-24px/account_circle.svg new file mode 100644 index 00000000000..ce59194be0b --- /dev/null +++ b/app/javascript/material-icons/400-24px/account_circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/add-fill.svg b/app/javascript/material-icons/400-24px/add-fill.svg new file mode 100644 index 00000000000..f8bc9309ceb --- /dev/null +++ b/app/javascript/material-icons/400-24px/add-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/add.svg b/app/javascript/material-icons/400-24px/add.svg new file mode 100644 index 00000000000..f8bc9309ceb --- /dev/null +++ b/app/javascript/material-icons/400-24px/add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/add_photo_alternate-fill.svg b/app/javascript/material-icons/400-24px/add_photo_alternate-fill.svg new file mode 100644 index 00000000000..deb3f8e0d97 --- /dev/null +++ b/app/javascript/material-icons/400-24px/add_photo_alternate-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/add_photo_alternate.svg b/app/javascript/material-icons/400-24px/add_photo_alternate.svg new file mode 100644 index 00000000000..0ae8ad841cf --- /dev/null +++ b/app/javascript/material-icons/400-24px/add_photo_alternate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/alternate_email-fill.svg b/app/javascript/material-icons/400-24px/alternate_email-fill.svg new file mode 100644 index 00000000000..7648cf9755e --- /dev/null +++ b/app/javascript/material-icons/400-24px/alternate_email-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/alternate_email.svg b/app/javascript/material-icons/400-24px/alternate_email.svg new file mode 100644 index 00000000000..7648cf9755e --- /dev/null +++ b/app/javascript/material-icons/400-24px/alternate_email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/arrow_back-fill.svg b/app/javascript/material-icons/400-24px/arrow_back-fill.svg new file mode 100644 index 00000000000..cba0c8b2a8d --- /dev/null +++ b/app/javascript/material-icons/400-24px/arrow_back-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/arrow_back.svg b/app/javascript/material-icons/400-24px/arrow_back.svg new file mode 100644 index 00000000000..cba0c8b2a8d --- /dev/null +++ b/app/javascript/material-icons/400-24px/arrow_back.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/arrow_drop_down-fill.svg b/app/javascript/material-icons/400-24px/arrow_drop_down-fill.svg new file mode 100644 index 00000000000..48c72546df1 --- /dev/null +++ b/app/javascript/material-icons/400-24px/arrow_drop_down-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/arrow_drop_down.svg b/app/javascript/material-icons/400-24px/arrow_drop_down.svg new file mode 100644 index 00000000000..48c72546df1 --- /dev/null +++ b/app/javascript/material-icons/400-24px/arrow_drop_down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/arrow_right_alt-fill.svg b/app/javascript/material-icons/400-24px/arrow_right_alt-fill.svg new file mode 100644 index 00000000000..4bf73bb6daf --- /dev/null +++ b/app/javascript/material-icons/400-24px/arrow_right_alt-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/arrow_right_alt.svg b/app/javascript/material-icons/400-24px/arrow_right_alt.svg new file mode 100644 index 00000000000..4bf73bb6daf --- /dev/null +++ b/app/javascript/material-icons/400-24px/arrow_right_alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/block-fill.svg b/app/javascript/material-icons/400-24px/block-fill.svg new file mode 100644 index 00000000000..20e9889ae80 --- /dev/null +++ b/app/javascript/material-icons/400-24px/block-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/block.svg b/app/javascript/material-icons/400-24px/block.svg new file mode 100644 index 00000000000..20e9889ae80 --- /dev/null +++ b/app/javascript/material-icons/400-24px/block.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/bookmark-fill.svg b/app/javascript/material-icons/400-24px/bookmark-fill.svg new file mode 100644 index 00000000000..3a7b4d2e8b3 --- /dev/null +++ b/app/javascript/material-icons/400-24px/bookmark-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/bookmark.svg b/app/javascript/material-icons/400-24px/bookmark.svg new file mode 100644 index 00000000000..a8226a6d87b --- /dev/null +++ b/app/javascript/material-icons/400-24px/bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/bookmarks-fill.svg b/app/javascript/material-icons/400-24px/bookmarks-fill.svg new file mode 100644 index 00000000000..f5231f925a2 --- /dev/null +++ b/app/javascript/material-icons/400-24px/bookmarks-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/bookmarks.svg b/app/javascript/material-icons/400-24px/bookmarks.svg new file mode 100644 index 00000000000..67dffd6857f --- /dev/null +++ b/app/javascript/material-icons/400-24px/bookmarks.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/campaign-fill.svg b/app/javascript/material-icons/400-24px/campaign-fill.svg new file mode 100644 index 00000000000..3df7275bf69 --- /dev/null +++ b/app/javascript/material-icons/400-24px/campaign-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/campaign.svg b/app/javascript/material-icons/400-24px/campaign.svg new file mode 100644 index 00000000000..a6d893fed46 --- /dev/null +++ b/app/javascript/material-icons/400-24px/campaign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/cancel-fill.svg b/app/javascript/material-icons/400-24px/cancel-fill.svg new file mode 100644 index 00000000000..f7d476f2537 --- /dev/null +++ b/app/javascript/material-icons/400-24px/cancel-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/cancel.svg b/app/javascript/material-icons/400-24px/cancel.svg new file mode 100644 index 00000000000..8504fbfdad0 --- /dev/null +++ b/app/javascript/material-icons/400-24px/cancel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/cancel_presentation-fill.svg b/app/javascript/material-icons/400-24px/cancel_presentation-fill.svg new file mode 100644 index 00000000000..8e8e6a1ee62 --- /dev/null +++ b/app/javascript/material-icons/400-24px/cancel_presentation-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/cancel_presentation.svg b/app/javascript/material-icons/400-24px/cancel_presentation.svg new file mode 100644 index 00000000000..c0da419cd06 --- /dev/null +++ b/app/javascript/material-icons/400-24px/cancel_presentation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/check-fill.svg b/app/javascript/material-icons/400-24px/check-fill.svg new file mode 100644 index 00000000000..1655d12bf37 --- /dev/null +++ b/app/javascript/material-icons/400-24px/check-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/check.svg b/app/javascript/material-icons/400-24px/check.svg new file mode 100644 index 00000000000..1655d12bf37 --- /dev/null +++ b/app/javascript/material-icons/400-24px/check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/check_box_outline_blank-fill.svg b/app/javascript/material-icons/400-24px/check_box_outline_blank-fill.svg new file mode 100644 index 00000000000..3f7df315a50 --- /dev/null +++ b/app/javascript/material-icons/400-24px/check_box_outline_blank-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/check_box_outline_blank.svg b/app/javascript/material-icons/400-24px/check_box_outline_blank.svg new file mode 100644 index 00000000000..3f7df315a50 --- /dev/null +++ b/app/javascript/material-icons/400-24px/check_box_outline_blank.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/chevron_left-fill.svg b/app/javascript/material-icons/400-24px/chevron_left-fill.svg new file mode 100644 index 00000000000..53783746ae6 --- /dev/null +++ b/app/javascript/material-icons/400-24px/chevron_left-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/chevron_left.svg b/app/javascript/material-icons/400-24px/chevron_left.svg new file mode 100644 index 00000000000..53783746ae6 --- /dev/null +++ b/app/javascript/material-icons/400-24px/chevron_left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/chevron_right-fill.svg b/app/javascript/material-icons/400-24px/chevron_right-fill.svg new file mode 100644 index 00000000000..41004673651 --- /dev/null +++ b/app/javascript/material-icons/400-24px/chevron_right-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/chevron_right.svg b/app/javascript/material-icons/400-24px/chevron_right.svg new file mode 100644 index 00000000000..41004673651 --- /dev/null +++ b/app/javascript/material-icons/400-24px/chevron_right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/close-fill.svg b/app/javascript/material-icons/400-24px/close-fill.svg new file mode 100644 index 00000000000..5a60c58e77b --- /dev/null +++ b/app/javascript/material-icons/400-24px/close-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/close.svg b/app/javascript/material-icons/400-24px/close.svg new file mode 100644 index 00000000000..5a60c58e77b --- /dev/null +++ b/app/javascript/material-icons/400-24px/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/content_copy-fill.svg b/app/javascript/material-icons/400-24px/content_copy-fill.svg new file mode 100644 index 00000000000..dabf0945034 --- /dev/null +++ b/app/javascript/material-icons/400-24px/content_copy-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/content_copy.svg b/app/javascript/material-icons/400-24px/content_copy.svg new file mode 100644 index 00000000000..d875c84491f --- /dev/null +++ b/app/javascript/material-icons/400-24px/content_copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/delete-fill.svg b/app/javascript/material-icons/400-24px/delete-fill.svg new file mode 100644 index 00000000000..59d1abb8bcd --- /dev/null +++ b/app/javascript/material-icons/400-24px/delete-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/delete.svg b/app/javascript/material-icons/400-24px/delete.svg new file mode 100644 index 00000000000..560d174b9b0 --- /dev/null +++ b/app/javascript/material-icons/400-24px/delete.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/delete_forever-fill.svg b/app/javascript/material-icons/400-24px/delete_forever-fill.svg new file mode 100644 index 00000000000..40fe4497f51 --- /dev/null +++ b/app/javascript/material-icons/400-24px/delete_forever-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/delete_forever.svg b/app/javascript/material-icons/400-24px/delete_forever.svg new file mode 100644 index 00000000000..763f517d1d8 --- /dev/null +++ b/app/javascript/material-icons/400-24px/delete_forever.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/description-fill.svg b/app/javascript/material-icons/400-24px/description-fill.svg new file mode 100644 index 00000000000..07998b29d61 --- /dev/null +++ b/app/javascript/material-icons/400-24px/description-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/description.svg b/app/javascript/material-icons/400-24px/description.svg new file mode 100644 index 00000000000..309a4f5b382 --- /dev/null +++ b/app/javascript/material-icons/400-24px/description.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/done-fill.svg b/app/javascript/material-icons/400-24px/done-fill.svg new file mode 100644 index 00000000000..1655d12bf37 --- /dev/null +++ b/app/javascript/material-icons/400-24px/done-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/done.svg b/app/javascript/material-icons/400-24px/done.svg new file mode 100644 index 00000000000..1655d12bf37 --- /dev/null +++ b/app/javascript/material-icons/400-24px/done.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/done_all-fill.svg b/app/javascript/material-icons/400-24px/done_all-fill.svg new file mode 100644 index 00000000000..8f05228c40a --- /dev/null +++ b/app/javascript/material-icons/400-24px/done_all-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/done_all.svg b/app/javascript/material-icons/400-24px/done_all.svg new file mode 100644 index 00000000000..8f05228c40a --- /dev/null +++ b/app/javascript/material-icons/400-24px/done_all.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/download-fill.svg b/app/javascript/material-icons/400-24px/download-fill.svg new file mode 100644 index 00000000000..6a171ea8226 --- /dev/null +++ b/app/javascript/material-icons/400-24px/download-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/download.svg b/app/javascript/material-icons/400-24px/download.svg new file mode 100644 index 00000000000..6a171ea8226 --- /dev/null +++ b/app/javascript/material-icons/400-24px/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/edit-fill.svg b/app/javascript/material-icons/400-24px/edit-fill.svg new file mode 100644 index 00000000000..278e79978e7 --- /dev/null +++ b/app/javascript/material-icons/400-24px/edit-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/edit.svg b/app/javascript/material-icons/400-24px/edit.svg new file mode 100644 index 00000000000..cb81b113026 --- /dev/null +++ b/app/javascript/material-icons/400-24px/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/edit_note-fill.svg b/app/javascript/material-icons/400-24px/edit_note-fill.svg new file mode 100644 index 00000000000..b18db1df8ea --- /dev/null +++ b/app/javascript/material-icons/400-24px/edit_note-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/edit_note.svg b/app/javascript/material-icons/400-24px/edit_note.svg new file mode 100644 index 00000000000..cf7e98405ad --- /dev/null +++ b/app/javascript/material-icons/400-24px/edit_note.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/expand_more-fill.svg b/app/javascript/material-icons/400-24px/expand_more-fill.svg new file mode 100644 index 00000000000..0c8f2735960 --- /dev/null +++ b/app/javascript/material-icons/400-24px/expand_more-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/expand_more.svg b/app/javascript/material-icons/400-24px/expand_more.svg new file mode 100644 index 00000000000..0c8f2735960 --- /dev/null +++ b/app/javascript/material-icons/400-24px/expand_more.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/find_in_page-fill.svg b/app/javascript/material-icons/400-24px/find_in_page-fill.svg new file mode 100644 index 00000000000..146f838a278 --- /dev/null +++ b/app/javascript/material-icons/400-24px/find_in_page-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/find_in_page.svg b/app/javascript/material-icons/400-24px/find_in_page.svg new file mode 100644 index 00000000000..f21c2786cab --- /dev/null +++ b/app/javascript/material-icons/400-24px/find_in_page.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/flag-fill.svg b/app/javascript/material-icons/400-24px/flag-fill.svg new file mode 100644 index 00000000000..e44a94d90bc --- /dev/null +++ b/app/javascript/material-icons/400-24px/flag-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/flag.svg b/app/javascript/material-icons/400-24px/flag.svg new file mode 100644 index 00000000000..cb4c810e08a --- /dev/null +++ b/app/javascript/material-icons/400-24px/flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/fullscreen-fill.svg b/app/javascript/material-icons/400-24px/fullscreen-fill.svg new file mode 100644 index 00000000000..940c878a7d3 --- /dev/null +++ b/app/javascript/material-icons/400-24px/fullscreen-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/fullscreen.svg b/app/javascript/material-icons/400-24px/fullscreen.svg new file mode 100644 index 00000000000..940c878a7d3 --- /dev/null +++ b/app/javascript/material-icons/400-24px/fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/fullscreen_exit-fill.svg b/app/javascript/material-icons/400-24px/fullscreen_exit-fill.svg new file mode 100644 index 00000000000..d9d45a6c6ac --- /dev/null +++ b/app/javascript/material-icons/400-24px/fullscreen_exit-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/fullscreen_exit.svg b/app/javascript/material-icons/400-24px/fullscreen_exit.svg new file mode 100644 index 00000000000..d9d45a6c6ac --- /dev/null +++ b/app/javascript/material-icons/400-24px/fullscreen_exit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/group-fill.svg b/app/javascript/material-icons/400-24px/group-fill.svg new file mode 100644 index 00000000000..c0d6cef5c55 --- /dev/null +++ b/app/javascript/material-icons/400-24px/group-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/group.svg b/app/javascript/material-icons/400-24px/group.svg new file mode 100644 index 00000000000..dbc2c937e4c --- /dev/null +++ b/app/javascript/material-icons/400-24px/group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/home-fill.svg b/app/javascript/material-icons/400-24px/home-fill.svg new file mode 100644 index 00000000000..e2544163804 --- /dev/null +++ b/app/javascript/material-icons/400-24px/home-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/home.svg b/app/javascript/material-icons/400-24px/home.svg new file mode 100644 index 00000000000..d700ddea7ba --- /dev/null +++ b/app/javascript/material-icons/400-24px/home.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/info-fill.svg b/app/javascript/material-icons/400-24px/info-fill.svg new file mode 100644 index 00000000000..0232e17ad0a --- /dev/null +++ b/app/javascript/material-icons/400-24px/info-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/info.svg b/app/javascript/material-icons/400-24px/info.svg new file mode 100644 index 00000000000..05606f4e59e --- /dev/null +++ b/app/javascript/material-icons/400-24px/info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/insert_chart-fill.svg b/app/javascript/material-icons/400-24px/insert_chart-fill.svg new file mode 100644 index 00000000000..12d137ca893 --- /dev/null +++ b/app/javascript/material-icons/400-24px/insert_chart-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/insert_chart.svg b/app/javascript/material-icons/400-24px/insert_chart.svg new file mode 100644 index 00000000000..4f2a10be597 --- /dev/null +++ b/app/javascript/material-icons/400-24px/insert_chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/link-fill.svg b/app/javascript/material-icons/400-24px/link-fill.svg new file mode 100644 index 00000000000..319a0681c4f --- /dev/null +++ b/app/javascript/material-icons/400-24px/link-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/link.svg b/app/javascript/material-icons/400-24px/link.svg new file mode 100644 index 00000000000..319a0681c4f --- /dev/null +++ b/app/javascript/material-icons/400-24px/link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/list_alt-fill.svg b/app/javascript/material-icons/400-24px/list_alt-fill.svg new file mode 100644 index 00000000000..6aa8b508236 --- /dev/null +++ b/app/javascript/material-icons/400-24px/list_alt-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/list_alt.svg b/app/javascript/material-icons/400-24px/list_alt.svg new file mode 100644 index 00000000000..cca8ab19555 --- /dev/null +++ b/app/javascript/material-icons/400-24px/list_alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/lock-fill.svg b/app/javascript/material-icons/400-24px/lock-fill.svg new file mode 100644 index 00000000000..0815d784181 --- /dev/null +++ b/app/javascript/material-icons/400-24px/lock-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/lock.svg b/app/javascript/material-icons/400-24px/lock.svg new file mode 100644 index 00000000000..20b9e3984ec --- /dev/null +++ b/app/javascript/material-icons/400-24px/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/lock_open-fill.svg b/app/javascript/material-icons/400-24px/lock_open-fill.svg new file mode 100644 index 00000000000..60309dce5e7 --- /dev/null +++ b/app/javascript/material-icons/400-24px/lock_open-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/lock_open.svg b/app/javascript/material-icons/400-24px/lock_open.svg new file mode 100644 index 00000000000..824c70b7c45 --- /dev/null +++ b/app/javascript/material-icons/400-24px/lock_open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/logout-fill.svg b/app/javascript/material-icons/400-24px/logout-fill.svg new file mode 100644 index 00000000000..48814535016 --- /dev/null +++ b/app/javascript/material-icons/400-24px/logout-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/logout.svg b/app/javascript/material-icons/400-24px/logout.svg new file mode 100644 index 00000000000..48814535016 --- /dev/null +++ b/app/javascript/material-icons/400-24px/logout.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/menu-fill.svg b/app/javascript/material-icons/400-24px/menu-fill.svg new file mode 100644 index 00000000000..2f427e91c89 --- /dev/null +++ b/app/javascript/material-icons/400-24px/menu-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/menu.svg b/app/javascript/material-icons/400-24px/menu.svg new file mode 100644 index 00000000000..2f427e91c89 --- /dev/null +++ b/app/javascript/material-icons/400-24px/menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/more_horiz-fill.svg b/app/javascript/material-icons/400-24px/more_horiz-fill.svg new file mode 100644 index 00000000000..e777154892a --- /dev/null +++ b/app/javascript/material-icons/400-24px/more_horiz-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/more_horiz.svg b/app/javascript/material-icons/400-24px/more_horiz.svg new file mode 100644 index 00000000000..e777154892a --- /dev/null +++ b/app/javascript/material-icons/400-24px/more_horiz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/music_note-fill.svg b/app/javascript/material-icons/400-24px/music_note-fill.svg new file mode 100644 index 00000000000..b10ad1921ad --- /dev/null +++ b/app/javascript/material-icons/400-24px/music_note-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/music_note.svg b/app/javascript/material-icons/400-24px/music_note.svg new file mode 100644 index 00000000000..b10ad1921ad --- /dev/null +++ b/app/javascript/material-icons/400-24px/music_note.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/notifications-fill.svg b/app/javascript/material-icons/400-24px/notifications-fill.svg new file mode 100644 index 00000000000..0730efefca1 --- /dev/null +++ b/app/javascript/material-icons/400-24px/notifications-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/notifications.svg b/app/javascript/material-icons/400-24px/notifications.svg new file mode 100644 index 00000000000..dbfe0e04091 --- /dev/null +++ b/app/javascript/material-icons/400-24px/notifications.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/notifications_active-fill.svg b/app/javascript/material-icons/400-24px/notifications_active-fill.svg new file mode 100644 index 00000000000..856a0ed8a5e --- /dev/null +++ b/app/javascript/material-icons/400-24px/notifications_active-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/notifications_active.svg b/app/javascript/material-icons/400-24px/notifications_active.svg new file mode 100644 index 00000000000..1389a10e0ac --- /dev/null +++ b/app/javascript/material-icons/400-24px/notifications_active.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/open_in_new-fill.svg b/app/javascript/material-icons/400-24px/open_in_new-fill.svg new file mode 100644 index 00000000000..42895ffd137 --- /dev/null +++ b/app/javascript/material-icons/400-24px/open_in_new-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/open_in_new.svg b/app/javascript/material-icons/400-24px/open_in_new.svg new file mode 100644 index 00000000000..42895ffd137 --- /dev/null +++ b/app/javascript/material-icons/400-24px/open_in_new.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/pause-fill.svg b/app/javascript/material-icons/400-24px/pause-fill.svg new file mode 100644 index 00000000000..fc9a8074de0 --- /dev/null +++ b/app/javascript/material-icons/400-24px/pause-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/pause.svg b/app/javascript/material-icons/400-24px/pause.svg new file mode 100644 index 00000000000..95bc792fc33 --- /dev/null +++ b/app/javascript/material-icons/400-24px/pause.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/person-fill.svg b/app/javascript/material-icons/400-24px/person-fill.svg new file mode 100644 index 00000000000..73ef1efc104 --- /dev/null +++ b/app/javascript/material-icons/400-24px/person-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/person.svg b/app/javascript/material-icons/400-24px/person.svg new file mode 100644 index 00000000000..a3f6b246c83 --- /dev/null +++ b/app/javascript/material-icons/400-24px/person.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/person_add-fill.svg b/app/javascript/material-icons/400-24px/person_add-fill.svg new file mode 100644 index 00000000000..3fa7f65288b --- /dev/null +++ b/app/javascript/material-icons/400-24px/person_add-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/person_add.svg b/app/javascript/material-icons/400-24px/person_add.svg new file mode 100644 index 00000000000..39b592bf04e --- /dev/null +++ b/app/javascript/material-icons/400-24px/person_add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/play_arrow-fill.svg b/app/javascript/material-icons/400-24px/play_arrow-fill.svg new file mode 100644 index 00000000000..6465b902223 --- /dev/null +++ b/app/javascript/material-icons/400-24px/play_arrow-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/play_arrow.svg b/app/javascript/material-icons/400-24px/play_arrow.svg new file mode 100644 index 00000000000..52f0fcc9c4c --- /dev/null +++ b/app/javascript/material-icons/400-24px/play_arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/public-fill.svg b/app/javascript/material-icons/400-24px/public-fill.svg new file mode 100644 index 00000000000..1e9e79de4db --- /dev/null +++ b/app/javascript/material-icons/400-24px/public-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/public.svg b/app/javascript/material-icons/400-24px/public.svg new file mode 100644 index 00000000000..1e9e79de4db --- /dev/null +++ b/app/javascript/material-icons/400-24px/public.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/push_pin-fill.svg b/app/javascript/material-icons/400-24px/push_pin-fill.svg new file mode 100644 index 00000000000..6095ba77eeb --- /dev/null +++ b/app/javascript/material-icons/400-24px/push_pin-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/push_pin.svg b/app/javascript/material-icons/400-24px/push_pin.svg new file mode 100644 index 00000000000..e1abd900a7d --- /dev/null +++ b/app/javascript/material-icons/400-24px/push_pin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/rectangle-fill.svg b/app/javascript/material-icons/400-24px/rectangle-fill.svg new file mode 100644 index 00000000000..64b038f2685 --- /dev/null +++ b/app/javascript/material-icons/400-24px/rectangle-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/rectangle.svg b/app/javascript/material-icons/400-24px/rectangle.svg new file mode 100644 index 00000000000..ada92f2cf55 --- /dev/null +++ b/app/javascript/material-icons/400-24px/rectangle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/refresh-fill.svg b/app/javascript/material-icons/400-24px/refresh-fill.svg new file mode 100644 index 00000000000..a7a6bc801bd --- /dev/null +++ b/app/javascript/material-icons/400-24px/refresh-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/refresh.svg b/app/javascript/material-icons/400-24px/refresh.svg new file mode 100644 index 00000000000..a7a6bc801bd --- /dev/null +++ b/app/javascript/material-icons/400-24px/refresh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/repeat-fill.svg b/app/javascript/material-icons/400-24px/repeat-fill.svg new file mode 100644 index 00000000000..c1b09d80262 --- /dev/null +++ b/app/javascript/material-icons/400-24px/repeat-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/repeat.svg b/app/javascript/material-icons/400-24px/repeat.svg new file mode 100644 index 00000000000..c1b09d80262 --- /dev/null +++ b/app/javascript/material-icons/400-24px/repeat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/reply-fill.svg b/app/javascript/material-icons/400-24px/reply-fill.svg new file mode 100644 index 00000000000..eb661f2823a --- /dev/null +++ b/app/javascript/material-icons/400-24px/reply-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/reply.svg b/app/javascript/material-icons/400-24px/reply.svg new file mode 100644 index 00000000000..eb661f2823a --- /dev/null +++ b/app/javascript/material-icons/400-24px/reply.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/reply_all-fill.svg b/app/javascript/material-icons/400-24px/reply_all-fill.svg new file mode 100644 index 00000000000..74c9573eaf7 --- /dev/null +++ b/app/javascript/material-icons/400-24px/reply_all-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/reply_all.svg b/app/javascript/material-icons/400-24px/reply_all.svg new file mode 100644 index 00000000000..74c9573eaf7 --- /dev/null +++ b/app/javascript/material-icons/400-24px/reply_all.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/search-fill.svg b/app/javascript/material-icons/400-24px/search-fill.svg new file mode 100644 index 00000000000..ef0d0521eb0 --- /dev/null +++ b/app/javascript/material-icons/400-24px/search-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/search.svg b/app/javascript/material-icons/400-24px/search.svg new file mode 100644 index 00000000000..ef0d0521eb0 --- /dev/null +++ b/app/javascript/material-icons/400-24px/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/settings-fill.svg b/app/javascript/material-icons/400-24px/settings-fill.svg new file mode 100644 index 00000000000..f1334795028 --- /dev/null +++ b/app/javascript/material-icons/400-24px/settings-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/settings.svg b/app/javascript/material-icons/400-24px/settings.svg new file mode 100644 index 00000000000..817c782f059 --- /dev/null +++ b/app/javascript/material-icons/400-24px/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/share-fill.svg b/app/javascript/material-icons/400-24px/share-fill.svg new file mode 100644 index 00000000000..5a6b0d0a8dd --- /dev/null +++ b/app/javascript/material-icons/400-24px/share-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/share.svg b/app/javascript/material-icons/400-24px/share.svg new file mode 100644 index 00000000000..6876cd42dad --- /dev/null +++ b/app/javascript/material-icons/400-24px/share.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/smart_toy-fill.svg b/app/javascript/material-icons/400-24px/smart_toy-fill.svg new file mode 100644 index 00000000000..df417f5ff7c --- /dev/null +++ b/app/javascript/material-icons/400-24px/smart_toy-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/smart_toy.svg b/app/javascript/material-icons/400-24px/smart_toy.svg new file mode 100644 index 00000000000..b84efc73b18 --- /dev/null +++ b/app/javascript/material-icons/400-24px/smart_toy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/star-fill.svg b/app/javascript/material-icons/400-24px/star-fill.svg new file mode 100644 index 00000000000..cb2231e6343 --- /dev/null +++ b/app/javascript/material-icons/400-24px/star-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/star.svg b/app/javascript/material-icons/400-24px/star.svg new file mode 100644 index 00000000000..1736e085d06 --- /dev/null +++ b/app/javascript/material-icons/400-24px/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/tag-fill.svg b/app/javascript/material-icons/400-24px/tag-fill.svg new file mode 100644 index 00000000000..ce76d537b32 --- /dev/null +++ b/app/javascript/material-icons/400-24px/tag-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/tag.svg b/app/javascript/material-icons/400-24px/tag.svg new file mode 100644 index 00000000000..ce76d537b32 --- /dev/null +++ b/app/javascript/material-icons/400-24px/tag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/tune-fill.svg b/app/javascript/material-icons/400-24px/tune-fill.svg new file mode 100644 index 00000000000..887f8bd498a --- /dev/null +++ b/app/javascript/material-icons/400-24px/tune-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/tune.svg b/app/javascript/material-icons/400-24px/tune.svg new file mode 100644 index 00000000000..887f8bd498a --- /dev/null +++ b/app/javascript/material-icons/400-24px/tune.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/upload_file-fill.svg b/app/javascript/material-icons/400-24px/upload_file-fill.svg new file mode 100644 index 00000000000..639d77af369 --- /dev/null +++ b/app/javascript/material-icons/400-24px/upload_file-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/upload_file.svg b/app/javascript/material-icons/400-24px/upload_file.svg new file mode 100644 index 00000000000..40ce5b65e5c --- /dev/null +++ b/app/javascript/material-icons/400-24px/upload_file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/visibility-fill.svg b/app/javascript/material-icons/400-24px/visibility-fill.svg new file mode 100644 index 00000000000..44b5f4c6061 --- /dev/null +++ b/app/javascript/material-icons/400-24px/visibility-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/visibility.svg b/app/javascript/material-icons/400-24px/visibility.svg new file mode 100644 index 00000000000..8fe45d09af6 --- /dev/null +++ b/app/javascript/material-icons/400-24px/visibility.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/visibility_off-fill.svg b/app/javascript/material-icons/400-24px/visibility_off-fill.svg new file mode 100644 index 00000000000..e21fbd88dfe --- /dev/null +++ b/app/javascript/material-icons/400-24px/visibility_off-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/visibility_off.svg b/app/javascript/material-icons/400-24px/visibility_off.svg new file mode 100644 index 00000000000..d98cf8d942c --- /dev/null +++ b/app/javascript/material-icons/400-24px/visibility_off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/volume_off-fill.svg b/app/javascript/material-icons/400-24px/volume_off-fill.svg new file mode 100644 index 00000000000..b3d12d4d98c --- /dev/null +++ b/app/javascript/material-icons/400-24px/volume_off-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/volume_off.svg b/app/javascript/material-icons/400-24px/volume_off.svg new file mode 100644 index 00000000000..a0acf63747a --- /dev/null +++ b/app/javascript/material-icons/400-24px/volume_off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/volume_up-fill.svg b/app/javascript/material-icons/400-24px/volume_up-fill.svg new file mode 100644 index 00000000000..dd5771215e0 --- /dev/null +++ b/app/javascript/material-icons/400-24px/volume_up-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/volume_up.svg b/app/javascript/material-icons/400-24px/volume_up.svg new file mode 100644 index 00000000000..fd9006a6d27 --- /dev/null +++ b/app/javascript/material-icons/400-24px/volume_up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/LICENSE b/app/javascript/material-icons/LICENSE new file mode 100644 index 00000000000..d6456956733 --- /dev/null +++ b/app/javascript/material-icons/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/app/javascript/material-icons/README.md b/app/javascript/material-icons/README.md new file mode 100644 index 00000000000..1479cb22552 --- /dev/null +++ b/app/javascript/material-icons/README.md @@ -0,0 +1 @@ +Files in this directory are Material Symbols icons fetched using the `icons:download` task. diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 47433c289fa..b28e98cc32f 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -187,8 +187,8 @@ .icon { flex: 0 0 auto; - width: 20px; - height: 20px; + width: 24px; + height: 24px; aspect-ratio: 1; path { @@ -200,7 +200,7 @@ display: inline-flex; color: $action-button-color; border: 0; - padding: 2px; + padding: 0; border-radius: 4px; background: transparent; cursor: pointer; @@ -2322,7 +2322,7 @@ $ui-header-height: 55px; .drawer__tab { display: flex; flex: 1 1 auto; - padding: 15px 5px 13px; + padding: 13px 3px 11px; color: $darker-text-color; text-decoration: none; text-align: center; @@ -3205,7 +3205,7 @@ $ui-header-height: 55px; align-items: center; gap: 5px; font-size: 16px; - padding: 15px; + padding: 13px; text-decoration: none; overflow: hidden; white-space: nowrap; @@ -3804,7 +3804,7 @@ a.status-card { gap: 5px; margin: 0; border: 0; - padding: 15px; + padding: 13px; padding-inline-end: 0; color: inherit; background: transparent; diff --git a/app/lib/admin/system_check/media_privacy_check.rb b/app/lib/admin/system_check/media_privacy_check.rb index 1df05b120ea..2ddc8e8b07e 100644 --- a/app/lib/admin/system_check/media_privacy_check.rb +++ b/app/lib/admin/system_check/media_privacy_check.rb @@ -78,7 +78,7 @@ class Admin::SystemCheck::MediaPrivacyCheck < Admin::SystemCheck::BaseCheck @media_attachment ||= begin attachment = Account.representative.media_attachments.first if attachment.present? - attachment.touch # rubocop:disable Rails/SkipsModelValidations + attachment.touch attachment else create_test_attachment! diff --git a/app/lib/attachment_batch.rb b/app/lib/attachment_batch.rb index b28f5c3d7fc..32ccb0b13c1 100644 --- a/app/lib/attachment_batch.rb +++ b/app/lib/attachment_batch.rb @@ -37,7 +37,7 @@ class AttachmentBatch def clear remove_files - batch.update_all(nullified_attributes) # rubocop:disable Rails/SkipsModelValidations + batch.update_all(nullified_attributes) end private diff --git a/app/models/bulk_import.rb b/app/models/bulk_import.rb index 810e4718492..406fb2aba26 100644 --- a/app/models/bulk_import.rb +++ b/app/models/bulk_import.rb @@ -44,8 +44,8 @@ class BulkImport < ApplicationRecord def self.progress!(bulk_import_id, imported: false) # Use `increment_counter` so that the incrementation is done atomically in the database - BulkImport.increment_counter(:processed_items, bulk_import_id) # rubocop:disable Rails/SkipsModelValidations - BulkImport.increment_counter(:imported_items, bulk_import_id) if imported # rubocop:disable Rails/SkipsModelValidations + BulkImport.increment_counter(:processed_items, bulk_import_id) + BulkImport.increment_counter(:imported_items, bulk_import_id) if imported # Since the incrementation has been done atomically, concurrent access to `bulk_import` is now bening bulk_import = BulkImport.find(bulk_import_id) diff --git a/app/models/follow_request.rb b/app/models/follow_request.rb index 3c5e8f96f0d..c13cc718d8f 100644 --- a/app/models/follow_request.rb +++ b/app/models/follow_request.rb @@ -33,7 +33,7 @@ class FollowRequest < ApplicationRecord def authorize! follow = account.follow!(target_account, reblogs: show_reblogs, notify: notify, languages: languages, uri: uri, bypass_limit: true) - ListAccount.where(follow_request: self).update_all(follow_request_id: nil, follow_id: follow.id) # rubocop:disable Rails/SkipsModelValidations + ListAccount.where(follow_request: self).update_all(follow_request_id: nil, follow_id: follow.id) MergeWorker.perform_async(target_account.id, account.id) if account.local? destroy! end diff --git a/app/models/form/import.rb b/app/models/form/import.rb index 712acf37065..fc83d9c58c1 100644 --- a/app/models/form/import.rb +++ b/app/models/form/import.rb @@ -69,7 +69,7 @@ class Form::Import ApplicationRecord.transaction do now = Time.now.utc @bulk_import = current_account.bulk_imports.create(type: type, overwrite: overwrite || false, state: :unconfirmed, original_filename: data.original_filename, likely_mismatched: likely_mismatched?) - nb_items = BulkImportRow.insert_all(parsed_rows.map { |row| { bulk_import_id: bulk_import.id, data: row, created_at: now, updated_at: now } }).length # rubocop:disable Rails/SkipsModelValidations + nb_items = BulkImportRow.insert_all(parsed_rows.map { |row| { bulk_import_id: bulk_import.id, data: row, created_at: now, updated_at: now } }).length @bulk_import.update(total_items: nb_items) end end diff --git a/app/models/user.rb b/app/models/user.rb index 56e575ca428..5f5dff07c0e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -187,7 +187,7 @@ class User < ApplicationRecord def confirm new_user = !confirmed? - self.approved = true if open_registrations? && !sign_up_from_ip_requires_approval? + self.approved = true if grant_approval_on_confirmation? super @@ -206,7 +206,7 @@ class User < ApplicationRecord def confirm! new_user = !confirmed? - self.approved = true if open_registrations? + self.approved = true if grant_approval_on_confirmation? skip_confirmation! save! @@ -426,6 +426,11 @@ class User < ApplicationRecord end end + def grant_approval_on_confirmation? + # Re-check approval on confirmation if the server has switched to open registrations + open_registrations? && !sign_up_from_ip_requires_approval? && !sign_up_email_requires_approval? + end + def sign_up_from_ip_requires_approval? !sign_up_ip.nil? && IpBlock.where(severity: :sign_up_requires_approval).where('ip >>= ?', sign_up_ip.to_s).exists? end diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 08717c840ea..a32413cb9a7 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -23,6 +23,8 @@ ast: are_you_sure: "¿De xuru que quies facer esta aición?" avatar: Avatar by_domain: Dominiu + change_role: + label: Camudar el rol confirming: En confirmación disabled: Conxelóse display_name: Nome visible @@ -59,6 +61,7 @@ ast: suspend: Suspender title: Cuentes username: Nome d'usuariu + warn: Alvertir web: Web action_logs: actions: @@ -181,6 +184,7 @@ ast: availability: no_failures_recorded: Nun se rexistró nengún fallu. title: Disponibilidá + back_to_warning: Alvertencia by_domain: Dominiu content_policies: comment: Nota interna @@ -461,6 +465,7 @@ ast: delete_account_html: Si quies desaniciar la cuenta, pues facelo equí. Va pidísete que confirmes l'aición. description: prefix_sign_up: "¡Rexístrate güei en Mastodon!" + didnt_get_confirmation: "¿Nun recibiesti l'enllaz de confirmación?" dont_have_your_security_key: "¿Nun tienes una llave de seguranza?" forgot_password: "¿Escaeciesti la contraseña?" login: Aniciar la sesión @@ -477,6 +482,8 @@ ast: accept: Aceptar back: Atrás security: Seguranza + setup: + link_not_received: "¿Nun consiguiesti l'enllaz?" sign_in: preamble_html: Anicia la sesión colos tos datos d'accesu en %{domain}. Si la cuenta ta agospiada n'otru sirvidor, nun vas ser a aniciar la sesión equí. title: Aniciu de la sesión en «%{domain}» @@ -535,6 +542,9 @@ ast: your_appeal_approved: Aprobóse la to apellación your_appeal_pending: Unviesti una apellación your_appeal_rejected: Refugóse la to apellación + edit_profile: + basic_information: Información básica + other: Otres preferencies errors: '400': La solicitú qu'unviesti nun yera válida o yera incorreuta. '403': Nun tienes permisu pa ver esta páxina. @@ -622,6 +632,7 @@ ast: muting: Llista de perfiles colos avisos desactivaos upload: Xubir invites: + delete: Desactivar expired: Caducó expires_in: '1800': 30 minutos @@ -715,6 +726,14 @@ ast: other: Otres preferencies posting_defaults: Configuración predeterminada del espublizamientu d'artículos public_timelines: Llinies de tiempu públiques + privacy: + hint_html: "Personaliza cómo quies s'atope esti perfil ya los sos artículos. Hai una variedá de funciones de Mastodon que puen ayudate a algamar audiencies más grandes cuando s'activen. Dedica un momentu pa revisar estes opciones y asegurate de que s'axusten al to casu." + privacy: Privacidá + reach: Algame + reach_hint_html: Controla si quies que te descubran ya te sigan perfiles nuevos. ¿Quies que los tos artículos apaezan na pantalla «Esploración»? ¿Quies qu'otres persones te vean na recomendación de cuentes? ¿Quies aceptar toles solicitúes de siguimientu automáticamente o tener un control minuciosu de caúna? + search: Busca + search_hint_html: Controla cómo quies que t'atopen. ¿Quies que la xente t'atope polo qu'espublices públicamente? ¿Quies que la xente fuera de Mástodon atope esti perfil cuando busque na web? Ten en cuenta que nun se pue garantizar la esclusión total de tolos motores de busca. + title: Privacidá ya algame privacy_policy: title: Política de privacidá relationships: diff --git a/config/locales/lt.yml b/config/locales/lt.yml index b194011a424..8de969f646a 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -48,15 +48,22 @@ lt: new_email: Naujas el pašto adresas submit: Pakeisti el pašto adresą title: Pakeisti el pašto adresą vartotojui %{username} + change_role: + label: Keisti vaidmenį + no_role: Jokios vaidmenį + title: Keisti vaidmenį %{username} confirm: Patvirtinti confirmed: Patvirtinta confirming: Tvirtinama + custom: Pasirinktinis + delete: Ištrinti duomenis deleted: Ištrinti demote: Pažeminti disable: Išjungti - disable_two_factor_authentication: Išjungti 2 faktorių autentifikaciją + disable_sign_in_token_auth: Išjungti el. pašto prieigos rakto tapatybės nustatymą + disable_two_factor_authentication: Išjungti 2FA disabled: Išjungta - display_name: Matomas vardas + display_name: Rodomas vardas domain: Domenas edit: Keisti email: El paštas diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 34769e08ec1..3429ab0e822 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -425,7 +425,7 @@ nl: view: Domeinblokkade bekijken email_domain_blocks: add_new: Nieuwe toevoegen - allow_registrations_with_approval: Inschrijvingen met goedkeuring toestaan + allow_registrations_with_approval: Registraties met goedkeuring toestaan attempts_over_week: one: "%{count} registratiepoging tijdens de afgelopen week" other: "%{count} registratiepogingen tijdens de afgelopen week" @@ -571,7 +571,7 @@ nl: enable_hint: Eenmaal ingeschakeld gaat jouw server zich op alle openbare berichten van deze relayserver abonneren en stuurt het de openbare berichten van jouw server naar de relayserver. enabled: Ingeschakeld inbox_url: Relay-URL - pending: Aan het wachten op toestemming van de relayserver + pending: Aan het wachten op goedkeuring van de relayserver save_and_enable: Opslaan en inschakelen setup: Een verbinding met een relayserver maken signatures_not_enabled: Federatierelays werken mogelijk niet goed wanneer de veilige modus of de beperkte federatiemodus is ingeschakeld diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml index 4ffc4bd1662..9b560b67ebb 100644 --- a/config/locales/simple_form.ast.yml +++ b/config/locales/simple_form.ast.yml @@ -2,6 +2,9 @@ ast: simple_form: hints: + account: + note: 'Pues @mentar a otros perfiles o poner #etiquetes.' + unlocked: Los perfiles van ser a siguite ensin solicitar la to aprobación. Desmarca esta opción si quies revisar les solicitúes de siguimientu y escoyer si aceptales o refugales. admin_account_action: text_html: Opcional. Pues usar la sintaxis de los artículos ya amestar alvertencies preconfiguraes p'aforrar tiempu type_html: Escueyi qué facer con %{acct} @@ -59,9 +62,11 @@ ast: chosen_languages: Namás los artículos de les llingües que marques son los que van apaecer nes llinies de tiempu públiques labels: account: + discoverable: Destacar el perfil ya los artículos nos algoritmos de descubrimientu fields: name: Etiqueta value: Conteníu + indexable: Incluyir los artículos públicos nos resultaos de busca account_warning_preset: title: Títulu admin_account_action: @@ -166,9 +171,13 @@ ast: pending_account: Una cuenta nueva precisa una revisión reblog: Daquién compartió'l to artículu report: Unvióse un informe nuevu + software_updates: + label: Hai disponible un anovamientu de Mastodon trending_tag: Una tendencia rique una revisión rule: text: Norma + settings: + indexable: Incluyir la páxina del perfil nos motores de busca tag: listable: Permitir qu'esta etiqueta apaeza nes busques ya nes suxerencies name: Etiqueta @@ -176,6 +185,7 @@ ast: usable: Permitir que los artículos usen esta etiqueta user: role: Rol + time_zone: Fusu horariu user_role: name: Nome permissions_as_keys: Permisos diff --git a/config/locales/sk.yml b/config/locales/sk.yml index a91f1d620ec..9390a713bc1 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -448,6 +448,7 @@ sk: title: Moderácia private_comment: Súkromný komentár public_comment: Verejný komentár + purge: Vyčisti title: Federácia total_blocked_by_us: Nami blokované total_followed_by_them: Nimi sledované @@ -600,6 +601,8 @@ sk: title: Ohľadom appearance: title: Vzhľad + branding: + title: Značka content_retention: title: Ponechanie obsahu discovery: @@ -721,6 +724,7 @@ sk: disable: Vypni disabled: Vypnuté enable: Povoľ + enabled: Aktívne status: Stav admin_mailer: new_appeal: diff --git a/config/webpack/rules/file.js b/config/webpack/rules/file.js index fd9b14cad6b..71ae2afe034 100644 --- a/config/webpack/rules/file.js +++ b/config/webpack/rules/file.js @@ -4,7 +4,7 @@ const { settings } = require('../configuration'); module.exports = { test: new RegExp(`(${settings.static_assets_extensions.join('|')})$`, 'i'), - exclude: [/node_modules\/@material-symbols/, /svg-icons/], + exclude: [/material-icons/, /svg-icons/], use: [ { loader: 'file-loader', diff --git a/config/webpack/rules/material_icons.js b/config/webpack/rules/material_icons.js index 048e198ef2d..65045036c36 100644 --- a/config/webpack/rules/material_icons.js +++ b/config/webpack/rules/material_icons.js @@ -1,6 +1,6 @@ module.exports = { test: /\.svg$/, - include: [/node_modules\/@material-symbols/, /svg-icons/], + include: [/material-icons/, /svg-icons/], issuer: /\.[jt]sx?$/, use: [ { diff --git a/lib/tasks/icons.rake b/lib/tasks/icons.rake new file mode 100644 index 00000000000..3e3d0daac5a --- /dev/null +++ b/lib/tasks/icons.rake @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +def download_material_icon(icon, weight: 400, filled: false, size: 20) + url_template = Addressable::Template.new('https://fonts.gstatic.com/s/i/short-term/release/materialsymbolsoutlined/{icon}/{axes}/{size}px.svg') + + variant = filled ? '-fill' : '' + + axes = [] + axes << "wght#{weight}" if weight != 400 + axes << 'fill1' if filled + axes = axes.join.presence || 'default' + + url = url_template.expand(icon: icon, axes: axes, size: size).to_s + path = Rails.root.join('app', 'javascript', 'material-icons', "#{weight}-#{size}px", "#{icon}#{variant}.svg") + FileUtils.mkdir_p(File.dirname(path)) + + File.write(path, HTTP.get(url).to_s) +end + +def find_used_icons + icons_by_weight_and_size = {} + + Dir[Rails.root.join('app', 'javascript', '**', '*.*s*')].map do |path| + File.open(path, 'r') do |file| + pattern = %r{\Aimport .* from 'mastodon/../material-icons/(?[0-9]+)-(?[0-9]+)px/(?[^-]*)(?-fill)?.svg\?react';} + file.each_line do |line| + match = pattern.match(line) + next if match.blank? + + weight = match['weight'].to_i + size = match['size'].to_i + + icons_by_weight_and_size[weight] ||= {} + icons_by_weight_and_size[weight][size] ||= Set.new + + icons_by_weight_and_size[weight][size] << match['icon'] + end + end + end + + icons_by_weight_and_size +end + +namespace :icons do + desc 'Download used Material Symbols icons' + task download: :environment do + find_used_icons.each do |weight, icons_by_size| + icons_by_size.each do |size, icons| + icons.each do |icon| + download_material_icon(icon, weight: weight, size: size) + download_material_icon(icon, weight: weight, size: size, filled: true) + end + end + end + end +end diff --git a/package.json b/package.json index 32b757343ab..abb65a98da1 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,6 @@ "@formatjs/intl-pluralrules": "^5.2.2", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^2.1.1", - "@material-symbols/svg-600": "^0.14.0", "@rails/ujs": "^7.1.1", "@reduxjs/toolkit": "^2.0.1", "@svgr/webpack": "^5.5.0", diff --git a/spec/controllers/api/v1/markers_controller_spec.rb b/spec/requests/api/v1/markers_spec.rb similarity index 62% rename from spec/controllers/api/v1/markers_controller_spec.rb rename to spec/requests/api/v1/markers_spec.rb index e954bbd1b6f..a1ca4ba7549 100644 --- a/spec/controllers/api/v1/markers_controller_spec.rb +++ b/spec/requests/api/v1/markers_spec.rb @@ -2,20 +2,18 @@ require 'rails_helper' -RSpec.describe Api::V1::MarkersController do - render_views +RSpec.describe 'API Markers' do + let(:user) { Fabricate(:user) } + let(:scopes) { 'read:statuses write:statuses' } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } + let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } - let!(:user) { Fabricate(:user) } - let!(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:statuses write:statuses') } - - before { allow(controller).to receive(:doorkeeper_token) { token } } - - describe 'GET #index' do + describe 'GET /api/v1/markers' do before do Fabricate(:marker, timeline: 'home', last_read_id: 123, user: user) Fabricate(:marker, timeline: 'notifications', last_read_id: 456, user: user) - get :index, params: { timeline: %w(home notifications) } + get '/api/v1/markers', headers: headers, params: { timeline: %w(home notifications) } end it 'returns markers', :aggregate_failures do @@ -29,10 +27,10 @@ RSpec.describe Api::V1::MarkersController do end end - describe 'POST #create' do + describe 'POST /api/v1/markers' do context 'when no marker exists' do before do - post :create, params: { home: { last_read_id: '69420' } } + post '/api/v1/markers', headers: headers, params: { home: { last_read_id: '69420' } } end it 'creates a marker', :aggregate_failures do @@ -44,8 +42,8 @@ RSpec.describe Api::V1::MarkersController do context 'when a marker exists' do before do - post :create, params: { home: { last_read_id: '69420' } } - post :create, params: { home: { last_read_id: '70120' } } + post '/api/v1/markers', headers: headers, params: { home: { last_read_id: '69420' } } + post '/api/v1/markers', headers: headers, params: { home: { last_read_id: '70120' } } end it 'updates a marker', :aggregate_failures do diff --git a/spec/services/reblog_service_spec.rb b/spec/services/reblog_service_spec.rb index 357b315af0d..e5d0a2d6ced 100644 --- a/spec/services/reblog_service_spec.rb +++ b/spec/services/reblog_service_spec.rb @@ -46,7 +46,7 @@ RSpec.describe ReblogService, type: :service do Status .where(id: reblog_of_id) .where(text: 'discard-status-text') - .update_all(deleted_at: Time.now.utc) # rubocop:disable Rails/SkipsModelValidations + .update_all(deleted_at: Time.now.utc) end end end diff --git a/spec/workers/redownload_avatar_worker_spec.rb b/spec/workers/redownload_avatar_worker_spec.rb index 4ab368e12f1..6ef320bc4fd 100644 --- a/spec/workers/redownload_avatar_worker_spec.rb +++ b/spec/workers/redownload_avatar_worker_spec.rb @@ -41,7 +41,7 @@ describe RedownloadAvatarWorker do it 'reprocesses a remote avatar' do stub_request(:get, 'https://example.host/file').to_return request_fixture('avatar.txt') account = Fabricate(:account, avatar_remote_url: 'https://example.host/file') - account.update_column(:avatar_file_name, nil) # rubocop:disable Rails/SkipsModelValidations + account.update_column(:avatar_file_name, nil) result = worker.perform(account.id) diff --git a/spec/workers/redownload_header_worker_spec.rb b/spec/workers/redownload_header_worker_spec.rb index 3b6f497bb80..746c1a63ffb 100644 --- a/spec/workers/redownload_header_worker_spec.rb +++ b/spec/workers/redownload_header_worker_spec.rb @@ -41,7 +41,7 @@ describe RedownloadHeaderWorker do it 'reprocesses a remote header' do stub_request(:get, 'https://example.host/file').to_return request_fixture('avatar.txt') account = Fabricate(:account, header_remote_url: 'https://example.host/file') - account.update_column(:header_file_name, nil) # rubocop:disable Rails/SkipsModelValidations + account.update_column(:header_file_name, nil) result = worker.perform(account.id) diff --git a/streaming/index.js b/streaming/index.js index 9ed24dc02d0..0c234fa0c5a 100644 --- a/streaming/index.js +++ b/streaming/index.js @@ -182,14 +182,74 @@ const CHANNEL_NAMES = [ ]; const startServer = async () => { + const pgPool = new pg.Pool(pgConfigFromEnv(process.env)); + const server = http.createServer(); + const wss = new WebSocket.Server({ noServer: true }); + + // Set the X-Request-Id header on WebSockets: + wss.on("headers", function onHeaders(headers, req) { + headers.push(`X-Request-Id: ${req.id}`); + }); + const app = express(); app.set('trust proxy', process.env.TRUSTED_PROXY_IP ? process.env.TRUSTED_PROXY_IP.split(/(?:\s*,\s*|\s+)/) : 'loopback,uniquelocal'); - const pgPool = new pg.Pool(pgConfigFromEnv(process.env)); - const server = http.createServer(app); app.use(cors()); + // Handle eventsource & other http requests: + server.on('request', app); + + // Handle upgrade requests: + server.on('upgrade', async function handleUpgrade(request, socket, head) { + /** @param {Error} err */ + const onSocketError = (err) => { + log.error(`Error with websocket upgrade: ${err}`); + }; + + socket.on('error', onSocketError); + + // Authenticate: + try { + await accountFromRequest(request); + } catch (err) { + log.error(`Error authenticating request: ${err}`); + + // Unfortunately for using the on('upgrade') setup, we need to manually + // write a HTTP Response to the Socket to close the connection upgrade + // attempt, so the following code is to handle all of that. + const statusCode = err.status ?? 401; + + /** @type {Record} */ + const headers = { + 'Connection': 'close', + 'Content-Type': 'text/plain', + 'Content-Length': 0, + 'X-Request-Id': request.id, + // TODO: Send the error message via header so it can be debugged in + // developer tools + }; + + // Ensure the socket is closed once we've finished writing to it: + socket.once('finish', () => { + socket.destroy(); + }); + + // Write the HTTP response manually: + socket.end(`HTTP/1.1 ${statusCode} ${http.STATUS_CODES[statusCode]}\r\n${Object.keys(headers).map((key) => `${key}: ${headers[key]}`).join('\r\n')}\r\n\r\n`); + + return; + } + + wss.handleUpgrade(request, socket, head, function done(ws) { + // Remove the error handler: + socket.removeListener('error', onSocketError); + + // Start the connection: + wss.emit('connection', ws, request); + }); + }); + /** * @type {Object.): void>>} */ @@ -360,10 +420,19 @@ const startServer = async () => { const isInScope = (req, necessaryScopes) => req.scopes.some(scope => necessaryScopes.includes(scope)); + /** + * @typedef ResolvedAccount + * @property {string} accessTokenId + * @property {string[]} scopes + * @property {string} accountId + * @property {string[]} chosenLanguages + * @property {string} deviceId + */ + /** * @param {string} token * @param {any} req - * @returns {Promise.} + * @returns {Promise} */ const accountFromToken = (token, req) => new Promise((resolve, reject) => { pgPool.connect((err, client, done) => { @@ -394,14 +463,20 @@ const startServer = async () => { req.chosenLanguages = result.rows[0].chosen_languages; req.deviceId = result.rows[0].device_id; - resolve(); + resolve({ + accessTokenId: result.rows[0].id, + scopes: result.rows[0].scopes.split(' '), + accountId: result.rows[0].account_id, + chosenLanguages: result.rows[0].chosen_languages, + deviceId: result.rows[0].device_id + }); }); }); }); /** * @param {any} req - * @returns {Promise.} + * @returns {Promise} */ const accountFromRequest = (req) => new Promise((resolve, reject) => { const authorization = req.headers.authorization; @@ -494,25 +569,6 @@ const startServer = async () => { reject(err); }); - /** - * @param {any} info - * @param {function(boolean, number, string): void} callback - */ - const wsVerifyClient = (info, callback) => { - // When verifying the websockets connection, we no longer pre-emptively - // check OAuth scopes and drop the connection if they're missing. We only - // drop the connection if access without token is not allowed by environment - // variables. OAuth scope checks are moved to the point of subscription - // to a specific stream. - - accountFromRequest(info.req).then(() => { - callback(true, undefined, undefined); - }).catch(err => { - log.error(info.req.requestId, err.toString()); - callback(false, 401, 'Unauthorized'); - }); - }; - /** * @typedef SystemMessageHandlers * @property {function(): void} onKill @@ -951,8 +1007,8 @@ const startServer = async () => { }; /** - * @param {any} req - * @param {any} ws + * @param {http.IncomingMessage} req + * @param {WebSocket} ws * @param {string[]} streamName * @returns {function(string, string): void} */ @@ -962,7 +1018,9 @@ const startServer = async () => { return; } - ws.send(JSON.stringify({ stream: streamName, event, payload }), (err) => { + const message = JSON.stringify({ stream: streamName, event, payload }); + + ws.send(message, (/** @type {Error} */ err) => { if (err) { log.error(req.requestId, `Failed to send to websocket: ${err}`); } @@ -999,8 +1057,6 @@ const startServer = async () => { }); }); - const wss = new WebSocket.Server({ server, verifyClient: wsVerifyClient }); - /** * @typedef StreamParams * @property {string} [tag] @@ -1194,8 +1250,8 @@ const startServer = async () => { /** * @typedef WebSocketSession - * @property {any} socket - * @property {any} request + * @property {WebSocket} websocket + * @property {http.IncomingMessage} request * @property {Object.} subscriptions */ @@ -1318,7 +1374,11 @@ const startServer = async () => { } }; - wss.on('connection', (ws, req) => { + /** + * @param {WebSocket & { isAlive: boolean }} ws + * @param {http.IncomingMessage} req + */ + function onConnection(ws, req) { // Note: url.parse could throw, which would terminate the connection, so we // increment the connected clients metric straight away when we establish // the connection, without waiting: @@ -1396,7 +1456,9 @@ const startServer = async () => { if (location && location.query.stream) { subscribeWebsocketToChannel(session, firstParam(location.query.stream), location.query); } - }); + } + + wss.on('connection', onConnection); setInterval(() => { wss.clients.forEach(ws => { diff --git a/yarn.lock b/yarn.lock index 8cfd75f79d6..79d85e591a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2310,7 +2310,6 @@ __metadata: "@formatjs/intl-pluralrules": "npm:^5.2.2" "@gamestdio/websocket": "npm:^0.3.2" "@github/webauthn-json": "npm:^2.1.1" - "@material-symbols/svg-600": "npm:^0.14.0" "@rails/ujs": "npm:^7.1.1" "@reduxjs/toolkit": "npm:^2.0.1" "@svgr/webpack": "npm:^5.5.0" @@ -2507,13 +2506,6 @@ __metadata: languageName: unknown linkType: soft -"@material-symbols/svg-600@npm:^0.14.0": - version: 0.14.4 - resolution: "@material-symbols/svg-600@npm:0.14.4" - checksum: 3522055022b6e062399c9da3c701f0306f9f1bd8d5839fbf638fd2e56d97564528ca409901d7599730bf2f67df50754da859a9f499cb7156ead83890511f9d1f - languageName: node - linkType: hard - "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5"