@forthtilliath/react-native-kit 0.12.0 → 0.13.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.
- package/LICENSE +21 -21
- package/README.md +701 -604
- package/dist/components/list/ColorDot.d.ts +57 -0
- package/dist/components/list/ColorDot.d.ts.map +1 -0
- package/dist/components/list/ColorDot.js +48 -0
- package/dist/components/list/UndoToast.d.ts +100 -0
- package/dist/components/list/UndoToast.d.ts.map +1 -0
- package/dist/components/list/UndoToast.js +104 -0
- package/dist/components/list/index.d.ts +2 -0
- package/dist/components/list/index.d.ts.map +1 -1
- package/dist/components/list/index.js +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/package.json +2 -2
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { StyleProp, ViewStyle } from "react-native";
|
|
2
|
+
export interface ColorDotProps {
|
|
3
|
+
/**
|
|
4
|
+
* Dot color, as any React Native color string (`"#ef4444"`, `"tomato"`,
|
|
5
|
+
* `"rgba(0,0,0,0.5)"`…). When `undefined`, the component renders `null` —
|
|
6
|
+
* so an optional field can be passed straight through:
|
|
7
|
+
* `<ColorDot color={category.color} />`.
|
|
8
|
+
*/
|
|
9
|
+
color?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Diameter in px. The dot is always a perfect circle
|
|
12
|
+
* (`borderRadius = size / 2`).
|
|
13
|
+
*
|
|
14
|
+
* @defaultValue 10
|
|
15
|
+
*/
|
|
16
|
+
size?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Extra style merged after the computed `{ width, height, borderRadius,
|
|
19
|
+
* backgroundColor }`. Use it for spacing (`marginRight`), a border, or to
|
|
20
|
+
* override the shape.
|
|
21
|
+
*/
|
|
22
|
+
style?: StyleProp<ViewStyle>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A small round color swatch — the coloured bullet next to a category, a
|
|
26
|
+
* team, a tag, or a status.
|
|
27
|
+
*
|
|
28
|
+
* It renders **nothing** when `color` is `undefined`, which is the whole
|
|
29
|
+
* point: list rows can bind an optional color field without wrapping the dot
|
|
30
|
+
* in `{category.color && ...}` at every call site.
|
|
31
|
+
*
|
|
32
|
+
* @example Basic usage
|
|
33
|
+
* ```tsx
|
|
34
|
+
* import { ColorDot } from "@forthtilliath/react-native-kit/components/list/ColorDot";
|
|
35
|
+
*
|
|
36
|
+
* <View style={{ flexDirection: "row", alignItems: "center", gap: 8 }}>
|
|
37
|
+
* <ColorDot color="#ef4444" />
|
|
38
|
+
* <Text>Urgent</Text>
|
|
39
|
+
* </View>;
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @example Optional color (renders nothing when the category has none)
|
|
43
|
+
* ```tsx
|
|
44
|
+
* <ColorDot color={category.color} size={12} />
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @example Custom size and a subtle ring
|
|
48
|
+
* ```tsx
|
|
49
|
+
* <ColorDot
|
|
50
|
+
* color={team.color}
|
|
51
|
+
* size={16}
|
|
52
|
+
* style={{ borderWidth: 1, borderColor: "rgba(0,0,0,0.15)" }}
|
|
53
|
+
* />
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function ColorDot({ color, size, style }: ColorDotProps): import("react").JSX.Element | null;
|
|
57
|
+
//# sourceMappingURL=ColorDot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorDot.d.ts","sourceRoot":"","sources":["../../../src/components/list/ColorDot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAmB,EAAE,KAAK,EAAE,EAAE,aAAa,sCAe5E"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { View } from "react-native";
|
|
3
|
+
const DEFAULT_SIZE = 10;
|
|
4
|
+
/**
|
|
5
|
+
* A small round color swatch — the coloured bullet next to a category, a
|
|
6
|
+
* team, a tag, or a status.
|
|
7
|
+
*
|
|
8
|
+
* It renders **nothing** when `color` is `undefined`, which is the whole
|
|
9
|
+
* point: list rows can bind an optional color field without wrapping the dot
|
|
10
|
+
* in `{category.color && ...}` at every call site.
|
|
11
|
+
*
|
|
12
|
+
* @example Basic usage
|
|
13
|
+
* ```tsx
|
|
14
|
+
* import { ColorDot } from "@forthtilliath/react-native-kit/components/list/ColorDot";
|
|
15
|
+
*
|
|
16
|
+
* <View style={{ flexDirection: "row", alignItems: "center", gap: 8 }}>
|
|
17
|
+
* <ColorDot color="#ef4444" />
|
|
18
|
+
* <Text>Urgent</Text>
|
|
19
|
+
* </View>;
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @example Optional color (renders nothing when the category has none)
|
|
23
|
+
* ```tsx
|
|
24
|
+
* <ColorDot color={category.color} size={12} />
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @example Custom size and a subtle ring
|
|
28
|
+
* ```tsx
|
|
29
|
+
* <ColorDot
|
|
30
|
+
* color={team.color}
|
|
31
|
+
* size={16}
|
|
32
|
+
* style={{ borderWidth: 1, borderColor: "rgba(0,0,0,0.15)" }}
|
|
33
|
+
* />
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export function ColorDot({ color, size = DEFAULT_SIZE, style }) {
|
|
37
|
+
if (!color)
|
|
38
|
+
return null;
|
|
39
|
+
return (_jsx(View, { style: [
|
|
40
|
+
{
|
|
41
|
+
width: size,
|
|
42
|
+
height: size,
|
|
43
|
+
borderRadius: size / 2,
|
|
44
|
+
backgroundColor: color,
|
|
45
|
+
},
|
|
46
|
+
style,
|
|
47
|
+
] }));
|
|
48
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { StyleProp, TextStyle, ViewStyle } from "react-native";
|
|
2
|
+
/**
|
|
3
|
+
* Per-slot style overrides for {@link UndoToast}. Every field is optional and
|
|
4
|
+
* is **merged after** the matching default (as a style array), so overriding
|
|
5
|
+
* one property (say `toast.backgroundColor`) keeps the rest of the default
|
|
6
|
+
* for that slot — the positioning, padding, and shadow don't disappear.
|
|
7
|
+
*/
|
|
8
|
+
export interface UndoToastStyles {
|
|
9
|
+
/** The floating bar container (absolute-positioned, near the bottom). */
|
|
10
|
+
toast?: StyleProp<ViewStyle>;
|
|
11
|
+
/** The message text on the left. Truncated to a single line. */
|
|
12
|
+
message?: StyleProp<TextStyle>;
|
|
13
|
+
/** The action label on the right (the tappable "Undo"). */
|
|
14
|
+
action?: StyleProp<TextStyle>;
|
|
15
|
+
}
|
|
16
|
+
export interface UndoToastProps {
|
|
17
|
+
/**
|
|
18
|
+
* What just happened, phrased in the past tense — e.g.
|
|
19
|
+
* `"« Marie » supprimée"` or `"1 item deleted"`. Rendered on a
|
|
20
|
+
* single line and truncated with an ellipsis if too long.
|
|
21
|
+
*/
|
|
22
|
+
message: string;
|
|
23
|
+
/**
|
|
24
|
+
* Label of the action button.
|
|
25
|
+
*
|
|
26
|
+
* @defaultValue "Undo"
|
|
27
|
+
*/
|
|
28
|
+
actionLabel?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Called when the action button is tapped. Wire this to your reverse-the-
|
|
31
|
+
* change logic (restore the row, re-insert the item…). The host is
|
|
32
|
+
* responsible for hiding the toast afterwards.
|
|
33
|
+
*/
|
|
34
|
+
onAction: () => void;
|
|
35
|
+
/** Per-slot style overrides — see {@link UndoToastStyles}. */
|
|
36
|
+
styles?: UndoToastStyles;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* A bottom-of-screen snackbar for **undoing an action that already
|
|
40
|
+
* happened** — the counterpart to a delete that runs immediately with no
|
|
41
|
+
* confirmation dialog (for instance a {@link SwipeToDeleteRow} swipe).
|
|
42
|
+
*
|
|
43
|
+
* `UndoToast` is presentational only: it does not time itself out, animate
|
|
44
|
+
* in/out, or stack. The host owns that — typically a piece of state holding
|
|
45
|
+
* the "pending undo" payload, a `setTimeout` that commits the change for
|
|
46
|
+
* good, and an exit animation. This keeps the component free of any
|
|
47
|
+
* animation-library or timer opinions.
|
|
48
|
+
*
|
|
49
|
+
* The default look is a dark floating bar, readable on both light and dark
|
|
50
|
+
* backgrounds. Re-theme it through {@link UndoToastProps.styles}.
|
|
51
|
+
*
|
|
52
|
+
* @example Minimal
|
|
53
|
+
* ```tsx
|
|
54
|
+
* import { UndoToast } from "@forthtilliath/react-native-kit/components/list/UndoToast";
|
|
55
|
+
*
|
|
56
|
+
* {recentlyDeleted && (
|
|
57
|
+
* <UndoToast
|
|
58
|
+
* message={`"${recentlyDeleted.name}" deleted`}
|
|
59
|
+
* onAction={restoreLast}
|
|
60
|
+
* />
|
|
61
|
+
* )}
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* @example Full pattern — auto-commit after 5s, localized label, themed
|
|
65
|
+
* ```tsx
|
|
66
|
+
* const [pending, setPending] = useState<Employee | null>(null);
|
|
67
|
+
*
|
|
68
|
+
* function remove(employee: Employee) {
|
|
69
|
+
* setEmployees((list) => list.filter((e) => e.id !== employee.id));
|
|
70
|
+
* setPending(employee);
|
|
71
|
+
* }
|
|
72
|
+
*
|
|
73
|
+
* useEffect(() => {
|
|
74
|
+
* if (!pending) return;
|
|
75
|
+
* const id = setTimeout(() => {
|
|
76
|
+
* db.deleteEmployee(pending.id); // point of no return
|
|
77
|
+
* setPending(null);
|
|
78
|
+
* }, 5000);
|
|
79
|
+
* return () => clearTimeout(id);
|
|
80
|
+
* }, [pending]);
|
|
81
|
+
*
|
|
82
|
+
* {pending && (
|
|
83
|
+
* <UndoToast
|
|
84
|
+
* message={`« ${pending.name} » supprimé`}
|
|
85
|
+
* actionLabel="Annuler"
|
|
86
|
+
* onAction={() => {
|
|
87
|
+
* setEmployees((list) => [...list, pending]);
|
|
88
|
+
* setPending(null);
|
|
89
|
+
* }}
|
|
90
|
+
* styles={{
|
|
91
|
+
* toast: { backgroundColor: colors.inverseSurface },
|
|
92
|
+
* message: { color: colors.inverseOnSurface },
|
|
93
|
+
* action: { color: colors.inversePrimary },
|
|
94
|
+
* }}
|
|
95
|
+
* />
|
|
96
|
+
* )}
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export declare function UndoToast({ message, actionLabel, onAction, styles, }: UndoToastProps): import("react").JSX.Element;
|
|
100
|
+
//# sourceMappingURL=UndoToast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UndoToast.d.ts","sourceRoot":"","sources":["../../../src/components/list/UndoToast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpE;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,gEAAgE;IAChE,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAkCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,WAAoB,EACpB,QAAQ,EACR,MAAM,GACP,EAAE,cAAc,+BAmBhB"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Pressable, Text, View } from "react-native";
|
|
3
|
+
const defaultStyles = {
|
|
4
|
+
toast: {
|
|
5
|
+
position: "absolute",
|
|
6
|
+
left: 16,
|
|
7
|
+
right: 16,
|
|
8
|
+
bottom: 24,
|
|
9
|
+
flexDirection: "row",
|
|
10
|
+
alignItems: "center",
|
|
11
|
+
justifyContent: "space-between",
|
|
12
|
+
gap: 12,
|
|
13
|
+
paddingVertical: 14,
|
|
14
|
+
paddingHorizontal: 16,
|
|
15
|
+
borderRadius: 8,
|
|
16
|
+
backgroundColor: "#1f1f1f",
|
|
17
|
+
elevation: 4,
|
|
18
|
+
shadowColor: "#000000",
|
|
19
|
+
shadowOpacity: 0.3,
|
|
20
|
+
shadowRadius: 6,
|
|
21
|
+
shadowOffset: { width: 0, height: 2 },
|
|
22
|
+
},
|
|
23
|
+
message: {
|
|
24
|
+
flex: 1,
|
|
25
|
+
color: "#ffffff",
|
|
26
|
+
fontSize: 14,
|
|
27
|
+
},
|
|
28
|
+
action: {
|
|
29
|
+
color: "#7cc0ff",
|
|
30
|
+
fontWeight: "700",
|
|
31
|
+
fontSize: 14,
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* A bottom-of-screen snackbar for **undoing an action that already
|
|
36
|
+
* happened** — the counterpart to a delete that runs immediately with no
|
|
37
|
+
* confirmation dialog (for instance a {@link SwipeToDeleteRow} swipe).
|
|
38
|
+
*
|
|
39
|
+
* `UndoToast` is presentational only: it does not time itself out, animate
|
|
40
|
+
* in/out, or stack. The host owns that — typically a piece of state holding
|
|
41
|
+
* the "pending undo" payload, a `setTimeout` that commits the change for
|
|
42
|
+
* good, and an exit animation. This keeps the component free of any
|
|
43
|
+
* animation-library or timer opinions.
|
|
44
|
+
*
|
|
45
|
+
* The default look is a dark floating bar, readable on both light and dark
|
|
46
|
+
* backgrounds. Re-theme it through {@link UndoToastProps.styles}.
|
|
47
|
+
*
|
|
48
|
+
* @example Minimal
|
|
49
|
+
* ```tsx
|
|
50
|
+
* import { UndoToast } from "@forthtilliath/react-native-kit/components/list/UndoToast";
|
|
51
|
+
*
|
|
52
|
+
* {recentlyDeleted && (
|
|
53
|
+
* <UndoToast
|
|
54
|
+
* message={`"${recentlyDeleted.name}" deleted`}
|
|
55
|
+
* onAction={restoreLast}
|
|
56
|
+
* />
|
|
57
|
+
* )}
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* @example Full pattern — auto-commit after 5s, localized label, themed
|
|
61
|
+
* ```tsx
|
|
62
|
+
* const [pending, setPending] = useState<Employee | null>(null);
|
|
63
|
+
*
|
|
64
|
+
* function remove(employee: Employee) {
|
|
65
|
+
* setEmployees((list) => list.filter((e) => e.id !== employee.id));
|
|
66
|
+
* setPending(employee);
|
|
67
|
+
* }
|
|
68
|
+
*
|
|
69
|
+
* useEffect(() => {
|
|
70
|
+
* if (!pending) return;
|
|
71
|
+
* const id = setTimeout(() => {
|
|
72
|
+
* db.deleteEmployee(pending.id); // point of no return
|
|
73
|
+
* setPending(null);
|
|
74
|
+
* }, 5000);
|
|
75
|
+
* return () => clearTimeout(id);
|
|
76
|
+
* }, [pending]);
|
|
77
|
+
*
|
|
78
|
+
* {pending && (
|
|
79
|
+
* <UndoToast
|
|
80
|
+
* message={`« ${pending.name} » supprimé`}
|
|
81
|
+
* actionLabel="Annuler"
|
|
82
|
+
* onAction={() => {
|
|
83
|
+
* setEmployees((list) => [...list, pending]);
|
|
84
|
+
* setPending(null);
|
|
85
|
+
* }}
|
|
86
|
+
* styles={{
|
|
87
|
+
* toast: { backgroundColor: colors.inverseSurface },
|
|
88
|
+
* message: { color: colors.inverseOnSurface },
|
|
89
|
+
* action: { color: colors.inversePrimary },
|
|
90
|
+
* }}
|
|
91
|
+
* />
|
|
92
|
+
* )}
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export function UndoToast({ message, actionLabel = "Undo", onAction, styles, }) {
|
|
96
|
+
// Merge each slot as [default, override] so a partial override doesn't drop
|
|
97
|
+
// the rest of that slot's default (positioning, shadow, flex…).
|
|
98
|
+
const merged = {
|
|
99
|
+
toast: [defaultStyles.toast, styles?.toast],
|
|
100
|
+
message: [defaultStyles.message, styles?.message],
|
|
101
|
+
action: [defaultStyles.action, styles?.action],
|
|
102
|
+
};
|
|
103
|
+
return (_jsxs(View, { style: merged.toast, children: [_jsx(Text, { style: merged.message, numberOfLines: 1, children: message }), _jsx(Pressable, { onPress: onAction, hitSlop: 8, accessibilityRole: "button", children: _jsx(Text, { style: merged.action, children: actionLabel }) })] }));
|
|
104
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/list/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/list/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
export * from "./components/list/ColorDot.js";
|
|
1
2
|
export * from "./components/list/SwipeableRow.js";
|
|
2
3
|
export * from "./components/list/Thumbnail.js";
|
|
4
|
+
export * from "./components/list/UndoToast.js";
|
|
3
5
|
export * from "./components/picker/PhotoPicker.js";
|
|
4
6
|
export * from "./components/picker/PickerModal.js";
|
|
5
7
|
export * from "./components/picker/VoiceSearchButton.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
// etc.) remain the recommended default for apps that want to avoid pulling in
|
|
4
4
|
// peer deps they don't have installed (Metro doesn't reliably tree-shake) —
|
|
5
5
|
// see the README.
|
|
6
|
+
export * from "./components/list/ColorDot.js";
|
|
6
7
|
export * from "./components/list/SwipeableRow.js";
|
|
7
8
|
export * from "./components/list/Thumbnail.js";
|
|
9
|
+
export * from "./components/list/UndoToast.js";
|
|
8
10
|
export * from "./components/picker/PhotoPicker.js";
|
|
9
11
|
export * from "./components/picker/PickerModal.js";
|
|
10
12
|
export * from "./components/picker/VoiceSearchButton.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forthtilliath/react-native-kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"react-test-renderer": "19.2.3",
|
|
45
45
|
"typescript": "^5.9.3",
|
|
46
46
|
"vitest": "^4.1.10",
|
|
47
|
-
"@forthtilliath/eslint-config": "0.
|
|
47
|
+
"@forthtilliath/eslint-config": "0.1.0",
|
|
48
48
|
"@forthtilliath/typescript-config": "0.0.0"
|
|
49
49
|
},
|
|
50
50
|
"scripts": {
|