change animation on the recents expander/collapser

fontmanager respecs theme bg
move the colorscheme thing back
This commit is contained in:
neon443
2025-08-17 19:57:18 +01:00
parent 95fd3dfe07
commit 6c452b3961
4 changed files with 54 additions and 50 deletions

View File

@@ -27,6 +27,8 @@ struct ShhShellApp: App {
hostsManager: hostsManager, hostsManager: hostsManager,
keyManager: keyManager keyManager: keyManager
) )
.colorScheme(hostsManager.selectedTheme.background.luminance > 0.5 ? .light : .dark)
.tint(hostsManager.tint)
} }
} }
} }

View File

@@ -78,9 +78,6 @@ struct ContentView: View {
} }
.scrollContentBackground(.hidden) .scrollContentBackground(.hidden)
} }
.colorScheme(hostsManager.selectedTheme.background.luminance > 0.5 ? .light : .dark)
.tint(hostsManager.tint)
.navigationTitle("ShhShell") .navigationTitle("ShhShell")
.toolbar { .toolbar {
ToolbarItem(placement: .confirmationAction) { ToolbarItem(placement: .confirmationAction) {

View File

@@ -13,58 +13,63 @@ struct FontManagerView: View {
@State var testLine: String = "the lazy brown fox jumps over the lazy dog" @State var testLine: String = "the lazy brown fox jumps over the lazy dog"
var body: some View { var body: some View {
List { ZStack {
VStack { hostsManager.selectedTheme.background.suiColor.opacity(0.7)
HStack { .ignoresSafeArea(.all)
Text("Font Size") List {
Spacer() VStack {
Text("\(Int(hostsManager.fontSize))") HStack {
.contentTransition(.numericText()) Text("Font Size")
Spacer()
Text("\(Int(hostsManager.fontSize))")
.contentTransition(.numericText())
}
.padding(.horizontal)
Slider(value: $hostsManager.fontSize, in: 1...20, step: 1) {
} minimumValueLabel: {
Label("", systemImage: "textformat.size.smaller")
} maximumValueLabel: {
Label("", systemImage: "textformat.size.larger")
} onEditingChanged: { bool in
hostsManager.saveFonts()
}
} }
.padding(.horizontal)
Slider(value: $hostsManager.fontSize, in: 1...20, step: 1) { ForEach(FontFamilies.allCasesRaw, id: \.self) { fontName in
let selected = hostsManager.selectedFont == fontName
} minimumValueLabel: { Button() {
Label("", systemImage: "textformat.size.smaller") hostsManager.selectFont(fontName)
} maximumValueLabel: { } label: {
Label("", systemImage: "textformat.size.larger") VStack(alignment: .leading, spacing: 5) {
} onEditingChanged: { bool in Text(fontName)
hostsManager.saveFonts() .foregroundStyle(.gray)
} HStack {
} Circle()
.frame(width: 20)
ForEach(FontFamilies.allCasesRaw, id: \.self) { fontName in .opacity(selected ? 1 : 0)
let selected = hostsManager.selectedFont == fontName .foregroundStyle(.green)
Button() { .animation(.spring, value: selected)
hostsManager.selectFont(fontName) .transition(.scale)
} label: { Text(testLine)
VStack(alignment: .leading, spacing: 5) { .font(.custom(fontName, size: 15))
Text(fontName) .bold(selected)
.foregroundStyle(.gray) .opacity(selected ? 1 : 0.8)
HStack { .contentTransition(.numericText())
Circle() .animation(.default, value: testLine)
.frame(width: 20) }
.opacity(selected ? 1 : 0)
.foregroundStyle(.green)
.animation(.spring, value: selected)
.transition(.scale)
Text(testLine)
.font(.custom(fontName, size: 15))
.bold(selected)
.opacity(selected ? 1 : 0.8)
.contentTransition(.numericText())
.animation(.default, value: testLine)
} }
} }
} }
}
Section("Test String") { Section("Test String") {
TextField("", text: $testLine) TextField("", text: $testLine)
.fixedSize() .fixedSize()
}
} }
} }
.scrollContentBackground(.hidden)
} }
} }

View File

@@ -54,7 +54,7 @@ struct RecentsView: View {
if historyCount+2 > hostsManager.history.count { if historyCount+2 > hostsManager.history.count {
increment = 1 increment = 1
} }
withAnimation { historyCount += increment } withAnimation(.spring) { historyCount += increment }
} label: { } label: {
Image(systemName: "chevron.down") Image(systemName: "chevron.down")
.resizable().scaledToFit() .resizable().scaledToFit()
@@ -76,7 +76,7 @@ struct RecentsView: View {
Spacer() Spacer()
Button { Button {
withAnimation { historyCount = 0 } withAnimation(.spring) { historyCount = 0 }
} label: { } label: {
Image(systemName: "chevron.up.2") Image(systemName: "chevron.up.2")
.resizable().scaledToFit() .resizable().scaledToFit()