@admin-layout/gluestack-ui-mobile 11.0.1-alpha.0 → 11.0.3-alpha.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 (429) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/lib/components/Fallback.js +12 -12
  3. package/lib/components/Fallback.js.map +1 -1
  4. package/lib/components/Layout/components/BasicLayout.js +2 -2
  5. package/lib/components/Layout/components/BasicLayout.js.map +1 -1
  6. package/lib/components/Layout/components/BottomTabBar.js +6 -6
  7. package/lib/components/Layout/components/BottomTabBar.js.map +1 -1
  8. package/lib/components/Layout/components/Drawer.js +16 -17
  9. package/lib/components/Layout/components/Drawer.js.map +1 -1
  10. package/lib/components/Layout/components/Header.js +12 -15
  11. package/lib/components/Layout/components/Header.js.map +1 -1
  12. package/lib/components/Layout/components/Sample.js +1 -1
  13. package/lib/components/Layout/components/Sample.js.map +1 -1
  14. package/lib/components/Layout/components/SettingDrawer/LayoutButton.js +9 -9
  15. package/lib/components/Layout/components/SettingDrawer/LayoutButton.js.map +1 -1
  16. package/lib/components/Layout/components/SettingDrawer/SettingDrawer.js +37 -36
  17. package/lib/components/Layout/components/SettingDrawer/SettingDrawer.js.map +1 -1
  18. package/lib/components/Layout/components/SettingDrawer/ThemeColorButton.js +13 -2
  19. package/lib/components/Layout/components/SettingDrawer/ThemeColorButton.js.map +1 -1
  20. package/lib/components/Layout/components/SideBar.js +7 -10
  21. package/lib/components/Layout/components/SideBar.js.map +1 -1
  22. package/lib/components/ToastAlert.d.ts +1 -1
  23. package/lib/components/ToastAlert.js +4 -4
  24. package/lib/components/ToastAlert.js.map +1 -1
  25. package/lib/components/UnAuthenticatedComponent.js +9 -9
  26. package/lib/components/UnAuthenticatedComponent.js.map +1 -1
  27. package/lib/components/WithConfiguration.js +1 -1
  28. package/lib/components/WithConfiguration.js.map +1 -1
  29. package/lib/components/WithPermission.d.ts +1 -1
  30. package/lib/components/WithPermission.js +1 -1
  31. package/lib/components/WithPermission.js.map +1 -1
  32. package/lib/components/WithPolicy.js +1 -1
  33. package/lib/components/WithPolicy.js.map +1 -1
  34. package/lib/components/index.d.ts +1 -0
  35. package/lib/components/index.js +1 -0
  36. package/lib/components/index.js.map +1 -1
  37. package/lib/components/ui/IconSymbol.d.ts +19 -0
  38. package/lib/components/ui/IconSymbol.ios.d.ts +10 -0
  39. package/lib/components/ui/IconSymbol.ios.js +12 -0
  40. package/lib/components/ui/IconSymbol.ios.js.map +1 -0
  41. package/lib/components/ui/IconSymbol.js +21 -0
  42. package/lib/components/ui/IconSymbol.js.map +1 -0
  43. package/lib/components/ui/TabBarBackground.d.ts +2 -0
  44. package/lib/components/ui/TabBarBackground.ios.d.ts +3 -0
  45. package/lib/components/ui/TabBarBackground.ios.js +20 -0
  46. package/lib/components/ui/TabBarBackground.ios.js.map +1 -0
  47. package/lib/components/ui/TabBarBackground.js +6 -0
  48. package/lib/components/ui/TabBarBackground.js.map +1 -0
  49. package/lib/components/ui/accordion/index.d.ts +193 -0
  50. package/lib/components/ui/accordion/index.js +177 -0
  51. package/lib/components/ui/accordion/index.js.map +1 -0
  52. package/lib/components/ui/actionsheet/index.d.ts +735 -0
  53. package/lib/components/ui/actionsheet/index.js +274 -0
  54. package/lib/components/ui/actionsheet/index.js.map +1 -0
  55. package/lib/components/ui/alert/index.d.ts +479 -0
  56. package/lib/components/ui/alert/index.js +153 -0
  57. package/lib/components/ui/alert/index.js.map +1 -0
  58. package/lib/components/ui/alert-dialog/index.d.ts +59 -0
  59. package/lib/components/ui/alert-dialog/index.js +137 -0
  60. package/lib/components/ui/alert-dialog/index.js.map +1 -0
  61. package/lib/components/ui/avatar/index.d.ts +144 -0
  62. package/lib/components/ui/avatar/index.js +99 -0
  63. package/lib/components/ui/avatar/index.js.map +1 -0
  64. package/lib/components/ui/badge/index.d.ts +386 -0
  65. package/lib/components/ui/badge/index.js +139 -0
  66. package/lib/components/ui/badge/index.js.map +1 -0
  67. package/lib/components/ui/box/index.d.ts +7 -0
  68. package/lib/components/ui/box/index.js +9 -0
  69. package/lib/components/ui/box/index.js.map +1 -0
  70. package/lib/components/ui/box/index.web.d.ts +6 -0
  71. package/lib/components/ui/box/index.web.js +8 -0
  72. package/lib/components/ui/box/index.web.js.map +1 -0
  73. package/lib/components/ui/box/styles.d.ts +1 -0
  74. package/lib/components/ui/box/styles.js +9 -0
  75. package/lib/components/ui/box/styles.js.map +1 -0
  76. package/lib/components/ui/button/index.d.ts +529 -0
  77. package/lib/components/ui/button/index.js +280 -0
  78. package/lib/components/ui/button/index.js.map +1 -0
  79. package/lib/components/ui/card/index.d.ts +129 -0
  80. package/lib/components/ui/card/index.js +9 -0
  81. package/lib/components/ui/card/index.js.map +1 -0
  82. package/lib/components/ui/card/index.web.d.ts +126 -0
  83. package/lib/components/ui/card/index.web.js +8 -0
  84. package/lib/components/ui/card/index.web.js.map +1 -0
  85. package/lib/components/ui/card/styles.d.ts +123 -0
  86. package/lib/components/ui/card/styles.js +20 -0
  87. package/lib/components/ui/card/styles.js.map +1 -0
  88. package/lib/components/ui/center/index.d.ts +5 -0
  89. package/lib/components/ui/center/index.js +9 -0
  90. package/lib/components/ui/center/index.js.map +1 -0
  91. package/lib/components/ui/center/index.web.d.ts +4 -0
  92. package/lib/components/ui/center/index.web.js +8 -0
  93. package/lib/components/ui/center/index.web.js.map +1 -0
  94. package/lib/components/ui/center/styles.d.ts +1 -0
  95. package/lib/components/ui/center/styles.js +7 -0
  96. package/lib/components/ui/center/styles.js.map +1 -0
  97. package/lib/components/ui/checkbox/index.d.ts +115 -0
  98. package/lib/components/ui/checkbox/index.js +127 -0
  99. package/lib/components/ui/checkbox/index.js.map +1 -0
  100. package/lib/components/ui/divider/index.d.ts +54 -0
  101. package/lib/components/ui/divider/index.js +22 -0
  102. package/lib/components/ui/divider/index.js.map +1 -0
  103. package/lib/components/ui/drawer/index.d.ts +207 -0
  104. package/lib/components/ui/drawer/index.js +198 -0
  105. package/lib/components/ui/drawer/index.js.map +1 -0
  106. package/lib/components/ui/fab/index.d.ts +520 -0
  107. package/lib/components/ui/fab/index.js +142 -0
  108. package/lib/components/ui/fab/index.js.map +1 -0
  109. package/lib/components/ui/flat-list/index.d.ts +1 -0
  110. package/lib/components/ui/flat-list/index.js +3 -0
  111. package/lib/components/ui/flat-list/index.js.map +1 -0
  112. package/lib/components/ui/form-control/index.d.ts +2072 -0
  113. package/lib/components/ui/form-control/index.js +290 -0
  114. package/lib/components/ui/form-control/index.js.map +1 -0
  115. package/lib/components/ui/gluestack-ui-provider/config.d.ts +4 -0
  116. package/lib/components/ui/gluestack-ui-provider/config.js +287 -0
  117. package/lib/components/ui/gluestack-ui-provider/config.js.map +1 -0
  118. package/lib/components/ui/gluestack-ui-provider/index.d.ts +8 -0
  119. package/lib/components/ui/gluestack-ui-provider/index.js +22 -0
  120. package/lib/components/ui/gluestack-ui-provider/index.js.map +1 -0
  121. package/lib/components/ui/gluestack-ui-provider/index.web.d.ts +7 -0
  122. package/lib/components/ui/gluestack-ui-provider/index.web.js +69 -0
  123. package/lib/components/ui/gluestack-ui-provider/index.web.js.map +1 -0
  124. package/lib/components/ui/gluestack-ui-provider/script.d.ts +1 -0
  125. package/lib/components/ui/gluestack-ui-provider/script.js +17 -0
  126. package/lib/components/ui/gluestack-ui-provider/script.js.map +1 -0
  127. package/lib/components/ui/gluestack-ui-provider/types.d.ts +1 -0
  128. package/lib/components/ui/gluestack-ui-provider/types.js +2 -0
  129. package/lib/components/ui/gluestack-ui-provider/types.js.map +1 -0
  130. package/lib/components/ui/grid/index.d.ts +27 -0
  131. package/lib/components/ui/grid/index.js +175 -0
  132. package/lib/components/ui/grid/index.js.map +1 -0
  133. package/lib/components/ui/grid/index.web.d.ts +23 -0
  134. package/lib/components/ui/grid/index.web.js +20 -0
  135. package/lib/components/ui/grid/index.web.js.map +1 -0
  136. package/lib/components/ui/grid/styles.d.ts +2 -0
  137. package/lib/components/ui/grid/styles.js +11 -0
  138. package/lib/components/ui/grid/styles.js.map +1 -0
  139. package/lib/components/ui/heading/index.d.ts +335 -0
  140. package/lib/components/ui/heading/index.js +135 -0
  141. package/lib/components/ui/heading/index.js.map +1 -0
  142. package/lib/components/ui/heading/index.web.d.ts +335 -0
  143. package/lib/components/ui/heading/index.web.js +113 -0
  144. package/lib/components/ui/heading/index.web.js.map +1 -0
  145. package/lib/components/ui/heading/styles.d.ts +330 -0
  146. package/lib/components/ui/heading/styles.js +43 -0
  147. package/lib/components/ui/heading/styles.js.map +1 -0
  148. package/lib/components/ui/hstack/index.d.ts +150 -0
  149. package/lib/components/ui/hstack/index.js +9 -0
  150. package/lib/components/ui/hstack/index.js.map +1 -0
  151. package/lib/components/ui/hstack/index.web.d.ts +148 -0
  152. package/lib/components/ui/hstack/index.web.js +8 -0
  153. package/lib/components/ui/hstack/index.web.js.map +1 -0
  154. package/lib/components/ui/hstack/styles.d.ts +145 -0
  155. package/lib/components/ui/hstack/styles.js +24 -0
  156. package/lib/components/ui/hstack/styles.js.map +1 -0
  157. package/lib/components/ui/icon/index.d.ts +364 -0
  158. package/lib/components/ui/icon/index.js +565 -0
  159. package/lib/components/ui/icon/index.js.map +1 -0
  160. package/lib/components/ui/icon/index.web.d.ts +489 -0
  161. package/lib/components/ui/icon/index.web.js +555 -0
  162. package/lib/components/ui/icon/index.web.js.map +1 -0
  163. package/lib/components/ui/image/index.d.ts +132 -0
  164. package/lib/components/ui/image/index.js +33 -0
  165. package/lib/components/ui/image/index.js.map +1 -0
  166. package/lib/components/ui/image-background/index.d.ts +3 -0
  167. package/lib/components/ui/image-background/index.js +11 -0
  168. package/lib/components/ui/image-background/index.js.map +1 -0
  169. package/lib/components/ui/index.d.ts +54 -0
  170. package/lib/components/ui/index.js +55 -0
  171. package/lib/components/ui/index.js.map +1 -0
  172. package/lib/components/ui/input/index.d.ts +262 -0
  173. package/lib/components/ui/input/index.js +121 -0
  174. package/lib/components/ui/input/index.js.map +1 -0
  175. package/lib/components/ui/input-accessory-view/index.d.ts +1 -0
  176. package/lib/components/ui/input-accessory-view/index.js +3 -0
  177. package/lib/components/ui/input-accessory-view/index.js.map +1 -0
  178. package/lib/components/ui/keyboard-avoiding-view/index.d.ts +1 -0
  179. package/lib/components/ui/keyboard-avoiding-view/index.js +3 -0
  180. package/lib/components/ui/keyboard-avoiding-view/index.js.map +1 -0
  181. package/lib/components/ui/link/index.d.ts +369 -0
  182. package/lib/components/ui/link/index.js +69 -0
  183. package/lib/components/ui/link/index.js.map +1 -0
  184. package/lib/components/ui/menu/index.d.ts +376 -0
  185. package/lib/components/ui/menu/index.js +120 -0
  186. package/lib/components/ui/menu/index.js.map +1 -0
  187. package/lib/components/ui/modal/index.d.ts +146 -0
  188. package/lib/components/ui/modal/index.js +137 -0
  189. package/lib/components/ui/modal/index.js.map +1 -0
  190. package/lib/components/ui/popover/index.d.ts +310 -0
  191. package/lib/components/ui/popover/index.js +172 -0
  192. package/lib/components/ui/popover/index.js.map +1 -0
  193. package/lib/components/ui/portal/index.d.ts +2 -0
  194. package/lib/components/ui/portal/index.js +9 -0
  195. package/lib/components/ui/portal/index.js.map +1 -0
  196. package/lib/components/ui/pressable/index.d.ts +13 -0
  197. package/lib/components/ui/pressable/index.js +20 -0
  198. package/lib/components/ui/pressable/index.js.map +1 -0
  199. package/lib/components/ui/progress/index.d.ts +174 -0
  200. package/lib/components/ui/progress/index.js +127 -0
  201. package/lib/components/ui/progress/index.js.map +1 -0
  202. package/lib/components/ui/radio/index.d.ts +160 -0
  203. package/lib/components/ui/radio/index.js +122 -0
  204. package/lib/components/ui/radio/index.js.map +1 -0
  205. package/lib/components/ui/refresh-control/index.d.ts +1 -0
  206. package/lib/components/ui/refresh-control/index.js +3 -0
  207. package/lib/components/ui/refresh-control/index.js.map +1 -0
  208. package/lib/components/ui/safe-area-view/index.d.ts +6 -0
  209. package/lib/components/ui/safe-area-view/index.js +9 -0
  210. package/lib/components/ui/safe-area-view/index.js.map +1 -0
  211. package/lib/components/ui/safe-area-view/styles.d.ts +1 -0
  212. package/lib/components/ui/safe-area-view/styles.js +9 -0
  213. package/lib/components/ui/safe-area-view/styles.js.map +1 -0
  214. package/lib/components/ui/scroll-view/index.d.ts +1 -0
  215. package/lib/components/ui/scroll-view/index.js +3 -0
  216. package/lib/components/ui/scroll-view/index.js.map +1 -0
  217. package/lib/components/ui/section-list/index.d.ts +1 -0
  218. package/lib/components/ui/section-list/index.js +3 -0
  219. package/lib/components/ui/section-list/index.js.map +1 -0
  220. package/lib/components/ui/select/index.d.ts +1708 -0
  221. package/lib/components/ui/select/index.js +155 -0
  222. package/lib/components/ui/select/index.js.map +1 -0
  223. package/lib/components/ui/select/select-actionsheet.d.ts +900 -0
  224. package/lib/components/ui/select/select-actionsheet.js +275 -0
  225. package/lib/components/ui/select/select-actionsheet.js.map +1 -0
  226. package/lib/components/ui/skeleton/index.d.ts +268 -0
  227. package/lib/components/ui/skeleton/index.js +63 -0
  228. package/lib/components/ui/skeleton/index.js.map +1 -0
  229. package/lib/components/ui/skeleton/index.web.d.ts +267 -0
  230. package/lib/components/ui/skeleton/index.web.js +37 -0
  231. package/lib/components/ui/skeleton/index.web.js.map +1 -0
  232. package/lib/components/ui/skeleton/styles.d.ts +257 -0
  233. package/lib/components/ui/skeleton/styles.js +35 -0
  234. package/lib/components/ui/skeleton/styles.js.map +1 -0
  235. package/lib/components/ui/slider/index.d.ts +211 -0
  236. package/lib/components/ui/slider/index.js +180 -0
  237. package/lib/components/ui/slider/index.js.map +1 -0
  238. package/lib/components/ui/spinner/index.d.ts +4 -0
  239. package/lib/components/ui/spinner/index.js +15 -0
  240. package/lib/components/ui/spinner/index.js.map +1 -0
  241. package/lib/components/ui/status-bar/index.d.ts +1 -0
  242. package/lib/components/ui/status-bar/index.js +3 -0
  243. package/lib/components/ui/status-bar/index.js.map +1 -0
  244. package/lib/components/ui/switch/index.d.ts +72 -0
  245. package/lib/components/ui/switch/index.js +25 -0
  246. package/lib/components/ui/switch/index.js.map +1 -0
  247. package/lib/components/ui/table/index.d.ts +17 -0
  248. package/lib/components/ui/table/index.js +96 -0
  249. package/lib/components/ui/table/index.js.map +1 -0
  250. package/lib/components/ui/table/index.web.d.ts +10 -0
  251. package/lib/components/ui/table/index.web.js +60 -0
  252. package/lib/components/ui/table/index.web.js.map +1 -0
  253. package/lib/components/ui/table/styles.d.ts +75 -0
  254. package/lib/components/ui/table/styles.js +36 -0
  255. package/lib/components/ui/table/styles.js.map +1 -0
  256. package/lib/components/ui/text/index.d.ts +358 -0
  257. package/lib/components/ui/text/index.js +19 -0
  258. package/lib/components/ui/text/index.js.map +1 -0
  259. package/lib/components/ui/text/index.web.d.ts +6 -0
  260. package/lib/components/ui/text/index.web.js +18 -0
  261. package/lib/components/ui/text/index.web.js.map +1 -0
  262. package/lib/components/ui/text/styles.d.ts +352 -0
  263. package/lib/components/ui/text/styles.js +45 -0
  264. package/lib/components/ui/text/styles.js.map +1 -0
  265. package/lib/components/ui/textarea/index.d.ts +129 -0
  266. package/lib/components/ui/textarea/index.js +52 -0
  267. package/lib/components/ui/textarea/index.js.map +1 -0
  268. package/lib/components/ui/toast/index.d.ts +527 -0
  269. package/lib/components/ui/toast/index.js +165 -0
  270. package/lib/components/ui/toast/index.js.map +1 -0
  271. package/lib/components/ui/tooltip/index.d.ts +391 -0
  272. package/lib/components/ui/tooltip/index.js +75 -0
  273. package/lib/components/ui/tooltip/index.js.map +1 -0
  274. package/lib/components/ui/utils/use-break-point-value.d.ts +14 -0
  275. package/lib/components/ui/utils/use-break-point-value.js +54 -0
  276. package/lib/components/ui/utils/use-break-point-value.js.map +1 -0
  277. package/lib/components/ui/view/index.d.ts +1 -0
  278. package/lib/components/ui/view/index.js +3 -0
  279. package/lib/components/ui/view/index.js.map +1 -0
  280. package/lib/components/ui/virtualized-list/index.d.ts +1 -0
  281. package/lib/components/ui/virtualized-list/index.js +3 -0
  282. package/lib/components/ui/virtualized-list/index.js.map +1 -0
  283. package/lib/components/ui/vstack/index.d.ts +149 -0
  284. package/lib/components/ui/vstack/index.js +9 -0
  285. package/lib/components/ui/vstack/index.js.map +1 -0
  286. package/lib/components/ui/vstack/index.web.d.ts +6 -0
  287. package/lib/components/ui/vstack/index.web.js +8 -0
  288. package/lib/components/ui/vstack/index.web.js.map +1 -0
  289. package/lib/components/ui/vstack/styles.d.ts +145 -0
  290. package/lib/components/ui/vstack/styles.js +24 -0
  291. package/lib/components/ui/vstack/styles.js.map +1 -0
  292. package/lib/components/usePermissionAutoFetch.d.ts +19 -7
  293. package/lib/components/with-interactions-lifecycle-managed.js +13 -11
  294. package/lib/components/with-interactions-lifecycle-managed.js.map +1 -1
  295. package/lib/components/with-interactions-managed.js +3 -3
  296. package/lib/components/with-interactions-managed.js.map +1 -1
  297. package/lib/containers/layout/ProLayout.js +2 -2
  298. package/lib/containers/layout/ProLayout.js.map +1 -1
  299. package/lib/global.css +3 -0
  300. package/lib/gluestack-ui-base-config.d.ts +8 -0
  301. package/lib/gluestack-ui-base-config.js +12 -0
  302. package/lib/gluestack-ui-base-config.js.map +1 -0
  303. package/lib/gluestack-ui.config.json +10 -0
  304. package/lib/index.d.ts +0 -3
  305. package/lib/index.js +5 -5
  306. package/lib/index.js.map +1 -1
  307. package/lib/nativewind-env.d.ts +1 -0
  308. package/lib/tailwind-base-config.d.ts +194 -0
  309. package/lib/tailwind-base-config.js +197 -0
  310. package/lib/tailwind-base-config.js.map +1 -0
  311. package/lib/tailwind.config.d.ts +1 -0
  312. package/lib/tailwind.config.js +197 -0
  313. package/lib/tailwind.config.js.map +1 -0
  314. package/lib/utils/generateMobileNavigations.js +26 -2
  315. package/lib/utils/generateMobileNavigations.js.map +1 -1
  316. package/package.json +39 -8
  317. package/src/components/Fallback.tsx +54 -58
  318. package/src/components/Layout/components/BasicLayout.tsx +2 -2
  319. package/src/components/Layout/components/BottomTabBar.tsx +92 -101
  320. package/src/components/Layout/components/Drawer.tsx +31 -28
  321. package/src/components/Layout/components/Header.tsx +26 -27
  322. package/src/components/Layout/components/Sample.tsx +1 -1
  323. package/src/components/Layout/components/SettingDrawer/LayoutButton.tsx +15 -29
  324. package/src/components/Layout/components/SettingDrawer/SettingDrawer.tsx +49 -57
  325. package/src/components/Layout/components/SettingDrawer/ThemeColorButton.tsx +14 -5
  326. package/src/components/Layout/components/SideBar.tsx +12 -17
  327. package/src/components/ToastAlert.tsx +13 -13
  328. package/src/components/UnAuthenticatedComponent.tsx +19 -27
  329. package/src/components/WithConfiguration.tsx +1 -1
  330. package/src/components/WithPermission.tsx +1 -1
  331. package/src/components/WithPolicy.tsx +1 -1
  332. package/src/components/index.ts +1 -0
  333. package/src/components/ui/IconSymbol.ios.tsx +33 -0
  334. package/src/components/ui/IconSymbol.tsx +40 -0
  335. package/src/components/ui/TabBarBackground.ios.tsx +23 -0
  336. package/src/components/ui/TabBarBackground.tsx +6 -0
  337. package/src/components/ui/accordion/index.tsx +304 -0
  338. package/src/components/ui/actionsheet/index.tsx +499 -0
  339. package/src/components/ui/alert/index.tsx +205 -0
  340. package/src/components/ui/alert-dialog/index.tsx +260 -0
  341. package/src/components/ui/avatar/index.tsx +162 -0
  342. package/src/components/ui/badge/index.tsx +188 -0
  343. package/src/components/ui/box/index.tsx +14 -0
  344. package/src/components/ui/box/index.web.tsx +13 -0
  345. package/src/components/ui/box/styles.tsx +10 -0
  346. package/src/components/ui/button/index.tsx +353 -0
  347. package/src/components/ui/card/index.tsx +16 -0
  348. package/src/components/ui/card/index.web.tsx +15 -0
  349. package/src/components/ui/card/styles.tsx +20 -0
  350. package/src/components/ui/center/index.tsx +14 -0
  351. package/src/components/ui/center/index.web.tsx +14 -0
  352. package/src/components/ui/center/styles.tsx +8 -0
  353. package/src/components/ui/checkbox/index.tsx +192 -0
  354. package/src/components/ui/divider/index.tsx +38 -0
  355. package/src/components/ui/drawer/index.tsx +311 -0
  356. package/src/components/ui/fab/index.tsx +190 -0
  357. package/src/components/ui/flat-list/index.tsx +2 -0
  358. package/src/components/ui/form-control/index.tsx +432 -0
  359. package/src/components/ui/gluestack-ui-provider/config.ts +309 -0
  360. package/src/components/ui/gluestack-ui-provider/index.tsx +38 -0
  361. package/src/components/ui/gluestack-ui-provider/index.web.tsx +88 -0
  362. package/src/components/ui/gluestack-ui-provider/script.ts +17 -0
  363. package/src/components/ui/gluestack-ui-provider/types.ts +1 -0
  364. package/src/components/ui/grid/index.tsx +284 -0
  365. package/src/components/ui/grid/index.web.tsx +61 -0
  366. package/src/components/ui/grid/styles.tsx +13 -0
  367. package/src/components/ui/heading/index.tsx +193 -0
  368. package/src/components/ui/heading/index.web.tsx +177 -0
  369. package/src/components/ui/heading/styles.tsx +43 -0
  370. package/src/components/ui/hstack/index.tsx +17 -0
  371. package/src/components/ui/hstack/index.web.tsx +15 -0
  372. package/src/components/ui/hstack/styles.tsx +25 -0
  373. package/src/components/ui/icon/index.tsx +1202 -0
  374. package/src/components/ui/icon/index.web.tsx +1190 -0
  375. package/src/components/ui/image/index.tsx +48 -0
  376. package/src/components/ui/image-background/index.tsx +21 -0
  377. package/src/components/ui/index.ts +54 -0
  378. package/src/components/ui/input/index.tsx +191 -0
  379. package/src/components/ui/input-accessory-view/index.tsx +2 -0
  380. package/src/components/ui/keyboard-avoiding-view/index.tsx +2 -0
  381. package/src/components/ui/link/index.tsx +92 -0
  382. package/src/components/ui/menu/index.tsx +179 -0
  383. package/src/components/ui/modal/index.tsx +244 -0
  384. package/src/components/ui/popover/index.tsx +309 -0
  385. package/src/components/ui/portal/index.tsx +12 -0
  386. package/src/components/ui/pressable/index.tsx +34 -0
  387. package/src/components/ui/progress/index.tsx +160 -0
  388. package/src/components/ui/radio/index.tsx +178 -0
  389. package/src/components/ui/refresh-control/index.tsx +2 -0
  390. package/src/components/ui/safe-area-view/index.tsx +22 -0
  391. package/src/components/ui/safe-area-view/styles.tsx +10 -0
  392. package/src/components/ui/scroll-view/index.tsx +2 -0
  393. package/src/components/ui/section-list/index.tsx +2 -0
  394. package/src/components/ui/select/index.tsx +251 -0
  395. package/src/components/ui/select/select-actionsheet.tsx +503 -0
  396. package/src/components/ui/skeleton/index.tsx +113 -0
  397. package/src/components/ui/skeleton/index.web.tsx +92 -0
  398. package/src/components/ui/skeleton/styles.tsx +35 -0
  399. package/src/components/ui/slider/index.tsx +239 -0
  400. package/src/components/ui/spinner/index.tsx +31 -0
  401. package/src/components/ui/status-bar/index.tsx +2 -0
  402. package/src/components/ui/switch/index.tsx +33 -0
  403. package/src/components/ui/table/index.tsx +171 -0
  404. package/src/components/ui/table/index.web.tsx +95 -0
  405. package/src/components/ui/table/styles.tsx +44 -0
  406. package/src/components/ui/text/index.tsx +53 -0
  407. package/src/components/ui/text/index.web.tsx +45 -0
  408. package/src/components/ui/text/styles.tsx +47 -0
  409. package/src/components/ui/textarea/index.tsx +83 -0
  410. package/src/components/ui/toast/index.tsx +218 -0
  411. package/src/components/ui/tooltip/index.tsx +104 -0
  412. package/src/components/ui/utils/use-break-point-value.ts +79 -0
  413. package/src/components/ui/view/index.tsx +2 -0
  414. package/src/components/ui/virtualized-list/index.tsx +2 -0
  415. package/src/components/ui/vstack/index.tsx +17 -0
  416. package/src/components/ui/vstack/index.web.tsx +16 -0
  417. package/src/components/ui/vstack/styles.tsx +25 -0
  418. package/src/components/with-interactions-lifecycle-managed.tsx +13 -14
  419. package/src/components/with-interactions-managed.tsx +3 -7
  420. package/src/containers/layout/ProLayout.tsx +3 -3
  421. package/src/global.css +3 -0
  422. package/src/gluestack-ui-base-config.js +12 -0
  423. package/src/gluestack-ui.config.json +10 -0
  424. package/src/index.ts +6 -7
  425. package/src/nativewind-env.d.ts +1 -0
  426. package/src/tailwind-base-config.js +197 -0
  427. package/src/tailwind.config.js +198 -0
  428. package/src/utils/generateMobileNavigations.ts +29 -1
  429. package/tsconfig.json +3 -9
@@ -0,0 +1,503 @@
1
+ 'use client';
2
+
3
+ import { H4 } from '@expo/html-elements';
4
+ import { createActionsheet } from '@gluestack-ui/actionsheet';
5
+ import { Pressable, View, Text, ScrollView, VirtualizedList, FlatList, SectionList } from 'react-native';
6
+ import { PrimitiveIcon, UIIcon } from '@gluestack-ui/icon';
7
+ import { tva } from '@gluestack-ui/nativewind-utils/tva';
8
+ import type { VariantProps } from '@gluestack-ui/nativewind-utils';
9
+ import { withStyleContext } from '@gluestack-ui/nativewind-utils/withStyleContext';
10
+ import { cssInterop } from 'nativewind';
11
+ import { Motion, AnimatePresence, createMotionAnimatedComponent } from '@legendapp/motion';
12
+
13
+ import React from 'react';
14
+
15
+ const AnimatedPressable = createMotionAnimatedComponent(Pressable);
16
+
17
+ export const UIActionsheet = createActionsheet({
18
+ Root: View,
19
+ Content: withStyleContext(Motion.View),
20
+ Item: withStyleContext(Pressable),
21
+ ItemText: Text,
22
+ DragIndicator: View,
23
+ IndicatorWrapper: View,
24
+ Backdrop: AnimatedPressable,
25
+ ScrollView: ScrollView,
26
+ VirtualizedList: VirtualizedList,
27
+ FlatList: FlatList,
28
+ SectionList: SectionList,
29
+ SectionHeaderText: H4,
30
+ Icon: UIIcon,
31
+ AnimatePresence: AnimatePresence,
32
+ });
33
+
34
+ cssInterop(UIActionsheet, { className: 'style' });
35
+ cssInterop(UIActionsheet.Content, { className: 'style' });
36
+ cssInterop(UIActionsheet.Item, { className: 'style' });
37
+ cssInterop(UIActionsheet.ItemText, { className: 'style' });
38
+ cssInterop(UIActionsheet.DragIndicator, { className: 'style' });
39
+ cssInterop(UIActionsheet.DragIndicatorWrapper, { className: 'style' });
40
+ cssInterop(UIActionsheet.Backdrop, { className: 'style' });
41
+ cssInterop(UIActionsheet.ScrollView, {
42
+ className: 'style',
43
+ contentContainerClassName: 'contentContainerStyle',
44
+ indicatorClassName: 'indicatorStyle',
45
+ });
46
+ cssInterop(UIActionsheet.VirtualizedList, {
47
+ className: 'style',
48
+ ListFooterComponentClassName: 'ListFooterComponentStyle',
49
+ ListHeaderComponentClassName: 'ListHeaderComponentStyle',
50
+ contentContainerClassName: 'contentContainerStyle',
51
+ indicatorClassName: 'indicatorStyle',
52
+ });
53
+ cssInterop(UIActionsheet.FlatList, {
54
+ className: 'style',
55
+ ListFooterComponentClassName: 'ListFooterComponentStyle',
56
+ ListHeaderComponentClassName: 'ListHeaderComponentStyle',
57
+ columnWrapperClassName: 'columnWrapperStyle',
58
+ contentContainerClassName: 'contentContainerStyle',
59
+ indicatorClassName: 'indicatorStyle',
60
+ });
61
+ cssInterop(UIActionsheet.SectionList, { className: 'style' });
62
+ cssInterop(UIActionsheet.SectionHeaderText, { className: 'style' });
63
+ cssInterop(PrimitiveIcon, {
64
+ className: {
65
+ target: 'style',
66
+ nativeStyleToProp: {
67
+ height: true,
68
+ width: true,
69
+ fill: true,
70
+ color: 'classNameColor',
71
+ stroke: true,
72
+ },
73
+ },
74
+ });
75
+
76
+ const actionsheetStyle = tva({ base: 'w-full h-full web:pointer-events-none' });
77
+
78
+ const actionsheetContentStyle = tva({
79
+ base: 'items-center rounded-tl-3xl rounded-tr-3xl p-2 bg-background-0 web:pointer-events-auto web:select-none shadow-lg',
80
+ });
81
+
82
+ const actionsheetItemStyle = tva({
83
+ base: 'w-full flex-row items-center p-3 rounded-sm data-[disabled=true]:opacity-40 data-[disabled=true]:web:pointer-events-auto data-[disabled=true]:web:cursor-not-allowed hover:bg-background-50 active:bg-background-100 data-[focus=true]:bg-background-100 web:data-[focus-visible=true]:bg-background-100 data-[checked=true]:bg-background-100',
84
+ });
85
+
86
+ const actionsheetItemTextStyle = tva({
87
+ base: 'text-typography-700 font-normal font-body tracking-md text-left mx-2',
88
+ variants: {
89
+ isTruncated: {
90
+ true: '',
91
+ },
92
+ bold: {
93
+ true: 'font-bold',
94
+ },
95
+ underline: {
96
+ true: 'underline',
97
+ },
98
+ strikeThrough: {
99
+ true: 'line-through',
100
+ },
101
+ size: {
102
+ '2xs': 'text-2xs',
103
+ xs: 'text-xs',
104
+ sm: 'text-sm',
105
+ md: 'text-base',
106
+ lg: 'text-lg',
107
+ xl: 'text-xl',
108
+ '2xl': 'text-2xl',
109
+ '3xl': 'text-3xl',
110
+ '4xl': 'text-4xl',
111
+ '5xl': 'text-5xl',
112
+ '6xl': 'text-6xl',
113
+ },
114
+ },
115
+ defaultVariants: {
116
+ size: 'md',
117
+ },
118
+ });
119
+
120
+ const actionsheetDragIndicatorStyle = tva({
121
+ base: 'w-16 h-1 bg-background-400 rounded-full',
122
+ });
123
+
124
+ const actionsheetDragIndicatorWrapperStyle = tva({
125
+ base: 'w-full py-1 items-center',
126
+ });
127
+
128
+ const actionsheetBackdropStyle = tva({
129
+ base: 'absolute left-0 top-0 right-0 bottom-0 bg-background-dark web:cursor-default web:pointer-events-auto',
130
+ });
131
+
132
+ const actionsheetScrollViewStyle = tva({
133
+ base: 'w-full h-auto',
134
+ });
135
+
136
+ const actionsheetVirtualizedListStyle = tva({
137
+ base: 'w-full h-auto',
138
+ });
139
+
140
+ const actionsheetFlatListStyle = tva({
141
+ base: 'w-full h-auto',
142
+ });
143
+
144
+ const actionsheetSectionListStyle = tva({
145
+ base: 'w-full h-auto',
146
+ });
147
+
148
+ const actionsheetSectionHeaderTextStyle = tva({
149
+ base: 'leading-5 font-bold font-heading my-0 text-typography-500 p-3 uppercase',
150
+ variants: {
151
+ isTruncated: {
152
+ true: '',
153
+ },
154
+ bold: {
155
+ true: 'font-bold',
156
+ },
157
+ underline: {
158
+ true: 'underline',
159
+ },
160
+ strikeThrough: {
161
+ true: 'line-through',
162
+ },
163
+ size: {
164
+ '5xl': 'text-5xl',
165
+ '4xl': 'text-4xl',
166
+ '3xl': 'text-3xl',
167
+ '2xl': 'text-2xl',
168
+ xl: 'text-xl',
169
+ lg: 'text-lg',
170
+ md: 'text-base',
171
+ sm: 'text-sm',
172
+ xs: 'text-xs',
173
+ },
174
+
175
+ sub: {
176
+ true: 'text-xs',
177
+ },
178
+ italic: {
179
+ true: 'italic',
180
+ },
181
+ highlight: {
182
+ true: 'bg-yellow500',
183
+ },
184
+ },
185
+ defaultVariants: {
186
+ size: 'xs',
187
+ },
188
+ });
189
+
190
+ const actionsheetIconStyle = tva({
191
+ base: 'text-typography-900',
192
+ variants: {
193
+ size: {
194
+ '2xs': 'h-3 w-3',
195
+ xs: 'h-3.5 w-3.5',
196
+ sm: 'h-4 w-4',
197
+ md: 'w-4 h-4',
198
+ lg: 'h-5 w-5',
199
+ xl: 'h-6 w-6',
200
+ },
201
+ },
202
+ });
203
+
204
+ type IActionsheetProps = VariantProps<typeof actionsheetStyle> &
205
+ React.ComponentProps<typeof UIActionsheet> & { className?: string };
206
+
207
+ type IActionsheetContentProps = VariantProps<typeof actionsheetContentStyle> &
208
+ React.ComponentProps<typeof UIActionsheet.Content> & { className?: string };
209
+
210
+ type IActionsheetItemProps = VariantProps<typeof actionsheetItemStyle> &
211
+ React.ComponentProps<typeof UIActionsheet.Item> & { className?: string };
212
+
213
+ type IActionsheetItemTextProps = VariantProps<typeof actionsheetItemTextStyle> &
214
+ React.ComponentProps<typeof UIActionsheet.ItemText> & { className?: string };
215
+
216
+ type IActionsheetDragIndicatorProps = VariantProps<typeof actionsheetDragIndicatorStyle> &
217
+ React.ComponentProps<typeof UIActionsheet.DragIndicator> & {
218
+ className?: string;
219
+ };
220
+
221
+ type IActionsheetDragIndicatorWrapperProps = VariantProps<typeof actionsheetDragIndicatorWrapperStyle> &
222
+ React.ComponentProps<typeof UIActionsheet.DragIndicatorWrapper> & {
223
+ className?: string;
224
+ };
225
+
226
+ type IActionsheetBackdropProps = VariantProps<typeof actionsheetBackdropStyle> &
227
+ React.ComponentProps<typeof UIActionsheet.Backdrop> & {
228
+ className?: string;
229
+ };
230
+
231
+ type IActionsheetScrollViewProps = VariantProps<typeof actionsheetScrollViewStyle> &
232
+ React.ComponentProps<typeof UIActionsheet.ScrollView> & {
233
+ className?: string;
234
+ };
235
+
236
+ type IActionsheetVirtualizedListProps = VariantProps<typeof actionsheetVirtualizedListStyle> &
237
+ React.ComponentProps<typeof UIActionsheet.VirtualizedList> & {
238
+ className?: string;
239
+ };
240
+
241
+ type IActionsheetFlatListProps = VariantProps<typeof actionsheetFlatListStyle> &
242
+ React.ComponentProps<typeof UIActionsheet.FlatList> & {
243
+ className?: string;
244
+ };
245
+
246
+ type IActionsheetSectionListProps = VariantProps<typeof actionsheetSectionListStyle> &
247
+ React.ComponentProps<typeof UIActionsheet.SectionList> & {
248
+ className?: string;
249
+ };
250
+
251
+ type IActionsheetSectionHeaderTextProps = VariantProps<typeof actionsheetSectionHeaderTextStyle> &
252
+ React.ComponentProps<typeof UIActionsheet.SectionHeaderText> & {
253
+ className?: string;
254
+ };
255
+
256
+ type IActionsheetIconProps = VariantProps<typeof actionsheetIconStyle> &
257
+ React.ComponentProps<typeof UIActionsheet.Icon> & {
258
+ className?: string;
259
+ as?: React.ElementType;
260
+ };
261
+
262
+ const Actionsheet = React.forwardRef<React.ElementRef<typeof UIActionsheet>, IActionsheetProps>(
263
+ ({ className, ...props }, ref) => {
264
+ return (
265
+ <UIActionsheet
266
+ className={actionsheetStyle({
267
+ class: className,
268
+ })}
269
+ ref={ref}
270
+ {...props}
271
+ />
272
+ );
273
+ },
274
+ );
275
+
276
+ const ActionsheetContent = React.forwardRef<
277
+ React.ElementRef<typeof UIActionsheet.Content>,
278
+ IActionsheetContentProps & { className?: string }
279
+ >(({ className, ...props }, ref) => {
280
+ return (
281
+ <UIActionsheet.Content
282
+ className={actionsheetContentStyle({
283
+ class: className,
284
+ })}
285
+ ref={ref}
286
+ {...props}
287
+ />
288
+ );
289
+ });
290
+
291
+ const ActionsheetItem = React.forwardRef<React.ElementRef<typeof UIActionsheet.Item>, IActionsheetItemProps>(
292
+ ({ className, ...props }, ref) => {
293
+ return (
294
+ <UIActionsheet.Item
295
+ className={actionsheetItemStyle({
296
+ class: className,
297
+ })}
298
+ ref={ref}
299
+ {...props}
300
+ />
301
+ );
302
+ },
303
+ );
304
+
305
+ const ActionsheetItemText = React.forwardRef<
306
+ React.ElementRef<typeof UIActionsheet.ItemText>,
307
+ IActionsheetItemTextProps
308
+ >(({ isTruncated, bold, underline, strikeThrough, size, className, ...props }, ref) => {
309
+ return (
310
+ <UIActionsheet.ItemText
311
+ className={actionsheetItemTextStyle({
312
+ class: className,
313
+ isTruncated,
314
+ bold,
315
+ underline,
316
+ strikeThrough,
317
+ size,
318
+ })}
319
+ ref={ref}
320
+ {...props}
321
+ />
322
+ );
323
+ });
324
+
325
+ const ActionsheetDragIndicator = React.forwardRef<
326
+ React.ElementRef<typeof UIActionsheet.DragIndicator>,
327
+ IActionsheetDragIndicatorProps
328
+ >(({ className, ...props }, ref) => {
329
+ return (
330
+ <UIActionsheet.DragIndicator
331
+ className={actionsheetDragIndicatorStyle({
332
+ class: className,
333
+ })}
334
+ ref={ref}
335
+ {...props}
336
+ />
337
+ );
338
+ });
339
+
340
+ const ActionsheetDragIndicatorWrapper = React.forwardRef<
341
+ React.ElementRef<typeof UIActionsheet.DragIndicatorWrapper>,
342
+ IActionsheetDragIndicatorWrapperProps
343
+ >(({ className, ...props }, ref) => {
344
+ return (
345
+ <UIActionsheet.DragIndicatorWrapper
346
+ className={actionsheetDragIndicatorWrapperStyle({
347
+ class: className,
348
+ })}
349
+ ref={ref}
350
+ {...props}
351
+ />
352
+ );
353
+ });
354
+
355
+ const ActionsheetBackdrop = React.forwardRef<
356
+ React.ElementRef<typeof UIActionsheet.Backdrop>,
357
+ IActionsheetBackdropProps
358
+ >(({ className, ...props }, ref) => {
359
+ return (
360
+ <UIActionsheet.Backdrop
361
+ initial={{
362
+ opacity: 0,
363
+ }}
364
+ animate={{
365
+ opacity: 0.5,
366
+ }}
367
+ exit={{
368
+ opacity: 0,
369
+ }}
370
+ {...props}
371
+ className={actionsheetBackdropStyle({
372
+ class: className,
373
+ })}
374
+ ref={ref}
375
+ />
376
+ );
377
+ });
378
+
379
+ const ActionsheetScrollView = React.forwardRef<
380
+ React.ElementRef<typeof UIActionsheet.ScrollView>,
381
+ IActionsheetScrollViewProps
382
+ >(({ className, ...props }, ref) => {
383
+ return (
384
+ <UIActionsheet.ScrollView
385
+ className={actionsheetScrollViewStyle({
386
+ class: className,
387
+ })}
388
+ ref={ref}
389
+ {...props}
390
+ />
391
+ );
392
+ });
393
+
394
+ const ActionsheetVirtualizedList = React.forwardRef<
395
+ React.ElementRef<typeof UIActionsheet.VirtualizedList>,
396
+ IActionsheetVirtualizedListProps
397
+ >(({ className, ...props }, ref) => {
398
+ return (
399
+ <UIActionsheet.VirtualizedList
400
+ className={actionsheetVirtualizedListStyle({
401
+ class: className,
402
+ })}
403
+ ref={ref}
404
+ {...props}
405
+ />
406
+ );
407
+ });
408
+
409
+ const ActionsheetFlatList = React.forwardRef<
410
+ React.ElementRef<typeof UIActionsheet.FlatList>,
411
+ IActionsheetFlatListProps
412
+ >(({ className, ...props }, ref) => {
413
+ return (
414
+ <UIActionsheet.FlatList
415
+ className={actionsheetFlatListStyle({
416
+ class: className,
417
+ })}
418
+ ref={ref}
419
+ {...props}
420
+ />
421
+ );
422
+ });
423
+
424
+ const ActionsheetSectionList = React.forwardRef<
425
+ React.ElementRef<typeof UIActionsheet.SectionList>,
426
+ IActionsheetSectionListProps
427
+ >(({ className, ...props }, ref) => {
428
+ return (
429
+ <UIActionsheet.SectionList
430
+ className={actionsheetSectionListStyle({
431
+ class: className,
432
+ })}
433
+ ref={ref}
434
+ {...props}
435
+ />
436
+ );
437
+ });
438
+
439
+ const ActionsheetSectionHeaderText = React.forwardRef<
440
+ React.ElementRef<typeof UIActionsheet.SectionHeaderText>,
441
+ IActionsheetSectionHeaderTextProps
442
+ >(({ className, isTruncated, bold, underline, strikeThrough, size, sub, italic, highlight, ...props }, ref) => {
443
+ return (
444
+ <UIActionsheet.SectionHeaderText
445
+ className={actionsheetSectionHeaderTextStyle({
446
+ class: className,
447
+ isTruncated,
448
+ bold,
449
+ underline,
450
+ strikeThrough,
451
+ size,
452
+ sub,
453
+ italic,
454
+ highlight,
455
+ })}
456
+ ref={ref}
457
+ {...props}
458
+ />
459
+ );
460
+ });
461
+
462
+ const ActionsheetIcon = React.forwardRef<React.ElementRef<typeof UIActionsheet.Icon>, IActionsheetIconProps>(
463
+ ({ className, as: AsComp, size = 'sm', ...props }, ref) => {
464
+ if (AsComp) {
465
+ return (
466
+ <AsComp
467
+ className={actionsheetIconStyle({
468
+ class: className,
469
+ size,
470
+ })}
471
+ ref={ref}
472
+ {...props}
473
+ />
474
+ );
475
+ }
476
+ return (
477
+ <UIActionsheet.Icon
478
+ className={actionsheetIconStyle({
479
+ class: className,
480
+ size,
481
+ })}
482
+ ref={ref}
483
+ {...props}
484
+ />
485
+ );
486
+ },
487
+ );
488
+
489
+ export {
490
+ Actionsheet,
491
+ ActionsheetContent,
492
+ ActionsheetItem,
493
+ ActionsheetItemText,
494
+ ActionsheetDragIndicator,
495
+ ActionsheetDragIndicatorWrapper,
496
+ ActionsheetBackdrop,
497
+ ActionsheetScrollView,
498
+ ActionsheetVirtualizedList,
499
+ ActionsheetFlatList,
500
+ ActionsheetSectionList,
501
+ ActionsheetSectionHeaderText,
502
+ ActionsheetIcon,
503
+ };
@@ -0,0 +1,113 @@
1
+ import React, { forwardRef } from 'react';
2
+ import type { VariantProps } from '@gluestack-ui/nativewind-utils';
3
+ import { Animated, Easing, Platform, View } from 'react-native';
4
+ import { skeletonStyle, skeletonTextStyle } from './styles';
5
+
6
+ type ISkeletonProps = React.ComponentProps<typeof View> &
7
+ VariantProps<typeof skeletonStyle> & {
8
+ isLoaded?: boolean;
9
+ startColor?: string;
10
+ };
11
+
12
+ type ISkeletonTextProps = React.ComponentProps<typeof View> &
13
+ VariantProps<typeof skeletonTextStyle> & {
14
+ _lines?: number;
15
+ isLoaded?: boolean;
16
+ startColor?: string;
17
+ };
18
+
19
+ const Skeleton = forwardRef<React.ElementRef<typeof Animated.View>, ISkeletonProps>(
20
+ (
21
+ { className, variant, children, startColor = 'bg-background-200', isLoaded = false, speed = 2, ...props },
22
+ ref,
23
+ ) => {
24
+ const pulseAnim = new Animated.Value(1);
25
+ const customTimingFunction = Easing.bezier(0.4, 0, 0.6, 1);
26
+ const fadeDuration = 0.6;
27
+ const animationDuration = (fadeDuration * 10000) / speed; // Convert seconds to milliseconds
28
+
29
+ const pulse = Animated.sequence([
30
+ Animated.timing(pulseAnim, {
31
+ toValue: 1, // Start with opacity 1
32
+ duration: animationDuration / 2, // Third of the animation duration
33
+ easing: customTimingFunction,
34
+ useNativeDriver: Platform.OS !== 'web',
35
+ }),
36
+ Animated.timing(pulseAnim, {
37
+ toValue: 0.75,
38
+ duration: animationDuration / 2, // Third of the animation duration
39
+ easing: customTimingFunction,
40
+ useNativeDriver: Platform.OS !== 'web',
41
+ }),
42
+ Animated.timing(pulseAnim, {
43
+ toValue: 1,
44
+ duration: animationDuration / 2, // Third of the animation duration
45
+ easing: customTimingFunction,
46
+ useNativeDriver: Platform.OS !== 'web',
47
+ }),
48
+ ]);
49
+
50
+ if (!isLoaded) {
51
+ Animated.loop(pulse).start();
52
+ return (
53
+ <Animated.View
54
+ style={{ opacity: pulseAnim }}
55
+ className={`${startColor} ${skeletonStyle({
56
+ variant,
57
+ class: className,
58
+ })}`}
59
+ {...props}
60
+ ref={ref}
61
+ />
62
+ );
63
+ } else {
64
+ Animated.loop(pulse).stop();
65
+
66
+ return children;
67
+ }
68
+ },
69
+ );
70
+
71
+ const SkeletonText = forwardRef<React.ElementRef<typeof View>, ISkeletonTextProps>(
72
+ ({ className, _lines, isLoaded = false, startColor = 'bg-background-200', gap = 2, children, ...props }, ref) => {
73
+ if (!isLoaded) {
74
+ if (_lines) {
75
+ return (
76
+ <View
77
+ className={`${skeletonTextStyle({
78
+ gap,
79
+ })}`}
80
+ ref={ref}
81
+ >
82
+ {Array.from({ length: _lines }).map((_, index) => (
83
+ <Skeleton
84
+ key={index}
85
+ className={`${startColor} ${skeletonTextStyle({
86
+ class: className,
87
+ })}`}
88
+ {...props}
89
+ />
90
+ ))}
91
+ </View>
92
+ );
93
+ } else {
94
+ return (
95
+ <Skeleton
96
+ className={`${startColor} ${skeletonTextStyle({
97
+ class: className,
98
+ })}`}
99
+ {...props}
100
+ ref={ref}
101
+ />
102
+ );
103
+ }
104
+ } else {
105
+ return children;
106
+ }
107
+ },
108
+ );
109
+
110
+ Skeleton.displayName = 'Skeleton';
111
+ SkeletonText.displayName = 'SkeletonText';
112
+
113
+ export { Skeleton, SkeletonText };
@@ -0,0 +1,92 @@
1
+ import React from 'react';
2
+ import { skeletonStyle, skeletonTextStyle } from './styles';
3
+
4
+ import type { VariantProps } from '@gluestack-ui/nativewind-utils';
5
+
6
+ type ISkeletonProps = React.ComponentPropsWithoutRef<'div'> &
7
+ VariantProps<typeof skeletonStyle> & {
8
+ startColor?: string;
9
+ isLoaded?: boolean;
10
+ };
11
+
12
+ const Skeleton = React.forwardRef<HTMLDivElement, ISkeletonProps>(
13
+ (
14
+ {
15
+ className,
16
+ variant = 'rounded',
17
+ children,
18
+ speed = 2,
19
+ startColor = 'bg-background-200',
20
+ isLoaded = false,
21
+ ...props
22
+ },
23
+ ref,
24
+ ) => {
25
+ if (!isLoaded) {
26
+ return (
27
+ <div
28
+ ref={ref}
29
+ className={`animate-pulse ${startColor} ${skeletonStyle({
30
+ variant,
31
+ speed,
32
+ class: className,
33
+ })}`}
34
+ {...props}
35
+ />
36
+ );
37
+ } else {
38
+ return children;
39
+ }
40
+ },
41
+ );
42
+
43
+ type ISkeletonTextProps = React.ComponentPropsWithoutRef<'div'> &
44
+ VariantProps<typeof skeletonTextStyle> & {
45
+ _lines?: number;
46
+ isLoaded?: boolean;
47
+ startColor?: string;
48
+ };
49
+
50
+ const SkeletonText = React.forwardRef<HTMLDivElement, ISkeletonTextProps>(
51
+ ({ className, _lines, isLoaded = false, startColor = 'bg-background-200', gap = 2, children, ...props }, ref) => {
52
+ if (!isLoaded) {
53
+ if (_lines) {
54
+ return (
55
+ <div
56
+ ref={ref}
57
+ className={`flex flex-col ${skeletonTextStyle({
58
+ gap,
59
+ })}`}
60
+ >
61
+ {Array.from({ length: _lines }).map((_, index) => (
62
+ <div
63
+ key={index}
64
+ className={`animate-pulse ${startColor} ${skeletonTextStyle({
65
+ class: className,
66
+ })}`}
67
+ {...props}
68
+ />
69
+ ))}
70
+ </div>
71
+ );
72
+ } else {
73
+ return (
74
+ <div
75
+ ref={ref}
76
+ className={`animate-pulse ${startColor} ${skeletonTextStyle({
77
+ class: className,
78
+ })}`}
79
+ {...props}
80
+ />
81
+ );
82
+ }
83
+ } else {
84
+ return children;
85
+ }
86
+ },
87
+ );
88
+
89
+ Skeleton.displayName = 'Skeleton';
90
+ SkeletonText.displayName = 'SkeletonText';
91
+
92
+ export { Skeleton, SkeletonText };