premium.style 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502
  1. /*
  2. This file is part of Telegram Desktop,
  3. the official desktop application for the Telegram messaging service.
  4. For license and copyright information please follow this link:
  5. https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
  6. */
  7. using "ui/basic.style";
  8. using "boxes/boxes.style";
  9. using "ui/widgets/widgets.style";
  10. using "ui/layers/layers.style";
  11. PremiumLimits {
  12. boxLabel: FlatLabel;
  13. nonPremiumBg: color;
  14. nonPremiumFg: color;
  15. gradientFromLeft: bool;
  16. }
  17. PremiumBubble {
  18. widthLimit: pixels;
  19. height: pixels;
  20. padding: margins;
  21. skip: pixels;
  22. penWidth: pixels;
  23. textSkip: pixels;
  24. tailSize: size;
  25. font: font;
  26. }
  27. PremiumCover {
  28. bg: color;
  29. starSize: size;
  30. starTopSkip: pixels;
  31. titlePadding: margins;
  32. titleFont: font;
  33. about: FlatLabel;
  34. additionalShadowForDarkThemes: bool;
  35. }
  36. ComposePremiumRequired {
  37. label: FlatLabel;
  38. button: RoundButton;
  39. buttonSkip: pixels;
  40. buttonTop: pixels;
  41. position: point;
  42. icon: icon;
  43. }
  44. premiumAboutTextStyle: TextStyle(defaultTextStyle) {
  45. font: font(12px);
  46. linkUnderline: kLinkUnderlineAlways;
  47. lineHeight: 18px;
  48. }
  49. defaultPremiumCover: PremiumCover {
  50. bg: boxBg;
  51. starSize: size(84px, 81px);
  52. starTopSkip: 37px;
  53. titlePadding: margins(0px, 18px, 0px, 11px);
  54. titleFont: boxTitleFont;
  55. about: FlatLabel(defaultFlatLabel) {
  56. style: premiumAboutTextStyle;
  57. palette: TextPalette(defaultTextPalette) {
  58. linkFg: premiumButtonFg;
  59. }
  60. align: align(top);
  61. textFg: premiumButtonFg;
  62. minWidth: 190px;
  63. }
  64. additionalShadowForDarkThemes: true;
  65. }
  66. userPremiumCoverAbout: FlatLabel(boxDividerLabel) {
  67. style: premiumAboutTextStyle;
  68. minWidth: 315px;
  69. maxHeight: 0px;
  70. align: align(top);
  71. }
  72. userPremiumCover: PremiumCover(defaultPremiumCover) {
  73. about: userPremiumCoverAbout;
  74. }
  75. defaultPremiumBoxLabel: FlatLabel(defaultFlatLabel) {
  76. minWidth: 220px;
  77. align: align(topleft);
  78. style: TextStyle(boxTextStyle) {
  79. lineHeight: 22px;
  80. }
  81. }
  82. defaultPremiumLimits: PremiumLimits {
  83. boxLabel: defaultPremiumBoxLabel;
  84. nonPremiumBg: windowBgOver;
  85. nonPremiumFg: windowFg;
  86. gradientFromLeft: false;
  87. }
  88. // Preview.
  89. premiumPreviewBox: Box(defaultBox) {
  90. buttonPadding: margins(18px, 18px, 18px, 18px);
  91. buttonHeight: 44px;
  92. button: RoundButton(defaultActiveButton) {
  93. height: 44px;
  94. textTop: 12px;
  95. style: semiboldTextStyle;
  96. }
  97. }
  98. premiumPreviewDoubledLimitsBox: Box(premiumPreviewBox) {
  99. buttonPadding: margins(12px, 12px, 12px, 12px);
  100. }
  101. premiumPreviewAboutTitlePadding: margins(18px, 19px, 18px, 0px);
  102. premiumPreviewAboutTitle: FlatLabel(defaultFlatLabel) {
  103. minWidth: 240px;
  104. textFg: windowBoldFg;
  105. align: align(top);
  106. style: TextStyle(defaultTextStyle) {
  107. font: font(17px semibold);
  108. }
  109. }
  110. premiumPreviewAbout: FlatLabel(defaultFlatLabel) {
  111. minWidth: 240px;
  112. textFg: membersAboutLimitFg;
  113. align: align(top);
  114. }
  115. premiumPreviewAboutPadding: margins(18px, 8px, 18px, 8px);
  116. premiumPreviewButtonLabel: FlatLabel(defaultFlatLabel) {
  117. textFg: premiumButtonFg;
  118. style: semiboldTextStyle;
  119. }
  120. premiumSlideDuration: 200;
  121. premiumVideoStarSize: size(77px, 73px);
  122. premiumPreviewHeight: 312px;
  123. premiumDot: 6px;
  124. premiumDotPadding: margins(4px, 4px, 4px, 4px);
  125. premiumDotsMargin: margins(0px, 5px, 0px, 6px);
  126. premiumVideoWidth: 182px;
  127. // Graphics.
  128. defaultPremiumBubble: PremiumBubble {
  129. widthLimit: 80px;
  130. height: 40px;
  131. padding: margins(14px, 0px, 14px, 0px);
  132. skip: 8px;
  133. penWidth: 6px;
  134. textSkip: 3px;
  135. tailSize: size(21px, 7px);
  136. font: font(19px);
  137. }
  138. premiumLineRadius: 5px;
  139. premiumLineTextSkip: 11px;
  140. premiumInfographicPadding: margins(0px, 10px, 0px, 15px);
  141. premiumIconChats: icon {{ "limits/chats", settingsIconFg }};
  142. premiumIconFiles: icon {{ "limits/files", settingsIconFg }};
  143. premiumIconFolders: icon {{ "limits/folders", settingsIconFg }};
  144. premiumIconGroups: icon {{ "limits/groups", settingsIconFg }};
  145. premiumIconLinks: icon {{ "limits/links", settingsIconFg }};
  146. premiumIconPins: icon {{ "limits/pins", settingsIconFg }};
  147. premiumIconAccounts: icon {{ "limits/accounts", settingsIconFg }};
  148. premiumIconBoost: icon {{ "limits/boost", settingsIconFg }};
  149. premiumAccountsCheckbox: RoundImageCheckbox(defaultPeerListCheckbox) {
  150. imageRadius: 27px;
  151. imageSmallRadius: 23px;
  152. check: RoundCheckbox(defaultRoundCheckbox) {
  153. size: 0px;
  154. }
  155. }
  156. premiumAccountsLabelSize: size(22px, 15px);
  157. premiumAccountsLabelPadding: margins(2px, 2px, 2px, 2px);
  158. premiumAccountsLabelRadius: 6;
  159. premiumAccountsNameTop: 13px;
  160. premiumAccountsPadding: margins(0px, 20px, 0px, 14px);
  161. premiumAccountsHeight: 105px;
  162. PremiumOption {
  163. rowPadding: margins;
  164. rowMargins: margins;
  165. rowHeight: pixels;
  166. borderWidth: pixels;
  167. borderRadius: pixels;
  168. subtitleTop: pixels;
  169. textLeft: pixels;
  170. badgeHeight: pixels;
  171. badgeRadius: pixels;
  172. badgeMargins: margins;
  173. badgeShift: point;
  174. }
  175. premiumSubscriptionOption: PremiumOption {
  176. rowPadding: margins(9px, 2px, 17px, 3px);
  177. rowMargins: margins(14px, 0px, 5px, 0px);
  178. rowHeight: 39px;
  179. borderWidth: 0px;
  180. borderRadius: 0px;
  181. subtitleTop: 1px;
  182. textLeft: 51px;
  183. badgeHeight: 15px;
  184. badgeRadius: 4px;
  185. badgeMargins: margins(3px, 1px, 3px, 0px);
  186. badgeShift: point(9px, 0px);
  187. }
  188. // Gift.
  189. premiumGiftOption: PremiumOption {
  190. rowPadding: margins(19px, 2px, 17px, 2px);
  191. rowMargins: margins(14px, 0px, 15px, 0px);
  192. rowHeight: 56px;
  193. borderWidth: 2px;
  194. borderRadius: 9px;
  195. subtitleTop: 7px;
  196. textLeft: 53px;
  197. badgeHeight: 18px;
  198. badgeRadius: 4px;
  199. badgeMargins: margins(5px, 1px, 5px, 0px);
  200. }
  201. premiumGiftUserpicPadding: margins(10px, 27px, 18px, 13px);
  202. premiumGiftTitlePadding: margins(18px, 0px, 18px, 0px);
  203. premiumGiftAboutPadding: margins(18px, 5px, 18px, 23px);
  204. premiumGiftTermsPadding: margins(18px, 27px, 18px, 0px);
  205. premiumGiftTerms: FlatLabel(defaultFlatLabel) {
  206. minWidth: 256px;
  207. align: align(top);
  208. textFg: windowSubTextFg;
  209. style: TextStyle(defaultTextStyle) {
  210. font: font(11px);
  211. }
  212. }
  213. premiumGiftBox: Box(premiumPreviewBox) {
  214. buttonPadding: margins(12px, 12px, 12px, 12px);
  215. }
  216. premiumGiftsUserpicButton: UserpicButton(defaultUserpicButton) {
  217. size: size(66px, 66px);
  218. photoSize: 66px;
  219. photoPosition: point(-1px, -1px);
  220. }
  221. premiumGiftsUserpicBadgeSize: size(26px, 26px);
  222. premiumGiftsUserpicBadgeInner: 2px;
  223. premiumGiftsUserpicBadgeFont: font(14px bold);
  224. premiumGiftsBoostIcon: icon{{ "stories/boost_mini", windowBgActive }};
  225. boostSkipTop: 37px;
  226. boostLimits: PremiumLimits(defaultPremiumLimits) {
  227. gradientFromLeft: true;
  228. nonPremiumBg: windowBgRipple;
  229. }
  230. boostBubble: PremiumBubble(defaultPremiumBubble) {
  231. height: 32px;
  232. padding: margins(7px, 0px, 11px, 0px);
  233. skip: 5px;
  234. textSkip: 2px;
  235. tailSize: size(14px, 6px);
  236. font: font(16px);
  237. }
  238. boostTitleSkip: 32px;
  239. boostTitle: FlatLabel(defaultFlatLabel) {
  240. minWidth: 40px;
  241. textFg: windowBoldFg;
  242. maxHeight: 24px;
  243. style: TextStyle(boxTextStyle) {
  244. font: font(17px semibold);
  245. }
  246. }
  247. boostTitleBadge: FlatLabel(defaultFlatLabel) {
  248. margin: margins(4px, 2px, 4px, 2px);
  249. style: semiboldTextStyle;
  250. textFg: premiumButtonFg;
  251. }
  252. boostTitleBadgeSkip: 6px;
  253. boostCenteredTitle: FlatLabel(boostTitle) {
  254. align: align(top);
  255. }
  256. boostTextSkip: 5px;
  257. boostText: FlatLabel(defaultFlatLabel) {
  258. minWidth: 40px;
  259. align: align(top);
  260. }
  261. boostReassignText: FlatLabel(defaultFlatLabel) {
  262. minWidth: 40px;
  263. align: align(top);
  264. }
  265. boostBottomSkip: 6px;
  266. boostBox: Box(premiumPreviewDoubledLimitsBox) {
  267. buttonPadding: margins(16px, 12px, 16px, 12px);
  268. buttonHeight: 42px;
  269. button: RoundButton(defaultActiveButton) {
  270. height: 42px;
  271. textTop: 12px;
  272. style: semiboldTextStyle;
  273. }
  274. }
  275. boostReplaceUserpicsPadding: margins(0px, 18px, 0px, 20px);
  276. boostReplaceUserpicsSkip: 42px;
  277. boostReplaceUserpicsShift: 24px;
  278. boostReplaceUserpic: UserpicButton(defaultUserpicButton) {
  279. size: size(60px, 60px);
  280. photoSize: 60px;
  281. }
  282. boostReplaceIcon: icon{{ "stories/boost_mini", premiumButtonFg }};
  283. boostReplaceIconSkip: 3px;
  284. boostReplaceIconOutline: 2px;
  285. boostReplaceIconAdd: point(4px, 2px);
  286. boostReplaceArrow: icon{{ "mediaview/next", windowSubTextFg }};
  287. showOrIconLastSeen: icon{{ "settings/premium/large_lastseen", windowFgActive }};
  288. showOrIconReadTime: icon{{ "settings/premium/large_readtime", windowFgActive }};
  289. showOrIconBg: windowBgActive;
  290. showOrIconPadding: margins(12px, 12px, 12px, 12px);
  291. showOrIconMargin: margins(0px, 28px, 0px, 12px);
  292. showOrTitlePadding: margins(0px, 0px, 0px, 5px);
  293. showOrAboutPadding: margins(0px, 0px, 0px, 16px);
  294. showOrShowButton: RoundButton(defaultActiveButton) {
  295. width: 308px;
  296. height: 42px;
  297. textTop: 12px;
  298. style: semiboldTextStyle;
  299. }
  300. showOrLabel: FlatLabel(boostText) {
  301. textFg: windowSubTextFg;
  302. }
  303. showOrLineWidth: 190px;
  304. showOrLabelSkip: 7px;
  305. showOrLineTop: 10px;
  306. showOrLabelPadding: margins(0px, 17px, 0px, 13px);
  307. showOrPremiumAboutPadding: margins(0px, 0px, 0px, 0px);
  308. showOrBox: Box(boostBox) {
  309. buttonPadding: margins(28px, 16px, 28px, 27px);
  310. button: showOrShowButton;
  311. }
  312. boostBoxMaxHeight: 512px;
  313. boostLevelBadge: FlatLabel(defaultFlatLabel) {
  314. margin: margins(12px, 4px, 12px, 5px);
  315. style: semiboldTextStyle;
  316. textFg: premiumButtonFg;
  317. align: align(top);
  318. }
  319. boostLevelBadgePadding: margins(30px, 12px, 32px, 12px);
  320. boostLevelBadgeSkip: 12px;
  321. boostLevelBadgeLine: 1px;
  322. boostFeatureLabel: FlatLabel(defaultFlatLabel) {
  323. margin: margins(36px, 4px, 0px, 4px);
  324. }
  325. boostFeaturePadding: margins(64px, 6px, 24px, 6px);
  326. boostFeatureIconPosition: point(0px, 0px);
  327. boostFeatureBackground: icon{{ "settings/premium/features/feature_wallpaper", windowBgActive }};
  328. boostFeatureCustomBackground: icon{{ "settings/premium/features/feature_custombg", windowBgActive }};
  329. boostFeatureCustomEmoji: icon{{ "settings/premium/features/feature_emoji_pack", windowBgActive }};
  330. boostFeatureCustomLink: icon{{ "settings/premium/features/feature_links2", windowBgActive }};
  331. boostFeatureCustomReactions: icon{{ "settings/premium/features/feature_reactions", windowBgActive }};
  332. boostFeatureEmojiStatus: icon{{ "settings/premium/features/feature_status", windowBgActive }};
  333. boostFeatureLink: icon{{ "settings/premium/features/feature_links", windowBgActive }};
  334. boostFeatureName: icon{{ "settings/premium/features/feature_color_names", windowBgActive }};
  335. boostFeatureStories: icon{{ "settings/premium/features/feature_stories", windowBgActive }};
  336. boostFeatureTranscribe: icon{{ "settings/premium/features/feature_voice", windowBgActive }};
  337. boostFeatureOffSponsored: icon{{ "settings/premium/features/feature_off_sponsored", windowBgActive }};
  338. paidReactBox: Box(boostBox) {
  339. buttonPadding: margins(22px, 22px, 22px, 22px);
  340. buttonHeight: 42px;
  341. button: RoundButton(defaultActiveButton) {
  342. height: 42px;
  343. textTop: 12px;
  344. style: semiboldTextStyle;
  345. }
  346. }
  347. paidReactBubbleIcon: icon{{ "settings/premium/star", premiumButtonFg }};
  348. paidReactBubbleTop: 5px;
  349. paidReactSliderTop: 5px;
  350. paidReactSlider: MediaSlider(defaultContinuousSlider) {
  351. activeFg: creditsBg3;
  352. inactiveFg: creditsBg2;
  353. activeFgOver: creditsBg3;
  354. inactiveFgOver: creditsBg2;
  355. activeFgDisabled: creditsBg3;
  356. inactiveFgDisabled: creditsBg2;
  357. width: 6px;
  358. seekSize: size(16px, 16px);
  359. }
  360. paidReactTitleSkip: 23px;
  361. paidReactTopTitleMargin: margins(10px, 26px, 10px, 12px);
  362. paidReactTopMargin: margins(0px, 12px, 0px, 11px);
  363. paidReactTopUserpic: 42px;
  364. paidReactTopNameSkip: 47px;
  365. paidReactTopBadgeSkip: 32px;
  366. paidReactToastLabel: FlatLabel(defaultFlatLabel) {
  367. textFg: toastFg;
  368. palette: defaultToastPalette;
  369. }
  370. paidReactTopStarIcon: icon{{ "chat/mini_stars", premiumButtonFg }};
  371. paidReactTopStarIconPosition: point(0px, 1px);
  372. paidReactTopStarSkip: 4px;
  373. paidReactChannelArrow: icon{{ "intro_country_dropdown", activeButtonFg }};
  374. paidReactChannelMenu: PopupMenu(popupMenuWithIcons) {
  375. menu: Menu(menuWithIcons) {
  376. widthMax: 240px;
  377. }
  378. maxHeight: 345px;
  379. }
  380. toastUndoStroke: 2px;
  381. toastUndoSpace: 8px;
  382. toastUndoDiameter: 20px;
  383. toastUndoSkip: 20px;
  384. toastUndoFont: font(12px bold);
  385. starrefCover: PremiumCover(userPremiumCover) {
  386. bg: windowBgOver;
  387. starTopSkip: 24px;
  388. titlePadding: margins(0px, 12px, 0px, 11px);
  389. }
  390. starrefCoverHeight: 180px;
  391. starrefFooterButton: RoundButton(defaultActiveButton) {
  392. height: 42px;
  393. textTop: 12px;
  394. style: semiboldTextStyle;
  395. }
  396. starrefFooterBox: Box(defaultBox) {
  397. buttonPadding: margins(22px, 11px, 22px, 54px);
  398. buttonHeight: 42px;
  399. button: starrefFooterButton;
  400. shadowIgnoreTopSkip: true;
  401. }
  402. starrefCopyButton: RoundButton(starrefFooterButton) {
  403. icon: icon {{ "info/edit/links_copy", activeButtonFg }};
  404. iconOver: icon {{ "info/edit/links_copy", activeButtonFgOver }};
  405. iconPosition: point(-1px, 5px);
  406. }
  407. starrefJoinIcon: icon{{ "payments/small_star", premiumButtonFg }};
  408. starrefJoinUserpicsPadding: margins(0px, 32px, 0px, 10px);
  409. starrefJoinTitlePadding: margins(0px, 0px, 0px, 12px);
  410. starrefCenteredText: FlatLabel(defaultFlatLabel) {
  411. align: align(top);
  412. minWidth: 40px;
  413. }
  414. starrefJoinFooter: FlatLabel(starrefCenteredText) {
  415. textFg: windowSubTextFg;
  416. }
  417. starrefRevenueText: FlatLabel(starrefCenteredText) {
  418. palette: TextPalette(defaultTextPalette) {
  419. linkFg: creditsBg1;
  420. }
  421. }
  422. starrefInfoIconPosition: point(16px, 8px);
  423. starrefBottomButton: RoundButton(defaultActiveButton) {
  424. height: 44px;
  425. textTop: 12px;
  426. style: semiboldTextStyle;
  427. }
  428. starrefButtonMargin: margins(12px, 6px, 12px, 4px);
  429. starrefBottomButtonLabel: FlatLabel(defaultFlatLabel) {
  430. textFg: windowFgActive;
  431. style: semiboldTextStyle;
  432. minWidth: 0px;
  433. }
  434. starrefBottomButtonSublabel: FlatLabel(starrefBottomButtonLabel) {
  435. style: TextStyle(defaultTextStyle) {
  436. font: font(11px semibold);
  437. }
  438. }
  439. starrefBottomButtonLabelTop: 5px;
  440. starrefBottomButtonSublabelTop: 23px;
  441. starrefEndBulletSize: 6px;
  442. starrefEndBulletTop: 8px;
  443. starrefLinkThumbOuter: 64px;
  444. starrefLinkThumbInner: 48px;
  445. starrefLinkCountAdd: 6px;
  446. starrefLinkCountIcon: icon{{ "chat/mini_subscribers", historyPeerUserpicFg }};
  447. starrefLinkCountIconPosition: point(0px, 1px);
  448. starrefLinkCountFont: font(10px bold);
  449. starrefLinkCountPadding: margins(2px, 0px, 3px, 1px);
  450. starrefRecipientBg: lightButtonBgOver;
  451. starrefRecipientBgDisabled: windowBgOver;
  452. starrefRecipientArrow: icon{{ "intro_country_dropdown", lightButtonFg }};
  453. starrefCommissionFont: font(10px semibold);
  454. starrefCommissionPadding: margins(3px, 0px, 3px, 0px);
  455. starrefLinkBadge: 16px;
  456. starrefLinkBadgeSkip: 1px;
  457. starrefAddForBotIcon: icon {{ "menu/bot_add", lightButtonFg }};
  458. starrefAddForBotIconPosition: point(23px, 2px);
  459. starrefPopupMenu: PopupMenu(defaultPopupMenu) {
  460. maxHeight: 320px;
  461. menu: Menu(defaultMenu) {
  462. widthMin: 156px;
  463. widthMax: 200px;
  464. }
  465. }