1. Название компонента только на английском языке. Каждое новое слово с большой буквы, в качестве разделителя пробел. Используется только общепринятые названия компонентов. Например:
    1. Action Button
    2. Promo Banner
    3. Services Section
    4. Balance Widget
  2. Название настроек и их значений только на английском языке. Каждое новое слово с большой буквы, в качестве разделителя пробел. Например:
    1. Show Button (True, False)
    2. Type (Button, Button & Title, Title & Subtitle)
    3. Discount Label (Sale, Black Friday, None)
    4. Pin Position (Top Left, Top Right, Bottom Left, Bottom Right)
  3. Если компонент меняет вид на разных брейкпоинтах экрана, то должна быть настройка Breakpoint со значениями:
    1. Desktop XL, Desktop L, Desktop M, Desktop S, Desktop XS
    2. Tablet
    3. Mobile
  4. Если компонент интерактивный, то должна быть настройка State со значениями или их комбинацией:
    1. Enabled, Focused, Hovered, Pressed, Disabled
    2. Selected, Unselected
    3. Opened, Closed
    4. On, Off
    5. Expanded, Collapsed
  5. Внутри компонента должны быть названы все слои, группы и фреймы (особое внимание текстовым слоям). Только на английском языке. Каждое новое слово с большой буквы, в качестве разделителя пробел. Никаких Frame 3532, Group 3533, Vector 352 и прочее. Чистота и лаконичность.
  6. Компонент и его внутренние компоненты\стили должны быть привязаны к ДС. Если нет нужного стиля или компонента — его нужно завести. Никаких раздетаченных элементов, элементов из других китов, кастомных элементов, забытых или не указанных стилей.
  7. В компоненте не должно быть скрытых слоев. Если есть необходимость сделать настройку для отображения\скрытия какого-то элемента внутри, лучше использовать для этого Variants, а не Properties.
  8. Должны быть проставлены Constraints у всех слоев, которые в этом нуждаются, а в Autolayout должны быть корректно выставлены параметры Fill Content, Hug Content и Fixed. Таким образом, компонент должен корректно отрабатывать изменение его ширины и, если это возможно и необходимо, изменение высоты.
  9. Вложенность элементов друг в друга должна быть оправдана. По возможности нужно достичь минимальной вложенности.
  10. Если у компонента есть вложенные кастомные компоненты и они не являются самостоятельными единицами, то они должны быть названы с явной привязкой к родительскому компоненту, а перед названием, должна стоять точка. Например:
    1. Balance Widget/.Balance ****Price Tag
    2. Services Section/.Service Card