Skip to content

Commit 8108df5

Browse files
authored
refactor!: management of forced legacy layout, display of badges on toolbar top component (#1623) (#1624)
Fix badges never displayed on toolbar top component for apps with Liquid Glass disabled on iOS 27 compiled with Xcode 26. Refactored the items for forced legacy layouts and check the dedicated flag in navigation elements. BREAKING CHANGE: View modifier, helper and dedicated flag to force legacy tab bar layout have been renamed Read the MIGRATION guide to know which changes must be applied. Closes #1623 Reviewed-by: Copilot <198982749+Copilot@users.noreply.github.com> Signed-off-by: Pierre-Yves Lapersonne <pierreyves.lapersonne@orange.com>
1 parent 7cf24c5 commit 8108df5

9 files changed

Lines changed: 92 additions & 24 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1818

1919
### Changed
2020

21+
- Detection of forced legacy layout for navigation elements
2122
- **BREAKING**: `.neutral` and `.accent` `badge icon status` signatures
2223
- **BREAKING**: `.neutral` and `.accent` `alert status` parameter name
2324
- **BREAKING**: `.icon` and `.textAndIcon` layouts for `chip picker data` object
@@ -35,12 +36,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3536

3637
### Fixed
3738

39+
- Missing `badges` on `toolbar top` component for app on iOS 27 with Xcode 26.5 and disabled Liquid Glass configuration (Orange-OpenSource/ouds-ios#1623)
3840
- Missing "core_common_back" localized string for `back` button of `toolbar top` component (Orange-OpenSource/ouds-ios#1577)
3941
- For `alert` components, add default vocalisation on "info" status (Orange-OpenSource/ouds-ios#1561)
4042
- Icon assets for unordered `bullet list` item not displayed (Orange-OpenSource/ouds-ios#1615)
4143

4244
### Removed
4345

46+
- **BREAKING**: `forceOUDSLegacyTabBar` and `OUDSLegacyTabBarModifier`, for `forceOUDSLegacyLayout` and `OUDSLegacyLayoutModifier`
4447
- **BREAKING**: Deprecated `OUDSBadge` API
4548
- **BREAKING**: Deprecated type `OUDSIcon`
4649
- **BREAKING**: Deprecated initializers for `button`, `checkbox`, `chips`, `radio`, `switch`, `checkbox`, `text input`, `badge`, `link`, `tag` components

MIGRATION.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,39 @@ To be aligned with new `OUDSImage` API, the `accent` and `neutral` `badge icon s
224224

225225
**Reason for Change**: Use new `OUDSImage` API
226226

227+
### Renamed legacy layout modifier
228+
229+
The `.forceOUDSLegacyTabBar()` view modifier and its underlying `OUDSLegacyTabBarModifier` type have been renamed to reflect a broader layout scope.
230+
231+
**Impact**: High
232+
233+
| Old v2 name | New v3 name |
234+
|---|---|
235+
| `forceOUDSLegacyTabBar` | `forceOUDSLegacyLayout` |
236+
| `OUDSLegacyTabBarModifier` | `OUDSLegacyLayoutModifier` |
237+
238+
**Before (v2.3.0)**:
239+
```swift
240+
SomeView()
241+
.forceOUDSLegacyTabBar()
242+
243+
let modifier: OUDSLegacyTabBarModifier = ...
244+
```
245+
246+
**After (v3.0.0)**:
247+
```swift
248+
SomeView()
249+
.forceOUDSLegacyLayout()
250+
251+
let modifier: OUDSLegacyLayoutModifier = ...
252+
```
253+
254+
**Required Action**:
255+
- Replace any call to `.forceOUDSLegacyTabBar()` with `.forceOUDSLegacyLayout()`
256+
- Replace any reference to `OUDSLegacyTabBarModifier` with `OUDSLegacyLayoutModifier`
257+
258+
**Reason for Change**: The modifier is no longer specific to the tab bar; it applies to the overall layout.
259+
227260
### Compatibility
228261

229262
- **Backward Compatibility**: No

OUDS/Core/Components/Sources/Navigations/TabBar/OUDSTabBar.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ public struct OUDSTabBar<Content: View>: View {
216216
@State private var isTabBarHidden: Bool = false
217217
#endif
218218

219-
@Environment(\.forceOUDSLegacyTabBar) private var forceOUDSLegacyTabBar
219+
@Environment(\.forceOUDSLegacyLayout) private var forceOUDSLegacyLayout
220220
@Environment(\.isLiquidGlassDisabled) private var isLiquidGlassDisabled
221221

222222
// MARK: Initializers
@@ -359,7 +359,7 @@ public struct OUDSTabBar<Content: View>: View {
359359
/// Determines if the selected tab indicator should be shown, i.e. if iOS lower than 26 in portrait mode.
360360
private var shouldShowTabIndicator: Bool {
361361
#if canImport(UIKit) && !os(watchOS)
362-
if forceOUDSLegacyTabBar { return true }
362+
if forceOUDSLegacyLayout { return true }
363363
guard isLiquidGlassDisabled else { return false }
364364
guard UIDevice.current.userInterfaceIdiom == .phone else { return false }
365365
return !isLandscape
@@ -371,7 +371,7 @@ public struct OUDSTabBar<Content: View>: View {
371371
/// - Returns Bool: true if iOS lower than 26.0 for iPhone or iOS lower than 18.0 for iPad, false otherwise
372372
private var hasLegacyLayout: Bool {
373373
#if canImport(UIKit) && !os(watchOS)
374-
if forceOUDSLegacyTabBar { return true }
374+
if forceOUDSLegacyLayout { return true }
375375
// iOS < 26
376376
if isLiquidGlassDisabled {
377377
// iPhone

OUDS/Core/Components/Sources/Navigations/TabBar/OUDSTabBarViewModifier.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public struct OUDSTabBarViewModifier: ViewModifier {
4343
@Environment(\.theme) private var theme
4444
@Environment(\.colorScheme) private var colorScheme
4545
@Environment(\.verticalSizeClass) private var verticalSizeClass
46-
@Environment(\.forceOUDSLegacyTabBar) private var forceOUDSLegacyTabBar
46+
@Environment(\.forceOUDSLegacyLayout) private var forceOUDSLegacyLayout
4747
@Environment(\.isLiquidGlassDisabled) private var isLiquidGlassDisabled
4848

4949
// MARK: Init
@@ -154,7 +154,7 @@ public struct OUDSTabBarViewModifier: ViewModifier {
154154
It could mean in dark mode the text is not readable at all.
155155
Thus apply the unselector color only for cases where everything works, i.e. not Liquid Glass
156156
*/
157-
if forceOUDSLegacyTabBar || isLiquidGlassDisabled { // No Liquid Glass (i.e. iOS 26 with disabled option, and iOS < 26)
157+
if forceOUDSLegacyLayout || isLiquidGlassDisabled { // No Liquid Glass (i.e. iOS 26 with disabled option, and iOS < 26)
158158
let unselectedUIColor = themeToApply.bar.colorContentUnselectedEnabled.color(for: colorSchemeToApply).uiColor
159159
tabBarItemAppearance.normal.iconColor = unselectedUIColor
160160
tabBarItemAppearance.normal.titleTextAttributes = [
@@ -169,7 +169,7 @@ public struct OUDSTabBarViewModifier: ViewModifier {
169169

170170
// MARK: Tab bar selected item
171171

172-
if forceOUDSLegacyTabBar || isLiquidGlassDisabled {
172+
if forceOUDSLegacyLayout || isLiquidGlassDisabled {
173173
let selectedUIColor = themeToApply.bar.colorContentSelectedEnabled.color(for: colorSchemeToApply).uiColor
174174
tabBarItemAppearance.selected.iconColor = selectedUIColor
175175
tabBarItemAppearance.selected.titleTextAttributes = [

OUDS/Core/Components/Sources/Navigations/ToolBar/Internal/NavigationStackRefresher.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ struct NavigationStackRefresher: ViewModifier {
2525

2626
@Environment(\.theme) private var theme: OUDSTheme
2727
@Environment(\.colorScheme) private var colorScheme
28+
@Environment(\.forceOUDSLegacyLayout) private var forceOUDSLegacyLayout
2829
@Environment(\.isLiquidGlassDisabled) private var isLiquidGlassDisabled
2930

3031
// MARK: - Initializer
@@ -157,7 +158,7 @@ struct NavigationStackRefresher: ViewModifier {
157158

158159
// Background and tint colors
159160

160-
if isLiquidGlassDisabled {
161+
if isLiquidGlassDisabled || forceOUDSLegacyLayout {
161162
appearance.configureWithOpaqueBackground()
162163
appearance.backgroundColor = newTheme.bar.colorBgTranslucent.color(for: newColorScheme).uiColor
163164
}

OUDS/Core/Components/Sources/Navigations/ToolBar/Internal/ToolBarItemModifiers.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ struct ToolBarActionItemStyle: ButtonStyle {
6060

6161
@Environment(\.theme) private var theme
6262
@Environment(\.isEnabled) private var isEnabled
63+
@Environment(\.forceOUDSLegacyLayout) private var forceOUDSLegacyLayout
6364
@Environment(\.isLiquidGlassDisabled) private var isLiquidGlassDisabled
6465

6566
// MARK: Body
@@ -68,7 +69,7 @@ struct ToolBarActionItemStyle: ButtonStyle {
6869
if !isEnabled {
6970
configuration.label.foregroundColor(theme.button.colorContentMinimalDisabled)
7071
} else {
71-
if isLiquidGlassDisabled {
72+
if isLiquidGlassDisabled || forceOUDSLegacyLayout {
7273
if configuration.isPressed {
7374
configuration.label.foregroundColor(theme.button.colorContentMinimalPressed)
7475
} else {
@@ -102,12 +103,13 @@ struct ToolBarTopItemNavigationStyle: ButtonStyle {
102103

103104
@Environment(\.theme) private var theme
104105
@Environment(\.isEnabled) private var isEnabled
106+
@Environment(\.forceOUDSLegacyLayout) private var forceOUDSLegacyLayout
105107
@Environment(\.isLiquidGlassDisabled) private var isLiquidGlassDisabled
106108

107109
// MARK: Body
108110

109111
func makeBody(configuration: Configuration) -> some View {
110-
if isLiquidGlassDisabled {
112+
if isLiquidGlassDisabled || forceOUDSLegacyLayout {
111113
configuration.label
112114
.foregroundColor(foregroundColor)
113115
} else {

OUDS/Core/Components/Sources/Navigations/ToolBar/Internal/ToolBarItems.swift

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ struct ToolBarItemActionButton: View {
2626
let type: OUDSToolBarItem.ActionType
2727
let style: OUDSToolBarItem.ActionStyle
2828

29+
@Environment(\.forceOUDSLegacyLayout) private var forceOUDSLegacyLayout
2930
@Environment(\.isLiquidGlassDisabled) private var isLiquidGlassDisabled
3031

3132
// MARK: Body
@@ -38,7 +39,7 @@ struct ToolBarItemActionButton: View {
3839
} label: {
3940
// fixedSize(). to let items use suitable size to display text withut beeing truncated all the times
4041
// padding of 4 to make the text "breath" and not be to stucked to items borders
41-
if isLiquidGlassDisabled {
42+
if isLiquidGlassDisabled || forceOUDSLegacyLayout {
4243
Text(label).modifier(FontLabelModifier(style: emphasized ? .medium : .regular)).fixedSize().padding(4)
4344
} else {
4445
Text(label).modifier(FontLabelModifier(style: .medium)).fixedSize().padding(4)
@@ -76,11 +77,13 @@ struct ToolBarItemActionButton: View {
7677
private struct ToolBarItemBadgeModifier: ViewModifier {
7778

7879
let type: OUDSToolBarItem.BadgeType?
80+
7981
@Environment(\.toolbarItemLocation) private var location
8082
@Environment(\.isLiquidGlassDisabled) private var isLiquidGlassDisabled
83+
@Environment(\.forceOUDSLegacyLayout) private var forceOUDSLegacyLayout
8184

8285
func body(content: Content) -> some View {
83-
if isLiquidGlassDisabled {
86+
if isLiquidGlassDisabled || forceOUDSLegacyLayout {
8487
oudsBadgeLayout(content)
8588
} else {
8689
switch location {
@@ -133,6 +136,7 @@ struct ToolBarItemNavigationButton: View {
133136
@Environment(\.theme) private var theme
134137
@Environment(\.layoutDirection) private var layoutDirection
135138
@Environment(\.presentationMode) private var presentationMode
139+
@Environment(\.forceOUDSLegacyLayout) private var forceOUDSLegacyLayout
136140
@Environment(\.isLiquidGlassDisabled) private var isLiquidGlassDisabled
137141

138142
// MARK: - Body
@@ -141,7 +145,7 @@ struct ToolBarItemNavigationButton: View {
141145
Group {
142146
switch type {
143147
case let .back(label, accessibilityLabel, action):
144-
if isLiquidGlassDisabled {
148+
if isLiquidGlassDisabled || forceOUDSLegacyLayout {
145149
Button {
146150
action?()
147151
presentationMode.wrappedValue.dismiss()

OUDS/Core/Components/Sources/Navigations/TabBar/OUDSLegacyTabBarModifier.swift renamed to OUDS/Core/Components/Sources/_/ViewModifiers/LayoutModifiers/OUDSLegacyLayoutModifier.swift

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,40 +22,42 @@ import SwiftUI
2222
///
2323
/// The edge case is when the OS version is 27, the flag *UIDesignRequiresCompatibility* stils exists but the app is compiled with Xcode 26.
2424
/// This case is extreme: the system does not force Liquid Glass, the flag is here, and OUDS cannot only rely on the OS version.
25-
/// Thus, this ``OUDSLegacyTabBarModifier`` will define an environment value saying any legacy layout things (appearances, selector, divider) must be displayed.
25+
/// Thus, this ``OUDSLegacyLayoutModifier`` will define an environment value saying any legacy layout things (appearances, selector, divider) must be displayed.
2626
///
2727
/// **You must use this `ViewModifier` with care, and only if you are using Xcode 26 and _UIDesignRequiresCompatibility_ to YES **.
2828
/// Prefer build with Xcode 27 without the *UIDesignRequiresCompatibility* flag.
2929
///
3030
/// ```swift
3131
/// OUDSTabBar(selectedTab: ..., count: ...) { ... )
32-
/// .modifier(OUDSLegacyTabBarModifier())
32+
/// .modifier(OUDSLegacyLayoutModifier())
3333
/// ```
3434
///
35-
/// - Since: 2.2.0
36-
public struct OUDSLegacyTabBarModifier: ViewModifier {
35+
/// **Note: You should use this view modifier in your root view because the flag is defines in deeper levels is used for all navigations components like bars**
36+
///
37+
/// - Since: 3.0.0H
38+
public struct OUDSLegacyLayoutModifier: ViewModifier {
3739

3840
/// To prevent to pollute logs
3941
private static var usersHaveBeenWarned: Bool = false
4042

41-
/// Instanciates the `OUDSLegacyTabBarModifier` and displays error messages in the standard output
43+
/// Instanciates the `OUDSLegacyLayoutModifier` and displays error messages in the standard output
4244
public init() {
4345
if !Self.usersHaveBeenWarned {
44-
OL.warning("You should not force the legacy layout of the tab bar; please embrace Liquid Glass!")
45-
OL.warning("You should not use this OUDSLegacyTabBarModifier with Xcode 27 or with Xcode 26 without UIDesignRequiresCompatibility or set to NO")
46+
OL.warning("You should not force the legacy layout of the navigation elements like bars; please embrace Liquid Glass!")
47+
OL.warning("You should not use this OUDSLegacyLayoutModifier with Xcode 27 or with Xcode 26 without UIDesignRequiresCompatibility or set to NO")
4648
Self.usersHaveBeenWarned = true
4749
}
4850
}
4951

5052
/// Defines environment variable to precise the legacy tab bar must be forced
5153
public func body(content: Content) -> some View {
5254
content
53-
.environment(\.forceOUDSLegacyTabBar, true)
55+
.environment(\.forceOUDSLegacyLayout, true)
5456
}
5557
}
5658

5759
extension EnvironmentValues {
5860

5961
/// A flag indicating the OUDS tab bar must have the legacy layout.
60-
@Entry public var forceOUDSLegacyTabBar: Bool = false
62+
@Entry public var forceOUDSLegacyLayout: Bool = false
6163
}

skills/ouds-ios-migration/SKILL.md

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ For full before/after examples, refer to `MIGRATION.md` in the project root.
2323
| v2.0.0 → v2.1.0 | Low | Component token `spacePaddingBlockDensityCompactTopAlignmentTopText_container` renamed |
2424
| v2.0.0 → v2.2.0 | Medium | `OUDSBadge` split into `OUDSBadgeStandard`, `OUDSBadgeCount`, `OUDSBadgeIcon` |
2525
| v2.2.0 → v2.3.0 | Low | `OUDSIcon``OUDSImage`; all `icon: Image` + `flipIcon` + `renderingMode` params replaced by `OUDSImage` |
26-
| v2.3.0 → v3.0.0 | High | Button/tag/link component token renames (add `Default` suffix); `icon.colorContentDefault` removed; `theme.controlItem``theme.listItem`; `OUDSChipPickerData.Layout.icon(icon:…)``.image(image:)`; `.textAndIcon``.textAndImage`; alert status `.neutral(icon:)`/`.accent(icon:)``(image:)`; `OUDSBadgeIcon` status `.neutral(icon:flipped:renderingMode:)`/`.accent(…)``(image: OUDSImage)` |
26+
| v2.3.0 → v3.0.0 | High | Button/tag/link component token renames (add `Default` suffix); `icon.colorContentDefault` removed; `theme.controlItem``theme.listItem`; `OUDSChipPickerData.Layout.icon(icon:…)``.image(image:)`; `.textAndIcon``.textAndImage`; alert status `.neutral(icon:)`/`.accent(icon:)``(image:)`; `OUDSBadgeIcon` status `.neutral(icon:flipped:renderingMode:)`/`.accent(…)``(image: OUDSImage)`; `forceOUDSLegacyTabBar``forceOUDSLegacyLayout`; `OUDSLegacyTabBarModifier``OUDSLegacyLayoutModifier` |
2727

2828
---
2929

@@ -42,7 +42,7 @@ For full before/after examples, refer to `MIGRATION.md` in the project root.
4242
```bash
4343
# Breaking changes (v3.0.0)
4444
grep -rn \
45-
"theme\.controlItem\|icon\.colorContentDefault\|spaceInsetLoader\|\.sizeMaxHeightIconOnly\b\|\.sizeMinHeight\b\|\.sizeMinWidth\b\|\.sizeIcon\b\|\.sizeIconOnly\b\|\.sizeProgressIndicator\b\|\.spaceColumnGapIconChevron\b\|\.spaceColumnGapChevron\b\|\.spaceInsetIconOnly\b\|\.spacePaddingBlock\b\|\.spacePaddingInlineChevronEnd\b\|\.spacePaddingInlineChevronStart\b\|\.spacePaddingInlineEndIconStart\b\|\.spacePaddingInlineIconNone\b\|\.spacePaddingInlineStartIconEnd\b" \
45+
"theme\.controlItem\|icon\.colorContentDefault\|spaceInsetLoader\|\.sizeMaxHeightIconOnly\b\|\.sizeMinHeight\b\|\.sizeMinWidth\b\|\.sizeIcon\b\|\.sizeIconOnly\b\|\.sizeProgressIndicator\b\|\.spaceColumnGapIconChevron\b\|\.spaceColumnGapChevron\b\|\.spaceInsetIconOnly\b\|\.spacePaddingBlock\b\|\.spacePaddingInlineChevronEnd\b\|\.spacePaddingInlineChevronStart\b\|\.spacePaddingInlineEndIconStart\b\|\.spacePaddingInlineIconNone\b\|\.spacePaddingInlineStartIconEnd\b\|forceOUDSLegacyTabBar\|OUDSLegacyTabBarModifier" \
4646
--include="*.swift" .
4747

4848
# Active deprecations (v2.x)
@@ -459,6 +459,29 @@ The `.neutral(icon:)` and `.accent(icon:)` cases of alert status have two change
459459

460460
---
461461

462+
### Modifier renamed: `forceOUDSLegacyTabBar``forceOUDSLegacyLayout`
463+
464+
The `.forceOUDSLegacyTabBar()` view modifier and its underlying `OUDSLegacyTabBarModifier` type have been renamed to reflect a broader layout scope.
465+
466+
| Old (v2.3) | New (v3.0) |
467+
|---|---|
468+
| `.forceOUDSLegacyTabBar()` | `.forceOUDSLegacyLayout()` |
469+
| `OUDSLegacyTabBarModifier` | `OUDSLegacyLayoutModifier` |
470+
471+
```swift
472+
// Before (v2.3)
473+
SomeView().forceOUDSLegacyTabBar()
474+
let modifier: OUDSLegacyTabBarModifier = ...
475+
476+
// After (v3.0)
477+
SomeView().forceOUDSLegacyLayout()
478+
let modifier: OUDSLegacyLayoutModifier = ...
479+
```
480+
481+
**Required action**: global find-and-replace `forceOUDSLegacyTabBar``forceOUDSLegacyLayout` and `OUDSLegacyTabBarModifier``OUDSLegacyLayoutModifier`.
482+
483+
---
484+
462485
## Verification checklist
463486

464487
```bash
@@ -468,7 +491,7 @@ swift build 2>&1 | grep -i "deprecated" | grep -iv "apple\|system\|swift\|founda
468491

469492
# v3.0 breaking changes — must return nothing
470493
grep -rn \
471-
"theme\.controlItem\|icon\.colorContentDefault\|spaceInsetLoader\|\.sizeMaxHeightIconOnly\b\|\.sizeMinHeight\b\|\.sizeMinWidth\b\|\.sizeIcon\b\|\.sizeIconOnly\b\|\.sizeProgressIndicator\b\|\.spaceColumnGapIconChevron\b\|\.spaceColumnGapChevron\b\|\.spaceInsetIconOnly\b\|\.spacePaddingBlock\b\|\.spacePaddingInlineChevronEnd\b\|\.spacePaddingInlineChevronStart\b\|\.spacePaddingInlineEndIconStart\b\|\.spacePaddingInlineIconNone\b\|\.spacePaddingInlineStartIconEnd\b\|Layout\.icon(icon:\|\.textAndIcon\b\|\.neutral(icon:\|\.accent(icon:\|neutral(icon:\|accent(icon:\|OrangeThemeControlItemComponentTokensProvider\|OrangeCompactThemeControlItemComponentTokensProvider\|SoshThemeControlItemComponentTokensProvider\|WireframeThemeControlItemComponentTokensProvider\|AllControlItemComponentTokensProvider\|ControlItemComponentTokens" \
494+
"theme\.controlItem\|icon\.colorContentDefault\|spaceInsetLoader\|\.sizeMaxHeightIconOnly\b\|\.sizeMinHeight\b\|\.sizeMinWidth\b\|\.sizeIcon\b\|\.sizeIconOnly\b\|\.sizeProgressIndicator\b\|\.spaceColumnGapIconChevron\b\|\.spaceColumnGapChevron\b\|\.spaceInsetIconOnly\b\|\.spacePaddingBlock\b\|\.spacePaddingInlineChevronEnd\b\|\.spacePaddingInlineChevronStart\b\|\.spacePaddingInlineEndIconStart\b\|\.spacePaddingInlineIconNone\b\|\.spacePaddingInlineStartIconEnd\b\|Layout\.icon(icon:\|\.textAndIcon\b\|\.neutral(icon:\|\.accent(icon:\|neutral(icon:\|accent(icon:\|OrangeThemeControlItemComponentTokensProvider\|OrangeCompactThemeControlItemComponentTokensProvider\|SoshThemeControlItemComponentTokensProvider\|WireframeThemeControlItemComponentTokensProvider\|AllControlItemComponentTokensProvider\|ControlItemComponentTokens\|forceOUDSLegacyTabBar\|OUDSLegacyTabBarModifier" \
472495
--include="*.swift" .
473496

474497
# v2.x deprecated symbols — must return nothing

0 commit comments

Comments
 (0)