zero-to-app 2.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 (282) hide show
  1. package/README.md +929 -0
  2. package/dist/brand/brandConfig.d.ts +48 -0
  3. package/dist/brand/brandConfig.d.ts.map +1 -0
  4. package/dist/brand/brandConfig.js +41 -0
  5. package/dist/brand/brandConfig.js.map +1 -0
  6. package/dist/brand/brandContext.d.ts +10 -0
  7. package/dist/brand/brandContext.d.ts.map +1 -0
  8. package/dist/brand/brandContext.js +16 -0
  9. package/dist/brand/brandContext.js.map +1 -0
  10. package/dist/brand/brandTypes.d.ts +54 -0
  11. package/dist/brand/brandTypes.d.ts.map +1 -0
  12. package/dist/brand/brandTypes.js +2 -0
  13. package/dist/brand/brandTypes.js.map +1 -0
  14. package/dist/brand/index.d.ts +4 -0
  15. package/dist/brand/index.d.ts.map +1 -0
  16. package/dist/brand/index.js +5 -0
  17. package/dist/brand/index.js.map +1 -0
  18. package/dist/components/action/ActionRow.d.ts +25 -0
  19. package/dist/components/action/ActionRow.d.ts.map +1 -0
  20. package/dist/components/action/ActionRow.js +66 -0
  21. package/dist/components/action/ActionRow.js.map +1 -0
  22. package/dist/components/action/index.d.ts +2 -0
  23. package/dist/components/action/index.d.ts.map +1 -0
  24. package/dist/components/action/index.js +3 -0
  25. package/dist/components/action/index.js.map +1 -0
  26. package/dist/components/card/Card.d.ts +11 -0
  27. package/dist/components/card/Card.d.ts.map +1 -0
  28. package/dist/components/card/Card.js +32 -0
  29. package/dist/components/card/Card.js.map +1 -0
  30. package/dist/components/card/index.d.ts +2 -0
  31. package/dist/components/card/index.d.ts.map +1 -0
  32. package/dist/components/card/index.js +2 -0
  33. package/dist/components/card/index.js.map +1 -0
  34. package/dist/components/chat/ChatContainer.d.ts +27 -0
  35. package/dist/components/chat/ChatContainer.d.ts.map +1 -0
  36. package/dist/components/chat/ChatContainer.js +52 -0
  37. package/dist/components/chat/ChatContainer.js.map +1 -0
  38. package/dist/components/chat/ChatInput.d.ts +9 -0
  39. package/dist/components/chat/ChatInput.d.ts.map +1 -0
  40. package/dist/components/chat/ChatInput.js +219 -0
  41. package/dist/components/chat/ChatInput.js.map +1 -0
  42. package/dist/components/chat/ChatMessages.d.ts +9 -0
  43. package/dist/components/chat/ChatMessages.d.ts.map +1 -0
  44. package/dist/components/chat/ChatMessages.js +35 -0
  45. package/dist/components/chat/ChatMessages.js.map +1 -0
  46. package/dist/components/chat/EmptyChat.d.ts +18 -0
  47. package/dist/components/chat/EmptyChat.d.ts.map +1 -0
  48. package/dist/components/chat/EmptyChat.js +64 -0
  49. package/dist/components/chat/EmptyChat.js.map +1 -0
  50. package/dist/components/chat/Message.d.ts +8 -0
  51. package/dist/components/chat/Message.d.ts.map +1 -0
  52. package/dist/components/chat/Message.js +47 -0
  53. package/dist/components/chat/Message.js.map +1 -0
  54. package/dist/components/chat/index.d.ts +6 -0
  55. package/dist/components/chat/index.d.ts.map +1 -0
  56. package/dist/components/chat/index.js +7 -0
  57. package/dist/components/chat/index.js.map +1 -0
  58. package/dist/components/chat/types.d.ts +34 -0
  59. package/dist/components/chat/types.d.ts.map +1 -0
  60. package/dist/components/chat/types.js +2 -0
  61. package/dist/components/chat/types.js.map +1 -0
  62. package/dist/components/form/DropDownSelect.d.ts +12 -0
  63. package/dist/components/form/DropDownSelect.d.ts.map +1 -0
  64. package/dist/components/form/DropDownSelect.js +63 -0
  65. package/dist/components/form/DropDownSelect.js.map +1 -0
  66. package/dist/components/form/EmailSubscriptionForm.d.ts +14 -0
  67. package/dist/components/form/EmailSubscriptionForm.d.ts.map +1 -0
  68. package/dist/components/form/EmailSubscriptionForm.js +58 -0
  69. package/dist/components/form/EmailSubscriptionForm.js.map +1 -0
  70. package/dist/components/form/FormErrors.d.ts +7 -0
  71. package/dist/components/form/FormErrors.d.ts.map +1 -0
  72. package/dist/components/form/FormErrors.js +35 -0
  73. package/dist/components/form/FormErrors.js.map +1 -0
  74. package/dist/components/form/FormInput.d.ts +14 -0
  75. package/dist/components/form/FormInput.d.ts.map +1 -0
  76. package/dist/components/form/FormInput.js +35 -0
  77. package/dist/components/form/FormInput.js.map +1 -0
  78. package/dist/components/form/FormSeparator.d.ts +6 -0
  79. package/dist/components/form/FormSeparator.d.ts.map +1 -0
  80. package/dist/components/form/FormSeparator.js +25 -0
  81. package/dist/components/form/FormSeparator.js.map +1 -0
  82. package/dist/components/form/index.d.ts +6 -0
  83. package/dist/components/form/index.d.ts.map +1 -0
  84. package/dist/components/form/index.js +7 -0
  85. package/dist/components/form/index.js.map +1 -0
  86. package/dist/components/index.d.ts +11 -0
  87. package/dist/components/index.d.ts.map +1 -0
  88. package/dist/components/index.js +12 -0
  89. package/dist/components/index.js.map +1 -0
  90. package/dist/components/layout/Footer.d.ts +3 -0
  91. package/dist/components/layout/Footer.d.ts.map +1 -0
  92. package/dist/components/layout/Footer.js +60 -0
  93. package/dist/components/layout/Footer.js.map +1 -0
  94. package/dist/components/layout/MinimalFooter.d.ts +8 -0
  95. package/dist/components/layout/MinimalFooter.d.ts.map +1 -0
  96. package/dist/components/layout/MinimalFooter.js +57 -0
  97. package/dist/components/layout/MinimalFooter.js.map +1 -0
  98. package/dist/components/layout/MobileFooterBar.d.ts +7 -0
  99. package/dist/components/layout/MobileFooterBar.d.ts.map +1 -0
  100. package/dist/components/layout/MobileFooterBar.js +18 -0
  101. package/dist/components/layout/MobileFooterBar.js.map +1 -0
  102. package/dist/components/layout/ParallaxScrollView.d.ts +11 -0
  103. package/dist/components/layout/ParallaxScrollView.d.ts.map +1 -0
  104. package/dist/components/layout/ParallaxScrollView.js +67 -0
  105. package/dist/components/layout/ParallaxScrollView.js.map +1 -0
  106. package/dist/components/layout/WebPageLayout.d.ts +17 -0
  107. package/dist/components/layout/WebPageLayout.d.ts.map +1 -0
  108. package/dist/components/layout/WebPageLayout.js +103 -0
  109. package/dist/components/layout/WebPageLayout.js.map +1 -0
  110. package/dist/components/layout/index.d.ts +6 -0
  111. package/dist/components/layout/index.d.ts.map +1 -0
  112. package/dist/components/layout/index.js +9 -0
  113. package/dist/components/layout/index.js.map +1 -0
  114. package/dist/components/list/List.d.ts +10 -0
  115. package/dist/components/list/List.d.ts.map +1 -0
  116. package/dist/components/list/List.js +18 -0
  117. package/dist/components/list/List.js.map +1 -0
  118. package/dist/components/list/ListButton.d.ts +13 -0
  119. package/dist/components/list/ListButton.d.ts.map +1 -0
  120. package/dist/components/list/ListButton.js +24 -0
  121. package/dist/components/list/ListButton.js.map +1 -0
  122. package/dist/components/list/ListDivider.d.ts +7 -0
  123. package/dist/components/list/ListDivider.d.ts.map +1 -0
  124. package/dist/components/list/ListDivider.js +23 -0
  125. package/dist/components/list/ListDivider.js.map +1 -0
  126. package/dist/components/list/index.d.ts +4 -0
  127. package/dist/components/list/index.d.ts.map +1 -0
  128. package/dist/components/list/index.js +4 -0
  129. package/dist/components/list/index.js.map +1 -0
  130. package/dist/components/media/Carousel.d.ts +18 -0
  131. package/dist/components/media/Carousel.d.ts.map +1 -0
  132. package/dist/components/media/Carousel.js +60 -0
  133. package/dist/components/media/Carousel.js.map +1 -0
  134. package/dist/components/media/FeatureCard.d.ts +9 -0
  135. package/dist/components/media/FeatureCard.d.ts.map +1 -0
  136. package/dist/components/media/FeatureCard.js +68 -0
  137. package/dist/components/media/FeatureCard.js.map +1 -0
  138. package/dist/components/media/HorizontalCarousel.d.ts +17 -0
  139. package/dist/components/media/HorizontalCarousel.d.ts.map +1 -0
  140. package/dist/components/media/HorizontalCarousel.js +60 -0
  141. package/dist/components/media/HorizontalCarousel.js.map +1 -0
  142. package/dist/components/media/ImageCarousel.d.ts +14 -0
  143. package/dist/components/media/ImageCarousel.d.ts.map +1 -0
  144. package/dist/components/media/ImageCarousel.js +21 -0
  145. package/dist/components/media/ImageCarousel.js.map +1 -0
  146. package/dist/components/media/MediaTile.d.ts +30 -0
  147. package/dist/components/media/MediaTile.d.ts.map +1 -0
  148. package/dist/components/media/MediaTile.js +51 -0
  149. package/dist/components/media/MediaTile.js.map +1 -0
  150. package/dist/components/media/SkeletonMediaTile.d.ts +17 -0
  151. package/dist/components/media/SkeletonMediaTile.d.ts.map +1 -0
  152. package/dist/components/media/SkeletonMediaTile.js +67 -0
  153. package/dist/components/media/SkeletonMediaTile.js.map +1 -0
  154. package/dist/components/media/index.d.ts +7 -0
  155. package/dist/components/media/index.d.ts.map +1 -0
  156. package/dist/components/media/index.js +8 -0
  157. package/dist/components/media/index.js.map +1 -0
  158. package/dist/components/navigation/AppbarWeb.d.ts +18 -0
  159. package/dist/components/navigation/AppbarWeb.d.ts.map +1 -0
  160. package/dist/components/navigation/AppbarWeb.js +70 -0
  161. package/dist/components/navigation/AppbarWeb.js.map +1 -0
  162. package/dist/components/navigation/IconButtonGroup.d.ts +7 -0
  163. package/dist/components/navigation/IconButtonGroup.d.ts.map +1 -0
  164. package/dist/components/navigation/IconButtonGroup.js +33 -0
  165. package/dist/components/navigation/IconButtonGroup.js.map +1 -0
  166. package/dist/components/navigation/Logo.d.ts +16 -0
  167. package/dist/components/navigation/Logo.d.ts.map +1 -0
  168. package/dist/components/navigation/Logo.js +64 -0
  169. package/dist/components/navigation/Logo.js.map +1 -0
  170. package/dist/components/navigation/MobileMenuDrawer.d.ts +13 -0
  171. package/dist/components/navigation/MobileMenuDrawer.d.ts.map +1 -0
  172. package/dist/components/navigation/MobileMenuDrawer.js +184 -0
  173. package/dist/components/navigation/MobileMenuDrawer.js.map +1 -0
  174. package/dist/components/navigation/ScreenHeader.d.ts +30 -0
  175. package/dist/components/navigation/ScreenHeader.d.ts.map +1 -0
  176. package/dist/components/navigation/ScreenHeader.js +127 -0
  177. package/dist/components/navigation/ScreenHeader.js.map +1 -0
  178. package/dist/components/navigation/iconUtils.d.ts +24 -0
  179. package/dist/components/navigation/iconUtils.d.ts.map +1 -0
  180. package/dist/components/navigation/iconUtils.js +53 -0
  181. package/dist/components/navigation/iconUtils.js.map +1 -0
  182. package/dist/components/navigation/index.d.ts +6 -0
  183. package/dist/components/navigation/index.d.ts.map +1 -0
  184. package/dist/components/navigation/index.js +7 -0
  185. package/dist/components/navigation/index.js.map +1 -0
  186. package/dist/components/tile/Tile.d.ts +18 -0
  187. package/dist/components/tile/Tile.d.ts.map +1 -0
  188. package/dist/components/tile/Tile.js +41 -0
  189. package/dist/components/tile/Tile.js.map +1 -0
  190. package/dist/components/tile/index.d.ts +2 -0
  191. package/dist/components/tile/index.d.ts.map +1 -0
  192. package/dist/components/tile/index.js +2 -0
  193. package/dist/components/tile/index.js.map +1 -0
  194. package/dist/components/ui/ArrowButton.d.ts +8 -0
  195. package/dist/components/ui/ArrowButton.d.ts.map +1 -0
  196. package/dist/components/ui/ArrowButton.js +30 -0
  197. package/dist/components/ui/ArrowButton.js.map +1 -0
  198. package/dist/components/ui/BlurButton.d.ts +16 -0
  199. package/dist/components/ui/BlurButton.d.ts.map +1 -0
  200. package/dist/components/ui/BlurButton.js +26 -0
  201. package/dist/components/ui/BlurButton.js.map +1 -0
  202. package/dist/components/ui/Button.d.ts +24 -0
  203. package/dist/components/ui/Button.d.ts.map +1 -0
  204. package/dist/components/ui/Button.js +60 -0
  205. package/dist/components/ui/Button.js.map +1 -0
  206. package/dist/components/ui/ErrorBoundary.d.ts +18 -0
  207. package/dist/components/ui/ErrorBoundary.d.ts.map +1 -0
  208. package/dist/components/ui/ErrorBoundary.js +37 -0
  209. package/dist/components/ui/ErrorBoundary.js.map +1 -0
  210. package/dist/components/ui/IconButton.d.ts +13 -0
  211. package/dist/components/ui/IconButton.d.ts.map +1 -0
  212. package/dist/components/ui/IconButton.js +27 -0
  213. package/dist/components/ui/IconButton.js.map +1 -0
  214. package/dist/components/ui/LoadingIndicator.d.ts +6 -0
  215. package/dist/components/ui/LoadingIndicator.d.ts.map +1 -0
  216. package/dist/components/ui/LoadingIndicator.js +15 -0
  217. package/dist/components/ui/LoadingIndicator.js.map +1 -0
  218. package/dist/components/ui/NotificationBadge.d.ts +8 -0
  219. package/dist/components/ui/NotificationBadge.d.ts.map +1 -0
  220. package/dist/components/ui/NotificationBadge.js +24 -0
  221. package/dist/components/ui/NotificationBadge.js.map +1 -0
  222. package/dist/components/ui/SkeletonCard.d.ts +14 -0
  223. package/dist/components/ui/SkeletonCard.d.ts.map +1 -0
  224. package/dist/components/ui/SkeletonCard.js +50 -0
  225. package/dist/components/ui/SkeletonCard.js.map +1 -0
  226. package/dist/components/ui/StyledText.d.ts +17 -0
  227. package/dist/components/ui/StyledText.d.ts.map +1 -0
  228. package/dist/components/ui/StyledText.js +27 -0
  229. package/dist/components/ui/StyledText.js.map +1 -0
  230. package/dist/components/ui/StyledTextInput.d.ts +10 -0
  231. package/dist/components/ui/StyledTextInput.d.ts.map +1 -0
  232. package/dist/components/ui/StyledTextInput.js +62 -0
  233. package/dist/components/ui/StyledTextInput.js.map +1 -0
  234. package/dist/components/ui/TextLink.d.ts +14 -0
  235. package/dist/components/ui/TextLink.d.ts.map +1 -0
  236. package/dist/components/ui/TextLink.js +25 -0
  237. package/dist/components/ui/TextLink.js.map +1 -0
  238. package/dist/components/ui/ToggleIconButton.d.ts +14 -0
  239. package/dist/components/ui/ToggleIconButton.d.ts.map +1 -0
  240. package/dist/components/ui/ToggleIconButton.js +19 -0
  241. package/dist/components/ui/ToggleIconButton.js.map +1 -0
  242. package/dist/components/ui/index.d.ts +13 -0
  243. package/dist/components/ui/index.d.ts.map +1 -0
  244. package/dist/components/ui/index.js +14 -0
  245. package/dist/components/ui/index.js.map +1 -0
  246. package/dist/context/scrollContext.d.ts +8 -0
  247. package/dist/context/scrollContext.d.ts.map +1 -0
  248. package/dist/context/scrollContext.js +16 -0
  249. package/dist/context/scrollContext.js.map +1 -0
  250. package/dist/hooks/index.d.ts +4 -0
  251. package/dist/hooks/index.d.ts.map +1 -0
  252. package/dist/hooks/index.js +5 -0
  253. package/dist/hooks/index.js.map +1 -0
  254. package/dist/hooks/useDimensions.d.ts +31 -0
  255. package/dist/hooks/useDimensions.d.ts.map +1 -0
  256. package/dist/hooks/useDimensions.js +44 -0
  257. package/dist/hooks/useDimensions.js.map +1 -0
  258. package/dist/hooks/useWindowHeight.d.ts +7 -0
  259. package/dist/hooks/useWindowHeight.d.ts.map +1 -0
  260. package/dist/hooks/useWindowHeight.js +10 -0
  261. package/dist/hooks/useWindowHeight.js.map +1 -0
  262. package/dist/hooks/useWindowWidth.d.ts +20 -0
  263. package/dist/hooks/useWindowWidth.d.ts.map +1 -0
  264. package/dist/hooks/useWindowWidth.js +27 -0
  265. package/dist/hooks/useWindowWidth.js.map +1 -0
  266. package/dist/index.d.ts +6 -0
  267. package/dist/index.d.ts.map +1 -0
  268. package/dist/index.js +9 -0
  269. package/dist/index.js.map +1 -0
  270. package/dist/theme/index.d.ts +3 -0
  271. package/dist/theme/index.d.ts.map +1 -0
  272. package/dist/theme/index.js +4 -0
  273. package/dist/theme/index.js.map +1 -0
  274. package/dist/theme/theme.d.ts +15 -0
  275. package/dist/theme/theme.d.ts.map +1 -0
  276. package/dist/theme/theme.js +38 -0
  277. package/dist/theme/theme.js.map +1 -0
  278. package/dist/theme/themeConfig.d.ts +19 -0
  279. package/dist/theme/themeConfig.d.ts.map +1 -0
  280. package/dist/theme/themeConfig.js +43 -0
  281. package/dist/theme/themeConfig.js.map +1 -0
  282. package/package.json +104 -0
@@ -0,0 +1,14 @@
1
+ import Feather from '@expo/vector-icons/Feather';
2
+ type ToggleIconButtonProps = {
3
+ iconName: keyof typeof Feather.glyphMap;
4
+ alternateIconName: keyof typeof Feather.glyphMap;
5
+ onPress?: () => void;
6
+ raised?: boolean;
7
+ };
8
+ /**
9
+ * Renders a rounded icon button with an icon from Expo Vector Icons.
10
+ * Alternates between the primary icon and an alternate icon when clicked.
11
+ */
12
+ declare const ToggleIconButton: ({ iconName, alternateIconName, onPress }: ToggleIconButtonProps) => import("react/jsx-runtime").JSX.Element;
13
+ export { ToggleIconButton };
14
+ //# sourceMappingURL=ToggleIconButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleIconButton.d.ts","sourceRoot":"","sources":["../../../components/ui/ToggleIconButton.tsx"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,4BAA4B,CAAC;AAGjD,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,MAAM,OAAO,OAAO,CAAC,QAAQ,CAAC;IACxC,iBAAiB,EAAE,MAAM,OAAO,OAAO,CAAC,QAAQ,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;GAGG;AAEH,QAAA,MAAM,gBAAgB,GAAI,0CAA0C,qBAAqB,4CAgBxF,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { IconButton } from './IconButton';
4
+ /**
5
+ * Renders a rounded icon button with an icon from Expo Vector Icons.
6
+ * Alternates between the primary icon and an alternate icon when clicked.
7
+ */
8
+ const ToggleIconButton = ({ iconName, alternateIconName, onPress }) => {
9
+ const [isToggled, setIsToggled] = useState(false);
10
+ const handlePress = () => {
11
+ if (onPress) {
12
+ onPress();
13
+ }
14
+ setIsToggled(!isToggled);
15
+ };
16
+ return (_jsx(IconButton, { iconName: isToggled ? alternateIconName : iconName, onPress: handlePress }));
17
+ };
18
+ export { ToggleIconButton };
19
+ //# sourceMappingURL=ToggleIconButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleIconButton.js","sourceRoot":"","sources":["../../../components/ui/ToggleIconButton.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAS1C;;;GAGG;AAEH,MAAM,gBAAgB,GAAG,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAyB,EAAE,EAAE;IAC3F,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElD,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,UAAU,IACT,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,EAClD,OAAO,EAAE,WAAW,GACpB,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,13 @@
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';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,14 @@
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';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { type SharedValue } from 'react-native-reanimated';
3
+ export declare const ScrollContext: React.Context<SharedValue<number> | null>;
4
+ export declare function ScrollProvider({ children }: {
5
+ children: React.ReactNode;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ export declare function useScrollContext(): SharedValue<number>;
8
+ //# sourceMappingURL=scrollContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrollContext.d.ts","sourceRoot":"","sources":["../../context/scrollContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,yBAAyB,CAAC;AAE3E,eAAO,MAAM,aAAa,2CAAkD,CAAC;AAE7E,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAQzE;AAED,wBAAgB,gBAAgB,wBAM/B"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useContext, createContext } from 'react';
3
+ import { useSharedValue } from 'react-native-reanimated';
4
+ export const ScrollContext = createContext(null);
5
+ export function ScrollProvider({ children }) {
6
+ const scrollY = useSharedValue(0);
7
+ return (_jsx(ScrollContext.Provider, { value: scrollY, children: children }));
8
+ }
9
+ export function useScrollContext() {
10
+ const context = useContext(ScrollContext);
11
+ if (context === null) {
12
+ throw new Error('useScrollContext must be used within a ScrollProvider');
13
+ }
14
+ return context;
15
+ }
16
+ //# sourceMappingURL=scrollContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrollContext.js","sourceRoot":"","sources":["../../context/scrollContext.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAoB,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE3E,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAA6B,IAAI,CAAC,CAAC;AAE7E,MAAM,UAAU,cAAc,CAAC,EAAE,QAAQ,EAAiC;IACxE,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAElC,OAAO,CACL,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YACnC,QAAQ,GACc,CAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC1C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './useDimensions';
2
+ export * from './useWindowWidth';
3
+ export * from './useWindowHeight';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../hooks/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ // Barrel export for zero-to-app hooks
2
+ export * from './useDimensions';
3
+ export * from './useWindowWidth';
4
+ export * from './useWindowHeight';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../hooks/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Breakpoints for responsive design (sizing only)
3
+ */
4
+ export declare const breakpoints: {
5
+ small: number;
6
+ medium: number;
7
+ large: number;
8
+ xlarge: number;
9
+ };
10
+ export type Breakpoint = 'small' | 'medium' | 'large' | 'xlarge';
11
+ export interface DimensionsInfo {
12
+ width: number;
13
+ height: number;
14
+ breakpoint: Breakpoint;
15
+ }
16
+ /**
17
+ * Unified hook that provides window dimensions and breakpoint information
18
+ * Focuses on sizing decisions only - no duplicate semantic abstractions
19
+ * Platform checks should use React Native Platform.OS directly
20
+ *
21
+ * @example
22
+ * const dimensions = useDimensions();
23
+ * if (dimensions.width > breakpoints.medium) { ... }
24
+ * if (dimensions.breakpoint !== 'small') { ... }
25
+ *
26
+ * // For platform-specific logic:
27
+ * import { Platform } from 'react-native';
28
+ * if (Platform.OS === 'web' && dimensions.breakpoint === 'small') { ... }
29
+ */
30
+ export declare const useDimensions: () => DimensionsInfo;
31
+ //# sourceMappingURL=useDimensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDimensions.d.ts","sourceRoot":"","sources":["../../hooks/useDimensions.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEjE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa,QAAO,cAkBhC,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { useWindowDimensions } from 'react-native';
2
+ /**
3
+ * Breakpoints for responsive design (sizing only)
4
+ */
5
+ export const breakpoints = {
6
+ small: 480,
7
+ medium: 768,
8
+ large: 1024,
9
+ xlarge: 1280,
10
+ };
11
+ /**
12
+ * Unified hook that provides window dimensions and breakpoint information
13
+ * Focuses on sizing decisions only - no duplicate semantic abstractions
14
+ * Platform checks should use React Native Platform.OS directly
15
+ *
16
+ * @example
17
+ * const dimensions = useDimensions();
18
+ * if (dimensions.width > breakpoints.medium) { ... }
19
+ * if (dimensions.breakpoint !== 'small') { ... }
20
+ *
21
+ * // For platform-specific logic:
22
+ * import { Platform } from 'react-native';
23
+ * if (Platform.OS === 'web' && dimensions.breakpoint === 'small') { ... }
24
+ */
25
+ export const useDimensions = () => {
26
+ const { width, height } = useWindowDimensions();
27
+ // Determine breakpoint based on width
28
+ let breakpoint = 'small';
29
+ if (width >= breakpoints.xlarge) {
30
+ breakpoint = 'xlarge';
31
+ }
32
+ else if (width >= breakpoints.large) {
33
+ breakpoint = 'large';
34
+ }
35
+ else if (width >= breakpoints.medium) {
36
+ breakpoint = 'medium';
37
+ }
38
+ return {
39
+ width,
40
+ height,
41
+ breakpoint,
42
+ };
43
+ };
44
+ //# sourceMappingURL=useDimensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDimensions.js","sourceRoot":"","sources":["../../hooks/useDimensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;CACb,CAAC;AAUF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAmB,EAAE;IAChD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAEhD,sCAAsC;IACtC,IAAI,UAAU,GAAe,OAAO,CAAC;IACrC,IAAI,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QAChC,UAAU,GAAG,QAAQ,CAAC;IACxB,CAAC;SAAM,IAAI,KAAK,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;QACtC,UAAU,GAAG,OAAO,CAAC;IACvB,CAAC;SAAM,IAAI,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACvC,UAAU,GAAG,QAAQ,CAAC;IACxB,CAAC;IAED,OAAO;QACL,KAAK;QACL,MAAM;QACN,UAAU;KACX,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Returns the height of the window.
3
+ * @param {number} windowHeight - The height of the window.
4
+ * @returns {number} The height of the window.
5
+ */
6
+ export declare const useWindowHeight: () => number;
7
+ //# sourceMappingURL=useWindowHeight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWindowHeight.d.ts","sourceRoot":"","sources":["../../hooks/useWindowHeight.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,eAAO,MAAM,eAAe,cAE3B,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Returns the height of the window.
3
+ * @param {number} windowHeight - The height of the window.
4
+ * @returns {number} The height of the window.
5
+ */
6
+ import { useWindowDimensions } from 'react-native';
7
+ export const useWindowHeight = () => {
8
+ return useWindowDimensions().height;
9
+ };
10
+ //# sourceMappingURL=useWindowHeight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWindowHeight.js","sourceRoot":"","sources":["../../hooks/useWindowHeight.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,OAAO,mBAAmB,EAAE,CAAC,MAAM,CAAC;AACtC,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Returns the width of the window
3
+ * @param {number} windowWidth - The width of the window.
4
+ * @returns {number} The width of the window.
5
+ */
6
+ export declare const useWindowWidth: () => number;
7
+ /**
8
+ * Hook that returns semantic boolean values for responsive breakpoints
9
+ * @returns {object} Object containing boolean flags for different screen sizes
10
+ */
11
+ export declare const useBreakpoints: () => {
12
+ isSmallScreen: boolean;
13
+ isMediumScreen: boolean;
14
+ isLargeScreen: boolean;
15
+ isXLargeScreen: boolean;
16
+ isSmallOrMedium: boolean;
17
+ isMediumOrLarger: boolean;
18
+ isLargeOrLarger: boolean;
19
+ };
20
+ //# sourceMappingURL=useWindowWidth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWindowWidth.d.ts","sourceRoot":"","sources":["../../hooks/useWindowWidth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,eAAO,MAAM,cAAc,cAE1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;CAY1B,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Returns the width of the window
3
+ * @param {number} windowWidth - The width of the window.
4
+ * @returns {number} The width of the window.
5
+ */
6
+ import { useWindowDimensions } from 'react-native';
7
+ import { breakpoints } from './useDimensions';
8
+ export const useWindowWidth = () => {
9
+ return useWindowDimensions().width;
10
+ };
11
+ /**
12
+ * Hook that returns semantic boolean values for responsive breakpoints
13
+ * @returns {object} Object containing boolean flags for different screen sizes
14
+ */
15
+ export const useBreakpoints = () => {
16
+ const windowWidth = useWindowWidth();
17
+ return {
18
+ isSmallScreen: windowWidth < breakpoints.small, // width < 480
19
+ isMediumScreen: windowWidth >= breakpoints.small && windowWidth < breakpoints.medium, // width >= 480 && width < 768
20
+ isLargeScreen: windowWidth >= breakpoints.medium && windowWidth < breakpoints.large, // width >= 768 && width < 1024
21
+ isXLargeScreen: windowWidth >= breakpoints.large, // width >= 1024
22
+ isSmallOrMedium: windowWidth < breakpoints.medium, // width < 768
23
+ isMediumOrLarger: windowWidth >= breakpoints.medium, // width >= 768
24
+ isLargeOrLarger: windowWidth >= breakpoints.large, // width >= 1024
25
+ };
26
+ };
27
+ //# sourceMappingURL=useWindowWidth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWindowWidth.js","sourceRoot":"","sources":["../../hooks/useWindowWidth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,OAAO,mBAAmB,EAAE,CAAC,KAAK,CAAC;AACrC,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO;QACL,aAAa,EAAE,WAAW,GAAG,WAAW,CAAC,KAAK,EAAE,cAAc;QAC9D,cAAc,EAAE,WAAW,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,8BAA8B;QACpH,aAAa,EAAE,WAAW,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,GAAG,WAAW,CAAC,KAAK,EAAE,+BAA+B;QACpH,cAAc,EAAE,WAAW,IAAI,WAAW,CAAC,KAAK,EAAE,gBAAgB;QAClE,eAAe,EAAE,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,cAAc;QACjE,gBAAgB,EAAE,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,eAAe;QACpE,eAAe,EAAE,WAAW,IAAI,WAAW,CAAC,KAAK,EAAE,gBAAgB;KACpE,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './brand';
2
+ export * from './theme';
3
+ export * from './components';
4
+ export * from './hooks';
5
+ export { ScrollProvider, useScrollContext } from './context/scrollContext';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAEA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAE7B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ // Main barrel export for zero-to-app design system
2
+ // Re-export everything from submodules
3
+ export * from './brand';
4
+ export * from './theme';
5
+ export * from './components';
6
+ // Chat components are now exported via components
7
+ export * from './hooks';
8
+ export { ScrollProvider, useScrollContext } from './context/scrollContext';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,uCAAuC;AACvC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,kDAAkD;AAClD,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { ThemeContext, ZeroToApp, type ThemeContextType } from './theme';
2
+ export { createLightTheme, createDarkTheme, type ThemeValuesType } from './themeConfig';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../theme/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,4 @@
1
+ // Export theme from local files
2
+ export { ThemeContext, ZeroToApp } from './theme';
3
+ export { createLightTheme, createDarkTheme } from './themeConfig';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../theme/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAyB,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAwB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { ThemeValuesType } from './themeConfig';
3
+ import { Brand } from '../brand';
4
+ export type ThemeContextType = {
5
+ values: ThemeValuesType;
6
+ toggleTheme: () => void;
7
+ };
8
+ declare const ThemeContext: React.Context<ThemeContextType>;
9
+ type ZeroToAppProps = {
10
+ brand: Brand;
11
+ children: React.ReactNode;
12
+ };
13
+ declare const ZeroToApp: ({ brand, children }: ZeroToAppProps) => import("react/jsx-runtime").JSX.Element;
14
+ export { ThemeContext, ZeroToApp };
15
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../theme/theme.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAChE,OAAO,EAAqC,eAAe,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAIjC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAIF,QAAA,MAAM,YAAY,iCAmBhB,CAAC;AAEH,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,QAAA,MAAM,SAAS,GAAI,qBAAqB,cAAc,4CAarD,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useState, useMemo } from 'react';
3
+ import { createDarkTheme, createLightTheme } from './themeConfig';
4
+ import { BrandProvider } from '../brand/brandContext';
5
+ // Initialize ThemeContext with a placeholder that throws if used outside provider
6
+ // This should never be used in practice since ZeroToApp always provides a real brand
7
+ const ThemeContext = createContext({
8
+ values: {
9
+ color: '#000000',
10
+ backgroundColor: '#FFFFFF',
11
+ highlightColor: '#000000',
12
+ borderColor: '#dddfe2',
13
+ inactiveIconColor: '#606770',
14
+ dividerColor: '#dddfe2',
15
+ cardBackgroundColor: '#FFFFFF',
16
+ appbarBackgroundColor: '#FFFFFF',
17
+ iconButtonBackgroundColor: '#999999',
18
+ iconButtonIconColor: '#ffffff',
19
+ inputBackgroundColor: '#ffffff',
20
+ linkColor: '#666666',
21
+ isDark: false,
22
+ },
23
+ toggleTheme: () => {
24
+ throw new Error('ThemeContext used outside ZeroToApp provider');
25
+ },
26
+ });
27
+ //Initialize ZeroToApp with a toggle function
28
+ const ZeroToApp = ({ brand, children }) => {
29
+ const lightTheme = useMemo(() => createLightTheme(brand), [brand]);
30
+ const darkTheme = useMemo(() => createDarkTheme(brand), [brand]);
31
+ const [values, setTheme] = useState(lightTheme);
32
+ const toggleTheme = () => {
33
+ setTheme(values === lightTheme ? darkTheme : lightTheme);
34
+ };
35
+ return (_jsx(BrandProvider, { brand: brand, children: _jsx(ThemeContext.Provider, { value: { values, toggleTheme }, children: children }) }));
36
+ };
37
+ export { ThemeContext, ZeroToApp };
38
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../theme/theme.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAmB,MAAM,eAAe,CAAC;AAEnF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAQtD,kFAAkF;AAClF,qFAAqF;AACrF,MAAM,YAAY,GAAG,aAAa,CAAmB;IACnD,MAAM,EAAE;QACN,KAAK,EAAE,SAAS;QAChB,eAAe,EAAE,SAAS;QAC1B,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,SAAS;QACtB,iBAAiB,EAAE,SAAS;QAC5B,YAAY,EAAE,SAAS;QACvB,mBAAmB,EAAE,SAAS;QAC9B,qBAAqB,EAAE,SAAS;QAChC,yBAAyB,EAAE,SAAS;QACpC,mBAAmB,EAAE,SAAS;QAC9B,oBAAoB,EAAE,SAAS;QAC/B,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,KAAK;KACd;IACD,WAAW,EAAE,GAAG,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;CACF,CAAC,CAAC;AAMH,6CAA6C;AAC7C,MAAM,SAAS,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAkB,EAAE,EAAE;IACxD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAkB,UAAU,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,aAAa,IAAC,KAAK,EAAE,KAAK,YACzB,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,YAAG,QAAQ,GAAyB,GAC3E,CACjB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { Brand } from '../brand';
2
+ export interface ThemeValuesType {
3
+ color: string;
4
+ backgroundColor: string;
5
+ highlightColor: string;
6
+ borderColor: string;
7
+ inactiveIconColor: string;
8
+ dividerColor: string;
9
+ cardBackgroundColor: string;
10
+ appbarBackgroundColor: string;
11
+ iconButtonBackgroundColor: string;
12
+ iconButtonIconColor: string;
13
+ inputBackgroundColor: string;
14
+ linkColor: string;
15
+ isDark: boolean;
16
+ }
17
+ export declare const createLightTheme: (brand: Brand) => ThemeValuesType;
18
+ export declare const createDarkTheme: (brand: Brand) => ThemeValuesType;
19
+ //# sourceMappingURL=themeConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeConfig.d.ts","sourceRoot":"","sources":["../../theme/themeConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,yBAAyB,EAAE,MAAM,CAAC;IAClC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB;AAGD,eAAO,MAAM,gBAAgB,GAAI,OAAO,KAAK,KAAG,eAmB/C,CAAC;AAGF,eAAO,MAAM,eAAe,GAAI,OAAO,KAAK,KAAG,eAmB9C,CAAC"}
@@ -0,0 +1,43 @@
1
+ //Defining light theme factory function
2
+ export const createLightTheme = (brand) => {
3
+ if (!brand || !brand.colors) {
4
+ throw new Error('createLightTheme: brand parameter must be a valid Brand object with colors');
5
+ }
6
+ return {
7
+ color: '#000000', // Text color
8
+ backgroundColor: '#FFFFFF', // Background color of the entire app
9
+ cardBackgroundColor: '#FFFFFF', // Background color of cards
10
+ appbarBackgroundColor: '#FFFFFF', // Background color of the appbar
11
+ highlightColor: brand.colors.primary, //Primary color of the brand derived from brandConfig
12
+ borderColor: '#dddfe2', // Border color
13
+ inactiveIconColor: '#606770', // Affects icons displayed in navigation bar
14
+ dividerColor: '#dddfe2', // Divider color
15
+ iconButtonBackgroundColor: '#999999', // Background color of icon buttons
16
+ iconButtonIconColor: '#ffffff', // Icon color for icon buttons
17
+ inputBackgroundColor: '#ffffff', // Input field background color
18
+ linkColor: '#666666', // Link text color for light mode
19
+ isDark: false,
20
+ };
21
+ };
22
+ //Defining dark theme factory function
23
+ export const createDarkTheme = (brand) => {
24
+ if (!brand || !brand.colors) {
25
+ throw new Error('createDarkTheme: brand parameter must be a valid Brand object with colors');
26
+ }
27
+ return {
28
+ color: '#FFFFFF', // Text color
29
+ backgroundColor: '#212121', // Background color of the entire app
30
+ cardBackgroundColor: '#181818', // Background color of cards
31
+ appbarBackgroundColor: '#000000', // Background color of the appbar
32
+ highlightColor: brand.colors.secondary, //Primary color of the brand derived from brandConfig
33
+ borderColor: '#424242', // Border color
34
+ inactiveIconColor: '#b0b3b8', // Affects icons displayed in navigation bar
35
+ dividerColor: '#3e4042', // Divider color
36
+ iconButtonBackgroundColor: '#3a3b3c', // Background color of icon buttons
37
+ iconButtonIconColor: '#ffffff', // Icon color for icon buttons
38
+ inputBackgroundColor: '#3a3b3c', // Input field background color
39
+ linkColor: '#999999', // Link text color for dark mode
40
+ isDark: true,
41
+ };
42
+ };
43
+ //# sourceMappingURL=themeConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeConfig.js","sourceRoot":"","sources":["../../theme/themeConfig.ts"],"names":[],"mappings":"AAmBA,uCAAuC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAY,EAAmB,EAAE;IAChE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAChG,CAAC;IACD,OAAO;QACL,KAAK,EAAE,SAAS,EAAE,aAAa;QAC/B,eAAe,EAAE,SAAS,EAAE,qCAAqC;QACjE,mBAAmB,EAAE,SAAS,EAAE,4BAA4B;QAC5D,qBAAqB,EAAE,SAAS,EAAE,iCAAiC;QACnE,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,qDAAqD;QAC3F,WAAW,EAAE,SAAS,EAAE,eAAe;QACvC,iBAAiB,EAAE,SAAS,EAAE,4CAA4C;QAC1E,YAAY,EAAE,SAAS,EAAE,gBAAgB;QACzC,yBAAyB,EAAE,SAAS,EAAE,mCAAmC;QACzE,mBAAmB,EAAE,SAAS,EAAE,8BAA8B;QAC9D,oBAAoB,EAAE,SAAS,EAAE,+BAA+B;QAChE,SAAS,EAAE,SAAS,EAAE,iCAAiC;QACvD,MAAM,EAAE,KAAK;KACd,CAAC;AACJ,CAAC,CAAC;AAEF,sCAAsC;AACtC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAY,EAAmB,EAAE;IAC/D,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO;QACL,KAAK,EAAE,SAAS,EAAE,aAAa;QAC/B,eAAe,EAAE,SAAS,EAAE,qCAAqC;QACjE,mBAAmB,EAAE,SAAS,EAAE,4BAA4B;QAC5D,qBAAqB,EAAE,SAAS,EAAE,iCAAiC;QACnE,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,qDAAqD;QAC7F,WAAW,EAAE,SAAS,EAAE,eAAe;QACvC,iBAAiB,EAAE,SAAS,EAAE,4CAA4C;QAC1E,YAAY,EAAE,SAAS,EAAE,gBAAgB;QACzC,yBAAyB,EAAE,SAAS,EAAE,mCAAmC;QACzE,mBAAmB,EAAE,SAAS,EAAE,8BAA8B;QAC9D,oBAAoB,EAAE,SAAS,EAAE,+BAA+B;QAChE,SAAS,EAAE,SAAS,EAAE,gCAAgC;QACtD,MAAM,EAAE,IAAI;KACb,CAAC;AACJ,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,104 @@
1
+ {
2
+ "name": "zero-to-app",
3
+ "version": "2.0.0",
4
+ "description": "30+ reusable React Native components for iOS, Android, and Web",
5
+ "license": "MIT",
6
+ "author": "Alex Amayo",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/Alex-Amayo/zero-to-app.git"
10
+ },
11
+ "homepage": "https://zero-to-app.expo.app",
12
+ "keywords": [
13
+ "react-native",
14
+ "expo",
15
+ "ui-components",
16
+ "design-system",
17
+ "cross-platform",
18
+ "ios",
19
+ "android",
20
+ "web",
21
+ "theming",
22
+ "components"
23
+ ],
24
+ "main": "dist/index.js",
25
+ "types": "dist/index.d.ts",
26
+ "exports": {
27
+ ".": {
28
+ "types": "./dist/index.d.ts",
29
+ "default": "./dist/index.js"
30
+ },
31
+ "./brand": {
32
+ "types": "./dist/brand/index.d.ts",
33
+ "default": "./dist/brand/index.js"
34
+ },
35
+ "./theme": {
36
+ "types": "./dist/theme/index.d.ts",
37
+ "default": "./dist/theme/index.js"
38
+ },
39
+ "./hooks": {
40
+ "types": "./dist/hooks/index.d.ts",
41
+ "default": "./dist/hooks/index.js"
42
+ },
43
+ "./context": {
44
+ "types": "./dist/context/scrollContext.d.ts",
45
+ "default": "./dist/context/scrollContext.js"
46
+ },
47
+ "./components": {
48
+ "types": "./dist/components/index.d.ts",
49
+ "default": "./dist/components/index.js"
50
+ },
51
+ "./components/*": {
52
+ "types": "./dist/components/*/index.d.ts",
53
+ "default": "./dist/components/*/index.js"
54
+ },
55
+ "./components/*/*": {
56
+ "types": "./dist/components/*/*.d.ts",
57
+ "default": "./dist/components/*/*.js"
58
+ },
59
+ "./ui": {
60
+ "types": "./dist/components/ui/index.d.ts",
61
+ "default": "./dist/components/ui/index.js"
62
+ },
63
+ "./ui/*": {
64
+ "types": "./dist/components/ui/*.d.ts",
65
+ "default": "./dist/components/ui/*.js"
66
+ },
67
+ "./package.json": "./package.json"
68
+ },
69
+ "files": ["dist", "package.json", "README.md"],
70
+ "scripts": {
71
+ "build": "pnpm exec tsc -p tsconfig.build.json"
72
+ },
73
+ "peerDependencies": {
74
+ "react": ">=18.0.0",
75
+ "react-native": ">=0.70.0",
76
+ "@expo/vector-icons": "*",
77
+ "expo-blur": "*",
78
+ "expo-glass-effect": "*"
79
+ },
80
+ "peerDependenciesMeta": {
81
+ "@expo/vector-icons": {
82
+ "optional": true
83
+ },
84
+ "expo-blur": {
85
+ "optional": true
86
+ },
87
+ "expo-glass-effect": {
88
+ "optional": true
89
+ }
90
+ },
91
+ "dependencies": {
92
+ "react-hook-form": "^7.0.0",
93
+ "@hookform/resolvers": "^3.0.0",
94
+ "zod": "^3.22.0",
95
+ "react-native-reanimated-carousel": "^3.5.0",
96
+ "@shopify/flash-list": "^1.7.0",
97
+ "lottie-react-native": "^6.7.0"
98
+ },
99
+ "devDependencies": {
100
+ "@types/react": "~19.1.0",
101
+ "@types/react-native": "^0.73.0",
102
+ "typescript": "~5.9.2"
103
+ }
104
+ }