Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace library of programming language icons #1706

Merged
merged 3 commits into from
Jan 31, 2024

Conversation

ushachev
Copy link
Contributor

Fixes #1685

Заменён иконочный шрифт Mfizz на предложенную в ишью Реакт-обёртку над иконкамии проекта Devicon.
API простой и удобный. Насколько удалось проверить в десктопных Chrome/Firefox и мобильном Safari, отображение иконок идентичное

Было/стало Было

Screenshot from 2023-12-29 23-02-49

Стало
Screenshot from 2023-12-29 22-59-25

Для 5 языков (Elixir, Kotlin, Php, Python, Ruby) пришлось создать собственные компоненты-иконки. Их использование напрямую из библиотеки react-devicons оказалось проблематичным. В них заливка элементов в SVG разметке сделана не однородным цветом, а градиентом.
Примерно так

<linearGradient id="ruby-original-a" ...>
  ...
</linearGradient>
<path fill="url(#ruby-original-a)" .../>

Если на странице использовано несколько одинаковых иконок и при этом первая иконка оказывается в блоке, который скрыт применением к нему CSS правила display: none, то остальные иконки оказываются обесцвечены. На применении display: none реализована работа, например, табов в Bootstrap. Если бы каждая из одинаковых иконок обладала уникальными id для градиентов, то проблемы бы не было, но такой механизм не предусмотрен в react-devicons. Хорошо, что эта задача решается Babel-плагином babel-plugin-react-inline-svg-unique-id

Размеры иконок подобраны чтобы выглядели сбалансированно относительно друг-друга. За исходный размер приняты Ruby и Kotlin

Screenshot from 2023-12-22 15-31-55

Доработки:

  • улучшен компонент UserName, убрана избыточная "семантическая" разметка

  • улучшен компонент ResultIcon, его использование стало более "прямолинейным" без лишних пропсов. Возвращает только соответствующую результату иконку, без "пустой" иконки. Выравнивание контента для случая отсутствующей иконки результата - это ответственность вызывающего кода, теперь для этого достаточно отступа вместо громоздкой svg-разметки

    Было/стало Было

    Screenshot from 2023-12-29 22-01-33

    Стало
    Screenshot from 2023-12-29 22-23-21

@ReDBrother
Copy link
Collaborator

За UserName отдельный респект)

@ReDBrother ReDBrother merged commit 10f1d0a into hexlet-codebattle:master Jan 31, 2024
1 of 2 checks passed
@ReDBrother
Copy link
Collaborator

Там с точки зрения производительности не очень все классно выходит, все же хотелось держать отдельным svg иконками, которые можно будет пережать и положить в отдельные региональные хранилища, но это уберу в свой давний долг по полному ревью производительности приложения)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Feature: replace font-mfizz on different stylish language icons
2 participants