| Кнопка основная (button-brand / -large / -primary / -delete) | 342×48, пилюля r296, лейбл 590/16 −0.6, контент-паддинг 20/12, боковые отступы 24; disabled — белый оверлей 11 %; n=201 | PodusheButton: высота **44**, паддинг 20/12, пилюля, лейбл 590/16; оверлей disabled 12 %, pressed 30 % (Buttons.kt:34–90); отступы 16 или 24 | расходится Высота 44 вместо 48 на всех экранах; крупной -large нет. |
| button-brand-small | 59×32 (лейбл 590/14) и 342×48 с лейблом 590/14 — кабинет: «Одобрить всех», «Добавить», «Сохранить»; n=285 | нет; ближайшее — DecisionButton (пилюля 590/14, паддинг 20×10, CrewScreen.kt:277) | нет в коде |
| button-secondary (стекло) | 110×44 / 175×48, стекло Regular, лейбл 590/16 #282A31; n=80 | PodusheButtonStyle.Secondary — стекло 44 (Buttons.kt:38, 55) | совпадает Высота 44 vs 48 у крупной. |
| Button-icon (круглая стеклянная) | 48×48 r32 стекло, внутри item-iconButton 36 r100; пара — 102×48 (36 + разделитель + 36, паддинг 6, gap 8); n=1186 | PodusheIconButton 48 стекло; GlassIconPair 36+8+2+8+36 с паддингом 6 (AfishaMapScreen.kt:321) | совпадает |
| Button-mini (строка-кнопка списка) | 358×44 r24 #F5F5F5, паддинг-лево 16, текст 510/16 — «Добавить организатора», «Добавить вопрос», «Удалить вопрос»; n=98 | нет; строки настроек — SettingsRow белые r16, паддинг 16/14 (Rows.kt:240) | нет в коде |
| Text Field | 358×44/46/48 r100 #F5F5F5, внутренняя тень 2, текст 510/16, ошибка — обводка #F84040 1 px; многострочное 358×90/104 **r24**; n=379 | PodusheTextField 44, пилюля, без тени, ошибка — обводка 1.5; многострочное — та же пилюля высотой 120 (CreateEventScreen.kt:177) | частично Многострочные поля в макете r24, в коде — пилюля (r50 %) на 120 dp. |
| Search Field | 358×46 r100, лупа + крестик очистки, рядом текст «Отмена» (290 + 60); n=71 | PodusheTextField с лупой (SearchScreen.kt:468); без крестика и «Отмены» | частично |
| OTP-field | 84×96 r16 #F5F5F5, внутренняя тень, цифра 650/28, ошибка — обводка #F84040; n=20 | OtpCell 96 r16, 650/28 (AuthScreens.kt:325); без реакции на ошибку | совпадает Обводка ошибки не реализована. |
| tab-filter (быстрый фильтр) | высота 40, стекло Medium; активный — #282A31 с белым текстом; текст 590/16; n=601 | FilterTab 40, стекло / тёмный, 590/16 (Buttons.kt:125) | совпадает |
| tab-category (категория с 3D-иконкой) | высота 44, r32, обводка #000@7 %, тень 4, паддинг 6/4/16/4, 3D-иконка 36 + текст 590/16 gap 6; выбранная — тёмная с галочкой; n=506 | текстовые пилюли 590/14, паддинг 16×12, выбранная — синяя #007AFF (OnboardingScreen.kt:82, SearchScreen.kt:589, CreateEventScreen.kt:401) | расходится |
| Tab Bar | 390×95, паддинг 20/16/20/24, gap 16; пилюля 217×62 стекло с tab-item 54 (иконка 24, подпись 590/10, gap 2, паддинг 8/6), выделение #007AFF@11 % r100; боковые круги 62 стекло (иконка 24); n=63 | PodusheTabBar: паддинг 20/16 + navigationBars; пилюля с паддингом 4, элементы паддинг 10/6 (≈56); боковые 54; выделение AccentTint; подписи 590/10 (TabBar.kt) | совпадает Боковые кнопки 54 вместо 62, нижний отступ 16 вместо 24. |
| Accent-card-event (карточка рельса) | 300×228: обложка ≈300×170 r20 с бейджем на градиенте, заголовок 590/18, мета «9.3 км от вас · Завтра» 510/16@40 %; n=120 | AccentEventCard 300, обложка 170 r20, заголовок 590/18, мета «дата · цена · идут N» (EventCards.kt:74) | частично Бейджа на обложке нет, мета другая. |
| Default-card-event (строка события) | 358×108: обложка 84×84 r8, бейдж 26, заголовок 590/18, «2.4 км от вас» 510/16@40 %, строка организатора (аватар + имя); gap 12; n=302 | EventRow: обложка 84 r8, бейдж, заголовок **590/16**, мета «дата · цена · идут N», сердце справа (EventCards.kt:104) | частично |
| badge (бейдж категории) | высота 26, r32, паддинг 6/2/12/2, точка/иконка + текст 590/14; заливки #F5F5F5 · #FFF@15 % (тёмный) · тинты статусов 11 %; n=955 | InterestBadge: паддинг 8/2, точка 7, 590/14, #F5F5F5 / #FFF@16 % (EventCards.kt:181) | совпадает На странице события бейдж 30 px с иконкой-решёткой — в коде 22. |
| Organizer row | 358×36, аватар 32, имя 510/16, chevron; gap 8; n=80 | OrganizerRow 32 + Body + chevron (EventScreen.kt:388) | совпадает |
| Switch | 51×31; n=333 | PodusheSwitch 51×31, кружок 27, on = #36B554 (Rows.kt:321) | совпадает Цвет включённого не сверен (UI-kit не выгружен). |
| Segmented control 2/3 | 358×40 r100 #F5F5F5, паддинг 8/4; активный — белая пилюля 590/16, неактивные 510/16; n=40 | PodusheSegmentedControl есть (Fields.kt:245), **нигде не используется** | частично «Предстоящие/Прошедшие», «Заявки/Участвуют/Отклонены», «Друзья/Участники» — все на нём. |
| Snackbar / Body | 342×50 r20, backdrop-blur 20, паддинг 12, галочка + текст 590/16 белый; n=25 | нет | нет в коде |
| Chat bubble | ширина 270, r20 с хвостом r2, паддинг 8, gap 6; чужое #F5F5F5, своё **#007AFF@11 %** с тёмным текстом; текст 510/16, время 590/10@40 %; n=65 | MessageBubble: max 280, r18/6, паддинг 14×10; своё — сплошной #007AFF с белым текстом, чужое — белое; время 510/14 (ChatScreen.kt:333) | расходится |
| Masseg bar (панель ввода чата) | 390×95 как таббар: стеклянная скрепка 44 · стеклянное поле 230×44 · стеклянная отправка 44; n=23 | белая полоса, серое поле 44, синий кружок 44 (ChatScreen.kt:274–312) | расходится |
| Event Marker (маркер карты) | 110×110: обложка 44×44 r6, подпись 700/10 в две строки; кластер — стопка обложек + «+ ещё N»; n=222 | bitmap: обложка со скруглением + подпись #282A31 с белой обводкой (EventMap.kt:316); кластер — кружок с числом (clusterBitmap) | частично |
| Сard-user-save (карточка человека) | 358×70: аватар 48, имя 590/18, район и «N общих интереса» 510/16@40 %, справа действие (✓/✕/сердце/чекбокс); n=226 | нет; в кабинете — кружок с инициалом + имя (CrewScreen.kt:257) | нет в коде |
| Event controls / List Item / Right item (строки кабинета) | 358×64 r20 #F5F5F5: иконка 36 r24 в тинте (#000@7 %, #F84040@11 %, #DFA107@11 %), заголовок 510/16, подпись 510/14@40 %, chevron 20; группы с разделителем; n=98+568 | нет | нет в коде |
| Question-card | 358×66/101, паддинг 16/12, вопрос 510/18 + «Текст · Необязательно» 510/14@40 %, drag-handle; n=37 | нет | нет в коде |
| Checkbox 24 · Radio 24 · Slider 358×44 · Tabs calendar 48 · wheelPicker · Action Sheet · Alert · Dropdown | системные и кастомные контролы макета; n=141+230+1+124 | нет ни одного | нет в коде |
| Liquid Glass Material | Regular Large (48/62 px), Regular Medium (чипы 40), Clear/Light (тёмные экраны) — с backdrop-блюром | Modifier.liquidGlass: подложка + обводка + тень, без блюра (Glass.kt) | частично Зафиксированное упрощение. |
| Шапка экрана | 124 px: Button-icon 48 на (16, 64), заголовок 590/18 **по центру** (контейнер 238), правый слот 48; ниже — белый лист r32 на сером #F5F5F5 | statusBarsPadding + паддинг 16/8, заголовок **слева** после кнопки (AuthScaffold, SettingsScaffold, Notifications/Create/Crew/Edit/Chat/Search); белый лист только на экранах входа | расходится Единственный центрированный заголовок — на странице события (SpaceBetween). |
| Main Action (нижняя зона CTA) | 96 px, паддинг 24 со всех сторон, кнопка 342×48 (на странице события 88 px, паддинг 24/16/24/24) | navigationBarsPadding + 16 (или 24) + кнопка 44 (Create/Edit/Onboarding — белая подложка; Event — градиент) | частично |