prizmux 1.4.4 → 1.4.6
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.
- package/README.md +8 -2
- package/dist/components/ContextMenu/ContextMenu.d.ts +34 -0
- package/dist/components/ContextMenu/ContextMenu.d.ts.map +1 -0
- package/dist/components/ContextMenu/ContextMenu.js +114 -0
- package/dist/components/ContextMenu/ContextMenu.js.map +1 -0
- package/dist/components/ContextMenu/ContextMenu.types.d.ts +43 -0
- package/dist/components/ContextMenu/ContextMenu.types.d.ts.map +1 -0
- package/dist/components/ContextMenu/ContextMenu.types.js +3 -0
- package/dist/components/ContextMenu/ContextMenu.types.js.map +1 -0
- package/dist/components/ContextMenu/index.d.ts +3 -0
- package/dist/components/ContextMenu/index.d.ts.map +1 -0
- package/dist/components/ContextMenu/index.js +7 -0
- package/dist/components/ContextMenu/index.js.map +1 -0
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -28,14 +28,14 @@ npm install prizmux
|
|
|
28
28
|
| -------------- | ------------------------------------------------------------------------------------- |
|
|
29
29
|
| `Alert` | Customizable modal alert — bring your own buttons |
|
|
30
30
|
| `BottomSheet` | Swipeable sheet with drag handle and backdrop dismiss |
|
|
31
|
-
| `Button` | Variants, sizes, loading state, icon support, full
|
|
31
|
+
| `Button` | Variants, sizes, loading state, icon support, full with touch feed back |
|
|
32
32
|
| `Card` | Composable container, put anything inside |
|
|
33
33
|
| `EmptyState` | Placeholder UI for empty lists and zero-data screens |
|
|
34
34
|
| `FAB` | Floating action button with icon, label, or both |
|
|
35
35
|
| `Header` | Navigation header with or without a back button, avatar, and action icons with badges |
|
|
36
36
|
| `ImagePreview` | Full screen image viewer with gallery support |
|
|
37
37
|
| `PhoneInput` | International phone input with searchable country picker and auto-detection |
|
|
38
|
-
| `
|
|
38
|
+
| `ContextMenu` | Collapsible navigation panel with customizable items, icons, and active states |
|
|
39
39
|
| `Toast` | Auto, manual, and swipe-to-dismiss notifications |
|
|
40
40
|
|
|
41
41
|
---
|
|
@@ -50,6 +50,12 @@ npm install prizmux
|
|
|
50
50
|
|
|
51
51
|
---
|
|
52
52
|
|
|
53
|
+
Contact
|
|
54
|
+
|
|
55
|
+
Have questions, suggestions, or just want to say hi? Reach out via email:
|
|
56
|
+
|
|
57
|
+
📧 contecfy@gmail.com
|
|
58
|
+
|
|
53
59
|
## License
|
|
54
60
|
|
|
55
61
|
MIT
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ViewStyle, TextStyle } from 'react-native';
|
|
3
|
+
export type MenuItem = {
|
|
4
|
+
id: string;
|
|
5
|
+
title: string;
|
|
6
|
+
icon?: React.ReactNode;
|
|
7
|
+
onPress: () => void;
|
|
8
|
+
badge?: number | string;
|
|
9
|
+
badgeColor?: string;
|
|
10
|
+
};
|
|
11
|
+
export interface ContextMenuProps {
|
|
12
|
+
visible: boolean;
|
|
13
|
+
onClose: () => void;
|
|
14
|
+
items: MenuItem[];
|
|
15
|
+
position?: {
|
|
16
|
+
top?: number;
|
|
17
|
+
left?: number;
|
|
18
|
+
right?: number;
|
|
19
|
+
bottom?: number;
|
|
20
|
+
};
|
|
21
|
+
backgroundColor?: string;
|
|
22
|
+
borderRadius?: number;
|
|
23
|
+
itemTextColor?: string;
|
|
24
|
+
itemStyle?: ViewStyle;
|
|
25
|
+
itemTextStyle?: TextStyle;
|
|
26
|
+
badgeStyle?: ViewStyle;
|
|
27
|
+
badgeTextStyle?: TextStyle;
|
|
28
|
+
showIconBackground?: boolean;
|
|
29
|
+
iconBackgroundColor?: string;
|
|
30
|
+
iconBorderRadius?: number;
|
|
31
|
+
animation?: 'fade' | 'scale' | 'fade-scale' | 'none';
|
|
32
|
+
}
|
|
33
|
+
export declare const ContextMenu: React.FC<ContextMenuProps>;
|
|
34
|
+
//# sourceMappingURL=ContextMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../../src/components/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,EAOL,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,MAAM,CAAC;CACtD;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAmHlD,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContextMenu = 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 ContextMenu = ({ visible, onClose, items, position = { top: 40, right: 16 }, backgroundColor = '#fff', borderRadius = 8, itemTextColor = '#111827', itemStyle, itemTextStyle, badgeStyle, badgeTextStyle, showIconBackground = false, iconBackgroundColor = 'rgba(0,0,0,0.06)', iconBorderRadius = 6, animation = 'fade-scale', // default
|
|
8
|
+
}) => {
|
|
9
|
+
const opacity = (0, react_1.useRef)(new react_native_1.Animated.Value(animation === 'fade' || animation === 'fade-scale' ? 0 : 1)).current;
|
|
10
|
+
const scale = (0, react_1.useRef)(new react_native_1.Animated.Value(animation === 'scale' || animation === 'fade-scale' ? 0.8 : 1)).current;
|
|
11
|
+
(0, react_1.useEffect)(() => {
|
|
12
|
+
if (visible) {
|
|
13
|
+
if (animation === 'none') {
|
|
14
|
+
opacity.setValue(1);
|
|
15
|
+
scale.setValue(1);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
const anims = [];
|
|
19
|
+
if (animation === 'fade' || animation === 'fade-scale') {
|
|
20
|
+
anims.push(react_native_1.Animated.timing(opacity, { toValue: 1, duration: 150, useNativeDriver: true }));
|
|
21
|
+
}
|
|
22
|
+
if (animation === 'scale' || animation === 'fade-scale') {
|
|
23
|
+
anims.push(react_native_1.Animated.spring(scale, { toValue: 1, friction: 6, useNativeDriver: true }));
|
|
24
|
+
}
|
|
25
|
+
react_native_1.Animated.parallel(anims).start();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
if (animation === 'none') {
|
|
30
|
+
opacity.setValue(0);
|
|
31
|
+
scale.setValue(0);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const anims = [];
|
|
35
|
+
if (animation === 'fade' || animation === 'fade-scale') {
|
|
36
|
+
anims.push(react_native_1.Animated.timing(opacity, { toValue: 0, duration: 100, useNativeDriver: true }));
|
|
37
|
+
}
|
|
38
|
+
if (animation === 'scale' || animation === 'fade-scale') {
|
|
39
|
+
anims.push(react_native_1.Animated.timing(scale, { toValue: 0.8, duration: 100, useNativeDriver: true }));
|
|
40
|
+
}
|
|
41
|
+
react_native_1.Animated.parallel(anims).start();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}, [visible, animation]);
|
|
45
|
+
if (!visible)
|
|
46
|
+
return null;
|
|
47
|
+
return ((0, jsx_runtime_1.jsx)(react_native_1.TouchableWithoutFeedback, { onPress: onClose, children: (0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.overlay, children: (0, jsx_runtime_1.jsx)(react_native_1.Animated.View, { style: [
|
|
48
|
+
styles.menuContainer,
|
|
49
|
+
position,
|
|
50
|
+
{ backgroundColor, borderRadius, opacity, transform: [{ scale }] },
|
|
51
|
+
], children: items.map((item) => ((0, jsx_runtime_1.jsx)(react_native_1.Pressable, { style: ({ pressed }) => [
|
|
52
|
+
styles.menuItem,
|
|
53
|
+
pressed && { backgroundColor: 'rgba(0,0,0,0.05)' },
|
|
54
|
+
itemStyle,
|
|
55
|
+
], onPress: () => {
|
|
56
|
+
onClose();
|
|
57
|
+
setTimeout(() => item.onPress(), 150);
|
|
58
|
+
}, children: (0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.itemContent, children: [item.icon && ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: [
|
|
59
|
+
showIconBackground && {
|
|
60
|
+
width: 32,
|
|
61
|
+
height: 32,
|
|
62
|
+
borderRadius: iconBorderRadius,
|
|
63
|
+
backgroundColor: iconBackgroundColor,
|
|
64
|
+
alignItems: 'center',
|
|
65
|
+
justifyContent: 'center',
|
|
66
|
+
},
|
|
67
|
+
], children: item.icon })), (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: [{ color: itemTextColor }, itemTextStyle], children: item.title }), item.badge !== undefined && ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: [
|
|
68
|
+
styles.badge,
|
|
69
|
+
badgeStyle,
|
|
70
|
+
item.badgeColor && { backgroundColor: item.badgeColor },
|
|
71
|
+
], children: (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: [styles.badgeText, badgeTextStyle], children: typeof item.badge === 'number' && item.badge > 99 ? '99+' : item.badge }) }))] }) }, item.id))) }) }) }));
|
|
72
|
+
};
|
|
73
|
+
exports.ContextMenu = ContextMenu;
|
|
74
|
+
const styles = react_native_1.StyleSheet.create({
|
|
75
|
+
overlay: { ...react_native_1.StyleSheet.absoluteFillObject },
|
|
76
|
+
menuContainer: {
|
|
77
|
+
position: 'absolute',
|
|
78
|
+
paddingVertical: 8,
|
|
79
|
+
minWidth: 160,
|
|
80
|
+
shadowColor: '#000',
|
|
81
|
+
shadowOffset: { width: 0, height: 4 },
|
|
82
|
+
shadowOpacity: 0.15,
|
|
83
|
+
shadowRadius: 8,
|
|
84
|
+
elevation: 8,
|
|
85
|
+
},
|
|
86
|
+
menuItem: {
|
|
87
|
+
paddingHorizontal: 12,
|
|
88
|
+
paddingVertical: 10,
|
|
89
|
+
flexDirection: 'row',
|
|
90
|
+
alignItems: 'center',
|
|
91
|
+
gap: 10,
|
|
92
|
+
},
|
|
93
|
+
itemContent: {
|
|
94
|
+
flexDirection: 'row',
|
|
95
|
+
alignItems: 'center',
|
|
96
|
+
gap: 10,
|
|
97
|
+
flex: 1,
|
|
98
|
+
},
|
|
99
|
+
badge: {
|
|
100
|
+
minWidth: 20,
|
|
101
|
+
height: 20,
|
|
102
|
+
borderRadius: 10,
|
|
103
|
+
backgroundColor: '#6B7280',
|
|
104
|
+
alignItems: 'center',
|
|
105
|
+
justifyContent: 'center',
|
|
106
|
+
paddingHorizontal: 6,
|
|
107
|
+
},
|
|
108
|
+
badgeText: {
|
|
109
|
+
color: '#fff',
|
|
110
|
+
fontSize: 11,
|
|
111
|
+
fontWeight: '700',
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
//# sourceMappingURL=ContextMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextMenu.js","sourceRoot":"","sources":["../../../src/components/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { TextStyle, ViewStyle } from 'react-native';
|
|
3
|
+
export interface ContextMenuItem {
|
|
4
|
+
id: string;
|
|
5
|
+
title: string;
|
|
6
|
+
icon?: ReactNode;
|
|
7
|
+
onPress: () => void;
|
|
8
|
+
badge?: number | string;
|
|
9
|
+
badgeColor?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ContextMenuProps {
|
|
12
|
+
/** Show/hide the menu */
|
|
13
|
+
visible: boolean;
|
|
14
|
+
onClose: () => void;
|
|
15
|
+
/** Menu items */
|
|
16
|
+
items: ContextMenuItem[];
|
|
17
|
+
/** Position relative to the parent or screen */
|
|
18
|
+
position?: {
|
|
19
|
+
top?: number;
|
|
20
|
+
left?: number;
|
|
21
|
+
right?: number;
|
|
22
|
+
bottom?: number;
|
|
23
|
+
};
|
|
24
|
+
/** Menu appearance */
|
|
25
|
+
backgroundColor?: string;
|
|
26
|
+
borderRadius?: number;
|
|
27
|
+
/** Item text styling */
|
|
28
|
+
itemTextColor?: string;
|
|
29
|
+
itemStyle?: ViewStyle;
|
|
30
|
+
itemTextStyle?: TextStyle;
|
|
31
|
+
/** Badge styling */
|
|
32
|
+
badgeStyle?: ViewStyle;
|
|
33
|
+
badgeTextStyle?: TextStyle;
|
|
34
|
+
/** Icon styling */
|
|
35
|
+
showIconBackground?: boolean;
|
|
36
|
+
iconBackgroundColor?: string;
|
|
37
|
+
iconBorderRadius?: number;
|
|
38
|
+
/** Animation for showing/hiding the menu */
|
|
39
|
+
animation?: 'fade' | 'scale' | 'fade-scale' | 'none';
|
|
40
|
+
/** Optional shadow */
|
|
41
|
+
shadow?: boolean;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=ContextMenu.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextMenu.types.d.ts","sourceRoot":"","sources":["../../../src/components/ContextMenu/ContextMenu.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,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,yBAAyB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,iBAAiB;IACjB,KAAK,EAAE,eAAe,EAAE,CAAC;IAEzB,gDAAgD;IAChD,QAAQ,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAE5E,sBAAsB;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,wBAAwB;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,SAAS,CAAC;IAE1B,oBAAoB;IACpB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,cAAc,CAAC,EAAE,SAAS,CAAC;IAE3B,mBAAmB;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,MAAM,CAAC;IAErD,sBAAsB;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextMenu.types.js","sourceRoot":"","sources":["../../../src/components/ContextMenu/ContextMenu.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ContextMenu/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAG,eAAe,EAAG,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContextMenu = void 0;
|
|
4
|
+
// Re-export the new ContextMenu as Sidebar for backwards compatibility
|
|
5
|
+
var ContextMenu_1 = require("./ContextMenu");
|
|
6
|
+
Object.defineProperty(exports, "ContextMenu", { enumerable: true, get: function () { return ContextMenu_1.ContextMenu; } });
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ContextMenu/index.ts"],"names":[],"mappings":";;;AAAA,uEAAuE;AACvE,6CAA4C;AAAnC,0GAAA,WAAW,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
|
package/dist/components/index.js
CHANGED
|
@@ -23,6 +23,6 @@ __exportStar(require("./Fab"), exports);
|
|
|
23
23
|
__exportStar(require("./Header"), exports);
|
|
24
24
|
__exportStar(require("./ImagePreview"), exports);
|
|
25
25
|
__exportStar(require("./PhoneInput"), exports);
|
|
26
|
-
__exportStar(require("./
|
|
26
|
+
__exportStar(require("./ContextMenu"), exports);
|
|
27
27
|
__exportStar(require("./Toast"), exports);
|
|
28
28
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,gDAA8B;AAC9B,2CAAyB;AACzB,yCAAuB;AACvB,+CAA6B;AAC7B,wCAAsB;AACtB,2CAAyB;AACzB,iDAA+B;AAC/B,+CAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,gDAA8B;AAC9B,2CAAyB;AACzB,yCAAuB;AACvB,+CAA6B;AAC7B,wCAAsB;AACtB,2CAAyB;AACzB,iDAA+B;AAC/B,+CAA6B;AAC7B,gDAA8B;AAC9B,0CAAwB"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
1
|
export type { ButtonProps } from '../components/Button';
|
|
2
2
|
export type { CardProps } from '../components/Card';
|
|
3
|
+
export type { EmptyStateProps } from '../components/EmptyState';
|
|
4
|
+
export type { FABProps } from '../components/Fab';
|
|
5
|
+
export type { HeaderProps } from '../components/Header';
|
|
6
|
+
export type { ImagePreviewProps } from '../components/ImagePreview';
|
|
7
|
+
export type { PhoneInputProps } from '../components/PhoneInput';
|
|
8
|
+
export type { ToastProps } from '../components/Toast';
|
|
9
|
+
export type { BottomSheetProps } from '../components/BottomSheet';
|
|
10
|
+
export type { AlertProps } from '../components/Alert';
|
|
11
|
+
export type { ContextMenuProps, ContextMenuItem } from '../components/ContextMenu';
|
|
3
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC"}
|