diff --git a/.bundler-audit.yml b/.bundler-audit.yml new file mode 100644 index 00000000000000..0671df390fed81 --- /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 21ee078d60357b..88979723c338eb 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 bedd8f785001ae..fcdc4e06cbdb22 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -103,9 +103,16 @@ Rails/Exit: - 'config/boot.rb' - 'lib/mastodon/cli/*.rb' -Rails/SkipsModelValidations: +# Reason: Conflicts with `Lint/UselessMethodDefinition` for inherited controller actions +# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railslexicallyscopedactionfilter +Rails/LexicallyScopedActionFilter: Exclude: - - 'db/*migrate/**/*' + - 'app/controllers/auth/*' + +# Reason: There are appropriate times to use these features +# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsskipsmodelvalidations +Rails/SkipsModelValidations: + 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 98943d9c9216e0..510f4a4a7cda50 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -64,13 +64,6 @@ Rails/HasAndBelongsToMany: - 'app/models/status.rb' - 'app/models/tag.rb' -# Configuration parameters: Include. -# Include: app/controllers/**/*.rb, app/mailers/**/*.rb -Rails/LexicallyScopedActionFilter: - Exclude: - - 'app/controllers/auth/passwords_controller.rb' - - 'app/controllers/auth/registrations_controller.rb' - Rails/OutputSafety: Exclude: - 'config/initializers/simple_form.rb' @@ -87,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 4176ddb8de4e4e..4dc200df249b8c 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 ccb9f4b11550c2..d8e67b6bec4961 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) @@ -736,7 +730,7 @@ GEM simplecov-lcov (0.8.0) simplecov_json_formatter (0.1.4) smart_properties (1.17.0) - stackprof (0.2.25) + stackprof (0.2.26) statsd-ruby (1.5.0) stoplight (3.0.2) redlock (~> 1.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/admin/confirmations_controller.rb b/app/controllers/admin/confirmations_controller.rb index 6f4e42679722e2..7ccf5c9012de7c 100644 --- a/app/controllers/admin/confirmations_controller.rb +++ b/app/controllers/admin/confirmations_controller.rb @@ -7,7 +7,7 @@ class ConfirmationsController < BaseController def create authorize @user, :confirm? - @user.confirm! + @user.mark_email_as_confirmed! log_action :confirm, @user redirect_to admin_accounts_path end diff --git a/app/controllers/api/v1/markers_controller.rb b/app/controllers/api/v1/markers_controller.rb index f8dfba8a941bf6..8eaf7767df87e0 100644 --- a/app/controllers/api/v1/markers_controller.rb +++ b/app/controllers/api/v1/markers_controller.rb @@ -19,7 +19,7 @@ def create @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/controllers/custom_css_controller.rb b/app/controllers/custom_css_controller.rb index e7a02ea89c087c..62f8e0d772e647 100644 --- a/app/controllers/custom_css_controller.rb +++ b/app/controllers/custom_css_controller.rb @@ -1,8 +1,21 @@ # frozen_string_literal: true class CustomCssController < ActionController::Base # rubocop:disable Rails/ApplicationController + before_action :set_user_roles + def show expires_in 3.minutes, public: true render content_type: 'text/css' end + + private + + def custom_css_styles + Setting.custom_css + end + helper_method :custom_css_styles + + def set_user_roles + @user_roles = UserRole.where(highlighted: true).where.not(color: [nil, '']) + end end diff --git a/app/javascript/__mocks__/svg.js b/app/javascript/__mocks__/svg.js index e725dc2da6d8d3..762bc165d04558 100644 --- a/app/javascript/__mocks__/svg.js +++ b/app/javascript/__mocks__/svg.js @@ -1,3 +1,3 @@ -// eslint-disable-next-line import/no-anonymous-default-export -export default 'SvgrURL'; -export const ReactComponent = 'div'; +const ReactComponent = 'div'; + +export default ReactComponent; diff --git a/app/javascript/core/inert.js b/app/javascript/core/inert.js new file mode 100644 index 00000000000000..7c04a97fafd8a6 --- /dev/null +++ b/app/javascript/core/inert.js @@ -0,0 +1,4 @@ +/* Placeholder file to have `inert.scss` compiled by Webpack + This is used by the `wicg-inert` polyfill */ + +import '../styles/inert.scss'; diff --git a/app/javascript/core/theme.yml b/app/javascript/core/theme.yml index 1b2bfb98f1449f..f6f653c0a961d9 100644 --- a/app/javascript/core/theme.yml +++ b/app/javascript/core/theme.yml @@ -10,6 +10,9 @@ pack: embed: embed.js error: home: + inert: + filename: inert.js + stylesheet: true mailer: filename: mailer.js stylesheet: true diff --git a/app/javascript/flavours/glitch/components/attachment_list.jsx b/app/javascript/flavours/glitch/components/attachment_list.jsx index e7b259b200e7d8..44b8bf78eebf1e 100644 --- a/app/javascript/flavours/glitch/components/attachment_list.jsx +++ b/app/javascript/flavours/glitch/components/attachment_list.jsx @@ -7,10 +7,10 @@ import classNames from 'classnames'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as LinkIcon } from '@material-symbols/svg-600/outlined/link.svg'; - +import LinkIcon from '@/material-icons/400-24px/link.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; + const filename = url => url.split('/').pop().split('#')[0].split('?')[0]; export default class AttachmentList extends ImmutablePureComponent { diff --git a/app/javascript/flavours/glitch/components/badge.jsx b/app/javascript/flavours/glitch/components/badge.jsx index cf225a6a0c5aed..646655c249b872 100644 --- a/app/javascript/flavours/glitch/components/badge.jsx +++ b/app/javascript/flavours/glitch/components/badge.jsx @@ -2,9 +2,9 @@ import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; -import { ReactComponent as GroupsIcon } from '@material-symbols/svg-600/outlined/group.svg'; -import { ReactComponent as PersonIcon } from '@material-symbols/svg-600/outlined/person.svg'; -import { ReactComponent as SmartToyIcon } from '@material-symbols/svg-600/outlined/smart_toy.svg'; +import GroupsIcon from '@/material-icons/400-24px/group.svg?react'; +import PersonIcon from '@/material-icons/400-24px/person.svg?react'; +import SmartToyIcon from '@/material-icons/400-24px/smart_toy.svg?react'; export const Badge = ({ icon, label, domain }) => ( diff --git a/app/javascript/flavours/glitch/components/column_back_button.tsx b/app/javascript/flavours/glitch/components/column_back_button.tsx index 9f90f1dddced2b..75c594c20accd0 100644 --- a/app/javascript/flavours/glitch/components/column_back_button.tsx +++ b/app/javascript/flavours/glitch/components/column_back_button.tsx @@ -2,8 +2,7 @@ import { useCallback } from 'react'; import { FormattedMessage } from 'react-intl'; -import { ReactComponent as ArrowBackIcon } from '@material-symbols/svg-600/outlined/arrow_back.svg'; - +import ArrowBackIcon from '@/material-icons/400-24px/arrow_back.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; import { ButtonInTabsBar } from 'flavours/glitch/features/ui/util/columns_context'; diff --git a/app/javascript/flavours/glitch/components/column_header.jsx b/app/javascript/flavours/glitch/components/column_header.jsx index 8cc9fde9d38057..ec99698d0cf6ec 100644 --- a/app/javascript/flavours/glitch/components/column_header.jsx +++ b/app/javascript/flavours/glitch/components/column_header.jsx @@ -6,17 +6,17 @@ import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; import classNames from 'classnames'; import { withRouter } from 'react-router-dom'; -import { ReactComponent as AddIcon } from '@material-symbols/svg-600/outlined/add.svg'; -import { ReactComponent as ArrowBackIcon } from '@material-symbols/svg-600/outlined/arrow_back.svg'; -import { ReactComponent as ChevronLeftIcon } from '@material-symbols/svg-600/outlined/chevron_left.svg'; -import { ReactComponent as ChevronRightIcon } from '@material-symbols/svg-600/outlined/chevron_right.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; -import { ReactComponent as TuneIcon } from '@material-symbols/svg-600/outlined/tune.svg'; - +import AddIcon from '@/material-icons/400-24px/add.svg?react'; +import ArrowBackIcon from '@/material-icons/400-24px/arrow_back.svg?react'; +import ChevronLeftIcon from '@/material-icons/400-24px/chevron_left.svg?react'; +import ChevronRightIcon from '@/material-icons/400-24px/chevron_right.svg?react'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; +import TuneIcon from '@/material-icons/400-24px/tune.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; import { ButtonInTabsBar, useColumnsContext } from 'flavours/glitch/features/ui/util/columns_context'; import { WithRouterPropTypes } from 'flavours/glitch/utils/react_router'; + import { useAppHistory } from './router'; const messages = defineMessages({ diff --git a/app/javascript/flavours/glitch/components/dismissable_banner.tsx b/app/javascript/flavours/glitch/components/dismissable_banner.tsx index 2edc4e8e662420..650befb349de7f 100644 --- a/app/javascript/flavours/glitch/components/dismissable_banner.tsx +++ b/app/javascript/flavours/glitch/components/dismissable_banner.tsx @@ -8,8 +8,7 @@ import { useCallback, useState, useEffect } from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; - +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import { changeSetting } from 'flavours/glitch/actions/settings'; import { bannerSettings } from 'flavours/glitch/settings'; import { useAppSelector, useAppDispatch } from 'flavours/glitch/store'; diff --git a/app/javascript/flavours/glitch/components/domain.tsx b/app/javascript/flavours/glitch/components/domain.tsx index 34c376f530535b..ed5e8e7e4c20ef 100644 --- a/app/javascript/flavours/glitch/components/domain.tsx +++ b/app/javascript/flavours/glitch/components/domain.tsx @@ -2,7 +2,7 @@ import { useCallback } from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import { ReactComponent as LockOpenIcon } from '@material-symbols/svg-600/outlined/lock_open.svg'; +import LockOpenIcon from '@/material-icons/400-24px/lock_open.svg?react'; import { IconButton } from './icon_button'; diff --git a/app/javascript/flavours/glitch/components/dropdown_menu.jsx b/app/javascript/flavours/glitch/components/dropdown_menu.jsx index f00961dcad59be..bfaa53f6e5b8a5 100644 --- a/app/javascript/flavours/glitch/components/dropdown_menu.jsx +++ b/app/javascript/flavours/glitch/components/dropdown_menu.jsx @@ -6,10 +6,10 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; import { supportsPassiveEvents } from 'detect-passive-events'; import Overlay from 'react-overlays/Overlay'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import { CircularProgress } from 'flavours/glitch/components/circular_progress'; import { WithRouterPropTypes } from 'flavours/glitch/utils/react_router'; diff --git a/app/javascript/flavours/glitch/components/edited_timestamp/index.jsx b/app/javascript/flavours/glitch/components/edited_timestamp/index.jsx index f7186e1325f086..29a418dfb1c91c 100644 --- a/app/javascript/flavours/glitch/components/edited_timestamp/index.jsx +++ b/app/javascript/flavours/glitch/components/edited_timestamp/index.jsx @@ -5,8 +5,8 @@ import { FormattedMessage, injectIntl } from 'react-intl'; import { connect } from 'react-redux'; -import { ReactComponent as ArrowDropDownIcon } from '@material-symbols/svg-600/outlined/arrow_drop_down.svg'; +import ArrowDropDownIcon from '@/material-icons/400-24px/arrow_drop_down.svg?react'; import { openModal } from 'flavours/glitch/actions/modal'; import { Icon } from 'flavours/glitch/components/icon'; import InlineAccount from 'flavours/glitch/components/inline_account'; diff --git a/app/javascript/flavours/glitch/components/icon.tsx b/app/javascript/flavours/glitch/components/icon.tsx index 1784eaf38f020d..052833fedd3a0f 100644 --- a/app/javascript/flavours/glitch/components/icon.tsx +++ b/app/javascript/flavours/glitch/components/icon.tsx @@ -1,7 +1,6 @@ import classNames from 'classnames'; -import { ReactComponent as CheckBoxOutlineBlankIcon } from '@material-symbols/svg-600/outlined/check_box_outline_blank.svg'; - +import CheckBoxOutlineBlankIcon from '@/material-icons/400-24px/check_box_outline_blank.svg?react'; import { isProduction } from 'flavours/glitch/utils/environment'; interface SVGPropsWithTitle extends React.SVGProps { diff --git a/app/javascript/flavours/glitch/components/load_gap.tsx b/app/javascript/flavours/glitch/components/load_gap.tsx index 14ad26f8c75f92..f0d15d37761030 100644 --- a/app/javascript/flavours/glitch/components/load_gap.tsx +++ b/app/javascript/flavours/glitch/components/load_gap.tsx @@ -2,8 +2,7 @@ import { useCallback } from 'react'; import { useIntl, defineMessages } from 'react-intl'; -import { ReactComponent as MoreHorizIcon } from '@material-symbols/svg-600/outlined/more_horiz.svg'; - +import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; const messages = defineMessages({ diff --git a/app/javascript/flavours/glitch/components/logo.jsx b/app/javascript/flavours/glitch/components/logo.jsx index 16ca9f80fd0b04..73a94af9eda41f 100644 --- a/app/javascript/flavours/glitch/components/logo.jsx +++ b/app/javascript/flavours/glitch/components/logo.jsx @@ -1,4 +1,4 @@ -import logo from 'mastodon/../images/logo.svg'; +import logo from '@/images/logo.svg'; export const WordmarkLogo = () => ( diff --git a/app/javascript/flavours/glitch/components/media_gallery.jsx b/app/javascript/flavours/glitch/components/media_gallery.jsx index 575851543aa003..74434818cc04a2 100644 --- a/app/javascript/flavours/glitch/components/media_gallery.jsx +++ b/app/javascript/flavours/glitch/components/media_gallery.jsx @@ -8,9 +8,9 @@ import classNames from 'classnames'; import { is } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { ReactComponent as VisibilityOffIcon } from '@material-symbols/svg-600/outlined/visibility_off.svg'; import { debounce } from 'lodash'; +import VisibilityOffIcon from '@/material-icons/400-24px/visibility_off.svg?react'; import { Blurhash } from 'flavours/glitch/components/blurhash'; import { autoPlayGif, displayMedia, useBlurhash } from '../initial_state'; diff --git a/app/javascript/flavours/glitch/components/notification_purge_buttons.jsx b/app/javascript/flavours/glitch/components/notification_purge_buttons.jsx index ddbfb1d44a585a..b17173832277ab 100644 --- a/app/javascript/flavours/glitch/components/notification_purge_buttons.jsx +++ b/app/javascript/flavours/glitch/components/notification_purge_buttons.jsx @@ -12,10 +12,10 @@ import classNames from 'classnames'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as DeleteIcon } from '@material-symbols/svg-600/outlined/delete.svg'; - +import DeleteIcon from '@/material-icons/400-24px/delete.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; + const messages = defineMessages({ btnAll : { id: 'notification_purge.btn_all', defaultMessage: 'Select\nall' }, btnNone : { id: 'notification_purge.btn_none', defaultMessage: 'Select\nnone' }, diff --git a/app/javascript/flavours/glitch/components/picture_in_picture_placeholder.jsx b/app/javascript/flavours/glitch/components/picture_in_picture_placeholder.jsx index 685f3c273867f4..10a0a7f5bbfacb 100644 --- a/app/javascript/flavours/glitch/components/picture_in_picture_placeholder.jsx +++ b/app/javascript/flavours/glitch/components/picture_in_picture_placeholder.jsx @@ -5,8 +5,8 @@ import { FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; -import { ReactComponent as CancelPresentationIcon } from '@material-symbols/svg-600/outlined/cancel_presentation.svg'; +import CancelPresentationIcon from '@/material-icons/400-24px/cancel_presentation.svg?react'; import { removePictureInPicture } from 'flavours/glitch/actions/picture_in_picture'; import { Icon } from 'flavours/glitch/components/icon'; diff --git a/app/javascript/flavours/glitch/components/poll.jsx b/app/javascript/flavours/glitch/components/poll.jsx index 4fcd56a0f37b3f..f9e008bd72f977 100644 --- a/app/javascript/flavours/glitch/components/poll.jsx +++ b/app/javascript/flavours/glitch/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 { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/check.svg'; import escapeTextContentForBrowser from 'escape-html'; import spring from 'react-motion/lib/spring'; +import CheckIcon from '@/material-icons/400-24px/check.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; import emojify from 'flavours/glitch/features/emoji/emoji'; import Motion from 'flavours/glitch/features/ui/util/optional_motion'; diff --git a/app/javascript/flavours/glitch/components/status_action_bar.jsx b/app/javascript/flavours/glitch/components/status_action_bar.jsx index 5d48cfafd49ce4..5727f36c86be6f 100644 --- a/app/javascript/flavours/glitch/components/status_action_bar.jsx +++ b/app/javascript/flavours/glitch/components/status_action_bar.jsx @@ -8,21 +8,20 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as BookmarkIcon } from '@material-symbols/svg-600/outlined/bookmark-fill.svg'; -import { ReactComponent as BookmarkBorderIcon } from '@material-symbols/svg-600/outlined/bookmark.svg'; -import { ReactComponent as MoreHorizIcon } from '@material-symbols/svg-600/outlined/more_horiz.svg'; -import { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; -import { ReactComponent as ReplyIcon } from '@material-symbols/svg-600/outlined/reply.svg'; -import { ReactComponent as ReplyAllIcon } from '@material-symbols/svg-600/outlined/reply_all.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star-fill.svg'; -import { ReactComponent as StarBorderIcon } from '@material-symbols/svg-600/outlined/star.svg'; -import { ReactComponent as VisibilityIcon } from '@material-symbols/svg-600/outlined/visibility.svg'; - +import BookmarkIcon from '@/material-icons/400-24px/bookmark-fill.svg?react'; +import BookmarkBorderIcon from '@/material-icons/400-24px/bookmark.svg?react'; +import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; +import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; +import ReplyIcon from '@/material-icons/400-24px/reply.svg?react'; +import ReplyAllIcon from '@/material-icons/400-24px/reply_all.svg?react'; +import StarIcon from '@/material-icons/400-24px/star-fill.svg?react'; +import StarBorderIcon from '@/material-icons/400-24px/star.svg?react'; +import VisibilityIcon from '@/material-icons/400-24px/visibility.svg?react'; +import RepeatDisabledIcon from '@/svg-icons/repeat_disabled.svg'; +import RepeatPrivateIcon from '@/svg-icons/repeat_private.svg'; import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_FEDERATION } from 'flavours/glitch/permissions'; import { accountAdminLink, statusAdminLink } from 'flavours/glitch/utils/backend_links'; import { WithRouterPropTypes } from 'flavours/glitch/utils/react_router'; -import { ReactComponent as RepeatDisabledIcon } from 'mastodon/../svg-icons/repeat_disabled.svg'; -import { ReactComponent as RepeatPrivateIcon } from 'mastodon/../svg-icons/repeat_private.svg'; import DropdownMenuContainer from '../containers/dropdown_menu_container'; import { me } from '../initial_state'; diff --git a/app/javascript/flavours/glitch/components/status_content.jsx b/app/javascript/flavours/glitch/components/status_content.jsx index 5e0a40835f9982..f5d5ccc70af187 100644 --- a/app/javascript/flavours/glitch/components/status_content.jsx +++ b/app/javascript/flavours/glitch/components/status_content.jsx @@ -9,16 +9,16 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import { ReactComponent as ImageIcon } from '@material-symbols/svg-600/outlined/image.svg'; -import { ReactComponent as InsertChartIcon } from '@material-symbols/svg-600/outlined/insert_chart.svg'; -import { ReactComponent as LinkIcon } from '@material-symbols/svg-600/outlined/link.svg'; -import { ReactComponent as MovieIcon } from '@material-symbols/svg-600/outlined/movie.svg'; -import { ReactComponent as MusicNoteIcon } from '@material-symbols/svg-600/outlined/music_note.svg'; - +import ImageIcon from '@/material-icons/400-24px/image.svg?react'; +import InsertChartIcon from '@/material-icons/400-24px/insert_chart.svg?react'; +import LinkIcon from '@/material-icons/400-24px/link.svg?react'; +import MovieIcon from '@/material-icons/400-24px/movie.svg?react'; +import MusicNoteIcon from '@/material-icons/400-24px/music_note.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; import { autoPlayGif, languages as preloadedLanguages } from 'flavours/glitch/initial_state'; import { decode as decodeIDNA } from 'flavours/glitch/utils/idna'; + import { Permalink } from './permalink'; const textMatchesTarget = (text, origin, host) => { diff --git a/app/javascript/flavours/glitch/components/status_icons.jsx b/app/javascript/flavours/glitch/components/status_icons.jsx index 5e7aa6e6381466..2727d3410acc92 100644 --- a/app/javascript/flavours/glitch/components/status_icons.jsx +++ b/app/javascript/flavours/glitch/components/status_icons.jsx @@ -6,18 +6,18 @@ import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { ReactComponent as ExpandLessIcon } from '@material-symbols/svg-600/outlined/expand_less.svg'; -import { ReactComponent as ForumIcon } from '@material-symbols/svg-600/outlined/forum.svg'; -import { ReactComponent as HomeIcon } from '@material-symbols/svg-600/outlined/home.svg'; -import { ReactComponent as ImageIcon } from '@material-symbols/svg-600/outlined/image.svg'; -import { ReactComponent as InsertChartIcon } from '@material-symbols/svg-600/outlined/insert_chart.svg'; -import { ReactComponent as LinkIcon } from '@material-symbols/svg-600/outlined/link.svg'; -import { ReactComponent as MovieIcon } from '@material-symbols/svg-600/outlined/movie.svg'; -import { ReactComponent as MusicNoteIcon } from '@material-symbols/svg-600/outlined/music_note.svg'; - +import ExpandLessIcon from '@/material-icons/400-24px/expand_less.svg?react'; +import ForumIcon from '@/material-icons/400-24px/forum.svg?react'; +import HomeIcon from '@/material-icons/400-24px/home.svg?react'; +import ImageIcon from '@/material-icons/400-24px/image.svg?react'; +import InsertChartIcon from '@/material-icons/400-24px/insert_chart.svg?react'; +import LinkIcon from '@/material-icons/400-24px/link.svg?react'; +import MovieIcon from '@/material-icons/400-24px/movie.svg?react'; +import MusicNoteIcon from '@/material-icons/400-24px/music_note.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; import { languages } from 'flavours/glitch/initial_state'; + import { IconButton } from './icon_button'; import { VisibilityIcon } from './visibility_icon'; diff --git a/app/javascript/flavours/glitch/components/status_prepend.jsx b/app/javascript/flavours/glitch/components/status_prepend.jsx index d4a94405dca68f..355f65a3e21ff5 100644 --- a/app/javascript/flavours/glitch/components/status_prepend.jsx +++ b/app/javascript/flavours/glitch/components/status_prepend.jsx @@ -6,16 +6,16 @@ import { FormattedMessage } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { ReactComponent as EditIcon } from '@material-symbols/svg-600/outlined/edit.svg'; -import { ReactComponent as HomeIcon } from '@material-symbols/svg-600/outlined/home-fill.svg'; -import { ReactComponent as InsertChartIcon } from '@material-symbols/svg-600/outlined/insert_chart.svg'; -import { ReactComponent as PushPinIcon } from '@material-symbols/svg-600/outlined/push_pin.svg'; -import { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star-fill.svg'; - +import EditIcon from '@/material-icons/400-24px/edit.svg?react'; +import HomeIcon from '@/material-icons/400-24px/home-fill.svg?react'; +import InsertChartIcon from '@/material-icons/400-24px/insert_chart.svg?react'; +import PushPinIcon from '@/material-icons/400-24px/push_pin.svg?react'; +import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; +import StarIcon from '@/material-icons/400-24px/star-fill.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; import { me } from 'flavours/glitch/initial_state'; + export default class StatusPrepend extends PureComponent { static propTypes = { diff --git a/app/javascript/flavours/glitch/components/verified_badge.tsx b/app/javascript/flavours/glitch/components/verified_badge.tsx index e96bf8256339df..626cc500d6a672 100644 --- a/app/javascript/flavours/glitch/components/verified_badge.tsx +++ b/app/javascript/flavours/glitch/components/verified_badge.tsx @@ -1,4 +1,4 @@ -import { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/check.svg'; +import CheckIcon from '@/material-icons/400-24px/check.svg?react'; import { Icon } from './icon'; diff --git a/app/javascript/flavours/glitch/components/visibility_icon.tsx b/app/javascript/flavours/glitch/components/visibility_icon.tsx index 3a8a54d1739450..baf134c0aeaf2f 100644 --- a/app/javascript/flavours/glitch/components/visibility_icon.tsx +++ b/app/javascript/flavours/glitch/components/visibility_icon.tsx @@ -1,9 +1,9 @@ import { defineMessages, useIntl } from 'react-intl'; -import { ReactComponent as LockIcon } from '@material-symbols/svg-600/outlined/lock.svg'; -import { ReactComponent as LockOpenIcon } from '@material-symbols/svg-600/outlined/lock_open.svg'; -import { ReactComponent as MailIcon } from '@material-symbols/svg-600/outlined/mail.svg'; -import { ReactComponent as PublicIcon } from '@material-symbols/svg-600/outlined/public.svg'; +import LockIcon from '@/material-icons/400-24px/lock.svg?react'; +import LockOpenIcon from '@/material-icons/400-24px/lock_open.svg?react'; +import MailIcon from '@/material-icons/400-24px/mail.svg?react'; +import PublicIcon from '@/material-icons/400-24px/public.svg?react'; import { Icon } from './icon'; diff --git a/app/javascript/flavours/glitch/features/about/index.jsx b/app/javascript/flavours/glitch/features/about/index.jsx index 9510f46f55e449..e5544c8a74f195 100644 --- a/app/javascript/flavours/glitch/features/about/index.jsx +++ b/app/javascript/flavours/glitch/features/about/index.jsx @@ -10,9 +10,9 @@ import { List as ImmutableList } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import { ReactComponent as ChevronRightIcon } from '@material-symbols/svg-600/outlined/chevron_right.svg'; -import { ReactComponent as ExpandMoreIcon } from '@material-symbols/svg-600/outlined/expand_more.svg'; +import ChevronRightIcon from '@/material-icons/400-24px/chevron_right.svg?react'; +import ExpandMoreIcon from '@/material-icons/400-24px/expand_more.svg?react'; import { fetchServer, fetchExtendedDescription, fetchDomainBlocks } from 'flavours/glitch/actions/server'; import Column from 'flavours/glitch/components/column'; import { Icon } from 'flavours/glitch/components/icon'; diff --git a/app/javascript/flavours/glitch/features/account/components/action_bar.jsx b/app/javascript/flavours/glitch/features/account/components/action_bar.jsx index 96a5ec27129a12..3fcf0440c0376c 100644 --- a/app/javascript/flavours/glitch/features/account/components/action_bar.jsx +++ b/app/javascript/flavours/glitch/features/account/components/action_bar.jsx @@ -6,10 +6,10 @@ import { NavLink } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { ReactComponent as InfoIcon } from '@material-symbols/svg-600/outlined/info.svg'; - +import InfoIcon from '@/material-icons/400-24px/info.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; + class ActionBar extends PureComponent { static propTypes = { @@ -30,7 +30,8 @@ class ActionBar extends PureComponent { return (
- + @@ -44,14 +45,17 @@ class ActionBar extends PureComponent { if (account.get('acct') !== account.get('username')) { extraInfo = (
- - {' '} - - - + +
+ + {' '} + + + +
); } diff --git a/app/javascript/flavours/glitch/features/account/components/follow_request_note.jsx b/app/javascript/flavours/glitch/features/account/components/follow_request_note.jsx index da150ff8fb6c1e..37d1508528524c 100644 --- a/app/javascript/flavours/glitch/features/account/components/follow_request_note.jsx +++ b/app/javascript/flavours/glitch/features/account/components/follow_request_note.jsx @@ -3,11 +3,11 @@ import { FormattedMessage } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/check.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; - +import CheckIcon from '@/material-icons/400-24px/check.svg?react'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; + export default class FollowRequestNote extends ImmutablePureComponent { static propTypes = { diff --git a/app/javascript/flavours/glitch/features/account/components/header.jsx b/app/javascript/flavours/glitch/features/account/components/header.jsx index 8e96e84ba378ae..81ce989e996569 100644 --- a/app/javascript/flavours/glitch/features/account/components/header.jsx +++ b/app/javascript/flavours/glitch/features/account/components/header.jsx @@ -9,12 +9,12 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/check.svg'; -import { ReactComponent as LockIcon } from '@material-symbols/svg-600/outlined/lock.svg'; -import { ReactComponent as MoreHorizIcon } from '@material-symbols/svg-600/outlined/more_horiz.svg'; -import { ReactComponent as NotificationsIcon } from '@material-symbols/svg-600/outlined/notifications.svg'; -import { ReactComponent as NotificationsActiveIcon } from '@material-symbols/svg-600/outlined/notifications_active-fill.svg'; +import CheckIcon from '@/material-icons/400-24px/check.svg?react'; +import LockIcon from '@/material-icons/400-24px/lock.svg?react'; +import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; +import NotificationsIcon from '@/material-icons/400-24px/notifications.svg?react'; +import NotificationsActiveIcon from '@/material-icons/400-24px/notifications_active-fill.svg?react'; import { Avatar } from 'flavours/glitch/components/avatar'; import { Badge, AutomatedBadge, GroupBadge } from 'flavours/glitch/components/badge'; import { Button } from 'flavours/glitch/components/button'; diff --git a/app/javascript/flavours/glitch/features/account/components/profile_column_header.jsx b/app/javascript/flavours/glitch/features/account/components/profile_column_header.jsx index b3b07f273f579a..0628773497e653 100644 --- a/app/javascript/flavours/glitch/features/account/components/profile_column_header.jsx +++ b/app/javascript/flavours/glitch/features/account/components/profile_column_header.jsx @@ -3,7 +3,7 @@ import { PureComponent } from 'react'; import { injectIntl, defineMessages } from 'react-intl'; -import { ReactComponent as PersonIcon } from '@material-symbols/svg-600/outlined/person.svg'; +import PersonIcon from '@/material-icons/400-24px/person.svg?react'; import ColumnHeader from '../../../components/column_header'; diff --git a/app/javascript/flavours/glitch/features/account_gallery/components/media_item.jsx b/app/javascript/flavours/glitch/features/account_gallery/components/media_item.jsx index c16cd8ddd0066a..ebd156a4f9b996 100644 --- a/app/javascript/flavours/glitch/features/account_gallery/components/media_item.jsx +++ b/app/javascript/flavours/glitch/features/account_gallery/components/media_item.jsx @@ -5,14 +5,14 @@ import classNames from 'classnames'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as AudiotrackIcon } from '@material-symbols/svg-600/outlined/music_note.svg'; -import { ReactComponent as PlayArrowIcon } from '@material-symbols/svg-600/outlined/play_arrow.svg'; -import { ReactComponent as VisibilityOffIcon } from '@material-symbols/svg-600/outlined/visibility_off.svg'; - +import AudiotrackIcon from '@/material-icons/400-24px/music_note.svg?react'; +import PlayArrowIcon from '@/material-icons/400-24px/play_arrow.svg?react'; +import VisibilityOffIcon from '@/material-icons/400-24px/visibility_off.svg?react'; import { Blurhash } from 'flavours/glitch/components/blurhash'; import { Icon } from 'flavours/glitch/components/icon'; import { autoPlayGif, displayMedia, useBlurhash } from 'flavours/glitch/initial_state'; + export default class MediaItem extends ImmutablePureComponent { static propTypes = { diff --git a/app/javascript/flavours/glitch/features/account_timeline/components/moved_note.jsx b/app/javascript/flavours/glitch/features/account_timeline/components/moved_note.jsx index 90048472a14a5a..9ccf5bd17ac8b4 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/components/moved_note.jsx +++ b/app/javascript/flavours/glitch/features/account_timeline/components/moved_note.jsx @@ -5,8 +5,8 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as TripIcon } from '@material-symbols/svg-600/outlined/trip.svg'; +import TripIcon from '@/material-icons/400-24px/trip.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; import { WithRouterPropTypes } from 'flavours/glitch/utils/react_router'; diff --git a/app/javascript/flavours/glitch/features/audio/index.jsx b/app/javascript/flavours/glitch/features/audio/index.jsx index 3e949dca420750..dc9d76222d0f06 100644 --- a/app/javascript/flavours/glitch/features/audio/index.jsx +++ b/app/javascript/flavours/glitch/features/audio/index.jsx @@ -7,17 +7,18 @@ import classNames from 'classnames'; import { is } from 'immutable'; -import { ReactComponent as DownloadIcon } from '@material-symbols/svg-600/outlined/download.svg'; -import { ReactComponent as PauseIcon } from '@material-symbols/svg-600/outlined/pause.svg'; -import { ReactComponent as PlayArrowIcon } from '@material-symbols/svg-600/outlined/play_arrow-fill.svg'; -import { ReactComponent as VisibilityOffIcon } from '@material-symbols/svg-600/outlined/visibility_off.svg'; -import { ReactComponent as VolumeOffIcon } from '@material-symbols/svg-600/outlined/volume_off-fill.svg'; -import { ReactComponent as VolumeUpIcon } from '@material-symbols/svg-600/outlined/volume_up-fill.svg'; import { throttle, debounce } from 'lodash'; +import DownloadIcon from '@/material-icons/400-24px/download.svg?react'; +import PauseIcon from '@/material-icons/400-24px/pause.svg?react'; +import PlayArrowIcon from '@/material-icons/400-24px/play_arrow-fill.svg?react'; +import VisibilityOffIcon from '@/material-icons/400-24px/visibility_off.svg?react'; +import VolumeOffIcon from '@/material-icons/400-24px/volume_off-fill.svg?react'; +import VolumeUpIcon from '@/material-icons/400-24px/volume_up-fill.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; import { formatTime, getPointerPosition, fileNameFromURL } from 'flavours/glitch/features/video'; + import { Blurhash } from '../../components/blurhash'; import { displayMedia, useBlurhash } from '../../initial_state'; diff --git a/app/javascript/flavours/glitch/features/blocks/index.jsx b/app/javascript/flavours/glitch/features/blocks/index.jsx index 615e4c8be22fef..1a631d3d07ca56 100644 --- a/app/javascript/flavours/glitch/features/blocks/index.jsx +++ b/app/javascript/flavours/glitch/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 { ReactComponent as BlockIcon } from '@material-symbols/svg-600/outlined/block-fill.svg'; import { debounce } from 'lodash'; +import BlockIcon from '@/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/flavours/glitch/features/bookmarked_statuses/index.jsx b/app/javascript/flavours/glitch/features/bookmarked_statuses/index.jsx index 2dc0a3b9c9b73b..81d2e79a12d1e0 100644 --- a/app/javascript/flavours/glitch/features/bookmarked_statuses/index.jsx +++ b/app/javascript/flavours/glitch/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 { ReactComponent as BookmarksIcon } from '@material-symbols/svg-600/outlined/bookmarks-fill.svg'; import { debounce } from 'lodash'; +import BookmarksIcon from '@/material-icons/400-24px/bookmarks-fill.svg?react'; import { fetchBookmarkedStatuses, expandBookmarkedStatuses } from 'flavours/glitch/actions/bookmarks'; import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/columns'; import ColumnHeader from 'flavours/glitch/components/column_header'; diff --git a/app/javascript/flavours/glitch/features/community_timeline/index.jsx b/app/javascript/flavours/glitch/features/community_timeline/index.jsx index 8667f7d53d67cf..e2b982aaf86e60 100644 --- a/app/javascript/flavours/glitch/features/community_timeline/index.jsx +++ b/app/javascript/flavours/glitch/features/community_timeline/index.jsx @@ -7,8 +7,8 @@ import { Helmet } from 'react-helmet'; import { connect } from 'react-redux'; -import { ReactComponent as PeopleIcon } from '@material-symbols/svg-600/outlined/group.svg'; +import PeopleIcon from '@/material-icons/400-24px/group.svg?react'; import { DismissableBanner } from 'flavours/glitch/components/dismissable_banner'; import { domain } from 'flavours/glitch/initial_state'; diff --git a/app/javascript/flavours/glitch/features/compose/components/action_bar.jsx b/app/javascript/flavours/glitch/features/compose/components/action_bar.jsx index 737bb6c6221a80..de5d2369c39380 100644 --- a/app/javascript/flavours/glitch/features/compose/components/action_bar.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/action_bar.jsx @@ -5,10 +5,10 @@ import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { ReactComponent as MenuIcon } from '@material-symbols/svg-600/outlined/menu.svg'; - +import MenuIcon from '@/material-icons/400-24px/menu.svg?react'; import { preferencesLink, profileLink } from 'flavours/glitch/utils/backend_links'; + import DropdownMenuContainer from '../../../containers/dropdown_menu_container'; const messages = defineMessages({ diff --git a/app/javascript/flavours/glitch/features/compose/components/header.jsx b/app/javascript/flavours/glitch/features/compose/components/header.jsx index 021fcb3bb217d6..bdcb51cd92881c 100644 --- a/app/javascript/flavours/glitch/features/compose/components/header.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/header.jsx @@ -7,18 +7,18 @@ import { Link } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as PeopleIcon } from '@material-symbols/svg-600/outlined/group.svg'; -import { ReactComponent as HomeIcon } from '@material-symbols/svg-600/outlined/home-fill.svg'; -import { ReactComponent as LogoutIcon } from '@material-symbols/svg-600/outlined/logout.svg'; -import { ReactComponent as ManufacturingIcon } from '@material-symbols/svg-600/outlined/manufacturing.svg'; -import { ReactComponent as MenuIcon } from '@material-symbols/svg-600/outlined/menu.svg'; -import { ReactComponent as NotificationsIcon } from '@material-symbols/svg-600/outlined/notifications-fill.svg'; -import { ReactComponent as PublicIcon } from '@material-symbols/svg-600/outlined/public.svg'; - +import PeopleIcon from '@/material-icons/400-24px/group.svg?react'; +import HomeIcon from '@/material-icons/400-24px/home-fill.svg?react'; +import LogoutIcon from '@/material-icons/400-24px/logout.svg?react'; +import ManufacturingIcon from '@/material-icons/400-24px/manufacturing.svg?react'; +import MenuIcon from '@/material-icons/400-24px/menu.svg?react'; +import NotificationsIcon from '@/material-icons/400-24px/notifications-fill.svg?react'; +import PublicIcon from '@/material-icons/400-24px/public.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; import { signOutLink } from 'flavours/glitch/utils/backend_links'; import { conditionalRender } from 'flavours/glitch/utils/react_helpers'; + const messages = defineMessages({ community: { defaultMessage: 'Local timeline', diff --git a/app/javascript/flavours/glitch/features/compose/components/options.jsx b/app/javascript/flavours/glitch/features/compose/components/options.jsx index cdcc0dc1e7f00b..314b6e638fab7b 100644 --- a/app/javascript/flavours/glitch/features/compose/components/options.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/options.jsx @@ -6,19 +6,20 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import { ReactComponent as AttachFileIcon } from '@material-symbols/svg-600/outlined/attach_file.svg'; -import { ReactComponent as BrushIcon } from '@material-symbols/svg-600/outlined/brush.svg'; -import { ReactComponent as CodeIcon } from '@material-symbols/svg-600/outlined/code.svg'; -import { ReactComponent as DescriptionIcon } from '@material-symbols/svg-600/outlined/description.svg'; -import { ReactComponent as InsertChartIcon } from '@material-symbols/svg-600/outlined/insert_chart.svg'; -import { ReactComponent as MarkdownIcon } from '@material-symbols/svg-600/outlined/markdown.svg'; -import { ReactComponent as MoreHorizIcon } from '@material-symbols/svg-600/outlined/more_horiz.svg'; -import { ReactComponent as UploadFileIcon } from '@material-symbols/svg-600/outlined/upload_file.svg'; import Toggle from 'react-toggle'; +import AttachFileIcon from '@/material-icons/400-24px/attach_file.svg?react'; +import BrushIcon from '@/material-icons/400-24px/brush.svg?react'; +import CodeIcon from '@/material-icons/400-24px/code.svg?react'; +import DescriptionIcon from '@/material-icons/400-24px/description.svg?react'; +import InsertChartIcon from '@/material-icons/400-24px/insert_chart.svg?react'; +import MarkdownIcon from '@/material-icons/400-24px/markdown.svg?react'; +import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; +import UploadFileIcon from '@/material-icons/400-24px/upload_file.svg?react'; import { IconButton } from 'flavours/glitch/components/icon_button'; import { pollLimits } from 'flavours/glitch/initial_state'; + import DropdownContainer from '../containers/dropdown_container'; import LanguageDropdown from '../containers/language_dropdown_container'; import PrivacyDropdownContainer from '../containers/privacy_dropdown_container'; diff --git a/app/javascript/flavours/glitch/features/compose/components/poll_form.jsx b/app/javascript/flavours/glitch/features/compose/components/poll_form.jsx index e8c22fbd0e9727..053b02673de03a 100644 --- a/app/javascript/flavours/glitch/features/compose/components/poll_form.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/poll_form.jsx @@ -8,9 +8,9 @@ import classNames from 'classnames'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as AddIcon } from '@material-symbols/svg-600/outlined/add.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; +import AddIcon from '@/material-icons/400-24px/add.svg?react'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import AutosuggestInput from 'flavours/glitch/components/autosuggest_input'; import { Icon } from 'flavours/glitch/components/icon'; import { IconButton } from 'flavours/glitch/components/icon_button'; diff --git a/app/javascript/flavours/glitch/features/compose/components/privacy_dropdown.jsx b/app/javascript/flavours/glitch/features/compose/components/privacy_dropdown.jsx index c0bc4bf85ea5c3..7980c1007e817b 100644 --- a/app/javascript/flavours/glitch/features/compose/components/privacy_dropdown.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/privacy_dropdown.jsx @@ -3,10 +3,10 @@ import { PureComponent } from 'react'; import { injectIntl, defineMessages } from 'react-intl'; -import { ReactComponent as LockIcon } from '@material-symbols/svg-600/outlined/lock.svg'; -import { ReactComponent as LockOpenIcon } from '@material-symbols/svg-600/outlined/lock_open.svg'; -import { ReactComponent as MailIcon } from '@material-symbols/svg-600/outlined/mail.svg'; -import { ReactComponent as PublicIcon } from '@material-symbols/svg-600/outlined/public.svg'; +import LockIcon from '@/material-icons/400-24px/lock.svg?react'; +import LockOpenIcon from '@/material-icons/400-24px/lock_open.svg?react'; +import MailIcon from '@/material-icons/400-24px/mail.svg?react'; +import PublicIcon from '@/material-icons/400-24px/public.svg?react'; import Dropdown from './dropdown'; diff --git a/app/javascript/flavours/glitch/features/compose/components/publisher.jsx b/app/javascript/flavours/glitch/features/compose/components/publisher.jsx index b8d81b7f9669f4..ff825ca0c925d0 100644 --- a/app/javascript/flavours/glitch/features/compose/components/publisher.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/publisher.jsx @@ -4,14 +4,14 @@ import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as LockIcon } from '@material-symbols/svg-600/outlined/lock.svg'; -import { ReactComponent as LockOpenIcon } from '@material-symbols/svg-600/outlined/lock_open.svg'; -import { ReactComponent as MailIcon } from '@material-symbols/svg-600/outlined/mail.svg'; -import { ReactComponent as PublicIcon } from '@material-symbols/svg-600/outlined/public.svg'; - +import LockIcon from '@/material-icons/400-24px/lock.svg?react'; +import LockOpenIcon from '@/material-icons/400-24px/lock_open.svg?react'; +import MailIcon from '@/material-icons/400-24px/mail.svg?react'; +import PublicIcon from '@/material-icons/400-24px/public.svg?react'; import { Button } from 'flavours/glitch/components/button'; import { Icon } from 'flavours/glitch/components/icon'; + const messages = defineMessages({ publish: { defaultMessage: 'Publish', diff --git a/app/javascript/flavours/glitch/features/compose/components/reply_indicator.jsx b/app/javascript/flavours/glitch/features/compose/components/reply_indicator.jsx index 48ded3dcd414e4..8af8cd441a02ea 100644 --- a/app/javascript/flavours/glitch/features/compose/components/reply_indicator.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/reply_indicator.jsx @@ -5,8 +5,8 @@ import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import AttachmentList from 'flavours/glitch/components/attachment_list'; import { WithOptionalRouterPropTypes, withOptionalRouter } from 'flavours/glitch/utils/react_router'; diff --git a/app/javascript/flavours/glitch/features/compose/components/search.jsx b/app/javascript/flavours/glitch/features/compose/components/search.jsx index ccd56af365141d..70c24d0a420630 100644 --- a/app/javascript/flavours/glitch/features/compose/components/search.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/search.jsx @@ -8,10 +8,10 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { ReactComponent as CancelIcon } from '@material-symbols/svg-600/outlined/cancel-fill.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; -import { ReactComponent as SearchIcon } from '@material-symbols/svg-600/outlined/search.svg'; +import CancelIcon from '@/material-icons/400-24px/cancel-fill.svg?react'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; +import SearchIcon from '@/material-icons/400-24px/search.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; import { domain, searchEnabled } from 'flavours/glitch/initial_state'; import { HASHTAG_REGEX } from 'flavours/glitch/utils/hashtags'; diff --git a/app/javascript/flavours/glitch/features/compose/components/search_results.jsx b/app/javascript/flavours/glitch/features/compose/components/search_results.jsx index 503afd432a6bd7..3c0aec19568e9e 100644 --- a/app/javascript/flavours/glitch/features/compose/components/search_results.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/search_results.jsx @@ -5,15 +5,15 @@ import { FormattedMessage } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as FindInPageIcon } from '@material-symbols/svg-600/outlined/find_in_page.svg'; -import { ReactComponent as PeopleIcon } from '@material-symbols/svg-600/outlined/group.svg'; -import { ReactComponent as SearchIcon } from '@material-symbols/svg-600/outlined/search.svg'; -import { ReactComponent as TagIcon } from '@material-symbols/svg-600/outlined/tag.svg'; - +import FindInPageIcon from '@/material-icons/400-24px/find_in_page.svg?react'; +import PeopleIcon from '@/material-icons/400-24px/group.svg?react'; +import SearchIcon from '@/material-icons/400-24px/search.svg?react'; +import TagIcon from '@/material-icons/400-24px/tag.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; import { LoadMore } from 'flavours/glitch/components/load_more'; import { SearchSection } from 'flavours/glitch/features/explore/components/search_section'; + import { ImmutableHashtag as Hashtag } from '../../../components/hashtag'; import AccountContainer from '../../../containers/account_container'; import StatusContainer from '../../../containers/status_container'; diff --git a/app/javascript/flavours/glitch/features/compose/components/textarea_icons.jsx b/app/javascript/flavours/glitch/features/compose/components/textarea_icons.jsx index 334efdac875c49..74706833d91905 100644 --- a/app/javascript/flavours/glitch/features/compose/components/textarea_icons.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/textarea_icons.jsx @@ -5,11 +5,11 @@ import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as ForumIcon } from '@material-symbols/svg-600/outlined/forum.svg'; -import { ReactComponent as HomeIcon } from '@material-symbols/svg-600/outlined/home-fill.svg'; - +import ForumIcon from '@/material-icons/400-24px/forum.svg?react'; +import HomeIcon from '@/material-icons/400-24px/home-fill.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; + const messages = defineMessages({ localOnly: { defaultMessage: 'This post is local-only', diff --git a/app/javascript/flavours/glitch/features/compose/components/upload.jsx b/app/javascript/flavours/glitch/features/compose/components/upload.jsx index ac26fb1c6a6fe4..c317fc4fc13568 100644 --- a/app/javascript/flavours/glitch/features/compose/components/upload.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/upload.jsx @@ -5,13 +5,14 @@ import { FormattedMessage } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; -import { ReactComponent as EditIcon } from '@material-symbols/svg-600/outlined/edit.svg'; -import { ReactComponent as InfoIcon } from '@material-symbols/svg-600/outlined/info.svg'; import spring from 'react-motion/lib/spring'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; +import EditIcon from '@/material-icons/400-24px/edit.svg?react'; +import InfoIcon from '@/material-icons/400-24px/info.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; + import Motion from '../../ui/util/optional_motion'; export default class Upload extends ImmutablePureComponent { diff --git a/app/javascript/flavours/glitch/features/compose/components/upload_progress.jsx b/app/javascript/flavours/glitch/features/compose/components/upload_progress.jsx index 5169fbf783fbc9..f4408b5460084c 100644 --- a/app/javascript/flavours/glitch/features/compose/components/upload_progress.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/upload_progress.jsx @@ -3,9 +3,9 @@ import { PureComponent } from 'react'; import { FormattedMessage } from 'react-intl'; -import { ReactComponent as UploadFileIcon } from '@material-symbols/svg-600/outlined/upload_file.svg'; import spring from 'react-motion/lib/spring'; +import UploadFileIcon from '@/material-icons/400-24px/upload_file.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; import Motion from '../../ui/util/optional_motion'; diff --git a/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.jsx b/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.jsx index 92f951e635efe5..00fbc8d46470bf 100644 --- a/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.jsx +++ b/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.jsx @@ -8,10 +8,10 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as MoreHorizIcon } from '@material-symbols/svg-600/outlined/more_horiz.svg'; -import { ReactComponent as ReplyIcon } from '@material-symbols/svg-600/outlined/reply.svg'; import { HotKeys } from 'react-hotkeys'; +import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; +import ReplyIcon from '@/material-icons/400-24px/reply.svg?react'; import AttachmentList from 'flavours/glitch/components/attachment_list'; import AvatarComposite from 'flavours/glitch/components/avatar_composite'; import { IconButton } from 'flavours/glitch/components/icon_button'; diff --git a/app/javascript/flavours/glitch/features/direct_timeline/index.jsx b/app/javascript/flavours/glitch/features/direct_timeline/index.jsx index edb5b5aa45cf6c..9de5751ffbebd2 100644 --- a/app/javascript/flavours/glitch/features/direct_timeline/index.jsx +++ b/app/javascript/flavours/glitch/features/direct_timeline/index.jsx @@ -7,8 +7,8 @@ import { Helmet } from 'react-helmet'; import { connect } from 'react-redux'; -import { ReactComponent as MailIcon } from '@material-symbols/svg-600/outlined/mail.svg'; +import MailIcon from '@/material-icons/400-24px/mail.svg?react'; import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/columns'; import { mountConversations, unmountConversations, expandConversations } from 'flavours/glitch/actions/conversations'; import { connectDirectStream } from 'flavours/glitch/actions/streaming'; diff --git a/app/javascript/flavours/glitch/features/directory/index.jsx b/app/javascript/flavours/glitch/features/directory/index.jsx index a3c97506cf9ac9..0d8742b2559082 100644 --- a/app/javascript/flavours/glitch/features/directory/index.jsx +++ b/app/javascript/flavours/glitch/features/directory/index.jsx @@ -9,8 +9,8 @@ import { List as ImmutableList } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import { ReactComponent as PeopleIcon } from '@material-symbols/svg-600/outlined/group.svg'; +import PeopleIcon from '@/material-icons/400-24px/group.svg?react'; import { addColumn, removeColumn, moveColumn, changeColumnParams } from 'flavours/glitch/actions/columns'; import { fetchDirectory, expandDirectory } from 'flavours/glitch/actions/directory'; import Column from 'flavours/glitch/components/column'; diff --git a/app/javascript/flavours/glitch/features/domain_blocks/index.jsx b/app/javascript/flavours/glitch/features/domain_blocks/index.jsx index 142f14bf716617..964eada9c1e5b9 100644 --- a/app/javascript/flavours/glitch/features/domain_blocks/index.jsx +++ b/app/javascript/flavours/glitch/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 { ReactComponent as BlockIcon } from '@material-symbols/svg-600/outlined/block-fill.svg'; import { debounce } from 'lodash'; +import BlockIcon from '@/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/flavours/glitch/features/explore/index.jsx b/app/javascript/flavours/glitch/features/explore/index.jsx index 8e0d8f71b1d624..9a18ccb72cabaf 100644 --- a/app/javascript/flavours/glitch/features/explore/index.jsx +++ b/app/javascript/flavours/glitch/features/explore/index.jsx @@ -8,9 +8,9 @@ import { NavLink, Switch, Route } from 'react-router-dom'; import { connect } from 'react-redux'; -import { ReactComponent as SearchIcon } from '@material-symbols/svg-600/outlined/search.svg'; -import { ReactComponent as TagIcon } from '@material-symbols/svg-600/outlined/tag.svg'; +import SearchIcon from '@/material-icons/400-24px/search.svg?react'; +import TagIcon from '@/material-icons/400-24px/tag.svg?react'; import Column from 'flavours/glitch/components/column'; import ColumnHeader from 'flavours/glitch/components/column_header'; import Search from 'flavours/glitch/features/compose/containers/search_container'; diff --git a/app/javascript/flavours/glitch/features/explore/results.jsx b/app/javascript/flavours/glitch/features/explore/results.jsx index d2b84f801dd45f..53285988c39392 100644 --- a/app/javascript/flavours/glitch/features/explore/results.jsx +++ b/app/javascript/flavours/glitch/features/explore/results.jsx @@ -9,10 +9,10 @@ import { List as ImmutableList } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import { ReactComponent as FindInPageIcon } from '@material-symbols/svg-600/outlined/find_in_page.svg'; -import { ReactComponent as PeopleIcon } from '@material-symbols/svg-600/outlined/group.svg'; -import { ReactComponent as TagIcon } from '@material-symbols/svg-600/outlined/tag.svg'; +import FindInPageIcon from '@/material-icons/400-24px/find_in_page.svg?react'; +import PeopleIcon from '@/material-icons/400-24px/group.svg?react'; +import TagIcon from '@/material-icons/400-24px/tag.svg?react'; import { submitSearch, expandSearch } from 'flavours/glitch/actions/search'; import { ImmutableHashtag as Hashtag } from 'flavours/glitch/components/hashtag'; import { Icon } from 'flavours/glitch/components/icon'; diff --git a/app/javascript/flavours/glitch/features/favourited_statuses/index.jsx b/app/javascript/flavours/glitch/features/favourited_statuses/index.jsx index 61f2faa2da523f..119fd247b6872a 100644 --- a/app/javascript/flavours/glitch/features/favourited_statuses/index.jsx +++ b/app/javascript/flavours/glitch/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 { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star-fill.svg'; import { debounce } from 'lodash'; +import StarIcon from '@/material-icons/400-24px/star-fill.svg?react'; import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/columns'; import { fetchFavouritedStatuses, expandFavouritedStatuses } from 'flavours/glitch/actions/favourites'; import ColumnHeader from 'flavours/glitch/components/column_header'; diff --git a/app/javascript/flavours/glitch/features/favourites/index.jsx b/app/javascript/flavours/glitch/features/favourites/index.jsx index b6aa0f42e7f525..c21166a16ecbc5 100644 --- a/app/javascript/flavours/glitch/features/favourites/index.jsx +++ b/app/javascript/flavours/glitch/features/favourites/index.jsx @@ -8,10 +8,10 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import { ReactComponent as RefreshIcon } from '@material-symbols/svg-600/outlined/refresh.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star-fill.svg'; import { debounce } from 'lodash'; +import RefreshIcon from '@/material-icons/400-24px/refresh.svg?react'; +import StarIcon from '@/material-icons/400-24px/star-fill.svg?react'; import { fetchFavourites, expandFavourites } from 'flavours/glitch/actions/interactions'; import ColumnHeader from 'flavours/glitch/components/column_header'; import { Icon } from 'flavours/glitch/components/icon'; diff --git a/app/javascript/flavours/glitch/features/filters/select_filter.jsx b/app/javascript/flavours/glitch/features/filters/select_filter.jsx index 2cda219e485a33..f409cc2d70d77f 100644 --- a/app/javascript/flavours/glitch/features/filters/select_filter.jsx +++ b/app/javascript/flavours/glitch/features/filters/select_filter.jsx @@ -5,9 +5,9 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; -import { ReactComponent as AddIcon } from '@material-symbols/svg-600/outlined/add.svg'; import fuzzysort from 'fuzzysort'; +import AddIcon from '@/material-icons/400-24px/add.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; import { toServerSideType } from 'flavours/glitch/utils/filters'; import { loupeIcon, deleteIcon } from 'flavours/glitch/utils/icons'; diff --git a/app/javascript/flavours/glitch/features/firehose/index.jsx b/app/javascript/flavours/glitch/features/firehose/index.jsx index 45e17939d27e1f..29219974a933de 100644 --- a/app/javascript/flavours/glitch/features/firehose/index.jsx +++ b/app/javascript/flavours/glitch/features/firehose/index.jsx @@ -6,8 +6,8 @@ import { useIntl, defineMessages, FormattedMessage } from 'react-intl'; import { Helmet } from 'react-helmet'; import { NavLink } from 'react-router-dom'; -import { ReactComponent as PublicIcon } from '@material-symbols/svg-600/outlined/public.svg'; +import PublicIcon from '@/material-icons/400-24px/public.svg?react'; import { addColumn } from 'flavours/glitch/actions/columns'; import { changeSetting } from 'flavours/glitch/actions/settings'; import { connectPublicStream, connectCommunityStream } from 'flavours/glitch/actions/streaming'; diff --git a/app/javascript/flavours/glitch/features/follow_requests/components/account_authorize.jsx b/app/javascript/flavours/glitch/features/follow_requests/components/account_authorize.jsx index 225045c4c8996f..877d84c632478b 100644 --- a/app/javascript/flavours/glitch/features/follow_requests/components/account_authorize.jsx +++ b/app/javascript/flavours/glitch/features/follow_requests/components/account_authorize.jsx @@ -5,8 +5,8 @@ import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/check.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; +import CheckIcon from '@/material-icons/400-24px/check.svg?react'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import { Avatar } from '../../../components/avatar'; import { DisplayName } from '../../../components/display_name'; diff --git a/app/javascript/flavours/glitch/features/follow_requests/index.jsx b/app/javascript/flavours/glitch/features/follow_requests/index.jsx index 3b98791926991a..7d651f2ca69c24 100644 --- a/app/javascript/flavours/glitch/features/follow_requests/index.jsx +++ b/app/javascript/flavours/glitch/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 { ReactComponent as PersonAddIcon } from '@material-symbols/svg-600/outlined/person_add.svg'; import { debounce } from 'lodash'; +import PersonAddIcon from '@/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/flavours/glitch/features/followed_tags/index.jsx b/app/javascript/flavours/glitch/features/followed_tags/index.jsx index 4ac7dddb990af1..5809d848bcf603 100644 --- a/app/javascript/flavours/glitch/features/followed_tags/index.jsx +++ b/app/javascript/flavours/glitch/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 { ReactComponent as TagIcon } from '@material-symbols/svg-600/outlined/tag.svg'; import { debounce } from 'lodash'; +import TagIcon from '@/material-icons/400-24px/tag.svg?react'; import { expandFollowedHashtags, fetchFollowedHashtags } from 'flavours/glitch/actions/tags'; import ColumnHeader from 'flavours/glitch/components/column_header'; import { Hashtag } from 'flavours/glitch/components/hashtag'; diff --git a/app/javascript/flavours/glitch/features/getting_started/components/announcements.jsx b/app/javascript/flavours/glitch/features/getting_started/components/announcements.jsx index 27548ba86b067c..27470d99388569 100644 --- a/app/javascript/flavours/glitch/features/getting_started/components/announcements.jsx +++ b/app/javascript/flavours/glitch/features/getting_started/components/announcements.jsx @@ -9,13 +9,14 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as AddIcon } from '@material-symbols/svg-600/outlined/add.svg'; -import { ReactComponent as ChevronLeftIcon } from '@material-symbols/svg-600/outlined/chevron_left.svg'; -import { ReactComponent as ChevronRightIcon } from '@material-symbols/svg-600/outlined/chevron_right.svg'; import TransitionMotion from 'react-motion/lib/TransitionMotion'; import spring from 'react-motion/lib/spring'; import ReactSwipeableViews from 'react-swipeable-views'; +import elephantUIPlane from '@/images/elephant_ui_plane.svg'; +import AddIcon from '@/material-icons/400-24px/add.svg?react'; +import ChevronLeftIcon from '@/material-icons/400-24px/chevron_left.svg?react'; +import ChevronRightIcon from '@/material-icons/400-24px/chevron_right.svg?react'; import { AnimatedNumber } from 'flavours/glitch/components/animated_number'; import { Icon } from 'flavours/glitch/components/icon'; import { IconButton } from 'flavours/glitch/components/icon_button'; @@ -24,7 +25,6 @@ import { unicodeMapping } from 'flavours/glitch/features/emoji/emoji_unicode_map import { autoPlayGif, reduceMotion, disableSwiping, mascot } from 'flavours/glitch/initial_state'; import { assetHost } from 'flavours/glitch/utils/config'; import { WithRouterPropTypes } from 'flavours/glitch/utils/react_router'; -import elephantUIPlane from 'mastodon/../images/elephant_ui_plane.svg'; const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, diff --git a/app/javascript/flavours/glitch/features/getting_started/index.jsx b/app/javascript/flavours/glitch/features/getting_started/index.jsx index 7abf26594e7261..866904eafbd85f 100644 --- a/app/javascript/flavours/glitch/features/getting_started/index.jsx +++ b/app/javascript/flavours/glitch/features/getting_started/index.jsx @@ -10,20 +10,19 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import { ReactComponent as BookmarksIcon } from '@material-symbols/svg-600/outlined/bookmarks-fill.svg'; -import { ReactComponent as PeopleIcon } from '@material-symbols/svg-600/outlined/group.svg'; -import { ReactComponent as HomeIcon } from '@material-symbols/svg-600/outlined/home-fill.svg'; -import { ReactComponent as ListAltIcon } from '@material-symbols/svg-600/outlined/list_alt.svg'; -import { ReactComponent as MailIcon } from '@material-symbols/svg-600/outlined/mail.svg'; -import { ReactComponent as ManufacturingIcon } from '@material-symbols/svg-600/outlined/manufacturing.svg'; -import { ReactComponent as MenuIcon } from '@material-symbols/svg-600/outlined/menu.svg'; -import { ReactComponent as MoreHorizIcon } from '@material-symbols/svg-600/outlined/more_horiz.svg'; -import { ReactComponent as NotificationsIcon } from '@material-symbols/svg-600/outlined/notifications.svg'; -import { ReactComponent as PersonAddIcon } from '@material-symbols/svg-600/outlined/person_add.svg'; -import { ReactComponent as PublicIcon } from '@material-symbols/svg-600/outlined/public.svg'; -import { ReactComponent as SettingsIcon } from '@material-symbols/svg-600/outlined/settings-fill.svg'; -import { ReactComponent as TagIcon } from '@material-symbols/svg-600/outlined/tag.svg'; - +import BookmarksIcon from '@/material-icons/400-24px/bookmarks-fill.svg?react'; +import PeopleIcon from '@/material-icons/400-24px/group.svg?react'; +import HomeIcon from '@/material-icons/400-24px/home-fill.svg?react'; +import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react'; +import MailIcon from '@/material-icons/400-24px/mail.svg?react'; +import ManufacturingIcon from '@/material-icons/400-24px/manufacturing.svg?react'; +import MenuIcon from '@/material-icons/400-24px/menu.svg?react'; +import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; +import NotificationsIcon from '@/material-icons/400-24px/notifications.svg?react'; +import PersonAddIcon from '@/material-icons/400-24px/person_add.svg?react'; +import PublicIcon from '@/material-icons/400-24px/public.svg?react'; +import SettingsIcon from '@/material-icons/400-24px/settings-fill.svg?react'; +import TagIcon from '@/material-icons/400-24px/tag.svg?react'; import { fetchFollowRequests } from 'flavours/glitch/actions/accounts'; import { fetchLists } from 'flavours/glitch/actions/lists'; import { openModal } from 'flavours/glitch/actions/modal'; @@ -31,6 +30,7 @@ import Column from 'flavours/glitch/features/ui/components/column'; import LinkFooter from 'flavours/glitch/features/ui/components/link_footer'; import { preferencesLink } from 'flavours/glitch/utils/backend_links'; + import { me, showTrends } from '../../initial_state'; import NavigationBar from '../compose/components/navigation_bar'; import ColumnLink from '../ui/components/column_link'; diff --git a/app/javascript/flavours/glitch/features/getting_started_misc/index.jsx b/app/javascript/flavours/glitch/features/getting_started_misc/index.jsx index aa07b64c90316a..15535bf65ca37f 100644 --- a/app/javascript/flavours/glitch/features/getting_started_misc/index.jsx +++ b/app/javascript/flavours/glitch/features/getting_started_misc/index.jsx @@ -5,18 +5,18 @@ import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import { ReactComponent as BlockIcon } from '@material-symbols/svg-600/outlined/block.svg'; -import { ReactComponent as InfoIcon } from '@material-symbols/svg-600/outlined/info.svg'; -import { ReactComponent as PersonCheckIcon } from '@material-symbols/svg-600/outlined/person_check.svg'; -import { ReactComponent as PushPinIcon } from '@material-symbols/svg-600/outlined/push_pin.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star-fill.svg'; -import { ReactComponent as VolumeOffIcon } from '@material-symbols/svg-600/outlined/volume_off.svg'; - +import BlockIcon from '@/material-icons/400-24px/block.svg?react'; +import InfoIcon from '@/material-icons/400-24px/info.svg?react'; +import PersonCheckIcon from '@/material-icons/400-24px/person_check.svg?react'; +import PushPinIcon from '@/material-icons/400-24px/push_pin.svg?react'; +import StarIcon from '@/material-icons/400-24px/star-fill.svg?react'; +import VolumeOffIcon from '@/material-icons/400-24px/volume_off.svg?react'; import { openModal } from 'flavours/glitch/actions/modal'; import Column from 'flavours/glitch/features/ui/components/column'; import ColumnLink from 'flavours/glitch/features/ui/components/column_link'; import ColumnSubheading from 'flavours/glitch/features/ui/components/column_subheading'; + const messages = defineMessages({ heading: { id: 'column.heading', defaultMessage: 'Misc' }, subheading: { id: 'column.subheading', defaultMessage: 'Miscellaneous options' }, diff --git a/app/javascript/flavours/glitch/features/hashtag_timeline/index.jsx b/app/javascript/flavours/glitch/features/hashtag_timeline/index.jsx index 11f09ffdb2c498..c2a757430716d2 100644 --- a/app/javascript/flavours/glitch/features/hashtag_timeline/index.jsx +++ b/app/javascript/flavours/glitch/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 { ReactComponent as TagIcon } from '@material-symbols/svg-600/outlined/tag.svg'; import { isEqual } from 'lodash'; +import TagIcon from '@/material-icons/400-24px/tag.svg?react'; import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/columns'; import { connectHashtagStream } from 'flavours/glitch/actions/streaming'; import { fetchHashtag, followHashtag, unfollowHashtag } from 'flavours/glitch/actions/tags'; diff --git a/app/javascript/flavours/glitch/features/home_timeline/components/explore_prompt.tsx b/app/javascript/flavours/glitch/features/home_timeline/components/explore_prompt.tsx index f33135621abc50..73ef8a5fe1cc6e 100644 --- a/app/javascript/flavours/glitch/features/home_timeline/components/explore_prompt.tsx +++ b/app/javascript/flavours/glitch/features/home_timeline/components/explore_prompt.tsx @@ -2,8 +2,8 @@ import { FormattedMessage } from 'react-intl'; import { Link } from 'react-router-dom'; +import background from '@/images/friends-cropped.png'; import { DismissableBanner } from 'flavours/glitch/components/dismissable_banner'; -import background from 'mastodon/../images/friends-cropped.png'; export const ExplorePrompt = () => ( diff --git a/app/javascript/flavours/glitch/features/home_timeline/index.jsx b/app/javascript/flavours/glitch/features/home_timeline/index.jsx index ee23c652763e81..093d8a7602ff15 100644 --- a/app/javascript/flavours/glitch/features/home_timeline/index.jsx +++ b/app/javascript/flavours/glitch/features/home_timeline/index.jsx @@ -10,9 +10,9 @@ import { createSelector } from '@reduxjs/toolkit'; import { List as ImmutableList } from 'immutable'; import { connect } from 'react-redux'; -import { ReactComponent as CampaignIcon } from '@material-symbols/svg-600/outlined/campaign.svg'; -import { ReactComponent as HomeIcon } from '@material-symbols/svg-600/outlined/home-fill.svg'; +import CampaignIcon from '@/material-icons/400-24px/campaign.svg?react'; +import HomeIcon from '@/material-icons/400-24px/home-fill.svg?react'; import { fetchAnnouncements, toggleShowAnnouncements } from 'flavours/glitch/actions/announcements'; import { IconWithBadge } from 'flavours/glitch/components/icon_with_badge'; import { NotSignedInIndicator } from 'flavours/glitch/components/not_signed_in_indicator'; diff --git a/app/javascript/flavours/glitch/features/interaction_modal/index.jsx b/app/javascript/flavours/glitch/features/interaction_modal/index.jsx index 627fbef97058b5..71cdf8409cd8ae 100644 --- a/app/javascript/flavours/glitch/features/interaction_modal/index.jsx +++ b/app/javascript/flavours/glitch/features/interaction_modal/index.jsx @@ -7,12 +7,12 @@ import classNames from 'classnames'; import { connect } from 'react-redux'; -import { ReactComponent as PersonAddIcon } from '@material-symbols/svg-600/outlined/person_add.svg'; -import { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; -import { ReactComponent as ReplyIcon } from '@material-symbols/svg-600/outlined/reply.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star.svg'; import { throttle, escapeRegExp } from 'lodash'; +import PersonAddIcon from '@/material-icons/400-24px/person_add.svg?react'; +import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; +import ReplyIcon from '@/material-icons/400-24px/reply.svg?react'; +import StarIcon from '@/material-icons/400-24px/star.svg?react'; import { openModal, closeModal } from 'flavours/glitch/actions/modal'; import api from 'flavours/glitch/api'; import { Button } from 'flavours/glitch/components/button'; diff --git a/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.jsx b/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.jsx index 466f2cb561bf95..98f65d9b507800 100644 --- a/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.jsx +++ b/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.jsx @@ -7,8 +7,8 @@ import { Helmet } from 'react-helmet'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import { ReactComponent as InfoIcon } from '@material-symbols/svg-600/outlined/info.svg'; +import InfoIcon from '@/material-icons/400-24px/info.svg?react'; import Column from 'flavours/glitch/components/column'; import ColumnHeader from 'flavours/glitch/components/column_header'; diff --git a/app/javascript/flavours/glitch/features/list_adder/components/list.jsx b/app/javascript/flavours/glitch/features/list_adder/components/list.jsx index 8c0333b5ad1fd2..adbb16fcd61920 100644 --- a/app/javascript/flavours/glitch/features/list_adder/components/list.jsx +++ b/app/javascript/flavours/glitch/features/list_adder/components/list.jsx @@ -6,12 +6,12 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import { ReactComponent as AddIcon } from '@material-symbols/svg-600/outlined/add.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; -import { ReactComponent as ListAltIcon } from '@material-symbols/svg-600/outlined/list_alt.svg'; - +import AddIcon from '@/material-icons/400-24px/add.svg?react'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; +import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; + import { removeFromListAdder, addToListAdder } from '../../../actions/lists'; import { IconButton } from '../../../components/icon_button'; diff --git a/app/javascript/flavours/glitch/features/list_editor/components/account.jsx b/app/javascript/flavours/glitch/features/list_editor/components/account.jsx index 18d5e905cbc0b7..77d32af80a25a2 100644 --- a/app/javascript/flavours/glitch/features/list_editor/components/account.jsx +++ b/app/javascript/flavours/glitch/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 { ReactComponent as AddIcon } from '@material-symbols/svg-600/outlined/add.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; +import AddIcon from '@/material-icons/400-24px/add.svg?react'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import { removeFromListEditor, addToListEditor } from '../../../actions/lists'; import { Avatar } from '../../../components/avatar'; diff --git a/app/javascript/flavours/glitch/features/list_editor/components/edit_list_form.jsx b/app/javascript/flavours/glitch/features/list_editor/components/edit_list_form.jsx index 1e2446f92b81fe..89f596636ead95 100644 --- a/app/javascript/flavours/glitch/features/list_editor/components/edit_list_form.jsx +++ b/app/javascript/flavours/glitch/features/list_editor/components/edit_list_form.jsx @@ -5,7 +5,7 @@ import { defineMessages, injectIntl } from 'react-intl'; import { connect } from 'react-redux'; -import { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/check.svg'; +import CheckIcon from '@/material-icons/400-24px/check.svg?react'; import { changeListEditorTitle, submitListEditor } from '../../../actions/lists'; import { IconButton } from '../../../components/icon_button'; diff --git a/app/javascript/flavours/glitch/features/list_editor/components/search.jsx b/app/javascript/flavours/glitch/features/list_editor/components/search.jsx index 58fb6566d65e4d..6e9cd448355a12 100644 --- a/app/javascript/flavours/glitch/features/list_editor/components/search.jsx +++ b/app/javascript/flavours/glitch/features/list_editor/components/search.jsx @@ -7,11 +7,11 @@ import classNames from 'classnames'; import { connect } from 'react-redux'; -import { ReactComponent as CancelIcon } from '@material-symbols/svg-600/outlined/cancel.svg'; -import { ReactComponent as SearchIcon } from '@material-symbols/svg-600/outlined/search.svg'; - +import CancelIcon from '@/material-icons/400-24px/cancel.svg?react'; +import SearchIcon from '@/material-icons/400-24px/search.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; + import { fetchListSuggestions, clearListSuggestions, changeListSuggestions } from '../../../actions/lists'; const messages = defineMessages({ diff --git a/app/javascript/flavours/glitch/features/list_timeline/index.jsx b/app/javascript/flavours/glitch/features/list_timeline/index.jsx index 48100a0a4c8411..ae9f75318f2309 100644 --- a/app/javascript/flavours/glitch/features/list_timeline/index.jsx +++ b/app/javascript/flavours/glitch/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 { ReactComponent as DeleteIcon } from '@material-symbols/svg-600/outlined/delete.svg'; -import { ReactComponent as EditIcon } from '@material-symbols/svg-600/outlined/edit.svg'; -import { ReactComponent as ListAltIcon } from '@material-symbols/svg-600/outlined/list_alt.svg'; import Toggle from 'react-toggle'; +import DeleteIcon from '@/material-icons/400-24px/delete.svg?react'; +import EditIcon from '@/material-icons/400-24px/edit.svg?react'; +import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react'; import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/columns'; import { fetchList, deleteList, updateList } from 'flavours/glitch/actions/lists'; import { openModal } from 'flavours/glitch/actions/modal'; diff --git a/app/javascript/flavours/glitch/features/lists/index.jsx b/app/javascript/flavours/glitch/features/lists/index.jsx index 89aea033219b8c..9c24d82f0376da 100644 --- a/app/javascript/flavours/glitch/features/lists/index.jsx +++ b/app/javascript/flavours/glitch/features/lists/index.jsx @@ -9,8 +9,8 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import { ReactComponent as ListAltIcon } from '@material-symbols/svg-600/outlined/list_alt.svg'; +import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react'; import { fetchLists } from 'flavours/glitch/actions/lists'; import { LoadingIndicator } from 'flavours/glitch/components/loading_indicator'; import ScrollableList from 'flavours/glitch/components/scrollable_list'; diff --git a/app/javascript/flavours/glitch/features/local_settings/navigation/index.jsx b/app/javascript/flavours/glitch/features/local_settings/navigation/index.jsx index 32b25e0c079b56..00744fa2aed4c4 100644 --- a/app/javascript/flavours/glitch/features/local_settings/navigation/index.jsx +++ b/app/javascript/flavours/glitch/features/local_settings/navigation/index.jsx @@ -4,15 +4,15 @@ import { PureComponent } from 'react'; import { injectIntl, defineMessages } from 'react-intl'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; -import { ReactComponent as EditIcon } from '@material-symbols/svg-600/outlined/edit.svg'; -import { ReactComponent as ExpandLessIcon } from '@material-symbols/svg-600/outlined/expand_less.svg'; -import { ReactComponent as ImageIcon } from '@material-symbols/svg-600/outlined/image.svg'; -import { ReactComponent as ManufacturingIcon } from '@material-symbols/svg-600/outlined/manufacturing.svg'; -import { ReactComponent as SettingsIcon } from '@material-symbols/svg-600/outlined/settings-fill.svg'; - +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; +import EditIcon from '@/material-icons/400-24px/edit.svg?react'; +import ExpandLessIcon from '@/material-icons/400-24px/expand_less.svg?react'; +import ImageIcon from '@/material-icons/400-24px/image.svg?react'; +import ManufacturingIcon from '@/material-icons/400-24px/manufacturing.svg?react'; +import SettingsIcon from '@/material-icons/400-24px/settings-fill.svg?react'; import { preferencesLink } from 'flavours/glitch/utils/backend_links'; + import LocalSettingsNavigationItem from './item'; const messages = defineMessages({ diff --git a/app/javascript/flavours/glitch/features/mutes/index.jsx b/app/javascript/flavours/glitch/features/mutes/index.jsx index 7f66edc03dc67c..3b50244ea4b192 100644 --- a/app/javascript/flavours/glitch/features/mutes/index.jsx +++ b/app/javascript/flavours/glitch/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 { ReactComponent as VolumeOffIcon } from '@material-symbols/svg-600/outlined/volume_off.svg'; import { debounce } from 'lodash'; +import VolumeOffIcon from '@/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/flavours/glitch/features/notifications/components/admin_report.jsx b/app/javascript/flavours/glitch/features/notifications/components/admin_report.jsx index 01273f959bd02c..d16a775ea57221 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/admin_report.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/admin_report.jsx @@ -8,9 +8,9 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as FlagIcon } from '@material-symbols/svg-600/outlined/flag-fill.svg'; import { HotKeys } from 'react-hotkeys'; +import FlagIcon from '@/material-icons/400-24px/flag-fill.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; import { Permalink } from 'flavours/glitch/components/permalink'; import { WithRouterPropTypes } from 'flavours/glitch/utils/react_router'; diff --git a/app/javascript/flavours/glitch/features/notifications/components/admin_signup.jsx b/app/javascript/flavours/glitch/features/notifications/components/admin_signup.jsx index a99d90e0f5a374..60affd444b6c91 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/admin_signup.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/admin_signup.jsx @@ -8,9 +8,9 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as PersonAddIcon } from '@material-symbols/svg-600/outlined/person_add-fill.svg'; import { HotKeys } from 'react-hotkeys'; +import PersonAddIcon from '@/material-icons/400-24px/person_add-fill.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; import { Permalink } from 'flavours/glitch/components/permalink'; import AccountContainer from 'flavours/glitch/containers/account_container'; diff --git a/app/javascript/flavours/glitch/features/notifications/components/clear_column_button.jsx b/app/javascript/flavours/glitch/features/notifications/components/clear_column_button.jsx index 373f20e51d805c..6e29709b5953bd 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/clear_column_button.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/clear_column_button.jsx @@ -3,10 +3,10 @@ import { PureComponent } from 'react'; import { FormattedMessage } from 'react-intl'; -import { ReactComponent as DeleteForeverIcon } from '@material-symbols/svg-600/outlined/delete_forever.svg'; - +import DeleteForeverIcon from '@/material-icons/400-24px/delete_forever.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; + export default class ClearColumnButton extends PureComponent { static propTypes = { diff --git a/app/javascript/flavours/glitch/features/notifications/components/filter_bar.jsx b/app/javascript/flavours/glitch/features/notifications/components/filter_bar.jsx index 615a27dc4a0961..7d4a28a2ef5c49 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/filter_bar.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/filter_bar.jsx @@ -3,15 +3,15 @@ import { PureComponent } from 'react'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import { ReactComponent as HomeIcon } from '@material-symbols/svg-600/outlined/home-fill.svg'; -import { ReactComponent as InsertChartIcon } from '@material-symbols/svg-600/outlined/insert_chart.svg'; -import { ReactComponent as PersonAddIcon } from '@material-symbols/svg-600/outlined/person_add.svg'; -import { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; -import { ReactComponent as ReplyAllIcon } from '@material-symbols/svg-600/outlined/reply_all.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star.svg'; - +import HomeIcon from '@/material-icons/400-24px/home-fill.svg?react'; +import InsertChartIcon from '@/material-icons/400-24px/insert_chart.svg?react'; +import PersonAddIcon from '@/material-icons/400-24px/person_add.svg?react'; +import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; +import ReplyAllIcon from '@/material-icons/400-24px/reply_all.svg?react'; +import StarIcon from '@/material-icons/400-24px/star.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; + const tooltips = defineMessages({ mentions: { id: 'notifications.filter.mentions', defaultMessage: 'Mentions' }, favourites: { id: 'notifications.filter.favourites', defaultMessage: 'Favorites' }, diff --git a/app/javascript/flavours/glitch/features/notifications/components/follow.jsx b/app/javascript/flavours/glitch/features/notifications/components/follow.jsx index 6aff0dfede3b18..85ccde094b04e8 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/follow.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/follow.jsx @@ -8,9 +8,9 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as PersonAddIcon } from '@material-symbols/svg-600/outlined/person_add-fill.svg'; import { HotKeys } from 'react-hotkeys'; +import PersonAddIcon from '@/material-icons/400-24px/person_add-fill.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; import { Permalink } from 'flavours/glitch/components/permalink'; import AccountContainer from 'flavours/glitch/containers/account_container'; diff --git a/app/javascript/flavours/glitch/features/notifications/components/follow_request.jsx b/app/javascript/flavours/glitch/features/notifications/components/follow_request.jsx index 8462cc16b14076..66072799835519 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/follow_request.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/follow_request.jsx @@ -8,11 +8,11 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/check.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; -import { ReactComponent as PersonIcon } from '@material-symbols/svg-600/outlined/person-fill.svg'; import { HotKeys } from 'react-hotkeys'; +import CheckIcon from '@/material-icons/400-24px/check.svg?react'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; +import PersonIcon from '@/material-icons/400-24px/person-fill.svg?react'; import { Avatar } from 'flavours/glitch/components/avatar'; import { DisplayName } from 'flavours/glitch/components/display_name'; import { Icon } from 'flavours/glitch/components/icon'; diff --git a/app/javascript/flavours/glitch/features/notifications/components/notifications_permission_banner.jsx b/app/javascript/flavours/glitch/features/notifications/components/notifications_permission_banner.jsx index 4dc8ca9f5ca659..82c08ea1751ae7 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/notifications_permission_banner.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/notifications_permission_banner.jsx @@ -5,9 +5,9 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; -import { ReactComponent as TuneIcon } from '@material-symbols/svg-600/outlined/tune.svg'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; +import TuneIcon from '@/material-icons/400-24px/tune.svg?react'; import { requestBrowserPermission } from 'flavours/glitch/actions/notifications'; import { changeSetting } from 'flavours/glitch/actions/settings'; import { Button } from 'flavours/glitch/components/button'; diff --git a/app/javascript/flavours/glitch/features/notifications/components/overlay.jsx b/app/javascript/flavours/glitch/features/notifications/components/overlay.jsx index 1ed052f83e385c..faf7e42e71b57a 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/overlay.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/overlay.jsx @@ -9,10 +9,10 @@ import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/check.svg'; - +import CheckIcon from '@/material-icons/400-24px/check.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; + const messages = defineMessages({ markForDeletion: { id: 'notification.markForDeletion', defaultMessage: 'Mark for deletion' }, }); diff --git a/app/javascript/flavours/glitch/features/notifications/index.jsx b/app/javascript/flavours/glitch/features/notifications/index.jsx index 38544676d91b5f..783c35a43e7dcd 100644 --- a/app/javascript/flavours/glitch/features/notifications/index.jsx +++ b/app/javascript/flavours/glitch/features/notifications/index.jsx @@ -11,11 +11,11 @@ import { List as ImmutableList } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import { ReactComponent as DeleteForeverIcon } from '@material-symbols/svg-600/outlined/delete_forever.svg'; -import { ReactComponent as DoneAllIcon } from '@material-symbols/svg-600/outlined/done_all.svg'; -import { ReactComponent as NotificationsIcon } from '@material-symbols/svg-600/outlined/notifications-fill.svg'; import { debounce } from 'lodash'; +import DeleteForeverIcon from '@/material-icons/400-24px/delete_forever.svg?react'; +import DoneAllIcon from '@/material-icons/400-24px/done_all.svg?react'; +import NotificationsIcon from '@/material-icons/400-24px/notifications-fill.svg?react'; import { compareId } from 'flavours/glitch/compare_id'; import { Icon } from 'flavours/glitch/components/icon'; import { NotSignedInIndicator } from 'flavours/glitch/components/not_signed_in_indicator'; diff --git a/app/javascript/flavours/glitch/features/onboarding/components/step.jsx b/app/javascript/flavours/glitch/features/onboarding/components/step.jsx index 179e688b9cc7f1..4dcd3c9ce533ef 100644 --- a/app/javascript/flavours/glitch/features/onboarding/components/step.jsx +++ b/app/javascript/flavours/glitch/features/onboarding/components/step.jsx @@ -2,11 +2,11 @@ import PropTypes from 'prop-types'; import { Link } from 'react-router-dom'; -import { ReactComponent as ArrowRightAltIcon } from '@material-symbols/svg-600/outlined/arrow_right_alt.svg'; -import { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/done.svg'; - +import ArrowRightAltIcon from '@/material-icons/400-24px/arrow_right_alt.svg?react'; +import CheckIcon from '@/material-icons/400-24px/done.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; + export const Step = ({ label, description, icon, iconComponent, completed, onClick, href, to }) => { const content = ( <> diff --git a/app/javascript/flavours/glitch/features/onboarding/index.jsx b/app/javascript/flavours/glitch/features/onboarding/index.jsx index dbf1ba1f61587c..fb9df29aeb7063 100644 --- a/app/javascript/flavours/glitch/features/onboarding/index.jsx +++ b/app/javascript/flavours/glitch/features/onboarding/index.jsx @@ -8,19 +8,19 @@ import { Link, Switch, Route, useHistory } from 'react-router-dom'; import { useDispatch } from 'react-redux'; -import { ReactComponent as AccountCircleIcon } from '@material-symbols/svg-600/outlined/account_circle.svg'; -import { ReactComponent as ArrowRightAltIcon } from '@material-symbols/svg-600/outlined/arrow_right_alt.svg'; -import { ReactComponent as ContentCopyIcon } from '@material-symbols/svg-600/outlined/content_copy.svg'; -import { ReactComponent as EditNoteIcon } from '@material-symbols/svg-600/outlined/edit_note.svg'; -import { ReactComponent as PersonAddIcon } from '@material-symbols/svg-600/outlined/person_add.svg'; +import illustration from '@/images/elephant_ui_conversation.svg'; +import AccountCircleIcon from '@/material-icons/400-24px/account_circle.svg?react'; +import ArrowRightAltIcon from '@/material-icons/400-24px/arrow_right_alt.svg?react'; +import ContentCopyIcon from '@/material-icons/400-24px/content_copy.svg?react'; +import EditNoteIcon from '@/material-icons/400-24px/edit_note.svg?react'; +import PersonAddIcon from '@/material-icons/400-24px/person_add.svg?react'; import { focusCompose } from 'flavours/glitch/actions/compose'; import { Icon } from 'flavours/glitch/components/icon'; import Column from 'flavours/glitch/features/ui/components/column'; import { me } from 'flavours/glitch/initial_state'; import { useAppSelector } from 'flavours/glitch/store'; import { assetHost } from 'flavours/glitch/utils/config'; -import illustration from 'mastodon/../images/elephant_ui_conversation.svg'; import { Step } from './components/step'; import { Follows } from './follows'; diff --git a/app/javascript/flavours/glitch/features/onboarding/profile.jsx b/app/javascript/flavours/glitch/features/onboarding/profile.jsx index fb7c515f002f95..75e179ee1e69dd 100644 --- a/app/javascript/flavours/glitch/features/onboarding/profile.jsx +++ b/app/javascript/flavours/glitch/features/onboarding/profile.jsx @@ -8,10 +8,10 @@ import { useHistory } from 'react-router-dom'; import { useDispatch } from 'react-redux'; -import { ReactComponent as AddPhotoAlternateIcon } from '@material-symbols/svg-600/outlined/add_photo_alternate.svg'; -import { ReactComponent as EditIcon } from '@material-symbols/svg-600/outlined/edit.svg'; import Toggle from 'react-toggle'; +import AddPhotoAlternateIcon from '@/material-icons/400-24px/add_photo_alternate.svg?react'; +import EditIcon from '@/material-icons/400-24px/edit.svg?react'; import { updateAccount } from 'flavours/glitch/actions/accounts'; import { Button } from 'flavours/glitch/components/button'; import { ColumnBackButton } from 'flavours/glitch/components/column_back_button'; diff --git a/app/javascript/flavours/glitch/features/onboarding/share.jsx b/app/javascript/flavours/glitch/features/onboarding/share.jsx index b5732c0abcc847..0c7d579c10c0dc 100644 --- a/app/javascript/flavours/glitch/features/onboarding/share.jsx +++ b/app/javascript/flavours/glitch/features/onboarding/share.jsx @@ -7,10 +7,10 @@ import classNames from 'classnames'; import { Link } from 'react-router-dom'; -import { ReactComponent as ArrowRightAltIcon } from '@material-symbols/svg-600/outlined/arrow_right_alt.svg'; -import { ReactComponent as ContentCopyIcon } from '@material-symbols/svg-600/outlined/content_copy.svg'; import SwipeableViews from 'react-swipeable-views'; +import ArrowRightAltIcon from '@/material-icons/400-24px/arrow_right_alt.svg?react'; +import ContentCopyIcon from '@/material-icons/400-24px/content_copy.svg?react'; import { ColumnBackButton } from 'flavours/glitch/components/column_back_button'; import { Icon } from 'flavours/glitch/components/icon'; import { me, domain } from 'flavours/glitch/initial_state'; diff --git a/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx b/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx index ee8179fc3bef61..83e53d92630e6e 100644 --- a/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx +++ b/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx @@ -9,12 +9,12 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import { ReactComponent as OpenInNewIcon } from '@material-symbols/svg-600/outlined/open_in_new.svg'; -import { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; -import { ReactComponent as ReplyIcon } from '@material-symbols/svg-600/outlined/reply.svg'; -import { ReactComponent as ReplyAllIcon } from '@material-symbols/svg-600/outlined/reply_all.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star.svg'; +import OpenInNewIcon from '@/material-icons/400-24px/open_in_new.svg?react'; +import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; +import ReplyIcon from '@/material-icons/400-24px/reply.svg?react'; +import ReplyAllIcon from '@/material-icons/400-24px/reply_all.svg?react'; +import StarIcon from '@/material-icons/400-24px/star.svg?react'; import { initBoostModal } from 'flavours/glitch/actions/boosts'; import { replyCompose } from 'flavours/glitch/actions/compose'; import { reblog, favourite, unreblog, unfavourite } from 'flavours/glitch/actions/interactions'; diff --git a/app/javascript/flavours/glitch/features/picture_in_picture/components/header.jsx b/app/javascript/flavours/glitch/features/picture_in_picture/components/header.jsx index 6ed1f4fbdd9ef3..dd90cd3522a3f2 100644 --- a/app/javascript/flavours/glitch/features/picture_in_picture/components/header.jsx +++ b/app/javascript/flavours/glitch/features/picture_in_picture/components/header.jsx @@ -8,8 +8,8 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import { Avatar } from 'flavours/glitch/components/avatar'; import { DisplayName } from 'flavours/glitch/components/display_name'; import { IconButton } from 'flavours/glitch/components/icon_button'; diff --git a/app/javascript/flavours/glitch/features/pinned_statuses/index.jsx b/app/javascript/flavours/glitch/features/pinned_statuses/index.jsx index b888ab6850fe23..94d5f6cb4c7366 100644 --- a/app/javascript/flavours/glitch/features/pinned_statuses/index.jsx +++ b/app/javascript/flavours/glitch/features/pinned_statuses/index.jsx @@ -8,10 +8,10 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import { ReactComponent as PushPinIcon } from '@material-symbols/svg-600/outlined/push_pin.svg'; - +import PushPinIcon from '@/material-icons/400-24px/push_pin.svg?react'; import { getStatusList } from 'flavours/glitch/selectors'; + import { fetchPinnedStatuses } from '../../actions/pin_statuses'; import StatusList from '../../components/status_list'; import Column from '../ui/components/column'; diff --git a/app/javascript/flavours/glitch/features/public_timeline/index.jsx b/app/javascript/flavours/glitch/features/public_timeline/index.jsx index 00e023eaac8fe0..0062a9f7199149 100644 --- a/app/javascript/flavours/glitch/features/public_timeline/index.jsx +++ b/app/javascript/flavours/glitch/features/public_timeline/index.jsx @@ -7,8 +7,8 @@ import { Helmet } from 'react-helmet'; import { connect } from 'react-redux'; -import { ReactComponent as PublicIcon } from '@material-symbols/svg-600/outlined/public.svg'; +import PublicIcon from '@/material-icons/400-24px/public.svg?react'; import { DismissableBanner } from 'flavours/glitch/components/dismissable_banner'; import { domain } from 'flavours/glitch/initial_state'; diff --git a/app/javascript/flavours/glitch/features/reblogs/index.jsx b/app/javascript/flavours/glitch/features/reblogs/index.jsx index 57ccf9cfb16d6d..52e9a35833fc46 100644 --- a/app/javascript/flavours/glitch/features/reblogs/index.jsx +++ b/app/javascript/flavours/glitch/features/reblogs/index.jsx @@ -8,12 +8,13 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import { ReactComponent as RefreshIcon } from '@material-symbols/svg-600/outlined/refresh.svg'; -import { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; import { debounce } from 'lodash'; +import RefreshIcon from '@/material-icons/400-24px/refresh.svg?react'; +import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; + import { fetchReblogs, expandReblogs } from '../../actions/interactions'; import ColumnHeader from '../../components/column_header'; import { LoadingIndicator } from '../../components/loading_indicator'; diff --git a/app/javascript/flavours/glitch/features/report/components/option.jsx b/app/javascript/flavours/glitch/features/report/components/option.jsx index af296528b37ce5..3b40de8cbae2b3 100644 --- a/app/javascript/flavours/glitch/features/report/components/option.jsx +++ b/app/javascript/flavours/glitch/features/report/components/option.jsx @@ -3,10 +3,10 @@ import { PureComponent } from 'react'; import classNames from 'classnames'; -import { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/done.svg'; - +import CheckIcon from '@/material-icons/400-24px/done.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; + export default class Option extends PureComponent { static propTypes = { diff --git a/app/javascript/flavours/glitch/features/status/components/action_bar.jsx b/app/javascript/flavours/glitch/features/status/components/action_bar.jsx index 4d8adb173e1853..9edd47f5b0c1b4 100644 --- a/app/javascript/flavours/glitch/features/status/components/action_bar.jsx +++ b/app/javascript/flavours/glitch/features/status/components/action_bar.jsx @@ -8,20 +8,19 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { ReactComponent as BookmarkIcon } from '@material-symbols/svg-600/outlined/bookmark-fill.svg'; -import { ReactComponent as BookmarkBorderIcon } from '@material-symbols/svg-600/outlined/bookmark.svg'; -import { ReactComponent as MoreHorizIcon } from '@material-symbols/svg-600/outlined/more_horiz.svg'; -import { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; -import { ReactComponent as ReplyIcon } from '@material-symbols/svg-600/outlined/reply.svg'; -import { ReactComponent as ReplyAllIcon } from '@material-symbols/svg-600/outlined/reply_all.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star-fill.svg'; -import { ReactComponent as StarBorderIcon } from '@material-symbols/svg-600/outlined/star.svg'; - +import BookmarkIcon from '@/material-icons/400-24px/bookmark-fill.svg?react'; +import BookmarkBorderIcon from '@/material-icons/400-24px/bookmark.svg?react'; +import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; +import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; +import ReplyIcon from '@/material-icons/400-24px/reply.svg?react'; +import ReplyAllIcon from '@/material-icons/400-24px/reply_all.svg?react'; +import StarIcon from '@/material-icons/400-24px/star-fill.svg?react'; +import StarBorderIcon from '@/material-icons/400-24px/star.svg?react'; +import RepeatDisabledIcon from '@/svg-icons/repeat_disabled.svg'; +import RepeatPrivateIcon from '@/svg-icons/repeat_private.svg'; import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_FEDERATION } from 'flavours/glitch/permissions'; import { accountAdminLink, statusAdminLink } from 'flavours/glitch/utils/backend_links'; import { WithRouterPropTypes } from 'flavours/glitch/utils/react_router'; -import { ReactComponent as RepeatDisabledIcon } from 'mastodon/../svg-icons/repeat_disabled.svg'; -import { ReactComponent as RepeatPrivateIcon } from 'mastodon/../svg-icons/repeat_private.svg'; import { IconButton } from '../../../components/icon_button'; import DropdownMenuContainer from '../../../containers/dropdown_menu_container'; diff --git a/app/javascript/flavours/glitch/features/status/components/card.jsx b/app/javascript/flavours/glitch/features/status/components/card.jsx index 722c6acd86a10f..3d5522ab61374d 100644 --- a/app/javascript/flavours/glitch/features/status/components/card.jsx +++ b/app/javascript/flavours/glitch/features/status/components/card.jsx @@ -8,10 +8,10 @@ import classNames from 'classnames'; import Immutable from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { ReactComponent as DescriptionIcon } from '@material-symbols/svg-600/outlined/description-fill.svg'; -import { ReactComponent as OpenInNewIcon } from '@material-symbols/svg-600/outlined/open_in_new.svg'; -import { ReactComponent as PlayArrowIcon } from '@material-symbols/svg-600/outlined/play_arrow-fill.svg'; +import DescriptionIcon from '@/material-icons/400-24px/description-fill.svg?react'; +import OpenInNewIcon from '@/material-icons/400-24px/open_in_new.svg?react'; +import PlayArrowIcon from '@/material-icons/400-24px/play_arrow-fill.svg?react'; import { Blurhash } from 'flavours/glitch/components/blurhash'; import { Icon } from 'flavours/glitch/components/icon'; import { useBlurhash } from 'flavours/glitch/initial_state'; diff --git a/app/javascript/flavours/glitch/features/status/components/detailed_status.jsx b/app/javascript/flavours/glitch/features/status/components/detailed_status.jsx index 8b77206e8e00cf..0638d0d646c9c5 100644 --- a/app/javascript/flavours/glitch/features/status/components/detailed_status.jsx +++ b/app/javascript/flavours/glitch/features/status/components/detailed_status.jsx @@ -8,9 +8,9 @@ import { Link, withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star-fill.svg'; +import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; +import StarIcon from '@/material-icons/400-24px/star-fill.svg?react'; import { AnimatedNumber } from 'flavours/glitch/components/animated_number'; import AttachmentList from 'flavours/glitch/components/attachment_list'; import EditedTimestamp from 'flavours/glitch/components/edited_timestamp'; diff --git a/app/javascript/flavours/glitch/features/status/index.jsx b/app/javascript/flavours/glitch/features/status/index.jsx index 713ea24c77af9a..f9b864076252dc 100644 --- a/app/javascript/flavours/glitch/features/status/index.jsx +++ b/app/javascript/flavours/glitch/features/status/index.jsx @@ -12,11 +12,11 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import { ReactComponent as ChatIcon } from '@material-symbols/svg-600/outlined/chat.svg'; -import { ReactComponent as VisibilityIcon } from '@material-symbols/svg-600/outlined/visibility.svg'; -import { ReactComponent as VisibilityOffIcon } from '@material-symbols/svg-600/outlined/visibility_off.svg'; import { HotKeys } from 'react-hotkeys'; +import ChatIcon from '@/material-icons/400-24px/chat.svg?react'; +import VisibilityIcon from '@/material-icons/400-24px/visibility.svg?react'; +import VisibilityOffIcon from '@/material-icons/400-24px/visibility_off.svg?react'; import { Icon } from 'flavours/glitch/components/icon'; import { LoadingIndicator } from 'flavours/glitch/components/loading_indicator'; import ScrollContainer from 'flavours/glitch/containers/scroll_container'; diff --git a/app/javascript/flavours/glitch/features/subscribed_languages_modal/index.jsx b/app/javascript/flavours/glitch/features/subscribed_languages_modal/index.jsx index 86c2ede894eb08..1edfe700fe3fe4 100644 --- a/app/javascript/flavours/glitch/features/subscribed_languages_modal/index.jsx +++ b/app/javascript/flavours/glitch/features/subscribed_languages_modal/index.jsx @@ -8,8 +8,8 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import { followAccount } from 'flavours/glitch/actions/accounts'; import { Button } from 'flavours/glitch/components/button'; import { IconButton } from 'flavours/glitch/components/icon_button'; diff --git a/app/javascript/flavours/glitch/features/ui/components/boost_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/boost_modal.jsx index a3d9423f912991..f44fd5ebf41c2c 100644 --- a/app/javascript/flavours/glitch/features/ui/components/boost_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/boost_modal.jsx @@ -9,8 +9,8 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; +import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; import { changeBoostPrivacy } from 'flavours/glitch/actions/boosts'; import AttachmentList from 'flavours/glitch/components/attachment_list'; import { Icon } from 'flavours/glitch/components/icon'; diff --git a/app/javascript/flavours/glitch/features/ui/components/bundle_modal_error.jsx b/app/javascript/flavours/glitch/features/ui/components/bundle_modal_error.jsx index 44165f14177422..d1c9e368838719 100644 --- a/app/javascript/flavours/glitch/features/ui/components/bundle_modal_error.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/bundle_modal_error.jsx @@ -3,7 +3,7 @@ import { PureComponent } from 'react'; import { defineMessages, injectIntl } from 'react-intl'; -import { ReactComponent as RefreshIcon } from '@material-symbols/svg-600/outlined/refresh.svg'; +import RefreshIcon from '@/material-icons/400-24px/refresh.svg?react'; import { IconButton } from '../../../components/icon_button'; diff --git a/app/javascript/flavours/glitch/features/ui/components/compare_history_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/compare_history_modal.jsx index 10cd32d168a9ab..7e84a578c29aae 100644 --- a/app/javascript/flavours/glitch/features/ui/components/compare_history_modal.jsx +++ b/app/javascript/flavours/glitch/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 { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; import escapeTextContentForBrowser from 'escape-html'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import { closeModal } from 'flavours/glitch/actions/modal'; import { IconButton } from 'flavours/glitch/components/icon_button'; import InlineAccount from 'flavours/glitch/components/inline_account'; diff --git a/app/javascript/flavours/glitch/features/ui/components/deprecated_settings_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/deprecated_settings_modal.jsx index 61750a20dd1361..2f0c07e78bc567 100644 --- a/app/javascript/flavours/glitch/features/ui/components/deprecated_settings_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/deprecated_settings_modal.jsx @@ -5,9 +5,9 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { ReactComponent as ManufacturingIcon } from '@material-symbols/svg-600/outlined/manufacturing.svg'; -import { ReactComponent as SettingsIcon } from '@material-symbols/svg-600/outlined/settings-fill.svg'; +import ManufacturingIcon from '@/material-icons/400-24px/manufacturing.svg?react'; +import SettingsIcon from '@/material-icons/400-24px/settings-fill.svg?react'; import { Button } from 'flavours/glitch/components/button'; import { Icon } from 'flavours/glitch/components/icon'; import illustration from 'flavours/glitch/images/logo_warn_glitch.svg'; diff --git a/app/javascript/flavours/glitch/features/ui/components/embed_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/embed_modal.jsx index 7caef5fccf2284..edd2fb8940400b 100644 --- a/app/javascript/flavours/glitch/features/ui/components/embed_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/embed_modal.jsx @@ -4,8 +4,8 @@ import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import api from 'flavours/glitch/api'; import { IconButton } from 'flavours/glitch/components/icon_button'; diff --git a/app/javascript/flavours/glitch/features/ui/components/favourite_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/favourite_modal.jsx index da9c74111eaa95..388bc5762cfa5d 100644 --- a/app/javascript/flavours/glitch/features/ui/components/favourite_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/favourite_modal.jsx @@ -8,8 +8,8 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star-fill.svg'; +import StarIcon from '@/material-icons/400-24px/star-fill.svg?react'; import AttachmentList from 'flavours/glitch/components/attachment_list'; import { Avatar } from 'flavours/glitch/components/avatar'; import { Button } from 'flavours/glitch/components/button'; diff --git a/app/javascript/flavours/glitch/features/ui/components/filter_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/filter_modal.jsx index 6c347f8f6b7f55..9ce5eec8742677 100644 --- a/app/javascript/flavours/glitch/features/ui/components/filter_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/filter_modal.jsx @@ -5,8 +5,8 @@ import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import { fetchFilters, createFilter, createFilterStatus } from 'flavours/glitch/actions/filters'; import { fetchStatus } from 'flavours/glitch/actions/statuses'; import { IconButton } from 'flavours/glitch/components/icon_button'; diff --git a/app/javascript/flavours/glitch/features/ui/components/focal_point_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/focal_point_modal.jsx index 29784c89e27a28..caed29c2520604 100644 --- a/app/javascript/flavours/glitch/features/ui/components/focal_point_modal.jsx +++ b/app/javascript/flavours/glitch/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 { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; 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 '@/material-icons/400-24px/close.svg?react'; import { Button } from 'flavours/glitch/components/button'; import { GIFV } from 'flavours/glitch/components/gifv'; import { IconButton } from 'flavours/glitch/components/icon_button'; diff --git a/app/javascript/flavours/glitch/features/ui/components/follow_requests_column_link.jsx b/app/javascript/flavours/glitch/features/ui/components/follow_requests_column_link.jsx index 612d5eace475bc..24fd5b64425b3c 100644 --- a/app/javascript/flavours/glitch/features/ui/components/follow_requests_column_link.jsx +++ b/app/javascript/flavours/glitch/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 { ReactComponent as PersonAddIcon } from '@material-symbols/svg-600/outlined/person_add.svg'; - +import PersonAddIcon from '@/material-icons/400-24px/person_add.svg?react'; import { fetchFollowRequests } from 'flavours/glitch/actions/accounts'; import { IconWithBadge } from 'flavours/glitch/components/icon_with_badge'; import ColumnLink from 'flavours/glitch/features/ui/components/column_link'; diff --git a/app/javascript/flavours/glitch/features/ui/components/header.jsx b/app/javascript/flavours/glitch/features/ui/components/header.jsx index ed2d6ba7f36e6b..618a6b63d4c1da 100644 --- a/app/javascript/flavours/glitch/features/ui/components/header.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/header.jsx @@ -7,8 +7,7 @@ import { Link, withRouter } from 'react-router-dom'; import { connect } from 'react-redux'; -import { ReactComponent as SearchIcon } from '@material-symbols/svg-600/outlined/search.svg'; - +import SearchIcon from '@/material-icons/400-24px/search.svg?react'; import { openModal } from 'flavours/glitch/actions/modal'; import { fetchServer } from 'flavours/glitch/actions/server'; import { Avatar } from 'flavours/glitch/components/avatar'; diff --git a/app/javascript/flavours/glitch/features/ui/components/image_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/image_modal.jsx index bc650802b0c462..0e7a3d3121eae8 100644 --- a/app/javascript/flavours/glitch/features/ui/components/image_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/image_modal.jsx @@ -5,8 +5,7 @@ import { defineMessages, injectIntl } from 'react-intl'; import classNames from 'classnames'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; - +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import { IconButton } from 'flavours/glitch/components/icon_button'; import ImageLoader from './image_loader'; diff --git a/app/javascript/flavours/glitch/features/ui/components/list_panel.jsx b/app/javascript/flavours/glitch/features/ui/components/list_panel.jsx index 6284988fa24e8c..1baedfb8b0f0ce 100644 --- a/app/javascript/flavours/glitch/features/ui/components/list_panel.jsx +++ b/app/javascript/flavours/glitch/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 { ReactComponent as ListAltIcon } from '@material-symbols/svg-600/outlined/list_alt.svg'; - +import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react'; import { fetchLists } from 'flavours/glitch/actions/lists'; import ColumnLink from './column_link'; diff --git a/app/javascript/flavours/glitch/features/ui/components/media_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/media_modal.jsx index 19591fc1c83981..d16b274170b539 100644 --- a/app/javascript/flavours/glitch/features/ui/components/media_modal.jsx +++ b/app/javascript/flavours/glitch/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 { ReactComponent as ChevronLeftIcon } from '@material-symbols/svg-600/outlined/chevron_left.svg'; -import { ReactComponent as ChevronRightIcon } from '@material-symbols/svg-600/outlined/chevron_right.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; import ReactSwipeableViews from 'react-swipeable-views'; +import ChevronLeftIcon from '@/material-icons/400-24px/chevron_left.svg?react'; +import ChevronRightIcon from '@/material-icons/400-24px/chevron_right.svg?react'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import { getAverageFromBlurhash } from 'flavours/glitch/blurhash'; import { GIFV } from 'flavours/glitch/components/gifv'; import { Icon } from 'flavours/glitch/components/icon'; diff --git a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.jsx b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.jsx index e868055f0dd1ab..0bde497c63b3d0 100644 --- a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.jsx @@ -3,18 +3,17 @@ import { Component } from 'react'; import { defineMessages, injectIntl } from 'react-intl'; -import { ReactComponent as BookmarksIcon } from '@material-symbols/svg-600/outlined/bookmarks-fill.svg'; -import { ReactComponent as HomeIcon } from '@material-symbols/svg-600/outlined/home-fill.svg'; -import { ReactComponent as ListAltIcon } from '@material-symbols/svg-600/outlined/list_alt.svg'; -import { ReactComponent as MailIcon } from '@material-symbols/svg-600/outlined/mail.svg'; -import { ReactComponent as ManufacturingIcon } from '@material-symbols/svg-600/outlined/manufacturing.svg'; -import { ReactComponent as MoreHorizIcon } from '@material-symbols/svg-600/outlined/more_horiz.svg'; -import { ReactComponent as PublicIcon } from '@material-symbols/svg-600/outlined/public.svg'; -import { ReactComponent as SearchIcon } from '@material-symbols/svg-600/outlined/search.svg'; -import { ReactComponent as SettingsIcon } from '@material-symbols/svg-600/outlined/settings-fill.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star-fill.svg'; -import { ReactComponent as TagIcon } from '@material-symbols/svg-600/outlined/tag.svg'; - +import BookmarksIcon from '@/material-icons/400-24px/bookmarks-fill.svg?react'; +import HomeIcon from '@/material-icons/400-24px/home-fill.svg?react'; +import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react'; +import MailIcon from '@/material-icons/400-24px/mail.svg?react'; +import ManufacturingIcon from '@/material-icons/400-24px/manufacturing.svg?react'; +import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; +import PublicIcon from '@/material-icons/400-24px/public.svg?react'; +import SearchIcon from '@/material-icons/400-24px/search.svg?react'; +import SettingsIcon from '@/material-icons/400-24px/settings-fill.svg?react'; +import StarIcon from '@/material-icons/400-24px/star-fill.svg?react'; +import TagIcon from '@/material-icons/400-24px/tag.svg?react'; import { NavigationPortal } from 'flavours/glitch/components/navigation_portal'; import { timelinePreview, trendsEnabled } from 'flavours/glitch/initial_state'; import { transientSingleColumn } from 'flavours/glitch/is_mobile'; diff --git a/app/javascript/flavours/glitch/features/ui/components/notifications_counter_icon.js b/app/javascript/flavours/glitch/features/ui/components/notifications_counter_icon.js index 78e62fbf3ad98e..8e38acfe80f100 100644 --- a/app/javascript/flavours/glitch/features/ui/components/notifications_counter_icon.js +++ b/app/javascript/flavours/glitch/features/ui/components/notifications_counter_icon.js @@ -1,7 +1,6 @@ import { connect } from 'react-redux'; -import { ReactComponent as NotificationsIcon } from '@material-symbols/svg-600/outlined/notifications-fill.svg'; - +import NotificationsIcon from '@/material-icons/400-24px/notifications-fill.svg?react'; import { IconWithBadge } from 'flavours/glitch/components/icon_with_badge'; const mapStateToProps = state => ({ diff --git a/app/javascript/flavours/glitch/features/ui/components/report_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/report_modal.jsx index f4f8f701948fc4..98ff00bcbfbbd2 100644 --- a/app/javascript/flavours/glitch/features/ui/components/report_modal.jsx +++ b/app/javascript/flavours/glitch/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 { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; - +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import { fetchRelationships } from 'flavours/glitch/actions/accounts'; import { submitReport } from 'flavours/glitch/actions/reports'; import { fetchServer } from 'flavours/glitch/actions/server'; diff --git a/app/javascript/flavours/glitch/features/ui/components/zoomable_image.jsx b/app/javascript/flavours/glitch/features/ui/components/zoomable_image.jsx index 7271e40db87633..31a25159eae7c7 100644 --- a/app/javascript/flavours/glitch/features/ui/components/zoomable_image.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/zoomable_image.jsx @@ -3,9 +3,8 @@ import { PureComponent } from 'react'; import { defineMessages, injectIntl } from 'react-intl'; -import { ReactComponent as FullscreenExitIcon } from '@material-symbols/svg-600/outlined/fullscreen_exit.svg'; -import { ReactComponent as RectangleIcon } from '@material-symbols/svg-600/outlined/rectangle.svg'; - +import FullscreenExitIcon from '@/material-icons/400-24px/fullscreen_exit.svg?react'; +import RectangleIcon from '@/material-icons/400-24px/rectangle.svg?react'; import { IconButton } from 'flavours/glitch/components/icon_button'; const messages = defineMessages({ diff --git a/app/javascript/flavours/glitch/features/video/index.jsx b/app/javascript/flavours/glitch/features/video/index.jsx index d98a29a7579574..d6b93dcdbc39a6 100644 --- a/app/javascript/flavours/glitch/features/video/index.jsx +++ b/app/javascript/flavours/glitch/features/video/index.jsx @@ -7,16 +7,16 @@ import classNames from 'classnames'; import { is } from 'immutable'; -import { ReactComponent as FullscreenIcon } from '@material-symbols/svg-600/outlined/fullscreen.svg'; -import { ReactComponent as FullscreenExitIcon } from '@material-symbols/svg-600/outlined/fullscreen_exit.svg'; -import { ReactComponent as PauseIcon } from '@material-symbols/svg-600/outlined/pause.svg'; -import { ReactComponent as PlayArrowIcon } from '@material-symbols/svg-600/outlined/play_arrow-fill.svg'; -import { ReactComponent as RectangleIcon } from '@material-symbols/svg-600/outlined/rectangle.svg'; -import { ReactComponent as VisibilityOffIcon } from '@material-symbols/svg-600/outlined/visibility_off.svg'; -import { ReactComponent as VolumeOffIcon } from '@material-symbols/svg-600/outlined/volume_off-fill.svg'; -import { ReactComponent as VolumeUpIcon } from '@material-symbols/svg-600/outlined/volume_up-fill.svg'; import { throttle } from 'lodash'; +import FullscreenIcon from '@/material-icons/400-24px/fullscreen.svg?react'; +import FullscreenExitIcon from '@/material-icons/400-24px/fullscreen_exit.svg?react'; +import PauseIcon from '@/material-icons/400-24px/pause.svg?react'; +import PlayArrowIcon from '@/material-icons/400-24px/play_arrow-fill.svg?react'; +import RectangleIcon from '@/material-icons/400-24px/rectangle.svg?react'; +import VisibilityOffIcon from '@/material-icons/400-24px/visibility_off.svg?react'; +import VolumeOffIcon from '@/material-icons/400-24px/volume_off-fill.svg?react'; +import VolumeUpIcon from '@/material-icons/400-24px/volume_up-fill.svg?react'; import { Blurhash } from 'flavours/glitch/components/blurhash'; import { Icon } from 'flavours/glitch/components/icon'; import { playerSettings } from 'flavours/glitch/settings'; diff --git a/app/javascript/flavours/glitch/styles/components/accounts.scss b/app/javascript/flavours/glitch/styles/components/accounts.scss index ccaa394bf56f6f..f121cf39d24c1a 100644 --- a/app/javascript/flavours/glitch/styles/components/accounts.scss +++ b/app/javascript/flavours/glitch/styles/components/accounts.scss @@ -161,6 +161,7 @@ padding: 10px; gap: 5px; color: $dark-text-color; + align-items: center; strong { font-weight: 500; diff --git a/app/javascript/flavours/glitch/styles/components/columns.scss b/app/javascript/flavours/glitch/styles/components/columns.scss index 77835ce8236ff1..6429eba81039c5 100644 --- a/app/javascript/flavours/glitch/styles/components/columns.scss +++ b/app/javascript/flavours/glitch/styles/components/columns.scss @@ -241,7 +241,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; @@ -353,7 +353,7 @@ $ui-header-height: 55px; gap: 5px; margin: 0; border: 0; - padding: 15px; + padding: 13px; color: inherit; background: transparent; font: inherit; diff --git a/app/javascript/flavours/glitch/styles/components/drawer.scss b/app/javascript/flavours/glitch/styles/components/drawer.scss index 0669eb245c7c77..2b777f89f96ea4 100644 --- a/app/javascript/flavours/glitch/styles/components/drawer.scss +++ b/app/javascript/flavours/glitch/styles/components/drawer.scss @@ -52,7 +52,7 @@ .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; diff --git a/app/javascript/flavours/glitch/styles/components/misc.scss b/app/javascript/flavours/glitch/styles/components/misc.scss index b72a0a1fa2a47a..abb59d73be801b 100644 --- a/app/javascript/flavours/glitch/styles/components/misc.scss +++ b/app/javascript/flavours/glitch/styles/components/misc.scss @@ -171,8 +171,8 @@ .icon { flex: 0 0 auto; - width: 20px; - height: 20px; + width: 24px; + height: 24px; aspect-ratio: 1; path { @@ -184,7 +184,7 @@ display: inline-flex; color: $action-button-color; border: 0; - padding: 2px; + padding: 0; border-radius: 4px; background: transparent; cursor: pointer; diff --git a/app/javascript/flavours/glitch/styles/components/status.scss b/app/javascript/flavours/glitch/styles/components/status.scss index 895d54c32b37fa..dc133742918204 100644 --- a/app/javascript/flavours/glitch/styles/components/status.scss +++ b/app/javascript/flavours/glitch/styles/components/status.scss @@ -148,6 +148,7 @@ line-height: inherit; cursor: pointer; vertical-align: top; + align-items: center; &:hover { background: lighten($ui-base-color, 33%); @@ -160,6 +161,8 @@ border-inline-start: 1px solid currentColor; padding: 0; padding-inline-start: 4px; + width: 16px; + height: 16px; } } diff --git a/app/javascript/fonts/inter/inter-variable-font-slnt-wght.woff2 b/app/javascript/fonts/inter/inter-variable-font-slnt-wght.woff2 new file mode 100644 index 00000000000000..e6345f2e3d462e Binary files /dev/null and b/app/javascript/fonts/inter/inter-variable-font-slnt-wght.woff2 differ diff --git a/app/javascript/images/mailer-new/common/header-bg-end.png b/app/javascript/images/mailer-new/common/header-bg-end.png new file mode 100644 index 00000000000000..900196678a3346 Binary files /dev/null and b/app/javascript/images/mailer-new/common/header-bg-end.png differ diff --git a/app/javascript/images/mailer-new/common/header-bg-start.png b/app/javascript/images/mailer-new/common/header-bg-start.png new file mode 100644 index 00000000000000..0037c1ad933ec8 Binary files /dev/null and b/app/javascript/images/mailer-new/common/header-bg-start.png differ diff --git a/app/javascript/images/mailer-new/common/logo-footer.png b/app/javascript/images/mailer-new/common/logo-footer.png new file mode 100644 index 00000000000000..2baafd8d7f8af9 Binary files /dev/null and b/app/javascript/images/mailer-new/common/logo-footer.png differ diff --git a/app/javascript/images/mailer-new/common/logo-header.png b/app/javascript/images/mailer-new/common/logo-header.png new file mode 100644 index 00000000000000..46a6bddaa104c7 Binary files /dev/null and b/app/javascript/images/mailer-new/common/logo-header.png differ diff --git a/app/javascript/images/mailer-new/heading/2fa-disabled.png b/app/javascript/images/mailer-new/heading/2fa-disabled.png new file mode 100644 index 00000000000000..b1e342a87cdcbc Binary files /dev/null and b/app/javascript/images/mailer-new/heading/2fa-disabled.png differ diff --git a/app/javascript/images/mailer-new/heading/2fa-enabled.png b/app/javascript/images/mailer-new/heading/2fa-enabled.png new file mode 100644 index 00000000000000..3ce3e04f848c2a Binary files /dev/null and b/app/javascript/images/mailer-new/heading/2fa-enabled.png differ diff --git a/app/javascript/images/mailer-new/heading/2fa-recovery.png b/app/javascript/images/mailer-new/heading/2fa-recovery.png new file mode 100644 index 00000000000000..cefb21e1eb0e2b Binary files /dev/null and b/app/javascript/images/mailer-new/heading/2fa-recovery.png differ diff --git a/app/javascript/images/mailer-new/heading/appeal-approved.png b/app/javascript/images/mailer-new/heading/appeal-approved.png new file mode 100755 index 00000000000000..b2476ec346b8dd Binary files /dev/null and b/app/javascript/images/mailer-new/heading/appeal-approved.png differ diff --git a/app/javascript/images/mailer-new/heading/appeal-rejected.png b/app/javascript/images/mailer-new/heading/appeal-rejected.png new file mode 100644 index 00000000000000..7ae38ad0c18ae1 Binary files /dev/null and b/app/javascript/images/mailer-new/heading/appeal-rejected.png differ diff --git a/app/javascript/images/mailer-new/heading/archive.png b/app/javascript/images/mailer-new/heading/archive.png new file mode 100644 index 00000000000000..b0c7fad84dc54d Binary files /dev/null and b/app/javascript/images/mailer-new/heading/archive.png differ diff --git a/app/javascript/images/mailer-new/heading/boost.png b/app/javascript/images/mailer-new/heading/boost.png new file mode 100644 index 00000000000000..e33b759976fae8 Binary files /dev/null and b/app/javascript/images/mailer-new/heading/boost.png differ diff --git a/app/javascript/images/mailer-new/heading/email.png b/app/javascript/images/mailer-new/heading/email.png new file mode 100644 index 00000000000000..c922c5239eefc9 Binary files /dev/null and b/app/javascript/images/mailer-new/heading/email.png differ diff --git a/app/javascript/images/mailer-new/heading/favorite.png b/app/javascript/images/mailer-new/heading/favorite.png new file mode 100644 index 00000000000000..0e483ee9b2b18c Binary files /dev/null and b/app/javascript/images/mailer-new/heading/favorite.png differ diff --git a/app/javascript/images/mailer-new/heading/follow.png b/app/javascript/images/mailer-new/heading/follow.png new file mode 100644 index 00000000000000..ff5b7e00424a68 Binary files /dev/null and b/app/javascript/images/mailer-new/heading/follow.png differ diff --git a/app/javascript/images/mailer-new/heading/key-added.png b/app/javascript/images/mailer-new/heading/key-added.png new file mode 100755 index 00000000000000..82dcd464bf3213 Binary files /dev/null and b/app/javascript/images/mailer-new/heading/key-added.png differ diff --git a/app/javascript/images/mailer-new/heading/key-deleted.png b/app/javascript/images/mailer-new/heading/key-deleted.png new file mode 100755 index 00000000000000..2930f591a09963 Binary files /dev/null and b/app/javascript/images/mailer-new/heading/key-deleted.png differ diff --git a/app/javascript/images/mailer-new/heading/key-disabled.png b/app/javascript/images/mailer-new/heading/key-disabled.png new file mode 100755 index 00000000000000..e0f259359aebd3 Binary files /dev/null and b/app/javascript/images/mailer-new/heading/key-disabled.png differ diff --git a/app/javascript/images/mailer-new/heading/key-enabled.png b/app/javascript/images/mailer-new/heading/key-enabled.png new file mode 100644 index 00000000000000..b2476ec346b8dd Binary files /dev/null and b/app/javascript/images/mailer-new/heading/key-enabled.png differ diff --git a/app/javascript/images/mailer-new/heading/login.png b/app/javascript/images/mailer-new/heading/login.png new file mode 100644 index 00000000000000..89a6e9ee335aa8 Binary files /dev/null and b/app/javascript/images/mailer-new/heading/login.png differ diff --git a/app/javascript/images/mailer-new/heading/mention.png b/app/javascript/images/mailer-new/heading/mention.png new file mode 100644 index 00000000000000..c4dccff8ef2f2f Binary files /dev/null and b/app/javascript/images/mailer-new/heading/mention.png differ diff --git a/app/javascript/images/mailer-new/heading/password.png b/app/javascript/images/mailer-new/heading/password.png new file mode 100755 index 00000000000000..552c7c06870404 Binary files /dev/null and b/app/javascript/images/mailer-new/heading/password.png differ diff --git a/app/javascript/images/mailer-new/heading/user.png b/app/javascript/images/mailer-new/heading/user.png new file mode 100644 index 00000000000000..f1dd58a18d2f36 Binary files /dev/null and b/app/javascript/images/mailer-new/heading/user.png differ diff --git a/app/javascript/images/mailer-new/heading/warning.png b/app/javascript/images/mailer-new/heading/warning.png new file mode 100755 index 00000000000000..7764837abef6e6 Binary files /dev/null and b/app/javascript/images/mailer-new/heading/warning.png differ diff --git a/app/javascript/images/mailer-new/welcome/checkbox-off.png b/app/javascript/images/mailer-new/welcome/checkbox-off.png new file mode 100644 index 00000000000000..51c190efe6dde5 Binary files /dev/null and b/app/javascript/images/mailer-new/welcome/checkbox-off.png differ diff --git a/app/javascript/images/mailer-new/welcome/checkbox-on.png b/app/javascript/images/mailer-new/welcome/checkbox-on.png new file mode 100644 index 00000000000000..162095e7df3df7 Binary files /dev/null and b/app/javascript/images/mailer-new/welcome/checkbox-on.png differ diff --git a/app/javascript/images/mailer-new/welcome/step1-on.png b/app/javascript/images/mailer-new/welcome/step1-on.png new file mode 100644 index 00000000000000..c3776d17dfb7e7 Binary files /dev/null and b/app/javascript/images/mailer-new/welcome/step1-on.png differ diff --git a/app/javascript/images/mailer-new/welcome/step2-off.png b/app/javascript/images/mailer-new/welcome/step2-off.png new file mode 100755 index 00000000000000..a262454d2d51eb Binary files /dev/null and b/app/javascript/images/mailer-new/welcome/step2-off.png differ diff --git a/app/javascript/images/mailer-new/welcome/step3-off.png b/app/javascript/images/mailer-new/welcome/step3-off.png new file mode 100755 index 00000000000000..972de65a569aff Binary files /dev/null and b/app/javascript/images/mailer-new/welcome/step3-off.png differ diff --git a/app/javascript/images/mailer-new/welcome/step4-off.png b/app/javascript/images/mailer-new/welcome/step4-off.png new file mode 100755 index 00000000000000..f45e9a2c9ac181 Binary files /dev/null and b/app/javascript/images/mailer-new/welcome/step4-off.png differ diff --git a/app/javascript/images/mailer-new/welcome/step5-off.png b/app/javascript/images/mailer-new/welcome/step5-off.png new file mode 100755 index 00000000000000..ca270f54781c5a Binary files /dev/null and b/app/javascript/images/mailer-new/welcome/step5-off.png differ diff --git a/app/javascript/mastodon/components/attachment_list.jsx b/app/javascript/mastodon/components/attachment_list.jsx index ebf092b83df001..c5ac046751893d 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 { ReactComponent as LinkIcon } from '@material-symbols/svg-600/outlined/link.svg'; - +import LinkIcon from '@/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 2f762fed5fb80a..646655c249b872 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 { ReactComponent as GroupsIcon } from '@material-symbols/svg-600/outlined/group.svg'; -import { ReactComponent as PersonIcon } from '@material-symbols/svg-600/outlined/person.svg'; -import { ReactComponent as SmartToyIcon } from '@material-symbols/svg-600/outlined/smart_toy.svg'; +import GroupsIcon from '@/material-icons/400-24px/group.svg?react'; +import PersonIcon from '@/material-icons/400-24px/person.svg?react'; +import SmartToyIcon from '@/material-icons/400-24px/smart_toy.svg?react'; export const Badge = ({ icon, label, domain }) => ( @@ -31,4 +31,4 @@ export const GroupBadge = () => ( export const AutomatedBadge = () => ( } label={} /> -); \ No newline at end of file +); diff --git a/app/javascript/mastodon/components/column_back_button.tsx b/app/javascript/mastodon/components/column_back_button.tsx index b835e9e6ad3154..af38c1e1106818 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 { ReactComponent as ArrowBackIcon } from '@material-symbols/svg-600/outlined/arrow_back.svg'; - +import ArrowBackIcon from '@/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 b78bd9a8ef4aaa..901888e7504c3d 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 { ReactComponent as AddIcon } from '@material-symbols/svg-600/outlined/add.svg'; -import { ReactComponent as ArrowBackIcon } from '@material-symbols/svg-600/outlined/arrow_back.svg'; -import { ReactComponent as ChevronLeftIcon } from '@material-symbols/svg-600/outlined/chevron_left.svg'; -import { ReactComponent as ChevronRightIcon } from '@material-symbols/svg-600/outlined/chevron_right.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; -import { ReactComponent as TuneIcon } from '@material-symbols/svg-600/outlined/tune.svg'; - +import AddIcon from '@/material-icons/400-24px/add.svg?react'; +import ArrowBackIcon from '@/material-icons/400-24px/arrow_back.svg?react'; +import ChevronLeftIcon from '@/material-icons/400-24px/chevron_left.svg?react'; +import ChevronRightIcon from '@/material-icons/400-24px/chevron_right.svg?react'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; +import TuneIcon from '@/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 9b1a36d83ab0da..0c3c6c290b2637 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 { ReactComponent as ContentCopyIcon } from '@material-symbols/svg-600/outlined/content_copy.svg'; - +import ContentCopyIcon from '@/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 4e6d3bb9a76730..bc40e46f8da114 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 { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; - +import CloseIcon from '@/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 34c376f530535b..ed5e8e7e4c20ef 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 { ReactComponent as LockOpenIcon } from '@material-symbols/svg-600/outlined/lock_open.svg'; +import LockOpenIcon from '@/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 d9cbcc32e5d706..04c8bb09800ffa 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 { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; import { supportsPassiveEvents } from 'detect-passive-events'; import Overlay from 'react-overlays/Overlay'; +import CloseIcon from '@/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 4375166bcd4fbd..4ca00f8dda9713 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 { ReactComponent as ArrowDropDownIcon } from '@material-symbols/svg-600/outlined/arrow_drop_down.svg'; - +import ArrowDropDownIcon from '@/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 f0af11f7f69f5f..f388380c44aeb8 100644 --- a/app/javascript/mastodon/components/icon.tsx +++ b/app/javascript/mastodon/components/icon.tsx @@ -1,7 +1,6 @@ import classNames from 'classnames'; -import { ReactComponent as CheckBoxOutlineBlankIcon } from '@material-symbols/svg-600/outlined/check_box_outline_blank.svg'; - +import CheckBoxOutlineBlankIcon from '@/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 27ca6648c39c16..1d4193a35951ab 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 { ReactComponent as MoreHorizIcon } from '@material-symbols/svg-600/outlined/more_horiz.svg'; - +import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; import { Icon } from 'mastodon/components/icon'; const messages = defineMessages({ diff --git a/app/javascript/mastodon/components/logo.tsx b/app/javascript/mastodon/components/logo.tsx index 928aa29a7cbc42..b7f8bd6695008a 100644 --- a/app/javascript/mastodon/components/logo.tsx +++ b/app/javascript/mastodon/components/logo.tsx @@ -1,4 +1,4 @@ -import logo from 'mastodon/../images/logo.svg'; +import logo from '@/images/logo.svg'; export const WordmarkLogo: React.FC = () => ( diff --git a/app/javascript/mastodon/components/media_gallery.jsx b/app/javascript/mastodon/components/media_gallery.jsx index 668c2a2a8af2bf..e5200371aeeb26 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 { ReactComponent as VisibilityOffIcon } from '@material-symbols/svg-600/outlined/visibility_off.svg'; import { debounce } from 'lodash'; +import VisibilityOffIcon from '@/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 08a599cd427283..50f91a92753cbb 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 { ReactComponent as CancelPresentationIcon } from '@material-symbols/svg-600/outlined/cancel_presentation.svg'; - +import CancelPresentationIcon from '@/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 7cf2c57b783e01..c7036d111b28bd 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 { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/check.svg'; import escapeTextContentForBrowser from 'escape-html'; import spring from 'react-motion/lib/spring'; +import CheckIcon from '@/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/regeneration_indicator.jsx b/app/javascript/mastodon/components/regeneration_indicator.jsx index 052e25f25f761f..d42a7d7c72b204 100644 --- a/app/javascript/mastodon/components/regeneration_indicator.jsx +++ b/app/javascript/mastodon/components/regeneration_indicator.jsx @@ -1,6 +1,6 @@ import { FormattedMessage } from 'react-intl'; -import illustration from 'mastodon/../images/elephant_ui_working.svg'; +import illustration from '@/images/elephant_ui_working.svg'; const RegenerationIndicator = () => (
diff --git a/app/javascript/mastodon/components/status.jsx b/app/javascript/mastodon/components/status.jsx index c141ee2da3ef19..ff4fe925257690 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 { ReactComponent as AlternateEmailIcon } from '@material-symbols/svg-600/outlined/alternate_email.svg'; -import { ReactComponent as PushPinIcon } from '@material-symbols/svg-600/outlined/push_pin.svg'; -import { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; -import { ReactComponent as ReplyIcon } from '@material-symbols/svg-600/outlined/reply.svg'; import { HotKeys } from 'react-hotkeys'; +import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?react'; +import PushPinIcon from '@/material-icons/400-24px/push_pin.svg?react'; +import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; +import ReplyIcon from '@/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 25eab91fe38e68..bfe77a4900d417 100644 --- a/app/javascript/mastodon/components/status_action_bar.jsx +++ b/app/javascript/mastodon/components/status_action_bar.jsx @@ -9,18 +9,17 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; -import { ReactComponent as BookmarkIcon } from '@material-symbols/svg-600/outlined/bookmark-fill.svg'; -import { ReactComponent as BookmarkBorderIcon } from '@material-symbols/svg-600/outlined/bookmark.svg'; -import { ReactComponent as MoreHorizIcon } from '@material-symbols/svg-600/outlined/more_horiz.svg'; -import { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; -import { ReactComponent as ReplyIcon } from '@material-symbols/svg-600/outlined/reply.svg'; -import { ReactComponent as ReplyAllIcon } from '@material-symbols/svg-600/outlined/reply_all.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star-fill.svg'; -import { ReactComponent as StarBorderIcon } from '@material-symbols/svg-600/outlined/star.svg'; -import { ReactComponent as VisibilityIcon } from '@material-symbols/svg-600/outlined/visibility.svg'; - -import { ReactComponent as RepeatDisabledIcon } from 'mastodon/../svg-icons/repeat_disabled.svg'; -import { ReactComponent as RepeatPrivateIcon } from 'mastodon/../svg-icons/repeat_private.svg'; +import BookmarkIcon from '@/material-icons/400-24px/bookmark-fill.svg'; +import BookmarkBorderIcon from '@/material-icons/400-24px/bookmark.svg?react'; +import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; +import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; +import ReplyIcon from '@/material-icons/400-24px/reply.svg?react'; +import ReplyAllIcon from '@/material-icons/400-24px/reply_all.svg?react'; +import StarIcon from '@/material-icons/400-24px/star-fill.svg?react'; +import StarBorderIcon from '@/material-icons/400-24px/star.svg?react'; +import VisibilityIcon from '@/material-icons/400-24px/visibility.svg?react'; +import RepeatDisabledIcon from '@/svg-icons/repeat_disabled.svg?react'; +import RepeatPrivateIcon from '@/svg-icons/repeat_private.svg?react'; import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_FEDERATION } from 'mastodon/permissions'; import { WithRouterPropTypes } from 'mastodon/utils/react_router'; diff --git a/app/javascript/mastodon/components/status_content.jsx b/app/javascript/mastodon/components/status_content.jsx index d1f50fc8d771cf..4a7ba941eb6297 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 { ReactComponent as ChevronRightIcon } from '@material-symbols/svg-600/outlined/chevron_right.svg'; - +import ChevronRightIcon from '@/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 e96bf8256339df..626cc500d6a672 100644 --- a/app/javascript/mastodon/components/verified_badge.tsx +++ b/app/javascript/mastodon/components/verified_badge.tsx @@ -1,4 +1,4 @@ -import { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/check.svg'; +import CheckIcon from '@/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 3e9f36dc70d8fa..d6ad4095ebcd90 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 { ReactComponent as AlternateEmailIcon } from '@material-symbols/svg-600/outlined/alternate_email.svg'; -import { ReactComponent as LockIcon } from '@material-symbols/svg-600/outlined/lock.svg'; -import { ReactComponent as LockOpenIcon } from '@material-symbols/svg-600/outlined/lock_open.svg'; -import { ReactComponent as PublicIcon } from '@material-symbols/svg-600/outlined/public.svg'; +import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?react'; +import LockIcon from '@/material-icons/400-24px/lock.svg?react'; +import LockOpenIcon from '@/material-icons/400-24px/lock_open.svg?react'; +import PublicIcon from '@/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 380942b8ee104f..3287631ed1ba88 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 { ReactComponent as ChevronRightIcon } from '@material-symbols/svg-600/outlined/chevron_right.svg'; -import { ReactComponent as ExpandMoreIcon } from '@material-symbols/svg-600/outlined/expand_more.svg'; - +import ChevronRightIcon from '@/material-icons/400-24px/chevron_right.svg?react'; +import ExpandMoreIcon from '@/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 685c282df27761..d57fd030b2d9e2 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 { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/check.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; - +import CheckIcon from '@/material-icons/400-24px/check.svg?react'; +import CloseIcon from '@/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 97f68c2217dfef..233d208c648233 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 { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/check.svg'; -import { ReactComponent as LockIcon } from '@material-symbols/svg-600/outlined/lock.svg'; -import { ReactComponent as MoreHorizIcon } from '@material-symbols/svg-600/outlined/more_horiz.svg'; -import { ReactComponent as NotificationsIcon } from '@material-symbols/svg-600/outlined/notifications.svg'; -import { ReactComponent as NotificationsActiveIcon } from '@material-symbols/svg-600/outlined/notifications_active-fill.svg'; -import { ReactComponent as ShareIcon } from '@material-symbols/svg-600/outlined/share.svg'; - +import CheckIcon from '@/material-icons/400-24px/check.svg?react'; +import LockIcon from '@/material-icons/400-24px/lock.svg?react'; +import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; +import NotificationsIcon from '@/material-icons/400-24px/notifications.svg?react'; +import NotificationsActiveIcon from '@/material-icons/400-24px/notifications_active-fill.svg?react'; +import ShareIcon from '@/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 657b17d43d81b1..087e7757533327 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 { ReactComponent as AudiotrackIcon } from '@material-symbols/svg-600/outlined/music_note.svg'; -import { ReactComponent as PlayArrowIcon } from '@material-symbols/svg-600/outlined/play_arrow.svg'; -import { ReactComponent as VisibilityOffIcon } from '@material-symbols/svg-600/outlined/visibility_off.svg'; - +import AudiotrackIcon from '@/material-icons/400-24px/music_note.svg?react'; +import PlayArrowIcon from '@/material-icons/400-24px/play_arrow.svg?react'; +import VisibilityOffIcon from '@/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 7a7d0910fa8f70..fdc1b0be0f11a1 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 { ReactComponent as DownloadIcon } from '@material-symbols/svg-600/outlined/download.svg'; -import { ReactComponent as PauseIcon } from '@material-symbols/svg-600/outlined/pause.svg'; -import { ReactComponent as PlayArrowIcon } from '@material-symbols/svg-600/outlined/play_arrow-fill.svg'; -import { ReactComponent as VisibilityOffIcon } from '@material-symbols/svg-600/outlined/visibility_off.svg'; -import { ReactComponent as VolumeOffIcon } from '@material-symbols/svg-600/outlined/volume_off-fill.svg'; -import { ReactComponent as VolumeUpIcon } from '@material-symbols/svg-600/outlined/volume_up-fill.svg'; import { throttle, debounce } from 'lodash'; +import DownloadIcon from '@/material-icons/400-24px/download.svg?react'; +import PauseIcon from '@/material-icons/400-24px/pause.svg?react'; +import PlayArrowIcon from '@/material-icons/400-24px/play_arrow-fill.svg?react'; +import VisibilityOffIcon from '@/material-icons/400-24px/visibility_off.svg?react'; +import VolumeOffIcon from '@/material-icons/400-24px/volume_off-fill.svg?react'; +import VolumeUpIcon from '@/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 615e4c8be22fef..1a631d3d07ca56 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 { ReactComponent as BlockIcon } from '@material-symbols/svg-600/outlined/block-fill.svg'; import { debounce } from 'lodash'; +import BlockIcon from '@/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 be6110b0da33e0..5494ad44b04907 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 { ReactComponent as BookmarksIcon } from '@material-symbols/svg-600/outlined/bookmarks-fill.svg'; import { debounce } from 'lodash'; +import BookmarksIcon from '@/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 60f036a628b808..0aa1f9aa23a22a 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 { ReactComponent as PeopleIcon } from '@material-symbols/svg-600/outlined/group.svg'; - +import PeopleIcon from '@/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 3e2109092576f7..411ad77c79c0be 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 { ReactComponent as MenuIcon } from '@material-symbols/svg-600/outlined/menu.svg'; +import MenuIcon from '@/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 3b752f252d0099..a70c774c373f34 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 { ReactComponent as LockIcon } from '@material-symbols/svg-600/outlined/lock.svg'; import { length } from 'stringz'; +import LockIcon from '@/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 f722815b511706..4900d381192779 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 { ReactComponent as InsertChartIcon } from '@material-symbols/svg-600/outlined/insert_chart.svg'; +import InsertChartIcon from '@/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 a7f933ff7c5617..e242f1bb3dcae9 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 { ReactComponent as AddIcon } from '@material-symbols/svg-600/outlined/add.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; - +import AddIcon from '@/material-icons/400-24px/add.svg?react'; +import CloseIcon from '@/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 060eb6767cf8ed..c3446b8d6051bf 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 { ReactComponent as AlternateEmailIcon } from '@material-symbols/svg-600/outlined/alternate_email.svg'; -import { ReactComponent as LockIcon } from '@material-symbols/svg-600/outlined/lock.svg'; -import { ReactComponent as LockOpenIcon } from '@material-symbols/svg-600/outlined/lock_open.svg'; -import { ReactComponent as PublicIcon } from '@material-symbols/svg-600/outlined/public.svg'; import { supportsPassiveEvents } from 'detect-passive-events'; import Overlay from 'react-overlays/Overlay'; - +import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?react'; +import LockIcon from '@/material-icons/400-24px/lock.svg?react'; +import LockOpenIcon from '@/material-icons/400-24px/lock_open.svg?react'; +import PublicIcon from '@/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 af7a9b6be5d982..8051e01db4f92a 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 { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; - +import CloseIcon from '@/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 5d55330dcb3064..0bcc41b929a28f 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 { ReactComponent as CancelIcon } from '@material-symbols/svg-600/outlined/cancel-fill.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; -import { ReactComponent as SearchIcon } from '@material-symbols/svg-600/outlined/search.svg'; - +import CancelIcon from '@/material-icons/400-24px/cancel-fill.svg?react'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; +import SearchIcon from '@/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 2667ed54377784..694deea04efb96 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 { ReactComponent as FindInPageIcon } from '@material-symbols/svg-600/outlined/find_in_page.svg'; -import { ReactComponent as PeopleIcon } from '@material-symbols/svg-600/outlined/group.svg'; -import { ReactComponent as SearchIcon } from '@material-symbols/svg-600/outlined/search.svg'; -import { ReactComponent as TagIcon } from '@material-symbols/svg-600/outlined/tag.svg'; - +import FindInPageIcon from '@/material-icons/400-24px/find_in_page.svg?react'; +import PeopleIcon from '@/material-icons/400-24px/group.svg?react'; +import SearchIcon from '@/material-icons/400-24px/search.svg?react'; +import TagIcon from '@/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 a443741d5cf54d..76d394af7a41cc 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 { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; -import { ReactComponent as EditIcon } from '@material-symbols/svg-600/outlined/edit.svg'; -import { ReactComponent as InfoIcon } from '@material-symbols/svg-600/outlined/info.svg'; import spring from 'react-motion/lib/spring'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; +import EditIcon from '@/material-icons/400-24px/edit.svg?react'; +import InfoIcon from '@/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 dda8a42ab082c9..923d6a3c47e458 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 { ReactComponent as AddPhotoAlternateIcon } from '@material-symbols/svg-600/outlined/add_photo_alternate.svg'; +import AddPhotoAlternateIcon from '@/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 90c5142e24dd34..e4973b24fd604f 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 { ReactComponent as UploadFileIcon } from '@material-symbols/svg-600/outlined/upload_file.svg'; import spring from 'react-motion/lib/spring'; +import UploadFileIcon from '@/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 65650ffe022304..ea3a14950126c9 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 { ReactComponent as PeopleIcon } from '@material-symbols/svg-600/outlined/group.svg'; -import { ReactComponent as HomeIcon } from '@material-symbols/svg-600/outlined/home-fill.svg'; -import { ReactComponent as LogoutIcon } from '@material-symbols/svg-600/outlined/logout.svg'; -import { ReactComponent as MenuIcon } from '@material-symbols/svg-600/outlined/menu.svg'; -import { ReactComponent as NotificationsIcon } from '@material-symbols/svg-600/outlined/notifications-fill.svg'; -import { ReactComponent as PublicIcon } from '@material-symbols/svg-600/outlined/public.svg'; -import { ReactComponent as SettingsIcon } from '@material-symbols/svg-600/outlined/settings-fill.svg'; import spring from 'react-motion/lib/spring'; +import PeopleIcon from '@/material-icons/400-24px/group.svg?react'; +import HomeIcon from '@/material-icons/400-24px/home-fill.svg?react'; +import LogoutIcon from '@/material-icons/400-24px/logout.svg?react'; +import MenuIcon from '@/material-icons/400-24px/menu.svg?react'; +import NotificationsIcon from '@/material-icons/400-24px/notifications-fill.svg?react'; +import PublicIcon from '@/material-icons/400-24px/public.svg?react'; +import SettingsIcon from '@/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 005edc5c2b1522..274cfa69f53db3 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 { ReactComponent as MoreHorizIcon } from '@material-symbols/svg-600/outlined/more_horiz.svg'; -import { ReactComponent as ReplyIcon } from '@material-symbols/svg-600/outlined/reply.svg'; import { HotKeys } from 'react-hotkeys'; +import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; +import ReplyIcon from '@/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 4e6d0c3e72ff62..af29d7a5b83257 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 { ReactComponent as AlternateEmailIcon } from '@material-symbols/svg-600/outlined/alternate_email.svg'; - +import AlternateEmailIcon from '@/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 20c84d4df069f3..0d3408146e2eef 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 { ReactComponent as PeopleIcon } from '@material-symbols/svg-600/outlined/group.svg'; - +import PeopleIcon from '@/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 142f14bf716617..964eada9c1e5b9 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 { ReactComponent as BlockIcon } from '@material-symbols/svg-600/outlined/block-fill.svg'; import { debounce } from 'lodash'; +import BlockIcon from '@/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 80825e456396cb..8ebaccd0132de7 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 { ReactComponent as SearchIcon } from '@material-symbols/svg-600/outlined/search.svg'; -import { ReactComponent as TagIcon } from '@material-symbols/svg-600/outlined/tag.svg'; - +import SearchIcon from '@/material-icons/400-24px/search.svg?react'; +import TagIcon from '@/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 8c172c134a0989..355c0f1c4c8532 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 { ReactComponent as FindInPageIcon } from '@material-symbols/svg-600/outlined/find_in_page.svg'; -import { ReactComponent as PeopleIcon } from '@material-symbols/svg-600/outlined/group.svg'; -import { ReactComponent as TagIcon } from '@material-symbols/svg-600/outlined/tag.svg'; - +import FindInPageIcon from '@/material-icons/400-24px/find_in_page.svg?react'; +import PeopleIcon from '@/material-icons/400-24px/group.svg?react'; +import TagIcon from '@/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 d3c3cc9f091698..8e65ff5b68beb4 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 { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star-fill.svg'; import { debounce } from 'lodash'; +import StarIcon from '@/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 637a9d6994a198..27ca169409221f 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 { ReactComponent as RefreshIcon } from '@material-symbols/svg-600/outlined/refresh.svg'; import { debounce } from 'lodash'; +import RefreshIcon from '@/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 9e8f87e0051a89..5b2eb64952f0e5 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 { ReactComponent as AddIcon } from '@material-symbols/svg-600/outlined/add.svg'; import fuzzysort from 'fuzzysort'; +import AddIcon from '@/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 0ed8aa11aa6ad3..6355efbfe00865 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 { ReactComponent as PublicIcon } from '@material-symbols/svg-600/outlined/public.svg'; - +import PublicIcon from '@/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 ca2b454143a468..dd308c87cb1fc3 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 { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/check.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; +import CheckIcon from '@/material-icons/400-24px/check.svg?react'; +import CloseIcon from '@/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 3b98791926991a..7d651f2ca69c24 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 { ReactComponent as PersonAddIcon } from '@material-symbols/svg-600/outlined/person_add.svg'; import { debounce } from 'lodash'; +import PersonAddIcon from '@/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 dec53f01210107..21248e6de99e97 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 { ReactComponent as TagIcon } from '@material-symbols/svg-600/outlined/tag.svg'; import { debounce } from 'lodash'; +import TagIcon from '@/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 1999316a8e776d..ea36cefd7dc240 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 { ReactComponent as AddIcon } from '@material-symbols/svg-600/outlined/add.svg'; -import { ReactComponent as ChevronLeftIcon } from '@material-symbols/svg-600/outlined/chevron_left.svg'; -import { ReactComponent as ChevronRightIcon } from '@material-symbols/svg-600/outlined/chevron_right.svg'; 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 elephantUIPlane from '@/images/elephant_ui_plane.svg'; +import AddIcon from '@/material-icons/400-24px/add.svg?react'; +import ChevronLeftIcon from '@/material-icons/400-24px/chevron_left.svg?react'; +import ChevronRightIcon from '@/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 5994e88edf91bb..53bb22ddb26bf7 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 { ReactComponent as AlternateEmailIcon } from '@material-symbols/svg-600/outlined/alternate_email.svg'; -import { ReactComponent as BookmarksIcon } from '@material-symbols/svg-600/outlined/bookmarks-fill.svg'; -import { ReactComponent as PeopleIcon } from '@material-symbols/svg-600/outlined/group.svg'; -import { ReactComponent as HomeIcon } from '@material-symbols/svg-600/outlined/home-fill.svg'; -import { ReactComponent as ListAltIcon } from '@material-symbols/svg-600/outlined/list_alt.svg'; -import { ReactComponent as MenuIcon } from '@material-symbols/svg-600/outlined/menu.svg'; -import { ReactComponent as PersonAddIcon } from '@material-symbols/svg-600/outlined/person_add.svg'; -import { ReactComponent as PublicIcon } from '@material-symbols/svg-600/outlined/public.svg'; -import { ReactComponent as SettingsIcon } from '@material-symbols/svg-600/outlined/settings-fill.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star.svg'; -import { ReactComponent as TagIcon } from '@material-symbols/svg-600/outlined/tag.svg'; - +import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?react'; +import BookmarksIcon from '@/material-icons/400-24px/bookmarks-fill.svg?react'; +import PeopleIcon from '@/material-icons/400-24px/group.svg?react'; +import HomeIcon from '@/material-icons/400-24px/home-fill.svg?react'; +import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react'; +import MenuIcon from '@/material-icons/400-24px/menu.svg?react'; +import PersonAddIcon from '@/material-icons/400-24px/person_add.svg?react'; +import PublicIcon from '@/material-icons/400-24px/public.svg?react'; +import SettingsIcon from '@/material-icons/400-24px/settings-fill.svg?react'; +import StarIcon from '@/material-icons/400-24px/star.svg?react'; +import TagIcon from '@/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 d39d550a1bef6d..f431a7e9b72130 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 { ReactComponent as TagIcon } from '@material-symbols/svg-600/outlined/tag.svg'; import { isEqual } from 'lodash'; +import TagIcon from '@/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/components/explore_prompt.tsx b/app/javascript/mastodon/features/home_timeline/components/explore_prompt.tsx index 9eeec00e3478dc..960d30e2caea4a 100644 --- a/app/javascript/mastodon/features/home_timeline/components/explore_prompt.tsx +++ b/app/javascript/mastodon/features/home_timeline/components/explore_prompt.tsx @@ -2,7 +2,7 @@ import { FormattedMessage } from 'react-intl'; import { Link } from 'react-router-dom'; -import background from 'mastodon/../images/friends-cropped.png'; +import background from '@/images/friends-cropped.png'; import { DismissableBanner } from 'mastodon/components/dismissable_banner'; export const ExplorePrompt = () => ( diff --git a/app/javascript/mastodon/features/home_timeline/index.jsx b/app/javascript/mastodon/features/home_timeline/index.jsx index 613eb4b8966b7d..069f52b0beaf2c 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 { ReactComponent as CampaignIcon } from '@material-symbols/svg-600/outlined/campaign.svg'; -import { ReactComponent as HomeIcon } from '@material-symbols/svg-600/outlined/home-fill.svg'; - +import CampaignIcon from '@/material-icons/400-24px/campaign.svg?react'; +import HomeIcon from '@/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 216c63a7e609a1..07f1e6fe5a1e31 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 { ReactComponent as PersonAddIcon } from '@material-symbols/svg-600/outlined/person_add.svg'; -import { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; -import { ReactComponent as ReplyIcon } from '@material-symbols/svg-600/outlined/reply.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star.svg'; import { throttle, escapeRegExp } from 'lodash'; +import PersonAddIcon from '@/material-icons/400-24px/person_add.svg?react'; +import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; +import ReplyIcon from '@/material-icons/400-24px/reply.svg?react'; +import StarIcon from '@/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 7552e1799b4ec8..622ca525c1a7b2 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 { ReactComponent as InfoIcon } from '@material-symbols/svg-600/outlined/info.svg'; - +import InfoIcon from '@/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 6c5aab85da7fff..a7cfd60bf3af78 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 { ReactComponent as AddIcon } from '@material-symbols/svg-600/outlined/add.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; -import { ReactComponent as ListAltIcon } from '@material-symbols/svg-600/outlined/list_alt.svg'; - +import AddIcon from '@/material-icons/400-24px/add.svg?react'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; +import ListAltIcon from '@/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 18d5e905cbc0b7..77d32af80a25a2 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 { ReactComponent as AddIcon } from '@material-symbols/svg-600/outlined/add.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; +import AddIcon from '@/material-icons/400-24px/add.svg?react'; +import CloseIcon from '@/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 1e2446f92b81fe..89f596636ead95 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 { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/check.svg'; +import CheckIcon from '@/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 093af5cd4e2ceb..097d4f3f41a2ff 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 { ReactComponent as CancelIcon } from '@material-symbols/svg-600/outlined/cancel.svg'; -import { ReactComponent as SearchIcon } from '@material-symbols/svg-600/outlined/search.svg'; - +import CancelIcon from '@/material-icons/400-24px/cancel.svg?react'; +import SearchIcon from '@/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 55579c2fd1fcf7..24bf122facb347 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 { ReactComponent as DeleteIcon } from '@material-symbols/svg-600/outlined/delete.svg'; -import { ReactComponent as EditIcon } from '@material-symbols/svg-600/outlined/edit.svg'; -import { ReactComponent as ListAltIcon } from '@material-symbols/svg-600/outlined/list_alt.svg'; import Toggle from 'react-toggle'; +import DeleteIcon from '@/material-icons/400-24px/delete.svg?react'; +import EditIcon from '@/material-icons/400-24px/edit.svg?react'; +import ListAltIcon from '@/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 9014394351ad8f..a7648f55b21f70 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 { ReactComponent as ListAltIcon } from '@material-symbols/svg-600/outlined/list_alt.svg'; - +import ListAltIcon from '@/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 7f66edc03dc67c..3b50244ea4b192 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 { ReactComponent as VolumeOffIcon } from '@material-symbols/svg-600/outlined/volume_off.svg'; import { debounce } from 'lodash'; +import VolumeOffIcon from '@/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 54fa16fb6704d3..73eaecba59f3fc 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 { ReactComponent as DeleteForeverIcon } from '@material-symbols/svg-600/outlined/delete_forever.svg'; - +import DeleteForeverIcon from '@/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 84bd4791ca084a..c288c2c0de2c9e 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 { ReactComponent as HomeIcon } from '@material-symbols/svg-600/outlined/home-fill.svg'; -import { ReactComponent as InsertChartIcon } from '@material-symbols/svg-600/outlined/insert_chart.svg'; -import { ReactComponent as PersonAddIcon } from '@material-symbols/svg-600/outlined/person_add.svg'; -import { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; -import { ReactComponent as ReplyAllIcon } from '@material-symbols/svg-600/outlined/reply_all.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star.svg'; - +import HomeIcon from '@/material-icons/400-24px/home-fill.svg?react'; +import InsertChartIcon from '@/material-icons/400-24px/insert_chart.svg?react'; +import PersonAddIcon from '@/material-icons/400-24px/person_add.svg?react'; +import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; +import ReplyAllIcon from '@/material-icons/400-24px/reply_all.svg?react'; +import StarIcon from '@/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 03420b6c01e6e8..4024455cbd7364 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 { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/check.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; - +import CheckIcon from '@/material-icons/400-24px/check.svg?react'; +import CloseIcon from '@/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 ad7308b26fc6f0..d7101f8384f61e 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 { ReactComponent as EditIcon } from '@material-symbols/svg-600/outlined/edit.svg'; -import { ReactComponent as FlagIcon } from '@material-symbols/svg-600/outlined/flag-fill.svg'; -import { ReactComponent as HomeIcon } from '@material-symbols/svg-600/outlined/home-fill.svg'; -import { ReactComponent as InsertChartIcon } from '@material-symbols/svg-600/outlined/insert_chart.svg'; -import { ReactComponent as PersonIcon } from '@material-symbols/svg-600/outlined/person-fill.svg'; -import { ReactComponent as PersonAddIcon } from '@material-symbols/svg-600/outlined/person_add-fill.svg'; -import { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star-fill.svg'; import { HotKeys } from 'react-hotkeys'; +import EditIcon from '@/material-icons/400-24px/edit.svg?react'; +import FlagIcon from '@/material-icons/400-24px/flag-fill.svg?react'; +import HomeIcon from '@/material-icons/400-24px/home-fill.svg?react'; +import InsertChartIcon from '@/material-icons/400-24px/insert_chart.svg?react'; +import PersonIcon from '@/material-icons/400-24px/person-fill.svg?react'; +import PersonAddIcon from '@/material-icons/400-24px/person_add-fill.svg?react'; +import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; +import StarIcon from '@/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 b7ebb4c4675dcf..1cdf5b5dfef100 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 { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; -import { ReactComponent as TuneIcon } from '@material-symbols/svg-600/outlined/tune.svg'; - +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; +import TuneIcon from '@/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 762c96cccaff8c..30c63ed32ac0d3 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 { ReactComponent as DoneAllIcon } from '@material-symbols/svg-600/outlined/done_all.svg'; -import { ReactComponent as NotificationsIcon } from '@material-symbols/svg-600/outlined/notifications-fill.svg'; import { debounce } from 'lodash'; +import DoneAllIcon from '@/material-icons/400-24px/done_all.svg?react'; +import NotificationsIcon from '@/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 1f83f20801632b..a2a1653b8ab25d 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 { ReactComponent as ArrowRightAltIcon } from '@material-symbols/svg-600/outlined/arrow_right_alt.svg'; -import { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/done.svg'; - +import ArrowRightAltIcon from '@/material-icons/400-24px/arrow_right_alt.svg?react'; +import CheckIcon from '@/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 51677fbc7a580b..5900b9ec76db14 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 { ReactComponent as AccountCircleIcon } from '@material-symbols/svg-600/outlined/account_circle.svg'; -import { ReactComponent as ArrowRightAltIcon } from '@material-symbols/svg-600/outlined/arrow_right_alt.svg'; -import { ReactComponent as ContentCopyIcon } from '@material-symbols/svg-600/outlined/content_copy.svg'; -import { ReactComponent as EditNoteIcon } from '@material-symbols/svg-600/outlined/edit_note.svg'; -import { ReactComponent as PersonAddIcon } from '@material-symbols/svg-600/outlined/person_add.svg'; - -import illustration from 'mastodon/../images/elephant_ui_conversation.svg'; +import illustration from '@/images/elephant_ui_conversation.svg'; +import AccountCircleIcon from '@/material-icons/400-24px/account_circle.svg?react'; +import ArrowRightAltIcon from '@/material-icons/400-24px/arrow_right_alt.svg?react'; +import ContentCopyIcon from '@/material-icons/400-24px/content_copy.svg?react'; +import EditNoteIcon from '@/material-icons/400-24px/edit_note.svg?react'; +import PersonAddIcon from '@/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 daaef6065c6b95..14250ae39bd399 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 { ReactComponent as AddPhotoAlternateIcon } from '@material-symbols/svg-600/outlined/add_photo_alternate.svg'; -import { ReactComponent as EditIcon } from '@material-symbols/svg-600/outlined/edit.svg'; import Toggle from 'react-toggle'; +import AddPhotoAlternateIcon from '@/material-icons/400-24px/add_photo_alternate.svg?react'; +import EditIcon from '@/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 adc0f9cba3672f..32a86ab6cc0724 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 { ReactComponent as ArrowRightAltIcon } from '@material-symbols/svg-600/outlined/arrow_right_alt.svg'; -import { ReactComponent as ContentCopyIcon } from '@material-symbols/svg-600/outlined/content_copy.svg'; import SwipeableViews from 'react-swipeable-views'; +import ArrowRightAltIcon from '@/material-icons/400-24px/arrow_right_alt.svg?react'; +import ContentCopyIcon from '@/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 ed86d19f5c0a1b..8dfbf54cb649d6 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 { ReactComponent as OpenInNewIcon } from '@material-symbols/svg-600/outlined/open_in_new.svg'; -import { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; -import { ReactComponent as ReplyIcon } from '@material-symbols/svg-600/outlined/reply.svg'; -import { ReactComponent as ReplyAllIcon } from '@material-symbols/svg-600/outlined/reply_all.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star.svg'; - +import OpenInNewIcon from '@/material-icons/400-24px/open_in_new.svg?react'; +import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; +import ReplyIcon from '@/material-icons/400-24px/reply.svg?react'; +import ReplyAllIcon from '@/material-icons/400-24px/reply_all.svg?react'; +import StarIcon from '@/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 80a13bd2e35b81..31073d7387c9bc 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 { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; - +import CloseIcon from '@/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 82398ccda93ab0..921e9a60721923 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 { ReactComponent as PushPinIcon } from '@material-symbols/svg-600/outlined/push_pin.svg'; - +import PushPinIcon from '@/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 09a9f6821f4aa0..3601dfeae80a12 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 { ReactComponent as PublicIcon } from '@material-symbols/svg-600/outlined/public.svg'; - +import PublicIcon from '@/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 be17668418e09f..3d1fc94cb78d3b 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 { ReactComponent as RefreshIcon } from '@material-symbols/svg-600/outlined/refresh.svg'; import { debounce } from 'lodash'; +import RefreshIcon from '@/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 b3602219f5be9b..7aa0dd1379740c 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 { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/done.svg'; - +import CheckIcon from '@/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 663bce74319004..4cb06aac2cfe7b 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.jsx +++ b/app/javascript/mastodon/features/status/components/action_bar.jsx @@ -9,17 +9,16 @@ import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import { ReactComponent as BookmarkIcon } from '@material-symbols/svg-600/outlined/bookmark-fill.svg'; -import { ReactComponent as BookmarkBorderIcon } from '@material-symbols/svg-600/outlined/bookmark.svg'; -import { ReactComponent as MoreHorizIcon } from '@material-symbols/svg-600/outlined/more_horiz.svg'; -import { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; -import { ReactComponent as ReplyIcon } from '@material-symbols/svg-600/outlined/reply.svg'; -import { ReactComponent as ReplyAllIcon } from '@material-symbols/svg-600/outlined/reply_all.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star-fill.svg'; -import { ReactComponent as StarBorderIcon } from '@material-symbols/svg-600/outlined/star.svg'; - -import { ReactComponent as RepeatDisabledIcon } from 'mastodon/../svg-icons/repeat_disabled.svg'; -import { ReactComponent as RepeatPrivateIcon } from 'mastodon/../svg-icons/repeat_private.svg'; +import BookmarkIcon from '@/material-icons/400-24px/bookmark-fill.svg?react'; +import BookmarkBorderIcon from '@/material-icons/400-24px/bookmark.svg?react'; +import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; +import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; +import ReplyIcon from '@/material-icons/400-24px/reply.svg?react'; +import ReplyAllIcon from '@/material-icons/400-24px/reply_all.svg?react'; +import StarIcon from '@/material-icons/400-24px/star-fill.svg?react'; +import StarBorderIcon from '@/material-icons/400-24px/star.svg?react'; +import RepeatDisabledIcon from '@/svg-icons/repeat_disabled.svg?react'; +import RepeatPrivateIcon from '@/svg-icons/repeat_private.svg?react'; import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_FEDERATION } from 'mastodon/permissions'; import { WithRouterPropTypes } from 'mastodon/utils/react_router'; diff --git a/app/javascript/mastodon/features/status/components/card.jsx b/app/javascript/mastodon/features/status/components/card.jsx index d7d688952d6405..f37b558c4cd50e 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 { ReactComponent as DescriptionIcon } from '@material-symbols/svg-600/outlined/description-fill.svg'; -import { ReactComponent as OpenInNewIcon } from '@material-symbols/svg-600/outlined/open_in_new.svg'; -import { ReactComponent as PlayArrowIcon } from '@material-symbols/svg-600/outlined/play_arrow-fill.svg'; - +import DescriptionIcon from '@/material-icons/400-24px/description-fill.svg?react'; +import OpenInNewIcon from '@/material-icons/400-24px/open_in_new.svg?react'; +import PlayArrowIcon from '@/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 d8d9559127d251..437e9e86bff294 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 { ReactComponent as AlternateEmailIcon } from '@material-symbols/svg-600/outlined/alternate_email.svg'; -import { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star-fill.svg'; - +import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?react'; +import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; +import StarIcon from '@/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 38324897648187..a3034bb5707180 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 { ReactComponent as VisibilityIcon } from '@material-symbols/svg-600/outlined/visibility.svg'; -import { ReactComponent as VisibilityOffIcon } from '@material-symbols/svg-600/outlined/visibility_off.svg'; import { HotKeys } from 'react-hotkeys'; +import VisibilityIcon from '@/material-icons/400-24px/visibility.svg?react'; +import VisibilityOffIcon from '@/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 ac34f7986cb4c6..0531346f91dad0 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 { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; - +import CloseIcon from '@/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 c6fa8ce363c40f..3b3e1e3f97d4de 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 { ReactComponent as RepeatIcon } from '@material-symbols/svg-600/outlined/repeat.svg'; - +import RepeatIcon from '@/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 44165f14177422..d1c9e368838719 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 { ReactComponent as RefreshIcon } from '@material-symbols/svg-600/outlined/refresh.svg'; +import RefreshIcon from '@/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 413c5069f16b0e..4227c741317ffd 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 { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; import escapeTextContentForBrowser from 'escape-html'; +import CloseIcon from '@/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 e5c0b5cae9fc7b..a4e5fc9dfb3449 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 { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; - +import CloseIcon from '@/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 d90edddec4d5a6..477575bd7b3ece 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 { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; - +import CloseIcon from '@/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 91dca26718ac18..25ad1e2e9ff05c 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 { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; 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 '@/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 314b2a2652f6de..4aa009263150cd 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 { ReactComponent as PersonAddIcon } from '@material-symbols/svg-600/outlined/person_add.svg'; - +import PersonAddIcon from '@/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 150647ffb3c796..2f8636b12a0e99 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 { ReactComponent as SearchIcon } from '@material-symbols/svg-600/outlined/search.svg'; - +import SearchIcon from '@/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 c534bf16362ba7..f08ce15342e061 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 { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; - +import CloseIcon from '@/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 ff600730a0e04b..fec21f14ca15c8 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 { ReactComponent as ListAltIcon } from '@material-symbols/svg-600/outlined/list_alt.svg'; - +import ListAltIcon from '@/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 8c06a965311ddd..0f6e8a727bea3f 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 { ReactComponent as ChevronLeftIcon } from '@material-symbols/svg-600/outlined/chevron_left.svg'; -import { ReactComponent as ChevronRightIcon } from '@material-symbols/svg-600/outlined/chevron_right.svg'; -import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; import ReactSwipeableViews from 'react-swipeable-views'; +import ChevronLeftIcon from '@/material-icons/400-24px/chevron_left.svg?react'; +import ChevronRightIcon from '@/material-icons/400-24px/chevron_right.svg?react'; +import CloseIcon from '@/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 d1b2a0910b3e2f..d3f46c6d466317 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 { ReactComponent as AlternateEmailIcon } from '@material-symbols/svg-600/outlined/alternate_email.svg'; -import { ReactComponent as BookmarksIcon } from '@material-symbols/svg-600/outlined/bookmarks-fill.svg'; -import { ReactComponent as HomeIcon } from '@material-symbols/svg-600/outlined/home-fill.svg'; -import { ReactComponent as ListAltIcon } from '@material-symbols/svg-600/outlined/list_alt.svg'; -import { ReactComponent as MoreHorizIcon } from '@material-symbols/svg-600/outlined/more_horiz.svg'; -import { ReactComponent as PublicIcon } from '@material-symbols/svg-600/outlined/public.svg'; -import { ReactComponent as SearchIcon } from '@material-symbols/svg-600/outlined/search.svg'; -import { ReactComponent as SettingsIcon } from '@material-symbols/svg-600/outlined/settings-fill.svg'; -import { ReactComponent as StarIcon } from '@material-symbols/svg-600/outlined/star-fill.svg'; -import { ReactComponent as TagIcon } from '@material-symbols/svg-600/outlined/tag.svg'; - +import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?react'; +import BookmarksIcon from '@/material-icons/400-24px/bookmarks-fill.svg?react'; +import HomeIcon from '@/material-icons/400-24px/home-fill.svg?react'; +import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react'; +import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; +import PublicIcon from '@/material-icons/400-24px/public.svg?react'; +import SearchIcon from '@/material-icons/400-24px/search.svg?react'; +import SettingsIcon from '@/material-icons/400-24px/settings-fill.svg?react'; +import StarIcon from '@/material-icons/400-24px/star-fill.svg?react'; +import TagIcon from '@/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 b3e9950e93ffbd..7d59d616d83003 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 { ReactComponent as NotificationsIcon } from '@material-symbols/svg-600/outlined/notifications-fill.svg'; - +import NotificationsIcon from '@/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 3fd8ff127d8789..6584364609522c 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 { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg'; - +import CloseIcon from '@/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 5e71da9d9687be..272a3cff009186 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 { ReactComponent as FullscreenExitIcon } from '@material-symbols/svg-600/outlined/fullscreen_exit.svg'; -import { ReactComponent as RectangleIcon } from '@material-symbols/svg-600/outlined/rectangle.svg'; - +import FullscreenExitIcon from '@/material-icons/400-24px/fullscreen_exit.svg?react'; +import RectangleIcon from '@/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 e908715e911cc5..89a8ba560a0e85 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 { ReactComponent as FullscreenIcon } from '@material-symbols/svg-600/outlined/fullscreen.svg'; -import { ReactComponent as FullscreenExitIcon } from '@material-symbols/svg-600/outlined/fullscreen_exit.svg'; -import { ReactComponent as PauseIcon } from '@material-symbols/svg-600/outlined/pause.svg'; -import { ReactComponent as PlayArrowIcon } from '@material-symbols/svg-600/outlined/play_arrow-fill.svg'; -import { ReactComponent as RectangleIcon } from '@material-symbols/svg-600/outlined/rectangle.svg'; -import { ReactComponent as VisibilityOffIcon } from '@material-symbols/svg-600/outlined/visibility_off.svg'; -import { ReactComponent as VolumeOffIcon } from '@material-symbols/svg-600/outlined/volume_off-fill.svg'; -import { ReactComponent as VolumeUpIcon } from '@material-symbols/svg-600/outlined/volume_up-fill.svg'; import { throttle } from 'lodash'; +import FullscreenIcon from '@/material-icons/400-24px/fullscreen.svg?react'; +import FullscreenExitIcon from '@/material-icons/400-24px/fullscreen_exit.svg?react'; +import PauseIcon from '@/material-icons/400-24px/pause.svg?react'; +import PlayArrowIcon from '@/material-icons/400-24px/play_arrow-fill.svg?react'; +import RectangleIcon from '@/material-icons/400-24px/rectangle.svg?react'; +import VisibilityOffIcon from '@/material-icons/400-24px/visibility_off.svg?react'; +import VolumeOffIcon from '@/material-icons/400-24px/volume_off-fill.svg?react'; +import VolumeUpIcon from '@/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 c4238edcd4000d..4b555c4829c94e 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/de.json b/app/javascript/mastodon/locales/de.json index 2608b91563ff3a..462352750c35c2 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -489,7 +489,7 @@ "onboarding.profile.lead": "Du kannst das später in den Einstellungen vervollständigen, wo noch mehr Anpassungsmöglichkeiten zur Verfügung stehen.", "onboarding.profile.note": "Über mich", "onboarding.profile.note_hint": "Du kannst andere @Profile erwähnen oder #Hashtags verwenden …", - "onboarding.profile.save_and_continue": "Speichern und fortsetzen", + "onboarding.profile.save_and_continue": "Speichern und fortfahren", "onboarding.profile.title": "Profil einrichten", "onboarding.profile.upload_avatar": "Profilbild hochladen", "onboarding.profile.upload_header": "Titelbild hochladen", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 76d7c1d3812f89..412159bef9b7b7 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 00000000000000..1bf9d57a31a82e --- /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 00000000000000..ce59194be0b8ef --- /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 00000000000000..f8bc9309ceb699 --- /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 00000000000000..f8bc9309ceb699 --- /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 00000000000000..deb3f8e0d970d9 --- /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 00000000000000..0ae8ad841cfe37 --- /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 00000000000000..7648cf9755e9a2 --- /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 00000000000000..7648cf9755e9a2 --- /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 00000000000000..cba0c8b2a8d739 --- /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 00000000000000..cba0c8b2a8d739 --- /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 00000000000000..48c72546df140d --- /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 00000000000000..48c72546df140d --- /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 00000000000000..4bf73bb6daf9f6 --- /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 00000000000000..4bf73bb6daf9f6 --- /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/attach_file-fill.svg b/app/javascript/material-icons/400-24px/attach_file-fill.svg new file mode 100644 index 00000000000000..e719e8fd06c04d --- /dev/null +++ b/app/javascript/material-icons/400-24px/attach_file-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/attach_file.svg b/app/javascript/material-icons/400-24px/attach_file.svg new file mode 100644 index 00000000000000..e719e8fd06c04d --- /dev/null +++ b/app/javascript/material-icons/400-24px/attach_file.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 00000000000000..20e9889ae8006c --- /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 00000000000000..20e9889ae8006c --- /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 00000000000000..3a7b4d2e8b3b49 --- /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 00000000000000..a8226a6d87badb --- /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 00000000000000..f5231f925a273b --- /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 00000000000000..67dffd6857fcbc --- /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/brush-fill.svg b/app/javascript/material-icons/400-24px/brush-fill.svg new file mode 100644 index 00000000000000..f92d77ab3219f3 --- /dev/null +++ b/app/javascript/material-icons/400-24px/brush-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/brush.svg b/app/javascript/material-icons/400-24px/brush.svg new file mode 100644 index 00000000000000..d583fce54d401d --- /dev/null +++ b/app/javascript/material-icons/400-24px/brush.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 00000000000000..3df7275bf69c65 --- /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 00000000000000..a6d893fed46832 --- /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 00000000000000..f7d476f253735a --- /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 00000000000000..8504fbfdad0155 --- /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 00000000000000..8e8e6a1ee62169 --- /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 00000000000000..c0da419cd065c4 --- /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/chat-fill.svg b/app/javascript/material-icons/400-24px/chat-fill.svg new file mode 100644 index 00000000000000..3a74e02f16d015 --- /dev/null +++ b/app/javascript/material-icons/400-24px/chat-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/chat.svg b/app/javascript/material-icons/400-24px/chat.svg new file mode 100644 index 00000000000000..4d910a87f11889 --- /dev/null +++ b/app/javascript/material-icons/400-24px/chat.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 00000000000000..1655d12bf37e32 --- /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 00000000000000..1655d12bf37e32 --- /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 00000000000000..3f7df315a50d51 --- /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 00000000000000..3f7df315a50d51 --- /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 00000000000000..53783746ae6c81 --- /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 00000000000000..53783746ae6c81 --- /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 00000000000000..41004673651a63 --- /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 00000000000000..41004673651a63 --- /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 00000000000000..5a60c58e77bd20 --- /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 00000000000000..5a60c58e77bd20 --- /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/code-fill.svg b/app/javascript/material-icons/400-24px/code-fill.svg new file mode 100644 index 00000000000000..8ef5c55cd48598 --- /dev/null +++ b/app/javascript/material-icons/400-24px/code-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/code.svg b/app/javascript/material-icons/400-24px/code.svg new file mode 100644 index 00000000000000..8ef5c55cd48598 --- /dev/null +++ b/app/javascript/material-icons/400-24px/code.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 00000000000000..dabf0945034edb --- /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 00000000000000..d875c84491f4b2 --- /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 00000000000000..59d1abb8bcdaed --- /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 00000000000000..560d174b9b0f06 --- /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 00000000000000..40fe4497f51b99 --- /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 00000000000000..763f517d1d8deb --- /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 00000000000000..07998b29d6125e --- /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 00000000000000..309a4f5b382c60 --- /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 00000000000000..1655d12bf37e32 --- /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 00000000000000..1655d12bf37e32 --- /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 00000000000000..8f05228c40abd5 --- /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 00000000000000..8f05228c40abd5 --- /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 00000000000000..6a171ea82267d0 --- /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 00000000000000..6a171ea82267d0 --- /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 00000000000000..278e79978e758a --- /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 00000000000000..cb81b1130264a2 --- /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 00000000000000..b18db1df8ead63 --- /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 00000000000000..cf7e98405adae9 --- /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_less-fill.svg b/app/javascript/material-icons/400-24px/expand_less-fill.svg new file mode 100644 index 00000000000000..453729655d349a --- /dev/null +++ b/app/javascript/material-icons/400-24px/expand_less-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/expand_less.svg b/app/javascript/material-icons/400-24px/expand_less.svg new file mode 100644 index 00000000000000..453729655d349a --- /dev/null +++ b/app/javascript/material-icons/400-24px/expand_less.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 00000000000000..0c8f273596051f --- /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 00000000000000..0c8f273596051f --- /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 00000000000000..146f838a278417 --- /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 00000000000000..f21c2786cab932 --- /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 00000000000000..e44a94d90bc47b --- /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 00000000000000..cb4c810e08a5e5 --- /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/forum-fill.svg b/app/javascript/material-icons/400-24px/forum-fill.svg new file mode 100644 index 00000000000000..2459058aa3f5f0 --- /dev/null +++ b/app/javascript/material-icons/400-24px/forum-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/forum.svg b/app/javascript/material-icons/400-24px/forum.svg new file mode 100644 index 00000000000000..6f5d8d7a4d3dde --- /dev/null +++ b/app/javascript/material-icons/400-24px/forum.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 00000000000000..940c878a7d3b10 --- /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 00000000000000..940c878a7d3b10 --- /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 00000000000000..d9d45a6c6ac930 --- /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 00000000000000..d9d45a6c6ac930 --- /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 00000000000000..c0d6cef5c555ad --- /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 00000000000000..dbc2c937e4c4f0 --- /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 00000000000000..e25441638048b7 --- /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 00000000000000..d700ddea7baf8a --- /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/image-fill.svg b/app/javascript/material-icons/400-24px/image-fill.svg new file mode 100644 index 00000000000000..ba28ad35340f3e --- /dev/null +++ b/app/javascript/material-icons/400-24px/image-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/image.svg b/app/javascript/material-icons/400-24px/image.svg new file mode 100644 index 00000000000000..0e7c11d4028843 --- /dev/null +++ b/app/javascript/material-icons/400-24px/image.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 00000000000000..0232e17ad0a438 --- /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 00000000000000..05606f4e59e3de --- /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 00000000000000..12d137ca893540 --- /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 00000000000000..4f2a10be597a20 --- /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 00000000000000..319a0681c4f139 --- /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 00000000000000..319a0681c4f139 --- /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 00000000000000..6aa8b508236b31 --- /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 00000000000000..cca8ab195554a9 --- /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 00000000000000..0815d784181ce1 --- /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 00000000000000..20b9e3984ec95a --- /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 00000000000000..60309dce5e731c --- /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 00000000000000..824c70b7c45aea --- /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 00000000000000..4881453501600f --- /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 00000000000000..4881453501600f --- /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/mail-fill.svg b/app/javascript/material-icons/400-24px/mail-fill.svg new file mode 100644 index 00000000000000..5e7e4a2fb246b3 --- /dev/null +++ b/app/javascript/material-icons/400-24px/mail-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/mail.svg b/app/javascript/material-icons/400-24px/mail.svg new file mode 100644 index 00000000000000..15e1d12d4e1a21 --- /dev/null +++ b/app/javascript/material-icons/400-24px/mail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/manufacturing-fill.svg b/app/javascript/material-icons/400-24px/manufacturing-fill.svg new file mode 100644 index 00000000000000..f19180759c0df3 --- /dev/null +++ b/app/javascript/material-icons/400-24px/manufacturing-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/manufacturing.svg b/app/javascript/material-icons/400-24px/manufacturing.svg new file mode 100644 index 00000000000000..f19180759c0df3 --- /dev/null +++ b/app/javascript/material-icons/400-24px/manufacturing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/markdown-fill.svg b/app/javascript/material-icons/400-24px/markdown-fill.svg new file mode 100644 index 00000000000000..18a06705183c82 --- /dev/null +++ b/app/javascript/material-icons/400-24px/markdown-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/markdown.svg b/app/javascript/material-icons/400-24px/markdown.svg new file mode 100644 index 00000000000000..3396c2f99a4e20 --- /dev/null +++ b/app/javascript/material-icons/400-24px/markdown.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 00000000000000..2f427e91c893dc --- /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 00000000000000..2f427e91c893dc --- /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 00000000000000..e777154892a1df --- /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 00000000000000..e777154892a1df --- /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/movie-fill.svg b/app/javascript/material-icons/400-24px/movie-fill.svg new file mode 100644 index 00000000000000..d2954089585530 --- /dev/null +++ b/app/javascript/material-icons/400-24px/movie-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/movie.svg b/app/javascript/material-icons/400-24px/movie.svg new file mode 100644 index 00000000000000..e98fa484736834 --- /dev/null +++ b/app/javascript/material-icons/400-24px/movie.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 00000000000000..b10ad1921ad5b3 --- /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 00000000000000..b10ad1921ad5b3 --- /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 00000000000000..0730efefca145f --- /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 00000000000000..dbfe0e04091612 --- /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 00000000000000..856a0ed8a5e4f2 --- /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 00000000000000..1389a10e0aca1e --- /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 00000000000000..42895ffd1376f5 --- /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 00000000000000..42895ffd1376f5 --- /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 00000000000000..fc9a8074de0186 --- /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 00000000000000..95bc792fc3368f --- /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 00000000000000..73ef1efc1040ac --- /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 00000000000000..a3f6b246c83140 --- /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 00000000000000..3fa7f65288b965 --- /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 00000000000000..39b592bf04edea --- /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/person_check-fill.svg b/app/javascript/material-icons/400-24px/person_check-fill.svg new file mode 100644 index 00000000000000..21d91f1933a972 --- /dev/null +++ b/app/javascript/material-icons/400-24px/person_check-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/person_check.svg b/app/javascript/material-icons/400-24px/person_check.svg new file mode 100644 index 00000000000000..fbe013ac7b1f44 --- /dev/null +++ b/app/javascript/material-icons/400-24px/person_check.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 00000000000000..6465b9022234a0 --- /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 00000000000000..52f0fcc9c4c9f3 --- /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 00000000000000..1e9e79de4db6c1 --- /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 00000000000000..1e9e79de4db6c1 --- /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 00000000000000..6095ba77eeb447 --- /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 00000000000000..e1abd900a7d930 --- /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 00000000000000..64b038f2685076 --- /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 00000000000000..ada92f2cf55c13 --- /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 00000000000000..a7a6bc801bd08b --- /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 00000000000000..a7a6bc801bd08b --- /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 00000000000000..c1b09d80262e9e --- /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 00000000000000..c1b09d80262e9e --- /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 00000000000000..eb661f2823a560 --- /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 00000000000000..eb661f2823a560 --- /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 00000000000000..74c9573eaf7cbd --- /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 00000000000000..74c9573eaf7cbd --- /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 00000000000000..ef0d0521eb034c --- /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 00000000000000..ef0d0521eb034c --- /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 00000000000000..f1334795028828 --- /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 00000000000000..817c782f0591e4 --- /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 00000000000000..5a6b0d0a8dd7d9 --- /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 00000000000000..6876cd42dad667 --- /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 00000000000000..df417f5ff7c4c3 --- /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 00000000000000..b84efc73b18ae4 --- /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 00000000000000..cb2231e63436ba --- /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 00000000000000..1736e085d0683a --- /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 00000000000000..ce76d537b32070 --- /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 00000000000000..ce76d537b32070 --- /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/trip-fill.svg b/app/javascript/material-icons/400-24px/trip-fill.svg new file mode 100644 index 00000000000000..97c8c46dad68e4 --- /dev/null +++ b/app/javascript/material-icons/400-24px/trip-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/trip.svg b/app/javascript/material-icons/400-24px/trip.svg new file mode 100644 index 00000000000000..f158a738c60c12 --- /dev/null +++ b/app/javascript/material-icons/400-24px/trip.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 00000000000000..887f8bd498ad68 --- /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 00000000000000..887f8bd498ad68 --- /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 00000000000000..639d77af369316 --- /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 00000000000000..40ce5b65e5c9d7 --- /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 00000000000000..44b5f4c6061bd3 --- /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 00000000000000..8fe45d09af6004 --- /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 00000000000000..e21fbd88dfe594 --- /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 00000000000000..d98cf8d942c86a --- /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 00000000000000..b3d12d4d98c880 --- /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 00000000000000..a0acf63747aff3 --- /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 00000000000000..dd5771215e0421 --- /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 00000000000000..fd9006a6d27d3b --- /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 00000000000000..d645695673349e --- /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 00000000000000..1479cb225524d0 --- /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/fonts/inter.scss b/app/javascript/styles/fonts/inter.scss new file mode 100644 index 00000000000000..bb4899b701efd3 --- /dev/null +++ b/app/javascript/styles/fonts/inter.scss @@ -0,0 +1,8 @@ +@font-face { + font-family: Inter; + src: url('../fonts/inter/inter-variable-font-slnt-wght.woff2') + format('woff2-variations'); + font-weight: 100 900; + font-style: normal; + mso-generic-font-family: swiss; /* stylelint-disable-line property-no-unknown -- Proprietary property for Outlook on Windows. */ +} diff --git a/public/inert.css b/app/javascript/styles/inert.scss similarity index 78% rename from public/inert.css rename to app/javascript/styles/inert.scss index 54e10616d2e22f..a60045d7be80b2 100644 --- a/public/inert.css +++ b/app/javascript/styles/inert.scss @@ -1,3 +1,5 @@ +/* This is needed for the wicg-inert polyfill */ + [inert] { pointer-events: none; cursor: default; diff --git a/app/javascript/styles/mailer.scss b/app/javascript/styles/mailer.scss index 92d00cae8b14e1..6d0168969e79ee 100644 --- a/app/javascript/styles/mailer.scss +++ b/app/javascript/styles/mailer.scss @@ -1,574 +1,534 @@ -@import 'mastodon/variables'; -@import 'fonts/roboto'; +@import 'fonts/inter'; -table, -td, -div { - box-sizing: border-box; -} - -html, body { - width: 100% !important; - min-width: 100%; + accent-color: #6364ff; + word-break: break-word; margin: 0; + background-color: #f3f2f5; padding: 0; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: none; + text-size-adjust: none; } -.email-body { - td, - div, - a, - span { - line-height: inherit; - } -} - -a { - &, - &:visited, - span { - text-decoration: none; - color: $ui-highlight-color; - } - - #outlook & { - padding: 0; - } +p, +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + background-color: transparent; + padding: 0; + border: none; + font-family: Inter, 'Lucida Grande', sans-serif; } img { - outline: none; - border: 0; - text-decoration: none; - -ms-interpolation-mode: bicubic; - clear: both; - line-height: 100%; + max-width: 100%; + height: auto; + border: none; + text-indent: 0; + vertical-align: middle; + color: inherit; + font-family: inherit; } table { - border-spacing: 0; - mso-table-lspace: 0; - mso-table-rspace: 0; + border: none; } -td { - vertical-align: top; +table + p { + margin-top: 16px; } -.auto-dir { - p { - unicode-bidi: plaintext; - } +.email { + min-width: 280px; + font-family: Inter, 'Lucida Grande', sans-serif; + word-break: break-word; + color: #17063b; + background-color: #f3f2f5; +} - a { - unicode-bidi: isolate; - } +.email-container { + max-width: 740px; + margin: 0 auto; + width: 100%; } -.email-table, -.content-section, -.column, -.column-cell { +// Outer email card +.email-card-table { + border-collapse: collapse; width: 100%; - min-width: 100%; } -.email-body { - font-size: 0 !important; - line-height: 100%; - text-align: center; - padding-left: 16px; - padding-right: 16px; +.email-card-td { + overflow: hidden; + box-shadow: 0 4px 16px 0 rgba(23, 6, 59, 4%); + background-color: #fff; } -.email-start { - padding-top: 32px; +// Inner email card +.email-inner-card-table { + border-collapse: separate; + width: 100%; + border-radius: 12px; } -.email-end { - padding-bottom: 32px; +.email-inner-card-td-without-padding, +.email-inner-card-td { + border-radius: 12px; + overflow: hidden; + box-shadow: 0 4px 16px 0 rgba(23, 6, 59, 8%); + background-color: #fff; + border: 1px solid #dfdee3; } -.email-body, -html, -body { - background-color: lighten($ui-base-color, 4%); -} - -.email-container, -.email-row, -.col-0, -.col-1, -.col-2, -.col-3, -.col-4, -.col-5, -.col-6 { - font-size: 0; - display: inline-block; - width: 100%; - min-width: 100%; - min-width: 0 !important; - vertical-align: top; +.email-inner-card-td { + padding: 24px; } -.content-cell { +// Utility classes +.email-w-full { width: 100%; - min-width: 100%; - min-width: 0 !important; } -.column-cell { - padding-top: 16px; - padding-bottom: 16px; - vertical-align: top; - - &.button-cell { - padding-top: 0; - } -} +.email-prose { + p { + color: #17063b; + font-size: 14px; + line-height: 20px; -.email-container { - max-width: 632px; - margin: 0 auto; - text-align: center; -} + &:not(:last-child) { + margin-bottom: 16px; + } -.email-row { - display: block; - max-width: 600px !important; - margin: 0 auto; - text-align: center; - clear: both; -} + a:not([class]) { + color: #6364ff; + text-decoration: none; -.col-0 { - max-width: 50px; + &:hover { + color: #563acc !important; + } + } + } } -.col-1 { - max-width: 100px; +.email-padding-24 { + padding: 24px; } -.col-2 { - max-width: 200px; +.email-padding-top-24 { + padding-top: 24px; } -.col-3 { - max-width: 300px; +.email-border-top { + border-top: 1px solid #dfdee3; } -.col-4 { - max-width: 400px; +.email-border-bottom { + border-bottom: 1px solid #dfdee3; } -.col-5 { - max-width: 500px; +// Header +.email-header-td { + padding: 16px 32px; + background-color: #1b001f; + background-image: url('../images/mailer-new/common/header-bg-start.png'); + background-position: left top; + background-repeat: repeat; } -.col-6 { - max-width: 600px; +.email-header-logo-table { + width: auto; + margin: 0; } -.column-cell, -.column-cell td, -p { - font-family: Helvetica, Arial, sans-serif; +.email-header-logo-td { + padding: 16px 0; + font-size: 0; - @media only screen { - font-family: $font-sans-serif, sans-serif !important; + img { + color: #fff; + font-size: 16px; + font-weight: bold; + max-height: 40px; } } -.email-body .column-cell, -.column-cell, -p { - font-size: 15px; - line-height: 23px; - color: $ui-primary-color; - mso-line-height-rule: exactly; - text-rendering: optimizelegibility; -} - -p { - display: block; - margin-top: 0; - margin-bottom: 16px; - - &.small { - font-size: 13px; - } +.email-header-logo-a { + display: inline-block; - &.lead { - font-size: 19px; - line-height: 27px; + img { + display: inline-block; + color: #fff; } } -h1, -h2, -h3, -h4, -h5, -h6 { - color: $ui-secondary-color; - margin-left: 0; - margin-right: 0; - margin-top: 20px; - margin-bottom: 8px; - padding: 0; - font-weight: 500; +.email-header-logo-div { + max-height: 0; } -h1 { - font-size: 26px; - line-height: 36px; +.email-header-logo-p { + word-break: break-all; + padding-left: 40px; + padding-top: 26px; + font-size: 11px; + line-height: 13px; + color: #8d808f; + text-align: left; } -h2 { - font-size: 23px; - line-height: 30px; -} - -h3 { - font-size: 19px; - line-height: 25px; +.email-header-logo-span { + display: block; + text-align: right; } -h5 { - font-size: 16px; - line-height: 21px; - font-weight: 700; - color: lighten($ui-base-color, 34%); +.email-header-heading-td { + padding: 16px 0; } -.input-cell { - h5 { - margin-top: 4px; - } -} +.email-header-heading-img-td { + width: 56px; + text-align: left; + vertical-align: top; -.input { - td { - background: darken($ui-base-color, 8%); - border-radius: 4px; - padding: 16px; - line-height: 20px; - mso-line-height-rule: exactly; - text-align: center; - font-weight: 500; - font-size: 17px; + img { + width: 56px; + height: 56px; + border-radius: 12px; } } -.content-cell, -.blank-cell { - width: 100%; - font-size: 0; - text-align: center; - vertical-align: top; +.email-header-heading-txt-td { + vertical-align: middle; padding-left: 16px; padding-right: 16px; -} -.content-cell { - background-color: darken($ui-base-color, 4%); - - &.darker { - background-color: darken($ui-base-color, 8%); + h1 { + margin-bottom: 5px; + color: #fff; + font-size: 24px; + line-height: 28px; + font-weight: 600; } -} -.hero { - background-color: $ui-base-color; - padding-top: 20px; -} - -.hero-with-button { - padding-bottom: 16px; - - h1 { - margin-bottom: 4px; + p { + color: #a399a5; + font-size: 18px; + line-height: 21.6px; + font-weight: 500; } - p.lead { - margin-bottom: 32px; + &:only-child { + padding-left: 0; + padding-right: 0; } } -.header { - border-radius: 5px 5px 0 0; - background-color: darken($ui-base-color, 8%); +// To make the design work with images off +// we create an empty div that overlaps with +// the rest of the content with a dark background. +.email-header-after-div { + max-height: 0; +} - .column-cell { - text-align: center; - padding-top: 20px; - padding-bottom: 8px; - } +.email-header-after-inside-div { + height: 30px; + background-color: #1b001f; } -.content-start { - padding-top: 32px; +// Body content +.email-body-td { + background-image: url('../images/mailer-new/common/header-bg-end.png'); + background-position: left top; + background-repeat: no-repeat; } -.content-end { - border-radius: 0 0 5px 5px; - padding-top: 16px; +.email-body-padding-td { + padding: 0 32px 32px; + mso-padding-alt: 32px; } -.footer { - .column-cell, - p { - color: lighten($ui-base-color, 34%); - } +.email-body-padding-td { + & > p { + font-size: 14px; + line-height: 20px; + color: #17063b; - p { - margin-bottom: 0; - font-size: 13px; + a { + color: #6364ff; + text-decoration: none; - &.small { - margin-bottom: 0; + &:hover { + color: #563acc !important; + } } } - - a { - color: lighten($ui-base-color, 34%); - text-decoration: underline; - } - - img { - opacity: 0.3; - } } -.logo { - position: relative; - left: -4px; +// Footer +.email-footer-td { + padding: 28px 32px 32px; + text-align: center; } -.button { - display: table; - margin-left: auto; - margin-right: auto; +.email-footer-logo-a { + display: inline-block; +} - td { - line-height: 20px; - mso-line-height-rule: exactly; - border-radius: 4px; - text-align: center; - font-weight: 500; - font-size: 17px; - padding: 0 !important; - - a, - a span { - color: $primary-text-color; - display: block !important; - text-align: center !important; - vertical-align: top !important; - line-height: inherit !important; - } +.email-footer-p { + color: #9b94ab; + text-align: center; + font-size: 12px; + line-height: 20px; - a { - padding: 10px 22px !important; - line-height: 26px !important; - font-weight: 500 !important; - } + a { + color: #9b94ab; + text-decoration: underline; } - &.button-small { - td { - border-radius: 4px; - font-size: 14px; - padding: 8px 16px; - - a { - padding: 5px 16px !important; - line-height: 26px !important; - } - } + &:first-child { + margin-bottom: 12px; } } -.button-default { - background-color: darken($ui-base-color, 8%); +// Button +.email-btn-table { + margin: 0; + max-width: 100%; + border-collapse: separate; + border-radius: 8px; + background-color: #6364ff; } -.button-primary { - background-color: darken($ui-highlight-color, 3%); +.email-btn-td { + height: 40px; + text-align: center; + mso-padding-alt: 0 35px; } -.text-center { +.email-btn-a { + display: block; + border-radius: 8px; + padding-left: 35px; + padding-right: 35px; + padding-top: 10px; + padding-bottom: 10px; text-align: center; + font-family: Inter, 'Lucida Grande', sans-serif; + font-size: 14px; + font-weight: 600; + line-height: 20px; + color: #fff; + text-decoration: none; + transition: background-color 0.3s ease-in-out; } -.text-right { - text-align: right; +// Status +.email-status-header-img { + vertical-align: top; + width: 48px; + + img { + width: 48px; + height: 48px; + border-radius: 8px; + overflow: hidden; + } } -.padded { +.email-status-header-text { padding-left: 16px; padding-right: 16px; + vertical-align: middle; } -.padded-bottom { - padding-bottom: 32px; +.email-status-header-name { + font-size: 16px; + font-weight: 600; + line-height: 24px; + color: #17063b; } -.margin-bottom { - margin-bottom: 20px; +.email-status-header-handle { + font-size: 14px; + line-height: 20px; + color: #746a89; } -.hero-icon { - width: 64px; +.email-status-content { + padding-top: 24px; +} - td { - text-align: center; - vertical-align: middle; - line-height: 100%; - mso-line-height-rule: exactly; - padding: 16px; - border-radius: 80px; - background: $success-green; - } +.email-status-spoiler { + color: #746a89; + font-style: italic; + margin-bottom: 8px; +} - &.warning-icon td { - background: $gold-star; +.email-status-prose { + p { + font-size: 14px; + line-height: 20px; + color: #17063b; } - &.alert-icon td { - background: $error-red; + a { + color: #6364ff; + text-decoration: none; + + &:hover { + color: #563acc !important; + } } +} + +.email-status-media { + margin-top: 16px; + font-size: 14px; + line-height: 20px; + color: #17063b; img { - max-width: 32px; - width: 32px; - height: 32px; - display: block; - line-height: 100%; + border-radius: 8px; } -} -.hr { - width: 100%; + a { + color: #6364ff; + text-decoration: none; - td { - font-size: 0; - line-height: 1px; - mso-line-height-rule: exactly; - min-height: 1px; - overflow: hidden; - height: 2px; - background-color: transparent !important; - border-top: 1px solid lighten($ui-base-color, 8%); + &:hover { + color: #563acc !important; + } } } -.status { - padding-bottom: 32px; +.email-status-footer { + margin-top: 16px; + font-size: 12px; + line-height: 16px; + color: #746a89; - &--highlighted { - border: 1px solid lighten($ui-base-color, 8%); - border-radius: 4px; - padding-bottom: 16px; - margin-bottom: 16px; + a { + color: #746a89; } - .status-header { - td { - font-size: 14px; - padding-bottom: 15px; - } + a:hover { + color: #746a89 !important; + text-decoration: underline !important; + } +} - bdi { - color: $white; - font-size: 16px; - display: block; - font-weight: 500; - } +// Purple frame for emphasis +.email-frame-table { + background-color: #efefff; + border-radius: 8px; +} - td:first-child { - padding-right: 10px; - } +.email-frame-td { + padding: 16px; +} - img { - width: 48px; - height: 48px; - border-radius: 4px; - } - } +.email-frame-wrapper-td { + padding-bottom: 16px; +} - p { - font-size: 19px; - margin-bottom: 20px; +.email-frame-td > p { + text-align: center; + font-size: 16px; + line-height: 24px; +} - &.status-footer { - color: lighten($ui-base-color, 26%); - font-size: 14px; - margin-bottom: 0; +// Checklist item +.email-checklist-wrapper-td { + padding: 4px 0; +} - a { - color: lighten($ui-base-color, 26%); - } - } - } +.email-checklist-table { + border-radius: 12px; + border-width: 1px; + border-style: solid; + border-color: #efefff; + background-color: #fff; } -.border-top { - border-top: 1px solid lighten($ui-base-color, 8%); +.email-checklist-td { + padding: 16px; } -ul { - padding-left: 15px; - margin-top: 0; - margin-bottom: 0; - padding-top: 16px; +.email-checklist-icons-td { + width: 84px; + vertical-align: top; +} - li { - margin-bottom: 16px; - color: lighten($ui-base-color, 26%); +.email-checklist-icons-checkbox-td { + width: 20px; + vertical-align: middle; - span { - color: $ui-primary-color; - } + img { + max-width: 100%; + width: 20px; } } -ul.rules-list { - padding-top: 0; +.email-checklist-icons-step-td { + width: 64px; + text-align: center; + vertical-align: middle; + + img { + max-width: 100%; + width: 40px; + } } -@media only screen and (device-width >= 768px) and (device-width <= 1024px) and (orientation: landscape) { - body { - min-height: 1024px !important; +.email-checklist-text-td { + h3 { + margin: 0 0 4px; + color: #17063b; + font-size: 14px; + font-weight: 600; + line-height: 16.8px; + } + + p { + margin: 0 0 2px; + color: #746a89; + font-size: 14px; + line-height: 16.8px; + } + + .email-btn-table { + width: 100px; + } + + .email-btn-td { + mso-padding-alt: 10px; + } + + .email-btn-a { + padding-left: 10px; + padding-right: 10px; } } -@media (width <= 697px) { - .email-container, - .col-1, - .col-2, - .col-3, - .col-4, - .col-5, - .col-6 { - width: 100% !important; - max-width: none !important; +// Responsive +/* stylelint-disable-next-line media-feature-range-notation -- Basic media queries have better support across email clients. */ +@media only screen and (min-width: 740px) { + .email-desktop-p-8 { + padding: 32px !important; } - .email-start { - padding-top: 16px !important; + .email-desktop-rounded-16px { + border-radius: 16px !important; } - .email-end { - padding-bottom: 16px !important; + .email-header-td { + border-radius: 16px 16px 0 0 !important; } - .padded { - padding-left: 0 !important; - padding-right: 0 !important; + .email-desktop-flex { + display: flex; } } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 47433c289fa44c..b28e98cc32f763 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/javascript/types/image.d.ts b/app/javascript/types/image.d.ts index 07d19295556b47..8a08eca9f6eaa0 100644 --- a/app/javascript/types/image.d.ts +++ b/app/javascript/types/image.d.ts @@ -20,16 +20,20 @@ declare module '*.png' { } declare module '*.svg' { + const path: string; + export default path; +} + +declare module '*.svg?react' { import type React from 'react'; interface SVGPropsWithTitle extends React.SVGProps { title?: string; } - export const ReactComponent: React.FC; + const ReactComponent: React.FC; - const path: string; - export default path; + export default ReactComponent; } declare module '*.webp' { diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 8eff9fdf40ea22..eb332a44cda326 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -283,6 +283,7 @@ def process_attachments RedownloadMediaWorker.perform_in(rand(30..600).seconds, media_attachment.id) rescue Seahorse::Client::NetworkingError => e Rails.logger.warn "Error storing media attachment: #{e}" + RedownloadMediaWorker.perform_async(media_attachment.id) end end diff --git a/app/lib/admin/system_check/media_privacy_check.rb b/app/lib/admin/system_check/media_privacy_check.rb index 1df05b120ea80a..2ddc8e8b07e4c3 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 @@ def media_attachment @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 b28f5c3d7fc14d..32ccb0b13c1fb1 100644 --- a/app/lib/attachment_batch.rb +++ b/app/lib/attachment_batch.rb @@ -37,7 +37,7 @@ def delete def clear remove_files - batch.update_all(nullified_attributes) # rubocop:disable Rails/SkipsModelValidations + batch.update_all(nullified_attributes) end private diff --git a/app/lib/status_reach_finder.rb b/app/lib/status_reach_finder.rb index 36fb0e80fb88c4..17e42e3ec38fe5 100644 --- a/app/lib/status_reach_finder.rb +++ b/app/lib/status_reach_finder.rb @@ -16,28 +16,28 @@ def inboxes private def reached_account_inboxes + Account.where(id: reached_account_ids).inboxes + end + + def reached_account_ids # When the status is a reblog, there are no interactions with it # directly, we assume all interactions are with the original one if @status.reblog? - [] + [reblog_of_account_id] else - Account.where(id: reached_account_ids).inboxes - end - end - - def reached_account_ids - [ - replied_to_account_id, - reblog_of_account_id, - mentioned_account_ids, - reblogs_account_ids, - favourites_account_ids, - replies_account_ids, - ].tap do |arr| - arr.flatten! - arr.compact! - arr.uniq! + [ + replied_to_account_id, + reblog_of_account_id, + mentioned_account_ids, + reblogs_account_ids, + favourites_account_ids, + replies_account_ids, + ].tap do |arr| + arr.flatten! + arr.compact! + arr.uniq! + end end end diff --git a/app/mailers/notification_mailer.rb b/app/mailers/notification_mailer.rb index 5eecfed10400bc..4eb38ec340620f 100644 --- a/app/mailers/notification_mailer.rb +++ b/app/mailers/notification_mailer.rb @@ -12,6 +12,8 @@ class NotificationMailer < ApplicationMailer default to: -> { email_address_with_name(@user.email, @me.username) } + layout 'mailer' + def mention return unless @user.functional? && @status.present? diff --git a/app/models/account.rb b/app/models/account.rb index 0e38e07be8974c..526a8abccb95f7 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -133,7 +133,6 @@ class Account < ApplicationRecord scope :without_unapproved, -> { left_outer_joins(:user).merge(User.approved.confirmed).or(remote) } scope :searchable, -> { without_unapproved.without_suspended.where(moved_to_account_id: nil) } scope :discoverable, -> { searchable.without_silenced.where(discoverable: true).joins(:account_stat) } - scope :followable_by, ->(account) { joins(arel_table.join(Follow.arel_table, Arel::Nodes::OuterJoin).on(arel_table[:id].eq(Follow.arel_table[:target_account_id]).and(Follow.arel_table[:account_id].eq(account.id))).join_sources).where(Follow.arel_table[:id].eq(nil)).joins(arel_table.join(FollowRequest.arel_table, Arel::Nodes::OuterJoin).on(arel_table[:id].eq(FollowRequest.arel_table[:target_account_id]).and(FollowRequest.arel_table[:account_id].eq(account.id))).join_sources).where(FollowRequest.arel_table[:id].eq(nil)) } scope :by_recent_status, -> { includes(:account_stat).merge(AccountStat.order('last_status_at DESC NULLS LAST')).references(:account_stat) } scope :by_recent_activity, -> { left_joins(:user, :account_stat).order(coalesced_activity_timestamps.desc).order(id: :desc) } scope :popular, -> { order('account_stats.followers_count desc') } diff --git a/app/models/account_suggestions/source.rb b/app/models/account_suggestions/source.rb index ee93a1342fc38e..d83f5e3773cf6c 100644 --- a/app/models/account_suggestions/source.rb +++ b/app/models/account_suggestions/source.rb @@ -8,11 +8,31 @@ def get(_account, **kwargs) protected def base_account_scope(account) - Account.searchable - .followable_by(account) - .not_excluded_by_account(account) - .not_domain_blocked_by_account(account) - .where.not(id: account.id) - .joins("LEFT OUTER JOIN follow_recommendation_mutes ON follow_recommendation_mutes.target_account_id = accounts.id AND follow_recommendation_mutes.account_id = #{account.id}").where(follow_recommendation_mutes: { target_account_id: nil }) + Account + .searchable + .where.not(follows_sql, id: account.id) + .where.not(follow_requests_sql, id: account.id) + .not_excluded_by_account(account) + .not_domain_blocked_by_account(account) + .where.not(id: account.id) + .where.not(follow_recommendation_mutes_sql, id: account.id) + end + + def follows_sql + <<~SQL.squish + EXISTS (SELECT 1 FROM follows WHERE follows.target_account_id = accounts.id AND follows.account_id = :id) + SQL + end + + def follow_requests_sql + <<~SQL.squish + EXISTS (SELECT 1 FROM follow_requests WHERE follow_requests.target_account_id = accounts.id AND follow_requests.account_id = :id) + SQL + end + + def follow_recommendation_mutes_sql + <<~SQL.squish + EXISTS (SELECT 1 FROM follow_recommendation_mutes WHERE follow_recommendation_mutes.target_account_id = accounts.id AND follow_recommendation_mutes.account_id = :id) + SQL end end diff --git a/app/models/bulk_import.rb b/app/models/bulk_import.rb index 810e471849245a..406fb2aba26c7a 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/concerns/user/omniauthable.rb b/app/models/concerns/user/omniauthable.rb index 6d1d1b8cc3fbdc..113bfda23043eb 100644 --- a/app/models/concerns/user/omniauthable.rb +++ b/app/models/concerns/user/omniauthable.rb @@ -61,7 +61,7 @@ def create_for_oauth(auth) user.account.avatar_remote_url = nil end - user.confirm! if email_is_verified + user.mark_email_as_confirmed! if email_is_verified user.save! user end diff --git a/app/models/follow_request.rb b/app/models/follow_request.rb index 3c5e8f96f0d5bc..c13cc718d8f0ce 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 712acf37065e17..fc83d9c58c1fdb 100644 --- a/app/models/form/import.rb +++ b/app/models/form/import.rb @@ -69,7 +69,7 @@ def save 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 56e575ca428c83..fc70a5c3e134a5 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -149,6 +149,10 @@ def self.those_who_can(*any_of_privileges) end end + def self.skip_mx_check? + Rails.env.local? + end + def role if role_id.nil? UserRole.everyone @@ -186,37 +190,16 @@ def to_log_route_param end def confirm - new_user = !confirmed? - self.approved = true if open_registrations? && !sign_up_from_ip_requires_approval? - - super - - if new_user - # Avoid extremely unlikely race condition when approving and confirming - # the user at the same time - reload unless approved? - - if approved? - prepare_new_user! - else - notify_staff_about_pending_account! - end + wrap_email_confirmation do + super end end - def confirm! - new_user = !confirmed? - self.approved = true if open_registrations? - - skip_confirmation! - save! - - if new_user - # Avoid extremely unlikely race condition when approving and confirming - # the user at the same time - reload unless approved? - - prepare_new_user! if approved? + # Mark current email as confirmed, bypassing Devise + def mark_email_as_confirmed! + wrap_email_confirmation do + skip_confirmation! + save! end end @@ -426,14 +409,53 @@ def set_approved 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 wrap_email_confirmation + new_user = !confirmed? + self.approved = true if grant_approval_on_confirmation? + + yield + + if new_user + # Avoid extremely unlikely race condition when approving and confirming + # the user at the same time + reload unless approved? + + if approved? + prepare_new_user! + else + notify_staff_about_pending_account! + end + end + 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 def sign_up_email_requires_approval? - return false unless email.present? || unconfirmed_email.present? + return false if email.blank? + + _, domain = email.split('@', 2) + return false if domain.blank? + + records = [] + + # Doing this conditionally is not very satisfying, but this is consistent + # with the MX records validations we do and keeps the specs tractable. + unless self.class.skip_mx_check? + Resolv::DNS.open do |dns| + dns.timeouts = 5 + + records = dns.getresources(domain, Resolv::DNS::Resource::IN::MX).to_a.map { |e| e.exchange.to_s }.compact_blank + end + end - EmailDomainBlock.requires_approval?(email.presence || unconfirmed_email, attempt_ip: sign_up_ip) + EmailDomainBlock.requires_approval?(records + [domain], attempt_ip: sign_up_ip) end def open_registrations? @@ -484,7 +506,7 @@ def needs_feed_update? end def validate_email_dns? - email_changed? && !external? && !Rails.env.local? + email_changed? && !external? && !self.class.skip_mx_check? end def validate_role_elevation diff --git a/app/services/reblog_service.rb b/app/services/reblog_service.rb index 18e1748cea026d..9c3d4101824ec1 100644 --- a/app/services/reblog_service.rb +++ b/app/services/reblog_service.rb @@ -43,11 +43,7 @@ def call(account, reblogged_status, options = {}) def create_notification(reblog) reblogged_status = reblog.reblog - if reblogged_status.account.local? - LocalNotificationWorker.perform_async(reblogged_status.account_id, reblog.id, reblog.class.name, 'reblog') - elsif reblogged_status.account.activitypub? && !reblogged_status.account.following?(reblog.account) - ActivityPub::DeliveryWorker.perform_async(build_json(reblog), reblog.account_id, reblogged_status.account.inbox_url) - end + LocalNotificationWorker.perform_async(reblogged_status.account_id, reblog.id, reblog.class.name, 'reblog') if reblogged_status.account.local? end def increment_statistics diff --git a/app/views/application/mailer/_button.html.haml b/app/views/application/mailer/_button.html.haml new file mode 100644 index 00000000000000..61430732eb3ed3 --- /dev/null +++ b/app/views/application/mailer/_button.html.haml @@ -0,0 +1,4 @@ +%table.email-btn-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } + %tr + %td.email-btn-td + = link_to "#{text} ➜", url, class: 'email-btn-a email-btn-hover' diff --git a/app/views/application/mailer/_checklist.html.haml b/app/views/application/mailer/_checklist.html.haml new file mode 100644 index 00000000000000..9ee96559398c43 --- /dev/null +++ b/app/views/application/mailer/_checklist.html.haml @@ -0,0 +1,29 @@ +%table.email-w-full.email-checklist-wrapper-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } + %tr + %td.email-checklist-wrapper-td + %table.email-w-full.email-checklist-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } + %tr + %td.email-checklist-td + %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } + %tr + %td.email-checklist-icons-td + %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } + %tr + %td.email-checklist-icons-checkbox-td + - if defined?(checked) && checked + = image_tag full_pack_url('media/images/mailer-new/welcome/checkbox-on.png'), alt: '', width: 20, height: 20 + - else + = image_tag full_pack_url('media/images/mailer-new/welcome/checkbox-off.png'), alt: '', width: 20, height: 20 + %td.email-checklist-icons-step-td + - if defined?(step_image_url) + = image_tag step_image_url, alt: '', width: 40, height: 40 + %td.email-checklist-text-td + .email-desktop-flex + %div + - if defined?(title) + %h3= title + - if defined?(text) + %p= text + %div + - if defined?(button_text) && defined?(button_url) && defined?(checked) && !checked + = render 'application/mailer/button', text: button_text, url: button_url diff --git a/app/views/application/mailer/_frame.html.haml b/app/views/application/mailer/_frame.html.haml new file mode 100644 index 00000000000000..74403e7678f68b --- /dev/null +++ b/app/views/application/mailer/_frame.html.haml @@ -0,0 +1,4 @@ +%table.email-w-full.email-frame-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } + %tr + %td.email-frame-td + %p= text diff --git a/app/views/application/mailer/_heading.html.haml b/app/views/application/mailer/_heading.html.haml new file mode 100644 index 00000000000000..9fc5dc7471b5e4 --- /dev/null +++ b/app/views/application/mailer/_heading.html.haml @@ -0,0 +1,13 @@ +%table.email-w-full.email-header-heading-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } + %tr + %td.email-header-heading-td + %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } + %tr + - if defined?(heading_image_url) + %td.email-header-heading-img-td + = image_tag heading_image_url, alt: '', width: 56, height: 56 + %td.email-header-heading-txt-td + - if defined?(heading_title) + %h1= heading_title + - if defined?(heading_subtitle) + %p= heading_subtitle diff --git a/app/views/custom_css/show.css.erb b/app/views/custom_css/show.css.erb index 9cd38fb37140a1..78da809ed6d924 100644 --- a/app/views/custom_css/show.css.erb +++ b/app/views/custom_css/show.css.erb @@ -1,8 +1,8 @@ -<%- if Setting.custom_css.present? %> -<%= raw Setting.custom_css %> +<%- if custom_css_styles.present? %> +<%= raw custom_css_styles %> <%- end %> -<%- UserRole.where(highlighted: true).select { |role| role.color.present? }.each do |role| %> +<%- @user_roles.each do |role| %> .user-role-<%= role.id %> { --user-role-accent: <%= role.color %>; } diff --git a/app/views/disputes/strikes/show.html.haml b/app/views/disputes/strikes/show.html.haml index 62695b155e0a83..5f721388217ec9 100644 --- a/app/views/disputes/strikes/show.html.haml +++ b/app/views/disputes/strikes/show.html.haml @@ -21,7 +21,7 @@ .report-header .report-header__card - = render 'card', strike: @strike + = render 'disputes/strikes/card', strike: @strike .report-header__details .report-header__details__item diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 78fe6db11a76af..674d39511834c5 100755 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -27,6 +27,10 @@ %title= html_title = javascript_pack_tag 'common', crossorigin: 'anonymous' + + -# Needed for the wicg-inert polyfill. It needs to be on it's own