@sincpro/mobile-ui 0.2.0 → 0.3.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 (234) hide show
  1. package/README.md +76 -19
  2. package/dist/Dialog/BottomSheet/BottomSheet.Root.d.ts +11 -7
  3. package/dist/Dialog/BottomSheet/BottomSheet.Root.js +4 -0
  4. package/dist/Dialog/Confirmation.context.d.ts +1 -1
  5. package/dist/Dialog/Dialog.ActionSheet.d.ts +17 -0
  6. package/dist/Dialog/Dialog.ActionSheet.js +16 -0
  7. package/dist/Dialog/Dialog.EditValue.d.ts +1 -1
  8. package/dist/Dialog/Dialog.Sheet.d.ts +26 -0
  9. package/dist/Dialog/Dialog.Sheet.js +55 -0
  10. package/dist/Dialog/index.d.ts +9 -7
  11. package/dist/Dialog/index.js +2 -0
  12. package/dist/Display/Display.Accordion.d.ts +18 -0
  13. package/dist/Display/Display.Accordion.js +22 -0
  14. package/dist/Display/Display.AvatarGroup.d.ts +12 -0
  15. package/dist/Display/Display.AvatarGroup.js +23 -0
  16. package/dist/Display/Display.Badge.d.ts +1 -1
  17. package/dist/Display/Display.Card.d.ts +46 -0
  18. package/dist/Display/Display.Card.js +36 -0
  19. package/dist/Display/Display.Carousel.d.ts +13 -0
  20. package/dist/Display/Display.Carousel.js +19 -0
  21. package/dist/Display/Display.Chip.d.ts +105 -0
  22. package/dist/Display/Display.Chip.js +45 -0
  23. package/dist/Display/Display.CopyableText.d.ts +1 -1
  24. package/dist/Display/Display.CountRecords.d.ts +1 -1
  25. package/dist/Display/Display.DataTable.d.ts +19 -0
  26. package/dist/Display/Display.DataTable.js +22 -0
  27. package/dist/Display/Display.Date.d.ts +15 -2
  28. package/dist/Display/Display.Date.js +34 -4
  29. package/dist/Display/Display.Divider.d.ts +1 -1
  30. package/dist/Display/Display.IconBadge.d.ts +13 -0
  31. package/dist/Display/Display.IconBadge.js +30 -0
  32. package/dist/Display/Display.Image.d.ts +15 -0
  33. package/dist/Display/Display.Image.js +17 -0
  34. package/dist/Display/Display.KeyValue.d.ts +10 -0
  35. package/dist/Display/Display.KeyValue.js +9 -0
  36. package/dist/Display/Display.ListItem.d.ts +13 -0
  37. package/dist/Display/Display.ListItem.js +14 -0
  38. package/dist/Display/Display.Logo.js +3 -1
  39. package/dist/Display/Display.MediaCard.d.ts +17 -0
  40. package/dist/Display/Display.MediaCard.js +12 -0
  41. package/dist/Display/Display.MediaEmbed.d.ts +19 -0
  42. package/dist/Display/Display.MediaEmbed.js +39 -0
  43. package/dist/Display/Display.MenuButton.d.ts +1 -1
  44. package/dist/Display/Display.Monetary.d.ts +1 -1
  45. package/dist/Display/Display.PriceTag.d.ts +10 -0
  46. package/dist/Display/Display.PriceTag.js +23 -0
  47. package/dist/Display/Display.ProductCard.d.ts +17 -0
  48. package/dist/Display/Display.ProductCard.js +13 -0
  49. package/dist/Display/Display.Rating.d.ts +11 -0
  50. package/dist/Display/Display.Rating.js +16 -0
  51. package/dist/Display/Display.SearchHistory.d.ts +12 -0
  52. package/dist/Display/Display.SearchHistory.js +13 -0
  53. package/dist/Display/Display.SectionHeader.d.ts +13 -0
  54. package/dist/Display/Display.SectionHeader.js +9 -0
  55. package/dist/Display/Display.Stat.d.ts +10 -0
  56. package/dist/Display/Display.Stat.js +9 -0
  57. package/dist/Display/Display.StatCard.d.ts +14 -0
  58. package/dist/Display/Display.StatCard.js +13 -0
  59. package/dist/Display/Display.StatusDot.d.ts +11 -0
  60. package/dist/Display/Display.StatusDot.js +28 -0
  61. package/dist/Display/Display.Story.d.ts +15 -0
  62. package/dist/Display/Display.Story.js +43 -0
  63. package/dist/Display/Display.StoryTray.d.ts +26 -0
  64. package/dist/Display/Display.StoryTray.js +43 -0
  65. package/dist/Display/Display.StoryViewer.d.ts +26 -0
  66. package/dist/Display/Display.StoryViewer.js +79 -0
  67. package/dist/Display/Display.SwipeableRow.d.ts +15 -0
  68. package/dist/Display/Display.SwipeableRow.js +28 -0
  69. package/dist/Display/Display.Tag.d.ts +11 -0
  70. package/dist/Display/Display.Tag.js +9 -0
  71. package/dist/Display/Display.Timeline.d.ts +13 -0
  72. package/dist/Display/Display.Timeline.js +19 -0
  73. package/dist/Display/Display.Tooltip.d.ts +10 -0
  74. package/dist/Display/Display.Tooltip.js +24 -0
  75. package/dist/Display/index.d.ts +66 -0
  76. package/dist/Display/index.js +54 -0
  77. package/dist/Feedback/ErrorBoundary.d.ts +1 -1
  78. package/dist/Feedback/Feedback.Banner.d.ts +82 -0
  79. package/dist/Feedback/Feedback.Banner.js +35 -0
  80. package/dist/Feedback/Feedback.DomainSplashScreen.d.ts +2 -1
  81. package/dist/Feedback/Feedback.DomainSplashScreen.js +1 -1
  82. package/dist/Feedback/Feedback.Empty.d.ts +1 -1
  83. package/dist/Feedback/Feedback.EmptyState.d.ts +15 -0
  84. package/dist/Feedback/Feedback.EmptyState.js +11 -0
  85. package/dist/Feedback/Feedback.Error.d.ts +1 -1
  86. package/dist/Feedback/Feedback.Loading.d.ts +2 -1
  87. package/dist/Feedback/Feedback.PermissionCard.d.ts +15 -0
  88. package/dist/Feedback/Feedback.PermissionCard.js +11 -0
  89. package/dist/Feedback/Feedback.Progress.d.ts +9 -0
  90. package/dist/Feedback/Feedback.Progress.js +35 -0
  91. package/dist/Feedback/Feedback.ProgressCircle.d.ts +12 -0
  92. package/dist/Feedback/Feedback.ProgressCircle.js +15 -0
  93. package/dist/Feedback/Feedback.Skeleton.d.ts +11 -0
  94. package/dist/Feedback/Feedback.Skeleton.js +29 -0
  95. package/dist/Feedback/Feedback.Splash.d.ts +1 -1
  96. package/dist/Feedback/Toast.context.d.ts +35 -0
  97. package/dist/Feedback/Toast.context.js +119 -0
  98. package/dist/Feedback/index.d.ts +15 -0
  99. package/dist/Feedback/index.js +15 -0
  100. package/dist/Form/Form.Button.d.ts +6 -0
  101. package/dist/Form/Form.Button.js +12 -1
  102. package/dist/Form/Form.Checkbox.d.ts +1 -1
  103. package/dist/Form/Form.ControlledCheckbox.d.ts +1 -1
  104. package/dist/Form/Form.ControlledInput.d.ts +1 -1
  105. package/dist/Form/Form.ControlledMonetaryInput.d.ts +1 -1
  106. package/dist/Form/Form.ControlledRadioButton.d.ts +1 -1
  107. package/dist/Form/Form.DatePicker.d.ts +20 -0
  108. package/dist/Form/Form.DatePicker.js +38 -0
  109. package/dist/Form/Form.Dropdown.d.ts +1 -1
  110. package/dist/Form/Form.FAB.d.ts +10 -0
  111. package/dist/Form/Form.FAB.js +17 -0
  112. package/dist/Form/Form.FilterButton.d.ts +1 -1
  113. package/dist/Form/Form.FractionalQuantityInput.d.ts +1 -1
  114. package/dist/Form/Form.IconButton.d.ts +1 -1
  115. package/dist/Form/Form.Input.d.ts +2 -1
  116. package/dist/Form/Form.MonetaryInput.d.ts +1 -1
  117. package/dist/Form/Form.PinInput.d.ts +12 -0
  118. package/dist/Form/Form.PinInput.js +23 -0
  119. package/dist/Form/Form.QuantitySelector.d.ts +2 -1
  120. package/dist/Form/Form.QuantitySelector.js +1 -1
  121. package/dist/Form/Form.RadioButton.d.ts +1 -1
  122. package/dist/Form/Form.SearchBar.d.ts +6 -1
  123. package/dist/Form/Form.SearchBar.js +4 -0
  124. package/dist/Form/Form.Select.d.ts +17 -0
  125. package/dist/Form/Form.Select.js +26 -0
  126. package/dist/Form/Form.Slider.d.ts +20 -0
  127. package/dist/Form/Form.Slider.js +16 -0
  128. package/dist/Form/Form.Switch.d.ts +10 -0
  129. package/dist/Form/Form.Switch.js +9 -0
  130. package/dist/Form/index.d.ts +12 -0
  131. package/dist/Form/index.js +12 -0
  132. package/dist/Navigation/Navigation.AppBar.d.ts +41 -0
  133. package/dist/Navigation/Navigation.AppBar.js +33 -0
  134. package/dist/Navigation/Navigation.BottomNav.d.ts +29 -0
  135. package/dist/Navigation/Navigation.BottomNav.js +35 -0
  136. package/dist/Navigation/Navigation.CollapsingHeader.d.ts +34 -0
  137. package/dist/Navigation/Navigation.CollapsingHeader.js +47 -0
  138. package/dist/Navigation/Navigation.FloatingBar.d.ts +15 -0
  139. package/dist/Navigation/Navigation.FloatingBar.js +21 -0
  140. package/dist/Navigation/Navigation.Header.d.ts +6 -2
  141. package/dist/Navigation/Navigation.Header.js +4 -0
  142. package/dist/Navigation/Navigation.HeaderToolbar.d.ts +1 -1
  143. package/dist/Navigation/Navigation.Menu.d.ts +21 -0
  144. package/dist/Navigation/Navigation.Menu.js +42 -0
  145. package/dist/Navigation/Navigation.RowItem.d.ts +1 -1
  146. package/dist/Navigation/Navigation.SearchBar.d.ts +18 -0
  147. package/dist/Navigation/Navigation.SearchBar.js +22 -0
  148. package/dist/Navigation/Navigation.SegmentedControl.d.ts +14 -0
  149. package/dist/Navigation/Navigation.SegmentedControl.js +13 -0
  150. package/dist/Navigation/Navigation.Steps.d.ts +8 -0
  151. package/dist/Navigation/Navigation.Steps.js +17 -0
  152. package/dist/Navigation/Navigation.TabIcon.d.ts +1 -1
  153. package/dist/Navigation/Navigation.Tabs.d.ts +28 -0
  154. package/dist/Navigation/Navigation.Tabs.js +45 -0
  155. package/dist/Navigation/index.d.ts +32 -1
  156. package/dist/Navigation/index.js +18 -0
  157. package/dist/Typography/Typography.Text.d.ts +2 -1
  158. package/dist/branding.d.ts +6 -0
  159. package/dist/branding.js +7 -0
  160. package/dist/icons/ArrowDownIcon.d.ts +2 -1
  161. package/dist/icons/ArrowUpIcon.d.ts +2 -1
  162. package/dist/icons/CreditIcon.d.ts +1 -1
  163. package/dist/icons/OdooIcon.d.ts +1 -1
  164. package/dist/index.d.ts +1 -0
  165. package/dist/index.js +2 -0
  166. package/dist/layouts/AuthContainer.d.ts +1 -1
  167. package/dist/layouts/Container.d.ts +1 -0
  168. package/dist/layouts/Container.js +2 -3
  169. package/dist/layouts/GradientContainer.d.ts +1 -1
  170. package/dist/layouts/PlainLayout.d.ts +1 -1
  171. package/dist/layouts/ScrollContainer.d.ts +2 -2
  172. package/dist/layouts/ScrollContainer.js +1 -1
  173. package/dist/layouts/TabNavigatorLayout.d.ts +2 -2
  174. package/dist/layouts/TabNavigatorLayout.js +4 -0
  175. package/dist/primitives/AspectRatio.d.ts +10 -0
  176. package/dist/primitives/AspectRatio.js +8 -0
  177. package/dist/primitives/Box.d.ts +1 -1
  178. package/dist/primitives/Pressable.d.ts +10 -0
  179. package/dist/primitives/Pressable.js +9 -0
  180. package/dist/primitives/Row.d.ts +1 -1
  181. package/dist/primitives/Spacer.d.ts +8 -0
  182. package/dist/primitives/Spacer.js +9 -0
  183. package/dist/primitives/Stack.d.ts +1 -1
  184. package/dist/primitives/index.d.ts +3 -0
  185. package/dist/primitives/index.js +3 -0
  186. package/dist/theme/active.d.ts +2 -0
  187. package/dist/theme/active.js +13 -0
  188. package/dist/theme/components/ThemedActivityIndicator.d.ts +1 -1
  189. package/dist/theme/components/index.d.ts +1 -1
  190. package/dist/theme/components/index.js +1 -1
  191. package/dist/theme/dark.d.ts +7 -0
  192. package/dist/theme/dark.js +84 -0
  193. package/dist/theme/define.d.ts +5 -5
  194. package/dist/theme/define.js +5 -5
  195. package/dist/theme/index.d.ts +3 -1
  196. package/dist/theme/index.js +3 -1
  197. package/dist/theme/theme.d.ts +1 -1
  198. package/dist/theme/theme.js +1 -1
  199. package/dist/theme/types.d.ts +14 -14
  200. package/dist/theme/types.js +2 -2
  201. package/dist/theme/useTheme.d.ts +3 -1
  202. package/dist/theme/useTheme.js +6 -1
  203. package/dist/tokens/index.d.ts +2 -0
  204. package/dist/tokens/index.js +2 -0
  205. package/dist/tokens/motion.d.ts +71 -0
  206. package/dist/tokens/motion.js +25 -0
  207. package/dist/utils/date.d.ts +33 -33
  208. package/dist/utils/date.js +39 -39
  209. package/dist/views/AuthFormView.d.ts +1 -1
  210. package/dist/views/FormViewV2.context.d.ts +1 -1
  211. package/dist/views/FormViewV2.d.ts +10 -10
  212. package/dist/views/FormViewV2.js +2 -2
  213. package/dist/views/ListViewV2.context.d.ts +1 -1
  214. package/dist/views/ListViewV2.d.ts +20 -20
  215. package/dist/views/ListViewV2.js +2 -2
  216. package/dist/views/Wizard/Wizard.context.d.ts +1 -1
  217. package/dist/widgets/CircleButton.d.ts +6 -2
  218. package/dist/widgets/CircleButton.js +4 -0
  219. package/dist/widgets/GeoPermissionCard.d.ts +1 -1
  220. package/dist/widgets/HomeHeader.d.ts +4 -0
  221. package/dist/widgets/HomeHeader.js +4 -0
  222. package/dist/widgets/JSONViewer.d.ts +2 -1
  223. package/dist/widgets/JSONViewer.js +6 -6
  224. package/dist/widgets/MenuCard.d.ts +1 -1
  225. package/dist/widgets/ScreenHeader.d.ts +6 -2
  226. package/dist/widgets/ScreenHeader.js +15 -4
  227. package/dist/widgets/TimeZoneSelector.d.ts +1 -1
  228. package/dist/widgets/TimeZoneSelectorModal.d.ts +1 -1
  229. package/package.json +38 -25
  230. package/tailwind.preset.js +14 -0
  231. package/dist/notifications/index.d.ts +0 -1
  232. package/dist/notifications/index.js +0 -1
  233. package/dist/providers/index.d.ts +0 -1
  234. package/dist/providers/index.js +0 -2
@@ -1,13 +1,31 @@
1
+ import AppBar from "../Navigation/Navigation.AppBar";
2
+ import BottomNav from "../Navigation/Navigation.BottomNav";
3
+ import CollapsingHeader from "../Navigation/Navigation.CollapsingHeader";
4
+ import FloatingBar from "../Navigation/Navigation.FloatingBar";
1
5
  import Header from "../Navigation/Navigation.Header";
2
6
  import HeaderToolbar from "../Navigation/Navigation.HeaderToolbar";
7
+ import Menu from "../Navigation/Navigation.Menu";
3
8
  import RowItem from "../Navigation/Navigation.RowItem";
9
+ import SearchBar from "../Navigation/Navigation.SearchBar";
10
+ import SegmentedControl from "../Navigation/Navigation.SegmentedControl";
11
+ import Steps from "../Navigation/Navigation.Steps";
4
12
  import TabIcon from "../Navigation/Navigation.TabIcon";
5
13
  import TabItem from "../Navigation/Navigation.TabItem";
14
+ import Tabs from "../Navigation/Navigation.Tabs";
6
15
  export const Navigation = {
16
+ AppBar,
17
+ BottomNav,
18
+ CollapsingHeader,
19
+ FloatingBar,
20
+ SearchBar,
7
21
  Header,
8
22
  HeaderToolbar,
9
23
  TabItem,
10
24
  TabIcon,
11
25
  RowItem,
26
+ SegmentedControl,
27
+ Tabs,
28
+ Menu,
29
+ Steps,
12
30
  };
13
31
  export default Navigation;
@@ -1,4 +1,5 @@
1
1
  import { typographyVariants } from "../theme/typography";
2
+ import type React from "react";
2
3
  import { type TextProps } from "react-native";
3
4
  /**
4
5
  * Typography.Text - Hybrid component (NativeWind + Style)
@@ -22,6 +23,6 @@ interface AppTextProps extends TextProps {
22
23
  transform?: "none" | "uppercase" | "lowercase" | "capitalize";
23
24
  className?: string;
24
25
  }
25
- declare function AppText({ variant, color, bold, italic, underline, align, transform, semibold, style, className, children, ...props }: AppTextProps): import("react/jsx-runtime").JSX.Element;
26
+ declare function AppText({ variant, color, bold, italic, underline, align, transform, semibold, style, className, children, ...props }: AppTextProps): React.JSX.Element;
26
27
  export default AppText;
27
28
  export { AppText };
@@ -0,0 +1,6 @@
1
+ import { type ImageSourcePropType } from "react-native";
2
+ export interface BrandingConfig {
3
+ logo?: ImageSourcePropType;
4
+ }
5
+ export declare function setBranding(config: BrandingConfig): void;
6
+ export declare function getBrandingLogo(): ImageSourcePropType | undefined;
@@ -0,0 +1,7 @@
1
+ let activeLogo;
2
+ export function setBranding(config) {
3
+ activeLogo = config.logo;
4
+ }
5
+ export function getBrandingLogo() {
6
+ return activeLogo;
7
+ }
@@ -1,3 +1,4 @@
1
1
  import { CustomIconProps } from "../icons/props";
2
- declare function ArrowDownIcon({ size, color }: CustomIconProps): import("react/jsx-runtime").JSX.Element;
2
+ import React from "react";
3
+ declare function ArrowDownIcon({ size, color }: CustomIconProps): React.JSX.Element;
3
4
  export default ArrowDownIcon;
@@ -1,3 +1,4 @@
1
1
  import { CustomIconProps } from "../icons/props";
2
- declare function ArrowUpIcon({ size, color }: CustomIconProps): import("react/jsx-runtime").JSX.Element;
2
+ import React from "react";
3
+ declare function ArrowUpIcon({ size, color }: CustomIconProps): React.JSX.Element;
3
4
  export default ArrowUpIcon;
@@ -3,5 +3,5 @@ interface CreditIconProps {
3
3
  height?: number;
4
4
  color?: string;
5
5
  }
6
- declare function CreditIcon({ width, height, color }: CreditIconProps): import("react/jsx-runtime").JSX.Element;
6
+ declare function CreditIcon({ width, height, color }: CreditIconProps): import("react").JSX.Element;
7
7
  export default CreditIcon;
@@ -2,5 +2,5 @@ interface OdooIconProps {
2
2
  size?: number;
3
3
  color?: string;
4
4
  }
5
- declare function OdooIcon({ size, color }: OdooIconProps): import("react/jsx-runtime").JSX.Element;
5
+ declare function OdooIcon({ size, color }: OdooIconProps): import("react").JSX.Element;
6
6
  export default OdooIcon;
package/dist/index.d.ts CHANGED
@@ -5,6 +5,7 @@ export { Form } from "./Form";
5
5
  export { Navigation } from "./Navigation";
6
6
  export { Typography } from "./Typography";
7
7
  export { Box, Row, Stack } from "./primitives";
8
+ export { type BrandingConfig, getBrandingLogo, setBranding, } from "./branding";
8
9
  export { cn, tv, type VariantProps } from "./theme/tw";
9
10
  export { fontFamilies, fontSizes, fontWeights, letterSpacing, lineHeights, typographyVariants, } from "./theme/typography";
10
11
  export { default as Container } from "./layouts/Container";
package/dist/index.js CHANGED
@@ -7,6 +7,8 @@ export { Navigation } from "./Navigation";
7
7
  export { Typography } from "./Typography";
8
8
  // Primitives (NativeWind-based - Layout utilities)
9
9
  export { Box, Row, Stack } from "./primitives";
10
+ // Branding (logo del app, configurado una vez; Display.Logo lo usa como fallback)
11
+ export { getBrandingLogo, setBranding, } from "./branding";
10
12
  // Theme
11
13
  export { cn, tv } from "./theme/tw";
12
14
  export { fontFamilies, fontSizes, fontWeights, letterSpacing, lineHeights, typographyVariants, } from "./theme/typography";
@@ -5,5 +5,5 @@ interface AuthContainerProps {
5
5
  onBackPress?: () => void;
6
6
  className?: string;
7
7
  }
8
- declare function AuthContainer({ header, children, onBackPress, className }: AuthContainerProps): import("react/jsx-runtime").JSX.Element;
8
+ declare function AuthContainer({ header, children, onBackPress, className }: AuthContainerProps): import("react").JSX.Element;
9
9
  export default AuthContainer;
@@ -4,6 +4,7 @@ import { Edge } from "react-native-safe-area-context";
4
4
  type ContainerProps = {
5
5
  children: ReactNode;
6
6
  style?: ViewStyle;
7
+ /** @deprecated Ignored under edge-to-edge (SDK 54+): the status bar is always translucent. */
7
8
  statusBarColor?: string;
8
9
  barStyle?: "light-content" | "dark-content";
9
10
  statusBarHidden?: boolean;
@@ -1,9 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
2
- import { theme } from "../theme";
3
2
  import { cn } from "../theme/tw";
4
3
  import { StatusBar } from "react-native";
5
4
  import { SafeAreaView } from "react-native-safe-area-context";
6
- const Container = ({ children, style, statusBarColor = theme.primary, barStyle = "light-content", statusBarHidden = false, edges = ["top", "bottom", "left", "right"], className, }) => {
7
- return (_jsxs(SafeAreaView, { className: cn("flex-1 bg-bg-page", className), edges: edges, style: style, children: [_jsx(StatusBar, { backgroundColor: statusBarColor, barStyle: barStyle, hidden: statusBarHidden, translucent: false }), children] }));
5
+ const Container = ({ children, style, barStyle = "light-content", statusBarHidden = false, edges = ["top", "bottom", "left", "right"], className, }) => {
6
+ return (_jsxs(SafeAreaView, { className: cn("flex-1 bg-bg-page", className), edges: edges, style: style, children: [_jsx(StatusBar, { barStyle: barStyle, hidden: statusBarHidden }), children] }));
8
7
  };
9
8
  export default Container;
@@ -4,5 +4,5 @@ interface GradientContainerProps {
4
4
  style?: object;
5
5
  className?: string;
6
6
  }
7
- declare const GradientContainer: ({ children, style, className }: GradientContainerProps) => import("react/jsx-runtime").JSX.Element;
7
+ declare const GradientContainer: ({ children, style, className }: GradientContainerProps) => import("react").JSX.Element;
8
8
  export default GradientContainer;
@@ -2,5 +2,5 @@ import { ReactNode } from "react";
2
2
  interface PlainLayoutProps {
3
3
  children?: ReactNode;
4
4
  }
5
- declare const PlainLayout: import("react").MemoExoticComponent<({ children }: PlainLayoutProps) => import("react/jsx-runtime").JSX.Element>;
5
+ declare const PlainLayout: import("react").MemoExoticComponent<({ children }: PlainLayoutProps) => import("react").JSX.Element>;
6
6
  export default PlainLayout;
@@ -1,8 +1,8 @@
1
- import { ReactNode } from "react";
1
+ import React, { ReactNode } from "react";
2
2
  type ScrollContainerProps = {
3
3
  children: ReactNode;
4
4
  contentContainerStyle?: object;
5
5
  className?: string;
6
6
  };
7
- declare function ScrollContainer({ children, contentContainerStyle, className, }: ScrollContainerProps): import("react/jsx-runtime").JSX.Element;
7
+ declare function ScrollContainer({ children, contentContainerStyle, className, }: ScrollContainerProps): React.JSX.Element;
8
8
  export default ScrollContainer;
@@ -3,6 +3,6 @@ import { cn } from "../theme/tw";
3
3
  import { KeyboardAvoidingView, Platform, ScrollView, StatusBar, View } from "react-native";
4
4
  import { SafeAreaView } from "react-native-safe-area-context";
5
5
  function ScrollContainer({ children, contentContainerStyle = {}, className, }) {
6
- return (_jsxs(SafeAreaView, { className: cn("flex-1 bg-bg-card", className), children: [_jsx(StatusBar, { barStyle: "dark-content", translucent: false }), _jsx(KeyboardAvoidingView, { behavior: Platform.OS === "ios" ? "padding" : undefined, className: "flex-1", children: _jsx(ScrollView, { contentContainerStyle: [{ flexGrow: 1, padding: 16 }, contentContainerStyle], keyboardShouldPersistTaps: "handled", showsVerticalScrollIndicator: false, children: _jsx(View, { className: "flex-1", children: children }) }) })] }));
6
+ return (_jsxs(SafeAreaView, { className: cn("flex-1 bg-bg-card", className), children: [_jsx(StatusBar, { barStyle: "dark-content" }), _jsx(KeyboardAvoidingView, { behavior: Platform.OS === "ios" ? "padding" : undefined, className: "flex-1", children: _jsx(ScrollView, { contentContainerStyle: [{ flexGrow: 1, padding: 16 }, contentContainerStyle], keyboardShouldPersistTaps: "handled", showsVerticalScrollIndicator: false, children: _jsx(View, { className: "flex-1", children: children }) }) })] }));
7
7
  }
8
8
  export default ScrollContainer;
@@ -1,4 +1,4 @@
1
- import { ReactElement, ReactNode } from "react";
1
+ import React, { ReactElement, ReactNode } from "react";
2
2
  interface TabNavigatorLayoutProps {
3
3
  className?: string;
4
4
  children?: ReactNode;
@@ -16,7 +16,7 @@ export interface TabProps {
16
16
  }
17
17
  declare function Tabs({ children: tabsChildren }: {
18
18
  children?: ReactNode;
19
- }): import("react/jsx-runtime").JSX.Element;
19
+ }): React.JSX.Element;
20
20
  declare function Tab(_props: TabProps): null;
21
21
  type TabLayoutComponent = ((props: TabNavigatorLayoutProps) => ReactElement) & {
22
22
  Tabs: typeof Tabs;
@@ -30,6 +30,10 @@ function Tabs({ children: tabsChildren }) {
30
30
  function Tab(_props) {
31
31
  return null;
32
32
  }
33
+ /**
34
+ * @deprecated Use `Navigation.BottomNav` (flat, modern) for the bar, and the core's
35
+ * router-aware layouts. Kept for backwards compatibility.
36
+ */
33
37
  function TabNavigatorLayoutComponent({ className, children, content, currentPath, onTabPress, persistentComponent, persistentRoutePath, }) {
34
38
  const tabs = [];
35
39
  Children.forEach(children, (child) => {
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from "react";
2
+ import { type ViewProps } from "react-native";
3
+ export interface AspectRatioProps extends ViewProps {
4
+ ratio?: number;
5
+ className?: string;
6
+ children?: ReactNode;
7
+ }
8
+ declare function AspectRatio({ ratio, className, style, children, ...rest }: AspectRatioProps): import("react").JSX.Element;
9
+ export default AspectRatio;
10
+ export { AspectRatio };
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "nativewind/jsx-runtime";
2
+ import { cn } from "../theme/tw";
3
+ import { View } from "react-native";
4
+ function AspectRatio({ ratio = 1, className, style, children, ...rest }) {
5
+ return (_jsx(View, { className: cn(className), style: [{ aspectRatio: ratio }, style], ...rest, children: children }));
6
+ }
7
+ export default AspectRatio;
8
+ export { AspectRatio };
@@ -2,6 +2,6 @@ import { ViewProps } from "react-native";
2
2
  interface BoxProps extends ViewProps {
3
3
  className?: string;
4
4
  }
5
- declare function Box({ className, style, ...props }: BoxProps): import("react/jsx-runtime").JSX.Element;
5
+ declare function Box({ className, style, ...props }: BoxProps): import("react").JSX.Element;
6
6
  export default Box;
7
7
  export { Box };
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from "react";
2
+ import { type StyleProp, type TouchableOpacityProps, type ViewStyle } from "react-native";
3
+ export interface PressableProps extends Omit<TouchableOpacityProps, "style" | "children"> {
4
+ className?: string;
5
+ style?: StyleProp<ViewStyle>;
6
+ children?: ReactNode;
7
+ }
8
+ declare function Pressable({ className, disabled, hitSlop, activeOpacity, accessibilityRole, style, children, ...rest }: PressableProps): import("react").JSX.Element;
9
+ export default Pressable;
10
+ export { Pressable };
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "nativewind/jsx-runtime";
2
+ import { cn } from "../theme/tw";
3
+ import { TouchableOpacity, } from "react-native";
4
+ function Pressable({ className, disabled = false, hitSlop = 8, activeOpacity = 0.7, accessibilityRole = "button", style, children, ...rest }) {
5
+ const isDisabled = !!disabled;
6
+ return (_jsx(TouchableOpacity, { accessibilityRole: accessibilityRole, accessibilityState: { disabled: isDisabled }, activeOpacity: activeOpacity, className: cn(isDisabled && "opacity-50", className), disabled: isDisabled, hitSlop: hitSlop, style: style, ...rest, children: children }));
7
+ }
8
+ export default Pressable;
9
+ export { Pressable };
@@ -6,6 +6,6 @@ interface RowProps extends ViewProps {
6
6
  wrap?: boolean;
7
7
  className?: string;
8
8
  }
9
- declare function Row({ spacing, align, justify, wrap, className, style, ...props }: RowProps): import("react/jsx-runtime").JSX.Element;
9
+ declare function Row({ spacing, align, justify, wrap, className, style, ...props }: RowProps): import("react").JSX.Element;
10
10
  export default Row;
11
11
  export { Row };
@@ -0,0 +1,8 @@
1
+ export interface SpacerProps {
2
+ size?: number;
3
+ horizontal?: boolean;
4
+ flex?: boolean;
5
+ }
6
+ declare function Spacer({ size, horizontal, flex }: SpacerProps): import("react").JSX.Element;
7
+ export default Spacer;
8
+ export { Spacer };
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "nativewind/jsx-runtime";
2
+ import { View } from "react-native";
3
+ function Spacer({ size = 8, horizontal = false, flex = false }) {
4
+ if (flex)
5
+ return _jsx(View, { style: { flex: 1 } });
6
+ return _jsx(View, { style: horizontal ? { width: size } : { height: size } });
7
+ }
8
+ export default Spacer;
9
+ export { Spacer };
@@ -4,6 +4,6 @@ interface StackProps extends ViewProps {
4
4
  align?: "start" | "center" | "end" | "stretch";
5
5
  className?: string;
6
6
  }
7
- declare function Stack({ spacing, align, className, style, ...props }: StackProps): import("react/jsx-runtime").JSX.Element;
7
+ declare function Stack({ spacing, align, className, style, ...props }: StackProps): import("react").JSX.Element;
8
8
  export default Stack;
9
9
  export { Stack };
@@ -1,3 +1,6 @@
1
+ export { AspectRatio, type AspectRatioProps, } from "../primitives/AspectRatio";
1
2
  export { Box } from "../primitives/Box";
3
+ export { Pressable, type PressableProps } from "../primitives/Pressable";
2
4
  export { Row } from "../primitives/Row";
5
+ export { Spacer, type SpacerProps } from "../primitives/Spacer";
3
6
  export { Stack } from "../primitives/Stack";
@@ -1,3 +1,6 @@
1
+ export { AspectRatio, } from "../primitives/AspectRatio";
1
2
  export { Box } from "../primitives/Box";
3
+ export { Pressable } from "../primitives/Pressable";
2
4
  export { Row } from "../primitives/Row";
5
+ export { Spacer } from "../primitives/Spacer";
3
6
  export { Stack } from "../primitives/Stack";
@@ -1,3 +1,5 @@
1
1
  import type { ThemeTokens } from "../theme/types";
2
2
  export declare function setActiveTheme(tokens: ThemeTokens): void;
3
3
  export declare function getActiveTheme(): ThemeTokens;
4
+ export declare function subscribeTheme(listener: () => void): () => void;
5
+ export declare function getThemeVersion(): number;
@@ -1,8 +1,21 @@
1
1
  import { DEFAULT_THEME } from "../theme/default";
2
2
  const activeTheme = { ...DEFAULT_THEME };
3
+ const listeners = new Set();
4
+ let version = 0;
3
5
  export function setActiveTheme(tokens) {
4
6
  Object.assign(activeTheme, tokens);
7
+ version += 1;
8
+ listeners.forEach((listener) => listener());
5
9
  }
6
10
  export function getActiveTheme() {
7
11
  return activeTheme;
8
12
  }
13
+ export function subscribeTheme(listener) {
14
+ listeners.add(listener);
15
+ return () => {
16
+ listeners.delete(listener);
17
+ };
18
+ }
19
+ export function getThemeVersion() {
20
+ return version;
21
+ }
@@ -17,5 +17,5 @@ import type { ActivityIndicatorProps } from "react-native";
17
17
  interface ThemedActivityIndicatorProps extends Omit<ActivityIndicatorProps, "color"> {
18
18
  color?: string;
19
19
  }
20
- export declare function ThemedActivityIndicator({ color, ...props }: ThemedActivityIndicatorProps): import("react/jsx-runtime").JSX.Element;
20
+ export declare function ThemedActivityIndicator({ color, ...props }: ThemedActivityIndicatorProps): import("react").JSX.Element;
21
21
  export {};
@@ -3,7 +3,7 @@
3
3
  * THEMED COMPONENTS - Barrel Export
4
4
  * ============================================================================
5
5
  *
6
- * Componentes que necesitan acceso a tokens del theme vía hook.
6
+ * Components that need access to theme tokens via hook.
7
7
  * Estos son el 1% de casos donde className no es suficiente.
8
8
  */
9
9
  export { ThemedActivityIndicator } from "../../theme/components/ThemedActivityIndicator";
@@ -3,7 +3,7 @@
3
3
  * THEMED COMPONENTS - Barrel Export
4
4
  * ============================================================================
5
5
  *
6
- * Componentes que necesitan acceso a tokens del theme vía hook.
6
+ * Components that need access to theme tokens via hook.
7
7
  * Estos son el 1% de casos donde className no es suficiente.
8
8
  */
9
9
  export { ThemedActivityIndicator } from "../../theme/components/ThemedActivityIndicator";
@@ -0,0 +1,7 @@
1
+ import type { ThemeTokens } from "../theme/types";
2
+ /**
3
+ * Default dark theme (starting point — adjustable per app via createTheme).
4
+ * Dark surfaces (slate-900/800/700), light text, brand accents preserved
5
+ * and slightly more vivid for contrast on a dark background.
6
+ */
7
+ export declare const DEFAULT_DARK_THEME: ThemeTokens;
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Default dark theme (starting point — adjustable per app via createTheme).
3
+ * Dark surfaces (slate-900/800/700), light text, brand accents preserved
4
+ * and slightly more vivid for contrast on a dark background.
5
+ */
6
+ export const DEFAULT_DARK_THEME = {
7
+ name: "dark",
8
+ primary: "#3B82F6",
9
+ secondary: "#94A3B8",
10
+ accent: "#FBBF24",
11
+ bg: {
12
+ page: "#0F172A",
13
+ card: "#1E293B",
14
+ popover: "#1E293B",
15
+ muted: "#334155",
16
+ accent: "#1E3A8A",
17
+ hover: "#334155",
18
+ disabled: "#1E293B",
19
+ },
20
+ text: {
21
+ primary: "#F1F5F9",
22
+ secondary: "#CBD5E1",
23
+ tertiary: "#64748B",
24
+ muted: "#94A3B8",
25
+ accent: "#93C5FD",
26
+ inverse: "#0F172A",
27
+ disabled: "#475569",
28
+ onPrimary: "#FFFFFF",
29
+ onSecondary: "#0F172A",
30
+ onAccent: "#0F172A",
31
+ onDanger: "#FFFFFF",
32
+ onSuccess: "#FFFFFF",
33
+ },
34
+ icon: {
35
+ primary: "#F1F5F9",
36
+ secondary: "#94A3B8",
37
+ tertiary: "#64748B",
38
+ inverse: "#0F172A",
39
+ disabled: "#475569",
40
+ },
41
+ border: {
42
+ default: "#334155",
43
+ light: "#1E293B",
44
+ strong: "#475569",
45
+ focus: "#3B82F6",
46
+ },
47
+ success: "#22C55E",
48
+ warning: "#FBBF24",
49
+ danger: "#EF4444",
50
+ info: "#3B82F6",
51
+ successLight: "#14532D",
52
+ warningLight: "#78350F",
53
+ dangerLight: "#7F1D1D",
54
+ infoLight: "#1E3A8A",
55
+ ring: "#3B82F6",
56
+ input: "#334155",
57
+ gradient: {
58
+ primary: ["#3B82F6", "#1E40AF"],
59
+ accent: ["#FBBF24", "#D97706"],
60
+ },
61
+ shadow: {
62
+ sm: {
63
+ shadowColor: "#000000",
64
+ shadowOffset: { width: 0, height: 1 },
65
+ shadowOpacity: 0.2,
66
+ shadowRadius: 2,
67
+ elevation: 1,
68
+ },
69
+ md: {
70
+ shadowColor: "#000000",
71
+ shadowOffset: { width: 0, height: 4 },
72
+ shadowOpacity: 0.3,
73
+ shadowRadius: 6,
74
+ elevation: 3,
75
+ },
76
+ lg: {
77
+ shadowColor: "#000000",
78
+ shadowOffset: { width: 0, height: 10 },
79
+ shadowOpacity: 0.4,
80
+ shadowRadius: 15,
81
+ elevation: 5,
82
+ },
83
+ },
84
+ };
@@ -3,16 +3,16 @@ export type DeepPartial<T> = {
3
3
  [K in keyof T]?: T[K] extends readonly unknown[] ? T[K] : T[K] extends object ? DeepPartial<T[K]> : T[K];
4
4
  };
5
5
  /**
6
- * Define un theme completo y tipado (API potente: el framework parametriza
7
- * todos los tokens explícitamente).
6
+ * Defines a complete, typed theme (powerful API: the framework parametrizes
7
+ * every token explicitly).
8
8
  */
9
9
  export declare function defineTheme(tokens: ThemeTokens): ThemeTokens;
10
10
  /**
11
- * Combina un theme base con overrides parciales (deep merge tipado). Primitiva
12
- * para construir APIs simples encima (ej. createTheme del core).
11
+ * Merges a base theme with partial overrides (typed deep merge). Primitive
12
+ * to build simpler APIs on top (e.g. the core's createTheme).
13
13
  */
14
14
  export declare function mergeTheme(base: ThemeTokens, overrides?: DeepPartial<ThemeTokens>): ThemeTokens;
15
15
  /**
16
- * Theme por defecto + overrides parciales en un solo paso.
16
+ * Default theme + partial overrides in a single step.
17
17
  */
18
18
  export declare function extendTheme(overrides?: DeepPartial<ThemeTokens>): ThemeTokens;
@@ -13,21 +13,21 @@ function deepMerge(base, override) {
13
13
  return out;
14
14
  }
15
15
  /**
16
- * Define un theme completo y tipado (API potente: el framework parametriza
17
- * todos los tokens explícitamente).
16
+ * Defines a complete, typed theme (powerful API: the framework parametrizes
17
+ * every token explicitly).
18
18
  */
19
19
  export function defineTheme(tokens) {
20
20
  return tokens;
21
21
  }
22
22
  /**
23
- * Combina un theme base con overrides parciales (deep merge tipado). Primitiva
24
- * para construir APIs simples encima (ej. createTheme del core).
23
+ * Merges a base theme with partial overrides (typed deep merge). Primitive
24
+ * to build simpler APIs on top (e.g. the core's createTheme).
25
25
  */
26
26
  export function mergeTheme(base, overrides = {}) {
27
27
  return deepMerge(base, overrides);
28
28
  }
29
29
  /**
30
- * Theme por defecto + overrides parciales en un solo paso.
30
+ * Default theme + partial overrides in a single step.
31
31
  */
32
32
  export function extendTheme(overrides = {}) {
33
33
  return deepMerge(DEFAULT_THEME, overrides);
@@ -1,7 +1,9 @@
1
- export { getActiveTheme, setActiveTheme } from "../theme/active";
1
+ export { getActiveTheme, setActiveTheme, subscribeTheme, } from "../theme/active";
2
2
  export { ThemedActivityIndicator } from "../theme/components";
3
3
  export { themeToVars } from "../theme/css-vars";
4
+ export { DEFAULT_DARK_THEME } from "../theme/dark";
4
5
  export { DEFAULT_THEME } from "../theme/default";
5
6
  export { type DeepPartial, defineTheme, extendTheme, mergeTheme, } from "../theme/define";
6
7
  export { theme } from "../theme/theme";
7
8
  export type { ShadowStyle, ThemeTokens } from "../theme/types";
9
+ export { useTheme } from "../theme/useTheme";
@@ -1,6 +1,8 @@
1
- export { getActiveTheme, setActiveTheme } from "../theme/active";
1
+ export { getActiveTheme, setActiveTheme, subscribeTheme, } from "../theme/active";
2
2
  export { ThemedActivityIndicator } from "../theme/components";
3
3
  export { themeToVars } from "../theme/css-vars";
4
+ export { DEFAULT_DARK_THEME } from "../theme/dark";
4
5
  export { DEFAULT_THEME } from "../theme/default";
5
6
  export { defineTheme, extendTheme, mergeTheme, } from "../theme/define";
6
7
  export { theme } from "../theme/theme";
8
+ export { useTheme } from "../theme/useTheme";
@@ -3,7 +3,7 @@
3
3
  * THEME CONSTANT - Acceso directo al theme activo
4
4
  * ============================================================================
5
5
  *
6
- * Constante que resuelve automáticamente el theme según el dominio activo.
6
+ * Constant that resolves the active theme automatically.
7
7
  * SOLO usar cuando className no es suficiente (RefreshControl, placeholderColor, etc.)
8
8
  *
9
9
  * @example
@@ -3,7 +3,7 @@
3
3
  * THEME CONSTANT - Acceso directo al theme activo
4
4
  * ============================================================================
5
5
  *
6
- * Constante que resuelve automáticamente el theme según el dominio activo.
6
+ * Constant that resolves the active theme automatically.
7
7
  * SOLO usar cuando className no es suficiente (RefreshControl, placeholderColor, etc.)
8
8
  *
9
9
  * @example