prizmux 1.1.4 → 1.2.1

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 (47) hide show
  1. package/README.md +122 -64
  2. package/dist/components/Button/Button.d.ts.map +1 -1
  3. package/dist/components/Button/Button.js +31 -39
  4. package/dist/components/Button/Button.js.map +1 -1
  5. package/dist/components/Button/Button.types.d.ts +9 -4
  6. package/dist/components/Button/Button.types.d.ts.map +1 -1
  7. package/dist/components/EmptyState/EmptyState.d.ts +4 -0
  8. package/dist/components/EmptyState/EmptyState.d.ts.map +1 -0
  9. package/dist/components/EmptyState/EmptyState.js +37 -0
  10. package/dist/components/EmptyState/EmptyState.js.map +1 -0
  11. package/dist/components/EmptyState/EmptyState.types.d.ts +8 -0
  12. package/dist/components/EmptyState/EmptyState.types.d.ts.map +1 -0
  13. package/dist/components/EmptyState/EmptyState.types.js +3 -0
  14. package/dist/components/EmptyState/EmptyState.types.js.map +1 -0
  15. package/dist/components/EmptyState/index.d.ts +3 -0
  16. package/dist/components/EmptyState/index.d.ts.map +1 -0
  17. package/dist/components/EmptyState/index.js +6 -0
  18. package/dist/components/EmptyState/index.js.map +1 -0
  19. package/dist/components/HeaderWithBack/HeaderWithBack.d.ts +4 -0
  20. package/dist/components/HeaderWithBack/HeaderWithBack.d.ts.map +1 -0
  21. package/dist/components/HeaderWithBack/HeaderWithBack.js +91 -0
  22. package/dist/components/HeaderWithBack/HeaderWithBack.js.map +1 -0
  23. package/dist/components/HeaderWithBack/HeaderWithBack.types.d.ts +15 -0
  24. package/dist/components/HeaderWithBack/HeaderWithBack.types.d.ts.map +1 -0
  25. package/dist/components/HeaderWithBack/HeaderWithBack.types.js +3 -0
  26. package/dist/components/HeaderWithBack/HeaderWithBack.types.js.map +1 -0
  27. package/dist/components/HeaderWithBack/index.d.ts +3 -0
  28. package/dist/components/HeaderWithBack/index.d.ts.map +1 -0
  29. package/dist/components/HeaderWithBack/index.js +6 -0
  30. package/dist/components/HeaderWithBack/index.js.map +1 -0
  31. package/dist/components/ImagePreview/ImagePreview.d.ts +5 -0
  32. package/dist/components/ImagePreview/ImagePreview.d.ts.map +1 -0
  33. package/dist/components/ImagePreview/ImagePreview.js +183 -0
  34. package/dist/components/ImagePreview/ImagePreview.js.map +1 -0
  35. package/dist/components/ImagePreview/ImagePreview.types.d.ts +12 -0
  36. package/dist/components/ImagePreview/ImagePreview.types.d.ts.map +1 -0
  37. package/dist/components/ImagePreview/ImagePreview.types.js +3 -0
  38. package/dist/components/ImagePreview/ImagePreview.types.js.map +1 -0
  39. package/dist/components/ImagePreview/index.d.ts +3 -0
  40. package/dist/components/ImagePreview/index.d.ts.map +1 -0
  41. package/dist/components/ImagePreview/index.js +10 -0
  42. package/dist/components/ImagePreview/index.js.map +1 -0
  43. package/dist/components/index.d.ts +3 -0
  44. package/dist/components/index.d.ts.map +1 -1
  45. package/dist/components/index.js +3 -0
  46. package/dist/components/index.js.map +1 -1
  47. package/package.json +1 -1
package/README.md CHANGED
@@ -2,100 +2,158 @@
2
2
 
3
3
  A developer-first React Native component system.
4
4
 
5
- Prizmux gives you production-ready UI primitives that you actually own.
6
- No bloated UI kits. No locked abstractions. No fighting the framework.
5
+ > You should control your UI not your UI library.
7
6
 
8
- Just clean components you can copy, modify, and ship.
7
+ Prizmux gives you production-ready UI primitives with no bloated dependencies, no locked abstractions, and no fighting the framework. Just clean components you can copy, modify, and ship.
9
8
 
10
9
  ---
11
10
 
12
- ## Philosophy
11
+ ## Why Prizmux?
13
12
 
14
- Prizmux is built around a simple idea:
13
+ Most React Native UI libraries are over-opinionated, hard to override, and packed with unnecessary dependencies. Prizmux takes a different approach — lightweight, zero forced dependencies, and fully typed.
15
14
 
16
- > You should control your UI not your UI library.
15
+ Every component follows the same rule: **bring your own icons, images, and navigation**. The package never pulls in lucide, expo-image, expo-router, or any other third-party library on your behalf.
17
16
 
18
- Instead of installing a massive dependency that dictates how your app looks and behaves, Prizmux lets you bring components directly into your codebase.
17
+ ---
18
+
19
+ ## Components
20
+
21
+ ### Button
22
+ Variants, sizes, loading state, icon support (left or right), icon-only mode, and full accessibility out of the box.
23
+
24
+ ```tsx
25
+ <Button
26
+ title="Continue"
27
+ variant="filled"
28
+ size="medium"
29
+ borderRadius={8}
30
+ icon={<ArrowRight size={18} color="#fff" />}
31
+ iconPosition="right"
32
+ onPress={() => {}}
33
+ />
34
+ ```
19
35
 
20
- Edit them. Refactor them. Break them. Improve them.
36
+ ---
21
37
 
22
- They’re yours.
38
+ ### Card
39
+ Composable container with shadow and rounded corners. Put anything inside.
23
40
 
24
- The system is inspired by modern design-token and system-based approaches, but built specifically for real-world mobile apps.
41
+ ```tsx
42
+ <Card>
43
+ <Text>Hello world</Text>
44
+ </Card>
45
+ ```
25
46
 
26
47
  ---
27
48
 
28
- ## Why Prizmux?
29
-
30
- Most React Native UI libraries are:
49
+ ### BottomSheet
50
+ Swipeable sheet with drag handle, backdrop dismiss, and close button. Bring your own close icon.
51
+
52
+ ```tsx
53
+ <BottomSheet
54
+ visible={visible}
55
+ onClose={() => setVisible(false)}
56
+ title="Options"
57
+ closeIcon={<X size={16} color="#333" />}
58
+ >
59
+ <Text>Sheet content</Text>
60
+ </BottomSheet>
61
+ ```
31
62
 
32
- * Over-opinionated
33
- * Hard to override
34
- * Packed with unnecessary dependencies
35
- * Designed more for demos than production
63
+ ---
36
64
 
37
- Prizmux takes a different approach.
65
+ ### ImagePreview
66
+ Full screen image viewer with single image and gallery support. Bring your own nav icons.
67
+
68
+ ```tsx
69
+ <ImagePreview
70
+ visible={visible}
71
+ images={['https://...']}
72
+ onClose={() => setVisible(false)}
73
+ closeIcon={<X size={24} color="#fff" />}
74
+ prevIcon={<ChevronLeft size={32} color="#fff" />}
75
+ nextIcon={<ChevronRight size={32} color="#fff" />}
76
+ />
77
+ ```
38
78
 
39
- It’s lightweight.
40
- It scales with your system.
41
- It stays out of your way.
79
+ Trigger it by wrapping any image in a `Pressable`:
42
80
 
43
- You stay in control.
81
+ ```tsx
82
+ <Pressable onPress={() => setVisible(true)}>
83
+ <Image source={{ uri: '...' }} style={styles.avatar} />
84
+ </Pressable>
85
+ ```
44
86
 
45
87
  ---
46
88
 
47
- ## Core Components
89
+ ### HeaderWithBack
90
+ Navigation header with back button, optional avatar, optional title position, and up to 4 right-side action icons with badge support.
91
+
92
+ ```tsx
93
+ <HeaderWithBack
94
+ title="John Doe"
95
+ onBackPress={() => router.back()}
96
+ avatar={<Image source={{ uri: '...' }} style={{ width: 40, height: 40 }} />}
97
+ actions={[
98
+ { icon: <Bell size={22} color="#333" />, onPress: () => {}, badge: 3 },
99
+ { icon: <Phone size={22} color="#333" />, onPress: () => {} },
100
+ ]}
101
+ />
102
+ ```
103
+
104
+ ---
48
105
 
49
- * Button (variants, loading states, subtle animation)
50
- * Input (label, validation, secure support)
51
- * Card (composable structure)
52
- * Sheet / Modal (mobile-native UX)
53
- * Toast system
54
- * Theming & design tokens
55
- * Variant system
56
- * Dark mode support
57
- * Fully typed with TypeScript
106
+ ### EmptyState
107
+ Placeholder UI for empty lists or zero-data screens. Bring your own icon and action button.
108
+
109
+ ```tsx
110
+ <EmptyState
111
+ title="No bookings yet"
112
+ description="Start by booking a service."
113
+ icon={<CalendarX size={80} color="rgba(99,102,241,0.3)" />}
114
+ action={
115
+ <Button title="Book Now" variant="filled" onPress={() => {}} />
116
+ }
117
+ />
118
+ ```
58
119
 
59
120
  ---
60
121
 
61
122
  ## Architecture
62
123
 
63
- Prizmux follows a system-first structure:
64
-
65
124
  ```
66
125
  /components
67
- /ui
68
- button.tsx
69
- input.tsx
70
- card.tsx
71
-
72
- /lib
73
- theme.ts
74
- variants.ts
75
- cn.ts
126
+ /Button
127
+ Button.tsx
128
+ Button.types.ts
129
+ index.ts
130
+ /Card
131
+ Card.tsx
132
+ Card.types.ts
133
+ index.ts
134
+ /BottomSheet
135
+ BottomSheet.tsx
136
+ BottomSheet.types.ts
137
+ index.ts
138
+ /ImagePreview
139
+ ImagePreview.tsx
140
+ ImagePreview.types.ts
141
+ index.ts
142
+ /HeaderWithBack
143
+ HeaderWithBack.tsx
144
+ HeaderWithBack.types.ts
145
+ index.ts
146
+ /EmptyState
147
+ EmptyState.tsx
148
+ EmptyState.types.ts
149
+ index.ts
76
150
  ```
77
151
 
78
- Every component:
79
-
80
- * Reads from centralized design tokens
81
- * Supports variants
82
- * Is safe to edit directly
83
- * Is built for production, not playgrounds
84
-
85
152
  ---
86
153
 
87
- ## Theming
154
+ ## Design Decisions
88
155
 
89
- Design tokens live in one place:
90
-
91
- ```ts
92
- export const theme = {
93
- radius: 12,
94
- spacing: 8,
95
- colors: {
96
- primary: "#2563eb",
97
- background: "#0f172a",
98
- foreground: "#ffffff",
99
- },
100
- };
101
- ```
156
+ - **No icon library required** — every component that needs an icon accepts `ReactNode`. Pass lucide, react-native-vector-icons, an SVG, or a plain emoji.
157
+ - **No navigation dependency** — `HeaderWithBack` requires you to pass `onBackPress`. Use expo-router, react-navigation, or anything else.
158
+ - **No image library required** — `ImagePreview` and `HeaderWithBack` accept `ReactNode` for avatar/image slots. Use expo-image, the built-in RN Image, or anything you want.
159
+ - **Fully typed** every component ships with a `.types.ts` file.
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAgDlD,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAuFxC,CAAC"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AA2ClD,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA2GxC,CAAC"}
@@ -2,46 +2,40 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Button = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
- const colors_1 = require("../../theme/colors");
6
5
  const react_native_1 = require("react-native");
7
- // Button Configuration - All styles defined here for maintainability
8
6
  const BUTTON_CONFIG = {
9
7
  colors: {
10
- primary: colors_1.Colors.light.primary,
8
+ primary: '#6366F1',
11
9
  primaryDisabled: '#9CA3AF',
12
- outlineBorder: colors_1.Colors.light.primary,
10
+ outlineBorder: '#6366F1',
13
11
  outlineBorderDisabled: '#9CA3AF',
14
12
  text: {
15
13
  filled: '#FFFFFF',
16
- outline: colors_1.Colors.light.primary,
14
+ outline: '#6366F1',
17
15
  outlineDisabled: '#9CA3AF',
18
16
  },
19
- shadow: colors_1.Colors.light.primary,
17
+ shadow: '#6366F1',
20
18
  },
21
19
  sizes: {
22
20
  small: {
23
21
  paddingVertical: 10,
24
22
  paddingHorizontal: 16,
25
23
  fontSize: 14,
26
- iconSize: 16,
27
24
  gap: 6,
28
25
  },
29
26
  medium: {
30
27
  paddingVertical: 14,
31
28
  paddingHorizontal: 20,
32
29
  fontSize: 16,
33
- iconSize: 20,
34
30
  gap: 8,
35
31
  },
36
32
  large: {
37
33
  paddingVertical: 16,
38
34
  paddingHorizontal: 24,
39
35
  fontSize: 18,
40
- iconSize: 22,
41
36
  gap: 10,
42
37
  },
43
38
  },
44
- borderRadius: 12,
45
39
  shadow: {
46
40
  shadowOffset: { width: 0, height: 4 },
47
41
  shadowOpacity: 0.2,
@@ -49,55 +43,57 @@ const BUTTON_CONFIG = {
49
43
  elevation: 4,
50
44
  },
51
45
  };
52
- const Button = ({ title, variant = 'filled', size = 'medium', onPress, isLoading = false, disabled = false, style, textStyle, icon, iconPosition = 'left', fullWidth = false, }) => {
46
+ const Button = ({ title, variant = 'filled', size = 'medium', onPress, onLongPress, isLoading = false, disabled = false, style, contentStyle, textStyle, icon, iconPosition = 'left', fullWidth = false, borderRadius = 0, // default 12 — same as before, now overridable
47
+ hitSlop, accessibilityLabel, }) => {
53
48
  const isDisabled = disabled || isLoading;
54
49
  const sizeConfig = BUTTON_CONFIG.sizes[size];
55
50
  const isFilled = variant === 'filled';
56
- // Get base button style
57
51
  const getButtonStyle = () => {
58
52
  const baseStyle = isFilled ? styles.filledButton : styles.outlineButton;
59
53
  const sizeStyle = styles[`${size}Button`];
60
54
  const disabledStyle = isDisabled
61
- ? (isFilled ? styles.filledButtonDisabled : styles.outlineButtonDisabled)
55
+ ? isFilled
56
+ ? styles.filledButtonDisabled
57
+ : styles.outlineButtonDisabled
62
58
  : undefined;
63
59
  return [
64
60
  baseStyle,
65
61
  sizeStyle,
66
62
  disabledStyle,
67
63
  fullWidth && styles.fullWidth,
64
+ { borderRadius }, // applied from prop, not hardcoded
68
65
  style,
69
66
  ].filter(Boolean);
70
67
  };
71
- // Get text style
72
68
  const getTextStyle = () => {
73
- const baseTextStyle = isFilled ? styles.filledButtonText : styles.outlineButtonText;
69
+ const baseTextStyle = isFilled
70
+ ? styles.filledButtonText
71
+ : styles.outlineButtonText;
74
72
  const sizeTextStyle = styles[`${size}ButtonText`];
75
- const disabledTextStyle = isDisabled && !isFilled
76
- ? styles.outlineButtonTextDisabled
77
- : null;
78
- return [
79
- baseTextStyle,
80
- sizeTextStyle,
81
- disabledTextStyle,
82
- textStyle,
83
- ];
73
+ const disabledTextStyle = isDisabled && !isFilled ? styles.outlineButtonTextDisabled : null;
74
+ return [baseTextStyle, sizeTextStyle, disabledTextStyle, textStyle];
84
75
  };
85
- // Get loading indicator color
86
76
  const getLoadingColor = () => {
87
77
  if (isFilled)
88
78
  return BUTTON_CONFIG.colors.text.filled;
89
- return BUTTON_CONFIG.colors.text.outline;
79
+ return isDisabled
80
+ ? BUTTON_CONFIG.colors.text.outlineDisabled
81
+ : BUTTON_CONFIG.colors.text.outline;
90
82
  };
91
- return ((0, jsx_runtime_1.jsx)(react_native_1.Pressable, { style: getButtonStyle(), onPress: onPress, disabled: isDisabled, children: (0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.buttonContent, children: isLoading ? ((0, jsx_runtime_1.jsx)(react_native_1.ActivityIndicator, { size: "small", color: getLoadingColor() })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [icon && iconPosition === 'left' && ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: [styles.iconContainer, { marginRight: sizeConfig.gap }], children: icon })), title && ((0, jsx_runtime_1.jsx)(react_native_1.Text, { style: getTextStyle(), children: title })), icon && iconPosition === 'right' && ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: [styles.iconContainer, { marginLeft: sizeConfig.gap }], children: icon }))] })) }) }));
83
+ return ((0, jsx_runtime_1.jsx)(react_native_1.Pressable, { style: getButtonStyle(), onPress: onPress, onLongPress: onLongPress, disabled: isDisabled, hitSlop: hitSlop, accessibilityLabel: accessibilityLabel ?? title, accessibilityRole: "button", accessibilityState: { disabled: isDisabled, busy: isLoading }, children: (0, jsx_runtime_1.jsx)(react_native_1.View, { style: [styles.buttonContent, contentStyle], children: isLoading ? ((0, jsx_runtime_1.jsx)(react_native_1.ActivityIndicator, { size: "small", color: getLoadingColor() })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [icon && iconPosition === 'left' && ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: [
84
+ styles.iconContainer,
85
+ title ? { marginRight: sizeConfig.gap } : undefined,
86
+ ], children: icon })), title && ((0, jsx_runtime_1.jsx)(react_native_1.Text, { style: getTextStyle(), children: title })), icon && iconPosition === 'right' && ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: [
87
+ styles.iconContainer,
88
+ title ? { marginLeft: sizeConfig.gap } : undefined,
89
+ ], children: icon }))] })) }) }));
92
90
  };
93
91
  exports.Button = Button;
94
92
  const styles = react_native_1.StyleSheet.create({
95
- // Base Button Styles
96
93
  filledButton: {
97
94
  backgroundColor: BUTTON_CONFIG.colors.primary,
98
- borderRadius: BUTTON_CONFIG.borderRadius,
99
- alignItems: "center",
100
- justifyContent: "center",
95
+ alignItems: 'center',
96
+ justifyContent: 'center',
101
97
  shadowColor: BUTTON_CONFIG.colors.shadow,
102
98
  ...BUTTON_CONFIG.shadow,
103
99
  },
@@ -108,15 +104,13 @@ const styles = react_native_1.StyleSheet.create({
108
104
  outlineButton: {
109
105
  borderWidth: 2,
110
106
  borderColor: BUTTON_CONFIG.colors.outlineBorder,
111
- borderRadius: BUTTON_CONFIG.borderRadius,
112
107
  backgroundColor: 'transparent',
113
- alignItems: "center",
114
- justifyContent: "center",
108
+ alignItems: 'center',
109
+ justifyContent: 'center',
115
110
  },
116
111
  outlineButtonDisabled: {
117
112
  borderColor: BUTTON_CONFIG.colors.outlineBorderDisabled,
118
113
  },
119
- // Size Variants
120
114
  smallButton: {
121
115
  paddingVertical: BUTTON_CONFIG.sizes.small.paddingVertical,
122
116
  paddingHorizontal: BUTTON_CONFIG.sizes.small.paddingHorizontal,
@@ -129,14 +123,13 @@ const styles = react_native_1.StyleSheet.create({
129
123
  paddingVertical: BUTTON_CONFIG.sizes.large.paddingVertical,
130
124
  paddingHorizontal: BUTTON_CONFIG.sizes.large.paddingHorizontal,
131
125
  },
132
- // Text Styles
133
126
  filledButtonText: {
134
127
  color: BUTTON_CONFIG.colors.text.filled,
135
- fontWeight: "600",
128
+ fontWeight: '600',
136
129
  },
137
130
  outlineButtonText: {
138
131
  color: BUTTON_CONFIG.colors.text.outline,
139
- fontWeight: "600",
132
+ fontWeight: '600',
140
133
  },
141
134
  outlineButtonTextDisabled: {
142
135
  color: BUTTON_CONFIG.colors.text.outlineDisabled,
@@ -150,7 +143,6 @@ const styles = react_native_1.StyleSheet.create({
150
143
  largeButtonText: {
151
144
  fontSize: BUTTON_CONFIG.sizes.large.fontSize,
152
145
  },
153
- // Layout Styles
154
146
  buttonContent: {
155
147
  flexDirection: 'row',
156
148
  alignItems: 'center',
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/components/Button/Button.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/components/Button/Button.tsx"],"names":[],"mappings":"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"}
@@ -1,16 +1,21 @@
1
- import { ViewStyle, TextStyle } from 'react-native';
2
1
  import { ReactNode } from 'react';
2
+ import { ViewStyle, TextStyle } from 'react-native';
3
3
  export interface ButtonProps {
4
- title: string;
4
+ title?: string;
5
5
  onPress: () => void;
6
+ onLongPress?: () => void;
6
7
  variant?: 'filled' | 'outline';
7
8
  size?: 'small' | 'medium' | 'large';
8
9
  isLoading?: boolean;
10
+ disabled?: boolean;
9
11
  icon?: ReactNode;
10
12
  iconPosition?: 'left' | 'right';
11
- disabled?: boolean;
13
+ fullWidth?: boolean;
14
+ borderRadius?: number;
15
+ hitSlop?: number;
16
+ accessibilityLabel?: string;
12
17
  style?: ViewStyle;
18
+ contentStyle?: ViewStyle;
13
19
  textStyle?: TextStyle;
14
- fullWidth?: boolean;
15
20
  }
16
21
  //# sourceMappingURL=Button.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.types.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
1
+ {"version":3,"file":"Button.types.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { EmptyStateProps } from './EmptyState.types';
3
+ export declare const EmptyState: React.FC<EmptyStateProps>;
4
+ //# sourceMappingURL=EmptyState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../../src/components/EmptyState/EmptyState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAYhD,CAAC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EmptyState = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_native_1 = require("react-native");
6
+ const EmptyState = ({ title, description, icon, action, }) => ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.container, children: [icon && (0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.iconContainer, children: icon }), (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: styles.title, children: title }), (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: styles.description, children: description }), action && (0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.actionContainer, children: action })] }));
7
+ exports.EmptyState = EmptyState;
8
+ const styles = react_native_1.StyleSheet.create({
9
+ container: {
10
+ flex: 1,
11
+ justifyContent: 'center',
12
+ alignItems: 'center',
13
+ padding: 30,
14
+ backgroundColor: '#F9FAFB',
15
+ },
16
+ iconContainer: {
17
+ marginBottom: 20,
18
+ },
19
+ title: {
20
+ fontSize: 20,
21
+ fontWeight: '700',
22
+ color: '#111827',
23
+ marginBottom: 10,
24
+ textAlign: 'center',
25
+ },
26
+ description: {
27
+ fontSize: 15,
28
+ color: '#6B7280',
29
+ textAlign: 'center',
30
+ lineHeight: 22,
31
+ marginBottom: 30,
32
+ },
33
+ actionContainer: {
34
+ width: '100%',
35
+ },
36
+ });
37
+ //# sourceMappingURL=EmptyState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyState.js","sourceRoot":"","sources":["../../../src/components/EmptyState/EmptyState.tsx"],"names":[],"mappings":";;;;AACA,+CAAsD;AAG/C,MAAM,UAAU,GAA8B,CAAC,EACpD,KAAK,EACL,WAAW,EACX,IAAI,EACJ,MAAM,GACP,EAAE,EAAE,CAAC,CACJ,wBAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,aAC1B,IAAI,IAAI,uBAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,aAAa,YAAG,IAAI,GAAQ,EACzD,uBAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,YAAG,KAAK,GAAQ,EACzC,uBAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,WAAW,YAAG,WAAW,GAAQ,EACpD,MAAM,IAAI,uBAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,eAAe,YAAG,MAAM,GAAQ,IAC1D,CACR,CAAC;AAZW,QAAA,UAAU,cAYrB;AAEF,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,IAAI,EAAE,CAAC;QACP,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;QACpB,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,SAAS;KAC3B;IACD,aAAa,EAAE;QACb,YAAY,EAAE,EAAE;KACjB;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK;QACjB,KAAK,EAAE,SAAS;QAChB,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,QAAQ;KACpB;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,EAAE;KACjB;IACD,eAAe,EAAE;QACf,KAAK,EAAE,MAAM;KACd;CACF,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ReactNode } from 'react';
2
+ export interface EmptyStateProps {
3
+ title: string;
4
+ description: string;
5
+ icon?: ReactNode;
6
+ action?: ReactNode;
7
+ }
8
+ //# sourceMappingURL=EmptyState.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyState.types.d.ts","sourceRoot":"","sources":["../../../src/components/EmptyState/EmptyState.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=EmptyState.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyState.types.js","sourceRoot":"","sources":["../../../src/components/EmptyState/EmptyState.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export { EmptyState } from './EmptyState';
2
+ export type { EmptyStateProps } from './EmptyState.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/EmptyState/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EmptyState = void 0;
4
+ var EmptyState_1 = require("./EmptyState");
5
+ Object.defineProperty(exports, "EmptyState", { enumerable: true, get: function () { return EmptyState_1.EmptyState; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/EmptyState/index.ts"],"names":[],"mappings":";;;AAAA,2CAA0C;AAAjC,wGAAA,UAAU,OAAA"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { HeaderWithBackProps } from './HeaderWithBack.types';
3
+ export declare const HeaderWithBack: React.FC<HeaderWithBackProps>;
4
+ //# sourceMappingURL=HeaderWithBack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderWithBack.d.ts","sourceRoot":"","sources":["../../../src/components/HeaderWithBack/HeaderWithBack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA4DxD,CAAC"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HeaderWithBack = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_native_1 = require("react-native");
6
+ const HeaderWithBack = ({ title, avatar, titlePosition = 'center', onBackPress, backIcon, actions = [], }) => {
7
+ const titleStyle = titlePosition === 'left'
8
+ ? styles.titleLeft
9
+ : titlePosition === 'right'
10
+ ? styles.titleRight
11
+ : styles.titleCenter;
12
+ const visibleActions = actions.slice(0, 4);
13
+ return ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.header, children: [(0, jsx_runtime_1.jsx)(react_native_1.Pressable, { onPress: onBackPress, style: styles.backButton, android_ripple: { color: 'rgba(0, 0, 0, 0.1)' }, children: backIcon ?? (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: styles.backIcon, children: "\u2039" }) }), avatar && (0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.avatarContainer, children: avatar }), (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: [styles.title, titleStyle], numberOfLines: 1, children: title }), (0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.actionsContainer, children: visibleActions.map((action, index) => ((0, jsx_runtime_1.jsxs)(react_native_1.Pressable, { onPress: action.onPress, style: styles.actionButton, android_ripple: { color: 'rgba(0, 0, 0, 0.1)' }, children: [action.icon, action.badge !== undefined && ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.badge, children: (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: styles.badgeText, numberOfLines: 1, children: typeof action.badge === 'number' && action.badge > 99
14
+ ? '99+'
15
+ : action.badge }) }))] }, index))) })] }));
16
+ };
17
+ exports.HeaderWithBack = HeaderWithBack;
18
+ const styles = react_native_1.StyleSheet.create({
19
+ header: {
20
+ flexDirection: 'row',
21
+ alignItems: 'center',
22
+ paddingHorizontal: 8,
23
+ paddingVertical: 12,
24
+ backgroundColor: '#FFFFFF',
25
+ borderBottomWidth: 1,
26
+ borderBottomColor: '#E5E7EB',
27
+ },
28
+ backButton: {
29
+ width: 40,
30
+ height: 40,
31
+ borderRadius: 20,
32
+ backgroundColor: '#F3F4F6',
33
+ justifyContent: 'center',
34
+ alignItems: 'center',
35
+ },
36
+ backIcon: {
37
+ fontSize: 28,
38
+ color: '#111827',
39
+ lineHeight: 32,
40
+ fontWeight: '300',
41
+ },
42
+ avatarContainer: {
43
+ marginLeft: 6,
44
+ width: 40,
45
+ height: 40,
46
+ borderRadius: 20,
47
+ overflow: 'hidden',
48
+ justifyContent: 'center',
49
+ alignItems: 'center',
50
+ },
51
+ title: {
52
+ flex: 1,
53
+ fontSize: 18,
54
+ fontWeight: 'bold',
55
+ color: '#111827',
56
+ marginHorizontal: 8,
57
+ },
58
+ titleLeft: { textAlign: 'left' },
59
+ titleCenter: { textAlign: 'center' },
60
+ titleRight: { textAlign: 'right' },
61
+ actionsContainer: {
62
+ flexDirection: 'row',
63
+ alignItems: 'center',
64
+ gap: 4,
65
+ },
66
+ actionButton: {
67
+ width: 40,
68
+ height: 40,
69
+ borderRadius: 20,
70
+ justifyContent: 'center',
71
+ alignItems: 'center',
72
+ },
73
+ badge: {
74
+ position: 'absolute',
75
+ top: 4,
76
+ right: 4,
77
+ minWidth: 16,
78
+ height: 16,
79
+ borderRadius: 8,
80
+ backgroundColor: '#EF4444',
81
+ justifyContent: 'center',
82
+ alignItems: 'center',
83
+ paddingHorizontal: 3,
84
+ },
85
+ badgeText: {
86
+ fontSize: 10,
87
+ fontWeight: '700',
88
+ color: '#FFFFFF',
89
+ },
90
+ });
91
+ //# sourceMappingURL=HeaderWithBack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderWithBack.js","sourceRoot":"","sources":["../../../src/components/HeaderWithBack/HeaderWithBack.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from 'react';
2
+ export interface HeaderAction {
3
+ icon: ReactNode;
4
+ onPress: () => void;
5
+ badge?: number | string;
6
+ }
7
+ export interface HeaderWithBackProps {
8
+ title: string;
9
+ avatar?: ReactNode;
10
+ titlePosition?: 'left' | 'center' | 'right';
11
+ onBackPress: () => void;
12
+ backIcon?: ReactNode;
13
+ actions?: HeaderAction[];
14
+ }
15
+ //# sourceMappingURL=HeaderWithBack.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderWithBack.types.d.ts","sourceRoot":"","sources":["../../../src/components/HeaderWithBack/HeaderWithBack.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC5C,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=HeaderWithBack.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderWithBack.types.js","sourceRoot":"","sources":["../../../src/components/HeaderWithBack/HeaderWithBack.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export { HeaderWithBack } from './HeaderWithBack';
2
+ export type { HeaderWithBackProps, HeaderAction } from './HeaderWithBack.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/HeaderWithBack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HeaderWithBack = void 0;
4
+ var HeaderWithBack_1 = require("./HeaderWithBack");
5
+ Object.defineProperty(exports, "HeaderWithBack", { enumerable: true, get: function () { return HeaderWithBack_1.HeaderWithBack; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/HeaderWithBack/index.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAAzC,gHAAA,cAAc,OAAA"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { ImagePreviewProps } from './ImagePreview.types';
3
+ export declare const ImagePreview: React.FC<ImagePreviewProps>;
4
+ export default ImagePreview;
5
+ //# sourceMappingURL=ImagePreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImagePreview.d.ts","sourceRoot":"","sources":["../../../src/components/ImagePreview/ImagePreview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAa3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAQ9D,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAuLpD,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImagePreview = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const react_native_1 = require("react-native");
7
+ const { width: SCREEN_WIDTH, height: SCREEN_HEIGHT } = react_native_1.Dimensions.get('window');
8
+ const DefaultCloseIcon = () => (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: styles.defaultIcon, children: "\u2715" });
9
+ const DefaultPrevIcon = () => (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: styles.navIcon, children: "\u2039" });
10
+ const DefaultNextIcon = () => (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: styles.navIcon, children: "\u203A" });
11
+ const ImagePreview = ({ visible, images, initialIndex = 0, onClose, title, closeIcon, prevIcon, nextIcon, }) => {
12
+ const [currentIndex, setCurrentIndex] = (0, react_1.useState)(initialIndex);
13
+ // Only show loader if image takes more than 300ms — avoids flash for cached/fast images
14
+ const [loadingVisible, setLoadingVisible] = (0, react_1.useState)({});
15
+ const [imageErrors, setImageErrors] = (0, react_1.useState)({});
16
+ const loadTimers = (0, react_1.useRef)({});
17
+ const scrollViewRef = (0, react_1.useRef)(null);
18
+ const imageArray = Array.isArray(images) ? images : [images];
19
+ const hasMultipleImages = imageArray.length > 1;
20
+ const clearTimer = (index) => {
21
+ if (loadTimers.current[index]) {
22
+ clearTimeout(loadTimers.current[index]);
23
+ delete loadTimers.current[index];
24
+ }
25
+ };
26
+ (0, react_1.useEffect)(() => {
27
+ if (visible) {
28
+ setCurrentIndex(initialIndex);
29
+ setLoadingVisible({});
30
+ setImageErrors({});
31
+ if (hasMultipleImages && scrollViewRef.current) {
32
+ setTimeout(() => {
33
+ scrollViewRef.current?.scrollTo({
34
+ x: initialIndex * SCREEN_WIDTH,
35
+ animated: false,
36
+ });
37
+ }, 100);
38
+ }
39
+ }
40
+ else {
41
+ // Clear all pending timers on close
42
+ Object.keys(loadTimers.current).forEach((k) => clearTimer(Number(k)));
43
+ setLoadingVisible({});
44
+ setImageErrors({});
45
+ }
46
+ }, [visible, initialIndex, hasMultipleImages]);
47
+ const handleLoadStart = (index) => {
48
+ clearTimer(index);
49
+ // Only show spinner if image hasn't loaded within 300ms
50
+ loadTimers.current[index] = setTimeout(() => {
51
+ setLoadingVisible((prev) => ({ ...prev, [index]: true }));
52
+ }, 300);
53
+ };
54
+ const handleLoadEnd = (index) => {
55
+ clearTimer(index);
56
+ setLoadingVisible((prev) => ({ ...prev, [index]: false }));
57
+ };
58
+ const handleError = (index) => {
59
+ clearTimer(index);
60
+ setLoadingVisible((prev) => ({ ...prev, [index]: false }));
61
+ setImageErrors((prev) => ({ ...prev, [index]: true }));
62
+ };
63
+ const handleScroll = (event) => {
64
+ const index = Math.round(event.nativeEvent.contentOffset.x / SCREEN_WIDTH);
65
+ if (index !== currentIndex && index >= 0 && index < imageArray.length) {
66
+ setCurrentIndex(index);
67
+ }
68
+ };
69
+ const goToPrevious = () => {
70
+ if (currentIndex > 0) {
71
+ const newIndex = currentIndex - 1;
72
+ setCurrentIndex(newIndex);
73
+ scrollViewRef.current?.scrollTo({ x: newIndex * SCREEN_WIDTH, animated: true });
74
+ }
75
+ };
76
+ const goToNext = () => {
77
+ if (currentIndex < imageArray.length - 1) {
78
+ const newIndex = currentIndex + 1;
79
+ setCurrentIndex(newIndex);
80
+ scrollViewRef.current?.scrollTo({ x: newIndex * SCREEN_WIDTH, animated: true });
81
+ }
82
+ };
83
+ const renderImage = (uri, index) => ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.imageContainer, children: [(0, jsx_runtime_1.jsx)(react_native_1.Image, { source: { uri }, style: styles.image, resizeMode: "contain", onLoadStart: () => handleLoadStart(index), onLoad: () => handleLoadEnd(index), onError: () => handleError(index) }), loadingVisible[index] && ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.loaderOverlay, children: (0, jsx_runtime_1.jsx)(react_native_1.ActivityIndicator, { size: "large", color: "#FFFFFF" }) })), imageErrors[index] && ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.loaderOverlay, children: (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: styles.errorText, children: "Failed to load image" }) }))] }, index));
84
+ return ((0, jsx_runtime_1.jsx)(react_native_1.Modal, { visible: visible, transparent: true, animationType: "fade", onRequestClose: onClose, statusBarTranslucent: true, children: (0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.container, children: [(0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.header, children: [title && ((0, jsx_runtime_1.jsx)(react_native_1.Text, { style: styles.title, numberOfLines: 1, children: title })), hasMultipleImages && ((0, jsx_runtime_1.jsxs)(react_native_1.Text, { style: styles.counter, children: [currentIndex + 1, " / ", imageArray.length] })), (0, jsx_runtime_1.jsx)(react_native_1.Pressable, { style: styles.closeButton, onPress: onClose, children: closeIcon ?? (0, jsx_runtime_1.jsx)(DefaultCloseIcon, {}) })] }), hasMultipleImages ? ((0, jsx_runtime_1.jsx)(react_native_1.ScrollView, { ref: scrollViewRef, horizontal: true, pagingEnabled: true, showsHorizontalScrollIndicator: false, onScroll: handleScroll, scrollEventThrottle: 16, style: styles.scrollView, children: imageArray.map((uri, index) => renderImage(uri, index)) })) : (renderImage(imageArray[0] ?? '', 0)), hasMultipleImages && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [currentIndex > 0 && ((0, jsx_runtime_1.jsx)(react_native_1.TouchableOpacity, { style: [styles.navButton, styles.prevButton], onPress: goToPrevious, activeOpacity: 0.7, children: prevIcon ?? (0, jsx_runtime_1.jsx)(DefaultPrevIcon, {}) })), currentIndex < imageArray.length - 1 && ((0, jsx_runtime_1.jsx)(react_native_1.TouchableOpacity, { style: [styles.navButton, styles.nextButton], onPress: goToNext, activeOpacity: 0.7, children: nextIcon ?? (0, jsx_runtime_1.jsx)(DefaultNextIcon, {}) }))] }))] }) }));
85
+ };
86
+ exports.ImagePreview = ImagePreview;
87
+ exports.default = exports.ImagePreview;
88
+ const styles = react_native_1.StyleSheet.create({
89
+ container: {
90
+ flex: 1,
91
+ backgroundColor: 'rgba(0, 0, 0, 0.95)',
92
+ },
93
+ header: {
94
+ position: 'absolute',
95
+ top: 0,
96
+ left: 0,
97
+ right: 0,
98
+ flexDirection: 'row',
99
+ alignItems: 'center',
100
+ justifyContent: 'space-between',
101
+ paddingHorizontal: 20,
102
+ paddingTop: 50,
103
+ paddingBottom: 15,
104
+ zIndex: 10,
105
+ backgroundColor: 'rgba(0, 0, 0, 0.3)',
106
+ },
107
+ title: {
108
+ flex: 1,
109
+ fontSize: 18,
110
+ fontWeight: '600',
111
+ color: '#FFFFFF',
112
+ marginRight: 10,
113
+ },
114
+ counter: {
115
+ fontSize: 16,
116
+ fontWeight: '600',
117
+ color: '#FFFFFF',
118
+ marginRight: 15,
119
+ },
120
+ closeButton: {
121
+ width: 44,
122
+ height: 44,
123
+ borderRadius: 22,
124
+ backgroundColor: 'rgba(0, 0, 0, 0.5)',
125
+ justifyContent: 'center',
126
+ alignItems: 'center',
127
+ },
128
+ scrollView: {
129
+ flex: 1,
130
+ },
131
+ imageContainer: {
132
+ width: SCREEN_WIDTH,
133
+ height: SCREEN_HEIGHT,
134
+ justifyContent: 'center',
135
+ alignItems: 'center',
136
+ },
137
+ image: {
138
+ width: SCREEN_WIDTH,
139
+ height: SCREEN_HEIGHT,
140
+ },
141
+ loaderOverlay: {
142
+ ...react_native_1.StyleSheet.absoluteFillObject,
143
+ justifyContent: 'center',
144
+ alignItems: 'center',
145
+ },
146
+ errorText: {
147
+ fontSize: 16,
148
+ color: '#FFFFFF',
149
+ textAlign: 'center',
150
+ },
151
+ // Nav buttons — use top 50% + translateY(-half height) for true vertical centering
152
+ navButton: {
153
+ position: 'absolute',
154
+ top: '50%',
155
+ transform: [{ translateY: -25 }], // half of height (50) to truly center
156
+ width: 50,
157
+ height: 50,
158
+ borderRadius: 25,
159
+ backgroundColor: 'rgba(0, 0, 0, 0.5)',
160
+ justifyContent: 'center',
161
+ alignItems: 'center',
162
+ zIndex: 10,
163
+ },
164
+ prevButton: {
165
+ left: 16,
166
+ },
167
+ nextButton: {
168
+ right: 16,
169
+ },
170
+ defaultIcon: {
171
+ fontSize: 16,
172
+ color: '#FFFFFF',
173
+ fontWeight: '600',
174
+ },
175
+ navIcon: {
176
+ fontSize: 32,
177
+ color: '#FFFFFF',
178
+ fontWeight: '300',
179
+ lineHeight: 20,
180
+ marginBottom: 6, // visually center the arrow within the circle
181
+ },
182
+ });
183
+ //# sourceMappingURL=ImagePreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImagePreview.js","sourceRoot":"","sources":["../../../src/components/ImagePreview/ImagePreview.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { ReactNode } from 'react';
2
+ export interface ImagePreviewProps {
3
+ visible: boolean;
4
+ images: string | string[];
5
+ initialIndex?: number;
6
+ onClose: () => void;
7
+ title?: string;
8
+ closeIcon?: ReactNode;
9
+ prevIcon?: ReactNode;
10
+ nextIcon?: ReactNode;
11
+ }
12
+ //# sourceMappingURL=ImagePreview.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImagePreview.types.d.ts","sourceRoot":"","sources":["../../../src/components/ImagePreview/ImagePreview.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ImagePreview.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImagePreview.types.js","sourceRoot":"","sources":["../../../src/components/ImagePreview/ImagePreview.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export { default as ImagePreview, ImagePreview as ImagePreviewNamed } from './ImagePreview';
2
+ export type { ImagePreviewProps } from './ImagePreview.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ImagePreview/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,YAAY,IAAI,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC5F,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ImagePreviewNamed = exports.ImagePreview = void 0;
7
+ var ImagePreview_1 = require("./ImagePreview");
8
+ Object.defineProperty(exports, "ImagePreview", { enumerable: true, get: function () { return __importDefault(ImagePreview_1).default; } });
9
+ Object.defineProperty(exports, "ImagePreviewNamed", { enumerable: true, get: function () { return ImagePreview_1.ImagePreview; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ImagePreview/index.ts"],"names":[],"mappings":";;;;;;AAAA,+CAA4F;AAAnF,6HAAA,OAAO,OAAgB;AAAE,iHAAA,YAAY,OAAqB"}
@@ -1,4 +1,7 @@
1
1
  export * from './Button';
2
2
  export * from './Card';
3
3
  export * from './BottomSheet';
4
+ export * from './ImagePreview';
5
+ export * from './HeaderWithBack';
6
+ export * from './EmptyState';
4
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAC"}
@@ -17,4 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./Button"), exports);
18
18
  __exportStar(require("./Card"), exports);
19
19
  __exportStar(require("./BottomSheet"), exports);
20
+ __exportStar(require("./ImagePreview"), exports);
21
+ __exportStar(require("./HeaderWithBack"), exports);
22
+ __exportStar(require("./EmptyState"), exports);
20
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,yCAAuB;AACvB,gDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,yCAAuB;AACvB,gDAA8B;AAC9B,iDAA+B;AAC/B,mDAAgC;AAChC,+CAA6B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prizmux",
3
- "version": "1.1.4",
3
+ "version": "1.2.01",
4
4
  "description": "A smooth and modern UI component library for React Native",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",