mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
244 lines
9.8 KiB
Swift
244 lines
9.8 KiB
Swift
import Foundation
|
|
import UIKit
|
|
|
|
private let accentColor: UIColor = UIColor(rgb: 0x007ee5)
|
|
private let destructiveColor: UIColor = UIColor(rgb: 0xff3b30)
|
|
|
|
private let rootStatusBar = PresentationThemeRootNavigationStatusBar(
|
|
style: .black
|
|
)
|
|
|
|
private let rootTabBar = PresentationThemeRootTabBar(
|
|
backgroundColor: UIColor(rgb: 0xf7f7f7),
|
|
separatorColor: UIColor(rgb: 0xa3a3a3),
|
|
iconColor: UIColor(rgb: 0x929292),
|
|
selectedIconColor: accentColor,
|
|
textColor: UIColor(rgb: 0x929292),
|
|
selectedTextColor: accentColor,
|
|
badgeBackgroundColor: UIColor(rgb: 0xff3b30),
|
|
badgeTextColor: .white
|
|
)
|
|
|
|
private let rootNavigationBar = PresentationThemeRootNavigationBar(
|
|
buttonColor: accentColor,
|
|
primaryTextColor: .black,
|
|
secondaryTextColor: UIColor(rgb: 0x787878),
|
|
controlColor: UIColor(rgb: 0x7e8791),
|
|
accentTextColor: accentColor,
|
|
backgroundColor: UIColor(red: 0.968626451, green: 0.968626451, blue: 0.968626451, alpha: 1.0),
|
|
separatorColor: UIColor(red: 0.6953125, green: 0.6953125, blue: 0.6953125, alpha: 1.0),
|
|
badgeBackgroundColor: UIColor(rgb: 0xff3b30),
|
|
badgeTextColor: .white
|
|
)
|
|
|
|
private let activeNavigationSearchBar = PresentationThemeActiveNavigationSearchBar(
|
|
backgroundColor: .white,
|
|
accentColor: accentColor,
|
|
inputFillColor: UIColor(rgb: 0xe9e9e9),
|
|
inputTextColor: .black,
|
|
inputPlaceholderTextColor: UIColor(rgb: 0x8e8e93),
|
|
inputIconColor: UIColor(rgb: 0x8e8e93),
|
|
inputClearButtonColor: UIColor(rgb: 0x7b7b81),
|
|
separatorColor: UIColor(red: 0.6953125, green: 0.6953125, blue: 0.6953125, alpha: 1.0)
|
|
)
|
|
|
|
private let rootController = PresentationThemeRootController(
|
|
statusBar: rootStatusBar,
|
|
tabBar: rootTabBar,
|
|
navigationBar: rootNavigationBar,
|
|
activeNavigationSearchBar: activeNavigationSearchBar
|
|
)
|
|
|
|
private let switchColors = PresentationThemeSwitch(
|
|
frameColor: UIColor(rgb: 0xe0e0e0),
|
|
handleColor: UIColor(rgb: 0xffffff),
|
|
contentColor: UIColor(rgb: 0x42d451)
|
|
)
|
|
|
|
private let list = PresentationThemeList(
|
|
blocksBackgroundColor: UIColor(rgb: 0xefeff4),
|
|
plainBackgroundColor: .white,
|
|
itemPrimaryTextColor: .black,
|
|
itemSecondaryTextColor: UIColor(rgb: 0x8e8e93),
|
|
itemDisabledTextColor: UIColor(rgb: 0x8e8e93),
|
|
itemAccentColor: accentColor,
|
|
itemDestructiveColor: destructiveColor,
|
|
itemPlaceholderTextColor: UIColor(rgb: 0xc8c8ce),
|
|
itemBackgroundColor: .white,
|
|
itemHighlightedBackgroundColor: UIColor(rgb: 0xd9d9d9),
|
|
itemSeparatorColor: UIColor(rgb: 0xc8c7cc),
|
|
disclosureArrowColor: UIColor(rgb: 0xbab9be),
|
|
sectionHeaderTextColor: UIColor(rgb: 0x6d6d72),
|
|
freeTextColor: UIColor(rgb: 0x6d6d72),
|
|
freeTextErrorColor: UIColor(rgb: 0xcf3030),
|
|
freeTextSuccessColor: UIColor(rgb: 0x26972c),
|
|
itemSwitchColors: switchColors
|
|
)
|
|
|
|
private let chatList = PresentationThemeChatList(
|
|
backgroundColor: .white,
|
|
itemSeparatorColor: UIColor(rgb: 0xc8c7cc),
|
|
itemBackgroundColor: .white,
|
|
pinnedItemBackgroundColor: UIColor(rgb: 0xf7f7f7),
|
|
itemHighlightedBackgroundColor: UIColor(rgb: 0xd9d9d9),
|
|
titleColor: .black,
|
|
secretTitleColor: UIColor(rgb: 0x00a629),
|
|
dateTextColor: UIColor(rgb: 0x8e8e93),
|
|
authorNameColor: .black,
|
|
messageTextColor: UIColor(rgb: 0x8e8e93),
|
|
messageDraftTextColor: UIColor(rgb: 0xdd4b39),
|
|
checkmarkColor: UIColor(rgb: 0x21c004),
|
|
pendingIndicatorColor: UIColor(rgb: 0x8e8e93),
|
|
muteIconColor: UIColor(rgb: 0xa7a7ad),
|
|
unreadBadgeActiveBackgroundColor: accentColor,
|
|
unreadBadgeActiveTextColor: .white,
|
|
unreadBadgeInactiveBackgroundColor: UIColor(rgb: 0xb6b6bb),
|
|
unreadBadgeInactiveTextColor: .white,
|
|
pinnedBadgeColor: UIColor(rgb: 0x939399),
|
|
pinnedSearchBarColor: UIColor(rgb: 0xe5e5e5),
|
|
regularSearchBarColor: UIColor(rgb: 0xe9e9e9),
|
|
sectionHeaderFillColor: UIColor(rgb: 0xf7f7f7),
|
|
sectionHeaderTextColor: UIColor(rgb: 0x8e8e93),
|
|
searchBarKeyboardColor: .light
|
|
)
|
|
|
|
private let bubble = PresentationThemeChatBubble(
|
|
incomingFillColor: UIColor(rgb: 0xffffff),
|
|
incomingFillHighlightedColor: UIColor(rgb: 0xd9f4ff),
|
|
incomingStrokeColor: UIColor(rgb: 0x86A9C9, alpha: 0.5),
|
|
outgoingFillColor: UIColor(rgb: 0xE1FFC7),
|
|
outgoingFillHighlightedColor: UIColor(rgb: 0xc8ffa6),
|
|
outgoingStrokeColor: UIColor(rgb: 0x86A9C9, alpha: 0.5),
|
|
freeformFillColor: UIColor(rgb: 0xffffff),
|
|
freeformFillHighlightedColor: UIColor(rgb: 0xd9f4ff),
|
|
freeformStrokeColor: UIColor(rgb: 0x86A9C9, alpha: 0.5),
|
|
infoFillColor: UIColor(rgb: 0xffffff),
|
|
infoStrokeColor: UIColor(rgb: 0x86A9C9, alpha: 0.5),
|
|
incomingPrimaryTextColor: UIColor(rgb: 0x000000),
|
|
incomingSecondaryTextColor: UIColor(rgb: 0x525252, alpha: 0.6),
|
|
incomingLinkTextColor: UIColor(rgb: 0x004bad),
|
|
incomingLinkHighlightColor: accentColor.withAlphaComponent(0.3),
|
|
outgoingPrimaryTextColor: UIColor(rgb: 0x000000),
|
|
outgoingSecondaryTextColor: UIColor(rgb: 0x008c09, alpha: 0.8),
|
|
outgoingLinkTextColor: UIColor(rgb: 0x004bad),
|
|
outgoingLinkHighlightColor: accentColor.withAlphaComponent(0.3),
|
|
infoPrimaryTextColor: UIColor(rgb: 0x000000),
|
|
infoLinkTextColor: UIColor(rgb: 0x004bad),
|
|
incomingAccentColor: UIColor(rgb: 0x3ca7fe),
|
|
outgoingAccentColor: UIColor(rgb: 0x00a700),
|
|
outgoingCheckColor: UIColor(rgb: 0x19C700),
|
|
incomingPendingActivityColor: UIColor(rgb: 0x525252, alpha: 0.6),
|
|
outgoingPendingActivityColor: UIColor(rgb: 0x42b649),
|
|
mediaDateAndStatusFillColor: UIColor(white: 0.0, alpha: 0.5),
|
|
mediaDateAndStatusTextColor: .white,
|
|
incomingFileTitleColor: UIColor(rgb: 0x0b8bed),
|
|
outgoingFileTitleColor: UIColor(rgb: 0x3faa3c),
|
|
incomingFileDescriptionColor: UIColor(rgb: 0x999999),
|
|
outgoingFileDescriptionColor: UIColor(rgb: 0x6fb26a),
|
|
incomingFileDurationColor: UIColor(rgb: 0x525252, alpha: 0.6),
|
|
outgoingFileDurationColor: UIColor(rgb: 0x008c09, alpha: 0.8),
|
|
shareButtonFillColor: UIColor(rgb: 0x748391, alpha: 0.45),
|
|
shareButtonForegroundColor: .white,
|
|
mediaOverlayControlBackgroundColor: UIColor(white: 0.0, alpha: 0.6),
|
|
mediaOverlayControlForegroundColor: UIColor(white: 1.0, alpha: 1.0),
|
|
actionButtonsFillColor: UIColor(rgb: 0x596E89),
|
|
actionButtonsTextColor: .white
|
|
)
|
|
|
|
private let serviceMessage = PresentationThemeServiceMessage(
|
|
serviceMessageFillColor: UIColor(rgb: 0x748391, alpha: 0.45),
|
|
serviceMessagePrimaryTextColor: .white,
|
|
serviceMessageLinkHighlightColor: UIColor(rgb: 0x748391, alpha: 0.25),
|
|
unreadBarFillColor: UIColor(white: 1.0, alpha: 0.9),
|
|
unreadBarStrokeColor: UIColor(white: 0.0, alpha: 0.2),
|
|
unreadBarTextColor: UIColor(rgb: 0x86868d),
|
|
dateFillStaticColor: UIColor(rgb: 0x748391, alpha: 0.45),
|
|
dateFillFloatingColor: UIColor(rgb: 0x939fab, alpha: 0.5),
|
|
dateTextColor: .white
|
|
)
|
|
|
|
private let inputPanelMediaRecordingControl = PresentationThemeChatInputPanelMediaRecordingControl(
|
|
buttonColor: accentColor,
|
|
micLevelColor: accentColor.withAlphaComponent(0.2),
|
|
activeIconColor: .white,
|
|
panelControlFillColor: UIColor(rgb: 0xf7f7f7),
|
|
panelControlStrokeColor: UIColor(rgb: 0xb2b2b2),
|
|
panelControlContentPrimaryColor: UIColor(rgb: 0x9597a0),
|
|
panelControlContentAccentColor: accentColor
|
|
)
|
|
|
|
private let inputPanel = PresentationThemeChatInputPanel(
|
|
panelBackgroundColor: UIColor(rgb: 0xf2f4f6),
|
|
panelStrokeColor: UIColor(rgb: 0xbdc2c7),
|
|
panelControlAccentColor: accentColor,
|
|
panelControlColor: UIColor(rgb: 0x727b87),
|
|
panelControlDisabledColor: UIColor(rgb: 0x727b87, alpha: 0.5),
|
|
panelControlDestructiveColor: UIColor(rgb: 0xff3b30),
|
|
inputBackgroundColor: UIColor(rgb: 0xffffff),
|
|
inputStrokeColor: UIColor(rgb: 0xd3d6da),
|
|
inputPlaceholderColor: UIColor(rgb: 0xbebec0),
|
|
inputTextColor: .black,
|
|
inputControlColor: UIColor(rgb: 0x9099A2, alpha: 0.6),
|
|
primaryTextColor: .black,
|
|
mediaRecordingDotColor: UIColor(rgb: 0xed2521),
|
|
keyboardColor: .light,
|
|
mediaRecordingControl: inputPanelMediaRecordingControl
|
|
)
|
|
|
|
private let inputMediaPanel = PresentationThemeInputMediaPanel(
|
|
panelSerapatorColor: UIColor(rgb: 0xBEC2C6),
|
|
panelIconColor: UIColor(rgb: 0x9099A2),
|
|
panelHighlightedIconBackgroundColor: UIColor(rgb: 0x9099A2, alpha: 0.2),
|
|
stickersBackgroundColor: UIColor(rgb: 0xE8EBF0),
|
|
stickersSectionTextColor: UIColor(rgb: 0x9099A2),
|
|
gifsBackgroundColor: .white
|
|
)
|
|
|
|
private let inputButtonPanel = PresentationThemeInputButtonPanel(
|
|
panelSerapatorColor: UIColor(rgb: 0xBEC2C6),
|
|
panelBackgroundColor: UIColor(rgb: 0xdee2e6),
|
|
buttonFillColor: .white,
|
|
buttonStrokeColor: UIColor(rgb: 0xc3c7c9),
|
|
buttonHighlightedFillColor: UIColor(rgb: 0xa8b3c0),
|
|
buttonHighlightedStrokeColor: UIColor(rgb: 0xc3c7c9),
|
|
buttonTextColor: .black
|
|
)
|
|
|
|
private let historyNavigation = PresentationThemeChatHistoryNavigation(
|
|
fillColor: .white,
|
|
strokeColor: UIColor(rgb: 0x000000, alpha: 0.15),
|
|
foregroundColor: UIColor(rgb: 0x88888D),
|
|
badgeBackgroundColor: accentColor,
|
|
badgeTextColor: .white
|
|
)
|
|
|
|
private let chat = PresentationThemeChat(
|
|
bubble: bubble,
|
|
serviceMessage: serviceMessage,
|
|
inputPanel: inputPanel,
|
|
inputMediaPanel: inputMediaPanel,
|
|
inputButtonPanel: inputButtonPanel,
|
|
historyNavigation: historyNavigation
|
|
)
|
|
|
|
private let actionSheet = PresentationThemeActionSheet(
|
|
dimColor: UIColor(white: 0.0, alpha: 0.4),
|
|
backgroundType: .light,
|
|
itemBackgroundColor: UIColor(white: 1.0, alpha: 0.8),
|
|
itemHighlightedBackgroundColor: UIColor(white: 0.9, alpha: 0.7),
|
|
standardActionTextColor: accentColor,
|
|
destructiveActionTextColor: destructiveColor,
|
|
disabledActionTextColor: UIColor(rgb: 0x4d4d4d),
|
|
primaryTextColor: .black,
|
|
secondaryTextColor: UIColor(rgb: 0x5e5e5e),
|
|
controlAccentColor: accentColor
|
|
)
|
|
|
|
let defaultPresentationTheme = PresentationTheme(
|
|
rootController: rootController,
|
|
list: list,
|
|
chatList: chatList,
|
|
chat: chat,
|
|
actionSheet: actionSheet
|
|
)
|