feature updates

Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
Matt Bruce 2026-02-07 10:58:42 -06:00
parent 176830f712
commit 3e5e6b7447
6 changed files with 17 additions and 10 deletions

View File

@ -94,6 +94,7 @@ public struct SelectableRow<Badge: View>: View {
) )
} }
.buttonStyle(.plain) .buttonStyle(.plain)
.sensoryFeedback(.selection, trigger: isSelected)
} }
} }

View File

@ -36,6 +36,7 @@ public struct SelectionIndicator: View {
public var body: some View { public var body: some View {
if isSelected { if isSelected {
SymbolIcon("checkmark.circle.fill", size: .row, color: accentColor) SymbolIcon("checkmark.circle.fill", size: .row, color: accentColor)
.symbolEffect(.bounce, value: isSelected)
} else { } else {
Circle() Circle()
.strokeBorder(Color.white.opacity(Design.Opacity.light), lineWidth: Design.LineWidth.medium) .strokeBorder(Color.white.opacity(Design.Opacity.light), lineWidth: Design.LineWidth.medium)

View File

@ -66,19 +66,18 @@ public struct SettingsNavigationRow<Destination: View>: View {
destination destination
} label: { } label: {
HStack { HStack {
VStack(alignment: .leading, spacing: Design.Spacing.xxSmall) { Text(title).styled(.subheadingEmphasis)
Text(title).styled(.subheadingEmphasis)
if let subtitle {
Text(subtitle).styled(.caption, emphasis: .secondary)
}
}
Spacer() Spacer()
if let subtitle {
Text(subtitle).styled(.subheading, emphasis: .secondary)
}
SymbolIcon.chevron(color: .secondary) SymbolIcon.chevron(color: .secondary)
} }
.padding(Design.Spacing.medium) .padding(.vertical, Design.Spacing.medium)
.padding(.horizontal, Design.Spacing.medium)
.background(backgroundColor, in: RoundedRectangle(cornerRadius: Design.CornerRadius.medium)) .background(backgroundColor, in: RoundedRectangle(cornerRadius: Design.CornerRadius.medium))
} }
.buttonStyle(.plain) .buttonStyle(.plain)

View File

@ -109,6 +109,7 @@ public struct SettingsSegmentedPicker<T: Equatable, Accessory: View>: View {
.buttonStyle(.plain) .buttonStyle(.plain)
} }
} }
.sensoryFeedback(.selection, trigger: selection)
} }
.padding(.vertical, Design.Spacing.xSmall) .padding(.vertical, Design.Spacing.xSmall)
} }

View File

@ -118,6 +118,8 @@ public struct SettingsSlider<Value: BinaryFloatingPoint & Sendable>: View where
Text(format(value)) Text(format(value))
.styled(.subheadingEmphasis, emphasis: .secondary) .styled(.subheadingEmphasis, emphasis: .secondary)
.fontDesign(.rounded) .fontDesign(.rounded)
.contentTransition(.numericText())
.animation(.snappy(duration: 0.2), value: value)
} }
Text(subtitle).styled(.caption, emphasis: .secondary) Text(subtitle).styled(.caption, emphasis: .secondary)
@ -139,7 +141,8 @@ public struct SettingsSlider<Value: BinaryFloatingPoint & Sendable>: View where
} }
} }
} }
.padding(.vertical, Design.Spacing.xSmall) .padding(.vertical, Design.Spacing.medium)
.padding(.horizontal, Design.Spacing.medium)
} }
} }

View File

@ -90,7 +90,9 @@ public struct SettingsToggle<Accessory: View>: View {
} }
} }
.tint(accentColor) .tint(accentColor)
.padding(.vertical, Design.Spacing.xSmall) .padding(.vertical, Design.Spacing.medium)
.padding(.horizontal, Design.Spacing.medium)
.sensoryFeedback(.impact(flexibility: .soft), trigger: isOn)
} }
} }