ferns-ui 0.3.1 → 0.4.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.
@@ -0,0 +1,25 @@
1
+ import React from "react";
2
+ interface AvatarProps {
3
+ /**
4
+ * The name of the user. This is used for the placeholder treatment if an image is not available.
5
+ */
6
+ name: string;
7
+ /**
8
+ * Override the generated initials from `name`.
9
+ */
10
+ initials?: string;
11
+ /**
12
+ * Adds a white border around Avatar so it's visible when displayed on other images.
13
+ */
14
+ outline?: boolean;
15
+ /**
16
+ * xs: 24px, sm: 32px, md: 48px, lg: 64px, xl: 120px.
17
+ */
18
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
19
+ /**
20
+ * The URL of the user's image.
21
+ */
22
+ src?: string;
23
+ }
24
+ export declare const Avatar: (props: AvatarProps) => React.ReactElement;
25
+ export {};
package/dist/Avatar.js ADDED
@@ -0,0 +1,48 @@
1
+ import React, { useState } from "react";
2
+ import { Image, Text, View } from "react-native";
3
+ import { Box } from "./Box";
4
+ import { Unifier } from "./Unifier";
5
+ const sizes = {
6
+ xs: 24,
7
+ sm: 32,
8
+ md: 48,
9
+ lg: 64,
10
+ xl: 120,
11
+ };
12
+ export const Avatar = (props) => {
13
+ const [isImageLoaded, setIsImageLoaded] = useState(true);
14
+ const { name, initials, outline, size = "md", src } = props;
15
+ const width = sizes[size];
16
+ const height = sizes[size];
17
+ const radius = sizes[size] / 2;
18
+ const fontSize = sizes[size] / 2;
19
+ const computedInitials = initials !== null && initials !== void 0 ? initials : name.match(/(^\S\S?|\s\S)?/g)
20
+ .map((v) => v.trim())
21
+ .join("")
22
+ .match(/(^\S|\S$)?/g)
23
+ .join("")
24
+ .toLocaleUpperCase();
25
+ const handleImageError = () => setIsImageLoaded(false);
26
+ return (React.createElement(Box, { border: outline ? "white" : undefined, height: height, overflow: "hidden", position: "relative", rounding: "circle", width: width }, src && isImageLoaded ? (
27
+ // TODO: Make our Image component rounding work so that we can use it for Avatar. Currently it creates an
28
+ // unrounded box around the Image.
29
+ React.createElement(Image, { resizeMode: "contain", source: { uri: src, cache: "force-cache" }, style: {
30
+ borderRadius: radius,
31
+ height,
32
+ width,
33
+ display: "flex",
34
+ alignItems: "center",
35
+ justifyContent: "center",
36
+ overflow: "hidden",
37
+ }, onError: handleImageError })) : (React.createElement(View, { style: {
38
+ height,
39
+ width,
40
+ borderRadius: radius,
41
+ display: "flex",
42
+ alignItems: "center",
43
+ justifyContent: "center",
44
+ backgroundColor: Unifier.theme.gray,
45
+ } },
46
+ React.createElement(Text, { style: { fontSize, color: Unifier.theme.darkGray } }, computedInitials)))));
47
+ };
48
+ //# sourceMappingURL=Avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.js","sourceRoot":"","sources":["../src/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,QAAQ,EAAC,MAAM,OAAO,CAAC;AACtC,OAAO,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,MAAM,KAAK,GAAG;IACZ,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,GAAG;CACR,CAAC;AAyBF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAkB,EAAsB,EAAE;IAC/D,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,EAAC,GAAG,KAAK,CAAC;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,gBAAgB,GACpB,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GACP,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAS;SACnC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAC5B,IAAI,CAAC,EAAE,CAAC;SACR,KAAK,CAAC,aAAa,CAAC;SACpB,IAAI,CAAC,EAAE,CAAC;SACR,iBAAiB,EAAE,CAAC;IAEzB,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACvD,OAAO,CACL,oBAAC,GAAG,IACF,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAC,QAAQ,EACjB,QAAQ,EAAC,UAAU,EACnB,QAAQ,EAAC,QAAQ,EACjB,KAAK,EAAE,KAAK,IAEX,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC;IACtB,yGAAyG;IACzG,mCAAmC;IACnC,oBAAC,KAAK,IACJ,UAAU,EAAC,SAAS,EACpB,MAAM,EAAE,EAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAC,EACxC,KAAK,EAAE;YACL,YAAY,EAAE,MAAM;YACpB,MAAM;YACN,KAAK;YACL,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;YACxB,QAAQ,EAAE,QAAQ;SACnB,EACD,OAAO,EAAE,gBAAgB,GACzB,CACH,CAAC,CAAC,CAAC,CACF,oBAAC,IAAI,IACH,KAAK,EAAE;YACL,MAAM;YACN,KAAK;YACL,YAAY,EAAE,MAAM;YACpB,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;YACxB,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI;SACpC;QAED,oBAAC,IAAI,IAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAC,IAAG,gBAAgB,CAAQ,CAC5E,CACR,CACG,CACP,CAAC;AACJ,CAAC,CAAC"}
package/dist/Common.d.ts CHANGED
@@ -437,7 +437,7 @@ export interface SpinnerProps {
437
437
  color?: Color;
438
438
  }
439
439
  export interface MaskProps {
440
- children?: React.ReactNode;
440
+ children?: React.ReactElement;
441
441
  shape?: "circle" | "rounded" | "square";
442
442
  height?: number | string;
443
443
  width?: number | string;
package/dist/Mask.d.ts CHANGED
@@ -1,5 +1,3 @@
1
1
  import React from "react";
2
2
  import { MaskProps } from "./Common";
3
- export declare class Mask extends React.Component<MaskProps, {}> {
4
- render(): React.ReactNode;
5
- }
3
+ export declare function Mask(props: MaskProps): React.ReactElement | null;
package/dist/Mask.js CHANGED
@@ -1,22 +1,19 @@
1
1
  import React from "react";
2
- export class Mask extends React.Component {
3
- render() {
4
- // if (this.props.shape === "rounded") {
5
- // return <Box style={{overflow: "hidden", borderRadius: 12}}>{this.props.children}</Box>;
6
- // } else if (this.props.shape === "circle") {
7
- // return <Box style={{overflow: "hidden", borderRadius: 1000}}>{this.props.children}</Box>;
8
- // }
9
- // if (this.props.rounding) {
10
- // let rounding = this.props.rounding === "circle" ? 100 : this.props.rounding;
11
- // // Subtract 1 from rounding because of some very odd rendering.
12
- // return (
13
- // // <View style={{borderRadius: (rounding - 1) * 4, overflow: "visible"}}>
14
- // <View>{this.props.children}</View>
15
- // // </View>
16
- // );
17
- // } else {
18
- return this.props.children;
19
- // }
2
+ import { View } from "react-native";
3
+ export function Mask(props) {
4
+ if (props.shape === "rounded") {
5
+ return React.createElement(View, { style: { overflow: "hidden", borderRadius: 12 } }, props.children);
6
+ }
7
+ else if (props.shape === "circle") {
8
+ return React.createElement(View, { style: { overflow: "hidden", borderRadius: 1000 } }, props.children);
9
+ }
10
+ if (props.rounding) {
11
+ const rounding = props.rounding === "circle" ? 100 : props.rounding;
12
+ // Subtract 1 from rounding because of some very odd rendering.
13
+ return (React.createElement(View, { style: { borderRadius: (rounding - 1) * 4, overflow: "visible" } }, props.children));
14
+ }
15
+ else {
16
+ return props.children || null;
20
17
  }
21
18
  }
22
19
  //# sourceMappingURL=Mask.js.map
package/dist/Mask.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Mask.js","sourceRoot":"","sources":["../src/Mask.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,OAAO,IAAK,SAAQ,KAAK,CAAC,SAAwB;IACtD,MAAM;QACJ,wCAAwC;QACxC,4FAA4F;QAC5F,8CAA8C;QAC9C,8FAA8F;QAC9F,IAAI;QACJ,6BAA6B;QAC7B,iFAAiF;QACjF,oEAAoE;QACpE,aAAa;QACb,gFAAgF;QAChF,2CAA2C;QAC3C,iBAAiB;QACjB,OAAO;QACP,WAAW;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3B,IAAI;IACN,CAAC;CACF"}
1
+ {"version":3,"file":"Mask.js","sourceRoot":"","sources":["../src/Mask.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,IAAI,EAAC,MAAM,cAAc,CAAC;AAIlC,MAAM,UAAU,IAAI,CAAC,KAAgB;IACnC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE;QAC7B,OAAO,oBAAC,IAAI,IAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAC,IAAG,KAAK,CAAC,QAAQ,CAAQ,CAAC;KACrF;SAAM,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE;QACnC,OAAO,oBAAC,IAAI,IAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAC,IAAG,KAAK,CAAC,QAAQ,CAAQ,CAAC;KACvF;IACD,IAAI,KAAK,CAAC,QAAQ,EAAE;QAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QACpE,+DAA+D;QAC/D,OAAO,CACL,oBAAC,IAAI,IAAC,KAAK,EAAE,EAAC,YAAY,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAC,IAAG,KAAK,CAAC,QAAQ,CAAQ,CAC9F,CAAC;KACH;SAAM;QACL,OAAO,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC;KAC/B;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./Common";
2
+ export * from "./Avatar";
2
3
  export * from "./Banner";
3
4
  export * from "./BlurBox";
4
5
  export * from "./Body";
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./Common";
2
+ export * from "./Avatar";
2
3
  export * from "./Banner";
3
4
  export * from "./BlurBox";
4
5
  export * from "./Body";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,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,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,4BAA4B;AAC5B,4BAA4B;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,2BAA2B;AAE3B,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,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,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,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,4BAA4B;AAC5B,4BAA4B;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,2BAA2B;AAE3B,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,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ferns-ui",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "main": "dist/index.js",
5
5
  "license": "Apache-2.0",
6
6
  "scripts": {
package/src/Avatar.tsx ADDED
@@ -0,0 +1,98 @@
1
+ import React, {useState} from "react";
2
+ import {Image, Text, View} from "react-native";
3
+
4
+ import {Box} from "./Box";
5
+ import {Unifier} from "./Unifier";
6
+
7
+ const sizes = {
8
+ xs: 24,
9
+ sm: 32,
10
+ md: 48,
11
+ lg: 64,
12
+ xl: 120,
13
+ };
14
+
15
+ interface AvatarProps {
16
+ /**
17
+ * The name of the user. This is used for the placeholder treatment if an image is not available.
18
+ */
19
+ name: string;
20
+ /**
21
+ * Override the generated initials from `name`.
22
+ */
23
+ initials?: string;
24
+ /**
25
+ * Adds a white border around Avatar so it's visible when displayed on other images.
26
+ */
27
+ outline?: boolean;
28
+ /**
29
+ * xs: 24px, sm: 32px, md: 48px, lg: 64px, xl: 120px.
30
+ */
31
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
32
+ /**
33
+ * The URL of the user's image.
34
+ */
35
+ src?: string;
36
+ }
37
+
38
+ export const Avatar = (props: AvatarProps): React.ReactElement => {
39
+ const [isImageLoaded, setIsImageLoaded] = useState(true);
40
+ const {name, initials, outline, size = "md", src} = props;
41
+ const width = sizes[size];
42
+ const height = sizes[size];
43
+ const radius = sizes[size] / 2;
44
+ const fontSize = sizes[size] / 2;
45
+ const computedInitials =
46
+ initials ??
47
+ (name.match(/(^\S\S?|\s\S)?/g) as any)
48
+ .map((v: string) => v.trim())
49
+ .join("")
50
+ .match(/(^\S|\S$)?/g)
51
+ .join("")
52
+ .toLocaleUpperCase();
53
+
54
+ const handleImageError = () => setIsImageLoaded(false);
55
+ return (
56
+ <Box
57
+ border={outline ? "white" : undefined}
58
+ height={height}
59
+ overflow="hidden"
60
+ position="relative"
61
+ rounding="circle"
62
+ width={width}
63
+ >
64
+ {src && isImageLoaded ? (
65
+ // TODO: Make our Image component rounding work so that we can use it for Avatar. Currently it creates an
66
+ // unrounded box around the Image.
67
+ <Image
68
+ resizeMode="contain"
69
+ source={{uri: src, cache: "force-cache"}}
70
+ style={{
71
+ borderRadius: radius,
72
+ height,
73
+ width,
74
+ display: "flex",
75
+ alignItems: "center",
76
+ justifyContent: "center",
77
+ overflow: "hidden",
78
+ }}
79
+ onError={handleImageError}
80
+ />
81
+ ) : (
82
+ <View
83
+ style={{
84
+ height,
85
+ width,
86
+ borderRadius: radius,
87
+ display: "flex",
88
+ alignItems: "center",
89
+ justifyContent: "center",
90
+ backgroundColor: Unifier.theme.gray,
91
+ }}
92
+ >
93
+ <Text style={{fontSize, color: Unifier.theme.darkGray}}>{computedInitials}</Text>
94
+ </View>
95
+ )}
96
+ </Box>
97
+ );
98
+ };
package/src/Common.ts CHANGED
@@ -776,7 +776,7 @@ export interface SpinnerProps {
776
776
  }
777
777
 
778
778
  export interface MaskProps {
779
- children?: React.ReactNode;
779
+ children?: React.ReactElement;
780
780
  shape?: "circle" | "rounded" | "square";
781
781
  height?: number | string;
782
782
  width?: number | string;
package/src/Mask.tsx CHANGED
@@ -1,24 +1,21 @@
1
1
  import React from "react";
2
+ import {View} from "react-native";
2
3
 
3
4
  import {MaskProps} from "./Common";
4
5
 
5
- export class Mask extends React.Component<MaskProps, {}> {
6
- render() {
7
- // if (this.props.shape === "rounded") {
8
- // return <Box style={{overflow: "hidden", borderRadius: 12}}>{this.props.children}</Box>;
9
- // } else if (this.props.shape === "circle") {
10
- // return <Box style={{overflow: "hidden", borderRadius: 1000}}>{this.props.children}</Box>;
11
- // }
12
- // if (this.props.rounding) {
13
- // let rounding = this.props.rounding === "circle" ? 100 : this.props.rounding;
14
- // // Subtract 1 from rounding because of some very odd rendering.
15
- // return (
16
- // // <View style={{borderRadius: (rounding - 1) * 4, overflow: "visible"}}>
17
- // <View>{this.props.children}</View>
18
- // // </View>
19
- // );
20
- // } else {
21
- return this.props.children;
22
- // }
6
+ export function Mask(props: MaskProps): React.ReactElement | null {
7
+ if (props.shape === "rounded") {
8
+ return <View style={{overflow: "hidden", borderRadius: 12}}>{props.children}</View>;
9
+ } else if (props.shape === "circle") {
10
+ return <View style={{overflow: "hidden", borderRadius: 1000}}>{props.children}</View>;
11
+ }
12
+ if (props.rounding) {
13
+ const rounding = props.rounding === "circle" ? 100 : props.rounding;
14
+ // Subtract 1 from rounding because of some very odd rendering.
15
+ return (
16
+ <View style={{borderRadius: (rounding - 1) * 4, overflow: "visible"}}>{props.children}</View>
17
+ );
18
+ } else {
19
+ return props.children || null;
23
20
  }
24
21
  }
package/src/index.tsx CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./Common";
2
+ export * from "./Avatar";
2
3
  export * from "./Banner";
3
4
  export * from "./BlurBox";
4
5
  export * from "./Body";