info.style 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179
  1. /*
  2. This file is part of Telegram Desktop,
  3. the official desktop application for the Telegram messaging service.
  4. For license and copyright information please follow this link:
  5. https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
  6. */
  7. using "ui/basic.style";
  8. using "boxes/boxes.style";
  9. using "ui/widgets/widgets.style";
  10. using "ui/chat/chat.style"; // GroupCallUserpics.
  11. using "dialogs/dialogs.style"; // dialogsDateFont.
  12. InfoToggle {
  13. color: color;
  14. duration: int;
  15. size: pixels;
  16. skip: pixels;
  17. stroke: pixels;
  18. rippleAreaPadding: pixels;
  19. }
  20. InfoPeerBadge {
  21. verified: icon;
  22. premium: icon;
  23. premiumFg: color;
  24. position: point;
  25. sizeTag: int;
  26. }
  27. InfoTopBar {
  28. height: pixels;
  29. back: IconButton;
  30. title: FlatLabel;
  31. titlePosition: point;
  32. titleWithSubtitle: FlatLabel;
  33. titleWithSubtitlePosition: point;
  34. subtitle: FlatLabel;
  35. subtitlePosition: point;
  36. bg: color;
  37. mediaCancel: IconButton;
  38. mediaActionsSkip: pixels;
  39. mediaForward: IconButton;
  40. mediaDelete: IconButton;
  41. storiesSave: IconButton;
  42. storiesArchive: IconButton;
  43. storiesPin: IconButton;
  44. storiesUnpin: IconButton;
  45. search: IconButton;
  46. searchRow: SearchFieldRow;
  47. highlightBg: color;
  48. highlightDuration: int;
  49. radius: pixels;
  50. }
  51. infoMediaHeaderFg: windowFg;
  52. infoToggle: InfoToggle {
  53. color: menuIconFg;
  54. duration: slideWrapDuration;
  55. size: 24px;
  56. skip: 5px;
  57. stroke: 2px;
  58. rippleAreaPadding: 8px;
  59. }
  60. infoMediaSearch: SearchFieldRow {
  61. height: 44px;
  62. padding: margins(8px, 6px, 8px, 6px);
  63. field: defaultMultiSelectSearchField;
  64. fieldIcon: icon {{
  65. "box_search-flip_horizontal",
  66. menuIconFg,
  67. point(6px, 8px)
  68. }};
  69. fieldIconSkip: 36px;
  70. fieldCancel: defaultMultiSelectSearchCancel;
  71. fieldCancelSkip: 40px;
  72. }
  73. infoLayerMediaSearch: SearchFieldRow(infoMediaSearch) {
  74. height: 46px;
  75. fieldIcon: icon {{
  76. "box_search-flip_horizontal",
  77. menuIconFg,
  78. point(9px, 9px)
  79. }};
  80. fieldIconSkip: 34px;
  81. fieldCancel: CrossButton(defaultMultiSelectSearchCancel) {
  82. width: 50px;
  83. cross: CrossAnimation {
  84. size: 38px;
  85. skip: 12px;
  86. stroke: 1.5;
  87. minScale: 0.3;
  88. }
  89. crossPosition: point(3px, 4px);
  90. }
  91. fieldCancelSkip: 46px;
  92. }
  93. infoTopBarSearchRow: SearchFieldRow(infoLayerMediaSearch) {
  94. height: 52px;
  95. padding: margins(0px, 12px, 8px, 10px);
  96. fieldCancel: CrossButton(defaultMultiSelectSearchCancel) {
  97. width: 51px;
  98. height: 52px;
  99. cross: CrossAnimation {
  100. size: 42px;
  101. skip: 14px;
  102. stroke: 1.5;
  103. minScale: 0.3;
  104. }
  105. crossPosition: point(1px, 6px);
  106. }
  107. }
  108. infoSlideDuration: 0;
  109. infoTopBarBackIcon: icon {{ "info/info_back", boxTitleCloseFg }};
  110. infoTopBarBackIconOver: icon {{ "info/info_back", boxTitleCloseFgOver }};
  111. infoTopBarHeight: 54px;
  112. infoTopBarBack: IconButton(defaultIconButton) {
  113. width: 60px;
  114. height: infoTopBarHeight;
  115. icon: infoTopBarBackIcon;
  116. iconOver: infoTopBarBackIconOver;
  117. iconPosition: point(11px, -1px);
  118. rippleAreaPosition: point(6px, 6px);
  119. rippleAreaSize: 42px;
  120. ripple: defaultRippleAnimationBgOver;
  121. }
  122. infoTopBarTitle: FlatLabel(defaultFlatLabel) {
  123. textFg: windowBoldFg;
  124. maxHeight: 20px;
  125. style: TextStyle(defaultTextStyle) {
  126. font: font(14px semibold);
  127. }
  128. }
  129. infoTopBarMediaCancel: IconButton(infoTopBarBack) {
  130. width: infoTopBarHeight;
  131. icon: icon {{ "info/info_close", boxTitleCloseFg }};
  132. iconOver: icon {{ "info/info_close", boxTitleCloseFgOver }};
  133. }
  134. infoTopBarClose: IconButton(infoTopBarMediaCancel) {
  135. width: 48px;
  136. iconPosition: point(5px, -1px);
  137. rippleAreaPosition: point(0px, 6px);
  138. }
  139. infoTopBarSearch: IconButton(infoTopBarBack) {
  140. width: 56px;
  141. icon: icon {{ "top_bar_search", boxTitleCloseFg }};
  142. iconOver: icon {{ "top_bar_search", boxTitleCloseFgOver }};
  143. }
  144. infoTopBarMenu: IconButton(infoTopBarBack) {
  145. width: 48px;
  146. icon: icon {{ "title_menu_dots", boxTitleCloseFg }};
  147. iconOver: icon {{ "title_menu_dots", boxTitleCloseFgOver }};
  148. iconPosition: point(18px, -1px);
  149. rippleAreaPosition: point(1px, 6px);
  150. }
  151. infoTopBarCall: IconButton(infoTopBarMenu) {
  152. width: 42px;
  153. icon: icon {{ "top_bar_call", boxTitleCloseFg }};
  154. iconOver: icon {{ "top_bar_call", boxTitleCloseFgOver }};
  155. iconPosition: point(5px, -1px);
  156. rippleAreaPosition: point(0px, 6px);
  157. }
  158. infoTopBarQr: IconButton(infoTopBarMenu) {
  159. width: 48px;
  160. icon: icon {{ "menu/qr_code", boxTitleCloseFg }};
  161. iconOver: icon {{ "menu/qr_code", boxTitleCloseFgOver }};
  162. iconPosition: point(8px, -1px);
  163. rippleAreaPosition: point(0px, 6px);
  164. }
  165. infoTopBarEdit: IconButton(infoTopBarMenu) {
  166. width: 48px;
  167. icon: icon {{ "menu/edit", boxTitleCloseFg }};
  168. iconOver: icon {{ "menu/edit", boxTitleCloseFgOver }};
  169. iconPosition: point(8px, -1px);
  170. rippleAreaPosition: point(0px, 6px);
  171. }
  172. infoTopBarForward: IconButton(infoTopBarBack) {
  173. width: 46px;
  174. icon: icon {{ "info/info_media_forward", boxTitleCloseFg }};
  175. iconOver: icon {{ "info/info_media_forward", boxTitleCloseFgOver }};
  176. iconPosition: point(10px, -1px);
  177. rippleAreaPosition: point(1px, 6px);
  178. }
  179. infoTopBarDelete: IconButton(infoTopBarForward) {
  180. icon: icon {{ "info/info_media_delete", boxTitleCloseFg }};
  181. iconOver: icon {{ "info/info_media_delete", boxTitleCloseFgOver }};
  182. }
  183. infoTopBarSaveStories: IconButton(infoTopBarForward) {
  184. icon: icon {{ "info/info_stories_to_profile", boxTitleCloseFg }};
  185. iconOver: icon {{ "info/info_stories_to_profile", boxTitleCloseFgOver }};
  186. }
  187. infoTopBarArchiveStories: IconButton(infoTopBarForward) {
  188. icon: icon {{ "info/info_stories_to_archive", boxTitleCloseFg }};
  189. iconOver: icon {{ "info/info_stories_to_archive", boxTitleCloseFgOver }};
  190. }
  191. infoTopBarPinStories: IconButton(infoTopBarForward) {
  192. icon: icon {{ "menu/pin", boxTitleCloseFg }};
  193. iconOver: icon {{ "menu/pin", boxTitleCloseFgOver }};
  194. }
  195. infoTopBarUnpinStories: IconButton(infoTopBarForward) {
  196. icon: icon {{ "menu/unpin", boxTitleCloseFg }};
  197. iconOver: icon {{ "menu/unpin", boxTitleCloseFgOver }};
  198. }
  199. infoTopBar: InfoTopBar {
  200. height: infoTopBarHeight;
  201. back: infoTopBarBack;
  202. title: infoTopBarTitle;
  203. titlePosition: point(24px, 17px);
  204. titleWithSubtitle: FlatLabel(infoTopBarTitle) {
  205. style: semiboldTextStyle;
  206. }
  207. titleWithSubtitlePosition: point(16px, 8px);
  208. subtitle: FlatLabel(defaultFlatLabel) {
  209. textFg: windowSubTextFg;
  210. }
  211. subtitlePosition: point(16px, 28px);
  212. bg: windowBg;
  213. mediaCancel: infoTopBarMediaCancel;
  214. mediaActionsSkip: 4px;
  215. mediaForward: infoTopBarForward;
  216. mediaDelete: infoTopBarDelete;
  217. storiesSave: infoTopBarSaveStories;
  218. storiesArchive: infoTopBarArchiveStories;
  219. storiesPin: infoTopBarPinStories;
  220. storiesUnpin: infoTopBarUnpinStories;
  221. search: infoTopBarSearch;
  222. searchRow: infoTopBarSearchRow;
  223. highlightBg: windowBgOver;
  224. highlightDuration: 240;
  225. radius: 0px;
  226. }
  227. infoTopBarScale: 0.7;
  228. infoTopBarDuration: 150;
  229. infoLayerTopMinimal: 20px;
  230. infoLayerTopMaximal: 40px;
  231. infoLayerTopBarHeight: 56px;
  232. infoLayerTopBarBackIcon: icon {{ "info/info_back", boxTitleCloseFg }};
  233. infoLayerTopBarBackIconOver: icon {{ "info/info_back", boxTitleCloseFgOver }};
  234. infoLayerTopBarBack: IconButton(infoTopBarBack) {
  235. width: 60px;
  236. height: infoLayerTopBarHeight;
  237. iconPosition: point(10px, -1px);
  238. icon: infoLayerTopBarBackIcon;
  239. iconOver: infoLayerTopBarBackIconOver;
  240. rippleAreaSize: 40px;
  241. rippleAreaPosition: point(6px, 8px);
  242. }
  243. infoLayerTopBarMediaCancel: IconButton(infoLayerTopBarBack) {
  244. width: 48px;
  245. icon: icon {{ "info/info_close", boxTitleCloseFg }};
  246. iconOver: icon {{ "info/info_close", boxTitleCloseFgOver }};
  247. }
  248. infoLayerTopBarClose: IconButton(infoLayerTopBarMediaCancel) {
  249. iconPosition: point(4px, -1px);
  250. rippleAreaPosition: point(0px, 8px);
  251. }
  252. infoLayerTopBarMenu: IconButton(infoLayerTopBarClose) {
  253. width: 40px;
  254. icon: icon {{ "title_menu_dots", boxTitleCloseFg }};
  255. iconOver: icon {{ "title_menu_dots", boxTitleCloseFgOver }};
  256. iconPosition: point(16px, -1px);
  257. }
  258. infoLayerTopBarCall: IconButton(infoLayerTopBarMenu) {
  259. icon: icon {{ "top_bar_call", boxTitleCloseFg }};
  260. iconOver: icon {{ "top_bar_call", boxTitleCloseFgOver }};
  261. iconPosition: point(3px, -1px);
  262. }
  263. infoLayerTopBarQr: IconButton(infoLayerTopBarClose) {
  264. width: 40px;
  265. icon: icon {{ "menu/qr_code", boxTitleCloseFg }};
  266. iconOver: icon {{ "menu/qr_code", boxTitleCloseFgOver }};
  267. iconPosition: point(8px, -1px);
  268. }
  269. infoLayerTopBarEdit: IconButton(infoLayerTopBarClose) {
  270. width: 40px;
  271. icon: icon {{ "menu/edit", boxTitleCloseFg }};
  272. iconOver: icon {{ "menu/edit", boxTitleCloseFgOver }};
  273. iconPosition: point(8px, -1px);
  274. }
  275. infoLayerTopBarForward: IconButton(infoLayerTopBarBack) {
  276. width: 45px;
  277. icon: icon {{ "info/info_media_forward", boxTitleCloseFg }};
  278. iconOver: icon {{ "info/info_media_forward", boxTitleCloseFgOver }};
  279. iconPosition: point(11px, -1px);
  280. rippleAreaPosition: point(3px, 8px);
  281. }
  282. infoLayerTopBarDelete: IconButton(infoLayerTopBarForward) {
  283. icon: icon {{ "info/info_media_delete", boxTitleCloseFg }};
  284. iconOver: icon {{ "info/info_media_delete", boxTitleCloseFgOver }};
  285. }
  286. infoLayerTopBarSaveStories: IconButton(infoLayerTopBarForward) {
  287. icon: icon {{ "info/info_stories_to_profile", boxTitleCloseFg }};
  288. iconOver: icon {{ "info/info_stories_to_profile", boxTitleCloseFgOver }};
  289. }
  290. infoLayerTopBarArchiveStories: IconButton(infoLayerTopBarForward) {
  291. icon: icon {{ "info/info_stories_to_archive", boxTitleCloseFg }};
  292. iconOver: icon {{ "info/info_stories_to_archive", boxTitleCloseFgOver }};
  293. }
  294. infoLayerTopBarPinStories: IconButton(infoLayerTopBarForward) {
  295. icon: icon {{ "menu/pin", boxTitleCloseFg }};
  296. iconOver: icon {{ "menu/pin", boxTitleCloseFgOver }};
  297. }
  298. infoLayerTopBarUnpinStories: IconButton(infoLayerTopBarForward) {
  299. icon: icon {{ "menu/unpin", boxTitleCloseFg }};
  300. iconOver: icon {{ "menu/unpin", boxTitleCloseFgOver }};
  301. }
  302. infoLayerTopBar: InfoTopBar(infoTopBar) {
  303. height: infoLayerTopBarHeight;
  304. back: infoLayerTopBarBack;
  305. title: boxTitle;
  306. titlePosition: point(24px, 17px);
  307. titleWithSubtitlePosition: point(16px, 9px);
  308. subtitlePosition: point(16px, 30px);
  309. bg: boxBg;
  310. mediaCancel: infoLayerTopBarMediaCancel;
  311. mediaActionsSkip: 6px;
  312. mediaForward: infoLayerTopBarForward;
  313. mediaDelete: infoLayerTopBarDelete;
  314. storiesSave: infoLayerTopBarSaveStories;
  315. storiesArchive: infoLayerTopBarArchiveStories;
  316. storiesPin: infoLayerTopBarPinStories;
  317. storiesUnpin: infoLayerTopBarUnpinStories;
  318. search: infoTopBarSearch;
  319. searchRow: infoTopBarSearchRow;
  320. radius: boxRadius;
  321. }
  322. infoLayerTopBarMenuPosition: point(40px, 37px);
  323. infoMinimalWidth: 324px;
  324. infoDesiredWidth: 392px;
  325. infoMinimalLayerMargin: 48px;
  326. InfoProfileCover {
  327. height: pixels;
  328. photo: UserpicButton;
  329. photoLeft: pixels;
  330. photoTop: pixels;
  331. name: FlatLabel;
  332. nameLeft: pixels;
  333. nameTop: pixels;
  334. status: FlatLabel;
  335. statusLeft: pixels;
  336. statusTop: pixels;
  337. showLastSeen: RoundButton;
  338. showLastSeenPosition: point;
  339. showLastSeenVisible: bool;
  340. rightSkip: pixels;
  341. }
  342. infoProfilePhotoInnerSize: 72px;
  343. infoProfilePhotoSize: size(
  344. infoProfilePhotoInnerSize,
  345. infoProfilePhotoInnerSize);
  346. infoProfileStatus: FlatLabel(defaultFlatLabel) {
  347. maxHeight: 18px;
  348. textFg: windowSubTextFg;
  349. }
  350. infoProfileCover: InfoProfileCover {
  351. height: 108px;
  352. photo: UserpicButton(defaultUserpicButton) {
  353. size: infoProfilePhotoSize;
  354. photoSize: infoProfilePhotoInnerSize;
  355. }
  356. photoLeft: 19px;
  357. photoTop: 18px;
  358. name: FlatLabel(defaultFlatLabel) {
  359. maxHeight: 24px;
  360. textFg: windowBoldFg;
  361. style: TextStyle(defaultTextStyle) {
  362. font: font(16px semibold);
  363. }
  364. }
  365. nameLeft: 109px;
  366. nameTop: 32px;
  367. status: infoProfileStatus;
  368. statusLeft: 109px;
  369. statusTop: 58px;
  370. showLastSeen: RoundButton(defaultActiveButton) {
  371. textFg: windowSubTextFg;
  372. textFgOver: windowSubTextFg;
  373. textBg: windowBgOver;
  374. textBgOver: windowBgOver;
  375. width: -12px;
  376. height: 18px;
  377. textTop: 0px;
  378. style: TextStyle(defaultTextStyle) {
  379. font: font(12px);
  380. }
  381. ripple: defaultRippleAnimation;
  382. }
  383. showLastSeenPosition: point(3px, 58px);
  384. showLastSeenVisible: true;
  385. rightSkip: 20px;
  386. }
  387. infoProfileMegagroupCover: InfoProfileCover(infoProfileCover) {
  388. status: FlatLabel(infoProfileStatus) {
  389. palette: TextPalette(defaultTextPalette) {
  390. linkFg: windowSubTextFg;
  391. }
  392. }
  393. }
  394. infoTopicCover: InfoProfileCover(infoProfileMegagroupCover) {
  395. height: 77px;
  396. photo: UserpicButton(defaultUserpicButton) {
  397. size: size(36px, 36px);
  398. }
  399. photoLeft: 22px;
  400. photoTop: 18px;
  401. nameLeft: 79px;
  402. nameTop: 14px;
  403. statusLeft: 79px;
  404. statusTop: 38px;
  405. }
  406. infoEditContactCover: InfoProfileCover(infoProfileCover) {
  407. nameTop: 33px;
  408. statusTop: 57px;
  409. }
  410. infoEditContactPersonalLeft: 6px;
  411. infoProfileInaccessibleUserpic: icon {{ "info/inaccessible_userpic", historyPeerUserpicFg }};
  412. infoVerifiedCheckPosition: point(4px, 2px);
  413. infoVerifiedCheck: icon {
  414. { "profile_verified_star", profileVerifiedCheckBg },
  415. { "profile_verified_check", profileVerifiedCheckFg }
  416. };
  417. infoPremiumStar: icon {{ "profile_premium", profileVerifiedCheckBg }};
  418. infoPeerBadge: InfoPeerBadge {
  419. verified: infoVerifiedCheck;
  420. premium: infoPremiumStar;
  421. premiumFg: profileVerifiedCheckBg;
  422. position: infoVerifiedCheckPosition;
  423. sizeTag: 0; // Normal
  424. }
  425. infoIconFg: windowBoldFg;
  426. infoProfileSkip: 7px;
  427. infoProfileLabeledPadding: margins(79px, 9px, 30px, 7px);
  428. infoProfileLabeledUsernamePadding: margins(79px, 9px, 20px, 7px);
  429. infoProfileSeparatorPadding: margins(
  430. 77px,
  431. infoProfileSkip,
  432. 0px,
  433. infoProfileSkip);
  434. infoProfileLabeledButtonQr: IconButton(defaultIconButton) {
  435. width: 34px;
  436. height: 34px;
  437. icon: icon {{ "menu/qr_code", windowActiveTextFg }};
  438. iconOver: icon {{ "menu/qr_code", windowActiveTextFg }};
  439. rippleAreaPosition: point(0px, 0px);
  440. rippleAreaSize: 34px;
  441. ripple: defaultRippleAnimation;
  442. }
  443. infoProfileLabeledButtonQrRightSkip: 10px;
  444. infoIconInformation: icon {{ "info/info_information", infoIconFg }};
  445. infoIconAddMember: icon {{ "info/info_add_member", infoIconFg }};
  446. infoIconBotBalance: icon {{ "menu/earn", infoIconFg, point(5px, 5px) }};
  447. infoIconNotifications: icon {{ "info/info_notifications", infoIconFg }};
  448. infoIconMediaPhoto: icon {{ "info/info_media_photo", infoIconFg }};
  449. infoIconMediaVideo: icon {{ "info/info_media_video", infoIconFg }};
  450. infoIconMediaGif: icon {{ "info/info_media_gif", infoIconFg }};
  451. infoIconMediaFile: icon {{ "info/info_media_file", infoIconFg }};
  452. infoIconMediaAudio: icon {{ "info/info_media_audio", infoIconFg }};
  453. infoIconMediaLink: icon {{ "info/info_media_link", infoIconFg }};
  454. infoIconMediaGroup: icon {{ "info/info_common_groups", infoIconFg }};
  455. infoIconMediaChannel: icon {{ "menu/channel", infoIconFg, point(4px, 4px) }};
  456. infoIconMediaBot: icon {{ "menu/bot", infoIconFg, point(4px, 4px) }};
  457. infoIconMediaVoice: icon {{ "info/info_media_voice", infoIconFg }};
  458. infoIconMediaStories: icon {{ "info/info_media_stories", infoIconFg }};
  459. infoIconMediaSaved: icon {{ "info/info_media_saved", infoIconFg }};
  460. infoIconMediaStoriesArchive: icon {{ "info/info_stories_archive", infoIconFg }};
  461. infoIconMediaStoriesRecent: icon {{ "info/info_stories_recent", infoIconFg }};
  462. infoIconMediaGifts: icon {{ "menu/gift_premium", infoIconFg, point(4px, 4px) }};
  463. infoIconEmojiStatusAccess: icon {{ "menu/read_reactions", infoIconFg, point(4px, 4px) }};
  464. infoIconShare: icon {{ "info/info_share", infoIconFg }};
  465. infoIconEdit: icon {{ "info/info_edit", infoIconFg }};
  466. infoIconDelete: icon {{ "info/info_delete", infoIconFg }};
  467. infoIconDeleteRed: icon {{ "info/info_delete", attentionButtonFg }};
  468. infoIconReport: icon {{ "info/info_report", attentionButtonFg }};
  469. infoIconLeave: icon {{ "info/info_leave", infoIconFg }};
  470. infoIconBlock: icon {{ "info/info_block", attentionButtonFg }};
  471. infoIconMembers: icon {{ "info/info_members", infoIconFg }};
  472. infoInformationIconPosition: point(25px, 12px);
  473. infoNotificationsIconPosition: point(20px, 5px);
  474. infoSharedMediaButtonIconPosition: point(20px, 3px);
  475. infoGroupMembersIconPosition: point(20px, 10px);
  476. infoChannelMembersIconPosition: point(20px, 4px);
  477. infoChannelAdminsIconPosition: point(24px, 7px);
  478. infoEarnCreditsIconPosition: point(24px, 7px);
  479. infoEarnCurrencyIconPosition: point(20px, 3px);
  480. infoOpenApp: RoundButton(defaultActiveButton) {
  481. textTop: 11px;
  482. height: 40px;
  483. }
  484. infoOpenAppMargin: margins(16px, 12px, 16px, 12px);
  485. infoPersonalChannelIconPosition: point(25px, 12px);
  486. infoPersonalChannelNameLabel: FlatLabel(infoProfileStatus) {
  487. textFg: windowBoldFg;
  488. style: semiboldTextStyle;
  489. maxHeight: 20px;
  490. }
  491. infoPersonalChannelDateSkip: 22px;
  492. infoPersonalChannelDateLabel: FlatLabel(infoProfileStatus) {
  493. textFg: dialogsDateFg;
  494. style: TextStyle(semiboldTextStyle) {
  495. font: dialogsDateFont;
  496. }
  497. maxHeight: 20px;
  498. }
  499. infoPersonalChannelUserpicSkip: 3px;
  500. infoPersonalChannelUserpic: UserpicButton(defaultUserpicButton) {
  501. size: size(42px, 42px);
  502. photoSize: 42px;
  503. }
  504. infoBlockHeaderLabel: FlatLabel(infoProfileStatus) {
  505. textFg: windowBoldFg;
  506. style: TextStyle(defaultTextStyle) {
  507. font: semiboldFont;
  508. }
  509. }
  510. infoBlockHeaderPosition: point(79px, 17px);
  511. infoProfileToggle: Toggle(defaultToggle) {
  512. untoggledFg: menuIconFg;
  513. }
  514. infoProfileToggleOver: Toggle(infoProfileToggle) {
  515. untoggledFg: menuIconFgOver;
  516. }
  517. infoProfileButton: SettingsButton(defaultSettingsButton) {
  518. style: defaultTextStyle;
  519. padding: margins(79px, 10px, 8px, 8px);
  520. iconLeft: 22px;
  521. toggle: infoProfileToggle;
  522. toggleOver: infoProfileToggleOver;
  523. toggleSkip: 20px;
  524. }
  525. infoNotificationsButton: SettingsButton(infoProfileButton) {
  526. padding: margins(79px, 13px, 8px, 9px);
  527. }
  528. infoMainButton: SettingsButton(infoProfileButton) {
  529. textFg: lightButtonFg;
  530. textFgOver: lightButtonFgOver;
  531. style: semiboldTextStyle;
  532. }
  533. infoMainButtonAttention: SettingsButton(infoMainButton) {
  534. textFg: attentionButtonFg;
  535. textFgOver: attentionButtonFgOver;
  536. }
  537. infoSharedMediaButton: infoProfileButton;
  538. infoSharedMediaBottomSkip: 12px;
  539. infoBlockButton: SettingsButton(infoProfileButton) {
  540. textFg: attentionButtonFg;
  541. textFgOver: attentionButtonFgOver;
  542. }
  543. infoCreateLinkedChatButton: SettingsButton(infoProfileButton) {
  544. padding: margins(74px, 10px, 8px, 8px);
  545. textFg: lightButtonFg;
  546. textFgOver: lightButtonFgOver;
  547. }
  548. infoUnlinkChatButton: SettingsButton(infoCreateLinkedChatButton) {
  549. textFg: attentionButtonFg;
  550. textFgOver: attentionButtonFgOver;
  551. }
  552. infoBlockButtonSkip: 8px;
  553. infoMembersHeader: 56px;
  554. infoMembersList: PeerList(defaultPeerList) {
  555. item: PeerListItem(defaultPeerListItem) {
  556. photoPosition: point(18px, 6px);
  557. namePosition: point(79px, 11px);
  558. statusPosition: point(79px, 31px);
  559. checkbox: RoundImageCheckbox(defaultPeerListCheckbox) {
  560. selectExtendTwice: 1px;
  561. imageRadius: 21px;
  562. imageSmallRadius: 19px;
  563. check: RoundCheckbox(defaultPeerListCheck) {
  564. size: 0px;
  565. }
  566. }
  567. nameFgChecked: contactsNameFg;
  568. }
  569. }
  570. infoMembersButtonPosition: point(12px, 0px);
  571. infoMembersButton: IconButton(defaultIconButton) {
  572. width: 38px;
  573. height: 38px;
  574. iconPosition: point(-1px, -1px);
  575. rippleAreaPosition: point(0px, 0px);
  576. rippleAreaSize: 38px;
  577. ripple: defaultRippleAnimation;
  578. }
  579. infoMembersAddMember: IconButton(infoMembersButton) {
  580. icon: icon {{ "info/info_add_member", windowBoldFg }};
  581. iconOver: icon {{ "info/info_add_member", windowBoldFg }};
  582. }
  583. infoMembersSearch: IconButton(infoMembersButton) {
  584. icon: icon {{ "info/info_search", windowBoldFg }};
  585. iconOver: icon {{ "info/info_search", windowBoldFg }};
  586. }
  587. infoMembersSearchField: InputField(defaultMultiSelectSearchField) {
  588. }
  589. infoMembersCancelSearch: CrossButton {
  590. width: 44px;
  591. height: 44px;
  592. cross: CrossAnimation {
  593. size: 44px;
  594. skip: 16px;
  595. stroke: 1.5;
  596. minScale: 0.3;
  597. }
  598. crossFg: menuIconFg;
  599. crossFgOver: menuIconFgOver;
  600. crossPosition: point(0px, 0px);
  601. duration: 150;
  602. loadingPeriod: 1000;
  603. ripple: defaultRippleAnimationBgOver;
  604. }
  605. infoMembersSearchTop: 15px;
  606. infoMediaHeaderStyle: semiboldTextStyle;
  607. infoMediaHeaderHeight: 28px;
  608. infoMediaHeaderPosition: point(14px, 6px);
  609. infoMediaSkip: 2px;
  610. infoMediaLeft: 3px;
  611. infoMediaMargin: margins(0px, 6px, 0px, 2px);
  612. infoMediaMinGridSize: 82px;
  613. infoCommonGroupsMargin: margins(0px, 2px, 0px, 2px);
  614. infoCommonGroupsListItem: PeerListItem(defaultPeerListItem) {
  615. height: 52px;
  616. photoSize: 40px;
  617. photoPosition: point(16px, 6px);
  618. namePosition: point(71px, 15px);
  619. nameStyle: TextStyle(defaultTextStyle) {
  620. font: font(14px semibold);
  621. }
  622. statusPosition: point(79px, 31px);
  623. }
  624. infoCommonGroupsList: PeerList(infoMembersList) {
  625. item: infoCommonGroupsListItem;
  626. }
  627. managePeerButton: SettingsCountButton {
  628. button: SettingsButton(infoProfileButton) {
  629. padding: margins(76px, 12px, 76px, 10px);
  630. }
  631. iconPosition: point(20px, 5px);
  632. label: FlatLabel(defaultFlatLabel) {
  633. textFg: windowActiveTextFg;
  634. }
  635. labelPosition: point(25px, 12px);
  636. }
  637. peerPermissionsButton: SettingsCountButton(managePeerButton) {
  638. button: SettingsButton(infoProfileButton) {
  639. padding: margins(22px, 12px, 24px, 10px);
  640. }
  641. iconPosition: point(24px, 5px);
  642. }
  643. manageGroupButtonInner: SettingsButton(infoProfileButton) {
  644. padding: margins(60px, 10px, 24px, 8px);
  645. }
  646. manageGroupButton: SettingsCountButton(managePeerButton) {
  647. button: manageGroupButtonInner;
  648. labelPosition: point(22px, 10px);
  649. iconPosition: point(20px, 4px);
  650. }
  651. infoSharedMediaCountButton: SettingsCountButton(managePeerButton) {
  652. button: infoSharedMediaButton;
  653. iconPosition: point(20px, 4px);
  654. label: defaultSettingsRightLabel;
  655. labelPosition: point(24px, 10px);
  656. }
  657. manageGroupTopButtonWithText: SettingsCountButton(manageGroupButton) {
  658. iconPosition: point(0px, 0px);
  659. }
  660. manageGroupTopicsButton: SettingsCountButton(manageGroupTopButtonWithText) {
  661. button: SettingsButton(manageGroupButtonInner) {
  662. toggle: Toggle(infoProfileToggle) {
  663. lockIcon: icon {{ "info/info_rights_lock", menuIconFg }};
  664. }
  665. toggleOver: Toggle(infoProfileToggleOver) {
  666. lockIcon: icon {{ "info/info_rights_lock", menuIconFgOver }};
  667. }
  668. }
  669. }
  670. managePeerColorsButton: SettingsButton(infoProfileButton) {
  671. padding: margins(60px, 10px, 48px, 8px);
  672. }
  673. manageGroupNoIconButtonInner: SettingsButton(infoProfileButton) {
  674. padding: margins(25px, 11px, 24px, 8px);
  675. }
  676. manageGroupNoIconButton: SettingsCountButton(manageGroupTopButtonWithText) {
  677. button: manageGroupNoIconButtonInner;
  678. labelPosition: point(22px, 11px);
  679. iconPosition: point(0px, 0px);
  680. }
  681. manageDeleteGroupButton: SettingsCountButton(manageGroupNoIconButton) {
  682. button: SettingsButton(manageGroupNoIconButtonInner) {
  683. textFg: attentionButtonFg;
  684. textFgOver: attentionButtonFg;
  685. }
  686. }
  687. manageGroupReactions: IconButton(defaultIconButton) {
  688. width: 24px;
  689. height: 36px;
  690. icon: icon{{ "info/edit/stickers_add", historyComposeIconFg }};
  691. iconOver: icon{{ "info/edit/stickers_add", historyComposeIconFgOver }};
  692. }
  693. manageGroupReactionsField: InputField(defaultInputField) {
  694. textMargins: margins(1px, 12px, 24px, 8px);
  695. placeholderFg: placeholderFg;
  696. placeholderFgActive: placeholderFgActive;
  697. placeholderFgError: placeholderFgActive;
  698. placeholderMargins: margins(1px, 0px, 7px, 0px);
  699. placeholderAlign: align(topleft);
  700. placeholderScale: 0.;
  701. placeholderFont: normalFont;
  702. placeholderShift: -50px;
  703. style: defaultTextStyle;
  704. heightMin: 36px;
  705. heightMax: 158px;
  706. }
  707. manageGroupReactionsFieldPadding: margins(0px, 0px, 0px, -9px);
  708. manageGroupReactionsTextSkip: 16px;
  709. manageGroupReactionsMaxSubtitlePadding: margins(0px, 0px, 0px, -3px);
  710. infoEmptyFg: windowSubTextFg;
  711. infoEmptyPhoto: icon {{ "info/info_media_photo_empty", infoEmptyFg }};
  712. infoEmptyVideo: icon {{ "info/info_media_video_empty", infoEmptyFg }};
  713. infoEmptyAudio: icon {{ "info/info_media_audio_empty", infoEmptyFg }};
  714. infoEmptyFile: icon {{ "info/info_media_file_empty", infoEmptyFg }};
  715. infoEmptyVoice: icon {{ "info/info_media_voice_empty", infoEmptyFg }};
  716. infoEmptyLink: icon {{ "info/info_media_link_empty", infoEmptyFg }};
  717. infoEmptyStories: icon {{ "info/info_media_story_empty", infoEmptyFg }};
  718. infoEmptyIconTop: 120px;
  719. infoEmptyLabelTop: 40px;
  720. infoEmptyLabelSkip: 20px;
  721. infoEmptyLabel: FlatLabel(defaultFlatLabel) {
  722. minWidth: 220px;
  723. textFg: windowSubTextFg;
  724. }
  725. infoStoriesAboutArchive: FlatLabel(defaultFlatLabel) {
  726. minWidth: 245px;
  727. align: align(top);
  728. textFg: windowSubTextFg;
  729. style: defaultTextStyle;
  730. }
  731. infoStoriesAboutArchivePadding: margins(22px, 12px, 22px, 12px);
  732. editPeerBottomButtonsLayoutMargins: margins(0px, 7px, 0px, 0px);
  733. editPeerTopButtonsLayoutSkip: 5px;
  734. editPeerTopButtonsLayoutSkipToBottom: 5px;
  735. editPeerTopButtonsLayoutSkipCustomBottom: 5px;
  736. editPeerHistoryVisibilityTopSkip: 8px;
  737. editPeerPhotoMargins: margins(22px, 8px, 22px, 8px);
  738. editPeerTitle: defaultInputField;
  739. editPeerTitleMargins: margins(27px, 13px, 22px, 8px);
  740. editPeerTitleEmojiPosition: point(0px, 23px);
  741. editPeerTitleField: InputField(defaultInputField) {
  742. textMargins: margins(0px, 28px, 30px, 4px);
  743. }
  744. editPeerDescription: InputField(defaultInputField) {
  745. textBg: transparent;
  746. textMargins: margins(0px, 7px, 0px, 7px);
  747. placeholderFg: placeholderFg;
  748. placeholderFgActive: placeholderFgActive;
  749. placeholderFgError: placeholderFgActive;
  750. placeholderMargins: margins(2px, 0px, 2px, 0px);
  751. placeholderScale: 0.;
  752. placeholderFont: normalFont;
  753. border: 0px;
  754. borderActive: 0px;
  755. heightMin: 32px;
  756. }
  757. editPeerDescriptionMargins: margins(22px, 3px, 22px, 2px);
  758. editPeerPrivaciesMargins: margins(15px, 7px, 22px, 0px);
  759. editPeerPrivacyBottomSkip: 16px;
  760. editPeerPrivacyLabel: FlatLabel(defaultFlatLabel) {
  761. minWidth: 220px;
  762. textFg: windowSubTextFg;
  763. }
  764. editPeerPrivacyBoxCheckbox: Checkbox(defaultBoxCheckbox) {
  765. margin: margins(0px, 8px, 0px, 8px);
  766. style: boxTextStyle;
  767. }
  768. editPeerPrivacyLabelMargins: margins(42px, 0px, 34px, 0px);
  769. editPeerPreHistoryLabelMargins: margins(34px, 0px, 34px, 0px);
  770. editPeerUsernameFieldMargins: margins(22px, 0px, 22px, 0px);
  771. editPeerUsername: setupChannelLink;
  772. editPeerUsernameGood: FlatLabel(defaultFlatLabel) {
  773. textFg: boxTextFgGood;
  774. style: boxTextStyle;
  775. }
  776. editPeerReactionsPreview: 24px;
  777. editPeerReactionsIconLeft: 21px;
  778. historyTopBarBack: IconButton(infoTopBarBack) {
  779. width: 52px;
  780. }
  781. topBarHeight: 54px;
  782. topBarMenuPosition: point(-6px, 45px);
  783. topBarMenuGroupCallSkip: 20px;
  784. topBarBack: icon {{ "title_back", lightButtonFg }};
  785. topBarArrowPadding: margins(39px, 8px, 17px, 8px);
  786. topBarNameRightPadding: 3px;
  787. topBarButton: RoundButton(defaultLightButton) {
  788. width: -18px;
  789. padding: margins(0px, 10px, 12px, 10px);
  790. }
  791. topBarClearButton: RoundButton(defaultLightButton) {
  792. width: -18px;
  793. }
  794. topBarSearch: IconButton {
  795. width: 40px;
  796. height: topBarHeight;
  797. icon: icon {{ "top_bar_search", menuIconFg }};
  798. iconOver: icon {{ "top_bar_search", menuIconFgOver }};
  799. iconPosition: point(4px, 11px);
  800. rippleAreaPosition: point(0px, 7px);
  801. rippleAreaSize: 40px;
  802. ripple: defaultRippleAnimationBgOver;
  803. }
  804. topBarCloseChoose: IconButton(topBarSearch) {
  805. width: 56px;
  806. icon: icon {{ "info/info_close", boxTitleCloseFg }};
  807. iconOver: icon {{ "info/info_close", boxTitleCloseFgOver }};
  808. iconPosition: point(10px, -1px);
  809. rippleAreaPosition: point(7px, 7px);
  810. }
  811. topBarSkip: -5px;
  812. topBarCallSkip: -1px;
  813. topBarMenuToggle: IconButton(topBarSearch) {
  814. width: 44px;
  815. icon: menuToggleIcon;
  816. iconOver: menuToggleIconOver;
  817. iconPosition: point(16px, 17px);
  818. rippleAreaPosition: point(0px, 7px);
  819. }
  820. topBarCall: IconButton(topBarSearch) {
  821. icon: icon {{ "top_bar_call", menuIconFg }};
  822. iconOver: icon {{ "top_bar_call", menuIconFgOver }};
  823. }
  824. topBarGroupCall: IconButton(topBarSearch) {
  825. icon: icon {{ "top_bar_group_call", menuIconFg }};
  826. iconOver: icon {{ "top_bar_group_call", menuIconFgOver }};
  827. iconPosition: point(4px, 12px);
  828. }
  829. topBarInfo: IconButton(topBarSearch) {
  830. icon: icon {{ "top_bar_profile", menuIconFg }};
  831. iconOver: icon {{ "top_bar_profile", menuIconFgOver }};
  832. }
  833. topBarInfoActive: icon {{ "top_bar_profile", windowActiveTextFg }};
  834. topBarActionSkip: 10px;
  835. topBarInfoButtonSize: size(52px, topBarHeight);
  836. topBarInfoButtonInnerSize: 42px;
  837. topBarInfoButtonInnerPosition: point(2px, -1px);
  838. topBarInfoButton: UserpicButton(defaultUserpicButton) {
  839. size: topBarInfoButtonSize;
  840. photoSize: topBarInfoButtonInnerSize;
  841. photoPosition: topBarInfoButtonInnerPosition;
  842. }
  843. topBarConnectingPosition: point(2px, 5px);
  844. topBarConnectingSkip: 6px;
  845. topBarConnectingAnimation: InfiniteRadialAnimation(defaultInfiniteRadialAnimation) {
  846. color: windowSubTextFg;
  847. thickness: 1px;
  848. size: size(8px, 8px);
  849. }
  850. inviteLinkTitleRight: FlatLabel(defaultSubsectionTitle) {
  851. minWidth: 0px;
  852. }
  853. inviteLinkFieldRadius: 5px;
  854. inviteLinkFieldHeight: 42px;
  855. inviteLinkFieldMargin: margins(14px, 12px, 36px, 9px);
  856. inviteLinkThreeDotsIcon: icon {{ "info/edit/dotsmini", dialogsMenuIconFg }};
  857. inviteLinkThreeDotsIconOver: icon {{ "info/edit/dotsmini", dialogsMenuIconFgOver }};
  858. inviteLinkThreeDots: IconButton(defaultIconButton) {
  859. width: 36px;
  860. height: 44px;
  861. icon: inviteLinkThreeDotsIcon;
  862. iconOver: inviteLinkThreeDotsIconOver;
  863. iconPosition: point(-1px, -1px);
  864. rippleAreaSize: 0px;
  865. }
  866. inviteLinkFieldPadding: margins(22px, 7px, 22px, 14px);
  867. inviteLinkFieldLabel: FlatLabel(defaultFlatLabel) {
  868. align: align(center);
  869. }
  870. inviteLinkButton: RoundButton(defaultActiveButton) {
  871. height: 36px;
  872. textTop: 9px;
  873. radius: 6px;
  874. }
  875. inviteLinkButtonsPadding: margins(22px, 0px, 22px, 0px);
  876. inviteLinkButtonsSkip: 10px;
  877. inviteLinkCopy: RoundButton(inviteLinkButton) {
  878. icon: icon {{ "info/edit/links_copy", activeButtonFg }};
  879. iconOver: icon {{ "info/edit/links_copy", activeButtonFgOver }};
  880. iconPosition: point(-1px, 2px);
  881. }
  882. inviteLinkShare: RoundButton(inviteLinkCopy) {
  883. icon: icon {{ "info/edit/links_share", activeButtonFg }};
  884. iconOver: icon {{ "info/edit/links_share", activeButtonFgOver }};
  885. }
  886. inviteLinkReactivate: RoundButton(inviteLinkCopy) {
  887. icon: icon {{ "info/edit/links_reactivate", activeButtonFg }};
  888. iconOver: icon {{ "info/edit/links_reactivate", activeButtonFgOver }};
  889. }
  890. inviteLinkDelete: RoundButton(inviteLinkCopy) {
  891. icon: icon {{ "info/edit/links_delete", activeButtonFg }};
  892. iconOver: icon {{ "info/edit/links_delete", activeButtonFgOver }};
  893. }
  894. inviteLinkUserpics: GroupCallUserpics {
  895. size: 28px;
  896. shift: 6px;
  897. stroke: 2px;
  898. align: align(left);
  899. }
  900. inviteLinkUserpicsSkip: 8px;
  901. inviteLinkJoinedFont: font(14px);
  902. inviteLinkJoinedRowPadding: margins(0px, 18px, 0px, 8px);
  903. inviteLinkCreateSkip: 10px;
  904. inviteLinkCreate: SettingsButton(defaultSettingsButton) {
  905. textFg: lightButtonFg;
  906. textFgOver: lightButtonFgOver;
  907. textBg: windowBg;
  908. textBgOver: windowBgOver;
  909. style: semiboldTextStyle;
  910. height: 20px;
  911. padding: margins(60px, 7px, 12px, 5px);
  912. toggle: infoProfileToggle;
  913. toggleOver: infoProfileToggleOver;
  914. toggleSkip: 22px;
  915. ripple: defaultRippleAnimation;
  916. }
  917. inviteLinkCreateIcon: icon {{ "info/edit/roundbtn_plus", windowFgActive }};
  918. inviteLinkCreateIconSize: 18px;
  919. inviteLinkListItem: PeerListItem(defaultPeerListItem) {
  920. button: OutlineButton(defaultPeerListButton) {
  921. font: normalFont;
  922. padding: margins(11px, 5px, 11px, 5px);
  923. }
  924. height: 52px;
  925. photoPosition: point(9px, 4px);
  926. namePosition: point(60px, 6px);
  927. statusPosition: point(60px, 26px);
  928. photoSize: 44px;
  929. }
  930. inviteLinkList: PeerList(defaultPeerList) {
  931. item: inviteLinkListItem;
  932. padding: margins(0px, 4px, 0px, 0px);
  933. }
  934. inviteLinkChatList: PeerList(peerListBox) {
  935. padding: margins(0px, 4px, 0px, 6px);
  936. }
  937. inviteLinkAdminsList: PeerList(inviteLinkList) {
  938. item: PeerListItem(inviteLinkListItem) {
  939. photoPosition: point(16px, 9px);
  940. namePosition: point(62px, 6px);
  941. statusPosition: point(62px, 26px);
  942. photoSize: 34px;
  943. }
  944. padding: margins(0px, 5px, 0px, 6px);
  945. }
  946. inviteLinkIconSkip: 7px;
  947. inviteLinkIconStroke: 2px;
  948. inviteLinkIcon: icon {{ "info/edit/links_link", mediaviewFileExtFg }};
  949. inviteLinkRevokedIcon: icon {{ "info/edit/links_revoked", mediaviewFileExtFg }};
  950. inviteLinkThreeDotsSkip: 12px;
  951. inviteLinkRevokedTitlePadding: margins(22px, 16px, 10px, 4px);
  952. inviteLinkLimitMargin: margins(22px, 8px, 22px, 8px);
  953. inviteLinkSubscriptionSize: 18px;
  954. inviteLinkQrPixel: 8px;
  955. inviteLinkQrSkip: 24px;
  956. inviteLinkQrMargin: margins(0px, 0px, 0px, 13px);
  957. inviteLinkQrValuePadding: margins(22px, 0px, 22px, 12px);
  958. inviteLinkCreditsField: InputField(defaultInputField) {
  959. textMargins: margins(23px, 10px, 0px, 0px);
  960. textAlign: align(left);
  961. textFg: historyComposeAreaFg;
  962. textBg: historyComposeAreaBg;
  963. heightMin: 36px;
  964. heightMax: 36px;
  965. placeholderFg: placeholderFg;
  966. placeholderFgActive: placeholderFgActive;
  967. placeholderFgError: placeholderFgActive;
  968. placeholderMargins: margins(0px, 0px, 2px, 0px);
  969. placeholderAlign: align(left);
  970. placeholderScale: 0.;
  971. placeholderFont: normalFont;
  972. placeholderShift: -50px;
  973. duration: 100;
  974. }
  975. inviteLinkSubscribeBoxTitle: FlatLabel(defaultFlatLabel) {
  976. minWidth: 300px;
  977. textFg: windowBoldFg;
  978. align: align(top);
  979. style: TextStyle(defaultTextStyle) {
  980. font: font(17px semibold);
  981. }
  982. }
  983. inviteLinkSubscribeBoxAbout: FlatLabel(defaultFlatLabel) {
  984. minWidth: 300px;
  985. align: align(top);
  986. }
  987. inviteLinkSubscribeBoxTerms: FlatLabel(defaultFlatLabel) {
  988. minWidth: 300px;
  989. align: align(top);
  990. textFg: windowSubTextFg;
  991. style: TextStyle(defaultTextStyle) {
  992. font: font(11px);
  993. }
  994. }
  995. usernamesReorderIcon: icon {{ "stickers_reorder", dialogsMenuIconFg }};
  996. infoAboutGigagroup: FlatLabel(defaultFlatLabel) {
  997. minWidth: 274px;
  998. }
  999. infoScrollDateHideTimeout: historyScrollDateHideTimeout;
  1000. infoDateFadeDuration: historyDateFadeDuration;
  1001. shortInfoWidth: 304px;
  1002. shortInfoLabeledPadding: margins(24px, 16px, 24px, 0px);
  1003. shortInfoScroll: ScrollArea(defaultScrollArea) {
  1004. deltat: 3px;
  1005. deltab: 0px;
  1006. round: 1px;
  1007. width: 8px;
  1008. deltax: 3px;
  1009. duration: 150;
  1010. hiding: 1000;
  1011. }
  1012. ShortInfoCover {
  1013. size: pixels;
  1014. radius: pixels;
  1015. name: FlatLabel;
  1016. namePosition: point;
  1017. status: FlatLabel;
  1018. statusPosition: point;
  1019. linePadding: pixels;
  1020. lineSkip: pixels;
  1021. line: pixels;
  1022. shadowHeight: pixels;
  1023. radialAnimation: InfiniteRadialAnimation;
  1024. }
  1025. shortInfoCover: ShortInfoCover {
  1026. size: shortInfoWidth;
  1027. radius: boxRadius;
  1028. name: FlatLabel(defaultFlatLabel) {
  1029. textFg: groupCallVideoTextFg;
  1030. maxHeight: 19px;
  1031. style: TextStyle(defaultTextStyle) {
  1032. font: font(15px semibold);
  1033. }
  1034. }
  1035. namePosition: point(25px, 37px);
  1036. status: FlatLabel(defaultFlatLabel) {
  1037. textFg: groupCallVideoSubTextFg;
  1038. maxHeight: 18px;
  1039. }
  1040. statusPosition: point(25px, 14px);
  1041. linePadding: 8px;
  1042. lineSkip: 4px;
  1043. line: 2px;
  1044. shadowHeight: 80px;
  1045. radialAnimation: InfiniteRadialAnimation(defaultInfiniteRadialAnimation) {
  1046. color: radialFg;
  1047. thickness: 2px;
  1048. }
  1049. }
  1050. permissionsExpandIcon: icon{{ "info/edit/expand_arrow_small", windowBoldFg }};
  1051. similarChannelsLockOverlap: 58px;
  1052. similarChannelsLockFade: 58px;
  1053. similarChannelsLock: RoundButton(defaultActiveButton) {
  1054. height: 44px;
  1055. textTop: 12px;
  1056. style: semiboldTextStyle;
  1057. }
  1058. similarChannelsLockLabel: FlatLabel(defaultFlatLabel) {
  1059. textFg: premiumButtonFg;
  1060. style: semiboldTextStyle;
  1061. }
  1062. similarChannelsLockPadding: margins(12px, 12px, 12px, 12px);
  1063. similarChannelsLockAbout: FlatLabel(defaultFlatLabel) {
  1064. textFg: windowSubTextFg;
  1065. align: align(top);
  1066. minWidth: 128px;
  1067. }
  1068. similarChannelsLockAboutPadding: margins(12px, 12px, 12px, 12px);
  1069. infoHoursState: FlatLabel(infoLabeled) {
  1070. minWidth: 0px;
  1071. }
  1072. infoHoursValue: FlatLabel(infoHoursState) {
  1073. textFg: windowSubTextFg;
  1074. align: align(topright);
  1075. }
  1076. infoHoursDayLabel: infoHoursState;
  1077. infoHoursOuter: RoundButton(defaultActiveButton) {
  1078. textBg: transparent;
  1079. textBgOver: transparent;
  1080. ripple: defaultRippleAnimationBgOver;
  1081. }
  1082. infoHoursOuterMargin: margins(8px, 4px, 8px, 4px);
  1083. infoHoursDaySkip: 6px;
  1084. infoHoursArrowSize: 4px;
  1085. infoSharedMediaScroll: ScrollArea(defaultScrollArea) {
  1086. round: 1px;
  1087. width: 5px;
  1088. deltax: 2px;
  1089. }
  1090. infoGiftTooltip: ImportantTooltip(defaultImportantTooltip) {
  1091. margin: margins(4px, 4px, 4px, 4px);
  1092. padding: margins(8px, 2px, 8px, 3px);
  1093. }
  1094. infoGiftTooltipFont: font(11px semibold);