craft-native 0.0.132 → 0.0.134

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -3303,7 +3303,7 @@ function pinCraftNativeDependency(packagePath, craftVersion) {
3303
3303
  `);
3304
3304
  }
3305
3305
  // package.json
3306
- var version = "0.0.132";
3306
+ var version = "0.0.134";
3307
3307
 
3308
3308
  // bin/cli.ts
3309
3309
  var spawnedFrom = process6.env[CRAFT_CLI_SPAWN_MARKER];
package/dist/index.cjs CHANGED
@@ -310,7 +310,7 @@ function craftBinaryNotFoundMessage(triedPath) {
310
310
  `);
311
311
  }
312
312
  // package.json
313
- var version = "0.0.132";
313
+ var version = "0.0.134";
314
314
 
315
315
  // src/sdk-version.ts
316
316
  var SDK_VERSION = version;
package/dist/index.js CHANGED
@@ -58,7 +58,7 @@ function craftBinaryNotFoundMessage(triedPath) {
58
58
  `);
59
59
  }
60
60
  // package.json
61
- var version = "0.0.132";
61
+ var version = "0.0.134";
62
62
 
63
63
  // src/sdk-version.ts
64
64
  var SDK_VERSION = version;
@@ -473,6 +473,10 @@ struct CraftApp: App {
473
473
  CraftTabBarView()
474
474
  CraftSplashView(background: appState.config.resolvedBackgroundColor)
475
475
  }
476
+ // The keyboard covers the tab bar, as it does UIKit's: the
477
+ // stack kept out of the keyboard's way and carried the bar
478
+ // up above it, over the field being typed in.
479
+ .ignoresSafeArea(.keyboard, edges: .bottom)
476
480
  } else {
477
481
  // The page's own chrome, drawn natively over it: the tab
478
482
  // bar the page asks for, and the splash until it is ready.
@@ -483,6 +487,7 @@ struct CraftApp: App {
483
487
  CraftTabBarView()
484
488
  CraftSplashView(background: appState.config.resolvedBackgroundColor)
485
489
  }
490
+ .ignoresSafeArea(.keyboard, edges: .bottom)
486
491
  }
487
492
  }
488
493
  .preferredColorScheme(appState.config.colorScheme)
@@ -1793,18 +1793,27 @@ final class CraftNativeScreenController: UIViewController, UIScrollViewDelegate,
1793
1793
  button.accessibilityLabel = spec["accessibilityLabel"] as? String
1794
1794
  if let value = spec["badge"] as? NSNumber, value.intValue > 0 {
1795
1795
  let dot = spec["badgeStyle"] as? String == "dot"
1796
- let badge = UILabel()
1797
- badge.text = dot ? nil : value.intValue > 99 ? "99+" : String(value.intValue)
1798
- badge.font = .systemFont(ofSize: 10, weight: .bold)
1799
- badge.textColor = .white
1800
- badge.textAlignment = .center
1801
- badge.backgroundColor = dot ? .systemRed : .systemBlue
1802
- badge.clipsToBounds = true
1803
1796
  let size: CGFloat = dot ? 9 : 18
1804
- badge.layer.cornerRadius = size / 2
1805
- badge.frame = CGRect(x: 44 - size, y: 0, width: size, height: size)
1806
- badge.isAccessibilityElement = false
1807
- button.addSubview(badge)
1797
+ // The fill is a tinted symbol, not a background colour: on iOS 26
1798
+ // a bar item's custom view keeps its tint but drew a plain
1799
+ // backgroundColor white, so the red unread dot came out white
1800
+ // (invisible in light mode) and the count lost its blue.
1801
+ let fill = UIImageView(image: UIImage(systemName: "circle.fill"))
1802
+ fill.tintColor = dot ? .systemRed : .systemBlue
1803
+ fill.contentMode = .scaleToFill
1804
+ fill.frame = CGRect(x: 44 - size, y: 0, width: size, height: size)
1805
+ fill.isAccessibilityElement = false
1806
+ button.addSubview(fill)
1807
+ if !dot {
1808
+ let count = UILabel(frame: fill.frame)
1809
+ count.text = value.intValue > 99 ? "99+" : String(value.intValue)
1810
+ count.font = .systemFont(ofSize: 10, weight: .bold)
1811
+ count.textColor = .white
1812
+ count.textAlignment = .center
1813
+ count.adjustsFontSizeToFitWidth = true
1814
+ count.isAccessibilityElement = false
1815
+ button.addSubview(count)
1816
+ }
1808
1817
  button.accessibilityValue = "\(value.intValue) unread"
1809
1818
  }
1810
1819
  if let source = spec["image"] as? String, let url = URL(string: source), url.scheme == "https" {
@@ -1822,9 +1831,14 @@ final class CraftNativeScreenController: UIViewController, UIScrollViewDelegate,
1822
1831
  }
1823
1832
  }
1824
1833
  let item = UIBarButtonItem(customView: button)
1825
- // Keep the custom-view item compatible with the Xcode SDKs used by
1826
- // Craft's release matrix; iOS 26-only bar-item APIs are not required
1827
- // for the account surface itself.
1834
+ // iOS 26 groups adjacent bar items on one glass platter and tints
1835
+ // their custom views with it: the two 44-point circles came out as
1836
+ // solid accent ovals inside a capsule, unlike the web screens' bar.
1837
+ // The button draws its own surface, so it opts out of the platter.
1838
+ // Guarded by compiler too, for the older SDKs in the release matrix.
1839
+ #if compiler(>=6.2)
1840
+ if #available(iOS 26.0, *) { item.hidesSharedBackground = true; item.sharesBackground = false }
1841
+ #endif
1828
1842
  return item
1829
1843
  }
1830
1844
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "craft-native",
3
- "version": "0.0.132",
3
+ "version": "0.0.134",
4
4
  "type": "module",
5
5
  "description": "Build desktop apps with web languages - TypeScript SDK for Craft",
6
6
  "author": "Chris Breuer <chris@stacksjs.org>",