@situaction/traquiste-mobile 1.0.0 → 1.1.0

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 (463) hide show
  1. package/README.md +60 -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 +11 -5
  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 +15 -15
  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 +254 -0
  51. package/build/components/Calendar/Calendar.styles.d.ts.map +1 -0
  52. package/build/components/Calendar/Calendar.styles.js +231 -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 +78 -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 +12 -11
  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 +104 -0
  221. package/build/components/Input/Input.js.map +1 -0
  222. package/build/components/Input/Input.styles.d.ts +34 -0
  223. package/build/components/Input/Input.styles.d.ts.map +1 -0
  224. package/build/components/Input/Input.styles.js +35 -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/ListItem/ListItem.d.ts +42 -0
  231. package/build/components/ListItem/ListItem.d.ts.map +1 -0
  232. package/build/components/ListItem/ListItem.js +66 -0
  233. package/build/components/ListItem/ListItem.js.map +1 -0
  234. package/build/components/ListItem/ListItem.styles.d.ts +66 -0
  235. package/build/components/ListItem/ListItem.styles.d.ts.map +1 -0
  236. package/build/components/ListItem/ListItem.styles.js +70 -0
  237. package/build/components/ListItem/ListItem.styles.js.map +1 -0
  238. package/build/components/ListItem/index.d.ts +3 -0
  239. package/build/components/ListItem/index.d.ts.map +1 -0
  240. package/build/components/ListItem/index.js +2 -0
  241. package/build/components/ListItem/index.js.map +1 -0
  242. package/build/components/MapPin/MapPin.d.ts +61 -0
  243. package/build/components/MapPin/MapPin.d.ts.map +1 -0
  244. package/build/components/MapPin/MapPin.js +118 -0
  245. package/build/components/MapPin/MapPin.js.map +1 -0
  246. package/build/components/MapPin/MapPin.styles.d.ts +93 -0
  247. package/build/components/MapPin/MapPin.styles.d.ts.map +1 -0
  248. package/build/components/MapPin/MapPin.styles.js +101 -0
  249. package/build/components/MapPin/MapPin.styles.js.map +1 -0
  250. package/build/components/MapPin/index.d.ts +3 -0
  251. package/build/components/MapPin/index.d.ts.map +1 -0
  252. package/build/components/MapPin/index.js +2 -0
  253. package/build/components/MapPin/index.js.map +1 -0
  254. package/build/components/MediaPicker/MediaPicker.d.ts +74 -0
  255. package/build/components/MediaPicker/MediaPicker.d.ts.map +1 -0
  256. package/build/components/MediaPicker/MediaPicker.js +43 -0
  257. package/build/components/MediaPicker/MediaPicker.js.map +1 -0
  258. package/build/components/MediaPicker/MediaPicker.styles.d.ts +30 -0
  259. package/build/components/MediaPicker/MediaPicker.styles.d.ts.map +1 -0
  260. package/build/components/MediaPicker/MediaPicker.styles.js +31 -0
  261. package/build/components/MediaPicker/MediaPicker.styles.js.map +1 -0
  262. package/build/components/MediaPicker/index.d.ts +3 -0
  263. package/build/components/MediaPicker/index.d.ts.map +1 -0
  264. package/build/components/MediaPicker/index.js +2 -0
  265. package/build/components/MediaPicker/index.js.map +1 -0
  266. package/build/components/PhotoCard/PhotoCard.d.ts +28 -0
  267. package/build/components/PhotoCard/PhotoCard.d.ts.map +1 -0
  268. package/build/components/PhotoCard/PhotoCard.js +53 -0
  269. package/build/components/PhotoCard/PhotoCard.js.map +1 -0
  270. package/build/components/PhotoCard/PhotoCard.styles.d.ts +47 -0
  271. package/build/components/PhotoCard/PhotoCard.styles.d.ts.map +1 -0
  272. package/build/components/PhotoCard/PhotoCard.styles.js +45 -0
  273. package/build/components/PhotoCard/PhotoCard.styles.js.map +1 -0
  274. package/build/components/PhotoCard/index.d.ts +3 -0
  275. package/build/components/PhotoCard/index.d.ts.map +1 -0
  276. package/build/components/PhotoCard/index.js +2 -0
  277. package/build/components/PhotoCard/index.js.map +1 -0
  278. package/build/components/ProgressStep/ProgressStep.d.ts +9 -0
  279. package/build/components/ProgressStep/ProgressStep.d.ts.map +1 -0
  280. package/build/components/ProgressStep/ProgressStep.js +23 -0
  281. package/build/components/ProgressStep/ProgressStep.js.map +1 -0
  282. package/build/components/ProgressStep/ProgressStep.styles.d.ts +12 -0
  283. package/build/components/ProgressStep/ProgressStep.styles.d.ts.map +1 -0
  284. package/build/components/ProgressStep/ProgressStep.styles.js +13 -0
  285. package/build/components/ProgressStep/ProgressStep.styles.js.map +1 -0
  286. package/build/components/ProgressStep/index.d.ts +3 -0
  287. package/build/components/ProgressStep/index.d.ts.map +1 -0
  288. package/build/components/ProgressStep/index.js +2 -0
  289. package/build/components/ProgressStep/index.js.map +1 -0
  290. package/build/components/RadioButton/RadioButton.d.ts +29 -0
  291. package/build/components/RadioButton/RadioButton.d.ts.map +1 -0
  292. package/build/components/RadioButton/RadioButton.js +71 -0
  293. package/build/components/RadioButton/RadioButton.js.map +1 -0
  294. package/build/components/RadioButton/RadioButton.styles.d.ts +27 -0
  295. package/build/components/RadioButton/RadioButton.styles.d.ts.map +1 -0
  296. package/build/components/RadioButton/RadioButton.styles.js +30 -0
  297. package/build/components/RadioButton/RadioButton.styles.js.map +1 -0
  298. package/build/components/RadioButton/index.d.ts +3 -0
  299. package/build/components/RadioButton/index.d.ts.map +1 -0
  300. package/build/components/RadioButton/index.js +2 -0
  301. package/build/components/RadioButton/index.js.map +1 -0
  302. package/build/components/SearchBar/SearchBar.d.ts +33 -0
  303. package/build/components/SearchBar/SearchBar.d.ts.map +1 -0
  304. package/build/components/SearchBar/SearchBar.js +83 -0
  305. package/build/components/SearchBar/SearchBar.js.map +1 -0
  306. package/build/components/SearchBar/SearchBar.styles.d.ts +19 -0
  307. package/build/components/SearchBar/SearchBar.styles.d.ts.map +1 -0
  308. package/build/components/SearchBar/SearchBar.styles.js +21 -0
  309. package/build/components/SearchBar/SearchBar.styles.js.map +1 -0
  310. package/build/components/SearchBar/index.d.ts +3 -0
  311. package/build/components/SearchBar/index.d.ts.map +1 -0
  312. package/build/components/SearchBar/index.js +2 -0
  313. package/build/components/SearchBar/index.js.map +1 -0
  314. package/build/components/Spinner/Spinner.d.ts +12 -0
  315. package/build/components/Spinner/Spinner.d.ts.map +1 -0
  316. package/build/components/Spinner/Spinner.js +80 -0
  317. package/build/components/Spinner/Spinner.js.map +1 -0
  318. package/build/components/Spinner/Spinner.styles.d.ts +21 -0
  319. package/build/components/Spinner/Spinner.styles.d.ts.map +1 -0
  320. package/build/components/Spinner/Spinner.styles.js +22 -0
  321. package/build/components/Spinner/Spinner.styles.js.map +1 -0
  322. package/build/components/Spinner/index.d.ts +3 -0
  323. package/build/components/Spinner/index.d.ts.map +1 -0
  324. package/build/components/Spinner/index.js +2 -0
  325. package/build/components/Spinner/index.js.map +1 -0
  326. package/build/components/StepSheet/StepSheet.d.ts +77 -0
  327. package/build/components/StepSheet/StepSheet.d.ts.map +1 -0
  328. package/build/components/StepSheet/StepSheet.js +30 -0
  329. package/build/components/StepSheet/StepSheet.js.map +1 -0
  330. package/build/components/StepSheet/StepSheet.styles.d.ts +6 -0
  331. package/build/components/StepSheet/StepSheet.styles.d.ts.map +1 -0
  332. package/build/components/StepSheet/StepSheet.styles.js +7 -0
  333. package/build/components/StepSheet/StepSheet.styles.js.map +1 -0
  334. package/build/components/StepSheet/index.d.ts +3 -0
  335. package/build/components/StepSheet/index.d.ts.map +1 -0
  336. package/build/components/StepSheet/index.js +2 -0
  337. package/build/components/StepSheet/index.js.map +1 -0
  338. package/build/components/Stepper/Stepper.d.ts +50 -0
  339. package/build/components/Stepper/Stepper.d.ts.map +1 -0
  340. package/build/components/Stepper/Stepper.js +48 -0
  341. package/build/components/Stepper/Stepper.js.map +1 -0
  342. package/build/components/Stepper/Stepper.styles.d.ts +27 -0
  343. package/build/components/Stepper/Stepper.styles.d.ts.map +1 -0
  344. package/build/components/Stepper/Stepper.styles.js +28 -0
  345. package/build/components/Stepper/Stepper.styles.js.map +1 -0
  346. package/build/components/Stepper/index.d.ts +3 -0
  347. package/build/components/Stepper/index.d.ts.map +1 -0
  348. package/build/components/Stepper/index.js +2 -0
  349. package/build/components/Stepper/index.js.map +1 -0
  350. package/build/components/Switch/Switch.d.ts +29 -0
  351. package/build/components/Switch/Switch.d.ts.map +1 -0
  352. package/build/components/Switch/Switch.js +83 -0
  353. package/build/components/Switch/Switch.js.map +1 -0
  354. package/build/components/Switch/Switch.styles.d.ts +29 -0
  355. package/build/components/Switch/Switch.styles.d.ts.map +1 -0
  356. package/build/components/Switch/Switch.styles.js +26 -0
  357. package/build/components/Switch/Switch.styles.js.map +1 -0
  358. package/build/components/Switch/index.d.ts +3 -0
  359. package/build/components/Switch/index.d.ts.map +1 -0
  360. package/build/components/Switch/index.js +2 -0
  361. package/build/components/Switch/index.js.map +1 -0
  362. package/build/components/Tab/Tab.d.ts +50 -0
  363. package/build/components/Tab/Tab.d.ts.map +1 -0
  364. package/build/components/Tab/Tab.js +117 -0
  365. package/build/components/Tab/Tab.js.map +1 -0
  366. package/build/components/Tab/Tab.styles.d.ts +55 -0
  367. package/build/components/Tab/Tab.styles.d.ts.map +1 -0
  368. package/build/components/Tab/Tab.styles.js +60 -0
  369. package/build/components/Tab/Tab.styles.js.map +1 -0
  370. package/build/components/Tab/index.d.ts +3 -0
  371. package/build/components/Tab/index.d.ts.map +1 -0
  372. package/build/components/Tab/index.js +2 -0
  373. package/build/components/Tab/index.js.map +1 -0
  374. package/build/components/Tag/Tag.d.ts +4 -0
  375. package/build/components/Tag/Tag.d.ts.map +1 -0
  376. package/build/components/Tag/Tag.js +40 -0
  377. package/build/components/Tag/Tag.js.map +1 -0
  378. package/build/components/Tag/Tag.styles.d.ts +33 -0
  379. package/build/components/Tag/Tag.styles.d.ts.map +1 -0
  380. package/build/components/Tag/Tag.styles.js +43 -0
  381. package/build/components/Tag/Tag.styles.js.map +1 -0
  382. package/build/components/Tag/Tag.types.d.ts +23 -0
  383. package/build/components/Tag/Tag.types.d.ts.map +1 -0
  384. package/build/components/Tag/Tag.types.js +2 -0
  385. package/build/components/Tag/Tag.types.js.map +1 -0
  386. package/build/components/Tag/index.d.ts +3 -0
  387. package/build/components/Tag/index.d.ts.map +1 -0
  388. package/build/components/Tag/index.js +2 -0
  389. package/build/components/Tag/index.js.map +1 -0
  390. package/build/components/navigation/GeneralNav/GeneralNav.d.ts +19 -0
  391. package/build/components/navigation/GeneralNav/GeneralNav.d.ts.map +1 -0
  392. package/build/components/navigation/GeneralNav/GeneralNav.js +27 -0
  393. package/build/components/navigation/GeneralNav/GeneralNav.js.map +1 -0
  394. package/build/components/navigation/GeneralNav/GeneralNav.styles.d.ts +33 -0
  395. package/build/components/navigation/GeneralNav/GeneralNav.styles.d.ts.map +1 -0
  396. package/build/components/navigation/GeneralNav/GeneralNav.styles.js +35 -0
  397. package/build/components/navigation/GeneralNav/GeneralNav.styles.js.map +1 -0
  398. package/build/components/navigation/GeneralNav/index.d.ts +3 -0
  399. package/build/components/navigation/GeneralNav/index.d.ts.map +1 -0
  400. package/build/components/navigation/GeneralNav/index.js +2 -0
  401. package/build/components/navigation/GeneralNav/index.js.map +1 -0
  402. package/build/components/navigation/MobileCanva/MobileCanva.d.ts +11 -0
  403. package/build/components/navigation/MobileCanva/MobileCanva.d.ts.map +1 -0
  404. package/build/components/navigation/MobileCanva/MobileCanva.js +45 -0
  405. package/build/components/navigation/MobileCanva/MobileCanva.js.map +1 -0
  406. package/build/components/navigation/MobileCanva/MobileCanva.styles.d.ts +93 -0
  407. package/build/components/navigation/MobileCanva/MobileCanva.styles.d.ts.map +1 -0
  408. package/build/components/navigation/MobileCanva/MobileCanva.styles.js +94 -0
  409. package/build/components/navigation/MobileCanva/MobileCanva.styles.js.map +1 -0
  410. package/build/components/navigation/MobileCanva/MobileCanva.types.d.ts +21 -0
  411. package/build/components/navigation/MobileCanva/MobileCanva.types.d.ts.map +1 -0
  412. package/build/components/navigation/MobileCanva/MobileCanva.types.js +2 -0
  413. package/build/components/navigation/MobileCanva/MobileCanva.types.js.map +1 -0
  414. package/build/components/navigation/MobileCanva/index.d.ts +3 -0
  415. package/build/components/navigation/MobileCanva/index.d.ts.map +1 -0
  416. package/build/components/navigation/MobileCanva/index.js +2 -0
  417. package/build/components/navigation/MobileCanva/index.js.map +1 -0
  418. package/build/components/navigation/PageNav/PageNav.d.ts +46 -0
  419. package/build/components/navigation/PageNav/PageNav.d.ts.map +1 -0
  420. package/build/components/navigation/PageNav/PageNav.js +48 -0
  421. package/build/components/navigation/PageNav/PageNav.js.map +1 -0
  422. package/build/components/navigation/PageNav/PageNav.styles.d.ts +60 -0
  423. package/build/components/navigation/PageNav/PageNav.styles.d.ts.map +1 -0
  424. package/build/components/navigation/PageNav/PageNav.styles.js +60 -0
  425. package/build/components/navigation/PageNav/PageNav.styles.js.map +1 -0
  426. package/build/components/navigation/PageNav/index.d.ts +3 -0
  427. package/build/components/navigation/PageNav/index.d.ts.map +1 -0
  428. package/build/components/navigation/PageNav/index.js +2 -0
  429. package/build/components/navigation/PageNav/index.js.map +1 -0
  430. package/build/components/navigation/TabBar/TabBar.d.ts +22 -0
  431. package/build/components/navigation/TabBar/TabBar.d.ts.map +1 -0
  432. package/build/components/navigation/TabBar/TabBar.js +13 -0
  433. package/build/components/navigation/TabBar/TabBar.js.map +1 -0
  434. package/build/components/navigation/TabBar/TabBar.styles.d.ts +14 -0
  435. package/build/components/navigation/TabBar/TabBar.styles.d.ts.map +1 -0
  436. package/build/components/navigation/TabBar/TabBar.styles.js +16 -0
  437. package/build/components/navigation/TabBar/TabBar.styles.js.map +1 -0
  438. package/build/components/navigation/TabBar/index.d.ts +3 -0
  439. package/build/components/navigation/TabBar/index.d.ts.map +1 -0
  440. package/build/components/navigation/TabBar/index.js +2 -0
  441. package/build/components/navigation/TabBar/index.js.map +1 -0
  442. package/build/context/BottomSheetContext.d.ts +42 -0
  443. package/build/context/BottomSheetContext.d.ts.map +1 -0
  444. package/build/context/BottomSheetContext.js +51 -0
  445. package/build/context/BottomSheetContext.js.map +1 -0
  446. package/build/context/ThemeContext.d.ts +5 -1
  447. package/build/context/ThemeContext.d.ts.map +1 -1
  448. package/build/context/ThemeContext.js +4 -2
  449. package/build/context/ThemeContext.js.map +1 -1
  450. package/build/index.d.ts +75 -1
  451. package/build/index.d.ts.map +1 -1
  452. package/build/index.js +37 -0
  453. package/build/index.js.map +1 -1
  454. package/build/theme/tokens/dark.d.ts.map +1 -1
  455. package/build/theme/tokens/dark.js +263 -10
  456. package/build/theme/tokens/dark.js.map +1 -1
  457. package/build/theme/tokens/light.d.ts.map +1 -1
  458. package/build/theme/tokens/light.js +252 -7
  459. package/build/theme/tokens/light.js.map +1 -1
  460. package/build/theme/type.d.ts +398 -0
  461. package/build/theme/type.d.ts.map +1 -1
  462. package/build/theme/type.js.map +1 -1
  463. package/package.json +8 -5
package/README.md CHANGED
@@ -1,13 +1,14 @@
1
-
2
1
  # @situaction/traquiste-mobile
3
2
 
4
3
  React Native UI component library for Traquiste — built with Expo + TypeScript strict + native StyleSheet.
5
4
 
6
5
  ## Requirements
7
6
 
8
- - Node.js >= 18
9
- - Xcode (iOS)
10
- - CocoaPods
7
+ Your project must target:
8
+
9
+ - Expo >= 50
10
+ - React >= 18
11
+ - React Native >= 0.74
11
12
 
12
13
  ## Installation
13
14
 
@@ -15,109 +16,78 @@ React Native UI component library for Traquiste — built with Expo + TypeScript
15
16
  npm install @situaction/traquiste-mobile
16
17
  ```
17
18
 
18
- Peer dependencies required in your project:
19
-
20
- ```sh
21
- npm install expo react react-native
22
- ```
19
+ ### Peer dependencies
23
20
 
24
- ---
25
-
26
- ## Development
27
-
28
- ### 1. Clone and install
21
+ Install the following packages in your app if not already present:
29
22
 
30
23
  ```sh
31
- git clone git@bitbucket.org:situaction/traquiste-mobile.git
32
- cd traquiste-mobile
33
- npm install
34
- cd example && npm install --legacy-peer-deps && cd ..
35
- ```
36
-
37
- ### 2. Build the library
38
-
39
- ```sh
40
- npm run build
41
- ```
42
-
43
- ### 3. First time — build the native binary
44
-
45
- The `example/ios/` directory is not committed and must be generated locally.
46
-
47
- ```sh
48
- cd example
49
-
50
- # iOS simulator
51
- npx expo run:ios
52
-
53
- # iOS device (connect via USB)
54
- npx expo run:ios --device
24
+ npm install expo react react-native \
25
+ @gorhom/bottom-sheet \
26
+ react-native-reanimated \
27
+ react-native-gesture-handler \
28
+ react-native-safe-area-context \
29
+ phosphor-react-native
55
30
  ```
56
31
 
57
- > Rebuild required each time a native dependency is added.
32
+ > `@gorhom/bottom-sheet` requires additional setup follow the [official guide](https://ui.gorhom.dev/components/bottom-sheet/installation).
58
33
 
59
- ### 4. Run tests
34
+ ## Setup
60
35
 
61
- ```sh
62
- npm test
63
- ```
36
+ Wrap your app with `ThemeProvider` at the root:
64
37
 
65
- Tests run with Jest + `@testing-library/react-native`. Use `--watchAll=false` for a single run (e.g. in CI):
38
+ ```tsx
39
+ import { ThemeProvider } from '@situaction/traquiste-mobile';
66
40
 
67
- ```sh
68
- npm test -- --watchAll=false
41
+ export default function App() {
42
+ return (
43
+ <ThemeProvider>
44
+ {/* your app */}
45
+ </ThemeProvider>
46
+ );
47
+ }
69
48
  ```
70
49
 
71
- Test files live in `src/` alongside their components: `ComponentName.test.tsx`.
72
-
73
- ### 5. Run Storybook
50
+ ### Custom theme
74
51
 
75
- ```sh
76
- npm run storybook
52
+ ```tsx
53
+ <ThemeProvider
54
+ light={myLightTokens} // override default light tokens
55
+ dark={myDarkTokens} // override default dark tokens
56
+ colorScheme="dark" // force a color scheme (default: system)
57
+ fontFamily="Inter" // override font family (default: 'Urbanist')
58
+ >
77
59
  ```
78
60
 
79
- Storybook runs directly on the simulator/device — not in a browser. Open the `TraquisteMobileExample` app on your device to see the Storybook UI.
80
-
81
- Any change in `src/` is reflected instantly via hot reload.
82
-
83
- > If port 8081 is already in use, Metro will prompt to use another port. Update the bundle location in the app dev menu (shake device → **Change Bundle Location**).
84
-
85
- ---
86
-
87
- ## Scripts
88
-
89
- | Command | Description |
90
- | -------- | ----------- |
91
- | `npm run build` | Compile TypeScript to `build/` |
92
- | `npm run lint` | Type-check without emitting |
93
- | `npm test` | Run Jest tests |
94
- | `npm run storybook` | Start Storybook on simulator/device |
95
-
96
- ## Versioning
97
-
98
- Releases are automated via [semantic-release](https://semantic-release.gitbook.io/) on push to `master` and `develop`.
99
-
100
- Commit convention:
101
-
102
- | Prefix | Effect |
103
- | ------ | ------- |
104
- | `feat:` | Minor release (1.x.0) |
105
- | `fix:` | Patch release (1.0.x) |
106
- | `feat!:` / `BREAKING CHANGE` | Major release (x.0.0) |
107
- | `chore:` / `docs:` / `test:` | No release |
108
-
109
- Branches:
110
-
111
- - `master` → published as `latest` on npm
112
- - `develop` → published as `next` on npm (prerelease)
61
+ ## Components
62
+
63
+ | Component | Description |
64
+ |-----------|-------------|
65
+ | `Button` | Primary, ghost, tertiary, destructive variants |
66
+ | `ButtonAction` | Icon-only action button |
67
+ | `ButtonMap` | Floating map action button |
68
+ | `ButtonMenu` | Tab bar menu button with badge |
69
+ | `Card` / `CardEquip` / `CardProfile` | Equipment and profile cards |
70
+ | `FilterChip` / `FilterNav` | Filter chips and filter bar |
71
+ | `Input` | Text field with label, icons, helper text |
72
+ | `ListItem` | Flexible list row with leading/trailing slots |
73
+ | `MapPin` / `Cluster` | Map markers for react-native-maps |
74
+ | `Tag` / `AssociationTag` | Labels and MAC address badges |
75
+ | `Calendar` | Date picker with range selection |
76
+ | `MediaPicker` | Photo and file upload cards |
77
+ | `BottomSheet` | Controlled bottom sheet with theming |
78
+ | `SearchBar` | Search input with clear button |
79
+ | `Checkbox` / `RadioButton` / `Switch` | Form controls |
80
+ | `Spinner` / `ProgressStep` / `Stepper` | Progress indicators |
81
+ | `GeneralNav` / `PageNav` | Navigation headers |
82
+ | `Tab` / `TabBar` | Tab navigation |
83
+ | `ColorPicker` / `ColorSwatch` | Color selection |
113
84
 
114
85
  ## Stack
115
86
 
116
- - Expo SDK 55 / React Native 0.83.6 / React 19.2
117
- - TypeScript strict
118
- - Storybook React Native v10
119
- - semantic-release + Bitbucket Pipelines
120
- - Zero external styling libraries
87
+ - Expo SDK 55 / React Native 0.83 / React 19
88
+ - TypeScript strict — zero `any`
89
+ - Native `StyleSheet` only — no external styling library
90
+ - `phosphor-react-native` for icons
121
91
 
122
92
  ## License
123
93
 
@@ -0,0 +1,19 @@
1
+ /**
2
+ * AssociationTag — compact rectangular badge with text and optional left/right icons.
3
+ * Used to display beacon/tracker MAC addresses in CardEquip; reusable elsewhere.
4
+ */
5
+ import React from 'react';
6
+ export interface AssociationTagProps {
7
+ /** Label text */
8
+ text: string;
9
+ /** Icon displayed on the left */
10
+ iconLeft?: React.ReactNode;
11
+ /** Icon displayed on the right */
12
+ iconRight?: React.ReactNode;
13
+ /** Background color override */
14
+ backgroundColor?: string;
15
+ /** Text and icon color override */
16
+ textColor?: string;
17
+ }
18
+ export declare function AssociationTag({ text, iconLeft, iconRight, backgroundColor, textColor, }: AssociationTagProps): React.JSX.Element;
19
+ //# sourceMappingURL=AssociationTag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssociationTag.d.ts","sourceRoot":"","sources":["../../../src/components/AssociationTag/AssociationTag.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,MAAM,WAAW,mBAAmB;IAClC,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,kCAAkC;IAClC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,gCAAgC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,eAAe,EACf,SAAS,GACV,EAAE,mBAAmB,qBA2BrB"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * AssociationTag — compact rectangular badge with text and optional left/right icons.
3
+ * Used to display beacon/tracker MAC addresses in CardEquip; reusable elsewhere.
4
+ */
5
+ import React from 'react';
6
+ import { Text, View } from 'react-native';
7
+ import { useTheme } from '../../context/ThemeContext';
8
+ import { styles } from './AssociationTag.styles';
9
+ export function AssociationTag({ text, iconLeft, iconRight, backgroundColor, textColor, }) {
10
+ const { colors, fontFamily } = useTheme();
11
+ const resolvedBg = backgroundColor ?? colors.success.light;
12
+ const resolvedText = textColor ?? colors.text.primary;
13
+ return (<View style={[styles.container, { backgroundColor: resolvedBg }]}>
14
+ {iconLeft != null && (<View style={styles.iconWrapper}>
15
+ {React.isValidElement(iconLeft)
16
+ ? React.cloneElement(iconLeft, { color: resolvedText })
17
+ : iconLeft}
18
+ </View>)}
19
+ <Text style={[styles.text, { color: resolvedText, fontFamily }]} numberOfLines={1}>
20
+ {text}
21
+ </Text>
22
+ {iconRight != null && (<View style={styles.iconWrapper}>
23
+ {React.isValidElement(iconRight)
24
+ ? React.cloneElement(iconRight, { color: resolvedText })
25
+ : iconRight}
26
+ </View>)}
27
+ </View>);
28
+ }
29
+ //# sourceMappingURL=AssociationTag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssociationTag.js","sourceRoot":"","sources":["../../../src/components/AssociationTag/AssociationTag.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAejD,MAAM,UAAU,cAAc,CAAC,EAC7B,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,eAAe,EACf,SAAS,GACW;IACpB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,CAAC;IAE1C,MAAM,UAAU,GAAG,eAAe,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3D,MAAM,YAAY,GAAG,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IAEtD,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC,CAC/D;MAAA,CAAC,QAAQ,IAAI,IAAI,IAAI,CACnB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAC9B;UAAA,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;gBAC7B,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,QAAkD,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;gBACjG,CAAC,CAAC,QAAQ,CACd;QAAA,EAAE,IAAI,CAAC,CACR,CACD;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAChF;QAAA,CAAC,IAAI,CACP;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,SAAS,IAAI,IAAI,IAAI,CACpB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAC9B;UAAA,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC;gBAC9B,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,SAAmD,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;gBAClG,CAAC,CAAC,SAAS,CACf;QAAA,EAAE,IAAI,CAAC,CACR,CACH;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC","sourcesContent":["/**\n * AssociationTag — compact rectangular badge with text and optional left/right icons.\n * Used to display beacon/tracker MAC addresses in CardEquip; reusable elsewhere.\n */\nimport React from 'react';\nimport { Text, View } from 'react-native';\nimport { useTheme } from '../../context/ThemeContext';\nimport { styles } from './AssociationTag.styles';\n\nexport interface AssociationTagProps {\n /** Label text */\n text: string;\n /** Icon displayed on the left */\n iconLeft?: React.ReactNode;\n /** Icon displayed on the right */\n iconRight?: React.ReactNode;\n /** Background color override */\n backgroundColor?: string;\n /** Text and icon color override */\n textColor?: string;\n}\n\nexport function AssociationTag({\n text,\n iconLeft,\n iconRight,\n backgroundColor,\n textColor,\n}: AssociationTagProps) {\n const { colors, fontFamily } = useTheme();\n\n const resolvedBg = backgroundColor ?? colors.success.light;\n const resolvedText = textColor ?? colors.text.primary;\n\n return (\n <View style={[styles.container, { backgroundColor: resolvedBg }]}>\n {iconLeft != null && (\n <View style={styles.iconWrapper}>\n {React.isValidElement(iconLeft)\n ? React.cloneElement(iconLeft as React.ReactElement<{ color?: string }>, { color: resolvedText })\n : iconLeft}\n </View>\n )}\n <Text style={[styles.text, { color: resolvedText, fontFamily }]} numberOfLines={1}>\n {text}\n </Text>\n {iconRight != null && (\n <View style={styles.iconWrapper}>\n {React.isValidElement(iconRight)\n ? React.cloneElement(iconRight as React.ReactElement<{ color?: string }>, { color: resolvedText })\n : iconRight}\n </View>\n )}\n </View>\n );\n}"]}
@@ -0,0 +1,21 @@
1
+ export declare const styles: {
2
+ container: {
3
+ flexDirection: "row";
4
+ alignItems: "center";
5
+ justifyContent: "center";
6
+ gap: number;
7
+ paddingVertical: number;
8
+ paddingHorizontal: number;
9
+ borderRadius: number;
10
+ };
11
+ iconWrapper: {
12
+ flexShrink: number;
13
+ };
14
+ text: {
15
+ fontSize: number;
16
+ fontWeight: "600";
17
+ fontFamily: string;
18
+ flexShrink: number;
19
+ };
20
+ };
21
+ //# sourceMappingURL=AssociationTag.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssociationTag.styles.d.ts","sourceRoot":"","sources":["../../../src/components/AssociationTag/AssociationTag.styles.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;CAmBjB,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Static styles for the AssociationTag component.
3
+ * Dynamic colors (background, text) are applied inline in AssociationTag.tsx.
4
+ */
5
+ import { StyleSheet } from 'react-native';
6
+ export const styles = StyleSheet.create({
7
+ container: {
8
+ flexDirection: 'row',
9
+ alignItems: 'center',
10
+ justifyContent: 'center',
11
+ gap: 4,
12
+ paddingVertical: 4,
13
+ paddingHorizontal: 6,
14
+ borderRadius: 2,
15
+ },
16
+ iconWrapper: {
17
+ flexShrink: 0,
18
+ },
19
+ text: {
20
+ fontSize: 10,
21
+ fontWeight: '600',
22
+ fontFamily: 'Urbanist',
23
+ flexShrink: 1,
24
+ },
25
+ });
26
+ //# sourceMappingURL=AssociationTag.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssociationTag.styles.js","sourceRoot":"","sources":["../../../src/components/AssociationTag/AssociationTag.styles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACtC,SAAS,EAAE;QACT,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;QACxB,GAAG,EAAE,CAAC;QACN,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,CAAC;QACpB,YAAY,EAAE,CAAC;KAChB;IACD,WAAW,EAAE;QACX,UAAU,EAAE,CAAC;KACd;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,UAAU;QACtB,UAAU,EAAE,CAAC;KACd;CACF,CAAC,CAAC","sourcesContent":["/**\n * Static styles for the AssociationTag component.\n * Dynamic colors (background, text) are applied inline in AssociationTag.tsx.\n */\nimport { StyleSheet } from 'react-native';\n\nexport const styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 4,\n paddingVertical: 4,\n paddingHorizontal: 6,\n borderRadius: 2,\n },\n iconWrapper: {\n flexShrink: 0,\n },\n text: {\n fontSize: 10,\n fontWeight: '600',\n fontFamily: 'Urbanist',\n flexShrink: 1,\n },\n});"]}
@@ -0,0 +1,3 @@
1
+ export { AssociationTag } from './AssociationTag';
2
+ export type { AssociationTagProps } from './AssociationTag';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/AssociationTag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { AssociationTag } from './AssociationTag';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/AssociationTag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["export { AssociationTag } from './AssociationTag';\nexport type { AssociationTagProps } from './AssociationTag';"]}
@@ -0,0 +1,36 @@
1
+ /** Bottom sheet — controllable via isOpen/onClose with optional gestures, backdrop and close button */
2
+ import React from 'react';
3
+ export type BottomSheetProps = {
4
+ /** Sheet content */
5
+ children: React.ReactNode;
6
+ /** Whether the sheet is open */
7
+ isOpen: boolean;
8
+ /** Called when the sheet opens */
9
+ onOpen?: () => void;
10
+ /** Called when the sheet closes */
11
+ onClose?: () => void;
12
+ /** Initial height as a fraction of screen height (0 to 1) */
13
+ size?: number;
14
+ /** Allow sliding up to expand to full screen (default: true) */
15
+ expandable?: boolean;
16
+ /** Allow sliding down to close (default: true) */
17
+ closeable?: boolean;
18
+ /** Show a close button (default: false) */
19
+ showCloseButton?: boolean;
20
+ /** Position of the close button (default: 'right') */
21
+ closeButtonPosition?: 'left' | 'right';
22
+ /** Show dark backdrop behind the sheet (default: true) */
23
+ backdrop?: boolean;
24
+ /** Block interactions with content behind the sheet even without a visible backdrop (default: false) */
25
+ blockBackground?: boolean;
26
+ /** Close the sheet when the backdrop is pressed (default: false) */
27
+ closeOnBackdropPress?: boolean;
28
+ /** Auto-size the sheet based on content height instead of a fixed snap point (default: false) */
29
+ autoSize?: boolean;
30
+ /** How the sheet reacts when the keyboard opens */
31
+ keyboardBehavior?: 'extend' | 'fillParent' | 'interactive';
32
+ /** Whether the sheet restores its position when the keyboard closes */
33
+ keyboardBlurBehavior?: 'none' | 'restore';
34
+ };
35
+ export declare const BottomSheet: ({ children, isOpen, onOpen, onClose, size, expandable, closeable, showCloseButton, closeButtonPosition, backdrop, blockBackground, closeOnBackdropPress, autoSize, keyboardBehavior, keyboardBlurBehavior, }: BottomSheetProps) => React.JSX.Element;
36
+ //# sourceMappingURL=BottomSheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../../src/components/BottomSheet/BottomSheet.tsx"],"names":[],"mappings":"AAAA,uGAAuG;AACvG,OAAO,KAA4D,MAAM,OAAO,CAAC;AAYjF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,oBAAoB;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,gCAAgC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACvC,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wGAAwG;IACxG,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oEAAoE;IACpE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iGAAiG;IACjG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,aAAa,CAAC;IAC3D,uEAAuE;IACvE,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,8MAgBzB,gBAAgB,sBAiHlB,CAAC"}
@@ -0,0 +1,76 @@
1
+ /** Bottom sheet — controllable via isOpen/onClose with optional gestures, backdrop and close button */
2
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
+ import { View, TouchableOpacity } from 'react-native';
4
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
5
+ import RNBottomSheet, { BottomSheetView, BottomSheetBackdrop, } from '@gorhom/bottom-sheet';
6
+ import { XIcon } from 'phosphor-react-native';
7
+ import { useTheme } from '../../context/ThemeContext';
8
+ import { styles } from './BottomSheet.styles';
9
+ export const BottomSheet = ({ children, isOpen, onOpen, onClose, size = 0.5, expandable = true, closeable = true, showCloseButton = false, closeButtonPosition = 'right', backdrop = true, blockBackground = false, closeOnBackdropPress = false, autoSize = false, keyboardBehavior, keyboardBlurBehavior = 'restore', }) => {
10
+ const ref = useRef(null);
11
+ // Freeze the initial open state so gorhom starts in the right position on mount
12
+ const [initialIndex] = useState(() => (isOpen ? 0 : -1));
13
+ const didMountRef = useRef(false);
14
+ const { bottom } = useSafeAreaInsets();
15
+ const { colors } = useTheme();
16
+ const snapPoints = autoSize
17
+ ? undefined
18
+ : expandable
19
+ ? [`${Math.round(size * 100)}%`, '100%']
20
+ : [`${Math.round(size * 100)}%`];
21
+ const themedStyles = useMemo(() => ({
22
+ background: {
23
+ borderWidth: 1,
24
+ borderColor: colors.bottomSheet.border,
25
+ borderTopLeftRadius: 16,
26
+ borderTopRightRadius: 16,
27
+ borderBottomLeftRadius: 0,
28
+ borderBottomRightRadius: 0,
29
+ backgroundColor: colors.bottomSheet.background,
30
+ },
31
+ handle: {
32
+ backgroundColor: colors.bottomSheet.handle,
33
+ width: 36,
34
+ height: 4,
35
+ },
36
+ }), [colors]);
37
+ useEffect(() => {
38
+ // Skip the initial mount — gorhom's index prop handles the initial state
39
+ if (!didMountRef.current) {
40
+ didMountRef.current = true;
41
+ if (isOpen)
42
+ onOpen?.();
43
+ return;
44
+ }
45
+ if (isOpen) {
46
+ ref.current?.snapToIndex(0);
47
+ onOpen?.();
48
+ }
49
+ else {
50
+ ref.current?.close();
51
+ }
52
+ }, [isOpen, onOpen]);
53
+ const handleChange = useCallback((index) => {
54
+ if (index === -1)
55
+ onClose?.();
56
+ }, [onClose]);
57
+ const renderBackdrop = useCallback((props) => (<BottomSheetBackdrop {...props} disappearsOnIndex={-1} appearsOnIndex={0} pressBehavior={closeOnBackdropPress ? 'close' : 'none'} opacity={backdrop ? 0.5 : 0}/>), [backdrop, closeOnBackdropPress]);
58
+ const closeButtonStyle = [
59
+ styles.closeButton,
60
+ closeButtonPosition === 'left' ? styles.closeLeft : styles.closeRight,
61
+ ];
62
+ return (<RNBottomSheet ref={ref} index={initialIndex} snapPoints={snapPoints} enableDynamicSizing={autoSize} enablePanDownToClose={closeable} enableOverDrag={false} enableHandlePanningGesture={expandable || closeable} enableContentPanningGesture={expandable || closeable} onChange={handleChange} keyboardBehavior={keyboardBehavior} keyboardBlurBehavior={keyboardBlurBehavior} backdropComponent={backdrop || blockBackground ? renderBackdrop : undefined} handleIndicatorStyle={expandable || closeable ? themedStyles.handle : styles.handleHidden} backgroundStyle={themedStyles.background} style={styles.shadow}>
63
+ {autoSize ? (<BottomSheetView style={styles.content}>
64
+ {showCloseButton && (<TouchableOpacity onPress={onClose} style={closeButtonStyle} hitSlop={8}>
65
+ <XIcon size={20} color={colors.bottomSheet.closeIcon}/>
66
+ </TouchableOpacity>)}
67
+ {children}
68
+ </BottomSheetView>) : (<View style={[styles.content, { paddingBottom: bottom }]}>
69
+ {showCloseButton && (<TouchableOpacity onPress={onClose} style={closeButtonStyle} hitSlop={8}>
70
+ <XIcon size={20} color={colors.bottomSheet.closeIcon}/>
71
+ </TouchableOpacity>)}
72
+ {children}
73
+ </View>)}
74
+ </RNBottomSheet>);
75
+ };
76
+ //# sourceMappingURL=BottomSheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BottomSheet.js","sourceRoot":"","sources":["../../../src/components/BottomSheet/BottomSheet.tsx"],"names":[],"mappings":"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","sourcesContent":["/** Bottom sheet — controllable via isOpen/onClose with optional gestures, backdrop and close button */\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { View, TouchableOpacity } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport RNBottomSheet, {\n BottomSheetView,\n BottomSheetBackdrop,\n} from '@gorhom/bottom-sheet';\nimport type { BottomSheetBackdropProps } from '@gorhom/bottom-sheet';\nimport { XIcon } from 'phosphor-react-native';\nimport { useTheme } from '../../context/ThemeContext';\nimport { styles } from './BottomSheet.styles';\n\nexport type BottomSheetProps = {\n /** Sheet content */\n children: React.ReactNode;\n /** Whether the sheet is open */\n isOpen: boolean;\n /** Called when the sheet opens */\n onOpen?: () => void;\n /** Called when the sheet closes */\n onClose?: () => void;\n /** Initial height as a fraction of screen height (0 to 1) */\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 a close button (default: false) */\n showCloseButton?: boolean;\n /** Position of the close button (default: 'right') */\n closeButtonPosition?: 'left' | 'right';\n /** Show dark backdrop behind the sheet (default: true) */\n backdrop?: boolean;\n /** Block interactions with content behind the sheet even without a visible backdrop (default: false) */\n blockBackground?: boolean;\n /** Close the sheet when the backdrop is pressed (default: false) */\n closeOnBackdropPress?: boolean;\n /** Auto-size the sheet based on content height instead of a fixed snap point (default: false) */\n autoSize?: boolean;\n /** How the sheet reacts when the keyboard opens */\n keyboardBehavior?: 'extend' | 'fillParent' | 'interactive';\n /** Whether the sheet restores its position when the keyboard closes */\n keyboardBlurBehavior?: 'none' | 'restore';\n};\n\nexport const BottomSheet = ({\n children,\n isOpen,\n onOpen,\n onClose,\n size = 0.5,\n expandable = true,\n closeable = true,\n showCloseButton = false,\n closeButtonPosition = 'right',\n backdrop = true,\n blockBackground = false,\n closeOnBackdropPress = false,\n autoSize = false,\n keyboardBehavior,\n keyboardBlurBehavior = 'restore',\n}: BottomSheetProps) => {\n const ref = useRef<RNBottomSheet>(null);\n // Freeze the initial open state so gorhom starts in the right position on mount\n const [initialIndex] = useState(() => (isOpen ? 0 : -1));\n const didMountRef = useRef(false);\n const { bottom } = useSafeAreaInsets();\n const { colors } = useTheme();\n\n const snapPoints = autoSize\n ? undefined\n : expandable\n ? [`${Math.round(size * 100)}%`, '100%']\n : [`${Math.round(size * 100)}%`];\n\n const themedStyles = useMemo(\n () => ({\n background: {\n borderWidth: 1,\n borderColor: colors.bottomSheet.border,\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n backgroundColor: colors.bottomSheet.background,\n },\n handle: {\n backgroundColor: colors.bottomSheet.handle,\n width: 36,\n height: 4,\n },\n }),\n [colors],\n );\n\n useEffect(() => {\n // Skip the initial mount — gorhom's index prop handles the initial state\n if (!didMountRef.current) {\n didMountRef.current = true;\n if (isOpen) onOpen?.();\n return;\n }\n if (isOpen) {\n ref.current?.snapToIndex(0);\n onOpen?.();\n } else {\n ref.current?.close();\n }\n }, [isOpen, onOpen]);\n\n const handleChange = useCallback(\n (index: number) => {\n if (index === -1) onClose?.();\n },\n [onClose],\n );\n\n const renderBackdrop = useCallback(\n (props: BottomSheetBackdropProps) => (\n <BottomSheetBackdrop\n {...props}\n disappearsOnIndex={-1}\n appearsOnIndex={0}\n pressBehavior={closeOnBackdropPress ? 'close' : 'none'}\n opacity={backdrop ? 0.5 : 0}\n />\n ),\n [backdrop, closeOnBackdropPress],\n );\n\n const closeButtonStyle = [\n styles.closeButton,\n closeButtonPosition === 'left' ? styles.closeLeft : styles.closeRight,\n ];\n\n return (\n <RNBottomSheet\n ref={ref}\n index={initialIndex}\n snapPoints={snapPoints}\n enableDynamicSizing={autoSize}\n enablePanDownToClose={closeable}\n enableOverDrag={false}\n enableHandlePanningGesture={expandable || closeable}\n enableContentPanningGesture={expandable || closeable}\n onChange={handleChange}\n keyboardBehavior={keyboardBehavior}\n keyboardBlurBehavior={keyboardBlurBehavior}\n backdropComponent={backdrop || blockBackground ? renderBackdrop : undefined}\n handleIndicatorStyle={expandable || closeable ? themedStyles.handle : styles.handleHidden}\n backgroundStyle={themedStyles.background}\n style={styles.shadow}\n >\n {autoSize ? (\n <BottomSheetView style={styles.content}>\n {showCloseButton && (\n <TouchableOpacity onPress={onClose} style={closeButtonStyle} hitSlop={8}>\n <XIcon size={20} color={colors.bottomSheet.closeIcon} />\n </TouchableOpacity>\n )}\n {children}\n </BottomSheetView>\n ) : (\n <View style={[styles.content, { paddingBottom: bottom }]}>\n {showCloseButton && (\n <TouchableOpacity onPress={onClose} style={closeButtonStyle} hitSlop={8}>\n <XIcon size={20} color={colors.bottomSheet.closeIcon} />\n </TouchableOpacity>\n )}\n {children}\n </View>\n )}\n </RNBottomSheet>\n );\n};"]}
@@ -0,0 +1,32 @@
1
+ export declare const styles: {
2
+ content: {
3
+ flex: number;
4
+ };
5
+ handleHidden: {
6
+ height: number;
7
+ width: number;
8
+ };
9
+ closeButton: {
10
+ position: "absolute";
11
+ top: number;
12
+ padding: number;
13
+ zIndex: number;
14
+ };
15
+ closeRight: {
16
+ right: number;
17
+ };
18
+ closeLeft: {
19
+ left: number;
20
+ };
21
+ shadow: {
22
+ shadowColor: string;
23
+ shadowOffset: {
24
+ width: number;
25
+ height: number;
26
+ };
27
+ shadowOpacity: number;
28
+ shadowRadius: number;
29
+ elevation: number;
30
+ };
31
+ };
32
+ //# sourceMappingURL=BottomSheet.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BottomSheet.styles.d.ts","sourceRoot":"","sources":["../../../src/components/BottomSheet/BottomSheet.styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BjB,CAAC"}
@@ -0,0 +1,31 @@
1
+ /** Static layout styles for BottomSheet — all colors injected via useTheme() */
2
+ import { StyleSheet } from 'react-native';
3
+ export const styles = StyleSheet.create({
4
+ content: {
5
+ flex: 1,
6
+ },
7
+ handleHidden: {
8
+ height: 0,
9
+ width: 0,
10
+ },
11
+ closeButton: {
12
+ position: 'absolute',
13
+ top: 10,
14
+ padding: 4,
15
+ zIndex: 1,
16
+ },
17
+ closeRight: {
18
+ right: 10,
19
+ },
20
+ closeLeft: {
21
+ left: 10,
22
+ },
23
+ shadow: {
24
+ shadowColor: '#0f0f0f',
25
+ shadowOffset: { width: 0, height: -4 },
26
+ shadowOpacity: 0.08,
27
+ shadowRadius: 12,
28
+ elevation: 8,
29
+ },
30
+ });
31
+ //# sourceMappingURL=BottomSheet.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BottomSheet.styles.js","sourceRoot":"","sources":["../../../src/components/BottomSheet/BottomSheet.styles.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE;QACP,IAAI,EAAE,CAAC;KACR;IACD,YAAY,EAAE;QACZ,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,CAAC;KACT;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,EAAE;QACP,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;KACV;IACD,UAAU,EAAE;QACV,KAAK,EAAE,EAAE;KACV;IACD,SAAS,EAAE;QACT,IAAI,EAAE,EAAE;KACT;IACD,MAAM,EAAE;QACN,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE;QACtC,aAAa,EAAE,IAAI;QACnB,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,CAAC;KACb;CACF,CAAC,CAAC","sourcesContent":["/** Static layout styles for BottomSheet — all colors injected via useTheme() */\nimport { StyleSheet } from 'react-native';\n\nexport const styles = StyleSheet.create({\n content: {\n flex: 1,\n },\n handleHidden: {\n height: 0,\n width: 0,\n },\n closeButton: {\n position: 'absolute',\n top: 10,\n padding: 4,\n zIndex: 1,\n },\n closeRight: {\n right: 10,\n },\n closeLeft: {\n left: 10,\n },\n shadow: {\n shadowColor: '#0f0f0f',\n shadowOffset: { width: 0, height: -4 },\n shadowOpacity: 0.08,\n shadowRadius: 12,\n elevation: 8,\n },\n});"]}
@@ -0,0 +1,3 @@
1
+ export { BottomSheet } from './BottomSheet';
2
+ export type { BottomSheetProps } from './BottomSheet';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/BottomSheet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { BottomSheet } from './BottomSheet';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/BottomSheet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC","sourcesContent":["export { BottomSheet } from './BottomSheet';\nexport type { BottomSheetProps } from './BottomSheet';"]}
@@ -26,6 +26,10 @@ export interface ButtonProps {
26
26
  onPress?: () => void;
27
27
  /** Additional container styles */
28
28
  style?: StyleProp<ViewStyle>;
29
+ /** Accessibility label for screen readers — defaults to label when omitted */
30
+ accessibilityLabel?: string;
31
+ /** Test identifier */
32
+ testID?: string;
29
33
  }
30
- export declare function Button({ variant, size, content, label, iconLeft, iconRight, disabled, onPress, style, }: ButtonProps): React.JSX.Element;
34
+ export declare function Button({ variant, size, content, label, iconLeft, iconRight, disabled, onPress, style, accessibilityLabel, testID, }: ButtonProps): React.JSX.Element;
31
35
  //# sourceMappingURL=Button.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,aAAa,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AAChD,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,mBAAmB,GAAG,WAAW,CAAC;AAE5E,MAAM,WAAW,WAAW;IAC1B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,kBAAkB;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,qBAAqB;IACrB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC9B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC/B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,kCAAkC;IAClC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAaD,wBAAgB,MAAM,CAAC,EACrB,OAAmB,EACnB,IAAU,EACV,OAAqB,EACrB,KAAK,EACL,QAAQ,EACR,SAAS,EACT,QAAgB,EAChB,OAAO,EACP,KAAK,GACN,EAAE,WAAW,qBAwEb"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,aAAa,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AAChD,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,mBAAmB,GAAG,WAAW,CAAC;AAE5E,MAAM,WAAW,WAAW;IAC1B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,kBAAkB;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,qBAAqB;IACrB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC9B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC/B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,kCAAkC;IAClC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAaD,wBAAgB,MAAM,CAAC,EACrB,OAAmB,EACnB,IAAU,EACV,OAAqB,EACrB,KAAK,EACL,QAAQ,EACR,SAAS,EACT,QAAgB,EAChB,OAAO,EACP,KAAK,EACL,kBAAkB,EAClB,MAAM,GACP,EAAE,WAAW,qBAiFb"}
@@ -13,9 +13,9 @@ const SIZE_TOKENS = {
13
13
  XL: { height: 60, paddingVertical: 16, paddingHorizontal: 32, gap: 12, borderRadius: 8, iconSize: 24, fontSize: 18, lineHeight: 26 },
14
14
  };
15
15
  // --- Component ---
16
- export function Button({ variant = 'primary', size = 'M', content = 'icon-both', label, iconLeft, iconRight, disabled = false, onPress, style, }) {
16
+ export function Button({ variant = 'primary', size = 'M', content = 'icon-both', label, iconLeft, iconRight, disabled = false, onPress, style, accessibilityLabel, testID, }) {
17
17
  const [pressed, setPressed] = useState(false);
18
- const { colors } = useTheme();
18
+ const { colors, fontFamily } = useTheme();
19
19
  const sizeTokens = SIZE_TOKENS[size];
20
20
  const state = disabled ? 'disabled' : pressed ? 'pressed' : 'default';
21
21
  const colorTokens = colors.button[variant][state];
@@ -40,7 +40,7 @@ export function Button({ variant = 'primary', size = 'M', content = 'icon-both',
40
40
  color: colorTokens.text,
41
41
  fontSize: sizeTokens.fontSize,
42
42
  lineHeight: sizeTokens.lineHeight,
43
- fontFamily: 'Urbanist',
43
+ fontFamily,
44
44
  fontWeight: '500',
45
45
  };
46
46
  // Clone icon elements to inject size and color from active theme state
@@ -53,12 +53,18 @@ export function Button({ variant = 'primary', size = 'M', content = 'icon-both',
53
53
  ...icon.props,
54
54
  });
55
55
  };
56
+ const sharedA11y = {
57
+ accessibilityRole: 'button',
58
+ accessibilityLabel: accessibilityLabel ?? label,
59
+ accessibilityState: { disabled },
60
+ testID,
61
+ };
56
62
  if (isIconOnly) {
57
- return (<Pressable pointerEvents={disabled ? 'none' : 'auto'} onPressIn={() => setPressed(true)} onPressOut={() => setPressed(false)} onPress={disabled ? undefined : onPress} style={[containerStyle, style]}>
63
+ return (<Pressable pointerEvents={disabled ? 'none' : 'auto'} onPressIn={() => setPressed(true)} onPressOut={() => setPressed(false)} onPress={disabled ? undefined : onPress} style={[containerStyle, style]} {...sharedA11y}>
58
64
  {cloneIcon(iconLeft)}
59
65
  </Pressable>);
60
66
  }
61
- return (<Pressable pointerEvents={disabled ? 'none' : 'auto'} onPressIn={() => setPressed(true)} onPressOut={() => setPressed(false)} onPress={disabled ? undefined : onPress} style={[containerStyle, style]}>
67
+ return (<Pressable pointerEvents={disabled ? 'none' : 'auto'} onPressIn={() => setPressed(true)} onPressOut={() => setPressed(false)} onPress={disabled ? undefined : onPress} style={[containerStyle, style]} {...sharedA11y}>
62
68
  {cloneIcon(iconLeft)}
63
69
  {label != null && <Text style={textStyle}>{label}</Text>}
64
70
  {cloneIcon(iconRight)}