ferns-ui 0.36.4 → 0.37.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/dist/Banner.d.ts +6 -16
- package/dist/Banner.js +52 -43
- package/dist/Banner.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/useStoredState.d.ts +1 -0
- package/dist/useStoredState.js +33 -0
- package/dist/useStoredState.js.map +1 -0
- package/package.json +55 -56
- package/src/ActionSheet.tsx +1231 -0
- package/src/Avatar.tsx +317 -0
- package/src/Badge.tsx +65 -0
- package/src/Banner.tsx +149 -0
- package/src/BlurBox.native.tsx +40 -0
- package/src/BlurBox.tsx +31 -0
- package/src/Body.tsx +32 -0
- package/src/Box.tsx +308 -0
- package/src/Button.tsx +219 -0
- package/src/Card.tsx +23 -0
- package/src/CheckBox.tsx +118 -0
- package/src/Common.ts +2743 -0
- package/src/Constants.ts +53 -0
- package/src/CustomSelect.tsx +85 -0
- package/src/DateTimeActionSheet.tsx +409 -0
- package/src/DateTimeField.android.tsx +101 -0
- package/src/DateTimeField.ios.tsx +83 -0
- package/src/DateTimeField.tsx +69 -0
- package/src/DecimalRangeActionSheet.tsx +113 -0
- package/src/ErrorBoundary.tsx +37 -0
- package/src/ErrorPage.tsx +44 -0
- package/src/FernsProvider.tsx +21 -0
- package/src/Field.tsx +299 -0
- package/src/FieldWithLabels.tsx +36 -0
- package/src/FlatList.tsx +2 -0
- package/src/Form.tsx +182 -0
- package/src/HeaderButtons.tsx +107 -0
- package/src/Heading.tsx +53 -0
- package/src/HeightActionSheet.tsx +104 -0
- package/src/Hyperlink.tsx +181 -0
- package/src/Icon.tsx +24 -0
- package/src/IconButton.tsx +165 -0
- package/src/Image.tsx +50 -0
- package/src/ImageBackground.tsx +14 -0
- package/src/InfoTooltipButton.tsx +23 -0
- package/src/Layer.tsx +17 -0
- package/src/Link.tsx +17 -0
- package/src/Mask.tsx +21 -0
- package/src/MediaQuery.ts +46 -0
- package/src/Meta.tsx +9 -0
- package/src/Modal.tsx +248 -0
- package/src/ModalSheet.tsx +58 -0
- package/src/NumberPickerActionSheet.tsx +66 -0
- package/src/Page.tsx +133 -0
- package/src/Permissions.ts +44 -0
- package/src/PickerSelect.tsx +553 -0
- package/src/Pill.tsx +24 -0
- package/src/Pog.tsx +87 -0
- package/src/ProgressBar.tsx +55 -0
- package/src/ScrollView.tsx +2 -0
- package/src/SegmentedControl.tsx +102 -0
- package/src/SelectList.tsx +89 -0
- package/src/SideDrawer.tsx +62 -0
- package/src/Spinner.tsx +20 -0
- package/src/SplitPage.native.tsx +160 -0
- package/src/SplitPage.tsx +302 -0
- package/src/Switch.tsx +19 -0
- package/src/Table.tsx +87 -0
- package/src/TableHeader.tsx +36 -0
- package/src/TableHeaderCell.tsx +76 -0
- package/src/TableRow.tsx +87 -0
- package/src/TapToEdit.tsx +221 -0
- package/src/Text.tsx +131 -0
- package/src/TextArea.tsx +16 -0
- package/src/TextField.tsx +401 -0
- package/src/TextFieldNumberActionSheet.tsx +61 -0
- package/src/Toast.tsx +106 -0
- package/src/Tooltip.tsx +269 -0
- package/src/UnifiedScreens.ts +24 -0
- package/src/Unifier.ts +371 -0
- package/src/Utilities.tsx +159 -0
- package/src/WithLabel.tsx +57 -0
- package/src/dayjsExtended.ts +10 -0
- package/src/index.tsx +1347 -0
- package/src/polyfill.d.ts +11 -0
- package/src/tableContext.tsx +80 -0
- package/src/useStoredState.ts +39 -0
package/dist/Banner.d.ts
CHANGED
|
@@ -1,27 +1,17 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { BoxColor, Rounding, TextColor } from "./Common";
|
|
2
|
+
import { BoxColor, IconName, Rounding, TextColor } from "./Common";
|
|
3
3
|
export interface BannerProps {
|
|
4
4
|
id: string;
|
|
5
|
+
dismissible?: boolean;
|
|
5
6
|
text: string;
|
|
6
7
|
subtext?: string;
|
|
8
|
+
iconName?: IconName;
|
|
7
9
|
color?: BoxColor;
|
|
8
10
|
textColor?: TextColor;
|
|
9
11
|
negativeXMargin?: number;
|
|
10
|
-
bold?: boolean;
|
|
11
12
|
shape?: Rounding;
|
|
12
|
-
type?: "dismiss" | "action";
|
|
13
|
+
type?: "dismiss" | "action" | "permanent";
|
|
13
14
|
onClick?: () => void;
|
|
14
15
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
export declare const hideBanner: (id: string) => void;
|
|
19
|
-
export declare class Banner extends React.Component<BannerProps, BannerState> {
|
|
20
|
-
state: {
|
|
21
|
-
show: boolean;
|
|
22
|
-
};
|
|
23
|
-
componentDidMount(): Promise<void>;
|
|
24
|
-
dismiss: () => void;
|
|
25
|
-
render(): React.JSX.Element | null;
|
|
26
|
-
}
|
|
27
|
-
export {};
|
|
16
|
+
export declare const hideBanner: (id: string) => Promise<void>;
|
|
17
|
+
export declare const Banner: ({ id, text, subtext, color, iconName, textColor, negativeXMargin, shape, type, onClick, }: BannerProps) => React.ReactElement | null;
|
package/dist/Banner.js
CHANGED
|
@@ -1,56 +1,65 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { useEffect, useState } from "react";
|
|
2
2
|
import { Box } from "./Box";
|
|
3
|
+
import { Icon } from "./Icon";
|
|
3
4
|
import { IconButton } from "./IconButton";
|
|
4
5
|
import { Text } from "./Text";
|
|
5
6
|
import { Unifier } from "./Unifier";
|
|
6
7
|
function getKey(id) {
|
|
7
|
-
return `@
|
|
8
|
+
return `@FernsUI:${id}`;
|
|
8
9
|
}
|
|
9
10
|
export const hideBanner = (id) => {
|
|
10
11
|
console.debug(`[banner] Hiding ${getKey(id)} `);
|
|
11
|
-
Unifier.storage.setItem(getKey(id), "true");
|
|
12
|
+
return Unifier.storage.setItem(getKey(id), "true");
|
|
12
13
|
};
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
if (
|
|
29
|
-
return
|
|
14
|
+
export const Banner = ({ id, text, subtext, color = "secondaryDark", iconName, textColor = "white", negativeXMargin = 0, shape, type = "dismiss", onClick, }) => {
|
|
15
|
+
// If the banner is permanent, show it immediately.
|
|
16
|
+
const [show, setShow] = useState(type === "permanent");
|
|
17
|
+
// Load seen from async storage.
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
// Always show permanent banners.
|
|
20
|
+
if (type === "permanent") {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
Unifier.storage.getItem(getKey(id)).then((isSeen) => {
|
|
24
|
+
console.debug(`[banner] ${getKey(id)} seen? ${isSeen}`);
|
|
25
|
+
setShow(!isSeen);
|
|
26
|
+
});
|
|
27
|
+
}, [id, type]);
|
|
28
|
+
const dismiss = () => {
|
|
29
|
+
if (type === "permanent") {
|
|
30
|
+
return;
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
hideBanner(id);
|
|
33
|
+
setShow(false);
|
|
34
|
+
};
|
|
35
|
+
const renderButton = () => {
|
|
36
|
+
if (type === "permanent") {
|
|
37
|
+
return null;
|
|
34
38
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}, direction: "row", justifyContent: "between", marginBottom: 3, marginTop: 3, paddingX: 3, paddingY: 2, rounding: this.props.shape, shadow: true, width: Unifier.utils.dimensions().width || "100%", onClick: this.dismiss },
|
|
42
|
-
React.createElement(Box, { alignItems: "center", direction: "column", flex: "shrink", justifyContent: "center" },
|
|
43
|
-
React.createElement(Box, { paddingY: 1 },
|
|
44
|
-
React.createElement(Text, { align: "center", color: this.props.textColor || "white", weight: "bold" }, this.props.text)),
|
|
45
|
-
this.props.subtext && (React.createElement(Box, { paddingY: 1 },
|
|
46
|
-
React.createElement(Text, { align: "center", color: this.props.textColor || "white" }, this.props.subtext)))),
|
|
47
|
-
React.createElement(Box, { alignItems: "center", display: "block", justifyContent: "center", width: 40 },
|
|
48
|
-
type === "dismiss" && (React.createElement(IconButton, { accessibilityLabel: "", icon: "times-circle",
|
|
49
|
-
// size="lg"
|
|
50
|
-
iconColor: (this.props.textColor || "white"), prefix: "fas", onClick: () => this.dismiss() })),
|
|
51
|
-
type === "action" && (React.createElement(IconButton, { accessibilityLabel: "", icon: "arrow-right",
|
|
52
|
-
// size="lg"
|
|
53
|
-
iconColor: (this.props.textColor || "white"), prefix: "fas", onClick: () => this.props.onClick && this.props.onClick() })))));
|
|
39
|
+
return (React.createElement(Box, { alignItems: "center", display: "block", justifyContent: "center", width: 40 },
|
|
40
|
+
type === "dismiss" && (React.createElement(IconButton, { accessibilityLabel: "", icon: "times-circle", iconColor: textColor, prefix: "fas", onClick: dismiss })),
|
|
41
|
+
type === "action" && (React.createElement(IconButton, { accessibilityLabel: "", icon: "arrow-right", iconColor: textColor, prefix: "fas", onClick: () => onClick === null || onClick === void 0 ? void 0 : onClick() }))));
|
|
42
|
+
};
|
|
43
|
+
if (!show) {
|
|
44
|
+
return null;
|
|
54
45
|
}
|
|
55
|
-
|
|
46
|
+
if (type === "action" && !onClick) {
|
|
47
|
+
console.warn("Banners with type action require an onClick property.");
|
|
48
|
+
}
|
|
49
|
+
const negativeMargin = negativeXMargin * -4;
|
|
50
|
+
return (React.createElement(Box, { color: color, dangerouslySetInlineStyle: {
|
|
51
|
+
__style: {
|
|
52
|
+
marginLeft: negativeMargin,
|
|
53
|
+
marginRight: negativeMargin,
|
|
54
|
+
},
|
|
55
|
+
}, direction: "row", justifyContent: "between", marginBottom: 3, marginTop: 3, paddingX: 3, paddingY: 2, rounding: shape, shadow: true, width: Unifier.utils.dimensions().width || "100%", onClick: type === "permanent" ? undefined : dismiss },
|
|
56
|
+
iconName && (React.createElement(Box, { justifyContent: "center", marginRight: 2, width: 32 },
|
|
57
|
+
React.createElement(Icon, { color: textColor, name: iconName, size: "lg" }))),
|
|
58
|
+
React.createElement(Box, { alignItems: "center", direction: "column", flex: "shrink", justifyContent: "center" },
|
|
59
|
+
React.createElement(Box, { paddingY: 1 },
|
|
60
|
+
React.createElement(Text, { align: "center", color: textColor, weight: "bold" }, text)),
|
|
61
|
+
subtext && (React.createElement(Box, { paddingY: 1 },
|
|
62
|
+
React.createElement(Text, { align: "center", color: textColor }, subtext)))),
|
|
63
|
+
renderButton()));
|
|
64
|
+
};
|
|
56
65
|
//# sourceMappingURL=Banner.js.map
|
package/dist/Banner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Banner.js","sourceRoot":"","sources":["../src/Banner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Banner.js","sourceRoot":"","sources":["../src/Banner.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,4BAA4B;AAC5B,4BAA4B;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AAExB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,2BAA2B;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,4BAA4B;AAC5B,4BAA4B;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AAExB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,2BAA2B;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useStoredState: <T>(key: string, initialValue?: T | undefined) => [T | null | undefined, (value: T | null | undefined) => Promise<void>];
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { useCallback, useEffect, useState } from "react";
|
|
2
|
+
import { Unifier } from "./Unifier";
|
|
3
|
+
export const useStoredState = (key, initialValue) => {
|
|
4
|
+
const [state, setState] = useState(initialValue);
|
|
5
|
+
// Function to fetch data from AsyncStorage
|
|
6
|
+
const fetchData = useCallback(async () => {
|
|
7
|
+
try {
|
|
8
|
+
return await Unifier.storage.getItem(key);
|
|
9
|
+
}
|
|
10
|
+
catch (error) {
|
|
11
|
+
console.error("Error reading data from AsyncStorage:", error);
|
|
12
|
+
return initialValue;
|
|
13
|
+
}
|
|
14
|
+
}, [initialValue, key]);
|
|
15
|
+
// Fetch data when the component mounts
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
fetchData().then((value) => {
|
|
18
|
+
setState(value);
|
|
19
|
+
});
|
|
20
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
21
|
+
}, []);
|
|
22
|
+
const setAsyncStorageState = async (newValue) => {
|
|
23
|
+
try {
|
|
24
|
+
await Unifier.storage.setItem(key, newValue);
|
|
25
|
+
setState(newValue);
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
console.error("Error writing data to AsyncStorage:", error);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
return [state, setAsyncStorageState];
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=useStoredState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useStoredState.js","sourceRoot":"","sources":["../src/useStoredState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,GAAW,EACX,YAAgB,EACwD,EAAE;IAC1E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAuB,YAAY,CAAC,CAAC;IAEvE,2CAA2C;IAC3C,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,IAA4B,EAAE;QAC/D,IAAI;YACF,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SAC3C;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC9D,OAAO,YAAY,CAAC;SACrB;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;IAExB,uCAAuC;IACvC,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACzB,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,oBAAoB,GAAG,KAAK,EAAE,QAA8B,EAAiB,EAAE;QACnF,IAAI;YACF,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC7C,QAAQ,CAAC,QAAQ,CAAC,CAAC;SACpB;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;SAC7D;IACH,CAAC,CAAC;IAEF,OAAO,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;AACvC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ferns-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.37.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"scripts": {
|
|
@@ -113,106 +113,105 @@
|
|
|
113
113
|
]
|
|
114
114
|
},
|
|
115
115
|
"files": [
|
|
116
|
-
"dist
|
|
117
|
-
"
|
|
118
|
-
"dist/*.map"
|
|
116
|
+
"dist/**/*",
|
|
117
|
+
"src/**/*"
|
|
119
118
|
],
|
|
120
119
|
"devDependencies": {
|
|
121
120
|
"@expo/config-plugins": "~7.2.2",
|
|
122
121
|
"@expo/vector-icons": "^13.0.0",
|
|
123
|
-
"@react-native-async-storage/async-storage": "1.
|
|
122
|
+
"@react-native-async-storage/async-storage": "1.19.3",
|
|
124
123
|
"@react-native-community/blur": "^4.3.0",
|
|
125
|
-
"@react-native-community/datetimepicker": "7.
|
|
126
|
-
"@react-native-picker/picker": "2.
|
|
127
|
-
"@types/mdurl": "^1.0.
|
|
128
|
-
"@types/react": "^18.2.
|
|
124
|
+
"@react-native-community/datetimepicker": "7.6.1",
|
|
125
|
+
"@react-native-picker/picker": "2.5.1",
|
|
126
|
+
"@types/mdurl": "^1.0.4",
|
|
127
|
+
"@types/react": "^18.2.31",
|
|
129
128
|
"@types/react-datetime-picker": "^5.0.0",
|
|
130
129
|
"@types/react-time-picker": "^6.0.0",
|
|
131
|
-
"@typescript-eslint/eslint-plugin": "^6.
|
|
132
|
-
"@typescript-eslint/parser": "^6.
|
|
133
|
-
"dayjs": "^1.11.
|
|
134
|
-
"eslint": "^8.
|
|
135
|
-
"eslint-config-ferns": "^0.4.
|
|
130
|
+
"@typescript-eslint/eslint-plugin": "^6.9.0",
|
|
131
|
+
"@typescript-eslint/parser": "^6.9.0",
|
|
132
|
+
"dayjs": "^1.11.10",
|
|
133
|
+
"eslint": "^8.52.0",
|
|
134
|
+
"eslint-config-ferns": "^0.4.4",
|
|
136
135
|
"eslint-config-prettier": "^9.0.0",
|
|
137
|
-
"eslint-plugin-import": "^2.
|
|
136
|
+
"eslint-plugin-import": "^2.29.0",
|
|
138
137
|
"eslint-plugin-lodash": "^7.1.0",
|
|
139
|
-
"eslint-plugin-prettier": "^5.0.
|
|
138
|
+
"eslint-plugin-prettier": "^5.0.1",
|
|
140
139
|
"eslint-plugin-react": "^7.33.2",
|
|
141
140
|
"eslint-plugin-react-hooks": "^4.5.0",
|
|
142
141
|
"eslint-plugin-react-native": "^4.1.0",
|
|
143
142
|
"eslint-plugin-simple-import-sort": "^10.0.0",
|
|
144
143
|
"eslint-plugin-unused-imports": "3.0.0",
|
|
145
|
-
"expo-clipboard": "~4.
|
|
146
|
-
"expo-font": "~11.
|
|
147
|
-
"expo-haptics": "~12.
|
|
148
|
-
"expo-image-manipulator": "~11.
|
|
149
|
-
"expo-image-picker": "~14.
|
|
150
|
-
"libphonenumber-js": "^1.10.
|
|
144
|
+
"expo-clipboard": "~4.5.0",
|
|
145
|
+
"expo-font": "~11.6.0",
|
|
146
|
+
"expo-haptics": "~12.6.0",
|
|
147
|
+
"expo-image-manipulator": "~11.5.0",
|
|
148
|
+
"expo-image-picker": "~14.5.0",
|
|
149
|
+
"libphonenumber-js": "^1.10.48",
|
|
151
150
|
"lodash": "^4.17.21",
|
|
152
151
|
"mdurl": "^1.0.1",
|
|
153
152
|
"prettier": "^3.0.3",
|
|
154
153
|
"react": "18.2.0",
|
|
155
154
|
"react-app-polyfill": "^3.0.0",
|
|
156
|
-
"react-date-picker": "^10.
|
|
157
|
-
"react-datetime-picker": "^5.
|
|
155
|
+
"react-date-picker": "^10.5.2",
|
|
156
|
+
"react-datetime-picker": "^5.5.3",
|
|
158
157
|
"react-dev-utils": "^12.0.1",
|
|
159
158
|
"react-dom": "18.2.0",
|
|
160
159
|
"react-keyed-flatten-children": "^2.2.1",
|
|
161
|
-
"react-native": "0.72.
|
|
162
|
-
"react-native-actions-sheet": "^0.
|
|
160
|
+
"react-native": "0.72.6",
|
|
161
|
+
"react-native-actions-sheet": "^0.8.29",
|
|
163
162
|
"react-native-calendars": "^1.1301.0",
|
|
164
163
|
"react-native-drawer-layout": "^3.2.1",
|
|
165
|
-
"react-native-gesture-handler": "~2.
|
|
164
|
+
"react-native-gesture-handler": "~2.13.4",
|
|
166
165
|
"react-native-modalize": "^2.1.1",
|
|
167
|
-
"react-native-permissions": "^3.
|
|
166
|
+
"react-native-permissions": "^3.10.0",
|
|
168
167
|
"react-native-picker-select": "^8.1.0",
|
|
169
168
|
"react-native-portalize": "^1.0.7",
|
|
170
|
-
"react-native-reanimated": "~3.
|
|
171
|
-
"react-native-svg": "13.
|
|
169
|
+
"react-native-reanimated": "~3.5.4",
|
|
170
|
+
"react-native-svg": "13.14.0",
|
|
172
171
|
"react-native-swiper-flatlist": "^3.1.1",
|
|
173
172
|
"react-native-toast-notifications": "^3.4.0",
|
|
174
|
-
"react-router": "^6.
|
|
175
|
-
"react-router-dom": "^6.
|
|
176
|
-
"react-time-picker": "^6.
|
|
173
|
+
"react-router": "^6.17.0",
|
|
174
|
+
"react-router-dom": "^6.17.0",
|
|
175
|
+
"react-time-picker": "^6.5.2",
|
|
177
176
|
"tsc-watch": "^6.0.4",
|
|
178
177
|
"typescript": "^5.2.2"
|
|
179
178
|
},
|
|
180
179
|
"peerDependencies": {
|
|
181
180
|
"@expo/vector-icons": "^13.0.0",
|
|
182
|
-
"@react-native-async-storage/async-storage": "1.
|
|
181
|
+
"@react-native-async-storage/async-storage": "1.19.3",
|
|
183
182
|
"@react-native-community/blur": "^4.3.0",
|
|
184
|
-
"@react-native-community/datetimepicker": "7.
|
|
185
|
-
"@react-native-picker/picker": "2.
|
|
186
|
-
"@typescript-eslint/eslint-plugin": "^6.
|
|
187
|
-
"@typescript-eslint/parser": "^6.
|
|
188
|
-
"dayjs": "^1.11.
|
|
189
|
-
"expo-clipboard": "~4.
|
|
190
|
-
"expo-font": "~11.
|
|
191
|
-
"expo-haptics": "~12.
|
|
192
|
-
"expo-image-manipulator": "~11.
|
|
193
|
-
"expo-image-picker": "~14.
|
|
194
|
-
"libphonenumber-js": "^1.10.
|
|
183
|
+
"@react-native-community/datetimepicker": "7.6.1",
|
|
184
|
+
"@react-native-picker/picker": "2.5.1",
|
|
185
|
+
"@typescript-eslint/eslint-plugin": "^6.9.0",
|
|
186
|
+
"@typescript-eslint/parser": "^6.9.0",
|
|
187
|
+
"dayjs": "^1.11.10",
|
|
188
|
+
"expo-clipboard": "~4.5.0",
|
|
189
|
+
"expo-font": "~11.6.0",
|
|
190
|
+
"expo-haptics": "~12.6.0",
|
|
191
|
+
"expo-image-manipulator": "~11.5.0",
|
|
192
|
+
"expo-image-picker": "~14.5.0",
|
|
193
|
+
"libphonenumber-js": "^1.10.48",
|
|
195
194
|
"lodash": "^4.17.21",
|
|
196
195
|
"react": "18.2.0",
|
|
197
196
|
"react-app-polyfill": "^3.0.0",
|
|
198
|
-
"react-date-picker": "^10.
|
|
199
|
-
"react-datetime-picker": "^5.
|
|
197
|
+
"react-date-picker": "^10.5.2",
|
|
198
|
+
"react-datetime-picker": "^5.5.3",
|
|
200
199
|
"react-dev-utils": "^12.0.1",
|
|
201
200
|
"react-dom": "18.2.0",
|
|
202
|
-
"react-native": "0.72.
|
|
203
|
-
"react-native-actions-sheet": "^0.
|
|
201
|
+
"react-native": "0.72.6",
|
|
202
|
+
"react-native-actions-sheet": "^0.8.29",
|
|
204
203
|
"react-native-calendars": "^1.1301.0",
|
|
205
204
|
"react-native-drawer-layout": "^3.2.1",
|
|
206
|
-
"react-native-gesture-handler": "~2.
|
|
205
|
+
"react-native-gesture-handler": "~2.13.4",
|
|
207
206
|
"react-native-modalize": "^2.1.1",
|
|
208
|
-
"react-native-permissions": "^3.
|
|
207
|
+
"react-native-permissions": "^3.10.0",
|
|
209
208
|
"react-native-picker-select": "^8.1.0",
|
|
210
209
|
"react-native-portalize": "^1.0.7",
|
|
211
|
-
"react-native-reanimated": "~3.
|
|
212
|
-
"react-native-svg": "13.
|
|
210
|
+
"react-native-reanimated": "~3.5.4",
|
|
211
|
+
"react-native-svg": "13.14.0",
|
|
213
212
|
"react-native-toast-notifications": "^3.4.0",
|
|
214
|
-
"react-router": "^6.
|
|
215
|
-
"react-router-dom": "^6.
|
|
216
|
-
"react-time-picker": "^6.
|
|
213
|
+
"react-router": "^6.17.0",
|
|
214
|
+
"react-router-dom": "^6.17.0",
|
|
215
|
+
"react-time-picker": "^6.5.2"
|
|
217
216
|
}
|
|
218
217
|
}
|