zero-to-app 2.0.0 → 3.0.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 (442) hide show
  1. package/dist/brand/brand-config.d.ts +65 -0
  2. package/dist/brand/brand-config.d.ts.map +1 -0
  3. package/dist/brand/brand-config.js +68 -0
  4. package/dist/brand/brand-config.js.map +1 -0
  5. package/dist/brand/brand-context.d.ts +55 -0
  6. package/dist/brand/brand-context.d.ts.map +1 -0
  7. package/dist/brand/brand-context.js +76 -0
  8. package/dist/brand/brand-context.js.map +1 -0
  9. package/dist/brand/brand-types.d.ts +92 -0
  10. package/dist/brand/brand-types.d.ts.map +1 -0
  11. package/dist/brand/brand-types.js +2 -0
  12. package/dist/brand/brand-types.js.map +1 -0
  13. package/dist/brand/default-brand.d.ts +11 -0
  14. package/dist/brand/default-brand.d.ts.map +1 -0
  15. package/dist/brand/default-brand.js +32 -0
  16. package/dist/brand/default-brand.js.map +1 -0
  17. package/dist/brand/index.d.ts +5 -3
  18. package/dist/brand/index.d.ts.map +1 -1
  19. package/dist/brand/index.js +6 -3
  20. package/dist/brand/index.js.map +1 -1
  21. package/dist/brand/palette-generator.d.ts +64 -0
  22. package/dist/brand/palette-generator.d.ts.map +1 -0
  23. package/dist/brand/palette-generator.js +283 -0
  24. package/dist/brand/palette-generator.js.map +1 -0
  25. package/dist/components/index.d.ts +0 -8
  26. package/dist/components/index.d.ts.map +1 -1
  27. package/dist/components/index.js +0 -9
  28. package/dist/components/index.js.map +1 -1
  29. package/dist/components/navigation/app-tabs/app-tabs.d.ts +63 -0
  30. package/dist/components/navigation/app-tabs/app-tabs.d.ts.map +1 -0
  31. package/dist/components/navigation/app-tabs/app-tabs.js +13 -0
  32. package/dist/components/navigation/app-tabs/app-tabs.js.map +1 -0
  33. package/dist/components/navigation/app-tabs/app-tabs.web.d.ts +47 -0
  34. package/dist/components/navigation/app-tabs/app-tabs.web.d.ts.map +1 -0
  35. package/dist/components/navigation/app-tabs/app-tabs.web.js +104 -0
  36. package/dist/components/navigation/app-tabs/app-tabs.web.js.map +1 -0
  37. package/dist/components/navigation/app-tabs/index.d.ts +3 -0
  38. package/dist/components/navigation/app-tabs/index.d.ts.map +1 -0
  39. package/dist/components/navigation/app-tabs/index.js +3 -0
  40. package/dist/components/navigation/app-tabs/index.js.map +1 -0
  41. package/dist/components/navigation/drawer/drawer.d.ts +24 -0
  42. package/dist/components/navigation/drawer/drawer.d.ts.map +1 -0
  43. package/dist/components/navigation/drawer/drawer.js +82 -0
  44. package/dist/components/navigation/drawer/drawer.js.map +1 -0
  45. package/dist/components/navigation/index.d.ts +9 -5
  46. package/dist/components/navigation/index.d.ts.map +1 -1
  47. package/dist/components/navigation/index.js +9 -5
  48. package/dist/components/navigation/index.js.map +1 -1
  49. package/dist/components/navigation/native-header.d.ts +25 -0
  50. package/dist/components/navigation/native-header.d.ts.map +1 -0
  51. package/dist/components/navigation/native-header.js +32 -0
  52. package/dist/components/navigation/native-header.js.map +1 -0
  53. package/dist/components/navigation/shared/sidebar-styles.d.ts +34 -0
  54. package/dist/components/navigation/shared/sidebar-styles.d.ts.map +1 -0
  55. package/dist/components/navigation/shared/sidebar-styles.js +34 -0
  56. package/dist/components/navigation/shared/sidebar-styles.js.map +1 -0
  57. package/dist/components/navigation/sidebar/index.d.ts +10 -0
  58. package/dist/components/navigation/sidebar/index.d.ts.map +1 -0
  59. package/dist/components/navigation/sidebar/index.js +7 -0
  60. package/dist/components/navigation/sidebar/index.js.map +1 -0
  61. package/dist/components/navigation/sidebar/sidebar-footer.d.ts +18 -0
  62. package/dist/components/navigation/sidebar/sidebar-footer.d.ts.map +1 -0
  63. package/dist/components/navigation/sidebar/sidebar-footer.js +27 -0
  64. package/dist/components/navigation/sidebar/sidebar-footer.js.map +1 -0
  65. package/dist/components/navigation/sidebar/sidebar-header.d.ts +26 -0
  66. package/dist/components/navigation/sidebar/sidebar-header.d.ts.map +1 -0
  67. package/dist/components/navigation/sidebar/sidebar-header.js +38 -0
  68. package/dist/components/navigation/sidebar/sidebar-header.js.map +1 -0
  69. package/dist/components/navigation/sidebar/sidebar-item.d.ts +36 -0
  70. package/dist/components/navigation/sidebar/sidebar-item.d.ts.map +1 -0
  71. package/dist/components/navigation/sidebar/sidebar-item.js +63 -0
  72. package/dist/components/navigation/sidebar/sidebar-item.js.map +1 -0
  73. package/dist/components/navigation/sidebar/sidebar-section.d.ts +34 -0
  74. package/dist/components/navigation/sidebar/sidebar-section.d.ts.map +1 -0
  75. package/dist/components/navigation/sidebar/sidebar-section.js +56 -0
  76. package/dist/components/navigation/sidebar/sidebar-section.js.map +1 -0
  77. package/dist/components/navigation/sidebar/sidebar.d.ts +2 -0
  78. package/dist/components/navigation/sidebar/sidebar.d.ts.map +1 -0
  79. package/dist/components/navigation/sidebar/sidebar.js +4 -0
  80. package/dist/components/navigation/sidebar/sidebar.js.map +1 -0
  81. package/dist/components/navigation/sidebar/sidebar.native.d.ts +23 -0
  82. package/dist/components/navigation/sidebar/sidebar.native.d.ts.map +1 -0
  83. package/dist/components/navigation/sidebar/sidebar.native.js +80 -0
  84. package/dist/components/navigation/sidebar/sidebar.native.js.map +1 -0
  85. package/dist/components/navigation/sidebar/sidebar.web.d.ts +26 -0
  86. package/dist/components/navigation/sidebar/sidebar.web.d.ts.map +1 -0
  87. package/dist/components/navigation/sidebar/sidebar.web.js +90 -0
  88. package/dist/components/navigation/sidebar/sidebar.web.js.map +1 -0
  89. package/dist/components/navigation/themed-stack.d.ts +25 -0
  90. package/dist/components/navigation/themed-stack.d.ts.map +1 -0
  91. package/dist/components/navigation/themed-stack.js +37 -0
  92. package/dist/components/navigation/themed-stack.js.map +1 -0
  93. package/dist/components/shared/index.d.ts +2 -0
  94. package/dist/components/shared/index.d.ts.map +1 -0
  95. package/dist/components/shared/index.js +2 -0
  96. package/dist/components/shared/index.js.map +1 -0
  97. package/dist/components/shared/types.d.ts +82 -0
  98. package/dist/components/shared/types.d.ts.map +1 -0
  99. package/dist/components/{chat → shared}/types.js.map +1 -1
  100. package/dist/components/ui/button.d.ts +132 -0
  101. package/dist/components/ui/button.d.ts.map +1 -0
  102. package/dist/components/ui/button.js +253 -0
  103. package/dist/components/ui/button.js.map +1 -0
  104. package/dist/components/ui/collapsible.d.ts +88 -0
  105. package/dist/components/ui/collapsible.d.ts.map +1 -0
  106. package/dist/components/ui/collapsible.js +66 -0
  107. package/dist/components/ui/collapsible.js.map +1 -0
  108. package/dist/components/ui/container.d.ts +31 -0
  109. package/dist/components/ui/container.d.ts.map +1 -0
  110. package/dist/components/ui/container.js +46 -0
  111. package/dist/components/ui/container.js.map +1 -0
  112. package/dist/components/ui/fab.d.ts +51 -0
  113. package/dist/components/ui/fab.d.ts.map +1 -0
  114. package/dist/components/ui/fab.js +138 -0
  115. package/dist/components/ui/fab.js.map +1 -0
  116. package/dist/components/ui/index.d.ts +17 -12
  117. package/dist/components/ui/index.d.ts.map +1 -1
  118. package/dist/components/ui/index.js +15 -12
  119. package/dist/components/ui/index.js.map +1 -1
  120. package/dist/components/ui/screen.d.ts +40 -0
  121. package/dist/components/ui/screen.d.ts.map +1 -0
  122. package/dist/components/ui/screen.js +57 -0
  123. package/dist/components/ui/screen.js.map +1 -0
  124. package/dist/components/ui/themed-image.d.ts +7 -0
  125. package/dist/components/ui/themed-image.d.ts.map +1 -0
  126. package/dist/components/ui/themed-image.js +9 -0
  127. package/dist/components/ui/themed-image.js.map +1 -0
  128. package/dist/components/ui/themed-view.d.ts +20 -0
  129. package/dist/components/ui/themed-view.d.ts.map +1 -0
  130. package/dist/components/ui/themed-view.js +75 -0
  131. package/dist/components/ui/themed-view.js.map +1 -0
  132. package/dist/components/ui/typography.d.ts +110 -0
  133. package/dist/components/ui/typography.d.ts.map +1 -0
  134. package/dist/components/ui/typography.js +69 -0
  135. package/dist/components/ui/typography.js.map +1 -0
  136. package/dist/context/layout-context.d.ts +66 -0
  137. package/dist/context/layout-context.d.ts.map +1 -0
  138. package/dist/context/layout-context.js +83 -0
  139. package/dist/context/layout-context.js.map +1 -0
  140. package/dist/context/{scrollContext.d.ts → scroll-context.d.ts} +1 -1
  141. package/dist/context/scroll-context.d.ts.map +1 -0
  142. package/dist/context/{scrollContext.js → scroll-context.js} +1 -1
  143. package/dist/context/scroll-context.js.map +1 -0
  144. package/dist/context/sidebar-context.d.ts +74 -0
  145. package/dist/context/sidebar-context.d.ts.map +1 -0
  146. package/dist/context/sidebar-context.js +95 -0
  147. package/dist/context/sidebar-context.js.map +1 -0
  148. package/dist/hooks/index.d.ts +3 -3
  149. package/dist/hooks/index.d.ts.map +1 -1
  150. package/dist/hooks/index.js +3 -3
  151. package/dist/hooks/index.js.map +1 -1
  152. package/dist/hooks/use-breakpoint.d.ts +8 -0
  153. package/dist/hooks/use-breakpoint.d.ts.map +1 -0
  154. package/dist/hooks/use-breakpoint.js +10 -0
  155. package/dist/hooks/use-breakpoint.js.map +1 -0
  156. package/dist/hooks/{useDimensions.d.ts → use-dimensions.d.ts} +1 -1
  157. package/dist/hooks/use-dimensions.d.ts.map +1 -0
  158. package/dist/hooks/{useDimensions.js → use-dimensions.js} +1 -1
  159. package/dist/hooks/use-dimensions.js.map +1 -0
  160. package/dist/hooks/use-route-navigation.d.ts +19 -0
  161. package/dist/hooks/use-route-navigation.d.ts.map +1 -0
  162. package/dist/hooks/use-route-navigation.js +25 -0
  163. package/dist/hooks/use-route-navigation.js.map +1 -0
  164. package/dist/{components/navigation/iconUtils.d.ts → icons/icon-utils.d.ts} +2 -2
  165. package/dist/icons/icon-utils.d.ts.map +1 -0
  166. package/dist/{components/navigation/iconUtils.js → icons/icon-utils.js} +8 -4
  167. package/dist/icons/icon-utils.js.map +1 -0
  168. package/dist/icons/index.d.ts +13 -0
  169. package/dist/icons/index.d.ts.map +1 -0
  170. package/dist/icons/index.js +12 -0
  171. package/dist/icons/index.js.map +1 -0
  172. package/dist/index.d.ts +4 -1
  173. package/dist/index.d.ts.map +1 -1
  174. package/dist/index.js +4 -1
  175. package/dist/index.js.map +1 -1
  176. package/dist/theme/high-contrast-theme.d.ts +19 -0
  177. package/dist/theme/high-contrast-theme.d.ts.map +1 -0
  178. package/dist/theme/high-contrast-theme.js +225 -0
  179. package/dist/theme/high-contrast-theme.js.map +1 -0
  180. package/dist/theme/index.d.ts +4 -2
  181. package/dist/theme/index.d.ts.map +1 -1
  182. package/dist/theme/index.js +4 -2
  183. package/dist/theme/index.js.map +1 -1
  184. package/dist/theme/theme-config.d.ts +134 -0
  185. package/dist/theme/theme-config.d.ts.map +1 -0
  186. package/dist/theme/theme-config.js +286 -0
  187. package/dist/theme/theme-config.js.map +1 -0
  188. package/dist/theme/theme.d.ts +93 -2
  189. package/dist/theme/theme.d.ts.map +1 -1
  190. package/dist/theme/theme.js +125 -28
  191. package/dist/theme/theme.js.map +1 -1
  192. package/dist/utils/contrast-checker.d.ts +51 -0
  193. package/dist/utils/contrast-checker.d.ts.map +1 -0
  194. package/dist/utils/contrast-checker.js +97 -0
  195. package/dist/utils/contrast-checker.js.map +1 -0
  196. package/dist/utils/index.d.ts +2 -0
  197. package/dist/utils/index.d.ts.map +1 -0
  198. package/dist/utils/index.js +3 -0
  199. package/dist/utils/index.js.map +1 -0
  200. package/package.json +35 -20
  201. package/README.md +0 -929
  202. package/dist/brand/brandConfig.d.ts +0 -48
  203. package/dist/brand/brandConfig.d.ts.map +0 -1
  204. package/dist/brand/brandConfig.js +0 -41
  205. package/dist/brand/brandConfig.js.map +0 -1
  206. package/dist/brand/brandContext.d.ts +0 -10
  207. package/dist/brand/brandContext.d.ts.map +0 -1
  208. package/dist/brand/brandContext.js +0 -16
  209. package/dist/brand/brandContext.js.map +0 -1
  210. package/dist/brand/brandTypes.d.ts +0 -54
  211. package/dist/brand/brandTypes.d.ts.map +0 -1
  212. package/dist/brand/brandTypes.js +0 -2
  213. package/dist/brand/brandTypes.js.map +0 -1
  214. package/dist/components/action/ActionRow.d.ts +0 -25
  215. package/dist/components/action/ActionRow.d.ts.map +0 -1
  216. package/dist/components/action/ActionRow.js +0 -66
  217. package/dist/components/action/ActionRow.js.map +0 -1
  218. package/dist/components/action/index.d.ts +0 -2
  219. package/dist/components/action/index.d.ts.map +0 -1
  220. package/dist/components/action/index.js +0 -3
  221. package/dist/components/action/index.js.map +0 -1
  222. package/dist/components/card/Card.d.ts +0 -11
  223. package/dist/components/card/Card.d.ts.map +0 -1
  224. package/dist/components/card/Card.js +0 -32
  225. package/dist/components/card/Card.js.map +0 -1
  226. package/dist/components/card/index.d.ts +0 -2
  227. package/dist/components/card/index.d.ts.map +0 -1
  228. package/dist/components/card/index.js +0 -2
  229. package/dist/components/card/index.js.map +0 -1
  230. package/dist/components/chat/ChatContainer.d.ts +0 -27
  231. package/dist/components/chat/ChatContainer.d.ts.map +0 -1
  232. package/dist/components/chat/ChatContainer.js +0 -52
  233. package/dist/components/chat/ChatContainer.js.map +0 -1
  234. package/dist/components/chat/ChatInput.d.ts +0 -9
  235. package/dist/components/chat/ChatInput.d.ts.map +0 -1
  236. package/dist/components/chat/ChatInput.js +0 -219
  237. package/dist/components/chat/ChatInput.js.map +0 -1
  238. package/dist/components/chat/ChatMessages.d.ts +0 -9
  239. package/dist/components/chat/ChatMessages.d.ts.map +0 -1
  240. package/dist/components/chat/ChatMessages.js +0 -35
  241. package/dist/components/chat/ChatMessages.js.map +0 -1
  242. package/dist/components/chat/EmptyChat.d.ts +0 -18
  243. package/dist/components/chat/EmptyChat.d.ts.map +0 -1
  244. package/dist/components/chat/EmptyChat.js +0 -64
  245. package/dist/components/chat/EmptyChat.js.map +0 -1
  246. package/dist/components/chat/Message.d.ts +0 -8
  247. package/dist/components/chat/Message.d.ts.map +0 -1
  248. package/dist/components/chat/Message.js +0 -47
  249. package/dist/components/chat/Message.js.map +0 -1
  250. package/dist/components/chat/index.d.ts +0 -6
  251. package/dist/components/chat/index.d.ts.map +0 -1
  252. package/dist/components/chat/index.js +0 -7
  253. package/dist/components/chat/index.js.map +0 -1
  254. package/dist/components/chat/types.d.ts +0 -34
  255. package/dist/components/chat/types.d.ts.map +0 -1
  256. package/dist/components/form/DropDownSelect.d.ts +0 -12
  257. package/dist/components/form/DropDownSelect.d.ts.map +0 -1
  258. package/dist/components/form/DropDownSelect.js +0 -63
  259. package/dist/components/form/DropDownSelect.js.map +0 -1
  260. package/dist/components/form/EmailSubscriptionForm.d.ts +0 -14
  261. package/dist/components/form/EmailSubscriptionForm.d.ts.map +0 -1
  262. package/dist/components/form/EmailSubscriptionForm.js +0 -58
  263. package/dist/components/form/EmailSubscriptionForm.js.map +0 -1
  264. package/dist/components/form/FormErrors.d.ts +0 -7
  265. package/dist/components/form/FormErrors.d.ts.map +0 -1
  266. package/dist/components/form/FormErrors.js +0 -35
  267. package/dist/components/form/FormErrors.js.map +0 -1
  268. package/dist/components/form/FormInput.d.ts +0 -14
  269. package/dist/components/form/FormInput.d.ts.map +0 -1
  270. package/dist/components/form/FormInput.js +0 -35
  271. package/dist/components/form/FormInput.js.map +0 -1
  272. package/dist/components/form/FormSeparator.d.ts +0 -6
  273. package/dist/components/form/FormSeparator.d.ts.map +0 -1
  274. package/dist/components/form/FormSeparator.js +0 -25
  275. package/dist/components/form/FormSeparator.js.map +0 -1
  276. package/dist/components/form/index.d.ts +0 -6
  277. package/dist/components/form/index.d.ts.map +0 -1
  278. package/dist/components/form/index.js +0 -7
  279. package/dist/components/form/index.js.map +0 -1
  280. package/dist/components/layout/Footer.d.ts +0 -3
  281. package/dist/components/layout/Footer.d.ts.map +0 -1
  282. package/dist/components/layout/Footer.js +0 -60
  283. package/dist/components/layout/Footer.js.map +0 -1
  284. package/dist/components/layout/MinimalFooter.d.ts +0 -8
  285. package/dist/components/layout/MinimalFooter.d.ts.map +0 -1
  286. package/dist/components/layout/MinimalFooter.js +0 -57
  287. package/dist/components/layout/MinimalFooter.js.map +0 -1
  288. package/dist/components/layout/MobileFooterBar.d.ts +0 -7
  289. package/dist/components/layout/MobileFooterBar.d.ts.map +0 -1
  290. package/dist/components/layout/MobileFooterBar.js +0 -18
  291. package/dist/components/layout/MobileFooterBar.js.map +0 -1
  292. package/dist/components/layout/ParallaxScrollView.d.ts +0 -11
  293. package/dist/components/layout/ParallaxScrollView.d.ts.map +0 -1
  294. package/dist/components/layout/ParallaxScrollView.js +0 -67
  295. package/dist/components/layout/ParallaxScrollView.js.map +0 -1
  296. package/dist/components/layout/WebPageLayout.d.ts +0 -17
  297. package/dist/components/layout/WebPageLayout.d.ts.map +0 -1
  298. package/dist/components/layout/WebPageLayout.js +0 -103
  299. package/dist/components/layout/WebPageLayout.js.map +0 -1
  300. package/dist/components/layout/index.d.ts +0 -6
  301. package/dist/components/layout/index.d.ts.map +0 -1
  302. package/dist/components/layout/index.js +0 -9
  303. package/dist/components/layout/index.js.map +0 -1
  304. package/dist/components/list/List.d.ts +0 -10
  305. package/dist/components/list/List.d.ts.map +0 -1
  306. package/dist/components/list/List.js +0 -18
  307. package/dist/components/list/List.js.map +0 -1
  308. package/dist/components/list/ListButton.d.ts +0 -13
  309. package/dist/components/list/ListButton.d.ts.map +0 -1
  310. package/dist/components/list/ListButton.js +0 -24
  311. package/dist/components/list/ListButton.js.map +0 -1
  312. package/dist/components/list/ListDivider.d.ts +0 -7
  313. package/dist/components/list/ListDivider.d.ts.map +0 -1
  314. package/dist/components/list/ListDivider.js +0 -23
  315. package/dist/components/list/ListDivider.js.map +0 -1
  316. package/dist/components/list/index.d.ts +0 -4
  317. package/dist/components/list/index.d.ts.map +0 -1
  318. package/dist/components/list/index.js +0 -4
  319. package/dist/components/list/index.js.map +0 -1
  320. package/dist/components/media/Carousel.d.ts +0 -18
  321. package/dist/components/media/Carousel.d.ts.map +0 -1
  322. package/dist/components/media/Carousel.js +0 -60
  323. package/dist/components/media/Carousel.js.map +0 -1
  324. package/dist/components/media/FeatureCard.d.ts +0 -9
  325. package/dist/components/media/FeatureCard.d.ts.map +0 -1
  326. package/dist/components/media/FeatureCard.js +0 -68
  327. package/dist/components/media/FeatureCard.js.map +0 -1
  328. package/dist/components/media/HorizontalCarousel.d.ts +0 -17
  329. package/dist/components/media/HorizontalCarousel.d.ts.map +0 -1
  330. package/dist/components/media/HorizontalCarousel.js +0 -60
  331. package/dist/components/media/HorizontalCarousel.js.map +0 -1
  332. package/dist/components/media/ImageCarousel.d.ts +0 -14
  333. package/dist/components/media/ImageCarousel.d.ts.map +0 -1
  334. package/dist/components/media/ImageCarousel.js +0 -21
  335. package/dist/components/media/ImageCarousel.js.map +0 -1
  336. package/dist/components/media/MediaTile.d.ts +0 -30
  337. package/dist/components/media/MediaTile.d.ts.map +0 -1
  338. package/dist/components/media/MediaTile.js +0 -51
  339. package/dist/components/media/MediaTile.js.map +0 -1
  340. package/dist/components/media/SkeletonMediaTile.d.ts +0 -17
  341. package/dist/components/media/SkeletonMediaTile.d.ts.map +0 -1
  342. package/dist/components/media/SkeletonMediaTile.js +0 -67
  343. package/dist/components/media/SkeletonMediaTile.js.map +0 -1
  344. package/dist/components/media/index.d.ts +0 -7
  345. package/dist/components/media/index.d.ts.map +0 -1
  346. package/dist/components/media/index.js +0 -8
  347. package/dist/components/media/index.js.map +0 -1
  348. package/dist/components/navigation/AppbarWeb.d.ts +0 -18
  349. package/dist/components/navigation/AppbarWeb.d.ts.map +0 -1
  350. package/dist/components/navigation/AppbarWeb.js +0 -70
  351. package/dist/components/navigation/AppbarWeb.js.map +0 -1
  352. package/dist/components/navigation/IconButtonGroup.d.ts +0 -7
  353. package/dist/components/navigation/IconButtonGroup.d.ts.map +0 -1
  354. package/dist/components/navigation/IconButtonGroup.js +0 -33
  355. package/dist/components/navigation/IconButtonGroup.js.map +0 -1
  356. package/dist/components/navigation/Logo.d.ts +0 -16
  357. package/dist/components/navigation/Logo.d.ts.map +0 -1
  358. package/dist/components/navigation/Logo.js +0 -64
  359. package/dist/components/navigation/Logo.js.map +0 -1
  360. package/dist/components/navigation/MobileMenuDrawer.d.ts +0 -13
  361. package/dist/components/navigation/MobileMenuDrawer.d.ts.map +0 -1
  362. package/dist/components/navigation/MobileMenuDrawer.js +0 -184
  363. package/dist/components/navigation/MobileMenuDrawer.js.map +0 -1
  364. package/dist/components/navigation/ScreenHeader.d.ts +0 -30
  365. package/dist/components/navigation/ScreenHeader.d.ts.map +0 -1
  366. package/dist/components/navigation/ScreenHeader.js +0 -127
  367. package/dist/components/navigation/ScreenHeader.js.map +0 -1
  368. package/dist/components/navigation/iconUtils.d.ts.map +0 -1
  369. package/dist/components/navigation/iconUtils.js.map +0 -1
  370. package/dist/components/tile/Tile.d.ts +0 -18
  371. package/dist/components/tile/Tile.d.ts.map +0 -1
  372. package/dist/components/tile/Tile.js +0 -41
  373. package/dist/components/tile/Tile.js.map +0 -1
  374. package/dist/components/tile/index.d.ts +0 -2
  375. package/dist/components/tile/index.d.ts.map +0 -1
  376. package/dist/components/tile/index.js +0 -2
  377. package/dist/components/tile/index.js.map +0 -1
  378. package/dist/components/ui/ArrowButton.d.ts +0 -8
  379. package/dist/components/ui/ArrowButton.d.ts.map +0 -1
  380. package/dist/components/ui/ArrowButton.js +0 -30
  381. package/dist/components/ui/ArrowButton.js.map +0 -1
  382. package/dist/components/ui/BlurButton.d.ts +0 -16
  383. package/dist/components/ui/BlurButton.d.ts.map +0 -1
  384. package/dist/components/ui/BlurButton.js +0 -26
  385. package/dist/components/ui/BlurButton.js.map +0 -1
  386. package/dist/components/ui/Button.d.ts +0 -24
  387. package/dist/components/ui/Button.d.ts.map +0 -1
  388. package/dist/components/ui/Button.js +0 -60
  389. package/dist/components/ui/Button.js.map +0 -1
  390. package/dist/components/ui/ErrorBoundary.d.ts +0 -18
  391. package/dist/components/ui/ErrorBoundary.d.ts.map +0 -1
  392. package/dist/components/ui/ErrorBoundary.js +0 -37
  393. package/dist/components/ui/ErrorBoundary.js.map +0 -1
  394. package/dist/components/ui/IconButton.d.ts +0 -13
  395. package/dist/components/ui/IconButton.d.ts.map +0 -1
  396. package/dist/components/ui/IconButton.js +0 -27
  397. package/dist/components/ui/IconButton.js.map +0 -1
  398. package/dist/components/ui/LoadingIndicator.d.ts +0 -6
  399. package/dist/components/ui/LoadingIndicator.d.ts.map +0 -1
  400. package/dist/components/ui/LoadingIndicator.js +0 -15
  401. package/dist/components/ui/LoadingIndicator.js.map +0 -1
  402. package/dist/components/ui/NotificationBadge.d.ts +0 -8
  403. package/dist/components/ui/NotificationBadge.d.ts.map +0 -1
  404. package/dist/components/ui/NotificationBadge.js +0 -24
  405. package/dist/components/ui/NotificationBadge.js.map +0 -1
  406. package/dist/components/ui/SkeletonCard.d.ts +0 -14
  407. package/dist/components/ui/SkeletonCard.d.ts.map +0 -1
  408. package/dist/components/ui/SkeletonCard.js +0 -50
  409. package/dist/components/ui/SkeletonCard.js.map +0 -1
  410. package/dist/components/ui/StyledText.d.ts +0 -17
  411. package/dist/components/ui/StyledText.d.ts.map +0 -1
  412. package/dist/components/ui/StyledText.js +0 -27
  413. package/dist/components/ui/StyledText.js.map +0 -1
  414. package/dist/components/ui/StyledTextInput.d.ts +0 -10
  415. package/dist/components/ui/StyledTextInput.d.ts.map +0 -1
  416. package/dist/components/ui/StyledTextInput.js +0 -62
  417. package/dist/components/ui/StyledTextInput.js.map +0 -1
  418. package/dist/components/ui/TextLink.d.ts +0 -14
  419. package/dist/components/ui/TextLink.d.ts.map +0 -1
  420. package/dist/components/ui/TextLink.js +0 -25
  421. package/dist/components/ui/TextLink.js.map +0 -1
  422. package/dist/components/ui/ToggleIconButton.d.ts +0 -14
  423. package/dist/components/ui/ToggleIconButton.d.ts.map +0 -1
  424. package/dist/components/ui/ToggleIconButton.js +0 -19
  425. package/dist/components/ui/ToggleIconButton.js.map +0 -1
  426. package/dist/context/scrollContext.d.ts.map +0 -1
  427. package/dist/context/scrollContext.js.map +0 -1
  428. package/dist/hooks/useDimensions.d.ts.map +0 -1
  429. package/dist/hooks/useDimensions.js.map +0 -1
  430. package/dist/hooks/useWindowHeight.d.ts +0 -7
  431. package/dist/hooks/useWindowHeight.d.ts.map +0 -1
  432. package/dist/hooks/useWindowHeight.js +0 -10
  433. package/dist/hooks/useWindowHeight.js.map +0 -1
  434. package/dist/hooks/useWindowWidth.d.ts +0 -20
  435. package/dist/hooks/useWindowWidth.d.ts.map +0 -1
  436. package/dist/hooks/useWindowWidth.js +0 -27
  437. package/dist/hooks/useWindowWidth.js.map +0 -1
  438. package/dist/theme/themeConfig.d.ts +0 -19
  439. package/dist/theme/themeConfig.d.ts.map +0 -1
  440. package/dist/theme/themeConfig.js +0 -43
  441. package/dist/theme/themeConfig.js.map +0 -1
  442. /package/dist/components/{chat → shared}/types.js +0 -0
@@ -0,0 +1,138 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // 1. IMPORTS
3
+ import { forwardRef, useEffect, useState } from 'react';
4
+ import { Platform, Pressable, StyleSheet, View, } from 'react-native';
5
+ import { Typography } from './typography';
6
+ import { useTheme } from '../../theme';
7
+ import { renderIcon } from '../../icons';
8
+ // Size configuration (borderRadius resolved from theme at render time)
9
+ const SIZE_CONFIG = {
10
+ small: { dimension: 40, iconSize: 20, radiusKey: 'md' },
11
+ medium: { dimension: 56, iconSize: 24, radiusKey: 'lg' },
12
+ large: { dimension: 96, iconSize: 36, radiusKey: 'xl' },
13
+ };
14
+ // 3. COMPONENT
15
+ /**
16
+ * Material Design 3 Floating Action Button (FAB)
17
+ * https://m3.material.io/components/floating-action-button
18
+ *
19
+ * Supports four color variants and three sizes.
20
+ * When a `label` is provided, renders as an Extended FAB.
21
+ */
22
+ const FAB = forwardRef(({ icon, label, variant = 'primary', size = 'medium', disabled = false, onPress, style, testID, accessibilityLabel, accessibilityHint, }, ref) => {
23
+ const theme = useTheme();
24
+ const tokens = theme.tokens;
25
+ const [hovered, setHovered] = useState(false);
26
+ const [reduceMotionEnabled, setReduceMotionEnabled] = useState(false);
27
+ useEffect(() => {
28
+ let mounted = true;
29
+ try {
30
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
31
+ const { AccessibilityInfo } = require('react-native');
32
+ AccessibilityInfo?.isReduceMotionEnabled?.().then((enabled) => {
33
+ if (mounted)
34
+ setReduceMotionEnabled(!!enabled);
35
+ });
36
+ }
37
+ catch (e) {
38
+ // ignore if not available
39
+ }
40
+ return () => { mounted = false; };
41
+ }, []);
42
+ const sizeConfig = SIZE_CONFIG[size];
43
+ const isExtended = !!label;
44
+ // Color mapping per variant
45
+ const getColors = () => {
46
+ if (disabled) {
47
+ return {
48
+ bg: theme.onSurface + '1F', // 12% opacity
49
+ fg: theme.onSurface + '61', // 38% opacity
50
+ };
51
+ }
52
+ switch (variant) {
53
+ case 'primary':
54
+ return { bg: theme.primaryContainer, fg: theme.onPrimaryContainer };
55
+ case 'secondary':
56
+ return { bg: theme.secondaryContainer, fg: theme.onSecondaryContainer };
57
+ case 'tertiary':
58
+ return { bg: theme.tertiaryContainer, fg: theme.onTertiaryContainer };
59
+ case 'surface':
60
+ return { bg: theme.surface, fg: theme.primary };
61
+ }
62
+ };
63
+ const colors = getColors();
64
+ const getContainerStyle = ({ pressed }) => {
65
+ const elevation = pressed ? tokens.elevation.level1 : tokens.elevation.level3;
66
+ const baseStyle = [
67
+ styles.container,
68
+ {
69
+ backgroundColor: colors.bg,
70
+ borderRadius: theme.borderRadius[sizeConfig.radiusKey],
71
+ },
72
+ ];
73
+ if (isExtended) {
74
+ baseStyle.push({
75
+ height: sizeConfig.dimension,
76
+ paddingHorizontal: theme.spacing.lg,
77
+ minWidth: sizeConfig.dimension,
78
+ });
79
+ }
80
+ else {
81
+ baseStyle.push({
82
+ width: sizeConfig.dimension,
83
+ height: sizeConfig.dimension,
84
+ });
85
+ }
86
+ if (disabled) {
87
+ baseStyle.push(styles.disabled);
88
+ }
89
+ // Elevation shadow
90
+ if (!disabled && elevation > 0) {
91
+ baseStyle.push({
92
+ shadowColor: theme.shadow,
93
+ shadowOffset: { width: 0, height: Math.max(1, Math.floor(elevation / 2)) },
94
+ shadowOpacity: 0.08,
95
+ shadowRadius: Math.max(1, Math.floor(elevation / 2)),
96
+ elevation: elevation,
97
+ });
98
+ }
99
+ // Hover/press transforms
100
+ if (!reduceMotionEnabled) {
101
+ if (pressed) {
102
+ baseStyle.push({ transform: [{ scale: 0.997 }] });
103
+ }
104
+ else if (hovered && Platform.OS === 'web') {
105
+ baseStyle.push({ transform: [{ translateY: -1 }, { scale: 1.02 }] });
106
+ }
107
+ }
108
+ if (style) {
109
+ baseStyle.push(style);
110
+ }
111
+ return baseStyle;
112
+ };
113
+ const iconSize = icon.size || sizeConfig.iconSize;
114
+ const iconLibrary = icon.library || 'Feather';
115
+ const iconColor = icon.color || colors.fg;
116
+ return (_jsx(Pressable, { ref: ref, testID: testID, onPress: disabled ? undefined : onPress, disabled: disabled, style: getContainerStyle, onHoverIn: () => setHovered(true), onHoverOut: () => setHovered(false), accessibilityRole: "button", accessibilityLabel: accessibilityLabel ?? label ?? icon.name, accessibilityHint: accessibilityHint, accessibilityState: { disabled }, android_ripple: !disabled && Platform.OS === 'android'
117
+ ? { color: colors.fg + '40', borderless: false }
118
+ : undefined, children: _jsxs(View, { style: [styles.content, { gap: theme.spacing.sm }], children: [renderIcon(icon, iconLibrary, iconSize, iconColor), isExtended && (_jsx(Typography, { variant: "labelLarge", weight: "medium", color: colors.fg, numberOfLines: 1, children: label }))] }) }));
119
+ });
120
+ FAB.displayName = 'FAB';
121
+ // 4. STYLES
122
+ const styles = StyleSheet.create({
123
+ container: {
124
+ alignItems: 'center',
125
+ justifyContent: 'center',
126
+ },
127
+ content: {
128
+ flexDirection: 'row',
129
+ alignItems: 'center',
130
+ justifyContent: 'center',
131
+ },
132
+ disabled: {
133
+ opacity: 0.38,
134
+ },
135
+ });
136
+ // 5. EXPORTS
137
+ export { FAB };
138
+ //# sourceMappingURL=fab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fab.js","sourceRoot":"","sources":["../../../components/ui/fab.tsx"],"names":[],"mappings":"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"}
@@ -1,13 +1,18 @@
1
- export { Button } from './Button';
2
- export { IconButton } from './IconButton';
3
- export { ToggleIconButton } from './ToggleIconButton';
4
- export { BlurButton } from './BlurButton';
5
- export { ArrowButton } from './ArrowButton';
6
- export { StyledText } from './StyledText';
7
- export { TextLink } from './TextLink';
8
- export { StyledTextInput } from './StyledTextInput';
9
- export { LoadingIndicator } from './LoadingIndicator';
10
- export { NotificationBadge } from './NotificationBadge';
11
- export { ErrorBoundary } from './ErrorBoundary';
12
- export { SkeletonCard } from './SkeletonCard';
1
+ export { Button } from './button';
2
+ export type { ButtonProps, ButtonVariant, IconConfig } from './button';
3
+ export { ButtonVariants } from './button';
4
+ export { FAB } from './fab';
5
+ export type { FABProps, FABVariant, FABSize } from './fab';
6
+ export { Collapsible } from './collapsible';
7
+ export type { CollapsibleProps } from './collapsible';
8
+ export { Typography } from './typography';
9
+ export type { TypographyProps, TypographyVariant, TypographyWeight, TypographyAlign } from './typography';
10
+ export { ThemedView } from './themed-view';
11
+ export type { ThemedViewProps, ThemedViewVariant } from './themed-view';
12
+ export { Screen } from './screen';
13
+ export type { ScreenProps } from './screen';
14
+ export { Container } from './container';
15
+ export type { ContainerProps } from './container';
16
+ export { ThemedImage } from './themed-image';
17
+ export type { ThemedImageProps } from './themed-image';
13
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../components/ui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../components/ui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAG3D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1G,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGxE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,14 +1,17 @@
1
1
  // UI components
2
- export { Button } from './Button';
3
- export { IconButton } from './IconButton';
4
- export { ToggleIconButton } from './ToggleIconButton';
5
- export { BlurButton } from './BlurButton';
6
- export { ArrowButton } from './ArrowButton';
7
- export { StyledText } from './StyledText';
8
- export { TextLink } from './TextLink';
9
- export { StyledTextInput } from './StyledTextInput';
10
- export { LoadingIndicator } from './LoadingIndicator';
11
- export { NotificationBadge } from './NotificationBadge';
12
- export { ErrorBoundary } from './ErrorBoundary';
13
- export { SkeletonCard } from './SkeletonCard';
2
+ export { Button } from './button';
3
+ export { ButtonVariants } from './button';
4
+ // FAB
5
+ export { FAB } from './fab';
6
+ // Collapsible
7
+ export { Collapsible } from './collapsible';
8
+ // Typography
9
+ export { Typography } from './typography';
10
+ export { ThemedView } from './themed-view';
11
+ // Screen
12
+ export { Screen } from './screen';
13
+ // Container
14
+ export { Container } from './container';
15
+ // ThemedImage
16
+ export { ThemedImage } from './themed-image';
14
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/ui/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/ui/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM;AACN,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG5B,cAAc;AACd,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,aAAa;AACb,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,YAAY;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,cAAc;AACd,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import { type StyleProp, type ViewStyle } from 'react-native';
3
+ import { type Edge } from 'react-native-safe-area-context';
4
+ import { type ThemedViewVariant } from './themed-view';
5
+ export interface ScreenProps {
6
+ /** Screen content */
7
+ children: React.ReactNode;
8
+ /** Whether to wrap content in ScrollView. @default false */
9
+ scrollable?: boolean;
10
+ /** Themed background variant. @default 'background' */
11
+ variant?: ThemedViewVariant;
12
+ /** Which safe area edges to respect. @default ['bottom'] */
13
+ edges?: Edge[];
14
+ /** Styles for the ScrollView content container (only applies if scrollable=true) */
15
+ contentContainerStyle?: StyleProp<ViewStyle>;
16
+ /** Styles for the outer container */
17
+ style?: StyleProp<ViewStyle>;
18
+ /** Test ID for testing */
19
+ testID?: string;
20
+ /** Whether to show vertical scroll indicator. @default true */
21
+ showsVerticalScrollIndicator?: boolean;
22
+ /**
23
+ * Whether to apply default top padding. @default true
24
+ * Set to false for full-bleed layouts (e.g. hero images at the top).
25
+ * Bottom padding is always applied when edges includes 'bottom'.
26
+ */
27
+ padded?: boolean;
28
+ }
29
+ /**
30
+ * Screen component providing consistent layout with safe areas and optional scrolling.
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * <Screen scrollable>
35
+ * <Typography>Content</Typography>
36
+ * </Screen>
37
+ * ```
38
+ */
39
+ export declare const Screen: React.FC<ScreenProps>;
40
+ //# sourceMappingURL=screen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../../../components/ui/screen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAA0B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAY,MAAM,cAAc,CAAC;AAChG,OAAO,EAAgB,KAAK,IAAI,EAAqB,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGnE,MAAM,WAAW,WAAW;IAC1B,qBAAqB;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,4DAA4D;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uDAAuD;IACvD,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,4DAA4D;IAC5D,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,oFAAoF;IACpF,qBAAqB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,qCAAqC;IACrC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAwDxC,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ScrollView, StyleSheet, Platform } from 'react-native';
3
+ import { SafeAreaView, useSafeAreaInsets } from 'react-native-safe-area-context';
4
+ import { ThemedView } from './themed-view';
5
+ import { useTheme } from '../../theme';
6
+ /**
7
+ * Screen component providing consistent layout with safe areas and optional scrolling.
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * <Screen scrollable>
12
+ * <Typography>Content</Typography>
13
+ * </Screen>
14
+ * ```
15
+ */
16
+ export const Screen = ({ children, scrollable = false, variant = 'background', edges = ['bottom'], contentContainerStyle, style, testID, showsVerticalScrollIndicator = true, padded = true, }) => {
17
+ const insets = useSafeAreaInsets();
18
+ const theme = useTheme();
19
+ // Strip 'bottom' from SafeAreaView edges — we manage bottom padding directly.
20
+ // With NativeTabs on Android, insets.bottom inside a tab screen is 0 (the native tab bar
21
+ // already constrains the content frame), so SafeAreaView's 'bottom' edge would double-apply
22
+ // the nav bar inset. Stripping it and using 0 on Android fixes that bug.
23
+ // On iOS, insets.bottom does not reflect the tab bar height, so we use a fixed 80dp to clear
24
+ // the standard tab bar (~46dp) + home indicator (~34dp).
25
+ const safeAreaEdges = edges.filter((e) => e !== 'bottom');
26
+ const bottomPadding = edges.includes('bottom') ? (Platform.OS === 'ios' ? 100 : 24) : 0;
27
+ return (_jsx(ThemedView, { variant: variant, rounded: false, style: styles.container, children: _jsx(SafeAreaView, { style: styles.safeArea, edges: safeAreaEdges, testID: testID, children: scrollable ? (_jsx(ScrollView, { style: styles.scrollView, contentContainerStyle: [
28
+ styles.scrollContent,
29
+ padded && { paddingTop: theme.spacing.xxl },
30
+ { paddingBottom: bottomPadding },
31
+ contentContainerStyle,
32
+ ], showsVerticalScrollIndicator: showsVerticalScrollIndicator, children: children })) : (_jsx(ThemedView, { variant: variant, rounded: false, style: [
33
+ styles.content,
34
+ padded && { paddingTop: theme.spacing.xxl },
35
+ { paddingBottom: bottomPadding },
36
+ style,
37
+ ], children: children })) }) }));
38
+ };
39
+ Screen.displayName = 'Screen';
40
+ const styles = StyleSheet.create({
41
+ container: {
42
+ flex: 1,
43
+ },
44
+ safeArea: {
45
+ flex: 1,
46
+ },
47
+ scrollView: {
48
+ flex: 1,
49
+ },
50
+ scrollContent: {
51
+ flexGrow: 1,
52
+ },
53
+ content: {
54
+ flex: 1,
55
+ },
56
+ });
57
+ //# sourceMappingURL=screen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen.js","sourceRoot":"","sources":["../../../components/ui/screen.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAkC,QAAQ,EAAE,MAAM,cAAc,CAAC;AAChG,OAAO,EAAE,YAAY,EAAa,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EAAE,UAAU,EAA0B,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA2BvC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,MAAM,GAA0B,CAAC,EAC5C,QAAQ,EACR,UAAU,GAAG,KAAK,EAClB,OAAO,GAAG,YAAY,EACtB,KAAK,GAAG,CAAC,QAAQ,CAAC,EAClB,qBAAqB,EACrB,KAAK,EACL,MAAM,EACN,4BAA4B,GAAG,IAAI,EACnC,MAAM,GAAG,IAAI,GACd,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,8EAA8E;IAC9E,yFAAyF;IACzF,4FAA4F;IAC5F,yEAAyE;IACzE,6FAA6F;IAC7F,yDAAyD;IACzD,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAa,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;IAEzF,OAAO,CACL,KAAC,UAAU,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,YACnE,KAAC,YAAY,IAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,YACvE,UAAU,CAAC,CAAC,CAAC,CACZ,KAAC,UAAU,IACT,KAAK,EAAE,MAAM,CAAC,UAAU,EACxB,qBAAqB,EAAE;oBACrB,MAAM,CAAC,aAAa;oBACpB,MAAM,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;oBAC3C,EAAE,aAAa,EAAE,aAAa,EAAE;oBAChC,qBAAqB;iBACtB,EACD,4BAA4B,EAAE,4BAA4B,YAEzD,QAAQ,GACE,CACd,CAAC,CAAC,CAAC,CACF,KAAC,UAAU,IACT,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,KAAK,EACd,KAAK,EAAE;oBACL,MAAM,CAAC,OAAO;oBACd,MAAM,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;oBAC3C,EAAE,aAAa,EAAE,aAAa,EAAE;oBAChC,KAAK;iBACN,YAEA,QAAQ,GACE,CACd,GACY,GACJ,CACd,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;AAE9B,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,IAAI,EAAE,CAAC;KACR;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,CAAC;KACR;IACD,UAAU,EAAE;QACV,IAAI,EAAE,CAAC;KACR;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,CAAC;KACZ;IACD,OAAO,EAAE;QACP,IAAI,EAAE,CAAC;KACR;CACF,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ImageProps, ImageSource } from 'expo-image';
2
+ export interface ThemedImageProps extends Omit<ImageProps, 'source'> {
3
+ lightSource: ImageSource;
4
+ darkSource: ImageSource;
5
+ }
6
+ export declare function ThemedImage({ lightSource, darkSource, ...props }: ThemedImageProps): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=themed-image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themed-image.d.ts","sourceRoot":"","sources":["../../../components/ui/themed-image.tsx"],"names":[],"mappings":"AACA,OAAO,EAAS,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG5D,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;IAClE,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,WAAW,CAAC;CACzB;AAED,wBAAgB,WAAW,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,2CAKlF"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Image } from 'expo-image';
3
+ import { useThemeMode } from '../../theme';
4
+ export function ThemedImage({ lightSource, darkSource, ...props }) {
5
+ const { mode } = useThemeMode();
6
+ const source = mode === 'dark' ? darkSource : lightSource;
7
+ return _jsx(Image, { source: source, ...props });
8
+ }
9
+ //# sourceMappingURL=themed-image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themed-image.js","sourceRoot":"","sources":["../../../components/ui/themed-image.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAA2B,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C,MAAM,UAAU,WAAW,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,KAAK,EAAoB;IACjF,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;IAE1D,OAAO,KAAC,KAAK,IAAC,MAAM,EAAE,MAAM,KAAM,KAAK,GAAI,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type ViewProps } from 'react-native';
2
+ export type ThemedViewVariant = 'surface' | 'surfaceContainer' | 'card' | 'appbar' | 'primary' | 'background';
3
+ export interface ThemedViewProps extends ViewProps {
4
+ /** Variant selects a semantic background from the theme */
5
+ variant?: ThemedViewVariant;
6
+ /** Override with a specific color */
7
+ color?: string;
8
+ /** Apply border radius from theme. @default true */
9
+ rounded?: boolean;
10
+ /** Number of columns on medium+ screens (1 column on small). Enables responsive grid layout. */
11
+ columns?: number;
12
+ /** Gap between items when columns is set */
13
+ gap?: number;
14
+ }
15
+ export declare const ThemedView: {
16
+ ({ variant, color, rounded, columns, gap, style, children, onLayout, ...rest }: ThemedViewProps): import("react/jsx-runtime").JSX.Element;
17
+ displayName: string;
18
+ };
19
+ export default ThemedView;
20
+ //# sourceMappingURL=themed-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themed-view.d.ts","sourceRoot":"","sources":["../../../components/ui/themed-view.tsx"],"names":[],"mappings":"AACA,OAAO,EAA8B,KAAK,SAAS,EAA0C,MAAM,cAAc,CAAC;AAIlH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;AAE9G,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,2DAA2D;IAC3D,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gGAAgG;IAChG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,UAAU;oFAAsG,eAAe;;CAkF3I,CAAC;AAIF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,75 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React, { useState } from 'react';
3
+ import { View, Platform, StyleSheet } from 'react-native';
4
+ import { useTheme } from '../../theme';
5
+ import { useDimensions, breakpoints } from '../../hooks';
6
+ export const ThemedView = ({ variant = 'surface', color, rounded = true, columns, gap, style, children, onLayout, ...rest }) => {
7
+ const theme = useTheme();
8
+ const { width } = useDimensions();
9
+ const isMid = width >= breakpoints.medium;
10
+ const [containerWidth, setContainerWidth] = useState(0);
11
+ const variantMap = {
12
+ surface: theme.surface,
13
+ surfaceContainer: theme.surfaceContainer ?? theme.surface,
14
+ card: theme.tokens.card.background,
15
+ appbar: theme.tokens.appbar.background,
16
+ primary: theme.primary,
17
+ background: theme.surface,
18
+ };
19
+ const backgroundColor = color ?? variantMap[variant] ?? theme.surface;
20
+ const viewStyle = [
21
+ { backgroundColor },
22
+ ...(rounded ? [{ borderRadius: theme.shape.surfaceBorderRadius }] : []),
23
+ ];
24
+ // Handle responsive grid layout
25
+ if (columns && columns > 1) {
26
+ // Resolve gap from prop, falling back to gap in style
27
+ const flatStyle = style ? StyleSheet.flatten(style) : undefined;
28
+ const effectiveGap = gap ?? flatStyle?.gap ?? 0;
29
+ const gapOffset = effectiveGap * (columns - 1) / columns;
30
+ const containerStyle = {
31
+ flexDirection: 'row',
32
+ flexWrap: 'wrap',
33
+ gap: effectiveGap,
34
+ };
35
+ const handleLayout = (e) => {
36
+ setContainerWidth(e.nativeEvent.layout.width);
37
+ onLayout?.(e);
38
+ };
39
+ const responsiveChildren = React.Children.map(children, (child) => {
40
+ if (!React.isValidElement(child))
41
+ return child;
42
+ let itemStyle;
43
+ if (!isMid) {
44
+ // Small screens: single column
45
+ itemStyle = { width: '100%' };
46
+ }
47
+ else if (Platform.OS === 'web') {
48
+ // Web: use calc() for precise sizing
49
+ itemStyle = {
50
+ flexBasis: `calc(${100 / columns}% - ${gapOffset}px)`,
51
+ flexGrow: 0,
52
+ flexShrink: 0,
53
+ maxWidth: `calc(${100 / columns}% - ${gapOffset}px)`,
54
+ };
55
+ }
56
+ else if (containerWidth > 0) {
57
+ // Native: use measured width for pixel-perfect sizing
58
+ const itemWidth = (containerWidth - effectiveGap * (columns - 1)) / columns;
59
+ itemStyle = { width: itemWidth, flexGrow: 0, flexShrink: 0 };
60
+ }
61
+ else {
62
+ // Native fallback before layout measurement
63
+ itemStyle = { flexBasis: `${Math.floor(100 / columns)}%`, flexShrink: 1 };
64
+ }
65
+ return React.cloneElement(child, {
66
+ style: [child.props.style, itemStyle],
67
+ });
68
+ });
69
+ return (_jsx(View, { style: [viewStyle, containerStyle, style], onLayout: handleLayout, ...rest, children: responsiveChildren }));
70
+ }
71
+ return (_jsx(View, { style: [viewStyle, style], onLayout: onLayout, ...rest, children: children }));
72
+ };
73
+ ThemedView.displayName = 'ThemedView';
74
+ export default ThemedView;
75
+ //# sourceMappingURL=themed-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themed-view.js","sourceRoot":"","sources":["../../../components/ui/themed-view.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ import React from 'react';
2
+ import { Text, type TextStyle, type StyleProp, type TextProps as RNTextProps } from 'react-native';
3
+ /**
4
+ * Material Design 3 typography variants.
5
+ *
6
+ * **Display** (57-36px): Hero text, large promotional content
7
+ * **Headline** (32-24px): Page titles, section headers
8
+ * **Title** (22-14px): Card titles, list headers
9
+ * **Body** (16-12px): Main content text
10
+ * **Label** (14-11px): Buttons, captions, metadata
11
+ */
12
+ export type TypographyVariant = 'displayLarge' | 'displayMedium' | 'displaySmall' | 'headlineLarge' | 'headlineMedium' | 'headlineSmall' | 'titleLarge' | 'titleMedium' | 'titleSmall' | 'bodyLarge' | 'bodyMedium' | 'bodySmall' | 'labelLarge' | 'labelMedium' | 'labelSmall';
13
+ /**
14
+ * Font weight options.
15
+ * Can use semantic names or numeric values (100-900).
16
+ */
17
+ export type TypographyWeight = 'light' | 'regular' | 'medium' | 'bold' | number;
18
+ /** Text alignment options */
19
+ export type TypographyAlign = 'left' | 'center' | 'right' | 'justify';
20
+ /**
21
+ * Props for the Typography component.
22
+ *
23
+ * @example
24
+ * ```tsx
25
+ * // Basic usage with default body text
26
+ * <Typography>Hello, world!</Typography>
27
+ * ```
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * // Page title
32
+ * <Typography variant="headlineLarge" weight="bold">
33
+ * Welcome Back
34
+ * </Typography>
35
+ * ```
36
+ *
37
+ * @example
38
+ * ```tsx
39
+ * // Card title with custom color
40
+ * <Typography variant="titleMedium" color="#6750A4">
41
+ * Featured Article
42
+ * </Typography>
43
+ * ```
44
+ *
45
+ * @example
46
+ * ```tsx
47
+ * // Muted secondary text
48
+ * <Typography variant="bodySmall" muted>
49
+ * Last updated 2 hours ago
50
+ * </Typography>
51
+ * ```
52
+ *
53
+ * @example
54
+ * ```tsx
55
+ * // Button label (uppercase)
56
+ * <Typography variant="labelLarge" weight="medium" uppercase>
57
+ * Submit
58
+ * </Typography>
59
+ * ```
60
+ *
61
+ * @example
62
+ * ```tsx
63
+ * // Centered hero text
64
+ * <Typography variant="displayMedium" align="center">
65
+ * Build Something Amazing
66
+ * </Typography>
67
+ * ```
68
+ */
69
+ export interface TypographyProps extends Omit<RNTextProps, 'style'> {
70
+ /** Text content to render */
71
+ children: React.ReactNode;
72
+ /**
73
+ * Typography scale variant following M3 type system.
74
+ * @default 'bodyMedium'
75
+ */
76
+ variant?: TypographyVariant;
77
+ /**
78
+ * Font weight. Use semantic names or numeric values.
79
+ * @default 'regular'
80
+ */
81
+ weight?: TypographyWeight;
82
+ /**
83
+ * Text alignment.
84
+ * @default 'left'
85
+ */
86
+ align?: TypographyAlign;
87
+ /**
88
+ * Custom text color. Defaults to theme's `onSurface` color.
89
+ */
90
+ color?: string;
91
+ /**
92
+ * Transform text to uppercase.
93
+ * @default false
94
+ */
95
+ uppercase?: boolean;
96
+ /**
97
+ * Apply muted styling using theme's `onSurfaceVariant` color.
98
+ * Useful for secondary or supporting text.
99
+ * @default false
100
+ */
101
+ muted?: boolean;
102
+ /** Additional text styles to merge */
103
+ style?: StyleProp<TextStyle>;
104
+ }
105
+ /**
106
+ * Typography component following Material Design 3 type system
107
+ * https://m3.material.io/styles/typography/type-scale-tokens
108
+ */
109
+ export declare const Typography: React.ForwardRefExoticComponent<TypographyProps & React.RefAttributes<Text>>;
110
+ //# sourceMappingURL=typography.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../../components/ui/typography.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAAc,IAAI,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAG/G;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GACzB,cAAc,GACd,eAAe,GACf,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,YAAY,GACZ,aAAa,GACb,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,aAAa,GACb,YAAY,CAAC;AAEjB;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhF,6BAA6B;AAC7B,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IACjE,6BAA6B;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sCAAsC;IACtC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,8EAqFtB,CAAC"}