-
Notifications
You must be signed in to change notification settings - Fork 114
Common UI integration #1089
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
martinmitrevski
wants to merge
13
commits into
sdk-redesign
Choose a base branch
from
common-ui-integration
base: sdk-redesign
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Common UI integration #1089
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Generated by 🚫 Danger |
…at-swiftui into common-ui-integration
…up in StreamChatCommonUI" This reverts commit 01e8b2c.
Public Interface- @MainActor public struct ColorPalette
-
- public var tintColor: Color
- public var text: UIColor
- public var textInverted: UIColor
- public var textLowEmphasis: UIColor
- public var staticColorText: UIColor
- public var subtitleText: UIColor
- public var highlightedColorForColor: @Sendable (UIColor) -> UIColor
- public var disabledColorForColor: @Sendable (UIColor) -> UIColor
- public var unselectedColorForColor: @Sendable (UIColor) -> UIColor
- public var background: UIColor
- public var background1: UIColor
- public var background2: UIColor
- public var background3: UIColor
- public var background4: UIColor
- public var background5: UIColor
- public var background6: UIColor
- public var background7: UIColor
- public var background8: UIColor
- public var overlayBackground: UIColor
- public var popoverBackground: UIColor
- public var highlightedBackground: UIColor
- public var highlightedAccentBackground: UIColor
- public var highlightedAccentBackground1: UIColor
- public var pinnedBackground: UIColor
- public var messageCellHighlightBackground: UIColor
- public var shadow: UIColor
- public var lightBorder: UIColor
- public var innerBorder: UIColor
- public var border: UIColor
- public var border2: UIColor
- public var border3: UIColor
- public var alert: UIColor
- public var alternativeActiveTint: UIColor
- public var inactiveTint: UIColor
- public var alternativeInactiveTint: UIColor
- public lazy var messageCurrentUserBackground: [UIColor]
- public lazy var messageCurrentUserEmphemeralBackground: [UIColor]
- public lazy var messageOtherUserBackground: [UIColor]
- public lazy var messageCurrentUserTextColor: UIColor
- public lazy var messageOtherUserTextColor: UIColor
- public lazy var quotedMessageBackgroundCurrentUser: UIColor
- public lazy var quotedMessageBackgroundOtherUser: UIColor
- public lazy var reactionCurrentUserColor: UIColor?
- public lazy var reactionOtherUserColor: UIColor?
- public lazy var selectedReactionBackgroundColor: UIColor?
- public var voiceMessageControlBackground: UIColor
- public var messageLinkAttachmentAuthorColor: Color
- public var messageLinkAttachmentTitleColor: Color
- public var messageLinkAttachmentTextColor: Color
- public lazy var composerPlaceholderColor: UIColor
- public lazy var composerInputBackground: UIColor
- public lazy var composerInputHighlightedBorder: UIColor
- public var navigationBarGlyph: UIColor
- public var navigationBarTitle: UIColor
- public var navigationBarSubtitle: UIColor
- public var navigationBarTintColor: Color
- public var navigationBarBackground: UIColor?
- public var bannerBackgroundColor: UIColor
-
-
- public init()
- public final class GalleryHeaderViewDateFormatter: DateFormatter, @unchecked Sendable
-
- override public init()
-
-
- override public func string(from date: Date)-> String
- public protocol VideoDurationFormatter
- open class DefaultAudioRecordingNameFormatter: AudioRecordingNameFormatter
-
- public init()
-
-
- open func title(forItemAtURL location: URL,index: Int)-> String
- @MainActor public struct Fonts
-
- public var caption1
- public var footnoteBold
- public var footnote
- public var subheadline
- public var subheadlineBold
- public var body
- public var bodyBold
- public var bodyItalic
- public var headline
- public var headlineBold
- public var title
- public var title2
- public var title3
- public var emoji
-
-
- public init()
- public protocol ChatMessageReactionAppearanceType
- public protocol AudioRecordingNameFormatter
- public struct ChatMessageReactionAppearance: ChatMessageReactionAppearanceType
-
- public let smallIcon: UIImage
- public let largeIcon: UIImage
-
-
- public init(smallIcon: UIImage,largeIcon: UIImage)
- @MainActor public class Images
-
- public var loadingIndicator: UIImage
- public var close: UIImage
- public var closeFilled: UIImage
- public var closeCircleTransparent: UIImage
- public var discardAttachment: UIImage
- public var back: UIImage
- public var onlyVisibleToCurrentUser
- public var more
- public var share: UIImage
- public var commands: UIImage
- public var smallBolt: UIImage
- public var openAttachments: UIImage
- public var shrinkInputArrow: UIImage
- public var sendArrow: UIImage
- public var scrollDownArrow: UIImage
- public var messageSent: UIImage
- public var whiteCheckmark: UIImage
- public var readByAll: UIImage
- public var messageReceiptSending: UIImage
- public var confirmCheckmark: UIImage
- public var bigConfirmCheckmark: UIImage
- public var folder: UIImage
- public var restart: UIImage
- public var download: UIImage
- public var muted: UIImage
- public var snapshot: UIImage
- public var eye: UIImage
- public var videoIndicator: UIImage
- public var gallery: UIImage
- public var photoDefault: UIImage
- public var pin: UIImage
- public var sliderThumb: UIImage
- public var reactionLoveSmall: UIImage
- public var reactionLoveBig: UIImage
- public var reactionLolSmall: UIImage
- public var reactionLolBig: UIImage
- public var reactionThumgsUpSmall: UIImage
- public var reactionThumgsUpBig: UIImage
- public var reactionThumgsDownSmall: UIImage
- public var reactionThumgsDownBig: UIImage
- public var reactionWutSmall: UIImage
- public var reactionWutBig: UIImage
- public var availableReactions: [MessageReactionType: ChatMessageReactionAppearanceType]
- public var availableEmojis: [String]
- public var messageListErrorIndicator: UIImage
- public var file7z: UIImage
- public var fileAac: UIImage
- public var fileCsv: UIImage
- public var fileDoc: UIImage
- public var fileDocx: UIImage
- public var fileHtml: UIImage
- public var fileMd: UIImage
- public var fileMp3: UIImage
- public var fileOdt: UIImage
- public var filePdf: UIImage
- public var filePpt: UIImage
- public var filePptx: UIImage
- public var fileRar: UIImage
- public var fileRtf: UIImage
- public var fileTargz: UIImage
- public var fileTxt: UIImage
- public var fileXls: UIImage
- public var fileXlsx: UIImage
- public var filezip: UIImage
- public var fileFallback: UIImage
- public var documentPreviews: [String: UIImage]
- public var fileIcons: [AttachmentFileType: UIImage]
- public var messageActionInlineReply: UIImage
- public var messageActionThreadReply: UIImage
- public var messageActionEdit: UIImage
- public var messageActionCopy: UIImage
- public var messageActionBlockUser: UIImage
- public var messageActionMuteUser: UIImage
- public var messageActionDelete: UIImage
- public var messageActionResend: UIImage
- public var userAvatarPlaceholder1: UIImage
- public var userAvatarPlaceholder2: UIImage
- public var userAvatarPlaceholder3: UIImage
- public var userAvatarPlaceholder4: UIImage
- public var userAvatarPlaceholder5: UIImage
- public var avatarPlaceholders: [UIImage]
- public var imagePlaceholder: UIImage
- public var personPlaceholder: UIImage
- public var fileAttachmentActionIcons: [LocalAttachmentState?: UIImage]
- public var attachmentPickerPhotos: UIImage
- public var attachmentPickerFolder: UIImage
- public var attachmentPickerCamera: UIImage
- public var attachmentPickerPolls: UIImage
- public var camera: UIImage
- public var bigPlay: UIImage
- public var play: UIImage
- public var playFilled: UIImage
- public var pause: UIImage
- public var pauseFilled: UIImage
- public var checkmarkFilled: UIImage
- public var commandBan: UIImage
- public var commandFlag: UIImage
- public var commandGiphy: UIImage
- public var commandImgur: UIImage
- public var commandMention: UIImage
- public var commandMute: UIImage
- public var commandUnban: UIImage
- public var commandUnmute: UIImage
- public var commandFallback: UIImage
- public var commandIcons: [String: UIImage]
- public var searchIcon: UIImage
- public var searchCloseIcon: UIImage
- public var threadIcon: UIImage
- public var noContent: UIImage
- public var noMedia: UIImage
- public var noThreads: UIImage
-
-
- public init()
- open class DefaultVideoDurationFormatter: VideoDurationFormatter
-
- public var dateComponentsFormatter: DateComponentsFormatter
-
-
- public init()
-
-
- open func format(_ time: TimeInterval)-> String?
- @MainActor public class Appearance
-
- public var colors: ColorPalette
- public var images: Images
- public var fonts: Fonts
- public static var localizationProvider: @Sendable (_ key: String, _ table: String) -> String
-
-
- public init(colors: ColorPalette = ColorPalette(),images: Images = Images(),fonts: Fonts = Fonts())
- public enum DateUtils
-
- public static func timeAgo(relativeTo date: Date)-> String?
- public final class MessageRelativeDateFormatter: DateFormatter, @unchecked Sendable
-
- override public init()
-
-
- override public func string(from date: Date)-> String
public struct ChannelList: View
- public init(factory: Factory,channels: [ChatChannel],selectedChannel: Binding<ChannelSelectionInfo?>,swipedChannelId: Binding<String?>,scrolledChannelId: Binding<String?> = .constant(nil),scrollable: Bool = true,onlineIndicatorShown: (@MainActor (ChatChannel) -> Bool)? = nil,imageLoader: (@MainActor (ChatChannel) -> UIImage)? = nil,onItemTap: @escaping @MainActor (ChatChannel) -> Void,onItemAppear: @escaping @MainActor (Int) -> Void,channelNaming: (@MainActor (ChatChannel) -> String)? = nil,channelDestination: @escaping @MainActor (ChannelSelectionInfo) -> Factory.ChannelDestination,trailingSwipeRightButtonTapped: @escaping @MainActor (ChatChannel) -> Void = { _ in },trailingSwipeLeftButtonTapped: @escaping @MainActor (ChatChannel) -> Void = { _ in },leadingSwipeButtonTapped: @escaping @MainActor (ChatChannel) -> Void = { _ in })
+ public init(factory: Factory,channels: [ChatChannel],selectedChannel: Binding<ChannelSelectionInfo?>,swipedChannelId: Binding<String?>,scrolledChannelId: Binding<String?> = .constant(nil),scrollable: Bool = true,onlineIndicatorShown: (@MainActor (ChatChannel) -> Bool)? = nil,imageLoader: (@MainActor (ChatChannel) -> UIImage)? = nil,onItemTap: @escaping @MainActor (ChatChannel) -> Void,onItemAppear: @escaping @MainActor (Int) -> Void,channelDestination: @escaping @MainActor (ChannelSelectionInfo) -> Factory.ChannelDestination,trailingSwipeRightButtonTapped: @escaping @MainActor (ChatChannel) -> Void = { _ in },trailingSwipeLeftButtonTapped: @escaping @MainActor (ChatChannel) -> Void = { _ in },leadingSwipeButtonTapped: @escaping @MainActor (ChatChannel) -> Void = { _ in })
@MainActor public class Utils
- public var messageRelativeDateFormatter: DateFormatter
+ public var messageTimestampFormatter: MessageTimestampFormatter
- public var galleryHeaderViewDateFormatter: DateFormatter
+ public var galleryHeaderViewDateFormatter: GalleryHeaderViewDateFormatter
- public var videoPreviewLoader: VideoPreviewLoader
+ public var messageDateSeparatorFormatter: MessageDateSeparatorFormatter
- public var imageLoader: ImageLoading
+ public var videoPreviewLoader: VideoPreviewLoader
- public var imageCDN: ImageCDN
+ public var imageLoader: ImageLoading
- public var imageProcessor: ImageProcessor
+ public var imageCDN: ImageCDN
- public var imageMerger: ImageMerging
+ public var imageProcessor: ImageProcessor
- public var fileCDN: FileCDN
+ public var imageMerger: ImageMerging
- public var channelNamer: ChatChannelNamer
+ public var fileCDN: FileCDN
- public var chatUserNamer: ChatUserNamer
+ public var channelNameFormatter: ChannelNameFormatter
- public var channelAvatarsMerger: ChannelAvatarsMerging
+ public var chatUserNamer: ChatUserNamer
- public var messageTypeResolver: MessageTypeResolving
+ public var channelAvatarsMerger: ChannelAvatarsMerging
- public var messageActionsResolver: MessageActionsResolving
+ public var messageTypeResolver: MessageTypeResolving
- public var messagePreviewFormatter: MessagePreviewFormatter
+ public var messageActionsResolver: MessageActionsResolving
- public var commandsConfig: CommandsConfig
+ public var messagePreviewFormatter: MessagePreviewFormatter
- public var channelListConfig: ChannelListConfig
+ public var commandsConfig: CommandsConfig
- public var messageListConfig: MessageListConfig
+ public var channelListConfig: ChannelListConfig
- public var composerConfig: ComposerConfig
+ public var messageListConfig: MessageListConfig
- public var pollsConfig: PollsConfig
+ public var composerConfig: ComposerConfig
- public var shouldSyncChannelControllerOnAppear: (ChatChannelController) -> Bool
+ public var pollsConfig: PollsConfig
- public var snapshotCreator: SnapshotCreator
+ public var shouldSyncChannelControllerOnAppear: (ChatChannelController) -> Bool
- public var messageIdBuilder: MessageIdBuilder
+ public var snapshotCreator: SnapshotCreator
- public var sortReactions: (MessageReactionType, MessageReactionType) -> Bool
+ public var messageIdBuilder: MessageIdBuilder
- public var channelHeaderLoader: ChannelHeaderLoader
+ public var sortReactions: (MessageReactionType, MessageReactionType) -> Bool
- public var videoDurationFormatter: VideoDurationFormatter
+ public var channelHeaderLoader: ChannelHeaderLoader
- public var audioRecordingNameFormatter: AudioRecordingNameFormatter
+ public var videoDurationFormatter: VideoDurationFormatter
- public var audioPlayerBuilder: () -> AudioPlaying
+ public var audioRecordingNameFormatter: AudioRecordingNameFormatter
- public var audioPlayer: AudioPlaying
+ public var audioPlayerBuilder: () -> AudioPlaying
- public var audioRecorderBuilder: () -> AudioRecording
+ public var audioPlayer: AudioPlaying
- public var audioRecorder: AudioRecording
+ public var audioRecorderBuilder: () -> AudioRecording
- @MainActor public lazy var audioSessionFeedbackGenerator: AudioSessionFeedbackGenerator
+ public var audioRecorder: AudioRecording
- public var originalTranslationsStore
+ @MainActor public lazy var audioSessionFeedbackGenerator: AudioSessionFeedbackGenerator
- public static var defaultSortReactions: (MessageReactionType, MessageReactionType) -> Bool
+ public var originalTranslationsStore
-
+ public static var defaultSortReactions: (MessageReactionType, MessageReactionType) -> Bool
-
+
- public init(markdownFormatter: MarkdownFormatter = DefaultMarkdownFormatter(),dateFormatter: DateFormatter = .makeDefault(),messageRelativeDateFormatter: DateFormatter = MessageRelativeDateFormatter(),galleryHeaderViewDateFormatter: DateFormatter = GalleryHeaderViewDateFormatter(),videoPreviewLoader: VideoPreviewLoader = DefaultVideoPreviewLoader(),imageLoader: ImageLoading = NukeImageLoader(),imageCDN: ImageCDN = StreamImageCDN(),imageProcessor: ImageProcessor = NukeImageProcessor(),imageMerger: ImageMerging = DefaultImageMerger(),fileCDN: FileCDN = DefaultFileCDN(),channelAvatarsMerger: ChannelAvatarsMerging = ChannelAvatarsMerger(),messageTypeResolver: MessageTypeResolving = MessageTypeResolver(),messageActionResolver: MessageActionsResolving = MessageActionsResolver(),messagePreviewFormatter: MessagePreviewFormatter = MessagePreviewFormatter(),commandsConfig: CommandsConfig = DefaultCommandsConfig(),channelListConfig: ChannelListConfig = ChannelListConfig(),messageListConfig: MessageListConfig = MessageListConfig(),composerConfig: ComposerConfig = ComposerConfig(),pollsConfig: PollsConfig = PollsConfig(),channelNamer: @escaping ChatChannelNamer = DefaultChatChannelNamer(),chatUserNamer: ChatUserNamer = DefaultChatUserNamer(),snapshotCreator: SnapshotCreator = DefaultSnapshotCreator(),messageIdBuilder: MessageIdBuilder = DefaultMessageIdBuilder(),channelHeaderLoader: ChannelHeaderLoader = ChannelHeaderLoader(),videoDurationFormatter: VideoDurationFormatter = DefaultVideoDurationFormatter(),audioRecordingNameFormatter: AudioRecordingNameFormatter = DefaultAudioRecordingNameFormatter(),sortReactions: @escaping (MessageReactionType, MessageReactionType) -> Bool = Utils.defaultSortReactions,shouldSyncChannelControllerOnAppear: @escaping (ChatChannelController) -> Bool = { _ in true })
+
+ public init(markdownFormatter: MarkdownFormatter = DefaultMarkdownFormatter(),dateFormatter: DateFormatter = .makeDefault(),messageTimestampFormatter: MessageTimestampFormatter = ChannelListMessageTimestampFormatter(),galleryHeaderViewDateFormatter: GalleryHeaderViewDateFormatter = DefaultGalleryHeaderViewDateFormatter(),messageDateSeparatorFormatter: MessageDateSeparatorFormatter = DefaultMessageDateSeparatorFormatter(),videoPreviewLoader: VideoPreviewLoader = DefaultVideoPreviewLoader(),imageLoader: ImageLoading = NukeImageLoader(),imageCDN: ImageCDN = StreamImageCDN(),imageProcessor: ImageProcessor = NukeImageProcessor(),imageMerger: ImageMerging = DefaultImageMerger(),fileCDN: FileCDN = DefaultFileCDN(),channelAvatarsMerger: ChannelAvatarsMerging = ChannelAvatarsMerger(),messageTypeResolver: MessageTypeResolving = MessageTypeResolver(),messageActionResolver: MessageActionsResolving = MessageActionsResolver(),messagePreviewFormatter: MessagePreviewFormatter = MessagePreviewFormatter(),commandsConfig: CommandsConfig = DefaultCommandsConfig(),channelListConfig: ChannelListConfig = ChannelListConfig(),messageListConfig: MessageListConfig = MessageListConfig(),composerConfig: ComposerConfig = ComposerConfig(),pollsConfig: PollsConfig = PollsConfig(),channelNameFormatter: ChannelNameFormatter = DefaultChannelNameFormatter(),chatUserNamer: ChatUserNamer = DefaultChatUserNamer(),snapshotCreator: SnapshotCreator = DefaultSnapshotCreator(),messageIdBuilder: MessageIdBuilder = DefaultMessageIdBuilder(),channelHeaderLoader: ChannelHeaderLoader = ChannelHeaderLoader(),videoDurationFormatter: VideoDurationFormatter = DefaultVideoDurationFormatter(),audioRecordingNameFormatter: AudioRecordingNameFormatter = DefaultAudioRecordingNameFormatter(),sortReactions: @escaping (MessageReactionType, MessageReactionType) -> Bool = Utils.defaultSortReactions,shouldSyncChannelControllerOnAppear: @escaping (ChatChannelController) -> Bool = { _ in true })
public struct ChannelsLazyVStack: View
- public init(factory: Factory,channels: [ChatChannel],selectedChannel: Binding<ChannelSelectionInfo?>,swipedChannelId: Binding<String?>,onlineIndicatorShown: @escaping @MainActor (ChatChannel) -> Bool,imageLoader: @escaping @MainActor (ChatChannel) -> UIImage,onItemTap: @escaping @MainActor (ChatChannel) -> Void,onItemAppear: @escaping @MainActor (Int) -> Void,channelNaming: @escaping @MainActor (ChatChannel) -> String,channelDestination: @escaping @MainActor (ChannelSelectionInfo) -> Factory.ChannelDestination,trailingSwipeRightButtonTapped: @escaping @MainActor (ChatChannel) -> Void,trailingSwipeLeftButtonTapped: @escaping @MainActor (ChatChannel) -> Void,leadingSwipeButtonTapped: @escaping @MainActor (ChatChannel) -> Void)
+ public init(factory: Factory,channels: [ChatChannel],selectedChannel: Binding<ChannelSelectionInfo?>,swipedChannelId: Binding<String?>,onlineIndicatorShown: @escaping @MainActor (ChatChannel) -> Bool,imageLoader: @escaping @MainActor (ChatChannel) -> UIImage,onItemTap: @escaping @MainActor (ChatChannel) -> Void,onItemAppear: @escaping @MainActor (Int) -> Void,channelDestination: @escaping @MainActor (ChannelSelectionInfo) -> Factory.ChannelDestination,trailingSwipeRightButtonTapped: @escaping @MainActor (ChatChannel) -> Void,trailingSwipeLeftButtonTapped: @escaping @MainActor (ChatChannel) -> Void,leadingSwipeButtonTapped: @escaping @MainActor (ChatChannel) -> Void)
extension DateFormatter
- @MainActor public static var messageListDateOverlay: DateFormatter
+ public static func makeDefault()-> DateFormatter
-
-
- public static func makeDefault()-> DateFormatter
public final class ThreadListBackgroundOptions: Sendable
- public let colors: ColorPalette
+ public let colors: Appearance.ColorPalette
- public init(colors: ColorPalette)
+ public init(colors: Appearance.ColorPalette)
public struct ChannelListConfig
- public var messageRelativeDateFormatEnabled: Bool
+ public var navigationBarDisplayMode: NavigationBarItem.TitleDisplayMode
- public var navigationBarDisplayMode: NavigationBarItem.TitleDisplayMode
+ public var showChannelListDividerOnLastItem: Bool
- public var showChannelListDividerOnLastItem: Bool
+ public var channelItemMutedStyle: ChannelItemMutedLayoutStyle
- public var channelItemMutedStyle: ChannelItemMutedLayoutStyle
+ public var supportedMoreChannelActions: @MainActor (SupportedMoreChannelActionsOptions) -> [ChannelAction]
- public var supportedMoreChannelActions: @MainActor (SupportedMoreChannelActionsOptions) -> [ChannelAction]
+
-
+
-
+ public init(channelItemMutedStyle: ChannelItemMutedLayoutStyle = .default,navigationBarDisplayMode: NavigationBarItem.TitleDisplayMode = .inline,showChannelListDividerOnLastItem: Bool = true,supportedMoreChannelActions: @escaping @MainActor (SupportedMoreChannelActionsOptions) -> [ChannelAction] = ChannelAction.defaultActions(for:))
- public init(channelItemMutedStyle: ChannelItemMutedLayoutStyle = .default,messageRelativeDateFormatEnabled: Bool = false,navigationBarDisplayMode: NavigationBarItem.TitleDisplayMode = .inline,showChannelListDividerOnLastItem: Bool = true,supportedMoreChannelActions: @escaping @MainActor (SupportedMoreChannelActionsOptions) -> [ChannelAction] = ChannelAction.defaultActions(for:))
public final class MessageListBackgroundOptions: Sendable
- public let colors: ColorPalette
+ public let isInThread: Bool
- public let isInThread: Bool
+
-
+
-
+ public init(isInThread: Bool)
- public init(colors: ColorPalette,isInThread: Bool)
extension InjectedValues
- @MainActor public var colors: ColorPalette
+ @MainActor public var colors: Appearance.ColorPalette
- @MainActor public var images: Images
+ @MainActor public var images: Appearance.Images
- @MainActor public var fonts: Fonts
+ @MainActor public var fonts: Appearance.FontsSwiftUI
- public final class ChannelListBackgroundOptions: Sendable
+ public final class ChannelListBackgroundOptions: Sendable
-
- public let colors: ColorPalette
-
-
- public init(colors: ColorPalette)
public final class EmptyMessagesViewOptions: Sendable
- public let colors: ColorPalette
+
-
+
-
+ public init(channel: ChatChannel)
- public init(channel: ChatChannel,colors: ColorPalette) |
Collaborator
SDK Size
|
Collaborator
StreamChatSwiftUI XCSize
Show 289 more objects
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🔗 Issue Links
Provide all Linear and/or Github issues related to this PR, if applicable.
🎯 Goal
Describe why we are making this change.
📝 Summary
Provide bullet points with the most important changes in the codebase.
🛠 Implementation
Provide a detailed description of the implementation and explain your decisions if you find them relevant.
🎨 Showcase
Add relevant screenshots and/or videos/gifs to easily see what this PR changes, if applicable.
🧪 Manual Testing Notes
Explain how this change can be tested manually, if applicable.
☑️ Contributor Checklist
docs-contentrepo