pytech-ui 1.0.30 → 1.0.32

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 (243) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +40 -40
  3. package/android/.gradle/buildOutputCleanup/cache.properties +2 -2
  4. package/android/.gradle/nb-cache/trust/8732A504261C070E1F639E78DF65F8E6DC6FFC865B3D7178A7609BB57105805F +1 -1
  5. package/android/build.gradle +48 -47
  6. package/android/src/main/AndroidManifest.xml +2 -2
  7. package/android/src/main/java/expo/modules/pytechui/Dialog.kt +39 -39
  8. package/android/src/main/java/expo/modules/pytechui/ForEach/ForEachRecords.kt +23 -23
  9. package/android/src/main/java/expo/modules/pytechui/ForEach/index.kt +82 -82
  10. package/android/src/main/java/expo/modules/pytechui/Gradient/GradientView.kt +124 -124
  11. package/android/src/main/java/expo/modules/pytechui/Icon/index.kt +36 -36
  12. package/android/src/main/java/expo/modules/pytechui/Icon/utils.kt +42 -42
  13. package/android/src/main/java/expo/modules/pytechui/ListItem/Data/ListItemDataRecords.kt +84 -84
  14. package/android/src/main/java/expo/modules/pytechui/ListItem/Data/ListItemFromData.kt +127 -127
  15. package/android/src/main/java/expo/modules/pytechui/ListItem/Slots/ListItemFromSlots.kt +60 -60
  16. package/android/src/main/java/expo/modules/pytechui/ListItem/Slots/types.kt +42 -42
  17. package/android/src/main/java/expo/modules/pytechui/ListItem/_shared/Decorator/Decorator.kt +79 -79
  18. package/android/src/main/java/expo/modules/pytechui/ListItem/_shared/Decorator/Divider.kt +36 -36
  19. package/android/src/main/java/expo/modules/pytechui/ListItem/_shared/Decorator/utilsDecorator.kt +19 -19
  20. package/android/src/main/java/expo/modules/pytechui/ListItem/_shared/Dynamic/Dynamic.kt +163 -163
  21. package/android/src/main/java/expo/modules/pytechui/ListItem/_shared/Dynamic/Row.kt +136 -136
  22. package/android/src/main/java/expo/modules/pytechui/Navigation/NavigationWrapperView.kt +80 -0
  23. package/android/src/main/java/expo/modules/pytechui/PytechUiModifiers.kt +93 -93
  24. package/android/src/main/java/expo/modules/pytechui/PytechUiModule.kt +186 -168
  25. package/android/src/main/java/expo/modules/pytechui/SearchBar.kt +213 -213
  26. package/android/src/main/java/expo/modules/pytechui/Section/SectionHost.kt +81 -81
  27. package/android/src/main/java/expo/modules/pytechui/Section/SectionHostView.kt +65 -65
  28. package/android/src/main/java/expo/modules/pytechui/TextField.kt +251 -251
  29. package/android/src/main/java/expo/modules/pytechui/TypographySlot/TypographySlotBridge.kt +120 -120
  30. package/android/src/main/java/expo/modules/pytechui/TypographySlot/constants.kt +47 -47
  31. package/android/src/main/java/expo/modules/pytechui/extended-theme/ExtendedThemeView.kt +19 -19
  32. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Colors/ExtendedColorBridge.kt +76 -76
  33. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Constants/Constants.kt +10 -10
  34. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/AppBarLargeFlexibleTokens.kt +20 -20
  35. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/AppBarLargeTokens.kt +19 -19
  36. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/AppBarMediumFlexibleTokens.kt +20 -20
  37. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/AppBarMediumTokens.kt +19 -19
  38. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/AppBarSmallTokens.kt +19 -19
  39. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/AppBarTokens.kt +23 -23
  40. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/AssistChipTokens.kt +25 -25
  41. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/BadgeTokens.kt +20 -20
  42. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/BaselineButtonTokens.kt +26 -26
  43. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/BottomAppBarTokens.kt +19 -19
  44. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ButtonGroupSmallTokens.kt +20 -20
  45. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ButtonLargeTokens.kt +24 -24
  46. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ButtonMediumTokens.kt +24 -24
  47. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ButtonSmallTokens.kt +24 -24
  48. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ButtonXLargeTokens.kt +24 -24
  49. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ButtonXSmallTokens.kt +24 -24
  50. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/CheckboxTokens.kt +35 -35
  51. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/CircularProgressIndicatorTokens.kt +25 -25
  52. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ConnectedButtonGroupSmallTokens.kt +21 -21
  53. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/DateInputModalTokens.kt +22 -22
  54. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/DatePickerModalTokens.kt +33 -33
  55. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/DialogTokens.kt +19 -19
  56. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/DividerTokens.kt +19 -19
  57. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/DockedToolbarTokens.kt +23 -23
  58. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/DragHandleTokens.kt +25 -25
  59. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ElevatedButtonTokens.kt +19 -19
  60. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ElevatedCardTokens.kt +20 -20
  61. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ElevationTokens.kt +24 -24
  62. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ExpressiveMotionTokens.kt +28 -28
  63. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ExtendedFabLargeTokens.kt +23 -23
  64. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ExtendedFabMediumTokens.kt +24 -24
  65. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ExtendedFabPrimaryTokens.kt +20 -20
  66. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ExtendedFabSmallTokens.kt +23 -23
  67. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FabBaselineTokens.kt +21 -21
  68. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FabLargeTokens.kt +21 -21
  69. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FabMediumTokens.kt +22 -22
  70. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FabMenuBaselineTokens.kt +28 -28
  71. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FabSmallTokens.kt +21 -21
  72. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FilledAutocompleteTokens.kt +31 -31
  73. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FilledButtonTokens.kt +19 -19
  74. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FilledCardTokens.kt +20 -20
  75. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FilledIconButtonTokens.kt +18 -18
  76. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FilledTextFieldTokens.kt +31 -31
  77. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FilledTonalButtonTokens.kt +23 -23
  78. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FilledTonalIconButtonTokens.kt +18 -18
  79. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FilterChipTokens.kt +28 -28
  80. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/FloatingToolbarTokens.kt +23 -23
  81. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/IconButtonTokens.kt +17 -17
  82. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/InputChipTokens.kt +30 -30
  83. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/LargeIconButtonTokens.kt +27 -27
  84. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/LinearProgressIndicatorTokens.kt +28 -28
  85. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ListTokens.kt +57 -57
  86. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/LoadingIndicatorTokens.kt +21 -21
  87. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/MediumIconButtonTokens.kt +27 -27
  88. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/MotionTokens.kt +44 -44
  89. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationBarHorizontalItemTokens.kt +22 -22
  90. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationBarTokens.kt +23 -23
  91. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationBarVerticalItemTokens.kt +22 -22
  92. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationDrawerTokens.kt +23 -23
  93. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationRailBaselineItemTokens.kt +25 -25
  94. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationRailCollapsedTokens.kt +23 -23
  95. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationRailExpandedTokens.kt +22 -22
  96. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationRailHorizontalItemTokens.kt +24 -24
  97. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/NavigationRailVerticalItemTokens.kt +24 -24
  98. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/OutlinedAutocompleteTokens.kt +30 -30
  99. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/OutlinedButtonTokens.kt +19 -19
  100. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/OutlinedCardTokens.kt +21 -21
  101. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/OutlinedIconButtonTokens.kt +18 -18
  102. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/OutlinedSegmentedButtonTokens.kt +24 -24
  103. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/OutlinedTextFieldTokens.kt +31 -31
  104. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/PrimaryNavigationTabTokens.kt +24 -24
  105. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/RadioButtonTokens.kt +22 -22
  106. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ScrimTokens.kt +17 -17
  107. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SearchBarTokens.kt +20 -20
  108. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SearchViewTokens.kt +20 -20
  109. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SecondaryNavigationTabTokens.kt +21 -21
  110. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SegmentedMenuTokens.kt +42 -42
  111. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/ShapeTokens.kt +74 -74
  112. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SheetBottomTokens.kt +20 -20
  113. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SliderTokens.kt +39 -39
  114. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SmallIconButtonTokens.kt +27 -27
  115. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SnackbarTokens.kt +21 -21
  116. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SplitButtonLargeTokens.kt +26 -26
  117. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SplitButtonMediumTokens.kt +26 -26
  118. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SplitButtonSmallTokens.kt +26 -26
  119. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SplitButtonXLargeTokens.kt +26 -26
  120. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SplitButtonXSmallTokens.kt +27 -27
  121. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/StandardMenuTokens.kt +25 -25
  122. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/StandardMotionTokens.kt +27 -27
  123. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/StateTokens.kt +20 -20
  124. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SuggestionChipTokens.kt +25 -25
  125. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/SwitchTokens.kt +37 -37
  126. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/TextButtonTokens.kt +18 -18
  127. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/TimeInputTokens.kt +24 -24
  128. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/TimePickerTokens.kt +30 -30
  129. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/TonalButtonTokens.kt +19 -19
  130. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/TypeScaleTokens.kt +72 -72
  131. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/VibrantMenuTokens.kt +26 -26
  132. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/XLargeIconButtonTokens.kt +27 -27
  133. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/assets/XSmallIconButtonTokens.kt +27 -27
  134. package/android/src/main/java/expo/modules/pytechui/extended-theme/assets/Tokens/index.kt +216 -216
  135. package/android/src/main/java/expo/modules/pytechui/extended-theme/index.kt +38 -38
  136. package/android/src/main/java/expo/modules/pytechui/utils/children.kt +126 -126
  137. package/android/src/main/java/expo/modules/pytechui/utils/modifiers.kt +44 -44
  138. package/build/constants/utils.d.ts +1 -1
  139. package/build/contexts/alert/components/Alert/index.js +16 -16
  140. package/build/contexts/alert/components/Button/index.js +5 -5
  141. package/build/contexts/alert/components/Provider/index.ios.js +2 -2
  142. package/build/contexts/alert/components/Provider/index.js +3 -3
  143. package/build/contexts/alert/context/provider.d.ts +1 -1
  144. package/build/contexts/alert/context/provider.js +1 -1
  145. package/build/contexts/app/context.d.ts +1 -1
  146. package/build/contexts/app/context.js +15 -15
  147. package/build/contexts/app/index.d.ts +2 -2
  148. package/build/contexts/app/index.js +2 -2
  149. package/build/contexts/app/src/Head/index.d.ts +1 -1
  150. package/build/contexts/app/src/Head/index.web.js +12 -12
  151. package/build/contexts/app/src/Wrapper/index.d.ts +1 -1
  152. package/build/contexts/app/src/Wrapper/index.js +2 -2
  153. package/build/contexts/app/src/styles.css +16 -16
  154. package/build/contexts/app/types.d.ts +1 -1
  155. package/build/contexts/router/index.d.ts +1 -1
  156. package/build/contexts/router/index.js +3 -3
  157. package/build/jetpack-compose/components/Columns/CommonColumn/index.js +2 -2
  158. package/build/jetpack-compose/components/Columns/CommonColumn/types.d.ts +1 -1
  159. package/build/jetpack-compose/components/Columns/CommonColumn/utils.d.ts +1 -1
  160. package/build/jetpack-compose/components/Columns/CommonColumn/utils.js +1 -1
  161. package/build/jetpack-compose/components/DropdownMenu/index.d.ts +1 -1
  162. package/build/jetpack-compose/components/DropdownMenu/index.js +3 -3
  163. package/build/jetpack-compose/components/DropdownPicker/Picker.d.ts +3 -3
  164. package/build/jetpack-compose/components/DropdownPicker/Picker.js +24 -24
  165. package/build/jetpack-compose/components/DropdownPicker/PickerItem.js +5 -5
  166. package/build/jetpack-compose/components/DropdownPicker/context.d.ts +4 -10
  167. package/build/jetpack-compose/components/ForEach/src/ForEach.d.ts +1 -1
  168. package/build/jetpack-compose/components/ForEach/src/ForEach.js +5 -5
  169. package/build/jetpack-compose/components/ForEach/src/ListItem.d.ts +1 -1
  170. package/build/jetpack-compose/components/ForEach/src/types.d.ts +1 -1
  171. package/build/jetpack-compose/components/Gradient/Gradient.js +1 -1
  172. package/build/jetpack-compose/components/Gradient/types.d.ts +1 -1
  173. package/build/jetpack-compose/components/Host.d.ts +4 -3
  174. package/build/jetpack-compose/components/Host.js +6 -2
  175. package/build/jetpack-compose/components/Icon/Icon/Icon.js +1 -1
  176. package/build/jetpack-compose/components/Icon/index.d.ts +1 -1
  177. package/build/jetpack-compose/components/IconSection/IconSection.js +19 -19
  178. package/build/jetpack-compose/components/IconSection/types.d.ts +1 -1
  179. package/build/jetpack-compose/components/IconSection/utils.js +1 -1
  180. package/build/jetpack-compose/components/List/CommonColumn.js +3 -3
  181. package/build/jetpack-compose/components/List/index.d.ts +1 -1
  182. package/build/jetpack-compose/components/List/index.js +11 -11
  183. package/build/jetpack-compose/components/ListItem/SlotListItem.d.ts +2 -2
  184. package/build/jetpack-compose/components/ListItem/SlotListItem.js +9 -9
  185. package/build/jetpack-compose/components/Menu/src/components/Divider.js +2 -2
  186. package/build/jetpack-compose/components/Menu/src/components/Icon.d.ts +1 -1
  187. package/build/jetpack-compose/components/Menu/src/components/Icon.js +1 -1
  188. package/build/jetpack-compose/components/Menu/src/components/Item.d.ts +2 -3
  189. package/build/jetpack-compose/components/Menu/src/components/Item.js +26 -26
  190. package/build/jetpack-compose/components/Menu/src/components/Label.d.ts +4 -1
  191. package/build/jetpack-compose/components/Menu/src/components/Label.js +3 -3
  192. package/build/jetpack-compose/components/Menu/src/components/Menu.d.ts +2 -2
  193. package/build/jetpack-compose/components/Menu/src/components/Menu.js +26 -26
  194. package/build/jetpack-compose/components/Menu/src/components/Trigger.js +7 -7
  195. package/build/jetpack-compose/components/Menu/src/context.d.ts +8 -6
  196. package/build/jetpack-compose/components/Menu/src/utils.js +3 -3
  197. package/build/jetpack-compose/components/NavigationButton.d.ts +7 -0
  198. package/build/jetpack-compose/components/NavigationButton.js +16 -0
  199. package/build/jetpack-compose/components/NavigationWrapper.d.ts +10 -0
  200. package/build/jetpack-compose/components/NavigationWrapper.js +16 -0
  201. package/build/jetpack-compose/components/PagePicker/Item.js +11 -11
  202. package/build/jetpack-compose/components/PagePicker/Picker.js +5 -5
  203. package/build/jetpack-compose/components/PagePicker/context/index.d.ts +1 -1
  204. package/build/jetpack-compose/components/PagePicker/context/index.js +8 -8
  205. package/build/jetpack-compose/components/PullToRefreshBox.js +1 -1
  206. package/build/jetpack-compose/components/SearchBar.d.ts +1 -1
  207. package/build/jetpack-compose/components/SearchBar.js +1 -1
  208. package/build/jetpack-compose/components/Section/components/Column.d.ts +1 -1
  209. package/build/jetpack-compose/components/Section/components/Column.js +3 -3
  210. package/build/jetpack-compose/components/Section/components/Section.js +18 -18
  211. package/build/jetpack-compose/components/Section/components/Slot.d.ts +1 -1
  212. package/build/jetpack-compose/components/Section/components/Slot.js +3 -3
  213. package/build/jetpack-compose/components/SectionHost/index.d.ts +1 -1
  214. package/build/jetpack-compose/components/SectionHost/index.js +3 -3
  215. package/build/jetpack-compose/components/TextField.d.ts +1 -1
  216. package/build/jetpack-compose/components/TextField.js +1 -1
  217. package/build/jetpack-compose/components/TextSlot.js +2 -3
  218. package/build/jetpack-compose/extended-theme/assets/Colors/index.js +2 -2
  219. package/build/jetpack-compose/index.d.ts +2 -0
  220. package/build/jetpack-compose/index.js +2 -0
  221. package/build/jetpack-compose/modifiers/flexWeight.d.ts +1 -1
  222. package/build/jetpack-compose/modifiers/heightIn.d.ts +1 -1
  223. package/build/swift-ui/Image.js +2 -2
  224. package/build/swift-ui/ListItem.js +2 -2
  225. package/build/swift-ui/Slot.js +2 -2
  226. package/build/swift-ui/Text.js +2 -2
  227. package/build/universal/Column/index.android.js +2 -2
  228. package/build/universal/Column/index.ios.js +2 -2
  229. package/build/universal/Column/index.js +2 -2
  230. package/build/universal/Host/index.ios.js +2 -2
  231. package/build/universal/Row/index.android.js +2 -2
  232. package/build/universal/Row/index.ios.js +2 -2
  233. package/build/universal/Row/index.js +2 -2
  234. package/expo-module.config.json +11 -11
  235. package/ios/ChevronForwardView.swift +21 -21
  236. package/ios/GradientView.swift +40 -40
  237. package/ios/ImageView.swift +32 -32
  238. package/ios/ListItem.swift +161 -161
  239. package/ios/PytechUi.podspec +24 -24
  240. package/ios/PytechUiModule.swift +15 -15
  241. package/ios/SlotView.swift +107 -107
  242. package/ios/_shared/utils.swift +58 -58
  243. package/package.json +19 -15
@@ -1,161 +1,161 @@
1
- import SwiftUI
2
- import ExpoModulesCore
3
- import ExpoUI
4
-
5
- struct ListItemInsetsRecord: Record {
6
- @Field var horizontal: Double?
7
- @Field var vertical: Double?
8
- @Field var top: Double?
9
- @Field var bottom: Double?
10
- @Field var leading: Double?
11
- @Field var trailing: Double?
12
- }
13
-
14
- extension ListItemInsetsRecord: ListRowInsetsProviding {}
15
-
16
- enum ListItemButtonRole: String, Enumerable {
17
- case cancel
18
- case destructive
19
-
20
- var swiftUIRole: SwiftUI.ButtonRole {
21
- switch self {
22
- case .cancel:
23
- return .cancel
24
- case .destructive:
25
- return .destructive
26
- }
27
- }
28
- }
29
-
30
- public final class ListItemViewProps: UIBaseViewProps {
31
- @Field var hasNavigationLink: Bool = false
32
- @Field var insets: ListItemInsetsRecord?
33
- @Field var hasOnPress: Bool = false
34
- @Field var buttonRole: ListItemButtonRole?
35
- var onListItemPress = EventDispatcher()
36
- }
37
-
38
- struct ListItemView: ExpoSwiftUI.View {
39
- @ObservedObject var props: ListItemViewProps
40
-
41
- // Si se le pasan insets, y tiene una versión mínima de iOS 26, se aplican al item
42
- var body: some View {
43
- if #available(iOS 26.0, *) {
44
- applyInsets(to: pressableRowContent)
45
- } else {
46
- pressableRowContent
47
- }
48
- }
49
-
50
- // Si se le envia un onPress sin navigation link, se coloca un Button sobre toda la row.
51
- @ViewBuilder
52
- private var pressableRowContent: some View {
53
- if props.hasOnPress && !props.hasNavigationLink {
54
- listItemButton {
55
- rowContent
56
- }
57
- } else {
58
- rowContent
59
- }
60
- }
61
-
62
- @ViewBuilder
63
- private var rowContent: some View {
64
- if props.children?.slot("trailingContent") != nil || props.hasNavigationLink {
65
- HStack {
66
- if props.hasOnPress && props.hasNavigationLink {
67
- SwiftUI.Button(action: {
68
- props.onListItemPress()
69
- }){
70
- mainLabel
71
- }
72
- .foregroundStyle(.primary)
73
- }
74
-
75
- Spacer()
76
-
77
- slotContent(in: props.children, named: "trailingContent", secondary: true)
78
-
79
- if props.hasNavigationLink {
80
- ChevronForward()
81
- }
82
- }
83
- } else {
84
- mainLabel
85
- }
86
- }
87
-
88
- // Es para aplicar los insets al item. Los ejes se aplican primero; top/bottom/leading/trailing los sobrescriben.
89
- @available(iOS 26.0, *)
90
- @ViewBuilder
91
- private func applyInsets(to content: some View) -> some View {
92
- if let insets = props.insets {
93
- applyEdgeInsets(to: content, insets: insets)
94
- } else {
95
- content
96
- }
97
- }
98
-
99
- // Button con role aplicado.
100
- @ViewBuilder
101
- private func listItemButton<Label: View>(@ViewBuilder label: () -> Label) -> some View {
102
- if let buttonRole = props.buttonRole {
103
- Button(role: buttonRole.swiftUIRole) {
104
- props.onListItemPress()
105
- } label: {
106
- label()
107
- }
108
- } else {
109
- Button {
110
- props.onListItemPress()
111
- } label: {
112
- label()
113
- }
114
- }
115
- }
116
-
117
- // Renderiza el leading, headline y supporting content.
118
- @ViewBuilder
119
- private var mainLabel: some View {
120
- let leading = props.children?.slot("leadingContent")
121
- let hasImage = leading?.props.children?.slot("image") != nil
122
-
123
- if let leading {
124
- if hasImage {
125
- Label {
126
- titleContent // Label ya apila título + subtítulo
127
- } icon: {
128
- leading.foregroundStyle(.blue)
129
- }
130
- } else {
131
- HStack {
132
- leading
133
- alignedTitleContent
134
- }
135
- }
136
- } else {
137
- alignedTitleContent
138
- }
139
- }
140
-
141
- // Se fija si tiene que llevar un VStack o no.
142
- @ViewBuilder
143
- private var alignedTitleContent: some View {
144
- let hasSupporting = props.children?.slot("supportingContent") != nil
145
-
146
- if hasSupporting {
147
- VStack(alignment: .leading) {
148
- titleContent
149
- }
150
- } else {
151
- slotContent(in: props.children, named: "headlineContent")
152
- }
153
- }
154
-
155
- // Renderiza el headline y supporting content dentro de Label o VStack.
156
- @ViewBuilder
157
- private var titleContent: some View {
158
- slotContent(in: props.children, named: "headlineContent")
159
- slotContent(in: props.children, named: "supportingContent", font: .subheadline, secondary: true)
160
- }
161
- }
1
+ import SwiftUI
2
+ import ExpoModulesCore
3
+ import ExpoUI
4
+
5
+ struct ListItemInsetsRecord: Record {
6
+ @Field var horizontal: Double?
7
+ @Field var vertical: Double?
8
+ @Field var top: Double?
9
+ @Field var bottom: Double?
10
+ @Field var leading: Double?
11
+ @Field var trailing: Double?
12
+ }
13
+
14
+ extension ListItemInsetsRecord: ListRowInsetsProviding {}
15
+
16
+ enum ListItemButtonRole: String, Enumerable {
17
+ case cancel
18
+ case destructive
19
+
20
+ var swiftUIRole: SwiftUI.ButtonRole {
21
+ switch self {
22
+ case .cancel:
23
+ return .cancel
24
+ case .destructive:
25
+ return .destructive
26
+ }
27
+ }
28
+ }
29
+
30
+ public final class ListItemViewProps: UIBaseViewProps {
31
+ @Field var hasNavigationLink: Bool = false
32
+ @Field var insets: ListItemInsetsRecord?
33
+ @Field var hasOnPress: Bool = false
34
+ @Field var buttonRole: ListItemButtonRole?
35
+ var onListItemPress = EventDispatcher()
36
+ }
37
+
38
+ struct ListItemView: ExpoSwiftUI.View {
39
+ @ObservedObject var props: ListItemViewProps
40
+
41
+ // Si se le pasan insets, y tiene una versión mínima de iOS 26, se aplican al item
42
+ var body: some View {
43
+ if #available(iOS 26.0, *) {
44
+ applyInsets(to: pressableRowContent)
45
+ } else {
46
+ pressableRowContent
47
+ }
48
+ }
49
+
50
+ // Si se le envia un onPress sin navigation link, se coloca un Button sobre toda la row.
51
+ @ViewBuilder
52
+ private var pressableRowContent: some View {
53
+ if props.hasOnPress && !props.hasNavigationLink {
54
+ listItemButton {
55
+ rowContent
56
+ }
57
+ } else {
58
+ rowContent
59
+ }
60
+ }
61
+
62
+ @ViewBuilder
63
+ private var rowContent: some View {
64
+ if props.children?.slot("trailingContent") != nil || props.hasNavigationLink {
65
+ HStack {
66
+ if props.hasOnPress && props.hasNavigationLink {
67
+ SwiftUI.Button(action: {
68
+ props.onListItemPress()
69
+ }){
70
+ mainLabel
71
+ }
72
+ .foregroundStyle(.primary)
73
+ }
74
+
75
+ Spacer()
76
+
77
+ slotContent(in: props.children, named: "trailingContent", secondary: true)
78
+
79
+ if props.hasNavigationLink {
80
+ ChevronForward()
81
+ }
82
+ }
83
+ } else {
84
+ mainLabel
85
+ }
86
+ }
87
+
88
+ // Es para aplicar los insets al item. Los ejes se aplican primero; top/bottom/leading/trailing los sobrescriben.
89
+ @available(iOS 26.0, *)
90
+ @ViewBuilder
91
+ private func applyInsets(to content: some View) -> some View {
92
+ if let insets = props.insets {
93
+ applyEdgeInsets(to: content, insets: insets)
94
+ } else {
95
+ content
96
+ }
97
+ }
98
+
99
+ // Button con role aplicado.
100
+ @ViewBuilder
101
+ private func listItemButton<Label: View>(@ViewBuilder label: () -> Label) -> some View {
102
+ if let buttonRole = props.buttonRole {
103
+ Button(role: buttonRole.swiftUIRole) {
104
+ props.onListItemPress()
105
+ } label: {
106
+ label()
107
+ }
108
+ } else {
109
+ Button {
110
+ props.onListItemPress()
111
+ } label: {
112
+ label()
113
+ }
114
+ }
115
+ }
116
+
117
+ // Renderiza el leading, headline y supporting content.
118
+ @ViewBuilder
119
+ private var mainLabel: some View {
120
+ let leading = props.children?.slot("leadingContent")
121
+ let hasImage = leading?.props.children?.slot("image") != nil
122
+
123
+ if let leading {
124
+ if hasImage {
125
+ Label {
126
+ titleContent // Label ya apila título + subtítulo
127
+ } icon: {
128
+ leading.foregroundStyle(.blue)
129
+ }
130
+ } else {
131
+ HStack {
132
+ leading
133
+ alignedTitleContent
134
+ }
135
+ }
136
+ } else {
137
+ alignedTitleContent
138
+ }
139
+ }
140
+
141
+ // Se fija si tiene que llevar un VStack o no.
142
+ @ViewBuilder
143
+ private var alignedTitleContent: some View {
144
+ let hasSupporting = props.children?.slot("supportingContent") != nil
145
+
146
+ if hasSupporting {
147
+ VStack(alignment: .leading) {
148
+ titleContent
149
+ }
150
+ } else {
151
+ slotContent(in: props.children, named: "headlineContent")
152
+ }
153
+ }
154
+
155
+ // Renderiza el headline y supporting content dentro de Label o VStack.
156
+ @ViewBuilder
157
+ private var titleContent: some View {
158
+ slotContent(in: props.children, named: "headlineContent")
159
+ slotContent(in: props.children, named: "supportingContent", font: .subheadline, secondary: true)
160
+ }
161
+ }
@@ -1,24 +1,24 @@
1
- Pod::Spec.new do |s|
2
- s.name = 'PytechUi'
3
- s.version = '1.0.3'
4
- s.summary = 'Native SwiftUI components for pytech-ui'
5
- s.description = 'Native SwiftUI components for pytech-ui'
6
- s.author = 'Matias Tobias Gutierrez'
7
- s.homepage = 'https://github.com/MatiTobi/UI#readme'
8
- s.license = { :type => 'MIT' }
9
- s.platforms = {
10
- :ios => '16.4',
11
- :tvos => '16.4'
12
- }
13
- s.source = { git: 'https://github.com/MatiTobi/UI.git' }
14
- s.static_framework = true
15
-
16
- s.dependency 'ExpoModulesCore'
17
- s.dependency 'ExpoUI'
18
-
19
- s.pod_target_xcconfig = {
20
- 'DEFINES_MODULE' => 'YES',
21
- }
22
-
23
- s.source_files = '**/*.{h,m,mm,swift,hpp,cpp}'
24
- end
1
+ Pod::Spec.new do |s|
2
+ s.name = 'PytechUi'
3
+ s.version = '1.0.3'
4
+ s.summary = 'Native SwiftUI components for pytech-ui'
5
+ s.description = 'Native SwiftUI components for pytech-ui'
6
+ s.author = 'Matias Tobias Gutierrez'
7
+ s.homepage = 'https://github.com/MatiTobi/UI#readme'
8
+ s.license = { :type => 'MIT' }
9
+ s.platforms = {
10
+ :ios => '16.4',
11
+ :tvos => '16.4'
12
+ }
13
+ s.source = { git: 'https://github.com/MatiTobi/UI.git' }
14
+ s.static_framework = true
15
+
16
+ s.dependency 'ExpoModulesCore'
17
+ s.dependency 'ExpoUI'
18
+
19
+ s.pod_target_xcconfig = {
20
+ 'DEFINES_MODULE' => 'YES',
21
+ }
22
+
23
+ s.source_files = '**/*.{h,m,mm,swift,hpp,cpp}'
24
+ end
@@ -1,15 +1,15 @@
1
- import ExpoModulesCore
2
- import ExpoUI
3
-
4
- public class PytechUiModule: Module {
5
- public func definition() -> ModuleDefinition {
6
- Name("PytechUi")
7
-
8
- View(SlotView.self)
9
-
10
- ExpoUIView(ChevronForwardView.self)
11
- ExpoUIView(GradientView.self)
12
- ExpoUIView(ImageView.self)
13
- ExpoUIView(ListItemView.self)
14
- }
15
- }
1
+ import ExpoModulesCore
2
+ import ExpoUI
3
+
4
+ public class PytechUiModule: Module {
5
+ public func definition() -> ModuleDefinition {
6
+ Name("PytechUi")
7
+
8
+ View(SlotView.self)
9
+
10
+ ExpoUIView(ChevronForwardView.self)
11
+ ExpoUIView(GradientView.self)
12
+ ExpoUIView(ImageView.self)
13
+ ExpoUIView(ListItemView.self)
14
+ }
15
+ }
@@ -1,107 +1,107 @@
1
- import SwiftUI
2
- import ExpoModulesCore
3
- import ExpoUI
4
-
5
-
6
-
7
- internal final class SlotViewProps: ExpoSwiftUI.ViewProps {
8
- @Field var name: String = ""
9
- @Field var extraProps: [String: Any]?
10
- }
11
-
12
- internal struct SlotView: ExpoSwiftUI.View {
13
- @ObservedObject var props: SlotViewProps
14
-
15
- init(props: SlotViewProps) {
16
- self.props = props
17
- }
18
-
19
- var body: some View {
20
- Children()
21
- }
22
-
23
- func extra<T>(_ key: String, as type: T.Type = T.self) -> T? {
24
- return props.extraProps?[key] as? T
25
- }
26
- }
27
-
28
- extension [any ExpoSwiftUI.AnyChild] {
29
- func slot(_ name: String) -> SlotView? {
30
- compactMap { $0.childView as? SlotView }
31
- .first { $0.props.name == name }
32
- }
33
-
34
- func withoutSlot(_ name: String) -> [any ExpoSwiftUI.AnyChild] {
35
- filter {
36
- guard let slot = $0.childView as? SlotView else { return true }
37
- return slot.props.name != name
38
- }
39
- }
40
-
41
- func withoutSlots() -> [any ExpoSwiftUI.AnyChild] {
42
- filter { !($0.childView is SlotView) }
43
- }
44
- }
45
-
46
-
47
- /**
48
- Le agrega una función para obtener el texto directo del slot.
49
- Esto es útil para los slots que contienen nuestro `<Text>` (slot "text" → TextView).
50
- Por ejemplo, si el slot contiene nuestro `<Text>` (slot "text" → TextView), devuelve el string.
51
- Si no, devuelve nil.
52
-
53
- Ejemplo:
54
- <Slot name="text">
55
- <Text>Hello</Text>
56
- </Slot>
57
- */
58
- extension SlotView {
59
- var isTextContent: Bool {
60
- props.children?.slot("text") != nil || textContent() != nil
61
- }
62
-
63
- @ViewBuilder
64
- func renderedContent(defaultFont: Font = .body, secondary: Bool = false) -> some View {
65
- if isTextContent {
66
- if let textSlot = props.children?.slot("text") {
67
- if secondary {
68
- textSlot
69
- .font(defaultFont)
70
- .foregroundStyle(.secondary)
71
- } else {
72
- textSlot
73
- }
74
- } else if secondary {
75
- self
76
- .font(defaultFont)
77
- .foregroundStyle(.secondary)
78
- } else {
79
- self
80
- }
81
- } else {
82
- self
83
- }
84
- }
85
-
86
- func textContent() -> String? {
87
- if let textSlot = props.children?.slot("text") {
88
- return textSlot.directTextContent()
89
- }
90
- return directTextContent()
91
- }
92
-
93
- fileprivate func directTextContent() -> String? {
94
- guard let children = props.children else { return nil }
95
-
96
- for child in children {
97
- if let textView = child.childView as? TextView {
98
- let text = textView.props.text
99
- if !text.isEmpty {
100
- return text
101
- }
102
- }
103
- }
104
-
105
- return nil
106
- }
107
- }
1
+ import SwiftUI
2
+ import ExpoModulesCore
3
+ import ExpoUI
4
+
5
+
6
+
7
+ internal final class SlotViewProps: ExpoSwiftUI.ViewProps {
8
+ @Field var name: String = ""
9
+ @Field var extraProps: [String: Any]?
10
+ }
11
+
12
+ internal struct SlotView: ExpoSwiftUI.View {
13
+ @ObservedObject var props: SlotViewProps
14
+
15
+ init(props: SlotViewProps) {
16
+ self.props = props
17
+ }
18
+
19
+ var body: some View {
20
+ Children()
21
+ }
22
+
23
+ func extra<T>(_ key: String, as type: T.Type = T.self) -> T? {
24
+ return props.extraProps?[key] as? T
25
+ }
26
+ }
27
+
28
+ extension [any ExpoSwiftUI.AnyChild] {
29
+ func slot(_ name: String) -> SlotView? {
30
+ compactMap { $0.childView as? SlotView }
31
+ .first { $0.props.name == name }
32
+ }
33
+
34
+ func withoutSlot(_ name: String) -> [any ExpoSwiftUI.AnyChild] {
35
+ filter {
36
+ guard let slot = $0.childView as? SlotView else { return true }
37
+ return slot.props.name != name
38
+ }
39
+ }
40
+
41
+ func withoutSlots() -> [any ExpoSwiftUI.AnyChild] {
42
+ filter { !($0.childView is SlotView) }
43
+ }
44
+ }
45
+
46
+
47
+ /**
48
+ Le agrega una función para obtener el texto directo del slot.
49
+ Esto es útil para los slots que contienen nuestro `<Text>` (slot "text" → TextView).
50
+ Por ejemplo, si el slot contiene nuestro `<Text>` (slot "text" → TextView), devuelve el string.
51
+ Si no, devuelve nil.
52
+
53
+ Ejemplo:
54
+ <Slot name="text">
55
+ <Text>Hello</Text>
56
+ </Slot>
57
+ */
58
+ extension SlotView {
59
+ var isTextContent: Bool {
60
+ props.children?.slot("text") != nil || textContent() != nil
61
+ }
62
+
63
+ @ViewBuilder
64
+ func renderedContent(defaultFont: Font = .body, secondary: Bool = false) -> some View {
65
+ if isTextContent {
66
+ if let textSlot = props.children?.slot("text") {
67
+ if secondary {
68
+ textSlot
69
+ .font(defaultFont)
70
+ .foregroundStyle(.secondary)
71
+ } else {
72
+ textSlot
73
+ }
74
+ } else if secondary {
75
+ self
76
+ .font(defaultFont)
77
+ .foregroundStyle(.secondary)
78
+ } else {
79
+ self
80
+ }
81
+ } else {
82
+ self
83
+ }
84
+ }
85
+
86
+ func textContent() -> String? {
87
+ if let textSlot = props.children?.slot("text") {
88
+ return textSlot.directTextContent()
89
+ }
90
+ return directTextContent()
91
+ }
92
+
93
+ fileprivate func directTextContent() -> String? {
94
+ guard let children = props.children else { return nil }
95
+
96
+ for child in children {
97
+ if let textView = child.childView as? TextView {
98
+ let text = textView.props.text
99
+ if !text.isEmpty {
100
+ return text
101
+ }
102
+ }
103
+ }
104
+
105
+ return nil
106
+ }
107
+ }