boxes.style 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131
  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 "ui/layers/layers.style";
  9. using "ui/widgets/widgets.style";
  10. using "intro/intro.style";
  11. UserpicButton {
  12. size: size;
  13. photoSize: pixels;
  14. photoPosition: point;
  15. changeButton: RoundButton;
  16. changeIcon: icon;
  17. changeIconPosition: point;
  18. duration: int;
  19. uploadHeight: pixels;
  20. uploadBg: color;
  21. uploadIcon: icon;
  22. uploadIconPosition: point;
  23. }
  24. ShortInfoBox {
  25. label: FlatLabel;
  26. labeled: FlatLabel;
  27. labeledOneLine: FlatLabel;
  28. }
  29. countryRowHeight: 36px;
  30. countryRowNameFont: semiboldFont;
  31. countryRowNameFg: boxTextFg;
  32. countryRowPadding: margins(22px, 9px, 8px, 0px);
  33. countryRowCodeFont: font(fsize);
  34. countryRowBg: windowBg;
  35. countryRowBgOver: windowBgOver;
  36. countryRowCodeFg: windowSubTextFg;
  37. countryRowCodeFgOver: windowSubTextFgOver;
  38. countriesSkip: 12px;
  39. countriesScroll: ScrollArea(boxScroll) {
  40. deltat: 9px;
  41. deltab: 3px;
  42. }
  43. boxPhotoTitlePosition: point(28px, 20px);
  44. boxPhotoPadding: margins(28px, 28px, 28px, 18px);
  45. boxPhotoCompressedSkip: 20px;
  46. boxPhotoCaptionSkip: 8px;
  47. defaultChangeUserpicIcon: icon {{ "new_chat_photo", activeButtonFg }};
  48. defaultUploadUserpicIcon: icon {{ "upload_chat_photo", msgDateImgFg }};
  49. defaultUserpicButton: UserpicButton {
  50. size: size(72px, 72px);
  51. photoSize: 72px;
  52. photoPosition: point(-1px, -1px);
  53. changeButton: defaultActiveButton;
  54. changeIcon: defaultChangeUserpicIcon;
  55. changeIconPosition: point(21px, 23px);
  56. duration: 500;
  57. uploadHeight: 24px;
  58. uploadBg: msgDateImgBgOver;
  59. uploadIcon: defaultUploadUserpicIcon;
  60. uploadIconPosition: point(-1px, 1px);
  61. }
  62. uploadUserpicSize: 32px;
  63. uploadUserpicButton: UserpicButton(defaultUserpicButton) {
  64. size: size(uploadUserpicSize, uploadUserpicSize);
  65. photoSize: uploadUserpicSize;
  66. changeIcon: icon {{ "settings/photo", activeButtonFg }};
  67. changeIconPosition: point(4px, 4px);
  68. }
  69. uploadUserpicButtonBorder: 2px;
  70. restoreUserpicIcon: UserpicButton(defaultUserpicButton) {
  71. size: size(22px, 22px);
  72. photoSize: 22px;
  73. }
  74. confirmInviteTitle: FlatLabel(defaultFlatLabel) {
  75. align: align(center);
  76. minWidth: 320px;
  77. maxHeight: 24px;
  78. textFg: windowBoldFg;
  79. style: TextStyle(defaultTextStyle) {
  80. font: font(18px semibold);
  81. }
  82. }
  83. confirmInviteAbout: FlatLabel(boxLabel) {
  84. align: align(center);
  85. minWidth: 320px;
  86. maxHeight: 60px;
  87. style: TextStyle(boxLabelStyle) {
  88. lineHeight: 19px;
  89. }
  90. }
  91. confirmInviteStatus: FlatLabel(confirmInviteAbout) {
  92. textFg: windowSubTextFg;
  93. style: boxLabelStyle;
  94. maxHeight: 0px;
  95. }
  96. confirmInviteAboutPadding: margins(36px, 4px, 36px, 10px);
  97. confirmInviteAboutRequestsPadding: margins(36px, 9px, 36px, 15px);
  98. confirmInviteTitleTop: 141px;
  99. confirmInvitePhotoSize: 96px;
  100. confirmInvitePhotoTop: 33px;
  101. confirmInviteStatusTop: 164px;
  102. confirmInviteUserHeight: 100px;
  103. confirmInviteUserPhotoSize: 50px;
  104. confirmInviteUserPhotoTop: 210px;
  105. confirmInviteUsersWidth: 320px;
  106. confirmInviteUserName: FlatLabel(defaultFlatLabel) {
  107. align: align(center);
  108. minWidth: 66px;
  109. maxHeight: 20px;
  110. }
  111. confirmInviteUserNameTop: 264px;
  112. confirmPhoneAboutLabel: FlatLabel(defaultFlatLabel) {
  113. minWidth: 272px;
  114. }
  115. confirmPhoneCodeField: InputField(defaultInputField) {
  116. }
  117. aboutRevokePublicLabel: FlatLabel(defaultFlatLabel) {
  118. align: align(topleft);
  119. minWidth: 320px;
  120. }
  121. contactUserIcon: icon {{ "settings/settings_name", menuIconFg }};
  122. contactPhoneIcon: icon {{ "settings/settings_phone_number", menuIconFg }};
  123. contactIconPosition: point(-5px, 23px);
  124. contactPadding: margins(49px, 2px, 0px, 14px);
  125. contactSkip: 9px;
  126. contactPhoneSkip: 30px;
  127. contactsPhotoSize: 42px;
  128. contactsPadding: margins(16px, 7px, 16px, 7px);
  129. contactsNameTop: 2px;
  130. contactsNameStyle: TextStyle(defaultTextStyle) {
  131. font: semiboldFont;
  132. }
  133. contactsStatusTop: 23px;
  134. contactsStatusFont: font(fsize);
  135. contactsCheckPosition: point(8px, 16px);
  136. contactsSortButton: IconButton(defaultIconButton) {
  137. width: 48px;
  138. height: 54px;
  139. icon: icon{{ "contacts_alphabet", boxTitleCloseFg }};
  140. iconOver: icon{{ "contacts_alphabet", boxTitleCloseFgOver }};
  141. iconPosition: point(10px, -1px);
  142. rippleAreaPosition: point(1px, 6px);
  143. rippleAreaSize: 42px;
  144. ripple: defaultRippleAnimationBgOver;
  145. }
  146. contactsSortOnlineIcon: icon{{ "contacts_online", boxTitleCloseFg }};
  147. contactsSortOnlineIconOver: icon{{ "contacts_online", boxTitleCloseFgOver }};
  148. membersMarginTop: 10px;
  149. membersMarginBottom: 10px;
  150. peerListBoxItem: PeerListItem(defaultPeerListItem) {
  151. height: 56px;
  152. photoSize: contactsPhotoSize;
  153. photoPosition: point(16px, 7px);
  154. namePosition: point(74px, 9px);
  155. statusPosition: point(74px, 30px);
  156. button: OutlineButton(defaultPeerListButton) {
  157. textBg: contactsBg;
  158. textBgOver: contactsBgOver;
  159. ripple: defaultRippleAnimation;
  160. }
  161. statusFg: contactsStatusFg;
  162. statusFgOver: contactsStatusFgOver;
  163. statusFgActive: contactsStatusFgOnline;
  164. }
  165. peerListBox: PeerList(defaultPeerList) {
  166. padding: margins(
  167. 0px,
  168. membersMarginTop,
  169. 0px,
  170. membersMarginBottom);
  171. item: peerListBoxItem;
  172. }
  173. localStorageRowHeight: 50px;
  174. localStorageRowPadding: margins(22px, 5px, 20px, 5px);
  175. localStorageRowTitle: FlatLabel(defaultFlatLabel) {
  176. textFg: windowBoldFg;
  177. maxHeight: 20px;
  178. style: TextStyle(defaultTextStyle) {
  179. font: font(14px semibold);
  180. }
  181. }
  182. localStorageRowSize: FlatLabel(defaultFlatLabel) {
  183. textFg: contactsStatusFg;
  184. maxHeight: 20px;
  185. style: TextStyle(defaultTextStyle) {
  186. font: font(14px);
  187. }
  188. }
  189. localStorageClear: defaultBoxButton;
  190. localStorageLimitLabel: LabelSimple(defaultLabelSimple) {
  191. font: boxTextFont;
  192. }
  193. localStorageLimitLabelMargin: margins(22px, 10px, 20px, 5px);
  194. localStorageLimitSlider: MediaSlider(defaultContinuousSlider) {
  195. seekSize: size(15px, 15px);
  196. }
  197. localStorageLimitMargin: margins(22px, 5px, 20px, 10px);
  198. shareRowsTop: 12px;
  199. shareRowHeight: 108px;
  200. sharePhotoTop: 6px;
  201. shareBoxListItem: PeerListItem(defaultPeerListItem) {
  202. nameStyle: TextStyle(defaultTextStyle) {
  203. font: font(11px);
  204. }
  205. nameFg: windowFg;
  206. nameFgChecked: windowActiveTextFg;
  207. checkbox: RoundImageCheckbox(defaultPeerListCheckbox) {
  208. imageRadius: 28px;
  209. imageSmallRadius: 24px;
  210. }
  211. }
  212. shareBoxList: PeerList(defaultPeerList) {
  213. bg: boxBg;
  214. item: shareBoxListItem;
  215. }
  216. shareNameTop: 6px;
  217. shareColumnSkip: 6px;
  218. shareActivateDuration: 150;
  219. shareScrollDuration: 300;
  220. shareComment: InputField(defaultInputField) {
  221. style: defaultTextStyle;
  222. textMargins: margins(8px, 8px, 8px, 6px);
  223. heightMin: 36px;
  224. heightMax: 72px;
  225. placeholderFg: placeholderFg;
  226. placeholderFgActive: placeholderFgActive;
  227. placeholderFgError: placeholderFgActive;
  228. placeholderMargins: margins(2px, 0px, 2px, 0px);
  229. placeholderScale: 0.;
  230. placeholderFont: normalFont;
  231. border: 0px;
  232. borderActive: 0px;
  233. }
  234. shareCommentPadding: margins(5px, 5px, 5px, 5px);
  235. notificationsBoxMonitor: icon {{ "monitor", notificationsBoxMonitorFg }};
  236. notificationsBoxScreenTop: 10px;
  237. notificationsBoxScreenSize: size(280px, 160px);
  238. notificationsSampleSkip: 5px;
  239. notificationsSampleTopSkip: 5px;
  240. notificationsSampleBottomSkip: 5px;
  241. notificationsSampleMargin: 2px;
  242. notificationSampleOpacity: 0.5;
  243. notificationSampleSize: size(64px, 16px);
  244. membersAboutLimitPadding: margins(0px, 16px, 0px, 16px);
  245. membersAbout: FlatLabel(defaultFlatLabel) {
  246. minWidth: 240px;
  247. textFg: membersAboutLimitFg;
  248. align: align(top);
  249. style: boxLabelStyle;
  250. }
  251. fragmentBoxButton: RoundButton(introFragmentButton) {
  252. width: 256px;
  253. }
  254. passcodeHeaderFont: font(19px);
  255. passcodeHeaderHeight: 80px;
  256. passcodeInput: InputField(introPhone) {
  257. textMargins: margins(1px, 27px, 1px, 6px);
  258. }
  259. passcodeSubmit: RoundButton(introNextButton) {
  260. width: 225px;
  261. }
  262. passcodeSubmitSkip: 40px;
  263. passcodePadding: margins(0px, 0px, 0px, 5px);
  264. passcodeTextLine: 28px;
  265. passcodeLittleSkip: 5px;
  266. passcodeAboutSkip: 7px;
  267. passcodeSkip: 23px;
  268. passcodeSystemUnlock: IconButton(defaultIconButton) {
  269. width: 32px;
  270. height: 36px;
  271. icon: icon{{ "menu/passcode_winhello", lightButtonFg }};
  272. iconOver: icon{{ "menu/passcode_winhello", lightButtonFg }};
  273. iconPosition: point(4px, 4px);
  274. rippleAreaSize: 32px;
  275. rippleAreaPosition: point(0px, 0px);
  276. ripple: RippleAnimation(defaultRippleAnimation) {
  277. color: lightButtonBgOver;
  278. }
  279. }
  280. passcodeSystemTouchID: icon{{ "menu/passcode_finger", lightButtonFg }};
  281. passcodeSystemAppleWatch: icon{{ "menu/passcode_watch", lightButtonFg }};
  282. passcodeSystemSystemPwd: icon{{ "menu/permissions", lightButtonFg }};
  283. passcodeSystemUnlockLater: FlatLabel(defaultFlatLabel) {
  284. align: align(top);
  285. textFg: windowSubTextFg;
  286. }
  287. passcodeSystemUnlockSkip: 12px;
  288. newGroupAboutFg: windowSubTextFg;
  289. newGroupPadding: margins(4px, 6px, 4px, 3px);
  290. newGroupSkip: 27px;
  291. newGroupInfoPadding: margins(0px, -4px, 0px, 1px);
  292. newGroupLinkPadding: margins(4px, 27px, 4px, 21px);
  293. newGroupLinkTop: 3px;
  294. newGroupLinkFont: font(16px);
  295. newGroupNamePosition: point(27px, 5px);
  296. newGroupDescriptionPadding: margins(0px, 13px, 0px, 4px);
  297. newGroupDescription: InputField(defaultInputField) {
  298. textMargins: margins(1px, 26px, 1px, 4px);
  299. heightMax: 116px;
  300. }
  301. setupChannelLink: InputField(defaultInputField) {
  302. textMargins: margins(0px, 6px, 0px, 4px);
  303. heightMin: 32px;
  304. }
  305. themeWarningWidth: boxWideWidth;
  306. themeWarningHeight: 150px;
  307. themeWarningTextTop: 60px;
  308. aboutWidth: 390px;
  309. aboutVersionTop: -3px;
  310. aboutVersionLink: LinkButton(defaultLinkButton) {
  311. color: windowSubTextFg;
  312. overColor: windowSubTextFg;
  313. }
  314. aboutTextTop: 34px;
  315. aboutSkip: 14px;
  316. aboutLabel: FlatLabel(defaultFlatLabel) {
  317. minWidth: 300px;
  318. align: align(topleft);
  319. style: TextStyle(defaultTextStyle) {
  320. lineHeight: 22px;
  321. }
  322. }
  323. autoDownloadTitleFont: font(15px semibold);
  324. autoDownloadLimitSlider: MediaSlider(defaultContinuousSlider) {
  325. seekSize: size(15px, 15px);
  326. }
  327. autoDownloadLimitPadding: margins(22px, 8px, 22px, 8px);
  328. confirmMaxHeight: 245px;
  329. supportInfoField: InputField(defaultInputField) {
  330. heightMax: 256px;
  331. }
  332. connectionHostInputField: InputField(defaultInputField) {
  333. width: 160px;
  334. }
  335. connectionPortInputField: InputField(defaultInputField) {
  336. width: 55px;
  337. }
  338. connectionUserInputField: InputField(defaultInputField) {
  339. width: 95px;
  340. }
  341. connectionPasswordInputField: InputField(defaultInputField) {
  342. width: 120px;
  343. }
  344. connectionIPv6Skip: 11px;
  345. autolockWidth: 256px;
  346. autolockButton: Checkbox(defaultBoxCheckbox) {
  347. width: 200px;
  348. }
  349. langsRadio: Radio(defaultRadio) {
  350. bg: boxBg;
  351. }
  352. backgroundPadding: 10px;
  353. backgroundSize: size(108px, 193px);
  354. backgroundScroll: ScrollArea(boxScroll) {
  355. deltax: 3px;
  356. width: 10px;
  357. deltat: 10px;
  358. deltab: 10px;
  359. }
  360. sendMediaPreviewSize: 308px;
  361. sendMediaPreviewHeightMax: 1280;
  362. sendMediaRowSkip: 10px;
  363. editMediaHintLabel: FlatLabel(defaultFlatLabel) {
  364. textFg: windowSubTextFg;
  365. minWidth: sendMediaPreviewSize;
  366. }
  367. calendarTitleHeight: boxTitleHeight;
  368. calendarPrevious: IconButton {
  369. width: calendarTitleHeight;
  370. height: calendarTitleHeight;
  371. icon: icon {{ "calendar_down-flip_vertical", boxTitleFg }};
  372. iconPosition: point(-1px, -1px);
  373. rippleAreaPosition: point(2px, 2px);
  374. rippleAreaSize: 44px;
  375. ripple: defaultRippleAnimationBgOver;
  376. }
  377. calendarPreviousDisabled: icon {{ "calendar_down-flip_vertical", menuIconFg }};
  378. calendarNext: IconButton(calendarPrevious) {
  379. icon: icon {{ "calendar_down", boxTitleFg }};
  380. }
  381. CalendarSizes {
  382. width: pixels;
  383. daysHeight: pixels;
  384. cellSize: size;
  385. cellInner: pixels;
  386. padding: margins;
  387. }
  388. calendarNextDisabled: icon {{ "calendar_down", menuIconFg }};
  389. calendarTitleFont: boxTitleFont;
  390. defaultCalendarSizes: CalendarSizes {
  391. width: boxWideWidth;
  392. daysHeight: 40px;
  393. cellSize: size(48px, 40px);
  394. cellInner: 34px;
  395. padding: margins(14px, 0px, 14px, 0px);
  396. }
  397. calendarDaysFont: normalFont;
  398. calendarDaysFg: boxTitleAdditionalFg;
  399. calendarScroll: ScrollArea(defaultSolidScroll) {
  400. deltat: 3px;
  401. deltab: 3px;
  402. round: 1px;
  403. width: 8px;
  404. deltax: 3px;
  405. hiding: 1000;
  406. }
  407. CalendarColors {
  408. dayTextColor: color;
  409. dayTextGrayedOutColor: color;
  410. iconButtonNext: IconButton;
  411. iconButtonNextDisabled: icon;
  412. iconButtonPrevious: IconButton;
  413. iconButtonPreviousDisabled: icon;
  414. iconButtonRippleColorDisabled: color;
  415. rippleColor: color;
  416. rippleColorHighlighted: color;
  417. rippleGrayedOutColor: color;
  418. titleTextColor: color;
  419. }
  420. defaultCalendarColors: CalendarColors {
  421. dayTextColor: boxTextFg;
  422. dayTextGrayedOutColor: windowSubTextFg;
  423. iconButtonNext: calendarNext;
  424. iconButtonNextDisabled: calendarNextDisabled;
  425. iconButtonPrevious: calendarPrevious;
  426. iconButtonPreviousDisabled: calendarPreviousDisabled;
  427. iconButtonRippleColorDisabled: boxBg;
  428. rippleColor: windowBgOver;
  429. rippleColorHighlighted: dialogsRippleBgActive;
  430. rippleGrayedOutColor: windowBgRipple;
  431. titleTextColor: boxTitleFg;
  432. }
  433. passcodeTextStyle: TextStyle(defaultTextStyle) {
  434. lineHeight: 20px;
  435. }
  436. usernamePadding: margins(24px, 2px, 24px, 10px);
  437. usernameSkip: 44px;
  438. usernameDefaultFg: windowSubTextFg;
  439. editMediaLabelMargins: margins(0px, 11px, 0px, 0px);
  440. editMediaCheckboxMargins: margins(0px, 15px, 23px, 15px);
  441. downloadPathSkip: 10px;
  442. colorEditWidth: 390px;
  443. colorEditSkip: 10px;
  444. colorPickerSize: 256px;
  445. colorPickerMarkRadius: 6px;
  446. colorPickerMarkLine: 1px;
  447. colorSliderSkip: 8px;
  448. colorSliderArrowLeft: icon {{ "color_slider_arrow", sliderBgActive }};
  449. colorSliderArrowRight: icon {{ "color_slider_arrow-flip_horizontal", sliderBgActive }};
  450. colorSliderArrowTop: icon {{ "color_slider_arrow_vertical", sliderBgActive }};
  451. colorSliderArrowBottom: icon {{ "color_slider_arrow_vertical-flip_vertical", sliderBgActive }};
  452. colorSliderWidth: 19px;
  453. colorSampleSize: size(60px, 34px);
  454. colorFieldSkip: 13px;
  455. colorValueInput: InputField(defaultInputField) {
  456. textMargins: margins(16px, 3px, 0px, 2px);
  457. heightMin: 27px;
  458. }
  459. colorResultInput: InputField(colorValueInput) {
  460. }
  461. changePhoneButton: RoundButton(defaultActiveButton) {
  462. width: 256px;
  463. }
  464. changePhoneButtonPadding: margins(0px, 32px, 0px, 44px);
  465. changePhoneTitle: FlatLabel(boxTitle) {
  466. }
  467. changePhoneTitlePadding: margins(0px, 8px, 0px, 8px);
  468. changePhoneDescription: FlatLabel(defaultFlatLabel) {
  469. minWidth: 332px;
  470. align: align(top);
  471. textFg: windowSubTextFg;
  472. }
  473. changePhoneDescriptionPadding: margins(0px, 1px, 0px, 8px);
  474. changePhoneIconPadding: margins(0px, 39px, 0px, 5px);
  475. changePhoneIconSize: 120px;
  476. changePhoneLabel: FlatLabel(defaultFlatLabel) {
  477. minWidth: 275px;
  478. textFg: windowSubTextFg;
  479. }
  480. changePhoneError: FlatLabel(changePhoneLabel) {
  481. textFg: boxTextFgError;
  482. }
  483. adminLogFilterUserpicLeft: 15px;
  484. adminLogFilterLittleSkip: 16px;
  485. adminLogFilterCheckbox: Checkbox(defaultBoxCheckbox) {
  486. style: TextStyle(boxTextStyle) {
  487. font: font(boxFontSize semibold);
  488. }
  489. }
  490. adminLogFilterSkip: 32px;
  491. adminLogFilterUserCheckbox: Checkbox(defaultBoxCheckbox) {
  492. margin: margins(8px, 6px, 8px, 6px);
  493. checkPosition: point(8px, 6px);
  494. }
  495. rightsCheckbox: Checkbox(defaultCheckbox) {
  496. textPosition: point(10px, 1px);
  497. rippleBg: attentionButtonBgOver;
  498. }
  499. rightsToggle: Toggle(defaultToggle) {
  500. toggledFg: windowBgActive;
  501. untoggledFg: attentionButtonFg;
  502. lockIcon: icon {{ "info/info_rights_lock", windowBgActive }};
  503. xsize: 8px;
  504. vsize: 5px;
  505. vshift: 1px;
  506. stroke: 2px;
  507. duration: universalDuration;
  508. }
  509. rightsButton: SettingsButton(defaultSettingsButton) {
  510. padding: margins(22px, 8px, 22px, 8px);
  511. toggle: rightsToggle;
  512. toggleOver: rightsToggle;
  513. toggleSkip: 20px;
  514. }
  515. rightsButtonToggleWidth: 70px;
  516. rightsDividerMargin: margins(0px, 0px, 0px, 20px);
  517. rightsHeaderMargin: margins(22px, 13px, 22px, 7px);
  518. rightsToggleMargin: margins(22px, 8px, 22px, 8px);
  519. rightsAboutMargin: margins(22px, 8px, 22px, 8px);
  520. rightsPhotoButton: UserpicButton(defaultUserpicButton) {
  521. size: size(60px, 60px);
  522. photoSize: 60px;
  523. }
  524. rightsPhotoMargin: margins(20px, 0px, 15px, 18px);
  525. rightsNameStyle: TextStyle(semiboldTextStyle) {
  526. font: font(15px semibold);
  527. }
  528. rightsNameTop: 8px;
  529. rightsStatusTop: 32px;
  530. rightsHeaderLabel: FlatLabel(boxLabel) {
  531. style: TextStyle(semiboldTextStyle) {
  532. font: font(boxFontSize semibold);
  533. }
  534. textFg: windowActiveTextFg;
  535. }
  536. groupStickersRemove: defaultMultiSelectSearchCancel;
  537. groupStickersRemovePosition: point(6px, 6px);
  538. groupStickersFieldPadding: margins(8px, 6px, 8px, 6px);
  539. groupStickersField: InputField(defaultMultiSelectSearchField) {
  540. placeholderFont: boxTextFont;
  541. style: boxTextStyle;
  542. placeholderMargins: margins(0px, 0px, 0px, 0px);
  543. textMargins: margins(0px, 7px, 0px, 0px);
  544. textBg: boxBg;
  545. heightMin: 32px;
  546. }
  547. groupStickersSubTitleHeight: 48px;
  548. proxyUsePadding: margins(22px, 6px, 22px, 5px);
  549. proxyTryIPv6Padding: margins(22px, 8px, 22px, 5px);
  550. proxyRowPadding: margins(22px, 8px, 8px, 8px);
  551. proxyRowIconSkip: 32px;
  552. proxyRowSkip: 2px;
  553. proxyRowRipple: defaultRippleAnimationBgOver;
  554. proxyRowTitleFg: windowFg;
  555. proxyRowTitlePalette: TextPalette(defaultTextPalette) {
  556. linkFg: windowSubTextFg;
  557. }
  558. proxyRowTitleStyle: TextStyle(defaultTextStyle) {
  559. font: semiboldFont;
  560. }
  561. proxyRowStatusFg: windowSubTextFg;
  562. proxyRowStatusFgOnline: windowActiveTextFg;
  563. proxyRowStatusFgOffline: boxTextFgError;
  564. proxyRowStatusFgAvailable: boxTextFgGood;
  565. proxyEditTitle: FlatLabel(defaultFlatLabel) {
  566. style: TextStyle(defaultTextStyle) {
  567. font: autoDownloadTitleFont;
  568. }
  569. textFg: boxTitleFg;
  570. }
  571. proxyEditTitlePadding: margins(22px, 16px, 22px, 0px);
  572. proxyEditTypePadding: margins(22px, 4px, 22px, 8px);
  573. proxyEditInputPadding: margins(22px, 0px, 22px, 0px);
  574. proxyEditSkip: 16px;
  575. proxyEmptyListLabel: FlatLabel(defaultFlatLabel) {
  576. align: align(top);
  577. textFg: windowSubTextFg;
  578. }
  579. proxyEmptyListPadding: margins(22px, 48px, 22px, 0px);
  580. proxyCheckingPosition: point(2px, 5px);
  581. proxyCheckingSkip: 6px;
  582. proxyCheckingAnimation: InfiniteRadialAnimation(defaultInfiniteRadialAnimation) {
  583. color: windowSubTextFg;
  584. thickness: 1px;
  585. size: size(8px, 8px);
  586. }
  587. proxyDropdownDownPosition: point(-2px, 35px);
  588. proxyDropdownUpPosition: point(-2px, 20px);
  589. proxyAboutPadding: margins(22px, 7px, 22px, 14px);
  590. proxyAboutSponsorPadding: margins(22px, 7px, 22px, 0px);
  591. proxyApplyBoxLabel : FlatLabel(defaultFlatLabel) {
  592. maxHeight: 30px;
  593. }
  594. markdownLinkFieldPadding: margins(22px, 0px, 22px, 10px);
  595. termsContent: FlatLabel(defaultFlatLabel) {
  596. minWidth: 285px;
  597. }
  598. termsPadding: margins(22px, 4px, 16px, 16px);
  599. termsAgePadding: margins(22px, 16px, 16px, 0px);
  600. themesSmallSkip: 10px;
  601. themesMenuToggle: IconButton(defaultIconButton) {
  602. width: 44px;
  603. height: 44px;
  604. icon: menuToggleIcon;
  605. iconOver: menuToggleIconOver;
  606. iconPosition: point(-1px, -1px);
  607. rippleAreaPosition: point(4px, 4px);
  608. rippleAreaSize: 36px;
  609. ripple: defaultRippleAnimationBgOver;
  610. }
  611. themesMenuPosition: point(-2px, 25px);
  612. createPollField: InputField(defaultInputField) {
  613. textMargins: margins(0px, 4px, 0px, 4px);
  614. textAlign: align(left);
  615. heightMin: 36px;
  616. heightMax: 86px;
  617. placeholderFg: placeholderFg;
  618. placeholderFgActive: placeholderFgActive;
  619. placeholderFgError: placeholderFgActive;
  620. placeholderMargins: margins(2px, 0px, 2px, 0px);
  621. placeholderAlign: align(topleft);
  622. placeholderScale: 0.;
  623. placeholderFont: boxTextFont;
  624. placeholderShift: -50px;
  625. border: 0px;
  626. borderActive: 0px;
  627. duration: 100;
  628. }
  629. createPollFieldPadding: margins(22px, 5px, 22px, 5px);
  630. createPollOptionField: InputField(createPollField) {
  631. textMargins: margins(22px, 11px, 40px, 11px);
  632. placeholderMargins: margins(2px, 0px, 2px, 0px);
  633. heightMax: 68px;
  634. }
  635. createPollOptionFieldPremium: InputField(createPollOptionField) {
  636. textMargins: margins(22px, 11px, 68px, 11px);
  637. }
  638. createPollOptionFieldPremiumEmojiPosition: point(15px, -1px);
  639. createPollSolutionField: InputField(createPollField) {
  640. textMargins: margins(0px, 4px, 0px, 4px);
  641. border: 1px;
  642. borderActive: 2px;
  643. }
  644. createPollLimitPadding: margins(22px, 10px, 22px, 16px);
  645. createPollOptionRemove: CrossButton {
  646. width: 22px;
  647. height: 22px;
  648. cross: CrossAnimation {
  649. size: 22px;
  650. skip: 6px;
  651. stroke: 1.5;
  652. minScale: 0.3;
  653. }
  654. crossFg: boxTitleCloseFg;
  655. crossFgOver: boxTitleCloseFgOver;
  656. crossPosition: point(0px, 0px);
  657. duration: 150;
  658. loadingPeriod: 1000;
  659. ripple: defaultRippleAnimationBgOver;
  660. }
  661. createPollOptionRemovePosition: point(11px, 9px);
  662. createPollOptionEmojiPositionSkip: 4px;
  663. createPollWarning: FlatLabel(defaultFlatLabel) {
  664. textFg: windowSubTextFg;
  665. palette: TextPalette(defaultTextPalette) {
  666. linkFg: boxTextFgError;
  667. }
  668. }
  669. createPollWarningPosition: point(16px, 6px);
  670. createPollCheckboxMargin: margins(22px, 10px, 22px, 10px);
  671. createPollFieldTitlePadding: margins(22px, 7px, 10px, 6px);
  672. sendGifWithCaptionEmojiPosition: point(-30px, 23px);
  673. backgroundCheckbox: Checkbox(defaultCheckbox) {
  674. textFg: msgServiceFg;
  675. textFgActive: msgServiceFg;
  676. width: -50px;
  677. margin: margins(0px, 0px, 0px, 0px);
  678. textPosition: point(0px, 6px);
  679. checkPosition: point(0px, 0px);
  680. style: semiboldTextStyle;
  681. }
  682. backgroundCheck: ServiceCheck {
  683. margin: margins(10px, 6px, 8px, 6px);
  684. diameter: 18px;
  685. shift: 2px;
  686. thickness: 2px;
  687. tip: point(7px, 13px);
  688. small: 3px;
  689. large: 6px;
  690. stroke: 2px;
  691. color: msgServiceFg;
  692. duration: 200;
  693. }
  694. backgroundConfirmPadding: margins(24px, 16px, 24px, 16px);
  695. backgroundConfirm: RoundButton(defaultActiveButton) {
  696. height: 44px;
  697. textTop: 12px;
  698. style: semiboldTextStyle;
  699. }
  700. backgroundConfirmCancel: RoundButton(backgroundConfirm) {
  701. textFg: mediaviewSaveMsgFg;
  702. textFgOver: mediaviewSaveMsgFg;
  703. numbersTextFg: mediaviewSaveMsgFg;
  704. numbersTextFgOver: mediaviewSaveMsgFg;
  705. textBg: shadowFg;
  706. textBgOver: shadowFg;
  707. height: 44px;
  708. textTop: 12px;
  709. style: semiboldTextStyle;
  710. ripple: RippleAnimation(defaultRippleAnimation) {
  711. color: shadowFg;
  712. }
  713. }
  714. urlAuthCheckbox: Checkbox(defaultBoxCheckbox) {
  715. width: 240px;
  716. }
  717. addContactFieldMargin: margins(19px, 0px, 19px, 10px);
  718. addContactWarningMargin: margins(19px, 10px, 19px, 5px);
  719. blockUserConfirmation: FlatLabel(boxLabel) {
  720. minWidth: 240px;
  721. }
  722. transferCheckWidth: 320px;
  723. slowmodeLabelsMargin: margins(0px, 5px, 0px, 0px);
  724. slowmodeLabel: LabelSimple(defaultLabelSimple) {
  725. textFg: windowSubTextFg;
  726. }
  727. boostsUnrestrictLabel: FlatLabel(defaultFlatLabel) {
  728. textFg: windowSubTextFg;
  729. }
  730. customBadgeField: InputField(defaultInputField) {
  731. textMargins: margins(2px, 7px, 2px, 0px);
  732. placeholderFg: placeholderFg;
  733. placeholderFgActive: placeholderFgActive;
  734. placeholderFgError: placeholderFgActive;
  735. placeholderMargins: margins(0px, 0px, 0px, 0px);
  736. placeholderScale: 0.;
  737. placeholderFont: normalFont;
  738. heightMin: 32px;
  739. }
  740. pollResultsQuestion: FlatLabel(defaultFlatLabel) {
  741. minWidth: 320px;
  742. textFg: windowBoldFg;
  743. style: TextStyle(defaultTextStyle) {
  744. font: font(16px semibold);
  745. }
  746. }
  747. pollResultsVotesCount: FlatLabel(defaultFlatLabel) {
  748. textFg: windowSubTextFg;
  749. }
  750. pollResultsHeaderPadding: margins(22px, 22px, 22px, 8px);
  751. pollResultsShowMore: SettingsButton(defaultSettingsButton) {
  752. textFg: lightButtonFg;
  753. textFgOver: lightButtonFgOver;
  754. textBg: windowBg;
  755. textBgOver: windowBgOver;
  756. style: semiboldTextStyle;
  757. height: 20px;
  758. padding: margins(71px, 10px, 8px, 8px);
  759. ripple: defaultRippleAnimation;
  760. }
  761. inviteViaLinkButton: SettingsButton(defaultSettingsButton) {
  762. textFg: lightButtonFg;
  763. textFgOver: lightButtonFgOver;
  764. textBg: windowBg;
  765. textBgOver: windowBgOver;
  766. style: TextStyle(defaultTextStyle) {
  767. font: font(14px semibold);
  768. }
  769. height: 20px;
  770. padding: margins(74px, 8px, 8px, 9px);
  771. ripple: defaultRippleAnimation;
  772. }
  773. inviteViaLinkIcon: icon {{ "info/edit/group_manage_links", lightButtonFg }};
  774. inviteViaLinkIconPosition: point(23px, 2px);
  775. peerListWithInviteViaLink: PeerList(peerListBox) {
  776. padding: margins(
  777. 0px,
  778. 0px,
  779. 0px,
  780. membersMarginBottom);
  781. }
  782. peerListSingleRow: PeerList(peerListBox) {
  783. padding: margins(0px, 0px, 0px, 0px);
  784. }
  785. peerListSmallSkips: PeerList(peerListBox) {
  786. padding: margins(
  787. 0px,
  788. defaultVerticalListSkip,
  789. 0px,
  790. defaultVerticalListSkip);
  791. }
  792. scheduleHeight: 95px;
  793. scheduleDateTop: 38px;
  794. scheduleDateField: InputField(defaultInputField) {
  795. textMargins: margins(2px, 0px, 2px, 0px);
  796. placeholderScale: 0.;
  797. heightMin: 30px;
  798. textAlign: align(top);
  799. }
  800. scheduleTimeField: InputField(scheduleDateField) {
  801. border: 0px;
  802. borderActive: 0px;
  803. heightMin: 28px;
  804. placeholderFont: font(14px);
  805. placeholderFgActive: placeholderFgActive;
  806. }
  807. scheduleDateWidth: 136px;
  808. scheduleTimeWidth: 72px;
  809. scheduleAtSkip: 24px;
  810. scheduleAtTop: 42px;
  811. scheduleAtLabel: FlatLabel(defaultFlatLabel) {
  812. }
  813. scheduleTimeSeparator: FlatLabel(defaultFlatLabel) {
  814. style: TextStyle(defaultTextStyle) {
  815. font: font(14px);
  816. }
  817. }
  818. scheduleTimeSeparatorPadding: margins(2px, 0px, 2px, 0px);
  819. muteBoxTimeField: InputField(scheduleDateField) {
  820. textMargins: margins(0px, 0px, 0px, 0px);
  821. placeholderMargins: margins(0px, 0px, 0px, 0px);
  822. placeholderScale: 0.;
  823. heightMin: 30px;
  824. textAlign: align(left);
  825. }
  826. muteBoxTimeFieldPadding: margins(5px, 0px, 5px, 0px);
  827. boxAttentionDividerLabel: FlatLabel(boxDividerLabel) {
  828. textFg: boxTextFgError;
  829. }
  830. autolockDateField: InputField(scheduleDateField) {
  831. heightMin: 22px;
  832. }
  833. autolockTimeField: InputField(scheduleTimeField) {
  834. heightMin: 20px;
  835. }
  836. autolockTimeWidth: 52px;
  837. sponsoredUrlButtonSkip: 11px;
  838. sponsoredUrlButton: RoundButton(defaultActiveButton) {
  839. height: 32px;
  840. width: -42px;
  841. textBg: transparent;
  842. textBgOver: transparent;
  843. radius: roundRadiusLarge;
  844. padding: margins(2px, 2px, 2px, 2px);
  845. textFg: historyLinkInFg;
  846. textFgOver: historyLinkInFg;
  847. textTop: 7px;
  848. style: defaultTextStyle;
  849. ripple: defaultRippleAnimationBgOver;
  850. }
  851. requestPeerRestriction: FlatLabel(defaultFlatLabel) {
  852. minWidth: 240px;
  853. textFg: membersAboutLimitFg;
  854. style: TextStyle(boxTextStyle) {
  855. lineHeight: 22px;
  856. }
  857. }
  858. requestsBoxItem: PeerListItem(peerListBoxItem) {
  859. height: 99px;
  860. button: OutlineButton(defaultPeerListButton) {
  861. textBg: contactsBg;
  862. textBgOver: contactsBg;
  863. ripple: RippleAnimation(defaultRippleAnimation) {
  864. color: contactsBgOver;
  865. }
  866. }
  867. }
  868. requestsBoxList: PeerList(peerListBox) {
  869. padding: margins(0px, 12px, 0px, 12px);
  870. item: requestsBoxItem;
  871. }
  872. contactsWithStories: PeerList(peerListBox) {
  873. padding: margins(0px, 0px, 0px, 0px);
  874. item: PeerListItem(peerListBoxItem) {
  875. height: 52px;
  876. photoPosition: point(18px, 5px);
  877. namePosition: point(70px, 7px);
  878. statusPosition: point(70px, 27px);
  879. checkbox: RoundImageCheckbox(defaultPeerListCheckbox) {
  880. selectExtendTwice: 1px;
  881. imageRadius: 21px;
  882. imageSmallRadius: 19px;
  883. check: RoundCheckbox(defaultPeerListCheck) {
  884. size: 0px;
  885. }
  886. }
  887. nameFgChecked: contactsNameFg;
  888. }
  889. }
  890. storiesReadLineTwice: 2px;
  891. storiesUnreadLineTwice: 4px;
  892. requestsAcceptButton: RoundButton(defaultActiveButton) {
  893. width: -28px;
  894. height: 30px;
  895. textTop: 6px;
  896. }
  897. requestsRejectButton: RoundButton(defaultLightButton) {
  898. width: -28px;
  899. height: 30px;
  900. textTop: 6px;
  901. }
  902. requestAcceptPosition: point(71px, 58px);
  903. requestButtonsSkip: 9px;
  904. ringtonesBoxButton: SettingsButton(defaultSettingsButton) {
  905. textFg: lightButtonFg;
  906. textFgOver: lightButtonFgOver;
  907. padding: margins(56px, 10px, 22px, 8px);
  908. iconLeft: 25px;
  909. }
  910. ringtonesBoxSkip: 7px;
  911. gradientButtonGlareDuration: 700;
  912. gradientButtonGlareTimeout: 2000;
  913. gradientButtonGlareWidth: 100px;
  914. infoLabeledOneLine: FlatLabel(defaultFlatLabel) {
  915. maxHeight: 20px;
  916. style: TextStyle(defaultTextStyle) {
  917. lineHeight: 19px;
  918. }
  919. margin: margins(5px, 5px, 5px, 5px);
  920. }
  921. infoLabelSkip: 2px;
  922. infoLabeled: FlatLabel(infoLabeledOneLine) {
  923. minWidth: 180px;
  924. maxHeight: 0px;
  925. margin: margins(5px, 5px, 5px, 5px);
  926. }
  927. infoLabel: FlatLabel(infoLabeled) {
  928. textFg: windowSubTextFg;
  929. }
  930. shortInfoBox: ShortInfoBox {
  931. label: infoLabel;
  932. labeled: infoLabeled;
  933. labeledOneLine: infoLabeledOneLine;
  934. }
  935. birthdayLabeled: FlatLabel(infoLabeled) {
  936. margin: margins(0px, 0px, 0px, 0px);
  937. }
  938. birthdayLabel: FlatLabel(infoLabel) {
  939. margin: margins(0px, 0px, 0px, 0px);
  940. }
  941. birthdayTodayIcon: icon {{ "menu/gift_premium", windowActiveTextFg }};
  942. inviteForbiddenUserpicsPadding: margins(10px, 10px, 10px, 0px);
  943. inviteForbiddenInfo: FlatLabel(defaultFlatLabel) {
  944. minWidth: 240px;
  945. align: align(top);
  946. }
  947. inviteForbiddenInfoPadding: margins(32px, 10px, 32px, 4px);
  948. inviteForbiddenSubscribePadding: margins(16px, 12px, 16px, 16px);
  949. inviteForbiddenOrLabelPadding: margins(32px, 0px, 32px, 0px);
  950. inviteForbiddenTitle: FlatLabel(boxTitle) {
  951. minWidth: 120px;
  952. align: align(top);
  953. }
  954. inviteForbiddenTitlePadding: margins(32px, 4px, 32px, 0px);
  955. inviteForbiddenLockBg: dialogsUnreadBgMuted;
  956. inviteForbiddenLockIcon: icon {{ "emoji/premium_lock", dialogsUnreadFg }};
  957. collectibleIconDiameter: 72px;
  958. collectibleIcon: 64px;
  959. collectibleIconPadding: margins(24px, 32px, 24px, 12px);
  960. collectibleHeader: FlatLabel(boxTitle) {
  961. minWidth: 120px;
  962. maxHeight: 0px;
  963. align: align(top);
  964. }
  965. collectibleHeaderPadding: margins(24px, 16px, 24px, 12px);
  966. collectibleOwnerPadding: margins(24px, 4px, 24px, 8px);
  967. collectibleInfo: inviteForbiddenInfo;
  968. collectibleInfoPadding: margins(24px, 12px, 24px, 12px);
  969. collectibleInfoTonMargins: margins(0px, 3px, 0px, 0px);
  970. collectibleMore: RoundButton(defaultActiveButton) {
  971. height: 36px;
  972. textTop: 9px;
  973. radius: 6px;
  974. }
  975. collectibleMorePadding: margins(24px, 12px, 24px, 0px);
  976. collectibleCopy: RoundButton(defaultLightButton) {
  977. height: 36px;
  978. textTop: 9px;
  979. radius: 6px;
  980. }
  981. collectibleBox: Box(defaultBox) {
  982. buttonPadding: margins(24px, 12px, 24px, 12px);
  983. buttonHeight: 36px;
  984. button: collectibleCopy;
  985. }
  986. moderateBoxUserpic: UserpicButton(defaultUserpicButton) {
  987. size: size(34px, 42px);
  988. photoSize: 34px;
  989. photoPosition: point(0px, 4px);
  990. }
  991. moderateBoxExpand: icon {{ "chat/reply_type_group", boxTextFg }};
  992. moderateBoxExpandHeight: 20px;
  993. moderateBoxExpandRight: 10px;
  994. moderateBoxExpandInnerSkip: 2px;
  995. moderateBoxExpandFont: font(11px);
  996. moderateBoxExpandToggleSize: 4px;
  997. moderateBoxExpandToggleFourStrokes: 3px;
  998. moderateBoxExpandIcon: icon{{ "info/edit/expand_arrow_small-flip_vertical", windowActiveTextFg }};
  999. moderateBoxExpandIconDown: icon{{ "info/edit/expand_arrow_small", windowActiveTextFg }};
  1000. moderateBoxDividerLabel: FlatLabel(boxDividerLabel) {
  1001. palette: TextPalette(defaultTextPalette) {
  1002. selectLinkFg: windowActiveTextFg;
  1003. }
  1004. }
  1005. profileQrFont: font(fsize bold);
  1006. profileQrCenterSize: 34px;
  1007. profileQrBackgroundRadius: 12px;
  1008. profileQrIcon: icon{{ "qr_mini", windowActiveTextFg }};
  1009. profileQrBackgroundMargins: margins(36px, 12px, 36px, 12px);
  1010. profileQrBackgroundPadding: margins(0px, 24px, 0px, 24px);
  1011. foldersMenu: PopupMenu(popupMenuWithIcons) {
  1012. maxHeight: 320px;
  1013. menu: Menu(menuWithIcons) {
  1014. itemPadding: margins(54px, 8px, 44px, 8px);
  1015. }
  1016. }