@rdlabo/ionic-theme-ios27 1.2.1 → 2.0.0-1

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.
Files changed (195) hide show
  1. package/README.md +24 -280
  2. package/dist/css/components/ion-toolbar.css +1 -1
  3. package/dist/css/ionic-theme-ios27.css +1 -1
  4. package/dist/css/vertical-bars.css +1 -1
  5. package/dist/index.d.ts +3 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +3 -2
  8. package/dist/index.js.map +1 -1
  9. package/dist/layout/index.d.ts +18 -0
  10. package/dist/layout/index.d.ts.map +1 -0
  11. package/dist/layout/index.js +26 -0
  12. package/dist/layout/index.js.map +1 -0
  13. package/dist/segment/index.js +3 -3
  14. package/dist/segment/index.js.map +1 -1
  15. package/dist/sheets-of-glass/index.js +7 -7
  16. package/dist/sheets-of-glass/index.js.map +1 -1
  17. package/dist/tab-bar-searchable/dismiss-button.js +53 -3
  18. package/dist/tab-bar-searchable/dismiss-button.js.map +1 -1
  19. package/dist/tab-bar-searchable/index.js +18 -3
  20. package/dist/tab-bar-searchable/index.js.map +1 -1
  21. package/dist/transition/ios.transition.d.ts.map +1 -1
  22. package/dist/transition/ios.transition.js +7 -4
  23. package/dist/transition/ios.transition.js.map +1 -1
  24. package/dist/transition/native-ui.d.ts +6 -0
  25. package/dist/transition/native-ui.d.ts.map +1 -0
  26. package/dist/{native-integration/index.js → transition/native-ui.js} +16 -30
  27. package/dist/transition/native-ui.js.map +1 -0
  28. package/docs/adaptive-themes.md +161 -0
  29. package/docs/add-native-ui.md +53 -0
  30. package/docs/animation.md +19 -3
  31. package/docs/eslint.md +3 -1
  32. package/docs/features.md +9 -5
  33. package/docs/iphone-duo.md +62 -35
  34. package/docs/migration.md +17 -26
  35. package/docs/setup.md +92 -0
  36. package/docs/special-markup.md +41 -10
  37. package/docs/using-ion-item-group.md +2 -2
  38. package/docs/vertical-bars-layout.md +67 -0
  39. package/package.json +12 -42
  40. package/src/index.ts +3 -1
  41. package/src/layout/index.ts +29 -0
  42. package/src/segment/index.ts +3 -3
  43. package/src/sheets-of-glass/index.ts +7 -7
  44. package/src/styles/components/ion-toolbar.scss +1 -1
  45. package/src/styles/vertical-bars.scss +15 -18
  46. package/src/tab-bar-searchable/dismiss-button.ts +73 -4
  47. package/src/tab-bar-searchable/index.ts +20 -3
  48. package/src/transition/ios.transition.ts +7 -4
  49. package/src/{native-integration/index.ts → transition/native-ui.ts} +17 -46
  50. package/Package.swift +0 -21
  51. package/dist/_virtual/_rolldown/runtime.js +0 -13
  52. package/dist/native/components/index.d.ts +0 -19
  53. package/dist/native/components/index.d.ts.map +0 -1
  54. package/dist/native/components/index.js +0 -40
  55. package/dist/native/components/index.js.map +0 -1
  56. package/dist/native/components/ion-back-button.d.ts +0 -9
  57. package/dist/native/components/ion-back-button.d.ts.map +0 -1
  58. package/dist/native/components/ion-back-button.js +0 -20
  59. package/dist/native/components/ion-back-button.js.map +0 -1
  60. package/dist/native/components/ion-button.d.ts +0 -10
  61. package/dist/native/components/ion-button.d.ts.map +0 -1
  62. package/dist/native/components/ion-button.js +0 -23
  63. package/dist/native/components/ion-button.js.map +0 -1
  64. package/dist/native/components/ion-buttons.d.ts +0 -11
  65. package/dist/native/components/ion-buttons.d.ts.map +0 -1
  66. package/dist/native/components/ion-buttons.js +0 -30
  67. package/dist/native/components/ion-buttons.js.map +0 -1
  68. package/dist/native/components/ion-fab.d.ts +0 -10
  69. package/dist/native/components/ion-fab.d.ts.map +0 -1
  70. package/dist/native/components/ion-fab.js +0 -132
  71. package/dist/native/components/ion-fab.js.map +0 -1
  72. package/dist/native/components/ion-menu-button.d.ts +0 -13
  73. package/dist/native/components/ion-menu-button.d.ts.map +0 -1
  74. package/dist/native/components/ion-menu-button.js +0 -31
  75. package/dist/native/components/ion-menu-button.js.map +0 -1
  76. package/dist/native/components/ion-segment.d.ts +0 -11
  77. package/dist/native/components/ion-segment.d.ts.map +0 -1
  78. package/dist/native/components/ion-segment.js +0 -30
  79. package/dist/native/components/ion-segment.js.map +0 -1
  80. package/dist/native/components/ion-tab-bar.d.ts +0 -11
  81. package/dist/native/components/ion-tab-bar.d.ts.map +0 -1
  82. package/dist/native/components/ion-tab-bar.js +0 -50
  83. package/dist/native/components/ion-tab-bar.js.map +0 -1
  84. package/dist/native/components/searchable-tabs.d.ts +0 -20
  85. package/dist/native/components/searchable-tabs.d.ts.map +0 -1
  86. package/dist/native/components/searchable-tabs.js +0 -383
  87. package/dist/native/components/searchable-tabs.js.map +0 -1
  88. package/dist/native/definitions.d.ts +0 -152
  89. package/dist/native/definitions.d.ts.map +0 -1
  90. package/dist/native/definitions.js +0 -0
  91. package/dist/native/foldable/fold-state.d.ts +0 -5
  92. package/dist/native/foldable/fold-state.d.ts.map +0 -1
  93. package/dist/native/foldable/fold-state.js +0 -14
  94. package/dist/native/foldable/fold-state.js.map +0 -1
  95. package/dist/native/foldable/types.d.ts +0 -12
  96. package/dist/native/foldable/types.d.ts.map +0 -1
  97. package/dist/native/foldable/types.js +0 -0
  98. package/dist/native/index.d.ts +0 -11
  99. package/dist/native/index.d.ts.map +0 -1
  100. package/dist/native/index.js +0 -242
  101. package/dist/native/index.js.map +0 -1
  102. package/dist/native/prehide.d.ts +0 -7
  103. package/dist/native/prehide.d.ts.map +0 -1
  104. package/dist/native/prehide.js +0 -230
  105. package/dist/native/prehide.js.map +0 -1
  106. package/dist/native/runtime.d.ts +0 -5
  107. package/dist/native/runtime.d.ts.map +0 -1
  108. package/dist/native/runtime.js +0 -640
  109. package/dist/native/runtime.js.map +0 -1
  110. package/dist/native/shared/candidate.d.ts +0 -21
  111. package/dist/native/shared/candidate.d.ts.map +0 -1
  112. package/dist/native/shared/candidate.js +0 -98
  113. package/dist/native/shared/candidate.js.map +0 -1
  114. package/dist/native/shared/crossfade.d.ts +0 -10
  115. package/dist/native/shared/crossfade.d.ts.map +0 -1
  116. package/dist/native/shared/crossfade.js +0 -50
  117. package/dist/native/shared/crossfade.js.map +0 -1
  118. package/dist/native/shared/dom.d.ts +0 -46
  119. package/dist/native/shared/dom.d.ts.map +0 -1
  120. package/dist/native/shared/dom.js +0 -172
  121. package/dist/native/shared/dom.js.map +0 -1
  122. package/dist/native/shared/events.d.ts +0 -11
  123. package/dist/native/shared/events.d.ts.map +0 -1
  124. package/dist/native/shared/events.js +0 -13
  125. package/dist/native/shared/events.js.map +0 -1
  126. package/dist/native/shared/icons.d.ts +0 -8
  127. package/dist/native/shared/icons.d.ts.map +0 -1
  128. package/dist/native/shared/icons.js +0 -61
  129. package/dist/native/shared/icons.js.map +0 -1
  130. package/dist/native/shared/modal.d.ts +0 -10
  131. package/dist/native/shared/modal.d.ts.map +0 -1
  132. package/dist/native/shared/modal.js +0 -160
  133. package/dist/native/shared/modal.js.map +0 -1
  134. package/dist/native/vertical-bars-web-search.d.ts +0 -9
  135. package/dist/native/vertical-bars-web-search.d.ts.map +0 -1
  136. package/dist/native/vertical-bars-web-search.js +0 -84
  137. package/dist/native/vertical-bars-web-search.js.map +0 -1
  138. package/dist/native/vertical-bars-web.d.ts +0 -5
  139. package/dist/native/vertical-bars-web.d.ts.map +0 -1
  140. package/dist/native/vertical-bars-web.js +0 -341
  141. package/dist/native/vertical-bars-web.js.map +0 -1
  142. package/dist/native-integration/index.d.ts +0 -23
  143. package/dist/native-integration/index.d.ts.map +0 -1
  144. package/dist/native-integration/index.js.map +0 -1
  145. package/dist/native-integration/transition.d.ts +0 -5
  146. package/dist/native-integration/transition.d.ts.map +0 -1
  147. package/dist/native-integration/transition.js +0 -16
  148. package/dist/native-integration/transition.js.map +0 -1
  149. package/dist/vertical-bars.d.ts +0 -5
  150. package/dist/vertical-bars.js +0 -4
  151. package/docs/e2e-testing.md +0 -51
  152. package/docs/feedback.md +0 -65
  153. package/docs/iphone-duo-with-original-theme.md +0 -158
  154. package/docs/native-ui-shell.md +0 -285
  155. package/docs/vertical-bars.md +0 -285
  156. package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellButton.swift +0 -71
  157. package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellButtons.swift +0 -24
  158. package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellComponents.swift +0 -18
  159. package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellFab.swift +0 -83
  160. package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellSearchController.swift +0 -432
  161. package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellSegment.swift +0 -91
  162. package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellTabBar.swift +0 -221
  163. package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellVerticalBars.swift +0 -437
  164. package/ios/Sources/IonicNativeUIShellPlugin/Components/ShellVerticalSearch.swift +0 -118
  165. package/ios/Sources/IonicNativeUIShellPlugin/IonicNativeUIShellPlugin.swift +0 -396
  166. package/ios/Sources/IonicNativeUIShellPlugin/Shared/ShellCrossfade.swift +0 -35
  167. package/ios/Sources/IonicNativeUIShellPlugin/Shared/ShellHost.swift +0 -8
  168. package/ios/Sources/IonicNativeUIShellPlugin/Shared/ShellRendering.swift +0 -27
  169. package/ios/Sources/IonicNativeUIShellPlugin/Shared/ShellSnapshot.swift +0 -135
  170. package/ios/Tests/IonicNativeUIShellPluginTests/ShellSnapshotTests.swift +0 -650
  171. package/src/native/components/index.ts +0 -53
  172. package/src/native/components/ion-back-button.ts +0 -19
  173. package/src/native/components/ion-button.ts +0 -24
  174. package/src/native/components/ion-buttons.ts +0 -38
  175. package/src/native/components/ion-fab.ts +0 -151
  176. package/src/native/components/ion-menu-button.ts +0 -24
  177. package/src/native/components/ion-segment.ts +0 -27
  178. package/src/native/components/ion-tab-bar.ts +0 -50
  179. package/src/native/components/searchable-tabs.ts +0 -459
  180. package/src/native/definitions.ts +0 -191
  181. package/src/native/foldable/fold-state.ts +0 -9
  182. package/src/native/foldable/types.ts +0 -4
  183. package/src/native/index.ts +0 -281
  184. package/src/native/prehide.ts +0 -265
  185. package/src/native/runtime.ts +0 -781
  186. package/src/native/shared/candidate.ts +0 -150
  187. package/src/native/shared/crossfade.ts +0 -50
  188. package/src/native/shared/dom.ts +0 -286
  189. package/src/native/shared/events.ts +0 -8
  190. package/src/native/shared/icons.ts +0 -57
  191. package/src/native/shared/modal.ts +0 -157
  192. package/src/native/vertical-bars-web-search.ts +0 -80
  193. package/src/native/vertical-bars-web.ts +0 -411
  194. package/src/native-integration/transition.ts +0 -15
  195. package/src/vertical-bars.ts +0 -11
@@ -1,135 +0,0 @@
1
- import Foundation
2
- import CoreGraphics
3
-
4
- enum ShellComponent: String, Decodable {
5
- case button = "ion-button", buttons = "ion-buttons"
6
- case backButton = "ion-back-button", menuButton = "ion-menu-button"
7
- case tabBar = "ion-tab-bar", segment = "ion-segment", fab = "ion-fab"
8
- }
9
-
10
- struct ShellSnapshot: Decodable {
11
- let revision: Int
12
- let transitionDuration: Double?
13
- let viewportWidth: Double
14
- let verticalBarFrame: ShellFrame?
15
- let verticalBarEdge: String?
16
- let controls: [ShellControl]
17
-
18
- var isValid: Bool {
19
- revision >= 0 && (transitionDuration.map { $0.isFinite && $0 >= 0 && $0 <= 500 } ?? true) && viewportWidth.isFinite && viewportWidth > 0 && controls.count <= 100 &&
20
- (verticalBarFrame.map { $0.isValid } ?? true) &&
21
- (verticalBarEdge == nil || verticalBarEdge == "left" || verticalBarEdge == "right") &&
22
- Set(controls.map(\.id)).count == controls.count && controls.allSatisfy(\.isValid)
23
- }
24
- }
25
-
26
- // Frames and content decode from the same flat wire object. Keeping them separate
27
- // lets FABs compare artwork without treating movement or visibility as new content.
28
- struct ShellFrame: Decodable, Equatable {
29
- let x: Double
30
- let y: Double
31
- let width: Double
32
- let height: Double
33
- var rect: CGRect { CGRect(x: x, y: y, width: width, height: height) }
34
- var isValid: Bool { [x, y, width, height].allSatisfy(\.isFinite) && width > 0 && height > 0 }
35
- }
36
-
37
- struct ShellControl: Decodable, Equatable {
38
- enum Placement: String, Decodable { case verticalBars = "vertical-bars" }
39
- enum ToolbarSlot: String, Decodable { case start, end }
40
- let id: String
41
- let kind: ShellComponent
42
- let placement: Placement?
43
- let toolbarSlot: ToolbarSlot?
44
- let frame: ShellFrame
45
- let items: [ShellItem]
46
- let dark: Bool
47
- let rtl: Bool
48
- let tabBarAnchor: ShellTabBar.Anchor?
49
- let search: ShellSearch?
50
-
51
- private enum CodingKeys: String, CodingKey { case id, kind, placement, toolbarSlot, items, dark, rtl, tabBarAnchor, search }
52
-
53
- init(from decoder: Decoder) throws {
54
- let values = try decoder.container(keyedBy: CodingKeys.self)
55
- id = try values.decode(String.self, forKey: .id)
56
- kind = try values.decode(ShellComponent.self, forKey: .kind)
57
- placement = try values.decodeIfPresent(Placement.self, forKey: .placement)
58
- toolbarSlot = try values.decodeIfPresent(ToolbarSlot.self, forKey: .toolbarSlot)
59
- frame = try ShellFrame(from: decoder)
60
- items = try values.decode([ShellItem].self, forKey: .items)
61
- dark = try values.decode(Bool.self, forKey: .dark)
62
- rtl = try values.decode(Bool.self, forKey: .rtl)
63
- tabBarAnchor = try values.decodeIfPresent(ShellTabBar.Anchor.self, forKey: .tabBarAnchor)
64
- search = try values.decodeIfPresent(ShellSearch.self, forKey: .search)
65
- }
66
-
67
- var isValid: Bool {
68
- ShellComponents.supported.contains(kind) && !id.isEmpty && frame.isValid && !items.isEmpty && items.count <= 30 &&
69
- (!ShellButton.kinds.contains(kind) || items.count == 1) &&
70
- (toolbarSlot == nil || (placement == .verticalBars && [.button, .buttons, .menuButton].contains(kind))) &&
71
- Set(items.map(\.id)).count == items.count && items.allSatisfy(\.isValid) &&
72
- (tabBarAnchor.map { kind == .tabBar && $0.isValid } ?? true) &&
73
- (search.map { kind == .tabBar && $0.isValid } ?? true)
74
- }
75
- }
76
-
77
- struct ShellItem: Decodable, Equatable {
78
- let frame: ShellFrame
79
- let content: ShellItemContent
80
- let visible: Bool?
81
- var id: String { content.id }
82
-
83
- private enum CodingKeys: String, CodingKey { case visible }
84
-
85
- init(from decoder: Decoder) throws {
86
- frame = try ShellFrame(from: decoder)
87
- content = try ShellItemContent(from: decoder)
88
- visible = try decoder.container(keyedBy: CodingKeys.self).decodeIfPresent(Bool.self, forKey: .visible)
89
- }
90
-
91
- var isValid: Bool { frame.isValid && content.isValid }
92
- }
93
-
94
- struct ShellBadge: Decodable, Equatable {
95
- let value: String
96
- let color: String
97
- let textColor: String
98
- }
99
-
100
- struct ShellItemContent: Decodable, Equatable {
101
- enum IconPosition: String, Decodable { case leading, trailing, top }
102
- enum ButtonFill: String, Decodable { case clear, solid, outline }
103
- let id: String
104
- var label: String
105
- let accessibilityLabel: String
106
- let disabled: Bool
107
- let selected: Bool
108
- let fontSize: Double
109
- let fontWeight: Double
110
- let color: String
111
- let buttonFill: ButtonFill?
112
- let backgroundColor: String?
113
- let borderColor: String?
114
- let borderWidth: CGFloat?
115
- let badge: ShellBadge?
116
- var icon: String?
117
- var iconWidth: Double?
118
- var iconHeight: Double?
119
- let iconPosition: IconPosition?
120
- let imagePadding: Double?
121
- let contentInsetLeading: Double?
122
- let contentInsetTrailing: Double?
123
- let iconTemplate: Bool?
124
- let closeIcon: String?
125
- let closeIconWidth: Double?
126
- let closeIconHeight: Double?
127
- let iconTransition: Double?
128
-
129
- var isValid: Bool {
130
- !id.isEmpty && fontSize.isFinite && fontSize >= 0 && fontWeight.isFinite &&
131
- [iconWidth, iconHeight, closeIconWidth, closeIconHeight].compactMap { $0 }.allSatisfy { $0.isFinite && $0 > 0 } &&
132
- [imagePadding, contentInsetLeading, contentInsetTrailing].compactMap { $0 }.allSatisfy { $0.isFinite } &&
133
- (iconTransition.map { $0.isFinite && $0 >= 0 } ?? true)
134
- }
135
- }