chat_helpers.style 43 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568
  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/layers/layers.style";
  10. using "ui/widgets/widgets.style";
  11. using "ui/menu_icons.style";
  12. using "ui/effects/premium.style";
  13. GroupCallUserpics {
  14. size: pixels;
  15. shift: pixels;
  16. stroke: pixels;
  17. align: align;
  18. }
  19. TabbedSearch {
  20. outer: color;
  21. bg: color;
  22. bgActive: color;
  23. fg: color;
  24. fgActive: color;
  25. fadeLeft: icon;
  26. fadeRight: icon;
  27. field: InputField;
  28. search: IconButton;
  29. back: IconButton;
  30. cancel: CrossButton;
  31. defaultFieldWidth: pixels;
  32. groupWidth: pixels;
  33. groupSkip: pixels;
  34. height: pixels;
  35. }
  36. ComposeIcons {
  37. settings: icon;
  38. collectibles: icon;
  39. recent: icon;
  40. recentActive: icon;
  41. people: icon;
  42. peopleActive: icon;
  43. nature: icon;
  44. natureActive: icon;
  45. food: icon;
  46. foodActive: icon;
  47. activity: icon;
  48. activityActive: icon;
  49. travel: icon;
  50. travelActive: icon;
  51. objects: icon;
  52. objectsActive: icon;
  53. symbols: icon;
  54. symbolsActive: icon;
  55. menuFave: icon;
  56. menuUnfave: icon;
  57. menuStickerSet: icon;
  58. menuRecentRemove: icon;
  59. menuGifAdd: icon;
  60. menuGifRemove: icon;
  61. menuMute: icon;
  62. menuSchedule: icon;
  63. menuWhenOnline: icon;
  64. menuSpoiler: icon;
  65. menuSpoilerOff: icon;
  66. menuBelow: icon;
  67. menuAbove: icon;
  68. menuPrice: icon;
  69. stripBubble: icon;
  70. stripExpandPanel: icon;
  71. stripExpandDropdown: icon;
  72. }
  73. EmojiSuggestions {
  74. dropdown: InnerDropdown;
  75. bg: color;
  76. overBg: color;
  77. textFg: color;
  78. fadeLeft: icon;
  79. fadeRight: icon;
  80. }
  81. EmojiPan {
  82. margin: margins;
  83. padding: margins;
  84. showAnimation: PanelAnimation;
  85. desiredSize: pixels;
  86. verticalSizeSub: pixels;
  87. header: pixels;
  88. headerLeft: pixels;
  89. headerLockLeft: pixels;
  90. headerLockedLeft: pixels;
  91. headerTop: pixels;
  92. footer: pixels;
  93. iconSkip: pixels;
  94. iconWidth: pixels;
  95. iconArea: pixels;
  96. bg: color;
  97. headerFg: color;
  98. trendingHeaderFg: color;
  99. trendingSubheaderFg: color;
  100. trendingUnreadFg: color;
  101. overBg: color;
  102. pathBg: color;
  103. pathFg: color;
  104. textFg: color;
  105. categoriesBg: color;
  106. categoriesBgOver: color;
  107. fadeLeft: icon;
  108. fadeRight: icon;
  109. menu: PopupMenu;
  110. expandedSeparator: MenuSeparator;
  111. tabs: SettingsSlider;
  112. search: TabbedSearch;
  113. searchMargin: margins;
  114. colorAll: IconButton;
  115. colorAllLabel: FlatLabel;
  116. removeSet: IconButton;
  117. boxLabel: FlatLabel;
  118. icons: ComposeIcons;
  119. about: FlatLabel;
  120. aboutPadding: margins;
  121. autocompleteBottomSkip: pixels;
  122. }
  123. MessageBar {
  124. title: TextStyle;
  125. titleFg: color;
  126. text: TextStyle;
  127. textFg: color;
  128. textPalette: TextPalette;
  129. duration: int;
  130. }
  131. EmojiButton {
  132. inner: IconButton;
  133. bg: color;
  134. lineFg: color;
  135. lineFgOver: color;
  136. }
  137. SendButton {
  138. inner: IconButton;
  139. stars: RoundButton;
  140. record: icon;
  141. recordOver: icon;
  142. round: icon;
  143. roundOver: icon;
  144. sendDisabledFg: color;
  145. }
  146. RecordBarLock {
  147. ripple: RippleAnimation;
  148. originTop: icon;
  149. originBottom: icon;
  150. originBody: icon;
  151. shadowTop: icon;
  152. shadowBottom: icon;
  153. shadowBody: icon;
  154. arrow: icon;
  155. fg: color;
  156. }
  157. RecordBar {
  158. radius: pixels;
  159. bg: color;
  160. durationFg: color;
  161. cancel: color;
  162. cancelActive: color;
  163. cancelRipple: RippleAnimation;
  164. lock: RecordBarLock;
  165. remove: IconButton;
  166. }
  167. ComposeFiles {
  168. check: Check;
  169. checkbox: Checkbox;
  170. menu: IconButton;
  171. caption: InputField;
  172. emoji: EmojiButton;
  173. confirmBg: color;
  174. buttonFile: IconButton;
  175. buttonFileEdit: icon;
  176. buttonFileDelete: icon;
  177. iconBg: color;
  178. iconPlay: icon;
  179. iconImage: icon;
  180. iconDocument: icon;
  181. nameFg: color;
  182. statusFg: color;
  183. }
  184. ComposeControls {
  185. bg: color;
  186. radius: pixels;
  187. field: InputField;
  188. send: SendButton;
  189. attach: IconButton;
  190. emoji: EmojiButton;
  191. like: IconButton;
  192. liked: icon;
  193. suggestions: EmojiSuggestions;
  194. tabbed: EmojiPan;
  195. tabbedHeightMin: pixels;
  196. tabbedHeightMax: pixels;
  197. record: RecordBar;
  198. files: ComposeFiles;
  199. premium: PremiumLimits;
  200. boxField: InputField;
  201. restrictionLabel: FlatLabel;
  202. premiumRequired: ComposePremiumRequired;
  203. }
  204. ReportBox {
  205. button: SettingsButton;
  206. noIconButton: SettingsButton;
  207. label: FlatLabel;
  208. field: InputField;
  209. dividerBg: color;
  210. dividerFg: color;
  211. spam: icon;
  212. fake: icon;
  213. violence: icon;
  214. children: icon;
  215. pornography: icon;
  216. copyright: icon;
  217. drugs: icon;
  218. personal: icon;
  219. other: icon;
  220. }
  221. WhoRead {
  222. userpics: GroupCallUserpics;
  223. photoLeft: pixels;
  224. photoSize: pixels;
  225. photoSkip: pixels;
  226. nameLeft: pixels;
  227. iconPosition: point;
  228. itemPadding: margins;
  229. }
  230. defaultWhoRead: WhoRead {
  231. userpics: GroupCallUserpics {
  232. size: 22px;
  233. shift: 8px;
  234. stroke: 4px;
  235. align: align(right);
  236. }
  237. photoLeft: 13px;
  238. photoSize: 30px;
  239. photoSkip: 5px;
  240. nameLeft: 57px;
  241. iconPosition: point(15px, 7px);
  242. itemPadding: margins(44px, 9px, 17px, 7px);
  243. }
  244. whenReadStyle: TextStyle(defaultTextStyle) {
  245. font: font(12px);
  246. }
  247. whenReadPadding: margins(34px, 3px, 17px, 4px);
  248. whenReadIconPosition: point(8px, 0px);
  249. whenReadSkip: 3px;
  250. whenReadShowPadding: margins(6px, 0px, 6px, 2px);
  251. switchPmButton: RoundButton(defaultBoxButton) {
  252. width: 320px;
  253. height: 34px;
  254. textTop: 7px;
  255. }
  256. stickersRestrictedLabel: FlatLabel(defaultFlatLabel) {
  257. minWidth: 200px;
  258. align: align(center);
  259. textFg: noContactsColor;
  260. }
  261. stickersTrendingHeader: 56px;
  262. stickersTrendingSkip: 4px;
  263. stickersTrendingHeaderFont: semiboldFont;
  264. stickersTrendingHeaderFg: windowFg;
  265. stickersTrendingHeaderTop: 11px;
  266. stickersTrendingSubheaderFont: normalFont;
  267. stickersTrendingSubheaderFg: windowSubTextFg;
  268. stickersTrendingSubheaderTop: 31px;
  269. stickersHeaderBadgeFont: font(10px);
  270. stickersHeaderBadgeFontTop: 12px;
  271. stickersHeaderBadgeFontSkip: 12px;
  272. emojiPanButtonRight: 7px;
  273. emojiPanButtonTop: 8px;
  274. emojiPanButton: RoundButton(defaultActiveButton) {
  275. width: -24px;
  276. height: 23px;
  277. textTop: 2px;
  278. }
  279. emojiPanExpand: RoundButton(defaultActiveButton) {
  280. style: TextStyle(semiboldTextStyle) {
  281. font: font(12px bold);
  282. }
  283. width: -8px;
  284. height: 19px;
  285. textTop: 1px;
  286. }
  287. stickersTrendingAddTop: 14px;
  288. stickersTrendingAdd: RoundButton(defaultActiveButton) {
  289. width: -16px;
  290. height: 26px;
  291. textTop: 4px;
  292. }
  293. stickersTrendingInstalled: RoundButton(stickersTrendingAdd) {
  294. textFg: activeButtonBg;
  295. textFgOver: activeButtonBgOver;
  296. textBg: lightButtonBgOver;
  297. textBgOver: lightButtonBgOver;
  298. ripple: RippleAnimation(defaultRippleAnimation) {
  299. color: activeButtonSecondaryFg;
  300. }
  301. }
  302. stickersRemove: IconButton(defaultIconButton) {
  303. width: 40px;
  304. height: 40px;
  305. icon: icon {{ "info/info_media_delete", menuIconFg }};
  306. iconOver: icon {{ "info/info_media_delete", menuIconFgOver }};
  307. rippleAreaSize: 40px;
  308. rippleAreaPosition: point(0px, 0px);
  309. ripple: defaultRippleAnimationBgOver;
  310. }
  311. stickersUndoRemove: RoundButton(defaultLightButton) {
  312. width: -16px;
  313. height: 26px;
  314. textTop: 4px;
  315. }
  316. stickersRemoveSkip: 4px;
  317. stickersReorderIcon: icon {{ "stickers_reorder", menuIconFg }};
  318. stickersReorderSkip: 18px;
  319. stickersTabs: defaultTabsSlider;
  320. stickersRowItem: PeerListItem(defaultPeerListItem) {
  321. height: 52px;
  322. photoSize: 32px;
  323. photoPosition: point(18px, 10px);
  324. namePosition: point(66px, 7px);
  325. statusPosition: point(66px, 26px);
  326. button: OutlineButton(defaultPeerListButton) {
  327. textBg: contactsBg;
  328. textBgOver: contactsBgOver;
  329. ripple: defaultRippleAnimation;
  330. }
  331. statusFg: contactsStatusFg;
  332. statusFgOver: contactsStatusFgOver;
  333. statusFgActive: contactsStatusFgOnline;
  334. }
  335. stickerEmojiSkip: 5px;
  336. stickersFeaturedBadgeFont: font(12px bold);
  337. stickersFeaturedBadgeSize: 15px;
  338. stickersFeaturedBadgeTextTop: -1px;
  339. stickersFeaturedBadgePadding: 4px;
  340. stickersFeaturedBadgeSkip: 4px;
  341. stickersFeaturedBadgeTop: 9px;
  342. stickersFeaturedUnreadBg: msgFileInBg;
  343. stickersFeaturedUnreadSize: 5px;
  344. stickersFeaturedUnreadSkip: 5px;
  345. stickersFeaturedUnreadTop: 7px;
  346. stickersMaxHeight: 320px;
  347. stickersPadding: margins(19px, 13px, 19px, 13px);
  348. stickersSize: size(64px, 64px);
  349. emojiSetPadding: margins(12px, 0px, 12px, 0px);
  350. emojiSetMaxHeight: 197px;
  351. emojiSetSize: size(42px, 39px);
  352. stickersScroll: ScrollArea(boxScroll) {
  353. deltat: 19px;
  354. deltab: 9px;
  355. }
  356. stickersRowDisabledOpacity: 0.4;
  357. stickersRowDuration: 200;
  358. emojiStatusDefault: icon {{ "emoji/stickers_premium", emojiIconFg }};
  359. filtersRemove: IconButton(stickersRemove) {
  360. ripple: defaultRippleAnimation;
  361. }
  362. emojiPanMargins: margins(10px, 10px, 10px, 10px);
  363. emojiTabs: defaultTabsSlider;
  364. emojiCategoryIconTop: 6px;
  365. emojiPanAnimation: PanelAnimation(defaultPanelAnimation) {
  366. fadeBg: emojiPanBg;
  367. shadow: boxRoundShadow;
  368. }
  369. emojiPanWidth: 345px;
  370. emojiPanMinHeight: 278px;
  371. emojiPanMaxHeight: 640px;
  372. emojiPanHeightRatio: 0.75;
  373. emojiPanShowDuration: 200;
  374. emojiPanDuration: 200;
  375. emojiPanHover: windowBgOver;
  376. emojiPanSlideDuration: 200;
  377. emojiPanArea: size(34px, 32px);
  378. emojiPanRadius: 8px;
  379. defaultTabbedSearchCancel: CrossButton {
  380. width: 33px;
  381. height: 33px;
  382. cross: CrossAnimation {
  383. size: 27px;
  384. skip: 8px;
  385. stroke: 1.;
  386. minScale: 0.3;
  387. }
  388. crossFg: menuIconFg;
  389. crossFgOver: menuIconFg;
  390. crossPosition: point(1px, 3px);
  391. duration: 150;
  392. loadingPeriod: 1000;
  393. ripple: emptyRippleAnimation;
  394. }
  395. defaultTabbedSearchField: InputField(defaultMultiSelectSearchField) {
  396. textMargins: margins(2px, 7px, 2px, 0px);
  397. }
  398. defaultTabbedSearchButton: IconButton(defaultIconButton) {
  399. width: 33px;
  400. height: 33px;
  401. icon: icon{{ "emoji/emoji_search_input", emojiIconFg }};
  402. iconOver: icon{{ "emoji/emoji_search_input", emojiIconFg }};
  403. iconPosition: point(7px, -1px);
  404. ripple: emptyRippleAnimation;
  405. }
  406. defaultTabbedSearchBack: IconButton(defaultIconButton) {
  407. width: 33px;
  408. height: 33px;
  409. icon: icon{{ "emoji/emoji_back", menuIconFg }};
  410. iconOver: icon{{ "emoji/emoji_back", menuIconFg }};
  411. iconPosition: point(7px, -1px);
  412. ripple: emptyRippleAnimation;
  413. }
  414. defaultTabbedSearch: TabbedSearch {
  415. outer: emojiPanBg;
  416. bg: emojiPanHover;
  417. bgActive: windowBgRipple;
  418. fg: emojiIconFg;
  419. fgActive: emojiSubIconFgActive;
  420. fadeLeft: icon {{ "fade_horizontal-flip_horizontal", emojiPanHover }};
  421. fadeRight: icon {{ "fade_horizontal", emojiPanHover }};
  422. field: defaultTabbedSearchField;
  423. search: defaultTabbedSearchButton;
  424. back: defaultTabbedSearchBack;
  425. cancel: defaultTabbedSearchCancel;
  426. defaultFieldWidth: 103px;
  427. groupWidth: 30px;
  428. groupSkip: 2px;
  429. height: 33px;
  430. }
  431. inlineResultsMinHeight: 278px;
  432. inlineResultsMaxHeight: 640px;
  433. emojiPanHeaderFont: semiboldFont;
  434. emojiPanRemoveSkip: 10px;
  435. emojiPanRemoveTop: 10px;
  436. emojiPanColorAllSkip: 9px;
  437. emojiColorsPadding: 5px;
  438. emojiColorsSep: 1px;
  439. emojiColorsSepColor: shadowFg;
  440. emojiIconSelectSkip: 3px;
  441. emojiPremiumRequired: icon{{ "emoji/premium_lock", windowSubTextFg }};
  442. hashtagClose: IconButton {
  443. width: 30px;
  444. height: 30px;
  445. icon: smallCloseIcon;
  446. iconOver: smallCloseIconOver;
  447. iconPosition: point(10px, 10px);
  448. rippleAreaPosition: point(5px, 5px);
  449. rippleAreaSize: 20px;
  450. ripple: defaultRippleAnimationBgOver;
  451. }
  452. stickerPanWidthMin: 64px;
  453. stickerPanSize: size(stickerPanWidthMin, stickerPanWidthMin);
  454. stickerEffectWidthMin: 48px;
  455. stickerPanPadding: 11px;
  456. stickerPanDeleteIconBg: icon {{ "emoji/emoji_delete_bg", stickerPanDeleteBg }};
  457. stickerPanDeleteIconFg: icon {{ "emoji/emoji_delete", stickerPanDeleteFg }};
  458. stickerPanDeleteOpacityBg: 0.3;
  459. stickerPanDeleteOpacityBgOver: 0.5;
  460. stickerPanDeleteOpacityFg: 0.8;
  461. stickerPanDeleteOpacityFgOver: 1.;
  462. stickerPanRemoveSet: IconButton(hashtagClose) {
  463. width: 20px;
  464. height: 20px;
  465. iconPosition: point(-1px, -1px);
  466. rippleAreaPosition: point(0px, 0px);
  467. }
  468. stickerIconMove: 400;
  469. stickerPreviewDuration: 150;
  470. stickerPreviewMin: 0.1;
  471. emojiPanColorAll: IconButton(stickerPanRemoveSet) {
  472. width: 24px;
  473. height: 24px;
  474. rippleAreaSize: 24px;
  475. icon: icon {{ "emoji/emoji_skin", smallCloseIconFg }};
  476. iconOver: icon {{ "emoji/emoji_skin", smallCloseIconFgOver }};
  477. }
  478. emojiPanColorAllLabel: FlatLabel(defaultFlatLabel) {
  479. textFg: windowSubTextFg;
  480. align: align(top);
  481. minWidth: 40px;
  482. style: TextStyle(defaultTextStyle) {
  483. font: font(12px);
  484. }
  485. }
  486. emojiPanColorAllPadding: margins(10px, 6px, 10px, -1px);
  487. stickerGroupCategorySize: 28px;
  488. stickerGroupCategoryAbout: defaultTextStyle;
  489. stickerGroupCategoryAddMargin: margins(0px, 10px, 0px, 5px);
  490. stickerGroupCategoryAdd: stickersTrendingAdd;
  491. stickersToast: Toast(defaultToast) {
  492. minWidth: 340px;
  493. maxWidth: 340px;
  494. padding: margins(16px, 13px, 16px, 12px);
  495. }
  496. stickersEmpty: icon {{ "stickers_empty", windowSubTextFg }};
  497. emojiEmpty: icon {{ "emoji_empty", windowSubTextFg }};
  498. editMediaButtonSize: 32px;
  499. editMediaButtonIconFile: icon {{ "send_media/send_media_replace", menuIconFg }};
  500. editMediaButton: IconButton(defaultIconButton) {
  501. width: editMediaButtonSize;
  502. height: editMediaButtonSize;
  503. icon: editMediaButtonIconFile;
  504. rippleAreaSize: editMediaButtonSize;
  505. ripple: defaultRippleAnimation;
  506. }
  507. sendBoxAlbumGroupEditInternalSkip: 8px;
  508. sendBoxAlbumGroupSkipRight: 5px;
  509. sendBoxAlbumGroupSkipTop: 5px;
  510. sendBoxAlbumGroupRadius: 4px;
  511. sendBoxAlbumGroupSize: size(62px, 25px);
  512. sendBoxAlbumGroupSizeVertical: size(30px, 50px);
  513. sendBoxAlbumSmallGroupSize: size(30px, 25px);
  514. sendBoxFileGroupSkipTop: 2px;
  515. sendBoxFileGroupSkipRight: 5px;
  516. sendBoxFileGroupEditInternalSkip: -1px;
  517. sendBoxAlbumGroupButtonFile: IconButton(editMediaButton) {
  518. ripple: RippleAnimation(defaultRippleAnimation) {
  519. color: windowBgRipple;
  520. }
  521. }
  522. sendBoxAlbumGroupEditButtonIconFile: editMediaButtonIconFile;
  523. sendBoxAlbumGroupDeleteButtonIconFile: icon {{ "send_media/send_media_delete", menuIconFg }};
  524. sendBoxAlbumButtonMediaEdit: icon {{ "send_media/send_media_replace", roundedFg }};
  525. sendBoxAlbumGroupButtonMediaEdit: icon {{ "send_media/send_media_replace", roundedFg, point(4px, 1px) }};
  526. sendBoxAlbumGroupButtonMediaDelete: icon {{ "send_media/send_media_delete", roundedFg }};
  527. defaultComposeIcons: ComposeIcons {
  528. settings: icon {{ "emoji/emoji_settings", emojiIconFg }};
  529. collectibles: icon {{ "menu/unique", emojiIconFg }};
  530. recent: icon {{ "emoji/emoji_recent", emojiIconFg }};
  531. recentActive: icon {{ "emoji/emoji_recent", emojiSubIconFgActive }};
  532. people: icon {{ "emoji/emoji_smile", emojiIconFg }};
  533. peopleActive: icon {{ "emoji/emoji_smile", emojiSubIconFgActive }};
  534. nature: icon {{ "emoji/emoji_nature", emojiIconFg }};
  535. natureActive: icon {{ "emoji/emoji_nature", emojiSubIconFgActive }};
  536. food: icon {{ "emoji/emoji_food", emojiIconFg }};
  537. foodActive: icon {{ "emoji/emoji_food", emojiSubIconFgActive }};
  538. activity: icon {{ "emoji/emoji_activities", emojiIconFg }};
  539. activityActive: icon {{ "emoji/emoji_activities", emojiSubIconFgActive }};
  540. travel: icon {{ "emoji/emoji_travel", emojiIconFg }};
  541. travelActive: icon {{ "emoji/emoji_travel", emojiSubIconFgActive }};
  542. objects: icon {{ "emoji/emoji_objects", emojiIconFg }};
  543. objectsActive: icon {{ "emoji/emoji_objects", emojiSubIconFgActive }};
  544. symbols: icon {{ "emoji/emoji_love", emojiIconFg }};
  545. symbolsActive: icon {{ "emoji/emoji_love", emojiSubIconFgActive }};
  546. menuFave: menuIconFave;
  547. menuUnfave: menuIconUnfave;
  548. menuStickerSet: menuIconStickers;
  549. menuRecentRemove: menuIconDelete;
  550. menuGifAdd: menuIconGif;
  551. menuGifRemove: menuIconDelete;
  552. menuMute: menuIconMute;
  553. menuSchedule: menuIconSchedule;
  554. menuWhenOnline: menuIconWhenOnline;
  555. menuSpoiler: menuIconSpoiler;
  556. menuSpoilerOff: menuIconSpoilerOff;
  557. menuBelow: menuIconBelow;
  558. menuAbove: menuIconAbove;
  559. menuPrice: menuIconEarn;
  560. stripBubble: icon{
  561. { "chat/reactions_bubble_shadow", windowShadowFg },
  562. { "chat/reactions_bubble", emojiPanBg },
  563. };
  564. stripExpandPanel: icon{
  565. { "chat/reactions_round_big", windowBgRipple },
  566. { "chat/reactions_expand_panel", windowSubTextFg },
  567. };
  568. stripExpandDropdown: icon{
  569. { "chat/reactions_round_small", windowBgRipple },
  570. { "chat/reactions_expand_panel", windowSubTextFg },
  571. };
  572. }
  573. defaultEmojiPanAbout: FlatLabel(defaultFlatLabel) {
  574. minWidth: 10px;
  575. align: align(top);
  576. textFg: windowSubTextFg;
  577. style: TextStyle(defaultTextStyle) {
  578. font: font(11px);
  579. }
  580. }
  581. defaultEmojiPan: EmojiPan {
  582. margin: margins(7px, 0px, 7px, 0px);
  583. padding: margins(7px, 0px, 4px, 7px);
  584. showAnimation: emojiPanAnimation;
  585. desiredSize: 37px;
  586. verticalSizeSub: 1px;
  587. header: 33px;
  588. headerLeft: 14px;
  589. headerLockLeft: 7px;
  590. headerLockedLeft: 26px;
  591. headerTop: 10px;
  592. footer: 36px;
  593. iconSkip: 3px;
  594. iconWidth: 30px;
  595. iconArea: 28px;
  596. bg: emojiPanBg;
  597. headerFg: emojiPanHeaderFg;
  598. trendingHeaderFg: stickersTrendingHeaderFg;
  599. trendingSubheaderFg: stickersTrendingSubheaderFg;
  600. trendingUnreadFg: stickersFeaturedUnreadBg;
  601. overBg: emojiPanHover;
  602. pathBg: windowBgRipple;
  603. pathFg: windowBgOver;
  604. textFg: windowFg;
  605. categoriesBg: emojiPanCategories;
  606. categoriesBgOver: windowBgRipple;
  607. fadeLeft: icon {{ "fade_horizontal-flip_horizontal", emojiPanCategories }};
  608. fadeRight: icon {{ "fade_horizontal", emojiPanCategories }};
  609. menu: popupMenuWithIcons;
  610. expandedSeparator: MenuSeparator(defaultMenuSeparator) {
  611. padding: margins(0px, 4px, 0px, 4px);
  612. width: 6px;
  613. }
  614. tabs: emojiTabs;
  615. search: defaultTabbedSearch;
  616. searchMargin: margins(1px, 11px, 2px, 5px);
  617. colorAll: emojiPanColorAll;
  618. colorAllLabel: emojiPanColorAllLabel;
  619. removeSet: stickerPanRemoveSet;
  620. boxLabel: boxLabel;
  621. icons: defaultComposeIcons;
  622. about: defaultEmojiPanAbout;
  623. aboutPadding: margins(12px, 3px, 12px, 2px);
  624. autocompleteBottomSkip: 0px;
  625. }
  626. statusEmojiPan: EmojiPan(defaultEmojiPan) {
  627. categoriesBg: windowBg;
  628. categoriesBgOver: windowBgOver;
  629. fadeLeft: icon {{ "fade_horizontal-flip_horizontal", windowBg }};
  630. fadeRight: icon {{ "fade_horizontal", windowBg }};
  631. }
  632. backgroundEmojiPan: EmojiPan(defaultEmojiPan) {
  633. padding: margins(7px, 7px, 4px, 0px);
  634. }
  635. inlineBotsScroll: ScrollArea(defaultSolidScroll) {
  636. deltat: stickerPanPadding;
  637. deltab: stickerPanPadding;
  638. }
  639. gifsPadding: margins(9px, 5px, 3px, 9px);
  640. emojiSuggestionsDropdown: InnerDropdown(defaultInnerDropdown) {
  641. scrollMargin: margins(0px, emojiColorsPadding, 0px, emojiColorsPadding);
  642. scrollPadding: margins(0px, 0px, 0px, 0px);
  643. }
  644. emojiSuggestionSize: 40px;
  645. emojiSuggestionsScrolledWidth: 240px;
  646. emojiSuggestionsPadding: margins(emojiColorsPadding, 0px, emojiColorsPadding, 0px);
  647. emojiSuggestionsFadeAfter: 20px;
  648. defaultEmojiSuggestions: EmojiSuggestions {
  649. dropdown: emojiSuggestionsDropdown;
  650. bg: menuBg;
  651. overBg: emojiPanHover;
  652. textFg: windowFg;
  653. fadeLeft: icon {{ "fade_horizontal-flip_horizontal", boxBg }};
  654. fadeRight: icon {{ "fade_horizontal", boxBg }};
  655. }
  656. mentionHeight: 40px;
  657. mentionPadding: margins(8px, 5px, 8px, 5px);
  658. mentionTop: 11px;
  659. mentionFont: linkFont;
  660. mentionNameFg: windowFg;
  661. mentionNameFgOver: windowFgOver;
  662. mentionPhotoSize: 33px;
  663. mentionBg: windowBg;
  664. mentionBgOver: windowBgOver;
  665. mentionFg: windowSubTextFg;
  666. mentionFgOver: windowSubTextFgOver;
  667. mentionFgActive: windowActiveTextFg;
  668. mentionFgOverActive: windowActiveTextFg;
  669. autocompleteSearchPadding: margins(16px, 5px, 16px, 5px);
  670. autocompleteRowPadding: margins(16px, 5px, 16px, 5px);
  671. autocompleteRowTitle: semiboldTextStyle;
  672. autocompleteRowKeys: defaultTextStyle;
  673. autocompleteRowAnswer: defaultTextStyle;
  674. manageEmojiPreview: 22px;
  675. manageEmojiPreviewWidth: 48px;
  676. manageEmojiPreviewHeight: 48px;
  677. manageEmojiPreviewPadding: margins(22px, 9px, 19px, 9px);
  678. manageEmojiMarginRight: 21px;
  679. manageEmojiNameTop: 3px;
  680. manageEmojiStatusTop: 25px;
  681. inlineRadialSize: 44px;
  682. inlineFileSize: 44px;
  683. inlineResultsLeft: 11px;
  684. inlineResultsSkip: 3px;
  685. inlineMediaHeight: 96px;
  686. inlineThumbSize: 64px;
  687. inlineThumbSkip: 10px;
  688. inlineTitleFg: windowFg;
  689. inlineDescriptionFg: windowSubTextFg;
  690. inlineRowMargin: 6px;
  691. inlineRowBorder: 1px;
  692. inlineRowBorderFg: shadowFg;
  693. inlineRowFileNameTop: 2px;
  694. inlineRowFileDescriptionTop: 23px;
  695. inlineResultsMinWidth: 48px;
  696. inlineDurationMargin: 3px;
  697. stickersPremiumLock: icon{{ "emoji/premium_lock", premiumButtonFg }};
  698. emojiPremiumLock: icon{{ "chat/mini_lock", premiumButtonFg }};
  699. reactStripExtend: margins(21px, 49px, 39px, 0px);
  700. reactStripHeight: 40px;
  701. reactStripSize: 32px;
  702. reactStripMinWidth: 60px;
  703. reactStripImage: 26px;
  704. reactStripSkip: 7px;
  705. reactStripBubbleRight: 20px;
  706. userpicBuilderEmojiPan: EmojiPan(statusEmojiPan) {
  707. margin: margins(reactStripSkip, 0px, reactStripSkip, 0px);
  708. padding: margins(reactStripSkip, 0px, reactStripSkip, reactStripSkip);
  709. desiredSize: reactStripSize;
  710. verticalSizeSub: 0px;
  711. overBg: transparent;
  712. search: TabbedSearch(defaultTabbedSearch) {
  713. defaultFieldWidth: 88px;
  714. }
  715. }
  716. reactPanelEmojiPan: EmojiPan(userpicBuilderEmojiPan) {
  717. searchMargin: margins(1px, 10px, 2px, 6px);
  718. }
  719. emojiScroll: ScrollArea(defaultSolidScroll) {
  720. deltat: 3px;
  721. deltab: 3px;
  722. round: -1px;
  723. width: 7px;
  724. deltax: 2px;
  725. hiding: 0;
  726. }
  727. reactPanelScroll: ScrollArea(emojiScroll) {
  728. deltab: 7px;
  729. }
  730. reactPanelScrollRounded: ScrollArea(emojiScroll) {
  731. width: 8px;
  732. deltax: 3px;
  733. deltat: 14px;
  734. deltab: 14px;
  735. }
  736. choosePeerGroupIcon: icon {{ "info/edit/create_group", lightButtonFg }};
  737. choosePeerChannelIcon: icon {{ "info/edit/create_channel", lightButtonFg }};
  738. choosePeerCreateIconLeft: 25px;
  739. historyRequestsUserpics: GroupCallUserpics {
  740. size: 22px;
  741. shift: 8px;
  742. stroke: 4px;
  743. align: align(left);
  744. }
  745. historyRequestsHeight: 33px;
  746. historySlowmodeCounterMargins: margins(0px, 0px, 10px, 0px);
  747. historyComposeAreaPalette: TextPalette(defaultTextPalette) {
  748. linkFg: historyComposeAreaFgService;
  749. }
  750. defaultMessageBar: MessageBar {
  751. title: semiboldTextStyle;
  752. titleFg: windowActiveTextFg;
  753. text: defaultTextStyle;
  754. textFg: historyComposeAreaFg;
  755. textPalette: historyComposeAreaPalette;
  756. duration: 160;
  757. }
  758. historyComposeButton: FlatButton {
  759. color: windowActiveTextFg;
  760. overColor: windowActiveTextFg;
  761. bgColor: historyComposeButtonBg;
  762. overBgColor: historyComposeButtonBgOver;
  763. width: -32px;
  764. height: 46px;
  765. textTop: 14px;
  766. font: semiboldFont;
  767. overFont: semiboldFont;
  768. ripple: RippleAnimation(defaultRippleAnimation) {
  769. color: historyComposeButtonBgRipple;
  770. }
  771. }
  772. historyComposeButtonText: FlatLabel(defaultFlatLabel) {
  773. style: semiboldTextStyle;
  774. textFg: windowActiveTextFg;
  775. }
  776. historyGiftToChannel: IconButton(defaultIconButton) {
  777. width: 46px;
  778. height: 46px;
  779. icon: icon{{ "menu/gift_premium", windowActiveTextFg }};
  780. iconOver: icon{{ "menu/gift_premium", windowActiveTextFg }};
  781. rippleAreaPosition: point(3px, 3px);
  782. rippleAreaSize: 40px;
  783. ripple: universalRippleAnimation;
  784. }
  785. historyUnblock: FlatButton(historyComposeButton) {
  786. color: attentionButtonFg;
  787. overColor: attentionButtonFgOver;
  788. }
  789. historyContactStatusButton: FlatButton(historyComposeButton) {
  790. height: 49px;
  791. textTop: 16px;
  792. overBgColor: historyComposeButtonBg;
  793. ripple: RippleAnimation(defaultRippleAnimation) {
  794. color: historyComposeButtonBgOver;
  795. }
  796. }
  797. historyContactStatusBlock: FlatButton(historyContactStatusButton) {
  798. color: attentionButtonFg;
  799. overColor: attentionButtonFg;
  800. }
  801. historyContactStatusLabel: FlatLabel(defaultFlatLabel) {
  802. minWidth: 240px;
  803. }
  804. historyEmojiStatusInfoLabel: FlatLabel(historyContactStatusLabel) {
  805. align: align(top);
  806. textFg: windowSubTextFg;
  807. }
  808. historyContactStatusMinSkip: 16px;
  809. historyBusinessBotPhoto: UserpicButton(defaultUserpicButton) {
  810. size: size(46px, 46px);
  811. photoSize: 46px;
  812. photoPosition: point(0px, 0px);
  813. }
  814. historyBusinessBotName: FlatLabel(defaultFlatLabel) {
  815. style: semiboldTextStyle;
  816. }
  817. historyBusinessBotStatus: FlatLabel(historyContactStatusLabel) {
  818. textFg: windowSubTextFg;
  819. }
  820. historyBusinessBotToggle: defaultActiveButton;
  821. historyBusinessBotSettings: IconButton(defaultIconButton) {
  822. icon: icon{{ "menu/customize", menuIconFg }};
  823. iconOver: icon{{ "menu/customize", menuIconFgOver }};
  824. iconPosition: point(-1px, -1px);
  825. rippleAreaSize: 40px;
  826. rippleAreaPosition: point(4px, 9px);
  827. ripple: defaultRippleAnimationBgOver;
  828. height: 58px;
  829. width: 48px;
  830. }
  831. paysStatusLabel: FlatLabel(historyBusinessBotStatus) {
  832. align: align(top);
  833. minWidth: 240px;
  834. }
  835. historyReplyCancelIcon: icon {{ "box_button_close", historyReplyCancelFg }};
  836. historyReplyCancelIconOver: icon {{ "box_button_close", historyReplyCancelFgOver }};
  837. historyReplySkip: 53px;
  838. historyReplyNameFg: windowActiveTextFg;
  839. historyReplyHeight: 49px;
  840. historyReplyIconPosition: point(7px, 7px);
  841. historyReplyIcon: icon {{ "chat/input_reply_settings", historyReplyIconFg }};
  842. historyLinkIcon: icon {{ "chat/input_link_settings", historyReplyIconFg }};
  843. historyQuoteIcon: icon {{ "chat/input_reply_quote", historyReplyIconFg }};
  844. historyForwardIcon: icon {{ "chat/input_forward", historyReplyIconFg }};
  845. historyEditIcon: icon {{ "chat/input_edit", historyReplyIconFg }};
  846. historyReplyCancel: IconButton {
  847. width: 49px;
  848. height: 49px;
  849. icon: historyReplyCancelIcon;
  850. iconOver: historyReplyCancelIconOver;
  851. iconPosition: point(-1px, -1px);
  852. rippleAreaPosition: point(4px, 4px);
  853. rippleAreaSize: 40px;
  854. ripple: defaultRippleAnimationBgOver;
  855. }
  856. historyPinnedShowAll: IconButton(historyReplyCancel) {
  857. icon: icon {{ "pinned_show_all", historyReplyCancelFg }};
  858. iconOver: icon {{ "pinned_show_all", historyReplyCancelFgOver }};
  859. }
  860. historyPinnedBotButton: RoundButton(defaultActiveButton) {
  861. width: -34px;
  862. height: 30px;
  863. textTop: 6px;
  864. padding: margins(2px, 10px, 10px, 9px);
  865. }
  866. historyPinnedBotLabel: FlatLabel(defaultFlatLabel) {
  867. style: semiboldTextStyle;
  868. align: align(center);
  869. maxHeight: 30px;
  870. }
  871. historyPinnedBotButtonMaxWidth: 120px;
  872. historyToDownPosition: point(12px, 10px);
  873. historyToDownAbove: icon {{ "history_down_arrow", historyToDownFg }};
  874. historyToDownAboveOver: icon {{ "history_down_arrow", historyToDownFgOver }};
  875. historyToDownPaddingTop: 10px;
  876. historyToDownBelow: icon {
  877. { "history_down_shadow", historyToDownShadow },
  878. { "history_down_circle", historyToDownBg },
  879. };
  880. historyToDownBelowOver: icon {
  881. { "history_down_shadow", historyToDownShadow },
  882. { "history_down_circle", historyToDownBgOver },
  883. };
  884. historyToDown: TwoIconButton {
  885. width: 52px;
  886. height: 62px;
  887. iconBelow: historyToDownBelow;
  888. iconBelowOver: historyToDownBelowOver;
  889. iconAbove: historyToDownAbove;
  890. iconAboveOver: historyToDownAboveOver;
  891. iconPosition: point(0px, historyToDownPaddingTop);
  892. rippleAreaPosition: point(5px, 15px);
  893. rippleAreaSize: 42px;
  894. ripple: RippleAnimation(defaultRippleAnimation) {
  895. color: historyToDownBgRipple;
  896. }
  897. }
  898. historyToDownBadgeFont: semiboldFont;
  899. historyToDownBadgeSize: 22px;
  900. historyToDownShownAfter: 480px;
  901. historyToDownDuration: 150;
  902. dialogsToUpAbove: icon {{ "history_down_arrow-flip_vertical", historyToDownFg, point(0px, 1px) }};
  903. dialogsToUpAboveOver: icon {{ "history_down_arrow-flip_vertical", historyToDownFgOver, point(0px, 1px) }};
  904. dialogsToUp: TwoIconButton(historyToDown) {
  905. iconAbove: dialogsToUpAbove;
  906. iconAboveOver: dialogsToUpAboveOver;
  907. }
  908. historyUnreadMentions: TwoIconButton(historyToDown) {
  909. iconAbove: icon {{ "history_unread_mention", historyToDownFg }};
  910. iconAboveOver: icon {{ "history_unread_mention", historyToDownFgOver }};
  911. }
  912. historyUnreadReactions: TwoIconButton(historyToDown) {
  913. iconAbove: icon {{ "history_unread_reaction", historyToDownFg }};
  914. iconAboveOver: icon {{ "history_unread_reaction", historyToDownFgOver }};
  915. }
  916. historyUnreadThingsSkip: 4px;
  917. historyQuoteStyle: QuoteStyle(defaultQuoteStyle) {
  918. padding: margins(10px, 2px, 4px, 2px);
  919. verticalSkip: 4px;
  920. outline: 3px;
  921. outlineShift: 2px;
  922. radius: 5px;
  923. }
  924. historyTextStyle: TextStyle(defaultTextStyle) {
  925. blockquote: QuoteStyle(historyQuoteStyle) {
  926. padding: margins(10px, 2px, 20px, 2px);
  927. icon: icon{{ "chat/mini_quote", windowFg }};
  928. iconPosition: point(4px, 4px);
  929. expand: icon{{ "intro_country_dropdown", windowFg }};
  930. expandPosition: point(6px, 4px);
  931. collapse: icon{{ "intro_country_dropdown-flip_vertical", windowFg }};
  932. collapsePosition: point(6px, 4px);
  933. }
  934. pre: QuoteStyle(historyQuoteStyle) {
  935. header: 20px;
  936. headerPosition: point(10px, 2px);
  937. scrollable: true;
  938. icon: icon{{ "chat/mini_copy", windowFg }};
  939. iconPosition: point(4px, 2px);
  940. }
  941. }
  942. historyComposeField: InputField(defaultInputField) {
  943. style: historyTextStyle;
  944. textMargins: margins(0px, 0px, 0px, 0px);
  945. textAlign: align(left);
  946. textFg: historyComposeAreaFg;
  947. textBg: historyComposeAreaBg;
  948. heightMin: 36px;
  949. heightMax: 72px;
  950. placeholderFg: placeholderFg;
  951. placeholderFgActive: placeholderFgActive;
  952. placeholderFgError: placeholderFgActive;
  953. placeholderMargins: margins(2px, 0px, 2px, 0px);
  954. placeholderAlign: align(topleft);
  955. placeholderScale: 0.;
  956. placeholderFont: normalFont;
  957. placeholderShift: -50px;
  958. border: 0px;
  959. borderActive: 0px;
  960. duration: 100;
  961. }
  962. historyComposeFieldMaxHeight: 224px;
  963. historyComposeFieldFadeHeight: 6px;
  964. // historyMinHeight: 56px;
  965. historyAttach: IconButton(defaultIconButton) {
  966. width: 44px;
  967. height: 46px;
  968. icon: icon {{ "chat/input_attach", historyComposeIconFg }};
  969. iconOver: icon {{ "chat/input_attach", historyComposeIconFgOver }};
  970. rippleAreaPosition: point(2px, 3px);
  971. rippleAreaSize: 40px;
  972. ripple: defaultRippleAnimationBgOver;
  973. }
  974. historyMessagesTTL: IconButtonWithText {
  975. iconButton: IconButton(historyAttach) {
  976. icon: icon {{ "chat/input_autodelete", historyComposeIconFg }};
  977. iconOver: icon {{ "chat/input_autodelete", historyComposeIconFgOver }};
  978. }
  979. textFg: historyComposeIconFg;
  980. textFgOver: historyComposeIconFgOver;
  981. textPadding: margins(21px, 20px, 3px, 7px);
  982. textAlign: align(left);
  983. font: font(10px semibold);
  984. }
  985. historyReplaceMedia: IconButton(historyAttach) {
  986. icon: icon {{ "chat/input_replace", windowBgActive }};
  987. iconOver: icon {{ "chat/input_replace", windowBgActive }};
  988. ripple: RippleAnimation(defaultRippleAnimation) {
  989. color: lightButtonBgOver;
  990. }
  991. }
  992. historyAddMedia: IconButton(historyAttach) {
  993. icon: icon {{ "chat/input_attach", windowBgActive }};
  994. iconOver: icon {{ "chat/input_attach", windowBgActive }};
  995. ripple: RippleAnimation(defaultRippleAnimation) {
  996. color: lightButtonBgOver;
  997. }
  998. }
  999. historyAttachEmojiActive: icon {{ "chat/input_smile_face", windowBgActive }};
  1000. historyEmojiCircle: size(20px, 20px);
  1001. historyEmojiCircleLine: 1.5;
  1002. historyEmojiCircleFg: historyComposeIconFg;
  1003. historyEmojiCircleFgOver: historyComposeIconFgOver;
  1004. historyBotKeyboardShow: IconButton(historyAttach) {
  1005. icon: icon {{ "chat/input_bot_keyboard", historyComposeIconFg }};
  1006. iconOver: icon {{ "chat/input_bot_keyboard", historyComposeIconFgOver }};
  1007. }
  1008. historyBotKeyboardHide: IconButton(historyAttach) {
  1009. icon: icon {{ "chat/input_bot_keyboard_hide", historyComposeIconFg }};
  1010. iconOver: icon {{ "chat/input_bot_keyboard_hide", historyComposeIconFgOver }};
  1011. }
  1012. historyBotCommandStart: IconButton(historyAttach) {
  1013. icon: icon {{ "chat/input_bot_command", historyComposeIconFg }};
  1014. iconOver: icon {{ "chat/input_bot_command", historyComposeIconFgOver }};
  1015. }
  1016. historyScheduledToggle: IconButton(historyAttach) {
  1017. icon: icon {
  1018. { "chat/input_scheduled", historyComposeIconFg },
  1019. { "chat/input_scheduled_dot", attentionButtonFg }
  1020. };
  1021. iconOver: icon {
  1022. { "chat/input_scheduled", historyComposeIconFgOver },
  1023. { "chat/input_scheduled_dot", attentionButtonFg }
  1024. };
  1025. }
  1026. historyAttachEmojiInner: IconButton(historyAttach) {
  1027. icon: icon {{ "chat/input_smile_face", historyComposeIconFg }};
  1028. iconOver: icon {{ "chat/input_smile_face", historyComposeIconFgOver }};
  1029. }
  1030. historyAttachEmoji: EmojiButton {
  1031. inner: historyAttachEmojiInner;
  1032. bg: historyComposeAreaBg;
  1033. lineFg: historyEmojiCircleFg;
  1034. lineFgOver: historyEmojiCircleFgOver;
  1035. }
  1036. boxAttachEmoji: EmojiButton(historyAttachEmoji) {
  1037. inner: IconButton(historyAttachEmojiInner) {
  1038. width: 30px;
  1039. height: 30px;
  1040. rippleAreaSize: 0px;
  1041. }
  1042. }
  1043. boxAttachEmojiTop: 20px;
  1044. historySendIcon: icon {{ "chat/input_send", historySendIconFg }};
  1045. historySendIconOver: icon {{ "chat/input_send", historySendIconFgOver }};
  1046. historySendIconPosition: point(10px, 11px);
  1047. historySendSize: size(44px, 46px);
  1048. historyScheduleIcon: icon {{ "chat/input_schedule", historyComposeAreaBg }};
  1049. historyScheduleIconPosition: point(7px, 8px);
  1050. historyEditSaveIcon: icon {{ "chat/input_save", historySendIconFg }};
  1051. historyEditSaveIconOver: icon {{ "chat/input_save", historySendIconFgOver }};
  1052. historyEditMediaBg: videoPlayIconBg;
  1053. historyEditMedia: icon{{ "chat/input_draw", videoPlayIconFg }};
  1054. historyMessagesTTLPickerHeight: 200px;
  1055. historyMessagesTTLPickerItemHeight: 40px;
  1056. historyMessagesTTLLabel: FlatLabel(defaultFlatLabel) {
  1057. minWidth: 200px;
  1058. align: align(topleft);
  1059. textFg: windowSubTextFg;
  1060. }
  1061. historyCharsLimitationLabel: FlatLabel(defaultFlatLabel) {
  1062. // The same as a width of the historySendSize.
  1063. minWidth: 44px;
  1064. align: align(center);
  1065. textFg: attentionButtonFg;
  1066. }
  1067. historyRecordVoiceFg: historyComposeIconFg;
  1068. historyRecordVoiceFgOver: historyComposeIconFgOver;
  1069. historyRecordVoiceFgInactive: attentionButtonFg;
  1070. historyRecordVoiceFgActive: windowBgActive;
  1071. historyRecordVoiceFgActiveIcon: windowFgActive;
  1072. historyRecordVoice: icon {{ "chat/input_record", historyRecordVoiceFg }};
  1073. historyRecordVoiceOver: icon {{ "chat/input_record", historyRecordVoiceFgOver }};
  1074. historyRecordVoiceOnceBg: icon {{ "voice_lock/audio_once_bg", historySendIconFg }};
  1075. historyRecordVoiceOnceBgOver: icon {{ "voice_lock/audio_once_bg", historySendIconFgOver }};
  1076. historyRecordVoiceOnceFg: icon {{ "voice_lock/audio_once_number", windowFgActive }};
  1077. historyRecordVoiceOnceFgOver: icon {{ "voice_lock/audio_once_number", windowFgActive }};
  1078. historyRecordVoiceOnceInactive: icon {{ "chat/audio_once", windowSubTextFg }};
  1079. historyRecordVoiceActive: icon {{ "chat/input_record_filled", historyRecordVoiceFgActiveIcon }};
  1080. historyRecordRound: icon {{ "chat/input_video", historyRecordVoiceFg }};
  1081. historyRecordRoundOver: icon {{ "chat/input_video", historyRecordVoiceFgOver }};
  1082. historyRecordRoundActive: icon {{ "chat/input_video", historyRecordVoiceFgActiveIcon }};
  1083. historyRecordRoundIconPosition: point(0px, 0px);
  1084. historyRecordSendIconPosition: point(2px, 0px);
  1085. historyRecordVoiceRippleBgActive: lightButtonBgOver;
  1086. historyRecordSignalRadius: 5px;
  1087. historyRecordCancel: windowSubTextFg;
  1088. historyRecordCancelActive: historySendIconFg;
  1089. historyRecordFont: font(13px);
  1090. historyRecordDurationSkip: 12px;
  1091. historyRecordDurationFg: historyComposeAreaFg;
  1092. historyRecordTTLLineWidth: 2px;
  1093. historyRecordMainBlobMinRadius: 23px;
  1094. historyRecordMainBlobMaxRadius: 37px;
  1095. historyRecordMinorBlobMinRadius: 40px;
  1096. historyRecordMinorBlobMaxRadius: 47px;
  1097. historyRecordMajorBlobMinRadius: 43px;
  1098. historyRecordMajorBlobMaxRadius: 50px;
  1099. historyRecordTextStyle: TextStyle(defaultTextStyle) {
  1100. font: historyRecordFont;
  1101. }
  1102. historyRecordTextWidthForWrap: 210px;
  1103. historyRecordTextLeft: 15px;
  1104. historyRecordTextRight: 25px;
  1105. historyRecordLockShowDuration: historyToDownDuration;
  1106. historyRecordLockSize: size(75px, 133px);
  1107. historyRecordLockIconSize: size(14px, 17px);
  1108. historyRecordLockIconBottomHeight: 9px;
  1109. historyRecordLockIconLineHeight: 2px;
  1110. historyRecordLockIconLineSkip: 3px;
  1111. historyRecordLockIconLineWidth: 2px;
  1112. historyRecordLockIconArcHeight: 4px;
  1113. historyRecordStopIconWidth: 12px;
  1114. historyRecordLockTopShadow: icon {{ "voice_lock/record_lock_top_shadow", historyToDownShadow }};
  1115. historyRecordLockTop: icon {{ "voice_lock/record_lock_top", historyToDownBg }};
  1116. historyRecordLockBottomShadow: icon {{ "voice_lock/record_lock_bottom_shadow", historyToDownShadow }};
  1117. historyRecordLockBottom: icon {{ "voice_lock/record_lock_bottom", historyToDownBg }};
  1118. historyRecordLockBodyShadow: icon {{ "voice_lock/record_lock_body_shadow", historyToDownShadow }};
  1119. historyRecordLockBody: icon {{ "voice_lock/record_lock_body", historyToDownBg }};
  1120. historyRecordLockMargin: margins(4px, 4px, 4px, 4px);
  1121. historyRecordLockArrow: icon {{ "voice_lock/voice_arrow", historyToDownFg }};
  1122. historyRecordLockInput: icon {{ "voice_lock/input_mic_s", historyToDownFg }};
  1123. historyRecordLockRound: icon {{ "voice_lock/input_round_s", historyToDownFg }};
  1124. historyRecordLockRippleMargin: margins(6px, 6px, 6px, 6px);
  1125. historyRecordDelete: IconButton(historyAttach) {
  1126. icon: icon {{ "voice_lock/recorded_delete", historyComposeIconFg }};
  1127. iconOver: icon {{ "voice_lock/recorded_delete", historyComposeIconFgOver }};
  1128. iconPosition: point(10px, 11px);
  1129. }
  1130. historyRecordWaveformRightSkip: 10px;
  1131. historyRecordWaveformBgMargins: margins(5px, 8px, 5px, 9px);
  1132. historyRecordWaveformBar: 3px;
  1133. historyRecordLockPosition: point(1px, 22px);
  1134. historyRecordCancelButtonWidth: 100px;
  1135. historyRecordCancelButtonFg: lightButtonFg;
  1136. historyRecordTooltip: ImportantTooltip(defaultImportantTooltip) {
  1137. padding: margins(4px, 4px, 4px, 4px);
  1138. radius: 11px;
  1139. arrow: 6px;
  1140. }
  1141. historySilentToggle: IconButton(historyBotKeyboardShow) {
  1142. icon: icon {{ "chat/input_silent", historyComposeIconFg }};
  1143. iconOver: icon {{ "chat/input_silent", historyComposeIconFgOver }};
  1144. }
  1145. historySilentToggleOn: icon {{ "chat/input_silent_on", historyComposeIconFg }};
  1146. historySilentToggleOnOver: icon {{ "chat/input_silent_on", historyComposeIconFgOver }};
  1147. defaultRecordBarLock: RecordBarLock {
  1148. ripple: defaultRippleAnimation;
  1149. originTop: historyRecordLockTop;
  1150. originBottom: historyRecordLockBottom;
  1151. originBody: historyRecordLockBody;
  1152. shadowTop: historyRecordLockTopShadow;
  1153. shadowBottom: historyRecordLockBottomShadow;
  1154. shadowBody: historyRecordLockBodyShadow;
  1155. arrow: historyRecordLockArrow;
  1156. fg: historyToDownFg;
  1157. }
  1158. defaultRecordBar: RecordBar {
  1159. bg: historyComposeAreaBg;
  1160. durationFg: historyRecordDurationFg;
  1161. cancel: historyRecordCancel;
  1162. cancelActive: historyRecordCancelActive;
  1163. cancelRipple: RippleAnimation(defaultRippleAnimation) {
  1164. color: lightButtonBgRipple;
  1165. }
  1166. lock: defaultRecordBarLock;
  1167. remove: historyRecordDelete;
  1168. }
  1169. historySend: SendButton {
  1170. inner: IconButton(historyAttach) {
  1171. icon: historySendIcon;
  1172. iconOver: historySendIconOver;
  1173. }
  1174. stars: RoundButton(defaultActiveButton) {
  1175. height: 28px;
  1176. padding: margins(0px, 0px, 6px, 0px);
  1177. textTop: 5px;
  1178. width: -8px;
  1179. }
  1180. record: historyRecordVoice;
  1181. recordOver: historyRecordVoiceOver;
  1182. round: historyRecordRound;
  1183. roundOver: historyRecordRoundOver;
  1184. sendDisabledFg: historyComposeIconFg;
  1185. }
  1186. defaultComposeFilesMenu: IconButton(defaultIconButton) {
  1187. width: 48px;
  1188. height: 54px;
  1189. icon: icon {{ "title_menu_dots", boxTitleCloseFg }};
  1190. iconOver: icon {{ "title_menu_dots", boxTitleCloseFgOver }};
  1191. iconPosition: point(18px, -1px);
  1192. rippleAreaPosition: point(1px, 6px);
  1193. rippleAreaSize: 42px;
  1194. ripple: defaultRippleAnimationBgOver;
  1195. }
  1196. defaultComposeFilesField: InputField(defaultInputField) {
  1197. textMargins: margins(1px, 26px, 31px, 4px);
  1198. heightMax: 158px;
  1199. }
  1200. defaultComposeFiles: ComposeFiles {
  1201. check: defaultCheck;
  1202. checkbox: defaultBoxCheckbox;
  1203. menu: defaultComposeFilesMenu;
  1204. caption: defaultComposeFilesField;
  1205. emoji: boxAttachEmoji;
  1206. confirmBg: windowBgOver;
  1207. buttonFile: sendBoxAlbumGroupButtonFile;
  1208. buttonFileEdit: sendBoxAlbumGroupEditButtonIconFile;
  1209. buttonFileDelete: sendBoxAlbumGroupDeleteButtonIconFile;
  1210. iconBg: msgFileInBg;
  1211. iconPlay: icon {{ "history_file_play", historyFileInIconFg }};
  1212. iconImage: icon {{ "history_file_image", historyFileInIconFg }};
  1213. iconDocument: icon {{ "history_file_document", historyFileInIconFg }};
  1214. nameFg: historyFileNameInFg;
  1215. statusFg: mediaInFg;
  1216. }
  1217. defaultRestrictionLabel: FlatLabel(defaultFlatLabel) {
  1218. minWidth: 12px;
  1219. textFg: placeholderFg;
  1220. align: align(top);
  1221. }
  1222. defaultComposeControls: ComposeControls {
  1223. bg: historyComposeAreaBg;
  1224. radius: 0px;
  1225. field: historyComposeField;
  1226. send: historySend;
  1227. attach: historyAttach;
  1228. emoji: historyAttachEmoji;
  1229. suggestions: defaultEmojiSuggestions;
  1230. tabbed: defaultEmojiPan;
  1231. tabbedHeightMin: emojiPanMinHeight;
  1232. tabbedHeightMax: emojiPanMaxHeight;
  1233. record: defaultRecordBar;
  1234. files: defaultComposeFiles;
  1235. premium: defaultPremiumLimits;
  1236. boxField: defaultInputField;
  1237. restrictionLabel: defaultRestrictionLabel;
  1238. }
  1239. moreChatsBarHeight: 48px;
  1240. moreChatsBarTextPosition: point(12px, 4px);
  1241. moreChatsBarStatusPosition: point(12px, 24px);
  1242. moreChatsBarClose: IconButton(defaultIconButton) {
  1243. width: 48px;
  1244. height: 48px;
  1245. icon: boxTitleCloseIcon;
  1246. iconOver: boxTitleCloseIconOver;
  1247. iconPosition: point(12px, -1px);
  1248. rippleAreaPosition: point(0px, 4px);
  1249. rippleAreaSize: 40px;
  1250. ripple: defaultRippleAnimationBgOver;
  1251. }
  1252. reportReasonTopSkip: 8px;
  1253. reportReasonButton: SettingsButton(defaultSettingsButton) {
  1254. style: boxTextStyle;
  1255. padding: margins(62px, 7px, 8px, 7px);
  1256. iconLeft: 22px;
  1257. }
  1258. defaultReportBox: ReportBox {
  1259. button: reportReasonButton;
  1260. noIconButton: SettingsButton(reportReasonButton) {
  1261. padding: margins(22px, 7px, 8px, 7px);
  1262. }
  1263. label: boxLabel;
  1264. field: newGroupDescription;
  1265. dividerBg: boxDividerBg;
  1266. dividerFg: windowSubTextFg;
  1267. spam: menuIconDelete;
  1268. fake: menuIconFake;
  1269. violence: menuIconViolence;
  1270. children: menuIconBlock;
  1271. pornography: menuIconPorn;
  1272. copyright: menuIconCopyright;
  1273. drugs: menuIconDrugs;
  1274. personal: menuIconPersonal;
  1275. other: menuIconReport;
  1276. }
  1277. dragFont: font(27px semibold);
  1278. dragSubfont: font(19px semibold);
  1279. dragColor: windowSubTextFg;
  1280. dragDropColor: windowActiveTextFg;
  1281. dragMargin: margins(0px, 10px, 0px, 10px);
  1282. dragPadding: margins(20px, 10px, 20px, 10px);
  1283. dragHeight: 72px;
  1284. ttlMediaImportantTooltipLabel: FlatLabel(defaultImportantTooltipLabel) {
  1285. style: TextStyle(defaultTextStyle) {
  1286. font: font(14px);
  1287. }
  1288. }
  1289. ttlMediaButton: RoundButton(defaultActiveButton) {
  1290. textBg: shadowFg;
  1291. textBgOver: shadowFg;
  1292. ripple: universalRippleAnimation;
  1293. height: 31px;
  1294. textTop: 6px;
  1295. }
  1296. ttlMediaButtonBottomSkip: 14px;
  1297. editTagAbout: FlatLabel(defaultFlatLabel) {
  1298. minWidth: 256px;
  1299. }
  1300. editTagField: InputField(defaultInputField) {
  1301. textBg: transparent;
  1302. textMargins: margins(24px, 10px, 32px, 2px);
  1303. placeholderFg: placeholderFg;
  1304. placeholderFgActive: placeholderFgActive;
  1305. placeholderFgError: placeholderFgActive;
  1306. placeholderMargins: margins(2px, 0px, 2px, 0px);
  1307. placeholderScale: 0.;
  1308. heightMin: 36px;
  1309. }
  1310. editTagLimit: FlatLabel(defaultFlatLabel) {
  1311. textFg: windowSubTextFg;
  1312. }
  1313. editStickerSetNameField: InputField(defaultInputField) {
  1314. textMargins: margins(0px, 8px, 26px, 4px);
  1315. heightMin: 36px;
  1316. heightMax: 36px;
  1317. placeholderFg: placeholderFg;
  1318. placeholderFgActive: placeholderFgActive;
  1319. placeholderFgError: placeholderFgActive;
  1320. placeholderMargins: margins(2px, 0px, 2px, 0px);
  1321. placeholderScale: 0.;
  1322. placeholderFont: normalFont;
  1323. }
  1324. editStickerSetNameLoading: InfiniteRadialAnimation(defaultInfiniteRadialAnimation) {
  1325. color: lightButtonFg;
  1326. thickness: 2px;
  1327. }
  1328. paidStarIcon: icon {{ "settings/premium/star", creditsBg1 }};
  1329. paidStarIconTop: 7px;
  1330. paidAmountAbout: FlatLabel(defaultFlatLabel) {
  1331. minWidth: 256px;
  1332. textFg: windowSubTextFg;
  1333. }
  1334. paidTagLabel: FlatLabel(defaultFlatLabel) {
  1335. textFg: radialFg;
  1336. palette: TextPalette(defaultTextPalette) {
  1337. linkFg: creditsBg1;
  1338. }
  1339. style: semiboldTextStyle;
  1340. }
  1341. paidTagPadding: margins(16px, 6px, 16px, 6px);
  1342. pickLocationWindow: size(364px, 680px);
  1343. pickLocationMapHeight: 220px;
  1344. pickLocationCollapsedHeight: 92px;
  1345. pickLocationRowHeight: 52px;
  1346. pickLocationButton: FlatButton {
  1347. height: pickLocationRowHeight;
  1348. bgColor: contactsBg;
  1349. overBgColor: contactsBgOver;
  1350. ripple: defaultRippleAnimation;
  1351. }
  1352. pickLocationButtonText: FlatLabel(defaultFlatLabel) {
  1353. minWidth: 128px;
  1354. maxHeight: 20px;
  1355. style: semiboldTextStyle;
  1356. textFg: windowBoldFg;
  1357. }
  1358. pickLocationButtonStatus: FlatLabel(defaultFlatLabel) {
  1359. minWidth: 128px;
  1360. maxHeight: 20px;
  1361. textFg: windowSubTextFg;
  1362. }
  1363. pickLocationButtonSkip: 6px;
  1364. pickLocationSendIcon: icon{{ "chat/filled_location", windowFgActive }};
  1365. pickLocationVenueItem: PeerListItem(defaultPeerListItem) {
  1366. height: pickLocationRowHeight;
  1367. photoSize: 42px;
  1368. photoPosition: point(18px, 5px);
  1369. namePosition: point(70px, 7px);
  1370. statusPosition: point(70px, 27px);
  1371. button: OutlineButton(defaultPeerListButton) {
  1372. textBg: contactsBg;
  1373. textBgOver: contactsBgOver;
  1374. font: normalFont;
  1375. padding: margins(11px, 5px, 11px, 5px);
  1376. ripple: defaultRippleAnimation;
  1377. }
  1378. statusFg: contactsStatusFg;
  1379. statusFgOver: contactsStatusFgOver;
  1380. statusFgActive: contactsStatusFgOnline;
  1381. }
  1382. pickLocationVenueList: PeerList(defaultPeerList) {
  1383. item: pickLocationVenueItem;
  1384. padding: margins(0px, 0px, 0px, 0px);
  1385. }
  1386. pickLocationIconSkip: 6px;
  1387. pickLocationLoading: InfiniteRadialAnimation(defaultInfiniteRadialAnimation) {
  1388. size: size(56px, 56px);
  1389. color: windowSubTextFg;
  1390. thickness: 4px;
  1391. }
  1392. pickLocationPromoHeight: 32px;
  1393. pickLocationChooseOnMap: RoundButton(defaultActiveButton) {
  1394. height: 44px;
  1395. textTop: 11px;
  1396. width: -96px;
  1397. style: TextStyle(semiboldTextStyle) {
  1398. font: font(15px semibold);
  1399. }
  1400. }
  1401. sendGifBox: Box(defaultBox) {
  1402. shadowIgnoreBottomSkip: true;
  1403. }
  1404. processingVideoTipMaxWidth: 364px;
  1405. processingVideoTipShift: 8px;
  1406. processingVideoToast: Toast(defaultToast) {
  1407. minWidth: 32px;
  1408. maxWidth: 380px;
  1409. padding: margins(19px, 17px, 19px, 17px);
  1410. }
  1411. processingVideoPreviewSkip: 8px;
  1412. processingVideoView: RoundButton(defaultActiveButton) {
  1413. width: -24px;
  1414. height: 52px;
  1415. textTop: 17px;
  1416. textFg: mediaviewTextLinkFg;
  1417. textFgOver: mediaviewTextLinkFg;
  1418. textBg: transparent;
  1419. textBgOver: transparent;
  1420. ripple: emptyRippleAnimation;
  1421. }