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,213 +1,213 @@
1
- @file:OptIn(ExperimentalMaterial3Api::class)
2
-
3
- package expo.modules.pytechui
4
-
5
- import androidx.activity.compose.BackHandler
6
- import androidx.compose.foundation.layout.Box
7
- import androidx.compose.foundation.layout.fillMaxWidth
8
- import androidx.compose.foundation.layout.height
9
- import androidx.compose.foundation.layout.offset
10
- import androidx.compose.foundation.layout.size
11
- import androidx.compose.foundation.relocation.BringIntoViewRequester
12
- import androidx.compose.foundation.relocation.bringIntoViewRequester
13
- import androidx.compose.foundation.text.input.rememberTextFieldState
14
- import androidx.compose.material.icons.Icons
15
- import androidx.compose.material.icons.rounded.ArrowBackIosNew
16
- import androidx.compose.material.icons.rounded.Clear
17
- import androidx.compose.material.icons.rounded.Search
18
- import androidx.compose.material3.ExperimentalMaterial3Api
19
- import androidx.compose.material3.Icon
20
- import androidx.compose.material3.IconButton
21
- import androidx.compose.material3.LocalTextStyle
22
- import androidx.compose.material3.SearchBarDefaults
23
- import androidx.compose.material3.Surface
24
- import androidx.compose.material3.Text
25
- import androidx.compose.runtime.Composable
26
- import androidx.compose.runtime.LaunchedEffect
27
- import androidx.compose.runtime.snapshotFlow
28
- import androidx.compose.runtime.getValue
29
- import androidx.compose.runtime.mutableStateOf
30
- import androidx.compose.runtime.remember
31
- import androidx.compose.runtime.rememberCoroutineScope
32
- import androidx.compose.runtime.setValue
33
- import androidx.compose.ui.Modifier
34
- import androidx.compose.ui.Alignment
35
- import androidx.compose.ui.focus.FocusRequester
36
- import androidx.compose.ui.focus.focusRequester
37
- import androidx.compose.ui.focus.onFocusChanged
38
- import androidx.compose.ui.graphics.Color
39
- import androidx.compose.ui.platform.LocalFocusManager
40
- import androidx.compose.ui.unit.dp
41
- import expo.modules.kotlin.views.ComposeProps
42
- import expo.modules.kotlin.views.FunctionalComposableScope
43
- import expo.modules.ui.ModifierList
44
- import kotlinx.coroutines.delay
45
- import kotlinx.coroutines.launch
46
-
47
- import expo.modules.pytechui.theme.tokens.SearchBarTokens
48
- import expo.modules.pytechui.theme.ExtendedTheme
49
-
50
- import java.io.Serializable
51
- import expo.modules.kotlin.records.Field
52
- import expo.modules.kotlin.records.Record
53
-
54
-
55
-
56
- data class SearchBarDismissEvent(
57
- @Field val dismissed: Boolean = true,
58
- ) : Record, Serializable
59
-
60
- data class SearchBarChangeTextEvent(
61
- @Field val text: String = "",
62
- ) : Record, Serializable
63
-
64
-
65
- /**
66
- * Campo de búsqueda con look de chip M3 (sin expandir a pantalla completa).
67
- */
68
- data class SearchBarProps(
69
- val placeholder: String? = null,
70
- val autoFocus: Boolean = false,
71
- /** Si es true, muestra ← clicable; si es false, muestra lupa decorativa. */
72
- val showBackButton: Boolean = true,
73
- val modifiers: ModifierList = emptyList(),
74
- ) : ComposeProps
75
-
76
- @Composable
77
- internal fun FunctionalComposableScope.SearchBarViewContent(
78
- props: SearchBarProps,
79
- onDismiss: () -> Unit = {},
80
- onChangeText: (String) -> Unit = {},
81
- ) {
82
- val textFieldState = rememberTextFieldState()
83
- val focusRequester = remember { FocusRequester() }
84
- val bringIntoViewRequester = remember { BringIntoViewRequester() }
85
- val scope = rememberCoroutineScope()
86
- val focusManager = LocalFocusManager.current
87
- var isFocused by remember { mutableStateOf(false) }
88
-
89
- val dismiss = {
90
- focusManager.clearFocus()
91
- onChangeText("")
92
- onDismiss()
93
- }
94
-
95
- if (props.autoFocus) {
96
- LaunchedEffect(Unit) {
97
- delay(150)
98
- runCatching { focusRequester.requestFocus() }
99
- }
100
- }
101
-
102
- BackHandler(enabled = props.showBackButton && isFocused) {
103
- dismiss()
104
- }
105
-
106
- LaunchedEffect(textFieldState) {
107
- try {
108
- snapshotFlow { textFieldState.text.toString() }.collect { text ->
109
- onChangeText(text)
110
- }
111
- } finally {
112
- onChangeText("")
113
- }
114
- }
115
-
116
- val labelColor = ExtendedTheme.colorScheme.label
117
- val placeholderColor = ExtendedTheme.colorScheme.placeholderText
118
- val fieldTextStyle = LocalTextStyle.current
119
-
120
- Surface(
121
- modifier = Modifier
122
- .fillMaxWidth()
123
- .height(SearchBarTokens.ContainerHeight),
124
- shape = SearchBarDefaults.inputFieldShape,
125
- color = ExtendedTheme.colorScheme.secondarySystemGroupedBackground,
126
-
127
- ) {
128
- SearchBarDefaults.InputField(
129
- state = textFieldState,
130
- onSearch = { focusManager.clearFocus() },
131
- expanded = false,
132
- onExpandedChange = { /* nunca expandir */ },
133
- textStyle = fieldTextStyle,
134
- placeholder = {
135
- val text = props.placeholder
136
- if (!text.isNullOrBlank()) {
137
- Text(
138
- text = text,
139
- style = fieldTextStyle,
140
- color = placeholderColor,
141
- )
142
- }
143
- },
144
- leadingIcon = {
145
- if (props.showBackButton) {
146
- IconButton(
147
- onClick = dismiss,
148
- ) {
149
- Icon(
150
- imageVector = Icons.Rounded.ArrowBackIosNew,
151
- contentDescription = "Volver",
152
- tint = labelColor,
153
- modifier = Modifier.size(20.dp),
154
- )
155
- }
156
- } else {
157
- Icon(
158
- imageVector = Icons.Rounded.Search,
159
- contentDescription = "Buscar",
160
- tint = labelColor,
161
- modifier = Modifier.size(24.dp),
162
- )
163
- }
164
- },
165
- trailingIcon = {
166
- if (textFieldState.text.isNotEmpty()) {
167
- IconButton(
168
- onClick = {
169
- textFieldState.edit {
170
- replace(0, length, "")
171
- }
172
- }
173
- ) {
174
- Icon(
175
- imageVector = Icons.Rounded.Clear,
176
- contentDescription = "Borrar",
177
- tint = labelColor,
178
- modifier = Modifier.size(24.dp),
179
- )
180
- }
181
- }
182
- },
183
- modifier = Modifier
184
- .fillMaxWidth()
185
- .focusRequester(focusRequester)
186
- .bringIntoViewRequester(bringIntoViewRequester)
187
- .onFocusChanged { focusState ->
188
- isFocused = focusState.isFocused
189
- if (focusState.isFocused) {
190
- scope.launch {
191
- delay(100)
192
- bringIntoViewRequester.bringIntoView()
193
- }
194
- }
195
- },
196
- shape = SearchBarDefaults.inputFieldShape,
197
- colors = SearchBarDefaults.inputFieldColors(
198
- focusedTextColor = labelColor,
199
- unfocusedTextColor = labelColor,
200
- focusedPlaceholderColor = placeholderColor,
201
- unfocusedPlaceholderColor = placeholderColor,
202
- focusedLeadingIconColor = labelColor,
203
- unfocusedLeadingIconColor = labelColor,
204
- focusedTrailingIconColor = labelColor,
205
- unfocusedTrailingIconColor = labelColor,
206
- cursorColor = ExtendedTheme.colorScheme.systemBlue,
207
- focusedContainerColor = Color.Transparent,
208
- unfocusedContainerColor = Color.Transparent,
209
- disabledContainerColor = Color.Transparent,
210
- ),
211
- )
212
- }
213
- }
1
+ @file:OptIn(ExperimentalMaterial3Api::class)
2
+
3
+ package expo.modules.pytechui
4
+
5
+ import androidx.activity.compose.BackHandler
6
+ import androidx.compose.foundation.layout.Box
7
+ import androidx.compose.foundation.layout.fillMaxWidth
8
+ import androidx.compose.foundation.layout.height
9
+ import androidx.compose.foundation.layout.offset
10
+ import androidx.compose.foundation.layout.size
11
+ import androidx.compose.foundation.relocation.BringIntoViewRequester
12
+ import androidx.compose.foundation.relocation.bringIntoViewRequester
13
+ import androidx.compose.foundation.text.input.rememberTextFieldState
14
+ import androidx.compose.material.icons.Icons
15
+ import androidx.compose.material.icons.rounded.ArrowBackIosNew
16
+ import androidx.compose.material.icons.rounded.Clear
17
+ import androidx.compose.material.icons.rounded.Search
18
+ import androidx.compose.material3.ExperimentalMaterial3Api
19
+ import androidx.compose.material3.Icon
20
+ import androidx.compose.material3.IconButton
21
+ import androidx.compose.material3.LocalTextStyle
22
+ import androidx.compose.material3.SearchBarDefaults
23
+ import androidx.compose.material3.Surface
24
+ import androidx.compose.material3.Text
25
+ import androidx.compose.runtime.Composable
26
+ import androidx.compose.runtime.LaunchedEffect
27
+ import androidx.compose.runtime.snapshotFlow
28
+ import androidx.compose.runtime.getValue
29
+ import androidx.compose.runtime.mutableStateOf
30
+ import androidx.compose.runtime.remember
31
+ import androidx.compose.runtime.rememberCoroutineScope
32
+ import androidx.compose.runtime.setValue
33
+ import androidx.compose.ui.Modifier
34
+ import androidx.compose.ui.Alignment
35
+ import androidx.compose.ui.focus.FocusRequester
36
+ import androidx.compose.ui.focus.focusRequester
37
+ import androidx.compose.ui.focus.onFocusChanged
38
+ import androidx.compose.ui.graphics.Color
39
+ import androidx.compose.ui.platform.LocalFocusManager
40
+ import androidx.compose.ui.unit.dp
41
+ import expo.modules.kotlin.views.ComposeProps
42
+ import expo.modules.kotlin.views.FunctionalComposableScope
43
+ import expo.modules.ui.ModifierList
44
+ import kotlinx.coroutines.delay
45
+ import kotlinx.coroutines.launch
46
+
47
+ import expo.modules.pytechui.theme.tokens.SearchBarTokens
48
+ import expo.modules.pytechui.theme.ExtendedTheme
49
+
50
+ import java.io.Serializable
51
+ import expo.modules.kotlin.records.Field
52
+ import expo.modules.kotlin.records.Record
53
+
54
+
55
+
56
+ data class SearchBarDismissEvent(
57
+ @Field val dismissed: Boolean = true,
58
+ ) : Record, Serializable
59
+
60
+ data class SearchBarChangeTextEvent(
61
+ @Field val text: String = "",
62
+ ) : Record, Serializable
63
+
64
+
65
+ /**
66
+ * Campo de búsqueda con look de chip M3 (sin expandir a pantalla completa).
67
+ */
68
+ data class SearchBarProps(
69
+ val placeholder: String? = null,
70
+ val autoFocus: Boolean = false,
71
+ /** Si es true, muestra ← clicable; si es false, muestra lupa decorativa. */
72
+ val showBackButton: Boolean = true,
73
+ val modifiers: ModifierList = emptyList(),
74
+ ) : ComposeProps
75
+
76
+ @Composable
77
+ internal fun FunctionalComposableScope.SearchBarViewContent(
78
+ props: SearchBarProps,
79
+ onDismiss: () -> Unit = {},
80
+ onChangeText: (String) -> Unit = {},
81
+ ) {
82
+ val textFieldState = rememberTextFieldState()
83
+ val focusRequester = remember { FocusRequester() }
84
+ val bringIntoViewRequester = remember { BringIntoViewRequester() }
85
+ val scope = rememberCoroutineScope()
86
+ val focusManager = LocalFocusManager.current
87
+ var isFocused by remember { mutableStateOf(false) }
88
+
89
+ val dismiss = {
90
+ focusManager.clearFocus()
91
+ onChangeText("")
92
+ onDismiss()
93
+ }
94
+
95
+ if (props.autoFocus) {
96
+ LaunchedEffect(Unit) {
97
+ delay(150)
98
+ runCatching { focusRequester.requestFocus() }
99
+ }
100
+ }
101
+
102
+ BackHandler(enabled = props.showBackButton && isFocused) {
103
+ dismiss()
104
+ }
105
+
106
+ LaunchedEffect(textFieldState) {
107
+ try {
108
+ snapshotFlow { textFieldState.text.toString() }.collect { text ->
109
+ onChangeText(text)
110
+ }
111
+ } finally {
112
+ onChangeText("")
113
+ }
114
+ }
115
+
116
+ val labelColor = ExtendedTheme.colorScheme.label
117
+ val placeholderColor = ExtendedTheme.colorScheme.placeholderText
118
+ val fieldTextStyle = LocalTextStyle.current
119
+
120
+ Surface(
121
+ modifier = Modifier
122
+ .fillMaxWidth()
123
+ .height(SearchBarTokens.ContainerHeight),
124
+ shape = SearchBarDefaults.inputFieldShape,
125
+ color = ExtendedTheme.colorScheme.secondarySystemGroupedBackground,
126
+
127
+ ) {
128
+ SearchBarDefaults.InputField(
129
+ state = textFieldState,
130
+ onSearch = { focusManager.clearFocus() },
131
+ expanded = false,
132
+ onExpandedChange = { /* nunca expandir */ },
133
+ textStyle = fieldTextStyle,
134
+ placeholder = {
135
+ val text = props.placeholder
136
+ if (!text.isNullOrBlank()) {
137
+ Text(
138
+ text = text,
139
+ style = fieldTextStyle,
140
+ color = placeholderColor,
141
+ )
142
+ }
143
+ },
144
+ leadingIcon = {
145
+ if (props.showBackButton) {
146
+ IconButton(
147
+ onClick = dismiss,
148
+ ) {
149
+ Icon(
150
+ imageVector = Icons.Rounded.ArrowBackIosNew,
151
+ contentDescription = "Volver",
152
+ tint = labelColor,
153
+ modifier = Modifier.size(20.dp),
154
+ )
155
+ }
156
+ } else {
157
+ Icon(
158
+ imageVector = Icons.Rounded.Search,
159
+ contentDescription = "Buscar",
160
+ tint = labelColor,
161
+ modifier = Modifier.size(24.dp),
162
+ )
163
+ }
164
+ },
165
+ trailingIcon = {
166
+ if (textFieldState.text.isNotEmpty()) {
167
+ IconButton(
168
+ onClick = {
169
+ textFieldState.edit {
170
+ replace(0, length, "")
171
+ }
172
+ }
173
+ ) {
174
+ Icon(
175
+ imageVector = Icons.Rounded.Clear,
176
+ contentDescription = "Borrar",
177
+ tint = labelColor,
178
+ modifier = Modifier.size(24.dp),
179
+ )
180
+ }
181
+ }
182
+ },
183
+ modifier = Modifier
184
+ .fillMaxWidth()
185
+ .focusRequester(focusRequester)
186
+ .bringIntoViewRequester(bringIntoViewRequester)
187
+ .onFocusChanged { focusState ->
188
+ isFocused = focusState.isFocused
189
+ if (focusState.isFocused) {
190
+ scope.launch {
191
+ delay(100)
192
+ bringIntoViewRequester.bringIntoView()
193
+ }
194
+ }
195
+ },
196
+ shape = SearchBarDefaults.inputFieldShape,
197
+ colors = SearchBarDefaults.inputFieldColors(
198
+ focusedTextColor = labelColor,
199
+ unfocusedTextColor = labelColor,
200
+ focusedPlaceholderColor = placeholderColor,
201
+ unfocusedPlaceholderColor = placeholderColor,
202
+ focusedLeadingIconColor = labelColor,
203
+ unfocusedLeadingIconColor = labelColor,
204
+ focusedTrailingIconColor = labelColor,
205
+ unfocusedTrailingIconColor = labelColor,
206
+ cursorColor = ExtendedTheme.colorScheme.systemBlue,
207
+ focusedContainerColor = Color.Transparent,
208
+ unfocusedContainerColor = Color.Transparent,
209
+ disabledContainerColor = Color.Transparent,
210
+ ),
211
+ )
212
+ }
213
+ }
@@ -1,81 +1,81 @@
1
- package expo.modules.pytechui.section
2
-
3
- import android.view.View
4
- import android.view.ViewGroup
5
- import androidx.compose.runtime.mutableIntStateOf
6
- import expo.modules.kotlin.views.ExpoComposeView
7
- import expo.modules.pytechui.ListItem.ListItemProps
8
-
9
- internal val SectionHostStateTag = Any()
10
- internal const val LIST_ITEM_VIEW_NAME = "ListItemView"
11
-
12
- data class SectionItemPosition(
13
- val isFirst: Boolean,
14
- val isLast: Boolean,
15
- )
16
-
17
- internal class SectionHostState {
18
- val generation = mutableIntStateOf(0)
19
- private val positions = mutableMapOf<ExpoComposeView<*>, SectionItemPosition>()
20
-
21
- fun update(listItems: List<ExpoComposeView<*>>) {
22
- positions.clear()
23
- listItems.forEachIndexed { index, view ->
24
- positions[view] = SectionItemPosition(
25
- isFirst = index == 0,
26
- isLast = index == listItems.lastIndex,
27
- )
28
- }
29
- generation.intValue++
30
- }
31
-
32
- fun positionFor(view: ExpoComposeView<*>): SectionItemPosition? = positions[view]
33
- }
34
-
35
- internal fun isListItemView(view: ExpoComposeView<*>): Boolean {
36
- if (view.props is ListItemProps) return true
37
- return view.javaClass.name.contains(LIST_ITEM_VIEW_NAME, ignoreCase = true)
38
- }
39
-
40
- internal fun ViewGroup.collectListItemViewsDeep(): List<ExpoComposeView<*>> {
41
- val result = mutableListOf<ExpoComposeView<*>>()
42
- collectListItemViewsDeepInto(result)
43
- return result
44
- }
45
-
46
- private fun ViewGroup.collectListItemViewsDeepInto(out: MutableList<ExpoComposeView<*>>) {
47
- for (i in 0 until childCount) {
48
- when (val child = getChildAt(i)) {
49
- is ExpoComposeView<*> -> {
50
- if (isListItemView(child)) {
51
- out.add(child)
52
- }
53
- if (child is ViewGroup) {
54
- child.collectListItemViewsDeepInto(out)
55
- }
56
- }
57
- is ViewGroup -> child.collectListItemViewsDeepInto(out)
58
- }
59
- }
60
- }
61
-
62
- internal fun View.findSectionHostState(): SectionHostState? {
63
- var current: View? = this
64
- while (current != null) {
65
- (current.tag as? SectionHostState)?.let { return it }
66
- current = current.parent as? View
67
- }
68
- return null
69
- }
70
-
71
- internal fun ExpoComposeView<*>.sectionItemPosition(props: ListItemProps): SectionItemPosition? {
72
- props.isFirst?.let { isFirst ->
73
- props.isLast?.let { isLast ->
74
- return SectionItemPosition(isFirst = isFirst, isLast = isLast)
75
- }
76
- }
77
- val hostState = (this as View).findSectionHostState() ?: return null
78
- @Suppress("UNUSED_VARIABLE")
79
- val generation = hostState.generation.intValue
80
- return hostState.positionFor(this)
81
- }
1
+ package expo.modules.pytechui.section
2
+
3
+ import android.view.View
4
+ import android.view.ViewGroup
5
+ import androidx.compose.runtime.mutableIntStateOf
6
+ import expo.modules.kotlin.views.ExpoComposeView
7
+ import expo.modules.pytechui.ListItem.ListItemProps
8
+
9
+ internal val SectionHostStateTag = Any()
10
+ internal const val LIST_ITEM_VIEW_NAME = "ListItemView"
11
+
12
+ data class SectionItemPosition(
13
+ val isFirst: Boolean,
14
+ val isLast: Boolean,
15
+ )
16
+
17
+ internal class SectionHostState {
18
+ val generation = mutableIntStateOf(0)
19
+ private val positions = mutableMapOf<ExpoComposeView<*>, SectionItemPosition>()
20
+
21
+ fun update(listItems: List<ExpoComposeView<*>>) {
22
+ positions.clear()
23
+ listItems.forEachIndexed { index, view ->
24
+ positions[view] = SectionItemPosition(
25
+ isFirst = index == 0,
26
+ isLast = index == listItems.lastIndex,
27
+ )
28
+ }
29
+ generation.intValue++
30
+ }
31
+
32
+ fun positionFor(view: ExpoComposeView<*>): SectionItemPosition? = positions[view]
33
+ }
34
+
35
+ internal fun isListItemView(view: ExpoComposeView<*>): Boolean {
36
+ if (view.props is ListItemProps) return true
37
+ return view.javaClass.name.contains(LIST_ITEM_VIEW_NAME, ignoreCase = true)
38
+ }
39
+
40
+ internal fun ViewGroup.collectListItemViewsDeep(): List<ExpoComposeView<*>> {
41
+ val result = mutableListOf<ExpoComposeView<*>>()
42
+ collectListItemViewsDeepInto(result)
43
+ return result
44
+ }
45
+
46
+ private fun ViewGroup.collectListItemViewsDeepInto(out: MutableList<ExpoComposeView<*>>) {
47
+ for (i in 0 until childCount) {
48
+ when (val child = getChildAt(i)) {
49
+ is ExpoComposeView<*> -> {
50
+ if (isListItemView(child)) {
51
+ out.add(child)
52
+ }
53
+ if (child is ViewGroup) {
54
+ child.collectListItemViewsDeepInto(out)
55
+ }
56
+ }
57
+ is ViewGroup -> child.collectListItemViewsDeepInto(out)
58
+ }
59
+ }
60
+ }
61
+
62
+ internal fun View.findSectionHostState(): SectionHostState? {
63
+ var current: View? = this
64
+ while (current != null) {
65
+ (current.tag as? SectionHostState)?.let { return it }
66
+ current = current.parent as? View
67
+ }
68
+ return null
69
+ }
70
+
71
+ internal fun ExpoComposeView<*>.sectionItemPosition(props: ListItemProps): SectionItemPosition? {
72
+ props.isFirst?.let { isFirst ->
73
+ props.isLast?.let { isLast ->
74
+ return SectionItemPosition(isFirst = isFirst, isLast = isLast)
75
+ }
76
+ }
77
+ val hostState = (this as View).findSectionHostState() ?: return null
78
+ @Suppress("UNUSED_VARIABLE")
79
+ val generation = hostState.generation.intValue
80
+ return hostState.positionFor(this)
81
+ }