Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
parent
3807ba38dd
commit
92c941d7aa
@ -557,31 +557,23 @@ private struct ImageLayoutRow: View {
|
||||
var body: some View {
|
||||
VStack(alignment: .leading, spacing: Design.Spacing.medium) {
|
||||
// Live card preview based on selected layout
|
||||
VStack(spacing: 0) {
|
||||
ZStack(alignment: .bottomLeading) {
|
||||
// Banner preview based on layout
|
||||
EditorBannerPreviewView(
|
||||
photoData: photoData,
|
||||
coverPhotoData: coverPhotoData,
|
||||
logoData: logoData,
|
||||
avatarSystemName: avatarSystemName,
|
||||
selectedTheme: selectedTheme,
|
||||
selectedHeaderLayout: selectedHeaderLayout
|
||||
)
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
// Banner preview
|
||||
EditorBannerPreviewView(
|
||||
photoData: photoData,
|
||||
coverPhotoData: coverPhotoData,
|
||||
logoData: logoData,
|
||||
avatarSystemName: avatarSystemName,
|
||||
selectedTheme: selectedTheme,
|
||||
selectedHeaderLayout: selectedHeaderLayout
|
||||
)
|
||||
|
||||
// Overlay content based on layout
|
||||
if hasOverlappingContent {
|
||||
overlayContent
|
||||
.padding(.leading, Design.Spacing.large)
|
||||
.padding(.trailing, Design.Spacing.large)
|
||||
.offset(y: Design.CardSize.avatarOverlap)
|
||||
}
|
||||
}
|
||||
|
||||
// Spacer to make room for overlapping content
|
||||
// Overlay content positioned below banner, overlapping upward
|
||||
if hasOverlappingContent {
|
||||
Spacer()
|
||||
.frame(height: Design.CardSize.avatarOverlap)
|
||||
overlayContent
|
||||
.padding(.horizontal, Design.Spacing.large)
|
||||
.offset(y: -Design.CardSize.avatarOverlap)
|
||||
.padding(.bottom, -Design.CardSize.avatarOverlap)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -51,27 +51,33 @@ struct HeaderLayoutPickerView: View {
|
||||
var body: some View {
|
||||
NavigationStack {
|
||||
VStack(spacing: 0) {
|
||||
ScrollView(.horizontal, showsIndicators: false) {
|
||||
HStack(spacing: Design.Spacing.large) {
|
||||
ForEach(CardHeaderLayout.allCases) { layout in
|
||||
LayoutPreviewCard(
|
||||
layout: layout,
|
||||
isSelected: currentLayout == layout,
|
||||
isSuggested: layout == suggestedLayout,
|
||||
photoData: photoData,
|
||||
coverPhotoData: coverPhotoData,
|
||||
logoData: logoData,
|
||||
avatarSystemName: avatarSystemName,
|
||||
theme: theme
|
||||
) {
|
||||
withAnimation(.snappy(duration: Design.Animation.quick)) {
|
||||
currentLayout = layout
|
||||
ScrollViewReader { proxy in
|
||||
ScrollView(.horizontal, showsIndicators: false) {
|
||||
HStack(spacing: Design.Spacing.large) {
|
||||
ForEach(CardHeaderLayout.allCases) { layout in
|
||||
LayoutPreviewCard(
|
||||
layout: layout,
|
||||
isSelected: currentLayout == layout,
|
||||
isSuggested: layout == suggestedLayout,
|
||||
photoData: photoData,
|
||||
coverPhotoData: coverPhotoData,
|
||||
logoData: logoData,
|
||||
avatarSystemName: avatarSystemName,
|
||||
theme: theme
|
||||
) {
|
||||
withAnimation(.snappy(duration: Design.Animation.quick)) {
|
||||
currentLayout = layout
|
||||
}
|
||||
}
|
||||
.id(layout)
|
||||
}
|
||||
}
|
||||
.padding(.horizontal, Design.Spacing.xLarge)
|
||||
.padding(.vertical, Design.Spacing.large)
|
||||
}
|
||||
.onAppear {
|
||||
proxy.scrollTo(currentLayout, anchor: .center)
|
||||
}
|
||||
.padding(.horizontal, Design.Spacing.xLarge)
|
||||
.padding(.vertical, Design.Spacing.large)
|
||||
}
|
||||
.scrollClipDisabled()
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user