ferns-ui 0.39.5 → 0.39.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/dist/Badge.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import React from "react";
2
2
  import { BadgeProps } from "./Common";
3
- export declare function Badge({ title, position, type, color, }: BadgeProps): React.ReactElement;
3
+ export declare function Badge({ title, position, type, color, size, iconProps, fontColor, fontWeight, rounding, }: BadgeProps): React.ReactElement;
package/dist/Badge.js CHANGED
@@ -1,30 +1,29 @@
1
- import React, { useContext } from "react";
2
- import { Text, View } from "react-native";
3
- import { ThemeContext } from "./Theme";
4
- export function Badge({ title, position = "middle", type = "info", color, }) {
5
- const { theme } = useContext(ThemeContext);
1
+ import React from "react";
2
+ import { Box } from "./Box";
3
+ import { Icon } from "./Icon";
4
+ import { Text } from "./Text";
5
+ export function Badge({ title, position = "middle", type = "info", color, size = "xs", iconProps, fontColor = "white", fontWeight = "bold", rounding = "pill", }) {
6
6
  if (color && type !== "custom") {
7
7
  console.warn('Badge color only supported when `type` is set to "custom".');
8
8
  }
9
9
  const badgeColor = type === "custom" ? color : type;
10
- return (React.createElement(View, { style: {
11
- backgroundColor: theme[badgeColor],
12
- borderRadius: 2,
13
- height: 14,
14
- paddingTop: 2,
15
- paddingBottom: 2,
16
- paddingLeft: 4,
17
- paddingRight: 4,
18
- marginTop: -4,
19
- marginLeft: 4,
20
- display: "flex",
21
- alignSelf: position === "middle" ? "center" : "flex-start",
22
- } },
23
- React.createElement(Text, { style: {
24
- fontSize: 10,
25
- flexWrap: "nowrap",
26
- color: "white",
27
- fontWeight: "bold",
28
- } }, title)));
10
+ function renderIcon() {
11
+ if (iconProps && iconProps.name) {
12
+ return (React.createElement(Box, { marginRight: title ? 1 : 0 },
13
+ React.createElement(Icon, Object.assign({ color: (iconProps === null || iconProps === void 0 ? void 0 : iconProps.color) ? iconProps.color : fontColor }, iconProps, { size: size }))));
14
+ }
15
+ else {
16
+ return null;
17
+ }
18
+ }
19
+ function renderLabel() {
20
+ if (!title) {
21
+ return null;
22
+ }
23
+ return (React.createElement(Text, { color: fontColor, size: size, weight: fontWeight }, title));
24
+ }
25
+ return (React.createElement(Box, { alignItems: "baseline", alignSelf: position === "middle" ? "center" : position === "bottom" ? "end" : "start", color: badgeColor, direction: "row", height: "min-content", justifyContent: "center", marginLeft: 1, marginTop: position === "top" ? -1 : 0, paddingX: (typeof rounding === "number" && rounding >= 4) || rounding === "pill" ? 2 : 1, paddingY: 1, rounding: rounding, width: "max-content" },
26
+ renderIcon(),
27
+ renderLabel()));
29
28
  }
30
29
  //# sourceMappingURL=Badge.js.map
package/dist/Badge.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Badge.js","sourceRoot":"","sources":["../src/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,UAAU,EAAC,MAAM,OAAO,CAAC;AACxC,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAGxC,OAAO,EAAC,YAAY,EAAC,MAAM,SAAS,CAAC;AAErC,MAAM,UAAU,KAAK,CAAC,EACpB,KAAK,EACL,QAAQ,GAAG,QAAQ,EACnB,IAAI,GAAG,MAAM,EACb,KAAK,GACM;IACX,MAAM,EAAC,KAAK,EAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAEzC,IAAI,KAAK,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAErD,OAAO,CACL,oBAAC,IAAI,IACH,KAAK,EAAE;YACL,eAAe,EAAE,KAAK,CAAC,UAAU,CAAC;YAClC,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,CAAC;YACb,aAAa,EAAE,CAAC;YAChB,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;YACf,SAAS,EAAE,CAAC,CAAC;YACb,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;SAC3D;QAED,oBAAC,IAAI,IACH,KAAK,EAAE;gBACL,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE,OAAO;gBACd,UAAU,EAAE,MAAM;aACnB,IAEA,KAAK,CACD,CACF,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Badge.js","sourceRoot":"","sources":["../src/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAE5B,MAAM,UAAU,KAAK,CAAC,EACpB,KAAK,EACL,QAAQ,GAAG,QAAQ,EACnB,IAAI,GAAG,MAAM,EACb,KAAK,EACL,IAAI,GAAG,IAAI,EACX,SAAS,EACT,SAAS,GAAG,OAAO,EACnB,UAAU,GAAG,MAAM,EACnB,QAAQ,GAAG,MAAM,GACN;IACX,IAAI,KAAK,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAErD,SAAS,UAAU;QACjB,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YAChC,OAAO,CACL,oBAAC,GAAG,IAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7B,oBAAC,IAAI,kBAAC,KAAK,EAAE,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,EAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,IAAM,SAAS,IAAE,IAAI,EAAE,IAAI,IAAI,CACtF,CACP,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,SAAS,WAAW;QAClB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CACL,oBAAC,IAAI,IAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,IACnD,KAAK,CACD,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,oBAAC,GAAG,IACF,UAAU,EAAC,UAAU,EACrB,SAAS,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EACrF,KAAK,EAAE,UAAU,EACjB,SAAS,EAAC,KAAK,EACf,MAAM,EAAC,aAAa,EACpB,cAAc,EAAC,QAAQ,EACvB,UAAU,EAAE,CAAC,EACb,SAAS,EAAE,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtC,QAAQ,EAAE,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,IAAI,CAAC,CAAC,IAAI,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxF,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAC,aAAa;QAElB,UAAU,EAAE;QACZ,WAAW,EAAE,CACV,CACP,CAAC;AACJ,CAAC"}
package/dist/Banner.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
2
  import { BannerProps } from "./Common";
3
3
  export declare const hideBanner: (id: string) => Promise<void>;
4
- export declare const Banner: ({ id, text, subtext, color, iconName, textColor, negativeXMargin, width, shape, type, onClick, }: BannerProps) => React.ReactElement | null;
4
+ export declare const Banner: ({ id, customButtonProps, text, subtext, color, iconName, textColor, negativeXMargin, width, shape, type, onClick, }: BannerProps) => React.ReactElement | null;
package/dist/Banner.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import React, { useEffect, useState } from "react";
2
2
  import { Box } from "./Box";
3
+ import { Button } from "./Button";
3
4
  import { Icon } from "./Icon";
4
5
  import { IconButton } from "./IconButton";
5
6
  import { Text } from "./Text";
@@ -11,39 +12,54 @@ export const hideBanner = (id) => {
11
12
  console.debug(`[banner] Hiding ${getKey(id)} `);
12
13
  return Unifier.storage.setItem(getKey(id), "true");
13
14
  };
14
- export const Banner = ({ id, text, subtext, color = "secondaryDark", iconName, textColor = "white", negativeXMargin = 0, width, shape, type = "dismiss", onClick, }) => {
15
- // If the banner is permanent, show it immediately.
16
- const [show, setShow] = useState(type === "permanent");
15
+ const BannerType = {
16
+ ACTION: "action",
17
+ DISMISS: "dismiss",
18
+ PERMANENT: "permanent", // deprecated in favor of default behavior
19
+ CUSTOM_BUTTON: "customButton",
20
+ };
21
+ export const Banner = ({ id, customButtonProps, text, subtext, color = "secondaryDark", iconName, textColor = "white", negativeXMargin = 0, width, shape, type, onClick, }) => {
22
+ // If the banner is not type dismiss, show it immediately.
23
+ const { ACTION, DISMISS, CUSTOM_BUTTON } = BannerType;
24
+ const [show, setShow] = useState(type !== DISMISS);
17
25
  // Load seen from async storage.
18
26
  useEffect(() => {
19
- // Always show permanent banners.
20
- if (type === "permanent") {
21
- return;
27
+ if (type === DISMISS) {
28
+ void Unifier.storage.getItem(getKey(id)).then((isSeen) => {
29
+ console.debug(`[banner] ${getKey(id)} seen? ${isSeen}`);
30
+ setShow(!isSeen);
31
+ });
22
32
  }
23
- void Unifier.storage.getItem(getKey(id)).then((isSeen) => {
24
- console.debug(`[banner] ${getKey(id)} seen? ${isSeen}`);
25
- setShow(!isSeen);
26
- });
33
+ // eslint-disable-next-line react-hooks/exhaustive-deps
27
34
  }, [id, type]);
28
35
  const dismiss = async () => {
29
- if (type === "permanent") {
36
+ if (type !== DISMISS) {
30
37
  return;
31
38
  }
32
39
  await hideBanner(id);
33
40
  setShow(false);
34
41
  };
35
42
  const renderButton = () => {
36
- if (type === "permanent") {
43
+ var _a, _b, _c;
44
+ if (type === CUSTOM_BUTTON) {
45
+ return (React.createElement(Button, Object.assign({}, customButtonProps, { color: (_a = customButtonProps === null || customButtonProps === void 0 ? void 0 : customButtonProps.color) !== null && _a !== void 0 ? _a : "primary", size: (_b = customButtonProps === null || customButtonProps === void 0 ? void 0 : customButtonProps.size) !== null && _b !== void 0 ? _b : "sm", text: (_c = customButtonProps === null || customButtonProps === void 0 ? void 0 : customButtonProps.text) !== null && _c !== void 0 ? _c : "", onClick: onClick })));
46
+ }
47
+ else if (type === ACTION) {
48
+ return (React.createElement(Box, { alignItems: "center", display: "block", justifyContent: "center", width: 40 },
49
+ React.createElement(IconButton, { accessibilityLabel: "", icon: "arrow-right", iconColor: textColor, prefix: "fas", onClick: () => onClick === null || onClick === void 0 ? void 0 : onClick() })));
50
+ }
51
+ else if (type === DISMISS) {
52
+ return (React.createElement(Box, { alignItems: "center", display: "block", justifyContent: "center", width: 40 },
53
+ React.createElement(IconButton, { accessibilityLabel: "", icon: "times-circle", iconColor: textColor, prefix: "fas", onClick: dismiss })));
54
+ }
55
+ else {
37
56
  return null;
38
57
  }
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
58
  };
43
59
  if (!show) {
44
60
  return null;
45
61
  }
46
- if (type === "action" && !onClick) {
62
+ if ((type === ACTION && !onClick) || (type === CUSTOM_BUTTON && !onClick)) {
47
63
  console.warn("Banners with type action require an onClick property.");
48
64
  }
49
65
  const negativeMargin = negativeXMargin * -4;
@@ -52,8 +68,8 @@ export const Banner = ({ id, text, subtext, color = "secondaryDark", iconName, t
52
68
  marginLeft: negativeMargin,
53
69
  marginRight: negativeMargin,
54
70
  },
55
- }, direction: "row", justifyContent: "between", paddingX: 3, paddingY: 2, rounding: shape, shadow: true, width: width || Unifier.utils.dimensions().width || "100%", onClick: type === "permanent" ? undefined : dismiss },
56
- iconName && (React.createElement(Box, { justifyContent: "center", marginRight: 2, width: 32 },
71
+ }, direction: "row", justifyContent: "between", paddingX: 3, paddingY: 2, rounding: shape, shadow: true, width: width || Unifier.utils.dimensions().width || "100%", onClick: type === DISMISS ? dismiss : undefined },
72
+ iconName && (React.createElement(Box, { justifyContent: "center", width: 32 },
57
73
  React.createElement(Icon, { color: textColor, name: iconName, size: "lg" }))),
58
74
  React.createElement(Box, { alignItems: "center", direction: "column", flex: "shrink", justifyContent: "center" },
59
75
  React.createElement(Box, { paddingY: 1 },
@@ -1 +1 @@
1
- {"version":3,"file":"Banner.js","sourceRoot":"","sources":["../src/Banner.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Banner.js","sourceRoot":"","sources":["../src/Banner.tsx"],"names":[],"mappings":"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"}
package/dist/Button.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import React from "react";
2
2
  import { ButtonProps } from "./Common";
3
- export declare function Button({ disabled, type, loading: propsLoading, children, text, inline, icon, iconPrefix, size, onClick, color, withConfirmation, confirmationText, confirmationHeading, shape, testID, tooltip, }: ButtonProps): React.JSX.Element;
3
+ export declare function Button({ alignSelf, disabled, type, loading: propsLoading, children, text, inline, icon, iconPrefix, size, onClick, color, withConfirmation, confirmationText, confirmationHeading, shape, testID, tooltip, }: ButtonProps): React.JSX.Element;
package/dist/Button.js CHANGED
@@ -23,11 +23,12 @@ const buttonTextColor = {
23
23
  google: "white",
24
24
  };
25
25
  const HEIGHTS = {
26
+ xs: 30,
26
27
  sm: 36,
27
28
  md: 40,
28
29
  lg: 48,
29
30
  };
30
- export function Button({ disabled = false, type = "solid", loading: propsLoading, children, text, inline = false, icon, iconPrefix, size = "md", onClick, color = "gray", withConfirmation = false, confirmationText = "Are you sure you want to continue?", confirmationHeading = "Confirm", shape = "rounded", testID, tooltip, }) {
31
+ export function Button({ alignSelf, disabled = false, type = "solid", loading: propsLoading, children, text, inline = false, icon, iconPrefix, size = "md", onClick, color = "gray", withConfirmation = false, confirmationText = "Are you sure you want to continue?", confirmationHeading = "Confirm", shape = "rounded", testID, tooltip, }) {
31
32
  const [loading, setLoading] = useState(propsLoading);
32
33
  const [showConfirmation, setShowConfirmation] = useState(false);
33
34
  const { theme } = useContext(ThemeContext);
@@ -71,7 +72,7 @@ export function Button({ disabled = false, type = "solid", loading: propsLoading
71
72
  React.createElement(Text, null, confirmationText)));
72
73
  };
73
74
  const renderButton = () => {
74
- return (React.createElement(View, null,
75
+ return (React.createElement(View, { style: { alignSelf: inline === true ? undefined : alignSelf } },
75
76
  React.createElement(Pressable, { disabled: disabled || loading, style: {
76
77
  alignSelf: inline === true ? undefined : "stretch",
77
78
  height: HEIGHTS[size || "md"],
@@ -86,7 +87,7 @@ export function Button({ disabled = false, type = "solid", loading: propsLoading
86
87
  borderWidth: type === "outline" ? 2 : 0,
87
88
  opacity: disabled ? 0.4 : 1,
88
89
  flexDirection: "row",
89
- paddingHorizontal: 8 * 2,
90
+ paddingHorizontal: size === "xs" ? 6 : size === "sm" ? 12 : 8 * 2,
90
91
  }, testID: testID, onPress: debounce(async () => {
91
92
  await Unifier.utils.haptic();
92
93
  setLoading(true);
@@ -104,10 +105,10 @@ export function Button({ disabled = false, type = "solid", loading: propsLoading
104
105
  }
105
106
  setLoading(false);
106
107
  }, 500, { leading: true }) },
107
- icon !== undefined && (React.createElement(Box, { paddingX: 2 },
108
- React.createElement(Icon, { color: getTextColor(color), name: icon, prefix: iconPrefix || "far", size: size }))),
108
+ icon !== undefined && (React.createElement(Box, { marginRight: 2 },
109
+ React.createElement(Icon, { color: getTextColor(color), name: icon, prefix: iconPrefix || "far", size: size === "xs" ? "sm" : size }))),
109
110
  Boolean(children) && children,
110
- Boolean(text) && (React.createElement(Text, { align: "center", color: getTextColor(color), font: "button", inline: inline, size: size, skipLinking: true, weight: "bold" }, text)),
111
+ Boolean(text) && (React.createElement(Text, { align: "center", color: getTextColor(color), font: "button", inline: inline, size: size === "xs" ? "sm" : size, skipLinking: true, weight: "bold" }, text)),
111
112
  Boolean(loading) && (React.createElement(Box, { marginLeft: 2 },
112
113
  React.createElement(ActivityIndicator, { color: getTextColor(color), size: "small" })))),
113
114
  Boolean(withConfirmation) && renderConfirmation()));
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../src/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,KAAK,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAClD,OAAO,EAAC,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,YAAY,EAAC,MAAM,SAAS,CAAC;AACrC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,MAAM,eAAe,GAAkD;IACrE,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,UAAU;IACrB,GAAG,EAAE,OAAO;IACZ,WAAW,EAAE,OAAO;IACpB,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,OAAO;IAClB,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE,OAAO;IACjB,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,OAAO;CAChB,CAAC;AAEF,MAAM,OAAO,GAAG;IACd,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;CACP,CAAC;AAEF,MAAM,UAAU,MAAM,CAAC,EACrB,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,OAAO,EACd,OAAO,EAAE,YAAY,EACrB,QAAQ,EACR,IAAI,EACJ,MAAM,GAAG,KAAK,EACd,IAAI,EACJ,UAAU,EACV,IAAI,GAAG,IAAI,EACX,OAAO,EACP,KAAK,GAAG,MAAM,EACd,gBAAgB,GAAG,KAAK,EACxB,gBAAgB,GAAG,oCAAoC,EACvD,mBAAmB,GAAG,SAAS,EAC/B,KAAK,GAAG,SAAS,EACjB,MAAM,EACN,OAAO,GACK;IACZ,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,EAAC,KAAK,EAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAEzC,MAAM,kBAAkB,GAAG,CAAC,eAAuB,EAAU,EAAE;QAC7D,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO,aAAa,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC,eAAqC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,SAAgB,EAAS,EAAE;QAC/C,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,UAAU,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,OAAO,eAAe,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,WAAmB,EAAU,EAAE;QACrD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC,YAAY,CAAC,WAAoB,CAAC,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,KAAK,GAAG,WAAW,CAAC;IACtB,CAAC;IAED,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,OAAO,CACL,oBAAC,KAAK,IACJ,OAAO,EAAE,mBAAmB,EAC5B,oBAAoB,EAAE,GAAG,EAAE;gBACzB,OAAO,EAAE,CAAC;gBACV,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC,EACD,iBAAiB,EAAC,SAAS,EAC3B,sBAAsB,EAAE,GAAS,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAC9D,mBAAmB,EAAC,QAAQ,EAC5B,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,GAAS,EAAE;gBACpB,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YAED,oBAAC,IAAI,QAAE,gBAAgB,CAAQ,CACzB,CACT,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,OAAO,CACL,oBAAC,IAAI;YACH,oBAAC,SAAS,IACR,QAAQ,EAAE,QAAQ,IAAI,OAAO,EAC7B,KAAK,EAAE;oBACL,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;oBAClD,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;oBAC7B,eAAe,EAAE,kBAAkB,CAAC,KAAK,CAAC;oBAC1C,+CAA+C;oBAC/C,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1B,4BAA4B;oBAC5B,UAAU,EAAE,QAAQ;oBACpB,cAAc,EAAE,QAAQ;oBACxB,YAAY,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACxC,WAAW,EAAE,cAAc,CAAC,KAAK,CAAC;oBAClC,WAAW,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC3B,aAAa,EAAE,KAAK;oBACpB,iBAAiB,EAAE,CAAC,GAAG,CAAC;iBACzB,EACD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,QAAQ,CACf,KAAK,IAAI,EAAE;oBACT,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBAC7B,UAAU,CAAC,IAAI,CAAC,CAAC;oBACjB,IAAI,CAAC;wBACH,IAAI,gBAAgB,IAAI,CAAC,gBAAgB,EAAE,CAAC;4BAC1C,mBAAmB,CAAC,IAAI,CAAC,CAAC;wBAC5B,CAAC;6BAAM,IAAI,OAAO,EAAE,CAAC;4BACnB,MAAM,OAAO,EAAE,CAAC;wBAClB,CAAC;oBACH,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,UAAU,CAAC,KAAK,CAAC,CAAC;wBAClB,MAAM,CAAC,CAAC;oBACV,CAAC;oBACD,UAAU,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC,EACD,GAAG,EACH,EAAC,OAAO,EAAE,IAAI,EAAC,CAChB;gBAEA,IAAI,KAAK,SAAS,IAAI,CACrB,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC;oBACd,oBAAC,IAAI,IACH,KAAK,EAAE,YAAY,CAAC,KAAc,CAAC,EACnC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,UAAU,IAAI,KAAK,EAC3B,IAAI,EAAE,IAAI,GACV,CACE,CACP;gBACA,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ;gBAC7B,OAAO,CAAC,IAAI,CAAC,IAAI,CAChB,oBAAC,IAAI,IACH,KAAK,EAAC,QAAQ,EACd,KAAK,EAAE,YAAY,CAAC,KAAc,CAAC,EACnC,IAAI,EAAC,QAAQ,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,WAAW,QACX,MAAM,EAAC,MAAM,IAEZ,IAAI,CACA,CACR;gBACA,OAAO,CAAC,OAAO,CAAC,IAAI,CACnB,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;oBAChB,oBAAC,iBAAiB,IAAC,KAAK,EAAE,YAAY,CAAC,KAAc,CAAC,EAAE,IAAI,EAAC,OAAO,GAAG,CACnE,CACP,CACS;YACX,OAAO,CAAC,gBAAgB,CAAC,IAAI,kBAAkB,EAAE,CAC7C,CACR,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,oBAAC,OAAO,IAAC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAChE,YAAY,EAAE,CACP,CACX,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,YAAY,EAAE,CAAC;IACxB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../src/Button.tsx"],"names":[],"mappings":"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"}
package/dist/Common.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { SaveFormat } from "expo-image-manipulator";
2
2
  import React, { ReactElement, ReactNode, SyntheticEvent } from "react";
3
3
  import { ListRenderItemInfo, StyleProp, ViewStyle } from "react-native";
4
- import { DimensionValue } from "react-native/Libraries/StyleSheet/StyleSheetTypes";
4
+ import { DimensionValue, FlexStyle } from "react-native/Libraries/StyleSheet/StyleSheetTypes";
5
5
  import { Styles } from "react-native-google-places-autocomplete";
6
6
  import { SelectListOptions } from "./SelectList";
7
7
  export interface BaseProfile {
@@ -114,7 +114,7 @@ export declare const SPACING = 4;
114
114
  export type TextFieldType = "date" | "datetime" | "decimal" | "decimalRange" | "email" | "height" | "password" | "phoneNumber" | "number" | "numberRange" | "search" | "text" | "time" | "url" | "username";
115
115
  export type IconSize = "xs" | "sm" | "md" | "lg" | "xl";
116
116
  export declare const iconSizeToNumber: (size?: IconSize) => number;
117
- export type TextSize = "sm" | "md" | "lg";
117
+ export type TextSize = "xs" | "sm" | "md" | "lg";
118
118
  export type TextColor = "blue" | "darkGray" | "eggplant" | "gray" | "green" | "lightGray" | "maroon" | "midnight" | "navy" | "olive" | "orange" | "orchid" | "pine" | "purple" | "red" | "watermelon" | "white";
119
119
  export type ButtonColor = "blue" | "gray" | "red" | "white" | "primary" | "secondary" | "accent" | "tertiary";
120
120
  export type IconPrefix = "far" | "fas";
@@ -851,13 +851,19 @@ export interface AvatarProps {
851
851
  shouldShowEditIconIfNoImage?: boolean;
852
852
  }
853
853
  export interface BadgeProps {
854
- title: string;
855
- position?: "top" | "middle";
856
- type?: "info" | "error" | "warning" | "success" | "neutral" | "custom";
857
854
  color?: AllColors;
855
+ fontColor?: AllColors;
856
+ fontWeight?: TextProps["weight"];
857
+ iconProps?: IconProps;
858
+ title?: string;
859
+ position?: "bottom" | "top" | "middle";
860
+ rounding?: Rounding;
861
+ size?: "xs" | "sm" | "md" | "lg";
862
+ type?: "info" | "error" | "warning" | "success" | "neutral" | "custom";
858
863
  }
859
864
  export interface BannerProps {
860
865
  id: string;
866
+ customButtonProps?: Partial<ButtonProps>;
861
867
  color?: BoxColor;
862
868
  dismissible?: boolean;
863
869
  iconName?: IconName;
@@ -867,7 +873,7 @@ export interface BannerProps {
867
873
  subtext?: string;
868
874
  text: string;
869
875
  textColor?: TextColor;
870
- type?: "dismiss" | "action" | "permanent";
876
+ type?: "dismiss" | "action" | "permanent" | "customButton";
871
877
  width?: number | string;
872
878
  }
873
879
  export interface BodyProps {
@@ -879,12 +885,13 @@ export interface BodyProps {
879
885
  children?: ReactNode;
880
886
  }
881
887
  export interface ButtonProps {
888
+ alignSelf?: FlexStyle["alignSelf"];
882
889
  children?: React.ReactElement;
883
890
  text: string;
884
891
  color?: ButtonColor | Color;
885
892
  disabled?: boolean;
886
893
  inline?: boolean;
887
- size?: "sm" | "md" | "lg";
894
+ size?: "xs" | "sm" | "md" | "lg";
888
895
  type?: "solid" | "ghost" | "outline";
889
896
  loading?: boolean;
890
897
  onClick: any;
@@ -993,6 +1000,7 @@ export interface IconButtonProps {
993
1000
  idealDirection?: TooltipDirection;
994
1001
  };
995
1002
  indicator?: boolean;
1003
+ indicatorNumber?: number;
996
1004
  indicatorStyle?: {
997
1005
  position: IndicatorDirection;
998
1006
  color: AllColors;
@@ -1,5 +1,6 @@
1
1
  import React, { forwardRef, useContext, useState } from "react";
2
2
  import { Platform, Pressable, View } from "react-native";
3
+ import { Box } from "./Box";
3
4
  import { iconSizeToNumber } from "./Common";
4
5
  import { Icon } from "./Icon";
5
6
  import { Modal } from "./Modal";
@@ -8,7 +9,7 @@ import { ThemeContext } from "./Theme";
8
9
  import { Tooltip } from "./Tooltip";
9
10
  import { Unifier } from "./Unifier";
10
11
  // eslint-disable-next-line react/display-name
11
- export const IconButton = forwardRef(({ prefix, icon, iconColor, onClick, size, bgColor = "transparent", withConfirmation = false, confirmationText = "Are you sure you want to continue?", confirmationHeading = "Confirm", tooltip, indicator, indicatorStyle = { position: "bottomRight", color: "primary" }, testID, }, ref) => {
12
+ export const IconButton = forwardRef(({ prefix, icon, iconColor, onClick, size, bgColor = "transparent", withConfirmation = false, confirmationText = "Are you sure you want to continue?", confirmationHeading = "Confirm", tooltip, indicator, indicatorNumber, indicatorStyle = { position: "bottomRight", color: "primary" }, testID, }, ref) => {
12
13
  const { theme } = useContext(ThemeContext);
13
14
  const [showConfirmation, setShowConfirmation] = useState(false);
14
15
  const opacity = 1;
@@ -29,6 +30,31 @@ export const IconButton = forwardRef(({ prefix, icon, iconColor, onClick, size,
29
30
  topLeft: { top: "20%", left: "20%" },
30
31
  };
31
32
  const indicatorPosition = Object.assign({ position: "absolute" }, IndicatorPosition[indicatorStyle.position]);
33
+ const IndicatorNumPosition = {
34
+ bottomRight: { bottom: "18%", right: "12%" },
35
+ bottomLeft: { bottom: "10%", left: "10%" },
36
+ topRight: { top: "-5%", right: "-5%" },
37
+ topLeft: { top: "10%", left: "10%" },
38
+ };
39
+ const numberIndicatorProps = Object.assign({ position: "absolute" }, IndicatorNumPosition[indicatorStyle.position]);
40
+ function renderIndicator() {
41
+ if (indicator && indicatorNumber && indicatorNumber > 0) {
42
+ return (React.createElement(View, { style: numberIndicatorProps },
43
+ React.createElement(Box, { alignItems: "center", color: indicatorStyle.color, dangerouslySetInlineStyle: {
44
+ __style: {
45
+ padding: indicatorNumber && indicatorNumber > 9 ? 2 : 0,
46
+ },
47
+ }, justifyContent: "center", minHeight: 15, minWidth: 15, rounding: "pill" },
48
+ React.createElement(Text, { color: "white", size: "sm", weight: "bold" }, indicatorNumber))));
49
+ }
50
+ else if (indicator) {
51
+ return (React.createElement(View, { style: indicatorPosition },
52
+ React.createElement(Icon, { color: indicatorStyle.color, name: "circle", prefix: prefix || "fas", size: "sm" })));
53
+ }
54
+ else {
55
+ return null;
56
+ }
57
+ }
32
58
  const renderConfirmation = () => {
33
59
  return (React.createElement(Modal, { heading: confirmationHeading, primaryButtonOnClick: () => {
34
60
  onClick();
@@ -63,8 +89,7 @@ export const IconButton = forwardRef(({ prefix, icon, iconColor, onClick, size,
63
89
  }
64
90
  } },
65
91
  React.createElement(Icon, { color: iconColor, name: icon, prefix: prefix || "fas", size: size }),
66
- indicator && (React.createElement(View, { style: indicatorPosition },
67
- React.createElement(Icon, { color: indicatorStyle.color, name: "circle", prefix: prefix || "fas", size: "sm" })))),
92
+ renderIndicator()),
68
93
  Boolean(withConfirmation) && renderConfirmation()));
69
94
  }
70
95
  // Only add for web. This doesn't make much sense for mobile,
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton.js","sourceRoot":"","sources":["../src/IconButton.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IconButton.js","sourceRoot":"","sources":["../src/IconButton.tsx"],"names":[],"mappings":"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"}
package/dist/Text.js CHANGED
@@ -3,6 +3,7 @@ import { Text as NativeText } from "react-native";
3
3
  import { Hyperlink } from "./Hyperlink";
4
4
  import { ThemeContext } from "./Theme";
5
5
  const fontSizes = {
6
+ xs: 10,
6
7
  sm: 12,
7
8
  md: 14,
8
9
  lg: 16,
package/dist/Text.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Text.js","sourceRoot":"","sources":["../src/Text.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Text.js","sourceRoot":"","sources":["../src/Text.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ferns-ui",
3
- "version": "0.39.5",
3
+ "version": "0.39.6",
4
4
  "main": "dist/index.js",
5
5
  "license": "Apache-2.0",
6
6
  "scripts": {
package/src/Badge.tsx CHANGED
@@ -1,48 +1,66 @@
1
- import React, {useContext} from "react";
2
- import {Text, View} from "react-native";
1
+ import React from "react";
3
2
 
3
+ import {Box} from "./Box";
4
4
  import {BadgeProps} from "./Common";
5
- import {ThemeContext} from "./Theme";
5
+ import {Icon} from "./Icon";
6
+ import {Text} from "./Text";
6
7
 
7
8
  export function Badge({
8
9
  title,
9
10
  position = "middle",
10
11
  type = "info",
11
12
  color,
13
+ size = "xs",
14
+ iconProps,
15
+ fontColor = "white",
16
+ fontWeight = "bold",
17
+ rounding = "pill",
12
18
  }: BadgeProps): React.ReactElement {
13
- const {theme} = useContext(ThemeContext);
14
-
15
19
  if (color && type !== "custom") {
16
20
  console.warn('Badge color only supported when `type` is set to "custom".');
17
21
  }
18
22
  const badgeColor = type === "custom" ? color! : type;
19
23
 
20
- return (
21
- <View
22
- style={{
23
- backgroundColor: theme[badgeColor],
24
- borderRadius: 2,
25
- height: 14,
26
- paddingTop: 2,
27
- paddingBottom: 2,
28
- paddingLeft: 4,
29
- paddingRight: 4,
30
- marginTop: -4,
31
- marginLeft: 4,
32
- display: "flex",
33
- alignSelf: position === "middle" ? "center" : "flex-start",
34
- }}
35
- >
36
- <Text
37
- style={{
38
- fontSize: 10,
39
- flexWrap: "nowrap",
40
- color: "white",
41
- fontWeight: "bold",
42
- }}
43
- >
24
+ function renderIcon(): React.ReactElement | null {
25
+ if (iconProps && iconProps.name) {
26
+ return (
27
+ <Box marginRight={title ? 1 : 0}>
28
+ <Icon color={iconProps?.color ? iconProps.color : fontColor} {...iconProps} size={size} />
29
+ </Box>
30
+ );
31
+ } else {
32
+ return null;
33
+ }
34
+ }
35
+
36
+ function renderLabel(): React.ReactElement | null {
37
+ if (!title) {
38
+ return null;
39
+ }
40
+ return (
41
+ <Text color={fontColor} size={size} weight={fontWeight}>
44
42
  {title}
45
43
  </Text>
46
- </View>
44
+ );
45
+ }
46
+
47
+ return (
48
+ <Box
49
+ alignItems="baseline"
50
+ alignSelf={position === "middle" ? "center" : position === "bottom" ? "end" : "start"}
51
+ color={badgeColor}
52
+ direction="row"
53
+ height="min-content"
54
+ justifyContent="center"
55
+ marginLeft={1}
56
+ marginTop={position === "top" ? -1 : 0}
57
+ paddingX={(typeof rounding === "number" && rounding >= 4) || rounding === "pill" ? 2 : 1}
58
+ paddingY={1}
59
+ rounding={rounding}
60
+ width="max-content"
61
+ >
62
+ {renderIcon()}
63
+ {renderLabel()}
64
+ </Box>
47
65
  );
48
66
  }
package/src/Banner.tsx CHANGED
@@ -1,6 +1,7 @@
1
1
  import React, {useEffect, useState} from "react";
2
2
 
3
3
  import {Box} from "./Box";
4
+ import {Button} from "./Button";
4
5
  import {BannerProps, ButtonColor} from "./Common";
5
6
  import {Icon} from "./Icon";
6
7
  import {IconButton} from "./IconButton";
@@ -16,8 +17,16 @@ export const hideBanner = (id: string): Promise<void> => {
16
17
  return Unifier.storage.setItem(getKey(id), "true");
17
18
  };
18
19
 
20
+ const BannerType = {
21
+ ACTION: "action",
22
+ DISMISS: "dismiss",
23
+ PERMANENT: "permanent", // deprecated in favor of default behavior
24
+ CUSTOM_BUTTON: "customButton",
25
+ };
26
+
19
27
  export const Banner = ({
20
28
  id,
29
+ customButtonProps,
21
30
  text,
22
31
  subtext,
23
32
  color = "secondaryDark",
@@ -26,27 +35,25 @@ export const Banner = ({
26
35
  negativeXMargin = 0,
27
36
  width,
28
37
  shape,
29
- type = "dismiss",
38
+ type,
30
39
  onClick,
31
40
  }: BannerProps): React.ReactElement | null => {
32
- // If the banner is permanent, show it immediately.
33
- const [show, setShow] = useState(type === "permanent");
34
-
41
+ // If the banner is not type dismiss, show it immediately.
42
+ const {ACTION, DISMISS, CUSTOM_BUTTON} = BannerType;
43
+ const [show, setShow] = useState(type !== DISMISS);
35
44
  // Load seen from async storage.
36
45
  useEffect(() => {
37
- // Always show permanent banners.
38
- if (type === "permanent") {
39
- return;
46
+ if (type === DISMISS) {
47
+ void Unifier.storage.getItem(getKey(id)).then((isSeen) => {
48
+ console.debug(`[banner] ${getKey(id)} seen? ${isSeen}`);
49
+ setShow(!isSeen);
50
+ });
40
51
  }
41
-
42
- void Unifier.storage.getItem(getKey(id)).then((isSeen) => {
43
- console.debug(`[banner] ${getKey(id)} seen? ${isSeen}`);
44
- setShow(!isSeen);
45
- });
52
+ // eslint-disable-next-line react-hooks/exhaustive-deps
46
53
  }, [id, type]);
47
54
 
48
55
  const dismiss = async (): Promise<void> => {
49
- if (type === "permanent") {
56
+ if (type !== DISMISS) {
50
57
  return;
51
58
  }
52
59
  await hideBanner(id);
@@ -54,38 +61,50 @@ export const Banner = ({
54
61
  };
55
62
 
56
63
  const renderButton = (): React.ReactElement | null => {
57
- if (type === "permanent") {
58
- return null;
59
- }
60
- return (
61
- <Box alignItems="center" display="block" justifyContent="center" width={40}>
62
- {type === "dismiss" && (
64
+ if (type === CUSTOM_BUTTON) {
65
+ return (
66
+ <Button
67
+ {...customButtonProps}
68
+ color={customButtonProps?.color ?? "primary"}
69
+ size={customButtonProps?.size ?? "sm"}
70
+ text={customButtonProps?.text ?? ""}
71
+ onClick={onClick}
72
+ />
73
+ );
74
+ } else if (type === ACTION) {
75
+ return (
76
+ <Box alignItems="center" display="block" justifyContent="center" width={40}>
63
77
  <IconButton
64
78
  accessibilityLabel=""
65
- icon="times-circle"
79
+ icon="arrow-right"
66
80
  iconColor={textColor as ButtonColor}
67
81
  prefix="fas"
68
- onClick={dismiss}
82
+ onClick={(): void => onClick?.()}
69
83
  />
70
- )}
71
- {type === "action" && (
84
+ </Box>
85
+ );
86
+ } else if (type === DISMISS) {
87
+ return (
88
+ <Box alignItems="center" display="block" justifyContent="center" width={40}>
72
89
  <IconButton
73
90
  accessibilityLabel=""
74
- icon="arrow-right"
91
+ icon="times-circle"
75
92
  iconColor={textColor as ButtonColor}
76
93
  prefix="fas"
77
- onClick={(): void => onClick?.()}
94
+ onClick={dismiss}
78
95
  />
79
- )}
80
- </Box>
81
- );
96
+ </Box>
97
+ );
98
+ } else {
99
+ return null;
100
+ }
82
101
  };
83
102
 
84
103
  if (!show) {
85
104
  return null;
86
105
  }
87
106
 
88
- if (type === "action" && !onClick) {
107
+ if ((type === ACTION && !onClick) || (type === CUSTOM_BUTTON && !onClick)) {
89
108
  console.warn("Banners with type action require an onClick property.");
90
109
  }
91
110
 
@@ -107,10 +126,10 @@ export const Banner = ({
107
126
  rounding={shape}
108
127
  shadow
109
128
  width={width || Unifier.utils.dimensions().width || "100%"}
110
- onClick={type === "permanent" ? undefined : dismiss}
129
+ onClick={type === DISMISS ? dismiss : undefined}
111
130
  >
112
131
  {iconName && (
113
- <Box justifyContent="center" marginRight={2} width={32}>
132
+ <Box justifyContent="center" width={32}>
114
133
  <Icon color={textColor} name={iconName} size="lg" />
115
134
  </Box>
116
135
  )}
package/src/Button.tsx CHANGED
@@ -27,12 +27,14 @@ const buttonTextColor: {[buttonColor: string]: "white" | "darkGray"} = {
27
27
  };
28
28
 
29
29
  const HEIGHTS = {
30
+ xs: 30,
30
31
  sm: 36,
31
32
  md: 40,
32
33
  lg: 48,
33
34
  };
34
35
 
35
36
  export function Button({
37
+ alignSelf,
36
38
  disabled = false,
37
39
  type = "solid",
38
40
  loading: propsLoading,
@@ -109,7 +111,7 @@ export function Button({
109
111
 
110
112
  const renderButton = () => {
111
113
  return (
112
- <View>
114
+ <View style={{alignSelf: inline === true ? undefined : alignSelf}}>
113
115
  <Pressable
114
116
  disabled={disabled || loading}
115
117
  style={{
@@ -126,7 +128,7 @@ export function Button({
126
128
  borderWidth: type === "outline" ? 2 : 0,
127
129
  opacity: disabled ? 0.4 : 1,
128
130
  flexDirection: "row",
129
- paddingHorizontal: 8 * 2,
131
+ paddingHorizontal: size === "xs" ? 6 : size === "sm" ? 12 : 8 * 2,
130
132
  }}
131
133
  testID={testID}
132
134
  onPress={debounce(
@@ -150,12 +152,12 @@ export function Button({
150
152
  )}
151
153
  >
152
154
  {icon !== undefined && (
153
- <Box paddingX={2}>
155
+ <Box marginRight={2}>
154
156
  <Icon
155
157
  color={getTextColor(color as Color)}
156
158
  name={icon}
157
159
  prefix={iconPrefix || "far"}
158
- size={size}
160
+ size={size === "xs" ? "sm" : size}
159
161
  />
160
162
  </Box>
161
163
  )}
@@ -166,7 +168,7 @@ export function Button({
166
168
  color={getTextColor(color as Color)}
167
169
  font="button"
168
170
  inline={inline}
169
- size={size}
171
+ size={size === "xs" ? "sm" : size}
170
172
  skipLinking
171
173
  weight="bold"
172
174
  >
package/src/Common.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import {SaveFormat} from "expo-image-manipulator";
2
2
  import React, {ReactElement, ReactNode, SyntheticEvent} from "react";
3
3
  import {ListRenderItemInfo, StyleProp, ViewStyle} from "react-native";
4
- import {DimensionValue} from "react-native/Libraries/StyleSheet/StyleSheetTypes";
4
+ import {DimensionValue, FlexStyle} from "react-native/Libraries/StyleSheet/StyleSheetTypes";
5
5
  import {Styles} from "react-native-google-places-autocomplete";
6
6
 
7
7
  import {SelectListOptions} from "./SelectList";
@@ -1706,7 +1706,7 @@ export const iconSizeToNumber = (size?: IconSize) => {
1706
1706
  }[size || "md"];
1707
1707
  };
1708
1708
 
1709
- export type TextSize = "sm" | "md" | "lg";
1709
+ export type TextSize = "xs" | "sm" | "md" | "lg";
1710
1710
  export type TextColor =
1711
1711
  | "blue"
1712
1712
  | "darkGray"
@@ -2585,19 +2585,25 @@ export interface AvatarProps {
2585
2585
  }
2586
2586
 
2587
2587
  export interface BadgeProps {
2588
+ // If `type` is set to "custom", a custom theme color should be provided.
2589
+ color?: AllColors;
2590
+ fontColor?: AllColors; // default "white"
2591
+ fontWeight?: TextProps["weight"]; // default "bold"
2592
+ iconProps?: IconProps;
2588
2593
  // The text to display inside the badge.
2589
- title: string;
2594
+ title?: string;
2590
2595
  // Position relative to the text. Top should only be used with headings.
2591
- position?: "top" | "middle"; // default "middle"
2596
+ position?: "bottom" | "top" | "middle"; // default "middle"
2597
+ rounding?: Rounding;
2598
+ size?: "xs" | "sm" | "md" | "lg"; // default "xs'
2592
2599
  // Some default badge types. Occasionally, a custom badge might be required for different color
2593
2600
  // schemes.
2594
2601
  type?: "info" | "error" | "warning" | "success" | "neutral" | "custom"; // default "info
2595
- // If `type` is set to "custom", a custom theme color should be provided.
2596
- color?: AllColors;
2597
2602
  }
2598
2603
 
2599
2604
  export interface BannerProps {
2600
2605
  id: string;
2606
+ customButtonProps?: Partial<ButtonProps>;
2601
2607
  color?: BoxColor;
2602
2608
  dismissible?: boolean;
2603
2609
  iconName?: IconName;
@@ -2607,7 +2613,7 @@ export interface BannerProps {
2607
2613
  subtext?: string;
2608
2614
  text: string;
2609
2615
  textColor?: TextColor;
2610
- type?: "dismiss" | "action" | "permanent";
2616
+ type?: "dismiss" | "action" | "permanent" /* deprectiated */ | "customButton";
2611
2617
  width?: number | string;
2612
2618
  }
2613
2619
 
@@ -2621,6 +2627,7 @@ export interface BodyProps {
2621
2627
  }
2622
2628
 
2623
2629
  export interface ButtonProps {
2630
+ alignSelf?: FlexStyle["alignSelf"];
2624
2631
  children?: React.ReactElement;
2625
2632
  text: string;
2626
2633
  // TODO make this work for all colors
@@ -2628,7 +2635,7 @@ export interface ButtonProps {
2628
2635
  // default gray
2629
2636
  disabled?: boolean; // default false
2630
2637
  inline?: boolean; // default false
2631
- size?: "sm" | "md" | "lg"; // default md
2638
+ size?: "xs" | "sm" | "md" | "lg"; // default md
2632
2639
  type?: "solid" | "ghost" | "outline"; // default solid
2633
2640
  loading?: boolean;
2634
2641
  onClick: any;
@@ -2769,6 +2776,7 @@ export interface IconButtonProps {
2769
2776
  idealDirection?: TooltipDirection;
2770
2777
  };
2771
2778
  indicator?: boolean;
2779
+ indicatorNumber?: number;
2772
2780
  indicatorStyle?: {position: IndicatorDirection; color: AllColors};
2773
2781
  testID?: string;
2774
2782
  }
@@ -1,6 +1,7 @@
1
1
  import React, {forwardRef, useContext, useState} from "react";
2
2
  import {Platform, Pressable, View, ViewStyle} from "react-native";
3
3
 
4
+ import {Box} from "./Box";
4
5
  import {IconButtonProps, iconSizeToNumber} from "./Common";
5
6
  import {Icon} from "./Icon";
6
7
  import {Modal} from "./Modal";
@@ -24,6 +25,7 @@ export const IconButton = forwardRef(
24
25
  confirmationHeading = "Confirm",
25
26
  tooltip,
26
27
  indicator,
28
+ indicatorNumber,
27
29
  indicatorStyle = {position: "bottomRight", color: "primary"},
28
30
  testID,
29
31
  }: IconButtonProps,
@@ -51,6 +53,52 @@ export const IconButton = forwardRef(
51
53
 
52
54
  const indicatorPosition = {position: "absolute", ...IndicatorPosition[indicatorStyle.position]};
53
55
 
56
+ const IndicatorNumPosition = {
57
+ bottomRight: {bottom: "18%", right: "12%"},
58
+ bottomLeft: {bottom: "10%", left: "10%"},
59
+ topRight: {top: "-5%", right: "-5%"},
60
+ topLeft: {top: "10%", left: "10%"},
61
+ };
62
+
63
+ const numberIndicatorProps = {
64
+ position: "absolute",
65
+ ...IndicatorNumPosition[indicatorStyle.position],
66
+ };
67
+
68
+ function renderIndicator(): React.ReactElement | null {
69
+ if (indicator && indicatorNumber && indicatorNumber > 0) {
70
+ return (
71
+ <View style={numberIndicatorProps as ViewStyle}>
72
+ <Box
73
+ alignItems="center"
74
+ color={indicatorStyle.color}
75
+ dangerouslySetInlineStyle={{
76
+ __style: {
77
+ padding: indicatorNumber && indicatorNumber > 9 ? 2 : 0,
78
+ },
79
+ }}
80
+ justifyContent="center"
81
+ minHeight={15}
82
+ minWidth={15}
83
+ rounding="pill"
84
+ >
85
+ <Text color="white" size="sm" weight="bold">
86
+ {indicatorNumber}
87
+ </Text>
88
+ </Box>
89
+ </View>
90
+ );
91
+ } else if (indicator) {
92
+ return (
93
+ <View style={indicatorPosition as ViewStyle}>
94
+ <Icon color={indicatorStyle.color} name="circle" prefix={prefix || "fas"} size="sm" />
95
+ </View>
96
+ );
97
+ } else {
98
+ return null;
99
+ }
100
+ }
101
+
54
102
  const renderConfirmation = () => {
55
103
  return (
56
104
  <Modal
@@ -104,16 +152,7 @@ export const IconButton = forwardRef(
104
152
  }}
105
153
  >
106
154
  <Icon color={iconColor} name={icon} prefix={prefix || "fas"} size={size} />
107
- {indicator && (
108
- <View style={indicatorPosition as ViewStyle}>
109
- <Icon
110
- color={indicatorStyle.color}
111
- name="circle"
112
- prefix={prefix || "fas"}
113
- size="sm"
114
- />
115
- </View>
116
- )}
155
+ {renderIndicator()}
117
156
  </Pressable>
118
157
 
119
158
  {Boolean(withConfirmation) && renderConfirmation()}
package/src/Text.tsx CHANGED
@@ -6,6 +6,7 @@ import {Hyperlink} from "./Hyperlink";
6
6
  import {ThemeContext} from "./Theme";
7
7
 
8
8
  const fontSizes = {
9
+ xs: 10,
9
10
  sm: 12,
10
11
  md: 14,
11
12
  lg: 16,