@sincpro/mobile-ui 0.5.0 → 0.7.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 (96) hide show
  1. package/dist/Actions/Actions.Button.d.ts +151 -0
  2. package/dist/Actions/Actions.Button.js +217 -0
  3. package/dist/Actions/Actions.FAB.d.ts +10 -0
  4. package/dist/Actions/Actions.FAB.js +17 -0
  5. package/dist/Actions/Actions.FilterButton.d.ts +10 -0
  6. package/dist/Actions/Actions.FilterButton.js +28 -0
  7. package/dist/Actions/Actions.IconButton.d.ts +67 -0
  8. package/dist/Actions/Actions.IconButton.js +38 -0
  9. package/dist/Actions/index.d.ts +22 -0
  10. package/dist/Actions/index.js +17 -0
  11. package/dist/Dialog/BottomSheet/BottomSheet.Root.js +1 -0
  12. package/dist/Dialog/Confirmation.context.js +1 -6
  13. package/dist/Dialog/Dialog.Sheet.js +6 -4
  14. package/dist/Display/Display.CircleButton.d.ts +15 -0
  15. package/dist/Display/Display.CircleButton.js +39 -0
  16. package/dist/Display/Display.MenuButton.d.ts +51 -8
  17. package/dist/Display/Display.MenuButton.js +79 -13
  18. package/dist/Display/Display.MenuCard.d.ts +15 -0
  19. package/dist/Display/Display.MenuCard.js +24 -0
  20. package/dist/Display/Display.MenuGrid.d.ts +19 -0
  21. package/dist/Display/Display.MenuGrid.js +7 -0
  22. package/dist/Display/Display.SwipeableRow.js +2 -1
  23. package/dist/Display/Display.Tooltip.d.ts +1 -1
  24. package/dist/Display/Display.Tooltip.js +16 -5
  25. package/dist/Display/index.d.ts +9 -0
  26. package/dist/Display/index.js +6 -0
  27. package/dist/Feedback/Feedback.Empty.js +2 -2
  28. package/dist/Feedback/Feedback.Error.js +2 -2
  29. package/dist/Feedback/Feedback.Loading.d.ts +3 -7
  30. package/dist/Feedback/Feedback.Loading.js +2 -8
  31. package/dist/Feedback/Feedback.Progress.js +2 -2
  32. package/dist/Feedback/Feedback.Skeleton.js +2 -2
  33. package/dist/Feedback/Feedback.Spinner.d.ts +3 -0
  34. package/dist/Feedback/Feedback.Spinner.js +52 -2
  35. package/dist/Feedback/Feedback.Splash.js +1 -0
  36. package/dist/Feedback/index.d.ts +0 -2
  37. package/dist/Feedback/index.js +0 -2
  38. package/dist/Form/Form.Button.d.ts +3 -151
  39. package/dist/Form/Form.Button.js +1 -283
  40. package/dist/Form/Form.FAB.d.ts +3 -10
  41. package/dist/Form/Form.FAB.js +1 -17
  42. package/dist/Form/Form.FilterButton.d.ts +3 -12
  43. package/dist/Form/Form.FilterButton.js +1 -34
  44. package/dist/Form/Form.IconButton.d.ts +3 -67
  45. package/dist/Form/Form.IconButton.js +1 -64
  46. package/dist/Form/Form.PasswordInput.js +4 -2
  47. package/dist/Navigation/Navigation.AppBar.d.ts +56 -1
  48. package/dist/Navigation/Navigation.AppBar.js +43 -12
  49. package/dist/Navigation/Navigation.BottomNav.js +2 -1
  50. package/dist/Navigation/Navigation.Header.js +3 -2
  51. package/dist/Navigation/Navigation.Menu.js +6 -3
  52. package/dist/Navigation/Navigation.MenuSection.d.ts +19 -0
  53. package/dist/Navigation/Navigation.MenuSection.js +25 -0
  54. package/dist/Navigation/Navigation.SegmentedControl.d.ts +15 -1
  55. package/dist/Navigation/Navigation.SegmentedControl.js +22 -4
  56. package/dist/Navigation/Navigation.TabIcon.js +1 -2
  57. package/dist/Navigation/Navigation.TabItem.js +2 -2
  58. package/dist/Navigation/Navigation.Tabs.d.ts +8 -3
  59. package/dist/Navigation/Navigation.Tabs.js +19 -6
  60. package/dist/Navigation/index.d.ts +7 -6
  61. package/dist/Navigation/index.js +2 -0
  62. package/dist/index.d.ts +2 -0
  63. package/dist/index.js +2 -0
  64. package/dist/layouts/AuthContainer.d.ts +4 -1
  65. package/dist/layouts/AuthContainer.js +7 -5
  66. package/dist/layouts/BottomInset.d.ts +16 -0
  67. package/dist/layouts/BottomInset.js +17 -0
  68. package/dist/layouts/TabNavigatorLayout.js +2 -2
  69. package/dist/primitives/BaseButton.js +3 -3
  70. package/dist/theme/default.js +1 -1
  71. package/dist/views/AppSplashView.d.ts +18 -0
  72. package/dist/views/AppSplashView.js +9 -0
  73. package/dist/views/AuthFormView.d.ts +3 -1
  74. package/dist/views/AuthFormView.js +2 -2
  75. package/dist/views/FormViewV2.d.ts +18 -6
  76. package/dist/views/FormViewV2.js +14 -11
  77. package/dist/views/ListViewV2.d.ts +12 -1
  78. package/dist/views/ListViewV2.js +16 -10
  79. package/dist/widgets/CircleButton.d.ts +3 -19
  80. package/dist/widgets/CircleButton.js +1 -41
  81. package/dist/widgets/JSONViewer.js +7 -7
  82. package/dist/widgets/MenuCard.d.ts +3 -13
  83. package/dist/widgets/MenuCard.js +1 -8
  84. package/dist/widgets/MenuGrid.d.ts +5 -17
  85. package/dist/widgets/MenuGrid.js +1 -6
  86. package/dist/widgets/MenuSection.d.ts +3 -0
  87. package/dist/widgets/MenuSection.js +1 -0
  88. package/dist/widgets/PromoBanner.d.ts +38 -0
  89. package/dist/widgets/PromoBanner.js +61 -0
  90. package/dist/widgets/PromoModal.d.ts +41 -0
  91. package/dist/widgets/PromoModal.js +75 -0
  92. package/dist/widgets/QuickActions.d.ts +26 -0
  93. package/dist/widgets/QuickActions.js +41 -0
  94. package/dist/widgets/index.d.ts +11 -1
  95. package/dist/widgets/index.js +4 -0
  96. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ export { MenuSection } from "../Navigation/Navigation.MenuSection";
@@ -0,0 +1,38 @@
1
+ import { ComponentType } from "react";
2
+ export interface PromoBannerItem {
3
+ id: string;
4
+ title: string;
5
+ subtitle?: string;
6
+ /** Left accent icon. */
7
+ icon?: ComponentType<{
8
+ size?: number;
9
+ color?: string;
10
+ }>;
11
+ /** Gradient color stops for the card surface. */
12
+ gradient?: readonly [string, string, ...string[]];
13
+ /** Accent color for the CTA button and badge. Defaults to `theme.accent`. */
14
+ accentColor?: string;
15
+ ctaLabel?: string;
16
+ onPress?: () => void;
17
+ /** Small badge text (e.g. "Nuevo", "Promo"). */
18
+ badge?: string;
19
+ }
20
+ export interface PromoBannerProps {
21
+ items: PromoBannerItem[];
22
+ /** Section heading above the banners row. */
23
+ title?: string;
24
+ }
25
+ /**
26
+ * Horizontal scrollable row of promotional/announcement cards.
27
+ * Each card supports gradient surfaces, icon, badge, title, subtitle, and a CTA button.
28
+ *
29
+ * Usage:
30
+ * <PromoBanner
31
+ * title="Destacados"
32
+ * items={[
33
+ * { id: "1", title: "Nueva ruta", subtitle: "Servicio express", badge: "Nuevo",
34
+ * gradient: ["#0D2B1F", "#00C357"], ctaLabel: "Ver más", onPress: ... },
35
+ * ]}
36
+ * />
37
+ */
38
+ export declare function PromoBanner({ items, title }: PromoBannerProps): import("react").JSX.Element;
@@ -0,0 +1,61 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
2
+ import GradientSurface from "../Display/Display.GradientSurface";
3
+ import { useTheme } from "../theme";
4
+ import { Typography } from "../Typography";
5
+ import { ScrollView, TouchableOpacity, View } from "react-native";
6
+ function BannerCard({ item }) {
7
+ const theme = useTheme();
8
+ const accent = item.accentColor ?? theme.accent;
9
+ const hasGradient = !!item.gradient;
10
+ const Icon = item.icon;
11
+ const textColor = hasGradient ? "#FFFFFF" : theme.text.primary;
12
+ const subtextColor = hasGradient ? "rgba(255,255,255,0.75)" : theme.text.secondary;
13
+ return (_jsxs(TouchableOpacity, { activeOpacity: 0.85, onPress: item.onPress, style: {
14
+ width: 280,
15
+ borderRadius: 16,
16
+ overflow: "hidden",
17
+ marginRight: 12,
18
+ backgroundColor: hasGradient ? "transparent" : theme.bg.card,
19
+ borderWidth: hasGradient ? 0 : 1,
20
+ borderColor: theme.border.default,
21
+ ...theme.shadow.md,
22
+ }, children: [hasGradient ? (_jsx(GradientSurface, { colors: item.gradient, padding: "none", radius: "none", style: { position: "absolute", top: 0, left: 0, right: 0, bottom: 0 } })) : null, _jsxs(View, { style: { padding: 16 }, children: [item.badge ? (_jsx(View, { style: {
23
+ alignSelf: "flex-start",
24
+ backgroundColor: accent,
25
+ borderRadius: 999,
26
+ paddingHorizontal: 10,
27
+ paddingVertical: 3,
28
+ marginBottom: 10,
29
+ }, children: _jsx(Typography.Text, { semibold: true, style: { color: "#FFFFFF", fontSize: 11 }, variant: "caption", children: item.badge }) })) : null, _jsxs(View, { style: { flexDirection: "row", alignItems: "center", gap: 12 }, children: [Icon ? (_jsx(View, { style: {
30
+ width: 48,
31
+ height: 48,
32
+ borderRadius: 12,
33
+ backgroundColor: hasGradient ? "rgba(255,255,255,0.15)" : theme.bg.muted,
34
+ alignItems: "center",
35
+ justifyContent: "center",
36
+ }, children: _jsx(Icon, { color: hasGradient ? "#FFFFFF" : theme.icon.primary, size: 24 }) })) : null, _jsxs(View, { style: { flex: 1 }, children: [_jsx(Typography.Text, { semibold: true, style: { color: textColor }, variant: "subtitle", children: item.title }), item.subtitle ? (_jsx(Typography.Text, { style: { color: subtextColor, marginTop: 2 }, variant: "bodySmall", children: item.subtitle })) : null] })] }), item.ctaLabel ? (_jsx(View, { style: {
37
+ marginTop: 14,
38
+ alignSelf: "flex-start",
39
+ backgroundColor: hasGradient ? "rgba(255,255,255,0.2)" : accent,
40
+ borderRadius: 999,
41
+ paddingHorizontal: 16,
42
+ paddingVertical: 7,
43
+ }, children: _jsx(Typography.Text, { semibold: true, style: { color: hasGradient ? "#FFFFFF" : theme.text.onAccent, fontSize: 13 }, variant: "bodySmall", children: item.ctaLabel }) })) : null] })] }));
44
+ }
45
+ /**
46
+ * Horizontal scrollable row of promotional/announcement cards.
47
+ * Each card supports gradient surfaces, icon, badge, title, subtitle, and a CTA button.
48
+ *
49
+ * Usage:
50
+ * <PromoBanner
51
+ * title="Destacados"
52
+ * items={[
53
+ * { id: "1", title: "Nueva ruta", subtitle: "Servicio express", badge: "Nuevo",
54
+ * gradient: ["#0D2B1F", "#00C357"], ctaLabel: "Ver más", onPress: ... },
55
+ * ]}
56
+ * />
57
+ */
58
+ export function PromoBanner({ items, title }) {
59
+ const theme = useTheme();
60
+ return (_jsxs(View, { children: [title ? (_jsx(Typography.Text, { semibold: true, style: { color: theme.text.secondary, marginBottom: 10, paddingHorizontal: 16 }, variant: "caption", children: title.toUpperCase() })) : null, _jsx(ScrollView, { contentContainerStyle: { paddingHorizontal: 16, paddingVertical: 2 }, horizontal: true, showsHorizontalScrollIndicator: false, children: items.map((item) => (_jsx(BannerCard, { item: item }, item.id))) })] }));
61
+ }
@@ -0,0 +1,41 @@
1
+ import { ComponentType } from "react";
2
+ export interface PromoModalProps {
3
+ visible: boolean;
4
+ onDismiss: () => void;
5
+ title: string;
6
+ body?: string;
7
+ /** Optional icon rendered at the top of the card. */
8
+ icon?: ComponentType<{
9
+ size?: number;
10
+ color?: string;
11
+ }>;
12
+ /** Gradient for the icon header area (top strip). */
13
+ headerGradient?: readonly [string, string, ...string[]];
14
+ /** Primary CTA label. */
15
+ ctaLabel?: string;
16
+ onPressCta?: () => void;
17
+ /** Secondary link/dismiss label. Defaults to "Ahora no". */
18
+ dismissLabel?: string;
19
+ /** Badge chip text above the title (e.g. "Novedad", "Oferta"). */
20
+ badge?: string;
21
+ /** Accent color for the CTA button and badge. */
22
+ accentColor?: string;
23
+ }
24
+ /**
25
+ * Bottom-anchored modal for news, promotions, or announcements.
26
+ * Tapping outside (backdrop) also dismisses it.
27
+ *
28
+ * Usage:
29
+ * <PromoModal
30
+ * visible={showPromo}
31
+ * onDismiss={() => setShowPromo(false)}
32
+ * title="Nueva función disponible"
33
+ * body="Ahora puedes filtrar rutas por color directamente desde el panel principal."
34
+ * badge="Novedad"
35
+ * headerGradient={["#022B14", "#065E2B"]}
36
+ * icon={BellIcon}
37
+ * ctaLabel="Explorar"
38
+ * onPressCta={handleExplore}
39
+ * />
40
+ */
41
+ export declare function PromoModal({ visible, onDismiss, title, body, icon: Icon, headerGradient, ctaLabel, onPressCta, dismissLabel, badge, accentColor, }: PromoModalProps): import("react").JSX.Element;
@@ -0,0 +1,75 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
2
+ import GradientSurface from "../Display/Display.GradientSurface";
3
+ import { useTheme } from "../theme";
4
+ import { Typography } from "../Typography";
5
+ import { Modal, TouchableOpacity, TouchableWithoutFeedback, View } from "react-native";
6
+ import { useSafeAreaInsets } from "react-native-safe-area-context";
7
+ /**
8
+ * Bottom-anchored modal for news, promotions, or announcements.
9
+ * Tapping outside (backdrop) also dismisses it.
10
+ *
11
+ * Usage:
12
+ * <PromoModal
13
+ * visible={showPromo}
14
+ * onDismiss={() => setShowPromo(false)}
15
+ * title="Nueva función disponible"
16
+ * body="Ahora puedes filtrar rutas por color directamente desde el panel principal."
17
+ * badge="Novedad"
18
+ * headerGradient={["#022B14", "#065E2B"]}
19
+ * icon={BellIcon}
20
+ * ctaLabel="Explorar"
21
+ * onPressCta={handleExplore}
22
+ * />
23
+ */
24
+ export function PromoModal({ visible, onDismiss, title, body, icon: Icon, headerGradient, ctaLabel, onPressCta, dismissLabel = "Ahora no", badge, accentColor, }) {
25
+ const theme = useTheme();
26
+ const insets = useSafeAreaInsets();
27
+ const accent = accentColor ?? theme.accent;
28
+ return (_jsxs(Modal, { animationType: "fade", onRequestClose: onDismiss, statusBarTranslucent: true, transparent: true, visible: visible, children: [_jsx(TouchableWithoutFeedback, { onPress: onDismiss, children: _jsx(View, { style: {
29
+ flex: 1,
30
+ backgroundColor: "rgba(0,0,0,0.55)",
31
+ alignItems: "center",
32
+ justifyContent: "center",
33
+ paddingHorizontal: 24,
34
+ paddingVertical: insets.top + 16,
35
+ } }) }), _jsx(View, { pointerEvents: "box-none", style: {
36
+ position: "absolute",
37
+ top: 0,
38
+ left: 0,
39
+ right: 0,
40
+ bottom: 0,
41
+ alignItems: "center",
42
+ justifyContent: "center",
43
+ paddingHorizontal: 24,
44
+ }, children: _jsxs(View, { style: {
45
+ backgroundColor: theme.bg.card,
46
+ borderRadius: 28,
47
+ borderWidth: 1,
48
+ borderColor: theme.border.default,
49
+ width: "100%",
50
+ maxWidth: 400,
51
+ overflow: "hidden",
52
+ }, children: [headerGradient || Icon ? (_jsxs(View, { style: { height: 120, justifyContent: "center", alignItems: "center" }, children: [headerGradient ? (_jsx(GradientSurface, { colors: headerGradient, padding: "none", radius: "none", style: { position: "absolute", top: 0, left: 0, right: 0, bottom: 0 } })) : null, Icon ? (_jsx(View, { style: {
53
+ width: 64,
54
+ height: 64,
55
+ borderRadius: 20,
56
+ backgroundColor: "rgba(255,255,255,0.18)",
57
+ alignItems: "center",
58
+ justifyContent: "center",
59
+ }, children: _jsx(Icon, { color: "#FFFFFF", size: 32 }) })) : null] })) : null, _jsxs(View, { style: { paddingHorizontal: 24, paddingTop: 12, paddingBottom: 8 }, children: [badge ? (_jsx(View, { style: {
60
+ alignSelf: "flex-start",
61
+ backgroundColor: accent,
62
+ borderRadius: 999,
63
+ paddingHorizontal: 12,
64
+ paddingVertical: 4,
65
+ marginBottom: 12,
66
+ }, children: _jsx(Typography.Text, { semibold: true, style: { color: theme.text.onAccent, fontSize: 11 }, variant: "caption", children: badge }) })) : null, _jsx(Typography.Text, { semibold: true, style: { color: theme.text.primary }, variant: "h3", children: title }), body ? (_jsx(Typography.Text, { style: { color: theme.text.secondary, marginTop: 8, lineHeight: 22 }, variant: "body", children: body })) : null] }), _jsxs(View, { style: { paddingHorizontal: 24, paddingTop: 16, gap: 10 }, children: [ctaLabel ? (_jsx(TouchableOpacity, { activeOpacity: 0.8, onPress: () => {
67
+ onPressCta?.();
68
+ onDismiss();
69
+ }, style: {
70
+ backgroundColor: accent,
71
+ borderRadius: 14,
72
+ paddingVertical: 15,
73
+ alignItems: "center",
74
+ }, children: _jsx(Typography.Text, { semibold: true, style: { color: theme.text.onAccent }, variant: "body", children: ctaLabel }) })) : null, _jsx(TouchableOpacity, { activeOpacity: 0.7, onPress: onDismiss, style: { alignItems: "center", paddingVertical: 12 }, children: _jsx(Typography.Text, { style: { color: theme.text.secondary }, variant: "body", children: dismissLabel }) })] })] }) })] }));
75
+ }
@@ -0,0 +1,26 @@
1
+ import { ComponentType } from "react";
2
+ export interface QuickActionItem {
3
+ id: string;
4
+ label: string;
5
+ /** Ionicon name — use this OR `customIcon`. */
6
+ icon?: string;
7
+ customIcon?: ComponentType<{
8
+ size?: number;
9
+ color?: string;
10
+ }>;
11
+ badge?: string | number;
12
+ onPress?: () => void;
13
+ /** Circle background color override. Defaults to `theme.bg.muted`. */
14
+ color?: string;
15
+ }
16
+ export interface QuickActionsProps {
17
+ items: QuickActionItem[];
18
+ /** Section heading rendered above the row. */
19
+ title?: string;
20
+ }
21
+ /**
22
+ * Horizontal scrollable row of small icon+label shortcuts ("Acciones Rápidas").
23
+ * Each item renders a 48 px icon circle + optional badge + label below.
24
+ * Scroll is horizontal and indicator-free for a clean look.
25
+ */
26
+ export declare function QuickActions({ items, title }: QuickActionsProps): import("react").JSX.Element;
@@ -0,0 +1,41 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
2
+ import Icon from "../Display/Display.Icon";
3
+ import { useTheme } from "../theme";
4
+ import { Typography } from "../Typography";
5
+ import { ScrollView, TouchableOpacity, View } from "react-native";
6
+ /**
7
+ * Horizontal scrollable row of small icon+label shortcuts ("Acciones Rápidas").
8
+ * Each item renders a 48 px icon circle + optional badge + label below.
9
+ * Scroll is horizontal and indicator-free for a clean look.
10
+ */
11
+ export function QuickActions({ items, title }) {
12
+ const theme = useTheme();
13
+ return (_jsxs(View, { children: [title ? (_jsx(Typography.Text, { semibold: true, style: { color: theme.text.secondary, marginBottom: 10, paddingHorizontal: 16 }, variant: "caption", children: title.toUpperCase() })) : null, _jsx(ScrollView, { contentContainerStyle: { paddingHorizontal: 12, gap: 4 }, horizontal: true, showsHorizontalScrollIndicator: false, children: items.map((item) => (_jsxs(TouchableOpacity, { activeOpacity: 0.7, onPress: item.onPress, style: { alignItems: "center", width: 72, paddingVertical: 4 }, children: [_jsx(View, { style: {
14
+ width: 52,
15
+ height: 52,
16
+ borderRadius: 999,
17
+ backgroundColor: item.color ?? theme.bg.muted,
18
+ alignItems: "center",
19
+ justifyContent: "center",
20
+ borderWidth: 1,
21
+ borderColor: theme.border.default,
22
+ }, children: _jsx(Icon, { color: theme.text.primary, customIcon: item.customIcon, name: item.icon, size: 24, type: item.customIcon ? "custom" : "ionicons" }) }), item.badge != null ? (_jsx(View, { style: {
23
+ position: "absolute",
24
+ top: 2,
25
+ right: 4,
26
+ minWidth: 18,
27
+ height: 18,
28
+ borderRadius: 999,
29
+ backgroundColor: theme.danger,
30
+ alignItems: "center",
31
+ justifyContent: "center",
32
+ paddingHorizontal: 4,
33
+ borderWidth: 2,
34
+ borderColor: theme.bg.card,
35
+ }, children: _jsx(Typography.Text, { style: { color: "#FFFFFF", fontSize: 9, lineHeight: 11 }, children: item.badge }) })) : null, _jsx(Typography.Text, { numberOfLines: 2, style: {
36
+ color: theme.text.primary,
37
+ marginTop: 6,
38
+ textAlign: "center",
39
+ fontSize: 11,
40
+ }, variant: "caption", children: item.label })] }, item.id))) })] }));
41
+ }
@@ -2,6 +2,16 @@ export { CircleButton } from "../widgets/CircleButton";
2
2
  export { default as GeoPermissionCard } from "../widgets/GeoPermissionCard";
3
3
  export { HomeHeader } from "../widgets/HomeHeader";
4
4
  export { MenuCard } from "../widgets/MenuCard";
5
- export type { MenuItem } from "../widgets/MenuGrid";
5
+ export type { MenuGridItem, MenuGridProps } from "../widgets/MenuGrid";
6
+ /** @deprecated Renamed to `MenuGridItem`. */
7
+ export type { MenuGridItem as MenuItem } from "../widgets/MenuGrid";
6
8
  export { MenuGrid } from "../widgets/MenuGrid";
9
+ export type { MenuSectionProps } from "../widgets/MenuSection";
10
+ export { MenuSection } from "../widgets/MenuSection";
11
+ export type { PromoBannerItem, PromoBannerProps, } from "../widgets/PromoBanner";
12
+ export { PromoBanner } from "../widgets/PromoBanner";
13
+ export type { PromoModalProps } from "../widgets/PromoModal";
14
+ export { PromoModal } from "../widgets/PromoModal";
15
+ export type { QuickActionItem, QuickActionsProps, } from "../widgets/QuickActions";
16
+ export { QuickActions } from "../widgets/QuickActions";
7
17
  export { TimeZoneSelector } from "../widgets/TimeZoneSelector";
@@ -3,4 +3,8 @@ export { default as GeoPermissionCard } from "../widgets/GeoPermissionCard";
3
3
  export { HomeHeader } from "../widgets/HomeHeader";
4
4
  export { MenuCard } from "../widgets/MenuCard";
5
5
  export { MenuGrid } from "../widgets/MenuGrid";
6
+ export { MenuSection } from "../widgets/MenuSection";
7
+ export { PromoBanner } from "../widgets/PromoBanner";
8
+ export { PromoModal } from "../widgets/PromoModal";
9
+ export { QuickActions } from "../widgets/QuickActions";
6
10
  export { TimeZoneSelector } from "../widgets/TimeZoneSelector";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sincpro/mobile-ui",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "Sincpro Mobile design system: generic, presentational React Native components (no domain logic)",
5
5
  "main": "expo/AppEntry.js",
6
6
  "types": "./dist/index.d.ts",
@@ -18,6 +18,7 @@
18
18
  "./Dialog": "./dist/Dialog/index.js",
19
19
  "./Dialog/BottomSheet": "./dist/Dialog/BottomSheet/index.js",
20
20
  "./Dialog/Sheet": "./dist/Dialog/Dialog.Sheet.js",
21
+ "./Actions": "./dist/Actions/index.js",
21
22
  "./Display": "./dist/Display/index.js",
22
23
  "./Feedback": "./dist/Feedback/index.js",
23
24
  "./Form": "./dist/Form/index.js",