@situaction/traquiste-mobile 1.0.0 → 1.1.0-next.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 (479) hide show
  1. package/README.md +61 -90
  2. package/build/components/AssociationTag/AssociationTag.d.ts +19 -0
  3. package/build/components/AssociationTag/AssociationTag.d.ts.map +1 -0
  4. package/build/components/AssociationTag/AssociationTag.js +29 -0
  5. package/build/components/AssociationTag/AssociationTag.js.map +1 -0
  6. package/build/components/AssociationTag/AssociationTag.styles.d.ts +21 -0
  7. package/build/components/AssociationTag/AssociationTag.styles.d.ts.map +1 -0
  8. package/build/components/AssociationTag/AssociationTag.styles.js +26 -0
  9. package/build/components/AssociationTag/AssociationTag.styles.js.map +1 -0
  10. package/build/components/AssociationTag/index.d.ts +3 -0
  11. package/build/components/AssociationTag/index.d.ts.map +1 -0
  12. package/build/components/AssociationTag/index.js +2 -0
  13. package/build/components/AssociationTag/index.js.map +1 -0
  14. package/build/components/BottomSheet/BottomSheet.d.ts +36 -0
  15. package/build/components/BottomSheet/BottomSheet.d.ts.map +1 -0
  16. package/build/components/BottomSheet/BottomSheet.js +76 -0
  17. package/build/components/BottomSheet/BottomSheet.js.map +1 -0
  18. package/build/components/BottomSheet/BottomSheet.styles.d.ts +32 -0
  19. package/build/components/BottomSheet/BottomSheet.styles.d.ts.map +1 -0
  20. package/build/components/BottomSheet/BottomSheet.styles.js +31 -0
  21. package/build/components/BottomSheet/BottomSheet.styles.js.map +1 -0
  22. package/build/components/BottomSheet/index.d.ts +3 -0
  23. package/build/components/BottomSheet/index.d.ts.map +1 -0
  24. package/build/components/BottomSheet/index.js +2 -0
  25. package/build/components/BottomSheet/index.js.map +1 -0
  26. package/build/components/Button/Button.d.ts +5 -1
  27. package/build/components/Button/Button.d.ts.map +1 -1
  28. package/build/components/Button/Button.js +12 -6
  29. package/build/components/Button/Button.js.map +1 -1
  30. package/build/components/ButtonAction/ButtonAction.d.ts +5 -1
  31. package/build/components/ButtonAction/ButtonAction.d.ts.map +1 -1
  32. package/build/components/ButtonAction/ButtonAction.js +2 -2
  33. package/build/components/ButtonAction/ButtonAction.js.map +1 -1
  34. package/build/components/ButtonMap/ButtonMap.d.ts +5 -1
  35. package/build/components/ButtonMap/ButtonMap.d.ts.map +1 -1
  36. package/build/components/ButtonMap/ButtonMap.js +11 -9
  37. package/build/components/ButtonMap/ButtonMap.js.map +1 -1
  38. package/build/components/ButtonMenu/ButtonMenu.d.ts +5 -1
  39. package/build/components/ButtonMenu/ButtonMenu.d.ts.map +1 -1
  40. package/build/components/ButtonMenu/ButtonMenu.js +17 -17
  41. package/build/components/ButtonMenu/ButtonMenu.js.map +1 -1
  42. package/build/components/Calendar/Calendar.d.ts +4 -0
  43. package/build/components/Calendar/Calendar.d.ts.map +1 -0
  44. package/build/components/Calendar/Calendar.i18n.d.ts +34 -0
  45. package/build/components/Calendar/Calendar.i18n.d.ts.map +1 -0
  46. package/build/components/Calendar/Calendar.i18n.js +34 -0
  47. package/build/components/Calendar/Calendar.i18n.js.map +1 -0
  48. package/build/components/Calendar/Calendar.js +172 -0
  49. package/build/components/Calendar/Calendar.js.map +1 -0
  50. package/build/components/Calendar/Calendar.styles.d.ts +257 -0
  51. package/build/components/Calendar/Calendar.styles.d.ts.map +1 -0
  52. package/build/components/Calendar/Calendar.styles.js +234 -0
  53. package/build/components/Calendar/Calendar.styles.js.map +1 -0
  54. package/build/components/Calendar/Calendar.types.d.ts +62 -0
  55. package/build/components/Calendar/Calendar.types.d.ts.map +1 -0
  56. package/build/components/Calendar/Calendar.types.js +2 -0
  57. package/build/components/Calendar/Calendar.types.js.map +1 -0
  58. package/build/components/Calendar/CalendarDay.d.ts +4 -0
  59. package/build/components/Calendar/CalendarDay.d.ts.map +1 -0
  60. package/build/components/Calendar/CalendarDay.js +52 -0
  61. package/build/components/Calendar/CalendarDay.js.map +1 -0
  62. package/build/components/Calendar/CalendarHeader.d.ts +4 -0
  63. package/build/components/Calendar/CalendarHeader.d.ts.map +1 -0
  64. package/build/components/Calendar/CalendarHeader.js +16 -0
  65. package/build/components/Calendar/CalendarHeader.js.map +1 -0
  66. package/build/components/Calendar/CalendarLegend.d.ts +3 -0
  67. package/build/components/Calendar/CalendarLegend.d.ts.map +1 -0
  68. package/build/components/Calendar/CalendarLegend.js +38 -0
  69. package/build/components/Calendar/CalendarLegend.js.map +1 -0
  70. package/build/components/Calendar/CalendarYearPicker.d.ts +19 -0
  71. package/build/components/Calendar/CalendarYearPicker.d.ts.map +1 -0
  72. package/build/components/Calendar/CalendarYearPicker.js +158 -0
  73. package/build/components/Calendar/CalendarYearPicker.js.map +1 -0
  74. package/build/components/Calendar/index.d.ts +5 -0
  75. package/build/components/Calendar/index.d.ts.map +1 -0
  76. package/build/components/Calendar/index.js +3 -0
  77. package/build/components/Calendar/index.js.map +1 -0
  78. package/build/components/Card/Card.d.ts +25 -0
  79. package/build/components/Card/Card.d.ts.map +1 -0
  80. package/build/components/Card/Card.js +31 -0
  81. package/build/components/Card/Card.js.map +1 -0
  82. package/build/components/Card/Card.styles.d.ts +15 -0
  83. package/build/components/Card/Card.styles.d.ts.map +1 -0
  84. package/build/components/Card/Card.styles.js +18 -0
  85. package/build/components/Card/Card.styles.js.map +1 -0
  86. package/build/components/Card/index.d.ts +3 -0
  87. package/build/components/Card/index.d.ts.map +1 -0
  88. package/build/components/Card/index.js +2 -0
  89. package/build/components/Card/index.js.map +1 -0
  90. package/build/components/CardEquip/CardEquip.d.ts +60 -0
  91. package/build/components/CardEquip/CardEquip.d.ts.map +1 -0
  92. package/build/components/CardEquip/CardEquip.js +106 -0
  93. package/build/components/CardEquip/CardEquip.js.map +1 -0
  94. package/build/components/CardEquip/CardEquip.styles.d.ts +125 -0
  95. package/build/components/CardEquip/CardEquip.styles.d.ts.map +1 -0
  96. package/build/components/CardEquip/CardEquip.styles.js +139 -0
  97. package/build/components/CardEquip/CardEquip.styles.js.map +1 -0
  98. package/build/components/CardEquip/index.d.ts +3 -0
  99. package/build/components/CardEquip/index.d.ts.map +1 -0
  100. package/build/components/CardEquip/index.js +2 -0
  101. package/build/components/CardEquip/index.js.map +1 -0
  102. package/build/components/CardProfile/CardProfile.d.ts +55 -0
  103. package/build/components/CardProfile/CardProfile.d.ts.map +1 -0
  104. package/build/components/CardProfile/CardProfile.js +74 -0
  105. package/build/components/CardProfile/CardProfile.js.map +1 -0
  106. package/build/components/CardProfile/CardProfile.styles.d.ts +62 -0
  107. package/build/components/CardProfile/CardProfile.styles.d.ts.map +1 -0
  108. package/build/components/CardProfile/CardProfile.styles.js +65 -0
  109. package/build/components/CardProfile/CardProfile.styles.js.map +1 -0
  110. package/build/components/CardProfile/index.d.ts +3 -0
  111. package/build/components/CardProfile/index.d.ts.map +1 -0
  112. package/build/components/CardProfile/index.js +2 -0
  113. package/build/components/CardProfile/index.js.map +1 -0
  114. package/build/components/Checkbox/Checkbox.d.ts +28 -0
  115. package/build/components/Checkbox/Checkbox.d.ts.map +1 -0
  116. package/build/components/Checkbox/Checkbox.js +77 -0
  117. package/build/components/Checkbox/Checkbox.js.map +1 -0
  118. package/build/components/Checkbox/Checkbox.styles.d.ts +34 -0
  119. package/build/components/Checkbox/Checkbox.styles.d.ts.map +1 -0
  120. package/build/components/Checkbox/Checkbox.styles.js +39 -0
  121. package/build/components/Checkbox/Checkbox.styles.js.map +1 -0
  122. package/build/components/Checkbox/Checkbox.types.d.ts +25 -0
  123. package/build/components/Checkbox/Checkbox.types.d.ts.map +1 -0
  124. package/build/components/Checkbox/Checkbox.types.js +5 -0
  125. package/build/components/Checkbox/Checkbox.types.js.map +1 -0
  126. package/build/components/Checkbox/index.d.ts +3 -0
  127. package/build/components/Checkbox/index.d.ts.map +1 -0
  128. package/build/components/Checkbox/index.js +2 -0
  129. package/build/components/Checkbox/index.js.map +1 -0
  130. package/build/components/Cluster/Cluster.d.ts +23 -0
  131. package/build/components/Cluster/Cluster.d.ts.map +1 -0
  132. package/build/components/Cluster/Cluster.js +34 -0
  133. package/build/components/Cluster/Cluster.js.map +1 -0
  134. package/build/components/Cluster/Cluster.styles.d.ts +33 -0
  135. package/build/components/Cluster/Cluster.styles.d.ts.map +1 -0
  136. package/build/components/Cluster/Cluster.styles.js +34 -0
  137. package/build/components/Cluster/Cluster.styles.js.map +1 -0
  138. package/build/components/Cluster/index.d.ts +3 -0
  139. package/build/components/Cluster/index.d.ts.map +1 -0
  140. package/build/components/Cluster/index.js +2 -0
  141. package/build/components/Cluster/index.js.map +1 -0
  142. package/build/components/ColorPicker/ColorPicker.d.ts +20 -0
  143. package/build/components/ColorPicker/ColorPicker.d.ts.map +1 -0
  144. package/build/components/ColorPicker/ColorPicker.js +17 -0
  145. package/build/components/ColorPicker/ColorPicker.js.map +1 -0
  146. package/build/components/ColorPicker/ColorPicker.styles.d.ts +10 -0
  147. package/build/components/ColorPicker/ColorPicker.styles.d.ts.map +1 -0
  148. package/build/components/ColorPicker/ColorPicker.styles.js +11 -0
  149. package/build/components/ColorPicker/ColorPicker.styles.js.map +1 -0
  150. package/build/components/ColorPicker/index.d.ts +3 -0
  151. package/build/components/ColorPicker/index.d.ts.map +1 -0
  152. package/build/components/ColorPicker/index.js +2 -0
  153. package/build/components/ColorPicker/index.js.map +1 -0
  154. package/build/components/ColorSwatch/ColorSwatch.d.ts +20 -0
  155. package/build/components/ColorSwatch/ColorSwatch.d.ts.map +1 -0
  156. package/build/components/ColorSwatch/ColorSwatch.js +35 -0
  157. package/build/components/ColorSwatch/ColorSwatch.js.map +1 -0
  158. package/build/components/ColorSwatch/ColorSwatch.styles.d.ts +16 -0
  159. package/build/components/ColorSwatch/ColorSwatch.styles.d.ts.map +1 -0
  160. package/build/components/ColorSwatch/ColorSwatch.styles.js +19 -0
  161. package/build/components/ColorSwatch/ColorSwatch.styles.js.map +1 -0
  162. package/build/components/ColorSwatch/index.d.ts +3 -0
  163. package/build/components/ColorSwatch/index.d.ts.map +1 -0
  164. package/build/components/ColorSwatch/index.js +2 -0
  165. package/build/components/ColorSwatch/index.js.map +1 -0
  166. package/build/components/FileCard/FileCard.d.ts +29 -0
  167. package/build/components/FileCard/FileCard.d.ts.map +1 -0
  168. package/build/components/FileCard/FileCard.js +66 -0
  169. package/build/components/FileCard/FileCard.js.map +1 -0
  170. package/build/components/FileCard/FileCard.styles.d.ts +54 -0
  171. package/build/components/FileCard/FileCard.styles.d.ts.map +1 -0
  172. package/build/components/FileCard/FileCard.styles.js +56 -0
  173. package/build/components/FileCard/FileCard.styles.js.map +1 -0
  174. package/build/components/FileCard/index.d.ts +3 -0
  175. package/build/components/FileCard/index.d.ts.map +1 -0
  176. package/build/components/FileCard/index.js +2 -0
  177. package/build/components/FileCard/index.js.map +1 -0
  178. package/build/components/FilterChip/FilterChip.d.ts +5 -1
  179. package/build/components/FilterChip/FilterChip.d.ts.map +1 -1
  180. package/build/components/FilterChip/FilterChip.js +55 -25
  181. package/build/components/FilterChip/FilterChip.js.map +1 -1
  182. package/build/components/FilterNav/FilterNav.d.ts +53 -0
  183. package/build/components/FilterNav/FilterNav.d.ts.map +1 -0
  184. package/build/components/FilterNav/FilterNav.js +39 -0
  185. package/build/components/FilterNav/FilterNav.js.map +1 -0
  186. package/build/components/FilterNav/FilterNav.styles.d.ts +10 -0
  187. package/build/components/FilterNav/FilterNav.styles.d.ts.map +1 -0
  188. package/build/components/FilterNav/FilterNav.styles.js +11 -0
  189. package/build/components/FilterNav/FilterNav.styles.js.map +1 -0
  190. package/build/components/FilterNav/index.d.ts +3 -0
  191. package/build/components/FilterNav/index.d.ts.map +1 -0
  192. package/build/components/FilterNav/index.js +2 -0
  193. package/build/components/FilterNav/index.js.map +1 -0
  194. package/build/components/ImgPicker/ImgPicker.d.ts +47 -0
  195. package/build/components/ImgPicker/ImgPicker.d.ts.map +1 -0
  196. package/build/components/ImgPicker/ImgPicker.js +49 -0
  197. package/build/components/ImgPicker/ImgPicker.js.map +1 -0
  198. package/build/components/ImgPicker/ImgPicker.styles.d.ts +18 -0
  199. package/build/components/ImgPicker/ImgPicker.styles.d.ts.map +1 -0
  200. package/build/components/ImgPicker/ImgPicker.styles.js +19 -0
  201. package/build/components/ImgPicker/ImgPicker.styles.js.map +1 -0
  202. package/build/components/ImgPicker/index.d.ts +3 -0
  203. package/build/components/ImgPicker/index.d.ts.map +1 -0
  204. package/build/components/ImgPicker/index.js +2 -0
  205. package/build/components/ImgPicker/index.js.map +1 -0
  206. package/build/components/InlineInfo/InlineInfo.d.ts +60 -0
  207. package/build/components/InlineInfo/InlineInfo.d.ts.map +1 -0
  208. package/build/components/InlineInfo/InlineInfo.js +115 -0
  209. package/build/components/InlineInfo/InlineInfo.js.map +1 -0
  210. package/build/components/InlineInfo/InlineInfo.styles.d.ts +42 -0
  211. package/build/components/InlineInfo/InlineInfo.styles.d.ts.map +1 -0
  212. package/build/components/InlineInfo/InlineInfo.styles.js +50 -0
  213. package/build/components/InlineInfo/InlineInfo.styles.js.map +1 -0
  214. package/build/components/InlineInfo/index.d.ts +3 -0
  215. package/build/components/InlineInfo/index.d.ts.map +1 -0
  216. package/build/components/InlineInfo/index.js +2 -0
  217. package/build/components/InlineInfo/index.js.map +1 -0
  218. package/build/components/Input/Input.d.ts +57 -0
  219. package/build/components/Input/Input.d.ts.map +1 -0
  220. package/build/components/Input/Input.js +103 -0
  221. package/build/components/Input/Input.js.map +1 -0
  222. package/build/components/Input/Input.styles.d.ts +39 -0
  223. package/build/components/Input/Input.styles.d.ts.map +1 -0
  224. package/build/components/Input/Input.styles.js +40 -0
  225. package/build/components/Input/Input.styles.js.map +1 -0
  226. package/build/components/Input/index.d.ts +3 -0
  227. package/build/components/Input/index.d.ts.map +1 -0
  228. package/build/components/Input/index.js +2 -0
  229. package/build/components/Input/index.js.map +1 -0
  230. package/build/components/ListGroup/ListGroup.d.ts +24 -0
  231. package/build/components/ListGroup/ListGroup.d.ts.map +1 -0
  232. package/build/components/ListGroup/ListGroup.js +44 -0
  233. package/build/components/ListGroup/ListGroup.js.map +1 -0
  234. package/build/components/ListGroup/index.d.ts +3 -0
  235. package/build/components/ListGroup/index.d.ts.map +1 -0
  236. package/build/components/ListGroup/index.js +2 -0
  237. package/build/components/ListGroup/index.js.map +1 -0
  238. package/build/components/ListItem/ListItem.d.ts +44 -0
  239. package/build/components/ListItem/ListItem.d.ts.map +1 -0
  240. package/build/components/ListItem/ListItem.js +69 -0
  241. package/build/components/ListItem/ListItem.js.map +1 -0
  242. package/build/components/ListItem/ListItem.styles.d.ts +66 -0
  243. package/build/components/ListItem/ListItem.styles.d.ts.map +1 -0
  244. package/build/components/ListItem/ListItem.styles.js +70 -0
  245. package/build/components/ListItem/ListItem.styles.js.map +1 -0
  246. package/build/components/ListItem/index.d.ts +3 -0
  247. package/build/components/ListItem/index.d.ts.map +1 -0
  248. package/build/components/ListItem/index.js +2 -0
  249. package/build/components/ListItem/index.js.map +1 -0
  250. package/build/components/MapPin/MapPin.d.ts +61 -0
  251. package/build/components/MapPin/MapPin.d.ts.map +1 -0
  252. package/build/components/MapPin/MapPin.js +118 -0
  253. package/build/components/MapPin/MapPin.js.map +1 -0
  254. package/build/components/MapPin/MapPin.styles.d.ts +93 -0
  255. package/build/components/MapPin/MapPin.styles.d.ts.map +1 -0
  256. package/build/components/MapPin/MapPin.styles.js +101 -0
  257. package/build/components/MapPin/MapPin.styles.js.map +1 -0
  258. package/build/components/MapPin/index.d.ts +3 -0
  259. package/build/components/MapPin/index.d.ts.map +1 -0
  260. package/build/components/MapPin/index.js +2 -0
  261. package/build/components/MapPin/index.js.map +1 -0
  262. package/build/components/MediaPicker/MediaPicker.d.ts +74 -0
  263. package/build/components/MediaPicker/MediaPicker.d.ts.map +1 -0
  264. package/build/components/MediaPicker/MediaPicker.js +43 -0
  265. package/build/components/MediaPicker/MediaPicker.js.map +1 -0
  266. package/build/components/MediaPicker/MediaPicker.styles.d.ts +30 -0
  267. package/build/components/MediaPicker/MediaPicker.styles.d.ts.map +1 -0
  268. package/build/components/MediaPicker/MediaPicker.styles.js +31 -0
  269. package/build/components/MediaPicker/MediaPicker.styles.js.map +1 -0
  270. package/build/components/MediaPicker/index.d.ts +3 -0
  271. package/build/components/MediaPicker/index.d.ts.map +1 -0
  272. package/build/components/MediaPicker/index.js +2 -0
  273. package/build/components/MediaPicker/index.js.map +1 -0
  274. package/build/components/PhotoCard/PhotoCard.d.ts +28 -0
  275. package/build/components/PhotoCard/PhotoCard.d.ts.map +1 -0
  276. package/build/components/PhotoCard/PhotoCard.js +53 -0
  277. package/build/components/PhotoCard/PhotoCard.js.map +1 -0
  278. package/build/components/PhotoCard/PhotoCard.styles.d.ts +47 -0
  279. package/build/components/PhotoCard/PhotoCard.styles.d.ts.map +1 -0
  280. package/build/components/PhotoCard/PhotoCard.styles.js +45 -0
  281. package/build/components/PhotoCard/PhotoCard.styles.js.map +1 -0
  282. package/build/components/PhotoCard/index.d.ts +3 -0
  283. package/build/components/PhotoCard/index.d.ts.map +1 -0
  284. package/build/components/PhotoCard/index.js +2 -0
  285. package/build/components/PhotoCard/index.js.map +1 -0
  286. package/build/components/ProgressStep/ProgressStep.d.ts +9 -0
  287. package/build/components/ProgressStep/ProgressStep.d.ts.map +1 -0
  288. package/build/components/ProgressStep/ProgressStep.js +23 -0
  289. package/build/components/ProgressStep/ProgressStep.js.map +1 -0
  290. package/build/components/ProgressStep/ProgressStep.styles.d.ts +12 -0
  291. package/build/components/ProgressStep/ProgressStep.styles.d.ts.map +1 -0
  292. package/build/components/ProgressStep/ProgressStep.styles.js +13 -0
  293. package/build/components/ProgressStep/ProgressStep.styles.js.map +1 -0
  294. package/build/components/ProgressStep/index.d.ts +3 -0
  295. package/build/components/ProgressStep/index.d.ts.map +1 -0
  296. package/build/components/ProgressStep/index.js +2 -0
  297. package/build/components/ProgressStep/index.js.map +1 -0
  298. package/build/components/RadioButton/RadioButton.d.ts +29 -0
  299. package/build/components/RadioButton/RadioButton.d.ts.map +1 -0
  300. package/build/components/RadioButton/RadioButton.js +71 -0
  301. package/build/components/RadioButton/RadioButton.js.map +1 -0
  302. package/build/components/RadioButton/RadioButton.styles.d.ts +27 -0
  303. package/build/components/RadioButton/RadioButton.styles.d.ts.map +1 -0
  304. package/build/components/RadioButton/RadioButton.styles.js +30 -0
  305. package/build/components/RadioButton/RadioButton.styles.js.map +1 -0
  306. package/build/components/RadioButton/index.d.ts +3 -0
  307. package/build/components/RadioButton/index.d.ts.map +1 -0
  308. package/build/components/RadioButton/index.js +2 -0
  309. package/build/components/RadioButton/index.js.map +1 -0
  310. package/build/components/SearchBar/SearchBar.d.ts +33 -0
  311. package/build/components/SearchBar/SearchBar.d.ts.map +1 -0
  312. package/build/components/SearchBar/SearchBar.js +83 -0
  313. package/build/components/SearchBar/SearchBar.js.map +1 -0
  314. package/build/components/SearchBar/SearchBar.styles.d.ts +19 -0
  315. package/build/components/SearchBar/SearchBar.styles.d.ts.map +1 -0
  316. package/build/components/SearchBar/SearchBar.styles.js +21 -0
  317. package/build/components/SearchBar/SearchBar.styles.js.map +1 -0
  318. package/build/components/SearchBar/index.d.ts +3 -0
  319. package/build/components/SearchBar/index.d.ts.map +1 -0
  320. package/build/components/SearchBar/index.js +2 -0
  321. package/build/components/SearchBar/index.js.map +1 -0
  322. package/build/components/Spinner/Spinner.d.ts +12 -0
  323. package/build/components/Spinner/Spinner.d.ts.map +1 -0
  324. package/build/components/Spinner/Spinner.js +80 -0
  325. package/build/components/Spinner/Spinner.js.map +1 -0
  326. package/build/components/Spinner/Spinner.styles.d.ts +21 -0
  327. package/build/components/Spinner/Spinner.styles.d.ts.map +1 -0
  328. package/build/components/Spinner/Spinner.styles.js +22 -0
  329. package/build/components/Spinner/Spinner.styles.js.map +1 -0
  330. package/build/components/Spinner/index.d.ts +3 -0
  331. package/build/components/Spinner/index.d.ts.map +1 -0
  332. package/build/components/Spinner/index.js +2 -0
  333. package/build/components/Spinner/index.js.map +1 -0
  334. package/build/components/StepSheet/StepSheet.d.ts +77 -0
  335. package/build/components/StepSheet/StepSheet.d.ts.map +1 -0
  336. package/build/components/StepSheet/StepSheet.js +30 -0
  337. package/build/components/StepSheet/StepSheet.js.map +1 -0
  338. package/build/components/StepSheet/StepSheet.styles.d.ts +6 -0
  339. package/build/components/StepSheet/StepSheet.styles.d.ts.map +1 -0
  340. package/build/components/StepSheet/StepSheet.styles.js +7 -0
  341. package/build/components/StepSheet/StepSheet.styles.js.map +1 -0
  342. package/build/components/StepSheet/index.d.ts +3 -0
  343. package/build/components/StepSheet/index.d.ts.map +1 -0
  344. package/build/components/StepSheet/index.js +2 -0
  345. package/build/components/StepSheet/index.js.map +1 -0
  346. package/build/components/Stepper/Stepper.d.ts +50 -0
  347. package/build/components/Stepper/Stepper.d.ts.map +1 -0
  348. package/build/components/Stepper/Stepper.js +48 -0
  349. package/build/components/Stepper/Stepper.js.map +1 -0
  350. package/build/components/Stepper/Stepper.styles.d.ts +27 -0
  351. package/build/components/Stepper/Stepper.styles.d.ts.map +1 -0
  352. package/build/components/Stepper/Stepper.styles.js +28 -0
  353. package/build/components/Stepper/Stepper.styles.js.map +1 -0
  354. package/build/components/Stepper/index.d.ts +3 -0
  355. package/build/components/Stepper/index.d.ts.map +1 -0
  356. package/build/components/Stepper/index.js +2 -0
  357. package/build/components/Stepper/index.js.map +1 -0
  358. package/build/components/Switch/Switch.d.ts +29 -0
  359. package/build/components/Switch/Switch.d.ts.map +1 -0
  360. package/build/components/Switch/Switch.js +89 -0
  361. package/build/components/Switch/Switch.js.map +1 -0
  362. package/build/components/Switch/Switch.styles.d.ts +29 -0
  363. package/build/components/Switch/Switch.styles.d.ts.map +1 -0
  364. package/build/components/Switch/Switch.styles.js +26 -0
  365. package/build/components/Switch/Switch.styles.js.map +1 -0
  366. package/build/components/Switch/index.d.ts +3 -0
  367. package/build/components/Switch/index.d.ts.map +1 -0
  368. package/build/components/Switch/index.js +2 -0
  369. package/build/components/Switch/index.js.map +1 -0
  370. package/build/components/Tab/Tab.d.ts +52 -0
  371. package/build/components/Tab/Tab.d.ts.map +1 -0
  372. package/build/components/Tab/Tab.js +121 -0
  373. package/build/components/Tab/Tab.js.map +1 -0
  374. package/build/components/Tab/Tab.styles.d.ts +55 -0
  375. package/build/components/Tab/Tab.styles.d.ts.map +1 -0
  376. package/build/components/Tab/Tab.styles.js +60 -0
  377. package/build/components/Tab/Tab.styles.js.map +1 -0
  378. package/build/components/Tab/index.d.ts +3 -0
  379. package/build/components/Tab/index.d.ts.map +1 -0
  380. package/build/components/Tab/index.js +2 -0
  381. package/build/components/Tab/index.js.map +1 -0
  382. package/build/components/Tag/Tag.d.ts +4 -0
  383. package/build/components/Tag/Tag.d.ts.map +1 -0
  384. package/build/components/Tag/Tag.js +40 -0
  385. package/build/components/Tag/Tag.js.map +1 -0
  386. package/build/components/Tag/Tag.styles.d.ts +35 -0
  387. package/build/components/Tag/Tag.styles.d.ts.map +1 -0
  388. package/build/components/Tag/Tag.styles.js +43 -0
  389. package/build/components/Tag/Tag.styles.js.map +1 -0
  390. package/build/components/Tag/Tag.types.d.ts +23 -0
  391. package/build/components/Tag/Tag.types.d.ts.map +1 -0
  392. package/build/components/Tag/Tag.types.js +2 -0
  393. package/build/components/Tag/Tag.types.js.map +1 -0
  394. package/build/components/Tag/index.d.ts +3 -0
  395. package/build/components/Tag/index.d.ts.map +1 -0
  396. package/build/components/Tag/index.js +2 -0
  397. package/build/components/Tag/index.js.map +1 -0
  398. package/build/components/navigation/GeneralNav/GeneralNav.d.ts +21 -0
  399. package/build/components/navigation/GeneralNav/GeneralNav.d.ts.map +1 -0
  400. package/build/components/navigation/GeneralNav/GeneralNav.js +25 -0
  401. package/build/components/navigation/GeneralNav/GeneralNav.js.map +1 -0
  402. package/build/components/navigation/GeneralNav/GeneralNav.styles.d.ts +33 -0
  403. package/build/components/navigation/GeneralNav/GeneralNav.styles.d.ts.map +1 -0
  404. package/build/components/navigation/GeneralNav/GeneralNav.styles.js +35 -0
  405. package/build/components/navigation/GeneralNav/GeneralNav.styles.js.map +1 -0
  406. package/build/components/navigation/GeneralNav/index.d.ts +3 -0
  407. package/build/components/navigation/GeneralNav/index.d.ts.map +1 -0
  408. package/build/components/navigation/GeneralNav/index.js +2 -0
  409. package/build/components/navigation/GeneralNav/index.js.map +1 -0
  410. package/build/components/navigation/MobileCanva/MobileCanva.d.ts +11 -0
  411. package/build/components/navigation/MobileCanva/MobileCanva.d.ts.map +1 -0
  412. package/build/components/navigation/MobileCanva/MobileCanva.js +55 -0
  413. package/build/components/navigation/MobileCanva/MobileCanva.js.map +1 -0
  414. package/build/components/navigation/MobileCanva/MobileCanva.styles.d.ts +93 -0
  415. package/build/components/navigation/MobileCanva/MobileCanva.styles.d.ts.map +1 -0
  416. package/build/components/navigation/MobileCanva/MobileCanva.styles.js +94 -0
  417. package/build/components/navigation/MobileCanva/MobileCanva.styles.js.map +1 -0
  418. package/build/components/navigation/MobileCanva/MobileCanva.types.d.ts +21 -0
  419. package/build/components/navigation/MobileCanva/MobileCanva.types.d.ts.map +1 -0
  420. package/build/components/navigation/MobileCanva/MobileCanva.types.js +2 -0
  421. package/build/components/navigation/MobileCanva/MobileCanva.types.js.map +1 -0
  422. package/build/components/navigation/MobileCanva/index.d.ts +3 -0
  423. package/build/components/navigation/MobileCanva/index.d.ts.map +1 -0
  424. package/build/components/navigation/MobileCanva/index.js +2 -0
  425. package/build/components/navigation/MobileCanva/index.js.map +1 -0
  426. package/build/components/navigation/PageNav/PageNav.d.ts +46 -0
  427. package/build/components/navigation/PageNav/PageNav.d.ts.map +1 -0
  428. package/build/components/navigation/PageNav/PageNav.js +48 -0
  429. package/build/components/navigation/PageNav/PageNav.js.map +1 -0
  430. package/build/components/navigation/PageNav/PageNav.styles.d.ts +60 -0
  431. package/build/components/navigation/PageNav/PageNav.styles.d.ts.map +1 -0
  432. package/build/components/navigation/PageNav/PageNav.styles.js +60 -0
  433. package/build/components/navigation/PageNav/PageNav.styles.js.map +1 -0
  434. package/build/components/navigation/PageNav/index.d.ts +3 -0
  435. package/build/components/navigation/PageNav/index.d.ts.map +1 -0
  436. package/build/components/navigation/PageNav/index.js +2 -0
  437. package/build/components/navigation/PageNav/index.js.map +1 -0
  438. package/build/components/navigation/ScreenCanva/ScreenCanva.d.ts +8 -0
  439. package/build/components/navigation/ScreenCanva/ScreenCanva.d.ts.map +1 -0
  440. package/build/components/navigation/ScreenCanva/ScreenCanva.js +37 -0
  441. package/build/components/navigation/ScreenCanva/ScreenCanva.js.map +1 -0
  442. package/build/components/navigation/ScreenCanva/index.d.ts +3 -0
  443. package/build/components/navigation/ScreenCanva/index.d.ts.map +1 -0
  444. package/build/components/navigation/ScreenCanva/index.js +2 -0
  445. package/build/components/navigation/ScreenCanva/index.js.map +1 -0
  446. package/build/components/navigation/TabBar/TabBar.d.ts +22 -0
  447. package/build/components/navigation/TabBar/TabBar.d.ts.map +1 -0
  448. package/build/components/navigation/TabBar/TabBar.js +13 -0
  449. package/build/components/navigation/TabBar/TabBar.js.map +1 -0
  450. package/build/components/navigation/TabBar/TabBar.styles.d.ts +14 -0
  451. package/build/components/navigation/TabBar/TabBar.styles.d.ts.map +1 -0
  452. package/build/components/navigation/TabBar/TabBar.styles.js +16 -0
  453. package/build/components/navigation/TabBar/TabBar.styles.js.map +1 -0
  454. package/build/components/navigation/TabBar/index.d.ts +3 -0
  455. package/build/components/navigation/TabBar/index.d.ts.map +1 -0
  456. package/build/components/navigation/TabBar/index.js +2 -0
  457. package/build/components/navigation/TabBar/index.js.map +1 -0
  458. package/build/context/BottomSheetContext.d.ts +42 -0
  459. package/build/context/BottomSheetContext.d.ts.map +1 -0
  460. package/build/context/BottomSheetContext.js +51 -0
  461. package/build/context/BottomSheetContext.js.map +1 -0
  462. package/build/context/ThemeContext.d.ts +5 -1
  463. package/build/context/ThemeContext.d.ts.map +1 -1
  464. package/build/context/ThemeContext.js +4 -2
  465. package/build/context/ThemeContext.js.map +1 -1
  466. package/build/index.d.ts +79 -1
  467. package/build/index.d.ts.map +1 -1
  468. package/build/index.js +39 -0
  469. package/build/index.js.map +1 -1
  470. package/build/theme/tokens/dark.d.ts.map +1 -1
  471. package/build/theme/tokens/dark.js +263 -10
  472. package/build/theme/tokens/dark.js.map +1 -1
  473. package/build/theme/tokens/light.d.ts.map +1 -1
  474. package/build/theme/tokens/light.js +252 -7
  475. package/build/theme/tokens/light.js.map +1 -1
  476. package/build/theme/type.d.ts +398 -0
  477. package/build/theme/type.d.ts.map +1 -1
  478. package/build/theme/type.js.map +1 -1
  479. package/package.json +8 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spinner.styles.d.ts","sourceRoot":"","sources":["../../../src/components/Spinner/Spinner.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;CAmBjB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { StyleSheet } from 'react-native';
2
+ export const styles = StyleSheet.create({
3
+ wrapper: {
4
+ alignItems: 'center',
5
+ justifyContent: 'center',
6
+ },
7
+ ring: {
8
+ position: 'absolute',
9
+ top: 0,
10
+ left: 0,
11
+ },
12
+ iconCenter: {
13
+ position: 'absolute',
14
+ top: 0,
15
+ left: 0,
16
+ right: 0,
17
+ bottom: 0,
18
+ alignItems: 'center',
19
+ justifyContent: 'center',
20
+ },
21
+ });
22
+ //# sourceMappingURL=Spinner.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spinner.styles.js","sourceRoot":"","sources":["../../../src/components/Spinner/Spinner.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE;QACP,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;KACzB;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;KACR;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;KACzB;CACF,CAAC,CAAC","sourcesContent":["import { StyleSheet } from 'react-native';\n\nexport const styles = StyleSheet.create({\n wrapper: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n ring: {\n position: 'absolute',\n top: 0,\n left: 0,\n },\n iconCenter: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n"]}
@@ -0,0 +1,3 @@
1
+ export { Spinner } from './Spinner';
2
+ export type { SpinnerProps, SpinnerSize } from './Spinner';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Spinner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Spinner } from './Spinner';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Spinner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC","sourcesContent":["export { Spinner } from './Spinner';\nexport type { SpinnerProps, SpinnerSize } from './Spinner';\n"]}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * StepSheet — BottomSheet wizard.
3
+ * Composes BottomSheet + PageNav + Stepper into a single step-by-step sheet.
4
+ * Stepper's onCancel is auto-wired to close the sheet.
5
+ */
6
+ import React from 'react';
7
+ import type { ButtonVariant } from '../Button';
8
+ import type { RightAction } from '../navigation/PageNav/PageNav';
9
+ export type { RightAction };
10
+ export interface StepSheetProps {
11
+ /** Whether the sheet is open */
12
+ isOpen: boolean;
13
+ /** Called when the sheet closes */
14
+ onClose?: () => void;
15
+ /** Called when the sheet opens */
16
+ onOpen?: () => void;
17
+ /** Initial height as a fraction of screen height @default 0.9 */
18
+ size?: number;
19
+ /** Allow sliding up to expand to full screen @default true */
20
+ expandable?: boolean;
21
+ /** Allow sliding down to close @default true */
22
+ closeable?: boolean;
23
+ /** Show dark backdrop @default true */
24
+ backdrop?: boolean;
25
+ /** Block background interactions without visible backdrop @default false */
26
+ blockBackground?: boolean;
27
+ /** Close on backdrop press @default false */
28
+ closeOnBackdropPress?: boolean;
29
+ /** Auto-size based on content height @default false */
30
+ autoSize?: boolean;
31
+ /** Keyboard behavior when the keyboard opens */
32
+ keyboardBehavior?: 'extend' | 'fillParent' | 'interactive';
33
+ /** Keyboard blur behavior @default 'restore' */
34
+ keyboardBlurBehavior?: 'none' | 'restore';
35
+ /** Sheet title — centered in the header */
36
+ title?: string;
37
+ /** Title size @default 'l' */
38
+ titleSize?: 's' | 'm' | 'l';
39
+ /** Optional icon shown left of the title */
40
+ titleIcon?: React.ReactElement;
41
+ /** Optional content rendered after the title */
42
+ titleChildren?: React.ReactNode;
43
+ /** Left action buttons in the PageNav header */
44
+ leftActions?: RightAction[];
45
+ /** Right action buttons in the PageNav header */
46
+ rightActions?: RightAction[];
47
+ /** Variant applied to all PageNav buttons @default 'ghost' */
48
+ buttonVariant?: ButtonVariant;
49
+ /** Optional content rendered below the PageNav header row (34px slot) */
50
+ navChildren?: React.ReactNode;
51
+ /** Ordered list of step content to render */
52
+ steps: React.ReactNode[];
53
+ /** Called when the user confirms on the last step */
54
+ onConfirm: () => void;
55
+ /**
56
+ * Called before advancing to the next step.
57
+ * Return false to block navigation.
58
+ */
59
+ onStepNext?: (stepIndex: number) => boolean | Promise<boolean>;
60
+ /** Disables the confirm/next button while an async operation is pending */
61
+ isLoading?: boolean;
62
+ /** @default 'Annuler' */
63
+ labelCancel?: string;
64
+ /** @default 'Précédent' */
65
+ labelBack?: string;
66
+ /** @default 'Suivant' */
67
+ labelNext?: string;
68
+ /** @default 'Confirmer' */
69
+ labelConfirm?: string;
70
+ /** Button sizing mode @default 'stretch' */
71
+ buttonLayout?: 'stretch' | 'fit';
72
+ /** Hide back button on the last step so confirm fills full width @default false */
73
+ hideBackOnLastStep?: boolean;
74
+ }
75
+ export declare function StepSheet({ isOpen, onClose, onOpen, size, expandable, closeable, backdrop, blockBackground, closeOnBackdropPress, autoSize, keyboardBehavior, keyboardBlurBehavior, title, titleSize, titleIcon, titleChildren, leftActions, rightActions, buttonVariant, navChildren, steps, onConfirm, onStepNext, isLoading, labelCancel, labelBack, labelNext, labelConfirm, buttonLayout, hideBackOnLastStep, }: StepSheetProps): React.JSX.Element;
76
+ export default StepSheet;
77
+ //# sourceMappingURL=StepSheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepSheet.d.ts","sourceRoot":"","sources":["../../../src/components/StepSheet/StepSheet.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * StepSheet — BottomSheet wizard.
3
+ * Composes BottomSheet + PageNav + Stepper into a single step-by-step sheet.
4
+ * Stepper's onCancel is auto-wired to close the sheet.
5
+ */
6
+ import React from 'react';
7
+ import { View } from 'react-native';
8
+ import { BottomSheet } from '../BottomSheet';
9
+ import { styles } from './StepSheet.styles';
10
+ import { PageNav } from '../navigation/PageNav';
11
+ import { Stepper } from '../Stepper';
12
+ export function StepSheet({
13
+ // BottomSheet
14
+ isOpen, onClose, onOpen, size = 0.9, expandable = true, closeable = true, backdrop = true, blockBackground = false, closeOnBackdropPress = false, autoSize = false, keyboardBehavior, keyboardBlurBehavior = 'restore',
15
+ // PageNav
16
+ title, titleSize, titleIcon, titleChildren, leftActions, rightActions, buttonVariant, navChildren,
17
+ // Stepper
18
+ steps, onConfirm, onStepNext, isLoading, labelCancel, labelBack, labelNext, labelConfirm, buttonLayout, hideBackOnLastStep, }) {
19
+ return (<BottomSheet isOpen={isOpen} onClose={onClose} onOpen={onOpen} size={size} expandable={expandable} closeable={closeable} backdrop={backdrop} blockBackground={blockBackground} closeOnBackdropPress={closeOnBackdropPress} autoSize={autoSize} keyboardBehavior={keyboardBehavior} keyboardBlurBehavior={keyboardBlurBehavior}>
20
+ <View style={styles.root}>
21
+ <PageNav title={title} titleSize={titleSize} titleIcon={titleIcon} titleChildren={titleChildren} leftActions={leftActions} rightActions={rightActions} buttonVariant={buttonVariant}>
22
+ {navChildren}
23
+ </PageNav>
24
+
25
+ <Stepper steps={steps} onCancel={onClose ?? (() => { })} onConfirm={onConfirm} onStepNext={onStepNext} isLoading={isLoading} bottomInset={0} labelCancel={labelCancel} labelBack={labelBack} labelNext={labelNext} labelConfirm={labelConfirm} buttonLayout={buttonLayout} hideBackOnLastStep={hideBackOnLastStep}/>
26
+ </View>
27
+ </BottomSheet>);
28
+ }
29
+ export default StepSheet;
30
+ //# sourceMappingURL=StepSheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepSheet.js","sourceRoot":"","sources":["../../../src/components/StepSheet/StepSheet.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AA6ErC,MAAM,UAAU,SAAS,CAAC;AACxB,cAAc;AACd,MAAM,EACN,OAAO,EACP,MAAM,EACN,IAAI,GAAG,GAAG,EACV,UAAU,GAAG,IAAI,EACjB,SAAS,GAAG,IAAI,EAChB,QAAQ,GAAG,IAAI,EACf,eAAe,GAAG,KAAK,EACvB,oBAAoB,GAAG,KAAK,EAC5B,QAAQ,GAAG,KAAK,EAChB,gBAAgB,EAChB,oBAAoB,GAAG,SAAS;AAChC,UAAU;AACV,KAAK,EACL,SAAS,EACT,SAAS,EACT,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW;AACX,UAAU;AACV,KAAK,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,kBAAkB,GACH;IACf,OAAO,CACL,CAAC,WAAW,CACV,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,IAAI,CAAC,CAAC,IAAI,CAAC,CACX,UAAU,CAAC,CAAC,UAAU,CAAC,CACvB,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,eAAe,CAAC,CAAC,eAAe,CAAC,CACjC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,CAC3C,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,CACnC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,CAE3C;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CACvB;QAAA,CAAC,OAAO,CACN,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,aAAa,CAAC,CAAC,aAAa,CAAC,CAC7B,WAAW,CAAC,CAAC,WAAW,CAAC,CACzB,YAAY,CAAC,CAAC,YAAY,CAAC,CAC3B,aAAa,CAAC,CAAC,aAAa,CAAC,CAE7B;UAAA,CAAC,WAAW,CACd;QAAA,EAAE,OAAO,CAET;;QAAA,CAAC,OAAO,CACN,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAChC,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,UAAU,CAAC,CAAC,UAAU,CAAC,CACvB,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,WAAW,CAAC,CAAC,CAAC,CAAC,CACf,WAAW,CAAC,CAAC,WAAW,CAAC,CACzB,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,YAAY,CAAC,CAAC,YAAY,CAAC,CAC3B,YAAY,CAAC,CAAC,YAAY,CAAC,CAC3B,kBAAkB,CAAC,CAAC,kBAAkB,CAAC,EAE3C;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,WAAW,CAAC,CACf,CAAC;AACJ,CAAC;AAED,eAAe,SAAS,CAAC","sourcesContent":["/**\n * StepSheet — BottomSheet wizard.\n * Composes BottomSheet + PageNav + Stepper into a single step-by-step sheet.\n * Stepper's onCancel is auto-wired to close the sheet.\n */\nimport React from 'react';\nimport { View } from 'react-native';\nimport { BottomSheet } from '../BottomSheet';\nimport { styles } from './StepSheet.styles';\nimport { PageNav } from '../navigation/PageNav';\nimport { Stepper } from '../Stepper';\nimport type { ButtonVariant } from '../Button';\nimport type { RightAction } from '../navigation/PageNav/PageNav';\n\nexport type { RightAction };\n\nexport interface StepSheetProps {\n // --- BottomSheet ---\n /** Whether the sheet is open */\n isOpen: boolean;\n /** Called when the sheet closes */\n onClose?: () => void;\n /** Called when the sheet opens */\n onOpen?: () => void;\n /** Initial height as a fraction of screen height @default 0.9 */\n size?: number;\n /** Allow sliding up to expand to full screen @default true */\n expandable?: boolean;\n /** Allow sliding down to close @default true */\n closeable?: boolean;\n /** Show dark backdrop @default true */\n backdrop?: boolean;\n /** Block background interactions without visible backdrop @default false */\n blockBackground?: boolean;\n /** Close on backdrop press @default false */\n closeOnBackdropPress?: boolean;\n /** Auto-size based on content height @default false */\n autoSize?: boolean;\n /** Keyboard behavior when the keyboard opens */\n keyboardBehavior?: 'extend' | 'fillParent' | 'interactive';\n /** Keyboard blur behavior @default 'restore' */\n keyboardBlurBehavior?: 'none' | 'restore';\n\n // --- PageNav ---\n /** Sheet title — centered in the header */\n title?: string;\n /** Title size @default 'l' */\n titleSize?: 's' | 'm' | 'l';\n /** Optional icon shown left of the title */\n titleIcon?: React.ReactElement;\n /** Optional content rendered after the title */\n titleChildren?: React.ReactNode;\n /** Left action buttons in the PageNav header */\n leftActions?: RightAction[];\n /** Right action buttons in the PageNav header */\n rightActions?: RightAction[];\n /** Variant applied to all PageNav buttons @default 'ghost' */\n buttonVariant?: ButtonVariant;\n /** Optional content rendered below the PageNav header row (34px slot) */\n navChildren?: React.ReactNode;\n\n // --- Stepper ---\n /** Ordered list of step content to render */\n steps: React.ReactNode[];\n /** Called when the user confirms on the last step */\n onConfirm: () => void;\n /**\n * Called before advancing to the next step.\n * Return false to block navigation.\n */\n onStepNext?: (stepIndex: number) => boolean | Promise<boolean>;\n /** Disables the confirm/next button while an async operation is pending */\n isLoading?: boolean;\n /** @default 'Annuler' */\n labelCancel?: string;\n /** @default 'Précédent' */\n labelBack?: string;\n /** @default 'Suivant' */\n labelNext?: string;\n /** @default 'Confirmer' */\n labelConfirm?: string;\n /** Button sizing mode @default 'stretch' */\n buttonLayout?: 'stretch' | 'fit';\n /** Hide back button on the last step so confirm fills full width @default false */\n hideBackOnLastStep?: boolean;\n}\n\nexport function StepSheet({\n // BottomSheet\n isOpen,\n onClose,\n onOpen,\n size = 0.9,\n expandable = true,\n closeable = true,\n backdrop = true,\n blockBackground = false,\n closeOnBackdropPress = false,\n autoSize = false,\n keyboardBehavior,\n keyboardBlurBehavior = 'restore',\n // PageNav\n title,\n titleSize,\n titleIcon,\n titleChildren,\n leftActions,\n rightActions,\n buttonVariant,\n navChildren,\n // Stepper\n steps,\n onConfirm,\n onStepNext,\n isLoading,\n labelCancel,\n labelBack,\n labelNext,\n labelConfirm,\n buttonLayout,\n hideBackOnLastStep,\n}: StepSheetProps) {\n return (\n <BottomSheet\n isOpen={isOpen}\n onClose={onClose}\n onOpen={onOpen}\n size={size}\n expandable={expandable}\n closeable={closeable}\n backdrop={backdrop}\n blockBackground={blockBackground}\n closeOnBackdropPress={closeOnBackdropPress}\n autoSize={autoSize}\n keyboardBehavior={keyboardBehavior}\n keyboardBlurBehavior={keyboardBlurBehavior}\n >\n <View style={styles.root}>\n <PageNav\n title={title}\n titleSize={titleSize}\n titleIcon={titleIcon}\n titleChildren={titleChildren}\n leftActions={leftActions}\n rightActions={rightActions}\n buttonVariant={buttonVariant}\n >\n {navChildren}\n </PageNav>\n\n <Stepper\n steps={steps}\n onCancel={onClose ?? (() => {})}\n onConfirm={onConfirm}\n onStepNext={onStepNext}\n isLoading={isLoading}\n bottomInset={0}\n labelCancel={labelCancel}\n labelBack={labelBack}\n labelNext={labelNext}\n labelConfirm={labelConfirm}\n buttonLayout={buttonLayout}\n hideBackOnLastStep={hideBackOnLastStep}\n />\n </View>\n </BottomSheet>\n );\n}\n\nexport default StepSheet;\n\n"]}
@@ -0,0 +1,6 @@
1
+ export declare const styles: {
2
+ root: {
3
+ flex: number;
4
+ };
5
+ };
6
+ //# sourceMappingURL=StepSheet.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepSheet.styles.d.ts","sourceRoot":"","sources":["../../../src/components/StepSheet/StepSheet.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;;;;CAIjB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { StyleSheet } from 'react-native';
2
+ export const styles = StyleSheet.create({
3
+ root: {
4
+ flex: 1,
5
+ },
6
+ });
7
+ //# sourceMappingURL=StepSheet.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepSheet.styles.js","sourceRoot":"","sources":["../../../src/components/StepSheet/StepSheet.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE;QACJ,IAAI,EAAE,CAAC;KACR;CACF,CAAC,CAAC","sourcesContent":["import { StyleSheet } from 'react-native';\n\nexport const styles = StyleSheet.create({\n root: {\n flex: 1,\n },\n});\n"]}
@@ -0,0 +1,3 @@
1
+ export { StepSheet } from './StepSheet';
2
+ export type { StepSheetProps } from './StepSheet';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/StepSheet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { StepSheet } from './StepSheet';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/StepSheet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC","sourcesContent":["export { StepSheet } from './StepSheet';\nexport type { StepSheetProps } from './StepSheet';"]}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Stepper — step-by-step wizard.
3
+ * Manages navigation between steps, renders a ProgressStep indicator
4
+ * and contextual footer buttons (cancel/back + next/confirm).
5
+ */
6
+ import React from 'react';
7
+ export interface StepperProps {
8
+ /** Ordered list of step content to render */
9
+ steps: React.ReactNode[];
10
+ /** Called when the user cancels on the first step */
11
+ onCancel: () => void;
12
+ /** Called when the user confirms on the last step */
13
+ onConfirm: () => void;
14
+ /**
15
+ * Called before advancing to the next step.
16
+ * Return false to block navigation (e.g. validation failed).
17
+ */
18
+ onStepNext?: (stepIndex: number) => boolean | Promise<boolean>;
19
+ /** Disables the confirm/next button while an async operation is pending */
20
+ isLoading?: boolean;
21
+ /**
22
+ * Extra bottom padding added to the footer — pass `useSafeAreaInsets().bottom`
23
+ * from your app to handle home indicator on iOS.
24
+ * @default 0
25
+ */
26
+ bottomInset?: number;
27
+ /** @default 'Annuler' */
28
+ labelCancel?: string;
29
+ /** @default 'Précédent' */
30
+ labelBack?: string;
31
+ /** @default 'Suivant' */
32
+ labelNext?: string;
33
+ /** @default 'Confirmer' */
34
+ labelConfirm?: string;
35
+ /**
36
+ * Button sizing mode.
37
+ * - `'stretch'` — buttons share available width equally (default)
38
+ * - `'fit'` — buttons size to their label content
39
+ * @default 'stretch'
40
+ */
41
+ buttonLayout?: 'stretch' | 'fit';
42
+ /**
43
+ * Hide the back/cancel button on the last step so the confirm button fills the full width.
44
+ * @default false
45
+ */
46
+ hideBackOnLastStep?: boolean;
47
+ }
48
+ export declare function Stepper({ steps, onCancel, onConfirm, onStepNext, isLoading, bottomInset, buttonLayout, hideBackOnLastStep, labelCancel, labelBack, labelNext, labelConfirm, }: StepperProps): React.JSX.Element;
49
+ export default Stepper;
50
+ //# sourceMappingURL=Stepper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stepper.d.ts","sourceRoot":"","sources":["../../../src/components/Stepper/Stepper.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAmB,MAAM,OAAO,CAAC;AAOxC,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IACzB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,qDAAqD;IACrD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IACjC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,QAAQ,EACR,SAAS,EACT,UAAU,EACV,SAAiB,EACjB,WAAe,EACf,YAAwB,EACxB,kBAA0B,EAC1B,WAAuB,EACvB,SAAuB,EACvB,SAAqB,EACrB,YAA0B,GAC3B,EAAE,YAAY,qBAkDd;AAED,eAAe,OAAO,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Stepper — step-by-step wizard.
3
+ * Manages navigation between steps, renders a ProgressStep indicator
4
+ * and contextual footer buttons (cancel/back + next/confirm).
5
+ */
6
+ import React, { useState } from 'react';
7
+ import { View } from 'react-native';
8
+ import { Button } from '../Button';
9
+ import { ProgressStep } from '../ProgressStep';
10
+ import { useTheme } from '../../context/ThemeContext';
11
+ import { styles } from './Stepper.styles';
12
+ export function Stepper({ steps, onCancel, onConfirm, onStepNext, isLoading = false, bottomInset = 0, buttonLayout = 'stretch', hideBackOnLastStep = false, labelCancel = 'Annuler', labelBack = 'Précédent', labelNext = 'Suivant', labelConfirm = 'Confirmer', }) {
13
+ const { colors } = useTheme();
14
+ const [currentStep, setCurrentStep] = useState(0);
15
+ const isFirst = currentStep === 0;
16
+ const isLast = currentStep === steps.length - 1;
17
+ const handleNext = async () => {
18
+ if (isLast)
19
+ return;
20
+ if (onStepNext) {
21
+ const canProceed = await onStepNext(currentStep);
22
+ if (!canProceed)
23
+ return;
24
+ }
25
+ setCurrentStep((s) => s + 1);
26
+ };
27
+ const handleBack = () => {
28
+ if (!isFirst)
29
+ setCurrentStep((s) => s - 1);
30
+ };
31
+ return (<View style={styles.root}>
32
+ <View style={styles.content}>{steps[currentStep]}</View>
33
+
34
+ <View style={[
35
+ styles.footer,
36
+ { paddingBottom: bottomInset + 16, borderTopColor: colors.border.window },
37
+ ]}>
38
+ <ProgressStep totalSteps={steps.length} currentStep={currentStep}/>
39
+
40
+ <View style={[styles.buttons, buttonLayout === 'stretch' ? styles.buttonsStretch : styles.buttonsFit]}>
41
+ {(!isLast || !hideBackOnLastStep) && (<Button style={buttonLayout === 'stretch' ? styles.buttonStretch : undefined} variant="tertiary" label={isFirst ? labelCancel : labelBack} onPress={isFirst ? onCancel : handleBack}/>)}
42
+ <Button style={isLast && hideBackOnLastStep ? styles.buttonStretch : buttonLayout === 'stretch' ? styles.buttonStretch : undefined} variant="primary" label={isLast ? labelConfirm : labelNext} disabled={isLoading} onPress={isLast ? onConfirm : handleNext}/>
43
+ </View>
44
+ </View>
45
+ </View>);
46
+ }
47
+ export default Stepper;
48
+ //# sourceMappingURL=Stepper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stepper.js","sourceRoot":"","sources":["../../../src/components/Stepper/Stepper.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Stepper — step-by-step wizard.\n * Manages navigation between steps, renders a ProgressStep indicator\n * and contextual footer buttons (cancel/back + next/confirm).\n */\nimport React, { useState } from 'react';\nimport { View } from 'react-native';\nimport { Button } from '../Button';\nimport { ProgressStep } from '../ProgressStep';\nimport { useTheme } from '../../context/ThemeContext';\nimport { styles } from './Stepper.styles';\n\nexport interface StepperProps {\n /** Ordered list of step content to render */\n steps: React.ReactNode[];\n /** Called when the user cancels on the first step */\n onCancel: () => void;\n /** Called when the user confirms on the last step */\n onConfirm: () => void;\n /**\n * Called before advancing to the next step.\n * Return false to block navigation (e.g. validation failed).\n */\n onStepNext?: (stepIndex: number) => boolean | Promise<boolean>;\n /** Disables the confirm/next button while an async operation is pending */\n isLoading?: boolean;\n /**\n * Extra bottom padding added to the footer — pass `useSafeAreaInsets().bottom`\n * from your app to handle home indicator on iOS.\n * @default 0\n */\n bottomInset?: number;\n /** @default 'Annuler' */\n labelCancel?: string;\n /** @default 'Précédent' */\n labelBack?: string;\n /** @default 'Suivant' */\n labelNext?: string;\n /** @default 'Confirmer' */\n labelConfirm?: string;\n /**\n * Button sizing mode.\n * - `'stretch'` — buttons share available width equally (default)\n * - `'fit'` — buttons size to their label content\n * @default 'stretch'\n */\n buttonLayout?: 'stretch' | 'fit';\n /**\n * Hide the back/cancel button on the last step so the confirm button fills the full width.\n * @default false\n */\n hideBackOnLastStep?: boolean;\n}\n\nexport function Stepper({\n steps,\n onCancel,\n onConfirm,\n onStepNext,\n isLoading = false,\n bottomInset = 0,\n buttonLayout = 'stretch',\n hideBackOnLastStep = false,\n labelCancel = 'Annuler',\n labelBack = 'Précédent',\n labelNext = 'Suivant',\n labelConfirm = 'Confirmer',\n}: StepperProps) {\n const { colors } = useTheme();\n const [currentStep, setCurrentStep] = useState(0);\n\n const isFirst = currentStep === 0;\n const isLast = currentStep === steps.length - 1;\n\n const handleNext = async () => {\n if (isLast) return;\n if (onStepNext) {\n const canProceed = await onStepNext(currentStep);\n if (!canProceed) return;\n }\n setCurrentStep((s) => s + 1);\n };\n\n const handleBack = () => {\n if (!isFirst) setCurrentStep((s) => s - 1);\n };\n\n return (\n <View style={styles.root}>\n <View style={styles.content}>{steps[currentStep]}</View>\n\n <View style={[\n styles.footer,\n { paddingBottom: bottomInset + 16, borderTopColor: colors.border.window },\n ]}>\n <ProgressStep totalSteps={steps.length} currentStep={currentStep} />\n\n <View style={[styles.buttons, buttonLayout === 'stretch' ? styles.buttonsStretch : styles.buttonsFit]}>\n {(!isLast || !hideBackOnLastStep) && (\n <Button\n style={buttonLayout === 'stretch' ? styles.buttonStretch : undefined}\n variant=\"tertiary\"\n label={isFirst ? labelCancel : labelBack}\n onPress={isFirst ? onCancel : handleBack}\n />\n )}\n <Button\n style={isLast && hideBackOnLastStep ? styles.buttonStretch : buttonLayout === 'stretch' ? styles.buttonStretch : undefined}\n variant=\"primary\"\n label={isLast ? labelConfirm : labelNext}\n disabled={isLoading}\n onPress={isLast ? onConfirm : handleNext}\n />\n </View>\n </View>\n </View>\n );\n}\n\nexport default Stepper;\n\n"]}
@@ -0,0 +1,27 @@
1
+ export declare const styles: {
2
+ root: {
3
+ flex: number;
4
+ };
5
+ content: {
6
+ flex: number;
7
+ };
8
+ footer: {
9
+ paddingTop: number;
10
+ paddingHorizontal: number;
11
+ gap: number;
12
+ };
13
+ buttons: {
14
+ flexDirection: "row";
15
+ gap: number;
16
+ };
17
+ buttonsStretch: {
18
+ alignItems: "stretch";
19
+ };
20
+ buttonsFit: {
21
+ justifyContent: "space-between";
22
+ };
23
+ buttonStretch: {
24
+ flex: number;
25
+ };
26
+ };
27
+ //# sourceMappingURL=Stepper.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stepper.styles.d.ts","sourceRoot":"","sources":["../../../src/components/Stepper/Stepper.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;CAyBjB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { StyleSheet } from 'react-native';
2
+ export const styles = StyleSheet.create({
3
+ root: {
4
+ flex: 1,
5
+ },
6
+ content: {
7
+ flex: 1,
8
+ },
9
+ footer: {
10
+ paddingTop: 10,
11
+ paddingHorizontal: 10,
12
+ gap: 10,
13
+ },
14
+ buttons: {
15
+ flexDirection: 'row',
16
+ gap: 12,
17
+ },
18
+ buttonsStretch: {
19
+ alignItems: 'stretch',
20
+ },
21
+ buttonsFit: {
22
+ justifyContent: 'space-between',
23
+ },
24
+ buttonStretch: {
25
+ flex: 1,
26
+ },
27
+ });
28
+ //# sourceMappingURL=Stepper.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stepper.styles.js","sourceRoot":"","sources":["../../../src/components/Stepper/Stepper.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE;QACJ,IAAI,EAAE,CAAC;KACR;IACD,OAAO,EAAE;QACP,IAAI,EAAE,CAAC;KACR;IACD,MAAM,EAAE;QACN,UAAU,EAAE,EAAE;QACd,iBAAiB,EAAE,EAAE;QACrB,GAAG,EAAE,EAAE;KACR;IACD,OAAO,EAAE;QACP,aAAa,EAAE,KAAK;QACpB,GAAG,EAAE,EAAE;KACR;IACD,cAAc,EAAE;QACd,UAAU,EAAE,SAAS;KACtB;IACD,UAAU,EAAE;QACV,cAAc,EAAE,eAAe;KAChC;IACD,aAAa,EAAE;QACb,IAAI,EAAE,CAAC;KACR;CACF,CAAC,CAAC","sourcesContent":["import { StyleSheet } from 'react-native';\n\nexport const styles = StyleSheet.create({\n root: {\n flex: 1,\n },\n content: {\n flex: 1,\n },\n footer: {\n paddingTop: 10,\n paddingHorizontal: 10,\n gap: 10,\n },\n buttons: {\n flexDirection: 'row',\n gap: 12,\n },\n buttonsStretch: {\n alignItems: 'stretch',\n },\n buttonsFit: {\n justifyContent: 'space-between',\n },\n buttonStretch: {\n flex: 1,\n },\n});\n"]}
@@ -0,0 +1,3 @@
1
+ export { Stepper } from './Stepper';
2
+ export type { StepperProps } from './Stepper';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Stepper/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Stepper } from './Stepper';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Stepper/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC","sourcesContent":["export { Stepper } from './Stepper';\nexport type { StepperProps } from './Stepper';"]}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Switch — controlled on/off toggle.
3
+ * Custom implementation (not the RN native Switch) to match the Figma pixel-perfect.
4
+ * 4 sizes: s / m / l / xl. Animated thumb translation via Animated.timing.
5
+ * Track color changes instantly; thumb slides with ease-out cubic.
6
+ */
7
+ import React from 'react';
8
+ import type { StyleProp, ViewStyle } from 'react-native';
9
+ export type SwitchSize = 's' | 'm' | 'l' | 'xl';
10
+ export interface SwitchProps {
11
+ /** Current on/off value — controlled */
12
+ value: boolean;
13
+ /** Toggle handler */
14
+ onValueChange: (value: boolean) => void;
15
+ /** Content displayed to the left of the switch */
16
+ childrenLeft?: React.ReactNode;
17
+ /** Content displayed to the right of the switch */
18
+ childrenRight?: React.ReactNode;
19
+ /** Switch size — s: 28×16, m: 36×20, l: 44×24, xl: 52×28 */
20
+ size?: SwitchSize;
21
+ /** Disabled — no interaction, muted colors */
22
+ disabled?: boolean;
23
+ /** Additional styles on the wrapper */
24
+ style?: StyleProp<ViewStyle>;
25
+ /** Test ID for automated testing */
26
+ testID?: string;
27
+ }
28
+ export declare const Switch: ({ value, onValueChange, childrenLeft, childrenRight, size, disabled, style, testID, }: SwitchProps) => React.JSX.Element;
29
+ //# sourceMappingURL=Switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../src/components/Switch/Switch.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQzD,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B,wCAAwC;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,qBAAqB;IACrB,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,kDAAkD;IAClD,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,mDAAmD;IACnD,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,4DAA4D;IAC5D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAyBD,eAAO,MAAM,MAAM,GAAI,uFASpB,WAAW,sBAqFb,CAAC"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Switch — controlled on/off toggle.
3
+ * Custom implementation (not the RN native Switch) to match the Figma pixel-perfect.
4
+ * 4 sizes: s / m / l / xl. Animated thumb translation via Animated.timing.
5
+ * Track color changes instantly; thumb slides with ease-out cubic.
6
+ */
7
+ import React, { useEffect, useRef } from 'react';
8
+ import { Animated, Easing, Pressable, Text, View } from 'react-native';
9
+ import { useTheme } from '../../context/ThemeContext';
10
+ import { styles } from './Switch.styles';
11
+ // ---------------------------------------------------------------------------
12
+ // Size config — derived from Figma measurements (2px thumb padding)
13
+ // ---------------------------------------------------------------------------
14
+ const THUMB_PADDING = 2;
15
+ const SIZE_CONFIG = {
16
+ s: { trackWidth: 28, trackHeight: 16, thumbSize: 12 },
17
+ m: { trackWidth: 36, trackHeight: 20, thumbSize: 16 },
18
+ l: { trackWidth: 44, trackHeight: 24, thumbSize: 20 },
19
+ xl: { trackWidth: 52, trackHeight: 28, thumbSize: 24 },
20
+ };
21
+ const ANIMATION_DURATION = 200;
22
+ // ---------------------------------------------------------------------------
23
+ // Component
24
+ // ---------------------------------------------------------------------------
25
+ export const Switch = ({ value, onValueChange, childrenLeft, childrenRight, size = 'm', disabled = false, style, testID, }) => {
26
+ const { colors } = useTheme();
27
+ const cfg = SIZE_CONFIG[size];
28
+ const animValue = useRef(new Animated.Value(value ? 1 : 0)).current;
29
+ // Animate thumb on value change
30
+ useEffect(() => {
31
+ const anim = Animated.timing(animValue, {
32
+ toValue: value ? 1 : 0,
33
+ duration: ANIMATION_DURATION,
34
+ easing: Easing.out(Easing.cubic),
35
+ useNativeDriver: true,
36
+ });
37
+ anim.start();
38
+ return () => anim.stop();
39
+ }, [value, animValue]);
40
+ // Max translation: from left edge + padding to right edge - padding - thumbSize
41
+ const travelX = cfg.trackWidth - cfg.thumbSize - THUMB_PADDING * 2;
42
+ const thumbTranslateX = animValue.interpolate({
43
+ inputRange: [0, 1],
44
+ outputRange: [0, travelX],
45
+ });
46
+ const t = colors.toggle;
47
+ const { fontFamily } = useTheme();
48
+ const labelColor = disabled ? t.labelDisabled : t.label;
49
+ // Render string children as styled Text; ReactNode children pass through as-is
50
+ const renderChild = (child) => typeof child === 'string'
51
+ ? <Text style={{ color: labelColor, fontFamily }}>{child}</Text>
52
+ : child;
53
+ const trackColor = disabled
54
+ ? (value ? t.trackOnDisabled : t.trackOffDisabled)
55
+ : (value ? t.trackOn : t.trackOff);
56
+ const thumbColor = disabled
57
+ ? t.thumbDisabled
58
+ : (value ? t.thumbOn : t.thumbOff);
59
+ const track = (<View style={[
60
+ styles.track,
61
+ {
62
+ width: cfg.trackWidth,
63
+ height: cfg.trackHeight,
64
+ borderRadius: cfg.trackHeight / 2,
65
+ backgroundColor: trackColor,
66
+ shadowColor: colors.shadow.minimal,
67
+ },
68
+ ]}>
69
+ <Animated.View style={[
70
+ styles.thumb,
71
+ {
72
+ width: cfg.thumbSize,
73
+ height: cfg.thumbSize,
74
+ borderRadius: cfg.thumbSize / 2,
75
+ top: THUMB_PADDING,
76
+ left: THUMB_PADDING,
77
+ backgroundColor: thumbColor,
78
+ transform: [{ translateX: thumbTranslateX }],
79
+ shadowColor: colors.shadow.minimal,
80
+ },
81
+ ]}/>
82
+ </View>);
83
+ return (<Pressable onPress={disabled ? undefined : () => onValueChange(!value)} accessibilityRole="switch" accessibilityState={{ checked: value, disabled }} style={[styles.wrapper, style]} testID={testID}>
84
+ {renderChild(childrenLeft)}
85
+ {track}
86
+ {renderChild(childrenRight)}
87
+ </Pressable>);
88
+ };
89
+ //# sourceMappingURL=Switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../../src/components/Switch/Switch.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Switch — controlled on/off toggle.\n * Custom implementation (not the RN native Switch) to match the Figma pixel-perfect.\n * 4 sizes: s / m / l / xl. Animated thumb translation via Animated.timing.\n * Track color changes instantly; thumb slides with ease-out cubic.\n */\nimport React, { useEffect, useRef } from 'react';\nimport { Animated, Easing, Pressable, Text, View } from 'react-native';\nimport type { StyleProp, ViewStyle } from 'react-native';\nimport { useTheme } from '../../context/ThemeContext';\nimport { styles } from './Switch.styles';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type SwitchSize = 's' | 'm' | 'l' | 'xl';\n\nexport interface SwitchProps {\n /** Current on/off value — controlled */\n value: boolean;\n /** Toggle handler */\n onValueChange: (value: boolean) => void;\n /** Content displayed to the left of the switch */\n childrenLeft?: React.ReactNode;\n /** Content displayed to the right of the switch */\n childrenRight?: React.ReactNode;\n /** Switch size — s: 28×16, m: 36×20, l: 44×24, xl: 52×28 */\n size?: SwitchSize;\n /** Disabled — no interaction, muted colors */\n disabled?: boolean;\n /** Additional styles on the wrapper */\n style?: StyleProp<ViewStyle>;\n /** Test ID for automated testing */\n testID?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Size config — derived from Figma measurements (2px thumb padding)\n// ---------------------------------------------------------------------------\n\nconst THUMB_PADDING = 2;\n\nconst SIZE_CONFIG: Record<SwitchSize, {\n trackWidth: number;\n trackHeight: number;\n thumbSize: number;\n}> = {\n s: { trackWidth: 28, trackHeight: 16, thumbSize: 12 },\n m: { trackWidth: 36, trackHeight: 20, thumbSize: 16 },\n l: { trackWidth: 44, trackHeight: 24, thumbSize: 20 },\n xl: { trackWidth: 52, trackHeight: 28, thumbSize: 24 },\n};\n\nconst ANIMATION_DURATION = 200;\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport const Switch = ({\n value,\n onValueChange,\n childrenLeft,\n childrenRight,\n size = 'm',\n disabled = false,\n style,\n testID,\n}: SwitchProps) => {\n const { colors } = useTheme();\n const cfg = SIZE_CONFIG[size];\n const animValue = useRef(new Animated.Value(value ? 1 : 0)).current;\n\n // Animate thumb on value change\n useEffect(() => {\n const anim = Animated.timing(animValue, {\n toValue: value ? 1 : 0,\n duration: ANIMATION_DURATION,\n easing: Easing.out(Easing.cubic),\n useNativeDriver: true,\n });\n anim.start();\n return () => anim.stop();\n }, [value, animValue]);\n\n // Max translation: from left edge + padding to right edge - padding - thumbSize\n const travelX = cfg.trackWidth - cfg.thumbSize - THUMB_PADDING * 2;\n const thumbTranslateX = animValue.interpolate({\n inputRange: [0, 1],\n outputRange: [0, travelX],\n });\n\n const t = colors.toggle;\n const { fontFamily } = useTheme();\n const labelColor = disabled ? t.labelDisabled : t.label;\n\n // Render string children as styled Text; ReactNode children pass through as-is\n const renderChild = (child: React.ReactNode) =>\n typeof child === 'string'\n ? <Text style={{ color: labelColor, fontFamily }}>{child}</Text>\n : child;\n\n const trackColor = disabled\n ? (value ? t.trackOnDisabled : t.trackOffDisabled)\n : (value ? t.trackOn : t.trackOff);\n const thumbColor = disabled\n ? t.thumbDisabled\n : (value ? t.thumbOn : t.thumbOff);\n\n const track = (\n <View\n style={[\n styles.track,\n {\n width: cfg.trackWidth,\n height: cfg.trackHeight,\n borderRadius: cfg.trackHeight / 2,\n backgroundColor: trackColor,\n shadowColor: colors.shadow.minimal,\n },\n ]}\n >\n <Animated.View\n style={[\n styles.thumb,\n {\n width: cfg.thumbSize,\n height: cfg.thumbSize,\n borderRadius: cfg.thumbSize / 2,\n top: THUMB_PADDING,\n left: THUMB_PADDING,\n backgroundColor: thumbColor,\n transform: [{ translateX: thumbTranslateX }],\n shadowColor: colors.shadow.minimal,\n },\n ]}\n />\n </View>\n );\n\n return (\n <Pressable\n onPress={disabled ? undefined : () => onValueChange(!value)}\n accessibilityRole=\"switch\"\n accessibilityState={{ checked: value, disabled }}\n style={[styles.wrapper, style]}\n testID={testID}\n >\n {renderChild(childrenLeft)}\n {track}\n {renderChild(childrenRight)}\n </Pressable>\n );\n};\n\n"]}
@@ -0,0 +1,29 @@
1
+ export declare const styles: {
2
+ wrapper: {
3
+ flexDirection: "row";
4
+ alignItems: "center";
5
+ gap: number;
6
+ alignSelf: "flex-start";
7
+ };
8
+ track: {
9
+ overflow: "hidden";
10
+ shadowOffset: {
11
+ width: number;
12
+ height: number;
13
+ };
14
+ shadowOpacity: number;
15
+ shadowRadius: number;
16
+ elevation: number;
17
+ };
18
+ thumb: {
19
+ position: "absolute";
20
+ shadowOffset: {
21
+ width: number;
22
+ height: number;
23
+ };
24
+ shadowOpacity: number;
25
+ shadowRadius: number;
26
+ elevation: number;
27
+ };
28
+ };
29
+ //# sourceMappingURL=Switch.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switch.styles.d.ts","sourceRoot":"","sources":["../../../src/components/Switch/Switch.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBjB,CAAC"}