@donotdev/expo 0.0.1 → 0.0.3

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 (181) hide show
  1. package/dist/__tests__/components/atomic.test.js +1 -0
  2. package/dist/__tests__/providers/ExpoAppProviders.test.js +1 -0
  3. package/dist/__tests__/setup.js +1 -0
  4. package/dist/__tests__/test-utils.js +1 -0
  5. package/dist/atomic/Accordion/index.js +1 -0
  6. package/dist/atomic/Alert/index.js +1 -0
  7. package/dist/atomic/AlertDialog/index.d.ts.map +1 -1
  8. package/dist/atomic/AlertDialog/index.js +1 -0
  9. package/dist/atomic/Avatar/index.d.ts +1 -1
  10. package/dist/atomic/Avatar/index.d.ts.map +1 -1
  11. package/dist/atomic/Avatar/index.js +1 -0
  12. package/dist/atomic/Badge/index.d.ts.map +1 -1
  13. package/dist/atomic/Badge/index.js +1 -0
  14. package/dist/atomic/Blockquote/index.js +1 -0
  15. package/dist/atomic/Button/index.d.ts.map +1 -1
  16. package/dist/atomic/Button/index.js +1 -0
  17. package/dist/atomic/Calendar/index.js +1 -0
  18. package/dist/atomic/CallToAction/index.js +1 -0
  19. package/dist/atomic/Card/index.d.ts.map +1 -1
  20. package/dist/atomic/Card/index.js +1 -0
  21. package/dist/atomic/Checkbox/index.d.ts.map +1 -1
  22. package/dist/atomic/Checkbox/index.js +1 -0
  23. package/dist/atomic/Collapsible/index.js +1 -0
  24. package/dist/atomic/Combobox/index.js +1 -0
  25. package/dist/atomic/Command/index.js +1 -0
  26. package/dist/atomic/CommandDialog/index.d.ts.map +1 -1
  27. package/dist/atomic/CommandDialog/index.js +1 -0
  28. package/dist/atomic/ContextMenu/index.js +1 -0
  29. package/dist/atomic/CopyToClipboard/index.js +1 -0
  30. package/dist/atomic/DescriptionList/index.js +1 -0
  31. package/dist/atomic/Dialog/index.js +1 -0
  32. package/dist/atomic/DropdownMenu/index.js +1 -0
  33. package/dist/atomic/DualCard/index.d.ts.map +1 -1
  34. package/dist/atomic/DualCard/index.js +1 -0
  35. package/dist/atomic/FeatureFallback/index.d.ts.map +1 -1
  36. package/dist/atomic/FeatureFallback/index.js +1 -0
  37. package/dist/atomic/FileButton/index.js +1 -0
  38. package/dist/atomic/Grid/index.d.ts +2 -2
  39. package/dist/atomic/Grid/index.d.ts.map +1 -1
  40. package/dist/atomic/Grid/index.js +1 -0
  41. package/dist/atomic/HeroSection/index.js +1 -0
  42. package/dist/atomic/HoverCard/index.js +1 -0
  43. package/dist/atomic/Icons/index.js +1 -0
  44. package/dist/atomic/InfiniteScroll/index.js +1 -0
  45. package/dist/atomic/Input/index.d.ts.map +1 -1
  46. package/dist/atomic/Input/index.js +1 -0
  47. package/dist/atomic/Label/index.d.ts.map +1 -1
  48. package/dist/atomic/Label/index.js +1 -0
  49. package/dist/atomic/List/index.d.ts.map +1 -1
  50. package/dist/atomic/List/index.js +1 -0
  51. package/dist/atomic/NavigationMenu/index.js +1 -0
  52. package/dist/atomic/Pagination/index.js +1 -0
  53. package/dist/atomic/PasswordInput/index.js +1 -0
  54. package/dist/atomic/Popover/index.js +1 -0
  55. package/dist/atomic/Portal/index.js +1 -0
  56. package/dist/atomic/PortalButton/index.js +1 -0
  57. package/dist/atomic/Progress/index.d.ts.map +1 -1
  58. package/dist/atomic/Progress/index.js +1 -0
  59. package/dist/atomic/RadioGroup/index.d.ts.map +1 -1
  60. package/dist/atomic/RadioGroup/index.js +1 -0
  61. package/dist/atomic/RangeInput/index.d.ts.map +1 -1
  62. package/dist/atomic/RangeInput/index.js +1 -0
  63. package/dist/atomic/Rating/index.js +1 -0
  64. package/dist/atomic/ScrollArea/index.js +1 -0
  65. package/dist/atomic/Section/index.d.ts.map +1 -1
  66. package/dist/atomic/Section/index.js +1 -0
  67. package/dist/atomic/Select/index.d.ts.map +1 -1
  68. package/dist/atomic/Select/index.js +1 -0
  69. package/dist/atomic/Separator/index.d.ts.map +1 -1
  70. package/dist/atomic/Separator/index.js +1 -0
  71. package/dist/atomic/Sheet/index.js +1 -0
  72. package/dist/atomic/Skeleton/index.js +1 -0
  73. package/dist/atomic/Slider/index.d.ts.map +1 -1
  74. package/dist/atomic/Slider/index.js +1 -0
  75. package/dist/atomic/Slot/index.js +1 -0
  76. package/dist/atomic/Spinner/index.js +1 -0
  77. package/dist/atomic/Stack/index.js +1 -0
  78. package/dist/atomic/Stepper/index.js +1 -0
  79. package/dist/atomic/Switch/index.d.ts.map +1 -1
  80. package/dist/atomic/Switch/index.js +1 -0
  81. package/dist/atomic/Table/index.js +1 -0
  82. package/dist/atomic/Tabs/index.d.ts.map +1 -1
  83. package/dist/atomic/Tabs/index.js +1 -0
  84. package/dist/atomic/Tag/index.js +1 -0
  85. package/dist/atomic/Text/index.d.ts.map +1 -1
  86. package/dist/atomic/Text/index.js +1 -0
  87. package/dist/atomic/Textarea/index.js +1 -0
  88. package/dist/atomic/Toaster/index.d.ts.map +1 -1
  89. package/dist/atomic/Toaster/index.js +1 -0
  90. package/dist/atomic/Toggle/index.d.ts.map +1 -1
  91. package/dist/atomic/Toggle/index.js +1 -0
  92. package/dist/atomic/ToggleGroup/index.js +1 -0
  93. package/dist/atomic/Tooltip/index.js +1 -0
  94. package/dist/atomic/VideoPlayer/index.js +1 -0
  95. package/dist/atomic/VisuallyHidden/index.js +1 -0
  96. package/dist/atomic/index.js +1 -0
  97. package/dist/crud/components/DateFilter.js +1 -0
  98. package/dist/crud/components/DisplayFieldRenderer.js +1 -0
  99. package/dist/crud/components/EntityCardList.d.ts.map +1 -1
  100. package/dist/crud/components/EntityCardList.js +1 -0
  101. package/dist/crud/components/EntityDisplayRenderer.js +1 -0
  102. package/dist/crud/components/EntityFilters.js +1 -0
  103. package/dist/crud/components/EntityFormRenderer.d.ts +1 -3
  104. package/dist/crud/components/EntityFormRenderer.d.ts.map +1 -1
  105. package/dist/crud/components/EntityFormRenderer.js +1 -0
  106. package/dist/crud/components/EntityList.d.ts.map +1 -1
  107. package/dist/crud/components/EntityList.js +1 -0
  108. package/dist/crud/components/FormFieldRenderer.js +1 -0
  109. package/dist/crud/components/FormLayout.js +1 -0
  110. package/dist/crud/components/index.js +1 -0
  111. package/dist/crud/contexts/UploadContext.js +1 -0
  112. package/dist/crud/forms/hooks/useEntityForm.js +1 -0
  113. package/dist/crud/hooks/useUnsavedChangesWarning.d.ts +7 -14
  114. package/dist/crud/hooks/useUnsavedChangesWarning.d.ts.map +1 -1
  115. package/dist/crud/hooks/useUnsavedChangesWarning.js +1 -0
  116. package/dist/crud/index.d.ts +1 -1
  117. package/dist/crud/index.d.ts.map +1 -1
  118. package/dist/crud/index.js +1 -0
  119. package/dist/crud/stores/index.js +1 -0
  120. package/dist/features/auth/components/AuthPartnerButton.d.ts.map +1 -1
  121. package/dist/features/auth/components/AuthPartnerButton.js +1 -0
  122. package/dist/features/auth/components/ConfirmDeleteDialog.js +1 -0
  123. package/dist/features/auth/components/FeatureGuard.js +1 -0
  124. package/dist/features/auth/components/GoogleOneTap.js +1 -0
  125. package/dist/features/auth/components/LoginModal.js +1 -0
  126. package/dist/features/auth/components/MultipleAuthProviders.d.ts.map +1 -1
  127. package/dist/features/auth/components/MultipleAuthProviders.js +1 -0
  128. package/dist/features/auth/components/ReauthDialog.js +1 -0
  129. package/dist/features/auth/components/index.js +1 -0
  130. package/dist/features/auth/hooks/index.js +1 -0
  131. package/dist/features/auth/hooks/useAuthState.js +1 -0
  132. package/dist/features/auth/hooks/useCanAccess.js +1 -0
  133. package/dist/features/auth/hooks/useHasRole.js +1 -0
  134. package/dist/features/auth/hooks/useUserRole.js +1 -0
  135. package/dist/features/auth/index.js +1 -0
  136. package/dist/features/billing/components/ProductCard.d.ts.map +1 -1
  137. package/dist/features/billing/components/ProductCard.js +1 -0
  138. package/dist/features/billing/components/SecurityNotice.js +1 -0
  139. package/dist/features/billing/components/StripeCheckoutButton.d.ts.map +1 -1
  140. package/dist/features/billing/components/StripeCheckoutButton.js +1 -0
  141. package/dist/features/billing/components/SubscriptionManager.js +1 -0
  142. package/dist/features/billing/components/index.js +1 -0
  143. package/dist/features/billing/index.js +1 -0
  144. package/dist/features/index.js +1 -0
  145. package/dist/features/oauth/components/MultipleOAuthProviders.d.ts.map +1 -1
  146. package/dist/features/oauth/components/MultipleOAuthProviders.js +1 -0
  147. package/dist/features/oauth/components/OAuthConnectionModal.d.ts.map +1 -1
  148. package/dist/features/oauth/components/OAuthConnectionModal.js +1 -0
  149. package/dist/features/oauth/components/OAuthFallback.d.ts.map +1 -1
  150. package/dist/features/oauth/components/OAuthFallback.js +1 -0
  151. package/dist/features/oauth/components/OAuthPartnerButton.js +1 -0
  152. package/dist/features/oauth/components/index.js +1 -0
  153. package/dist/features/oauth/index.js +1 -0
  154. package/dist/firebase/authPersistence.d.ts.map +1 -1
  155. package/dist/firebase/authPersistence.js +1 -0
  156. package/dist/firebase/index.js +1 -0
  157. package/dist/index.d.ts +0 -1
  158. package/dist/index.d.ts.map +1 -1
  159. package/dist/index.js +1 -0
  160. package/dist/providers/ExpoAppProviders.js +1 -0
  161. package/dist/routing/components.js +1 -0
  162. package/dist/routing/hooks.d.ts +1 -1
  163. package/dist/routing/hooks.d.ts.map +1 -1
  164. package/dist/routing/hooks.js +1 -0
  165. package/dist/routing/index.js +1 -0
  166. package/dist/routing/utils/useFormStoreSafe.d.ts +5 -5
  167. package/dist/routing/utils/useFormStoreSafe.d.ts.map +1 -1
  168. package/dist/routing/utils/useFormStoreSafe.js +1 -0
  169. package/dist/storage/AsyncStorageStrategy.js +1 -0
  170. package/dist/storage/zustandAsyncStorage.js +1 -0
  171. package/dist/theme/ThemeProvider.d.ts.map +1 -1
  172. package/dist/theme/ThemeProvider.js +1 -0
  173. package/dist/theme/index.js +1 -0
  174. package/dist/theme/tokens.js +1 -0
  175. package/dist/utils/constants.js +1 -0
  176. package/dist/utils/helpers.js +1 -0
  177. package/dist/utils/index.js +1 -0
  178. package/dist/utils/theme-helpers.js +1 -0
  179. package/dist/utils/useAuthSafe.js +1 -0
  180. package/dist/utils/variants.js +1 -0
  181. package/package.json +20 -9
@@ -0,0 +1 @@
1
+ import{default as r}from"./MultipleOAuthProviders";import{default as a}from"./OAuthConnectionModal";import{OAuthFallback as l}from"./OAuthFallback";import{default as d}from"./OAuthPartnerButton";export{r as MultipleOAuthProviders,a as OAuthConnectionModal,l as OAuthFallback,d as OAuthPartnerButton};
@@ -0,0 +1 @@
1
+ import{useOAuth as e}from"@donotdev/oauth";export*from"./components";export{e as useOAuth};
@@ -1 +1 @@
1
- {"version":3,"file":"authPersistence.d.ts","sourceRoot":"","sources":["../../src/firebase/authPersistence.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAMH;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,iCAYjC;AAED,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"authPersistence.d.ts","sourceRoot":"","sources":["../../src/firebase/authPersistence.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAUH;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,iCAYjC;AAED,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1 @@
1
+ import{getAuth as e,initializeAuth as r,getReactNativePersistence as i}from"firebase/auth";import o from"@react-native-async-storage/async-storage";import{getApp as p}from"firebase/app";function n(){const t=p();try{return e(t)}catch{return r(t,{persistence:i(o)})}}var m=n;export{m as default,n as initializeExpoAuth};
@@ -0,0 +1 @@
1
+ import{initializeExpoAuth as t}from"./authPersistence";export{t as initializeExpoAuth};
package/dist/index.d.ts CHANGED
@@ -8,7 +8,6 @@
8
8
  export * from './atomic';
9
9
  export * from './utils';
10
10
  export * from './crud';
11
- export * from './features';
12
11
  export { AsyncStorageStrategy } from './storage/AsyncStorageStrategy';
13
12
  export { zustandAsyncStorage } from './storage/zustandAsyncStorage';
14
13
  export { ExpoAppProviders, getZustandAsyncStorage, } from './providers/ExpoAppProviders';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAGH,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC;AAGxB,cAAc,QAAQ,CAAC;AAGvB,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGpE,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AAGtC,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAGH,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC;AAGxB,cAAc,QAAQ,CAAC;AAOvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGpE,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AAGtC,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ export*from"./atomic";export*from"./utils";export*from"./crud";import{AsyncStorageStrategy as x}from"./storage/AsyncStorageStrategy";import{zustandAsyncStorage as m}from"./storage/zustandAsyncStorage";import{ExpoAppProviders as s,getZustandAsyncStorage as g}from"./providers/ExpoAppProviders";export*from"./routing";export*from"./firebase";export*from"./theme";export{x as AsyncStorageStrategy,s as ExpoAppProviders,g as getZustandAsyncStorage,m as zustandAsyncStorage};
@@ -0,0 +1 @@
1
+ import{jsx as r}from"react/jsx-runtime";import{useEffect as l}from"react";import{SafeAreaProvider as s}from"react-native-safe-area-context";import{QueryClient as m,QueryClientProvider as f}from"@tanstack/react-query";import{getStorageManager as p,initializePlatformDetection as u}from"@donotdev/core";import{AsyncStorageStrategy as c}from"../storage/AsyncStorageStrategy";import{zustandAsyncStorage as g}from"../storage/zustandAsyncStorage";import{ThemeProvider as d}from"../theme";let o=null;function y(){return o||(o=new m({defaultOptions:{queries:{staleTime:1e3*60*5,gcTime:1e3*60*30}}})),o}function _({children:a,userId:e}){return l(()=>{if(typeof globalThis<"u"){const t=globalThis._DNDEV_CONFIG_;globalThis._DNDEV_CONFIG_={...t,platform:"expo",context:"client",mode:__DEV__?"development":"production",version:t?.version||"0.0.0",timestamp:t?.timestamp||Date.now()}}u();const i=p(),n=new c(e||null);return i.setStrategy(n),e&&i.updateUser(e,!1),()=>{n.setUserId(null)}},[e]),r(s,{children:r(d,{children:r(f,{client:y(),children:a})})})}function E(){return g}var P=_;export{_ as ExpoAppProviders,P as default,E as getZustandAsyncStorage};
@@ -0,0 +1 @@
1
+ import{jsx as i}from"react/jsx-runtime";import{Link as n}from"expo-router";import{TouchableOpacity as a}from"react-native";function u({to:r,children:o,replace:t,...e}){return i(n,{href:r,replace:t,asChild:!0,children:i(a,{...e,children:o})})}function f({to:r}){return null}export{u as Link,f as Navigate};
@@ -12,7 +12,7 @@ import type { RedirectGuardOptions, RedirectGuardResult } from '@donotdev/ui';
12
12
  /**
13
13
  * Navigation hook for Expo Router
14
14
  */
15
- export declare function useNavigate(): (to: string, options?: NavigateOptions) => Promise<void>;
15
+ export declare function useNavigate(): (to: string, options?: NavigateOptions) => void;
16
16
  /**
17
17
  * Go back hook
18
18
  */
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/routing/hooks.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAYH,OAAO,KAAK,EAIV,eAAe,EAChB,MAAM,gBAAgB,CAAC;AAKxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAE9E;;GAEG;AACH,wBAAgB,WAAW,SAKZ,MAAM,YAAY,eAAe,mBAuB/C;AAED;;GAEG;AACH,wBAAgB,OAAO,eAGtB;AAED;;GAEG;AACH,wBAAgB,UAAU,eAKzB;AAED;;GAEG;AACH,wBAAgB,WAAW,eAI1B;AAED;;GAEG;AACH,wBAAgB,WAAW;;;;;;EAqB1B;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAEzE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI7D;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,eAAe,CAWjD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAYjD;AAED;;;;GAIG;AACH,wBAAgB,cAAc;;oBAMpB,MAAM,SAAS,MAAM;uBAcrB,MAAM;;EAwBf;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CAoGrB;AAED,iDAAiD;AACjD,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;CAC7B;AAQD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,EAAE,CAsBrD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAG3E;AAGD,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/routing/hooks.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAYH,OAAO,KAAK,EAIV,eAAe,EAChB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAE9E;;GAEG;AACH,wBAAgB,WAAW,SAKlB,MAAM,YAAY,eAAe,UAiBzC;AAED;;GAEG;AACH,wBAAgB,OAAO,eAGtB;AAED;;GAEG;AACH,wBAAgB,UAAU,eAKzB;AAED;;GAEG;AACH,wBAAgB,WAAW,eAI1B;AAED;;GAEG;AACH,wBAAgB,WAAW;;;;;;EAqB1B;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAEzE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI7D;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,eAAe,CAWjD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAYjD;AAED;;;;GAIG;AACH,wBAAgB,cAAc;;oBAMpB,MAAM,SAAS,MAAM;uBAcrB,MAAM;;EAwBf;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CAoGrB;AAED,iDAAiD;AACjD,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;CAC7B;AAQD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,EAAE,CAsBrD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAG3E;AAGD,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1 @@
1
+ import{useCallback as l,useMemo as f}from"react";import{useRouter as d,useLocalSearchParams as p,usePathname as S}from"expo-router";import{useOverlayStore as A,FEATURE_STATUS as x,useNavigationStore as y,USER_ROLES as P}from"@donotdev/core";import{useAuthConfig as w}from"@donotdev/core";import{useAuthSafe as m}from"../utils/useAuthSafe";function v(){const t=d(),e=A(r=>r.closeAll);return l((r,s)=>{if(r==="back"){e(),t.back();return}e(),s?.replace?t.replace(r):t.push(r)},[t,e])}function I(){const t=d();return l(()=>t.back(),[t])}function N(){return l(()=>{},[])}function O(){return l(()=>{},[])}function R(){const t=S(),e=p(),r=new URLSearchParams;return Object.entries(e).forEach(([s,a])=>{Array.isArray(a)?a.forEach(n=>r.append(s,String(n))):r.set(s,String(a))}),{pathname:t||"/",search:r.toString(),hash:"",state:null,key:t||"default"}}function j(){return p()}function Q(t){const r=p()[t];return Array.isArray(r)?r[0]:r}function T(){const t=p(),e=new URLSearchParams;return Object.entries(t).forEach(([r,s])=>{Array.isArray(s)?s.forEach(a=>e.append(r,String(a))):e.set(r,String(s))}),e}function F(t){const e=S();return f(()=>{const s=t.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/:\w+/g,"[^/]+").replace(/\*/g,".*");return new RegExp("^"+s+"$")},[t]).test(e||"")}function G(){const t=d(),e=T(),r=R(),s=l((c,i)=>{const u=new URLSearchParams(e.toString());u.set(c,i);const h=u.toString(),g=`${r.pathname||"/"}${h?`?${h}`:""}`;t.push(g)},[e,t,r.pathname]),a=l(c=>{const i=new URLSearchParams(e.toString());i.delete(c);const u=i.toString(),o=`${r.pathname||"/"}${u?`?${u}`:""}`;t.push(o)},[e,t,r.pathname]),n=l(()=>{const c=r.pathname||"/";t.push(c)},[t,r.pathname]);return{query:e,setQuery:s,removeQuery:a,clearQueries:n}}function q(t={}){const{auth:e,redirectTo:r,condition:s}=t,a=R(),n=w(),c=m("user"),i=m("can"),u=m("status");return f(()=>{if(u===x.INITIALIZING)return{shouldRedirect:!1,redirectTo:null,isChecking:!0};if(s){const o=s(c,u);return{shouldRedirect:o,redirectTo:o&&r||null,isChecking:!1}}if(e!==!1&&e!==void 0){if(!i)return{shouldRedirect:!1,redirectTo:null,isChecking:!1};if(!i.navigate(e)){let o=null;return typeof e=="object"&&e.required&&!c?a.search.includes("code=")||a.search.includes("state=")||a.search.includes("error=")?o=`${n.authRoute}${a.search}`:o=n.authRoute:typeof e=="object"&&e.role?o=n.roleRoute:typeof e=="object"&&e.tier?o=n.tierRoute:o=n.roleRoute,{shouldRedirect:!0,redirectTo:r||o,isChecking:!1}}}return{shouldRedirect:!1,redirectTo:null,isChecking:!1}},[e,u,c,i,s,r,a.search,n.authRoute,n.roleRoute,n.tierRoute])}function b(t,e){return t==="/"?e==="/":e===t?!0:e.startsWith(t+"/")}function $(){const t=R(),e=m("user"),r=!!e,s=e?.role||P.GUEST,a=y(n=>!n||typeof n.getFilteredRoutes!="function"?[]:n.getFilteredRoutes({authenticated:r,role:s}));return f(()=>Array.isArray(a)?a.map(n=>({...n,isActive:b(n.path,t.pathname),hasChildren:!1,children:void 0})).sort((n,c)=>n.label.localeCompare(c.label)):[],[a,t.pathname])}function M(t){const e=$();return f(()=>e.find(r=>r.path===t),[e,t])}export{I as useBack,R as useLocation,F as useMatch,v as useNavigate,$ as useNavigationItems,M as useNavigationRoute,j as useParams,O as usePrefetch,G as useQueryParams,q as useRedirectGuard,N as useRefresh,Q as useRouteParam,T as useSearchParams};
@@ -0,0 +1 @@
1
+ export*from"./hooks";export*from"./components";
@@ -1,15 +1,15 @@
1
1
  /**
2
2
  * @fileoverview Form store safe navigation check
3
- * @description Safe navigation check for forms (works even if CRUD not installed)
3
+ * @description Auto-save is always active navigation is never blocked.
4
+ * Drafts are persisted to localStorage, so navigating away is safe.
4
5
  *
5
- * @version 0.0.1
6
+ * @version 0.0.2
6
7
  * @since 0.0.1
7
8
  * @author AMBROISE PARK Consulting
8
9
  */
9
10
  /**
10
- * Check if navigation is safe (no dirty forms)
11
- * Shows a native Alert if there are dirty forms. Returns false to block navigation.
12
- * Safe to call even if @donotdev/crud is not installed.
11
+ * Check if navigation is safe.
12
+ * Auto-save is always active always returns true.
13
13
  */
14
14
  export declare function checkFormNavigationSafe(): Promise<boolean>;
15
15
  //# sourceMappingURL=useFormStoreSafe.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFormStoreSafe.d.ts","sourceRoot":"","sources":["../../../src/routing/utils/useFormStoreSafe.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH;;;;GAIG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC,CAuBhE"}
1
+ {"version":3,"file":"useFormStoreSafe.d.ts","sourceRoot":"","sources":["../../../src/routing/utils/useFormStoreSafe.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC,CAEhE"}
@@ -0,0 +1 @@
1
+ async function e(){return!0}export{e as checkFormNavigationSafe};
@@ -0,0 +1 @@
1
+ import n from"@react-native-async-storage/async-storage";import{BaseStorageStrategy as d,handleError as c}from"@donotdev/core";class y extends d{userId=null;constructor(e=null){super(),this.userId=e}setUserId(e){this.userId=e}async get(e,s={}){const{scope:i="user",encryption:t=!1}=s,o=this.buildKey(e,i,this.userId,!0);if(!o)return null;let a;try{a=await n.getItem(o)}catch(u){throw c(u,{userMessage:"Failed to read from storage",context:{key:e,options:s}})}if(!a)return null;let r;try{r=JSON.parse(a)}catch{return await n.removeItem(o).catch(()=>{}),null}if(r.expiresAt&&new Date(r.expiresAt)<new Date)return await this.remove(e),null;const l=r.value;if(t)throw new Error("AsyncStorageStrategy: encryption is not yet supported. Data would be stored in plaintext \u2014 refusing to proceed.");return l}async set(e,s,i={}){const{scope:t="user",encryption:o=!1,expiry:a=0}=i,r=this.buildKey(e,t,this.userId,!0);if(r)try{if(o)throw new Error("AsyncStorageStrategy: encryption is not yet supported. Data would be stored in plaintext \u2014 refusing to proceed.");const l=a>0?new Date(Date.now()+a*1e3).toISOString():null,u=JSON.stringify({value:s,expiresAt:l});await n.setItem(r,u)}catch(l){const u=l instanceof Error&&/quota/i.test(l.message)?"Storage quota exceeded. Please free up space or login to sync to cloud.":"Failed to store data in storage";throw c(l,{userMessage:u,context:{key:e,options:i}})}}async remove(e){const s=["user","global","session"];for(const i of s)try{const t=this.buildKey(e,i,this.userId,!0);if(!t)continue;await n.removeItem(t)}catch{}}async clear(e){if(!e){const a=(await n.getAllKeys()).filter(r=>r.startsWith("dndev:"));await n.multiRemove(a);return}const s=e==="user"&&this.userId?`dndev:user:${this.userId}:`:`dndev:${e}:`,t=(await n.getAllKeys()).filter(o=>o.startsWith(s));await n.multiRemove(t)}}var h=y;export{y as AsyncStorageStrategy,h as default};
@@ -0,0 +1 @@
1
+ import t from"@react-native-async-storage/async-storage";const a={getItem:async e=>{try{return await t.getItem(e)}catch{return __DEV__,null}},setItem:async(e,r)=>{try{await t.setItem(e,r)}catch(o){throw __DEV__,o}},removeItem:async e=>{try{await t.removeItem(e)}catch{__DEV__}}};var s=a;export{s as default,a as zustandAsyncStorage};
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"AACA;;;;;;GAMG;AAEH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,EAAyB,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAE7D,UAAU,iBAAiB;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IACrD,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;CACtC;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACzC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,YAAqB,EACrB,YAAmB,GACpB,EAAE,kBAAkB,2CAqBpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG7B"}
1
+ {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"AACA;;;;;;GAMG;AAEH,OAAO,EAAuC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5E,OAAO,EAAyB,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAE7D,UAAU,iBAAiB;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IACrD,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;CACtC;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACzC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,YAAqB,EACrB,YAAmB,GACpB,EAAE,kBAAkB,2CAqBpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG7B"}
@@ -0,0 +1 @@
1
+ import{jsx as d}from"react/jsx-runtime";import{createContext as a,useContext as T,useState as f}from"react";import{useColorScheme as x}from"react-native";import{lightTheme as l,darkTheme as p}from"./tokens";const r=a(void 0);function S({children:e,initialTheme:n="auto",followSystem:s=!0}){const m=x(),[t,h]=f(n),o=t==="dark"||t==="auto"&&s&&m==="dark",u=o?p:l,c=i=>{h(i)};return d(r.Provider,{value:{theme:u,isDark:o,setTheme:c,themeMode:t},children:e})}function C(){const e=T(r);if(!e)throw new Error("useTheme must be used within ThemeProvider");return e}function j(){const{theme:e}=C();return e.colors}export{S as ThemeProvider,C as useTheme,j as useThemeColors};
@@ -0,0 +1 @@
1
+ export*from"./tokens";export*from"./ThemeProvider";import{useTheme as f,useThemeColors as p}from"./ThemeProvider";export{f as useTheme,p as useThemeColors};
@@ -0,0 +1 @@
1
+ const o={none:0,sm:8,md:16,lg:32},r={none:0,md:12,full:9999,interactive:0,surface:12,floating:0},f={fontSize:{xs:12,sm:14,base:16,lg:20,xl:25,"2xl":31,"3xl":39},fontWeight:{normal:"400",medium:"500",semibold:"600",bold:"700"},lineHeight:{base:1.25}},e={touchTarget:48,iconMd:24,iconTouch:32},n={header:100,sidebar:90,footer:1,overlay:40,breadcrumbs:10,dropdown:50,modal:1e3,tooltip:1100,toast:1200},t={subtle:.3,muted:.6,strong:.9},d={fast:150,normal:300,slow:500,heavy:700,hero:1e3},c={background:"#ffffff",foreground:"#000000",textColor:"#000000",primary:"#00bcd4",primaryForeground:"#000000",secondary:"#047857",secondaryForeground:"#ffffff",accent:"#ff9800",accentForeground:"#000000",destructive:"#dc2626",destructiveForeground:"#ffffff",success:"#047857",successForeground:"#ffffff",warning:"#f59e0b",warningForeground:"#000000",muted:"#f3f4f6",mutedForeground:"#4b5563",border:"#e5e7eb",input:"#f3f4f6",ring:"#00bcd4",card:"#ffffff",cardForeground:"#000000",popover:"#ffffff",popoverForeground:"#000000"},s={background:"#000000",foreground:"#ffffff",textColor:"#ffffff",primary:"#00bcd4",primaryForeground:"#000000",secondary:"#10b981",secondaryForeground:"#ffffff",accent:"#ff9800",accentForeground:"#ffffff",destructive:"#ef4444",destructiveForeground:"#ffffff",success:"#10b981",successForeground:"#ffffff",warning:"#f59e0b",warningForeground:"#000000",muted:"#1f2937",mutedForeground:"#d1d5db",border:"#374151",input:"#1f2937",ring:"#00bcd4",card:"#111827",cardForeground:"#ffffff",popover:"#111827",popoverForeground:"#ffffff"},a={colors:c,spacing:o,radius:r,typography:f,interactive:e,zIndex:n,opacity:t,duration:d},u={colors:s,spacing:o,radius:r,typography:f,interactive:e,zIndex:n,opacity:t,duration:d},g=a;export{s as colorsDark,c as colorsLight,u as darkTheme,g as defaultTheme,d as duration,e as interactive,a as lightTheme,t as opacity,r as radius,o as spacing,f as typography,n as zIndex};
@@ -0,0 +1 @@
1
+ const A={DEFAULT:"default",MUTED:"muted",PRIMARY:"primary",SECONDARY:"secondary",ACCENT:"accent",SUCCESS:"success",WARNING:"warning",DESTRUCTIVE:"destructive"},t={...A,OUTLINE:"outline",GLASS:"glass"},T=t,e=A;export{e as CONTROL_VARIANT,T as FLOATING_VARIANT,t as SURFACE_VARIANT,A as THEME_VARIANT};
@@ -0,0 +1 @@
1
+ function n(...t){return Object.assign({},...t.filter(Boolean))}function a(t){const e={};return t.variant!=null&&(e["data-variant"]=t.variant),t.size!=null&&(e["data-size"]=t.size),e}export{a as getVariantDataAttrs,n as mergeStyles};
@@ -0,0 +1 @@
1
+ export*from"./helpers";export*from"./constants";export*from"./variants";import{useAuthSafe as m,isAuthAvailable as p}from"./useAuthSafe";export{p as isAuthAvailable,m as useAuthSafe};
@@ -0,0 +1 @@
1
+ function c(r,o){const e={default:"foreground",primary:"primary",secondary:"secondary",accent:"accent",success:"success",warning:"warning",destructive:"destructive",muted:"muted"};return r.colors[e[o]||"foreground"]}function u(r,o){const e={default:"foreground",primary:"primaryForeground",secondary:"secondaryForeground",accent:"accentForeground",success:"successForeground",warning:"warningForeground",destructive:"destructiveForeground",muted:"mutedForeground"};return r.colors[e[o]||"foreground"]}function s(r){const o=r.colors.background;if(o.startsWith("#")){const e=parseInt(o.slice(1,3),16),n=parseInt(o.slice(3,5),16),t=parseInt(o.slice(5,7),16);return`rgba(${e}, ${n}, ${t}, 0.5)`}return o}function a(r){return r.colors.foreground}function d(r){return r.opacity.subtle}export{s as getOverlayBackground,a as getShadowColor,d as getShadowOpacity,c as getVariantColor,u as getVariantForegroundColor};
@@ -0,0 +1 @@
1
+ import{DEGRADED_AUTH_API as o}from"@donotdev/core";import*as e from"@donotdev/auth";const t=e?.useAuth;function r(u){return o[u]}const s=t??r,n=typeof t=="function";export{n as isAuthAvailable,s as useAuthSafe};
@@ -0,0 +1 @@
1
+ import"react-native";import"./constants";function u(o){const{colors:r,radius:n}=o;return{default:{backgroundColor:r.muted},primary:{backgroundColor:r.primary},secondary:{backgroundColor:r.secondary},accent:{backgroundColor:r.accent},success:{backgroundColor:r.success},warning:{backgroundColor:r.warning},destructive:{backgroundColor:r.destructive},muted:{backgroundColor:r.muted},ghost:{backgroundColor:"transparent"},outline:{backgroundColor:"transparent",borderWidth:1,borderColor:r.border},link:{backgroundColor:"transparent"}}}function d(o){const{colors:r}=o;return{default:{color:r.foreground},primary:{color:r.primaryForeground},secondary:{color:r.secondaryForeground},accent:{color:r.accentForeground},success:{color:r.successForeground},warning:{color:r.warningForeground},destructive:{color:r.destructiveForeground},muted:{color:r.mutedForeground},ghost:{color:r.foreground},outline:{color:r.foreground},link:{color:r.primary,textDecorationLine:"underline"}}}function s(o){const{colors:r,radius:n}=o;return{default:{backgroundColor:r.card},primary:{backgroundColor:r.primary+"1A"},secondary:{backgroundColor:r.secondary+"1A"},accent:{backgroundColor:r.accent+"1A"},success:{backgroundColor:r.success+"1A"},warning:{backgroundColor:r.warning+"1A"},destructive:{backgroundColor:r.destructive+"1A"},muted:{backgroundColor:r.muted},outline:{backgroundColor:"transparent",borderWidth:1,borderColor:r.border},glass:{backgroundColor:r.card+"CC"}}}export{d as getButtonTextVariants,u as getButtonVariants,s as getSurfaceVariants};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@donotdev/expo",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "description": "React Native/Expo UI components for DoNotDev framework",
@@ -10,6 +10,11 @@
10
10
  "types": "./dist/index.d.ts",
11
11
  "import": "./dist/index.js",
12
12
  "default": "./dist/index.js"
13
+ },
14
+ "./features": {
15
+ "types": "./dist/features/index.d.ts",
16
+ "import": "./dist/features/index.js",
17
+ "default": "./dist/features/index.js"
13
18
  }
14
19
  },
15
20
  "files": [
@@ -40,14 +45,14 @@
40
45
  "scripts": {
41
46
  "dev": "tsc --noEmit --watch --listFiles false --listEmittedFiles false",
42
47
  "clean": "rimraf dist tsconfig.tsbuildinfo",
43
- "type-check": "tsc --noEmit",
48
+ "type-check": "bunx tsc --noEmit",
44
49
  "test": "jest --forceExit",
45
50
  "test:watch": "jest --watch",
46
51
  "test:coverage": "jest --coverage"
47
52
  },
48
53
  "dependencies": {
49
- "@donotdev/core": "^0.0.24",
50
- "@donotdev/crud": "^0.0.15",
54
+ "@donotdev/core": "^0.0.26",
55
+ "@donotdev/crud": "^0.0.17",
51
56
  "@expo/vector-icons": "^15.0.0",
52
57
  "@hookform/resolvers": "^5.2.2",
53
58
  "@react-native-async-storage/async-storage": "^2.1.0",
@@ -61,12 +66,15 @@
61
66
  "react-native-safe-area-context": "^5.0.0"
62
67
  },
63
68
  "peerDependencies": {
64
- "@donotdev/auth": "^0.0.7",
65
- "@donotdev/billing": "^0.0.6",
66
- "@donotdev/oauth": "^0.0.6",
67
- "@donotdev/ui": "^0.0.14",
69
+ "@donotdev/auth": "^0.0.9",
70
+ "@donotdev/billing": "^0.0.8",
71
+ "@donotdev/oauth": "^0.0.8",
72
+ "@donotdev/ui": "^0.0.15",
73
+ "@tanstack/react-query": "^5.0.0",
74
+ "firebase": "^11.0.0",
68
75
  "react": "^19.2.4",
69
- "react-native": "^0.84.0"
76
+ "react-native": "^0.84.0",
77
+ "zustand": "^5.0.0"
70
78
  },
71
79
  "peerDependenciesMeta": {
72
80
  "@donotdev/auth": {
@@ -80,6 +88,9 @@
80
88
  },
81
89
  "@donotdev/ui": {
82
90
  "optional": true
91
+ },
92
+ "firebase": {
93
+ "optional": true
83
94
  }
84
95
  }
85
96
  }