fix: ExtL10n String vs Text misuse and replace caption1 with caption
ExtL10n.text returns Text; use ExtL10n.string where String is required (computed properties, Text/Button initializers). TypeStyle has caption, not caption1 — align onboarding and dictionary views. Co-authored-by: Rocky <hkgood@users.noreply.github.com>
This commit is contained in:
@@ -85,7 +85,7 @@ struct PersonalDictionaryView: View {
|
|||||||
.foregroundStyle(palette.accent)
|
.foregroundStyle(palette.accent)
|
||||||
VStack(alignment: .leading, spacing: 4) {
|
VStack(alignment: .leading, spacing: 4) {
|
||||||
Text("settings.personalDictionary.intro.title")
|
Text("settings.personalDictionary.intro.title")
|
||||||
.font(TypeStyle.caption1)
|
.font(TypeStyle.caption)
|
||||||
.foregroundStyle(palette.textPrimary)
|
.foregroundStyle(palette.textPrimary)
|
||||||
Text("settings.personalDictionary.intro.body")
|
Text("settings.personalDictionary.intro.body")
|
||||||
.font(TypeStyle.caption2)
|
.font(TypeStyle.caption2)
|
||||||
@@ -176,7 +176,7 @@ struct PersonalDictionaryView: View {
|
|||||||
.font(TypeStyle.body)
|
.font(TypeStyle.body)
|
||||||
.foregroundStyle(palette.textSecondary)
|
.foregroundStyle(palette.textSecondary)
|
||||||
Text("settings.personalDictionary.empty.body")
|
Text("settings.personalDictionary.empty.body")
|
||||||
.font(TypeStyle.caption1)
|
.font(TypeStyle.caption)
|
||||||
.foregroundStyle(palette.textTertiary)
|
.foregroundStyle(palette.textTertiary)
|
||||||
.multilineTextAlignment(.center)
|
.multilineTextAlignment(.center)
|
||||||
.padding(.horizontal, Spacing.xl)
|
.padding(.horizontal, Spacing.xl)
|
||||||
|
|||||||
@@ -57,11 +57,11 @@ struct AppContextChip: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private var chipText: String {
|
private var chipText: String {
|
||||||
ExtL10n.text("keyboard.appContext.chip.\(state.appContext.rawValue)")
|
ExtL10n.string("keyboard.appContext.chip.\(state.appContext.rawValue)")
|
||||||
}
|
}
|
||||||
|
|
||||||
private func menuLabel(for context: AppContext) -> String {
|
private func menuLabel(for context: AppContext) -> String {
|
||||||
ExtL10n.text("keyboard.appContext.menu.\(context.rawValue)")
|
ExtL10n.string("keyboard.appContext.menu.\(context.rawValue)")
|
||||||
}
|
}
|
||||||
|
|
||||||
private func iconName(for context: AppContext) -> String {
|
private func iconName(for context: AppContext) -> String {
|
||||||
|
|||||||
@@ -132,12 +132,12 @@ struct KeyboardOnboardingOverlay: View {
|
|||||||
Image(systemName: "keyboard")
|
Image(systemName: "keyboard")
|
||||||
.font(.system(size: 36, weight: .light))
|
.font(.system(size: 36, weight: .light))
|
||||||
.foregroundStyle(palette.accent)
|
.foregroundStyle(palette.accent)
|
||||||
Text(ExtL10n.text("keyboard.onboarding.keyboard.title"))
|
Text(ExtL10n.string("keyboard.onboarding.keyboard.title"))
|
||||||
.font(TypeStyle.headline)
|
.font(TypeStyle.headline)
|
||||||
.foregroundStyle(palette.textPrimary)
|
.foregroundStyle(palette.textPrimary)
|
||||||
.multilineTextAlignment(.center)
|
.multilineTextAlignment(.center)
|
||||||
Text(ExtL10n.text("keyboard.onboarding.keyboard.body"))
|
Text(ExtL10n.string("keyboard.onboarding.keyboard.body"))
|
||||||
.font(TypeStyle.caption1)
|
.font(TypeStyle.caption)
|
||||||
.foregroundStyle(palette.textSecondary)
|
.foregroundStyle(palette.textSecondary)
|
||||||
.multilineTextAlignment(.center)
|
.multilineTextAlignment(.center)
|
||||||
.fixedSize(horizontal: false, vertical: true)
|
.fixedSize(horizontal: false, vertical: true)
|
||||||
@@ -146,9 +146,9 @@ struct KeyboardOnboardingOverlay: View {
|
|||||||
} label: {
|
} label: {
|
||||||
HStack(spacing: 6) {
|
HStack(spacing: 6) {
|
||||||
Image(systemName: "arrow.up.right.square")
|
Image(systemName: "arrow.up.right.square")
|
||||||
Text(ExtL10n.text("keyboard.onboarding.keyboard.openSettings"))
|
Text(ExtL10n.string("keyboard.onboarding.keyboard.openSettings"))
|
||||||
}
|
}
|
||||||
.font(TypeStyle.caption1.weight(.semibold))
|
.font(TypeStyle.caption.weight(.semibold))
|
||||||
.foregroundStyle(.white)
|
.foregroundStyle(.white)
|
||||||
.padding(.horizontal, Spacing.md)
|
.padding(.horizontal, Spacing.md)
|
||||||
.padding(.vertical, Spacing.xs + 2)
|
.padding(.vertical, Spacing.xs + 2)
|
||||||
@@ -164,16 +164,16 @@ struct KeyboardOnboardingOverlay: View {
|
|||||||
Image(systemName: "key.fill")
|
Image(systemName: "key.fill")
|
||||||
.font(.system(size: 32, weight: .light))
|
.font(.system(size: 32, weight: .light))
|
||||||
.foregroundStyle(palette.accent)
|
.foregroundStyle(palette.accent)
|
||||||
Text(ExtL10n.text("keyboard.onboarding.api.title"))
|
Text(ExtL10n.string("keyboard.onboarding.api.title"))
|
||||||
.font(TypeStyle.headline)
|
.font(TypeStyle.headline)
|
||||||
.foregroundStyle(palette.textPrimary)
|
.foregroundStyle(palette.textPrimary)
|
||||||
.multilineTextAlignment(.center)
|
.multilineTextAlignment(.center)
|
||||||
Text(ExtL10n.text("keyboard.onboarding.api.body"))
|
Text(ExtL10n.string("keyboard.onboarding.api.body"))
|
||||||
.font(TypeStyle.caption1)
|
.font(TypeStyle.caption)
|
||||||
.foregroundStyle(palette.textSecondary)
|
.foregroundStyle(palette.textSecondary)
|
||||||
.multilineTextAlignment(.center)
|
.multilineTextAlignment(.center)
|
||||||
.fixedSize(horizontal: false, vertical: true)
|
.fixedSize(horizontal: false, vertical: true)
|
||||||
Text(ExtL10n.text("keyboard.onboarding.api.skipHint"))
|
Text(ExtL10n.string("keyboard.onboarding.api.skipHint"))
|
||||||
.font(TypeStyle.caption2)
|
.font(TypeStyle.caption2)
|
||||||
.foregroundStyle(palette.textSecondary)
|
.foregroundStyle(palette.textSecondary)
|
||||||
.multilineTextAlignment(.center)
|
.multilineTextAlignment(.center)
|
||||||
@@ -190,12 +190,12 @@ struct KeyboardOnboardingOverlay: View {
|
|||||||
Image(systemName: iconSystemName)
|
Image(systemName: iconSystemName)
|
||||||
.font(.system(size: 36, weight: .light))
|
.font(.system(size: 36, weight: .light))
|
||||||
.foregroundStyle(palette.accent)
|
.foregroundStyle(palette.accent)
|
||||||
Text(ExtL10n.text(title))
|
Text(ExtL10n.string(title))
|
||||||
.font(TypeStyle.headline)
|
.font(TypeStyle.headline)
|
||||||
.foregroundStyle(palette.textPrimary)
|
.foregroundStyle(palette.textPrimary)
|
||||||
.multilineTextAlignment(.center)
|
.multilineTextAlignment(.center)
|
||||||
Text(ExtL10n.text(body))
|
Text(ExtL10n.string(body))
|
||||||
.font(TypeStyle.caption1)
|
.font(TypeStyle.caption)
|
||||||
.foregroundStyle(palette.textSecondary)
|
.foregroundStyle(palette.textSecondary)
|
||||||
.multilineTextAlignment(.center)
|
.multilineTextAlignment(.center)
|
||||||
.fixedSize(horizontal: false, vertical: true)
|
.fixedSize(horizontal: false, vertical: true)
|
||||||
@@ -208,10 +208,10 @@ struct KeyboardOnboardingOverlay: View {
|
|||||||
private var footer: some View {
|
private var footer: some View {
|
||||||
HStack(spacing: Spacing.xs) {
|
HStack(spacing: Spacing.xs) {
|
||||||
if currentStep != .welcome {
|
if currentStep != .welcome {
|
||||||
Button(ExtL10n.text("keyboard.onboarding.back")) {
|
Button(ExtL10n.string("keyboard.onboarding.back")) {
|
||||||
state.onboardingPage = max(0, currentStep.rawValue - 1)
|
state.onboardingPage = max(0, currentStep.rawValue - 1)
|
||||||
}
|
}
|
||||||
.font(TypeStyle.caption1)
|
.font(TypeStyle.caption)
|
||||||
.foregroundStyle(palette.textSecondary)
|
.foregroundStyle(palette.textSecondary)
|
||||||
.frame(minHeight: 36)
|
.frame(minHeight: 36)
|
||||||
}
|
}
|
||||||
@@ -226,13 +226,13 @@ struct KeyboardOnboardingOverlay: View {
|
|||||||
private var primaryButton: some View {
|
private var primaryButton: some View {
|
||||||
switch currentStep {
|
switch currentStep {
|
||||||
case .welcome:
|
case .welcome:
|
||||||
Button(ExtL10n.text("keyboard.onboarding.getStarted")) {
|
Button(ExtL10n.string("keyboard.onboarding.getStarted")) {
|
||||||
state.onboardingPage = 1
|
state.onboardingPage = 1
|
||||||
}
|
}
|
||||||
.buttonStyle(OverlayPrimaryButtonStyle(palette: palette))
|
.buttonStyle(OverlayPrimaryButtonStyle(palette: palette))
|
||||||
|
|
||||||
case .microphone:
|
case .microphone:
|
||||||
Button(ExtL10n.text("keyboard.onboarding.mic.grant")) {
|
Button(ExtL10n.string("keyboard.onboarding.mic.grant")) {
|
||||||
state.requestMicPermission()
|
state.requestMicPermission()
|
||||||
// Optimistically advance — if permission is denied the
|
// Optimistically advance — if permission is denied the
|
||||||
// status text on the next viewWillAppear will reflect it.
|
// status text on the next viewWillAppear will reflect it.
|
||||||
@@ -241,7 +241,7 @@ struct KeyboardOnboardingOverlay: View {
|
|||||||
.buttonStyle(OverlayPrimaryButtonStyle(palette: palette))
|
.buttonStyle(OverlayPrimaryButtonStyle(palette: palette))
|
||||||
|
|
||||||
case .speech:
|
case .speech:
|
||||||
Button(ExtL10n.text("keyboard.onboarding.speech.grant")) {
|
Button(ExtL10n.string("keyboard.onboarding.speech.grant")) {
|
||||||
state.requestSpeechPermission()
|
state.requestSpeechPermission()
|
||||||
state.onboardingPage = 3
|
state.onboardingPage = 3
|
||||||
}
|
}
|
||||||
@@ -252,22 +252,22 @@ struct KeyboardOnboardingOverlay: View {
|
|||||||
// has enabled the keyboard in Settings.app. We don't show
|
// has enabled the keyboard in Settings.app. We don't show
|
||||||
// a "Continue" button here — that would re-trigger the
|
// a "Continue" button here — that would re-trigger the
|
||||||
// confusion we're solving.
|
// confusion we're solving.
|
||||||
Button(ExtL10n.text("keyboard.onboarding.keyboard.openSettings")) {
|
Button(ExtL10n.string("keyboard.onboarding.keyboard.openSettings")) {
|
||||||
state.openSystemSettings()
|
state.openSystemSettings()
|
||||||
}
|
}
|
||||||
.buttonStyle(OverlayPrimaryButtonStyle(palette: palette))
|
.buttonStyle(OverlayPrimaryButtonStyle(palette: palette))
|
||||||
|
|
||||||
case .api:
|
case .api:
|
||||||
HStack(spacing: Spacing.xs) {
|
HStack(spacing: Spacing.xs) {
|
||||||
Button(ExtL10n.text("keyboard.onboarding.api.skip")) {
|
Button(ExtL10n.string("keyboard.onboarding.api.skip")) {
|
||||||
state.completeOnboarding()
|
state.completeOnboarding()
|
||||||
}
|
}
|
||||||
.font(TypeStyle.caption1)
|
.font(TypeStyle.caption)
|
||||||
.foregroundStyle(palette.textSecondary)
|
.foregroundStyle(palette.textSecondary)
|
||||||
.padding(.horizontal, Spacing.sm)
|
.padding(.horizontal, Spacing.sm)
|
||||||
.frame(minHeight: 36)
|
.frame(minHeight: 36)
|
||||||
|
|
||||||
Button(ExtL10n.text("keyboard.onboarding.api.openHostApp")) {
|
Button(ExtL10n.string("keyboard.onboarding.api.openHostApp")) {
|
||||||
state.openSettings()
|
state.openSettings()
|
||||||
}
|
}
|
||||||
.buttonStyle(OverlayPrimaryButtonStyle(palette: palette))
|
.buttonStyle(OverlayPrimaryButtonStyle(palette: palette))
|
||||||
@@ -281,7 +281,7 @@ private struct OverlayPrimaryButtonStyle: ButtonStyle {
|
|||||||
|
|
||||||
func makeBody(configuration: Configuration) -> some View {
|
func makeBody(configuration: Configuration) -> some View {
|
||||||
configuration.label
|
configuration.label
|
||||||
.font(TypeStyle.caption1.weight(.semibold))
|
.font(TypeStyle.caption.weight(.semibold))
|
||||||
.foregroundStyle(.white)
|
.foregroundStyle(.white)
|
||||||
.padding(.horizontal, Spacing.md)
|
.padding(.horizontal, Spacing.md)
|
||||||
.padding(.vertical, Spacing.xs + 2)
|
.padding(.vertical, Spacing.xs + 2)
|
||||||
|
|||||||
Reference in New Issue
Block a user