ferns-ui 0.3.1 → 0.4.2

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/checkDeps.js ADDED
@@ -0,0 +1,19 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
2
+ const pkg = require("./package.json");
3
+ if (require.main === module) {
4
+ let errors = 0;
5
+ for (const peerDep of Object.keys(pkg.peerDependencies)) {
6
+ if (pkg.devDependencies[peerDep] !== pkg.peerDependencies[peerDep]) {
7
+ console.error(
8
+ `Peer Dependency ${peerDep} is ${pkg.peerDependencies[peerDep]} not equal to ` +
9
+ `Dev Dependency ${pkg.devDependencies[peerDep]}`
10
+ );
11
+ errors += 1;
12
+ }
13
+ }
14
+ if (errors > 0) {
15
+ process.exit(1);
16
+ }
17
+ } else {
18
+ console.error("Must be run as a module");
19
+ }
@@ -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/Button.js CHANGED
@@ -94,7 +94,7 @@ export class Button extends React.Component {
94
94
  this.props.icon !== undefined && (React.createElement(Box, { paddingX: 2 },
95
95
  React.createElement(Icon, { color: this.getTextColor(this.props.color), name: this.props.icon, prefix: this.props.iconPrefix || "far", size: this.props.size }))),
96
96
  Boolean(this.props.children) && this.props.children,
97
- Boolean(this.props.text) && (React.createElement(Text, { color: this.getTextColor(color), inline: this.props.inline, size: this.props.size, skipLinking: true, weight: "bold" }, this.props.text)),
97
+ Boolean(this.props.text) && (React.createElement(Text, { color: this.getTextColor(color), font: "button", inline: this.props.inline, size: this.props.size, skipLinking: true, weight: "bold" }, this.props.text)),
98
98
  (this.state.loading || this.props.loading) && (React.createElement(Box, { marginLeft: 2 },
99
99
  React.createElement(ActivityIndicator, { color: this.getTextColor(color), size: "small" })))));
100
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../src/Button.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../src/Button.tsx"],"names":[],"mappings":"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"}
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;
@@ -1 +1 @@
1
- {"version":3,"file":"Common.js","sourceRoot":"","sources":["../src/Common.ts"],"names":[],"mappings":"AAkVA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC;AAkBzB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAe,EAAE,EAAE;IAClD,OAAO;QACL,EAAE,EAAE,CAAC;QACL,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;KACP,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAI,GAAG,EAAE,EAAY,EAAE;IACtD,IAAI,QAAkB,CAAC;IACvB,IAAI,IAAI,GAAG,CAAC,EAAE;QACZ,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM;QACL,QAAQ,GAAG,IAAI,CAAC;KACjB;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,OAAgE;IAC9F,OAAO,CAAC;QACN,SAAS,EAAE,QAAQ;QACnB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,KAAK;QACZ,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,MAAM;KACjB,CAAC,OAAO,CAAC,IAAI,MAAM,CAAU,CAAC;AACjC,CAAC;AAk7BD,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC9C,OAAO,CACL,OAAO;QACP,OAAO,CAAC,KAAK;QACb,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CACrF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Common.js","sourceRoot":"","sources":["../src/Common.ts"],"names":[],"mappings":"AAmVA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC;AAkBzB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAe,EAAE,EAAE;IAClD,OAAO;QACL,EAAE,EAAE,CAAC;QACL,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;KACP,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAI,GAAG,EAAE,EAAY,EAAE;IACtD,IAAI,QAAkB,CAAC;IACvB,IAAI,IAAI,GAAG,CAAC,EAAE;QACZ,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM;QACL,QAAQ,GAAG,IAAI,CAAC;KACjB;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,OAAgE;IAC9F,OAAO,CAAC;QACN,SAAS,EAAE,QAAQ;QACnB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,KAAK;QACZ,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,MAAM;KACjB,CAAC,OAAO,CAAC,IAAI,MAAM,CAAU,CAAC;AACjC,CAAC;AAk7BD,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC9C,OAAO,CACL,OAAO;QACP,OAAO,CAAC,KAAK;QACb,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CACrF,CAAC;AACJ,CAAC"}
package/dist/Heading.js CHANGED
@@ -16,7 +16,7 @@ export class Heading extends React.Component {
16
16
  // if (this.props.bold) {
17
17
  // font += "Bold";
18
18
  // }
19
- style.fontFamily = Unifier.theme.primaryBoldFont;
19
+ style.fontFamily = Unifier.theme.titleFont;
20
20
  style.fontSize = this.fontSizes[this.props.size || "md"];
21
21
  if (this.props.align) {
22
22
  style.textAlign = this.props.align;
@@ -1 +1 @@
1
- {"version":3,"file":"Heading.js","sourceRoot":"","sources":["../src/Heading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,IAAI,IAAI,UAAU,EAAC,MAAM,cAAc,CAAC;AAGhD,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,MAAM,OAAO,OAAQ,SAAQ,KAAK,CAAC,SAA2B;IAA9D;;QACE,cAAS,GAAG;YACV,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;SACP,CAAC;IAyCJ,CAAC;IAvCC,YAAY;QACV,MAAM,KAAK,GAAQ,EAAE,CAAC;QAEtB,2CAA2C;QAC3C,yBAAyB;QACzB,oBAAoB;QACpB,IAAI;QACJ,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;QAEjD,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACpB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;SACpC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACpB,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC/C;aAAM;YACL,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;SACtC;QACD,gDAAgD;QAChD,8DAA8D;QAC9D,6BAA6B;QAC7B,IAAI;QAEJ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM;QACJ,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,kCAAkC;QAClC,sCAAsC;QACtC,kCAAkC;QAClC,eAAe;QACf,IAAI;QACJ,OAAO,CACL,oBAAC,UAAU,IAAC,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IACzD,IAAI,CAAC,KAAK,CAAC,QAAQ,CACT,CACd,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"Heading.js","sourceRoot":"","sources":["../src/Heading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,IAAI,IAAI,UAAU,EAAC,MAAM,cAAc,CAAC;AAGhD,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,MAAM,OAAO,OAAQ,SAAQ,KAAK,CAAC,SAA2B;IAA9D;;QACE,cAAS,GAAG;YACV,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;SACP,CAAC;IAyCJ,CAAC;IAvCC,YAAY;QACV,MAAM,KAAK,GAAQ,EAAE,CAAC;QAEtB,2CAA2C;QAC3C,yBAAyB;QACzB,oBAAoB;QACpB,IAAI;QACJ,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QAE3C,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACpB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;SACpC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACpB,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC/C;aAAM;YACL,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;SACtC;QACD,gDAAgD;QAChD,8DAA8D;QAC9D,6BAA6B;QAC7B,IAAI;QAEJ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM;QACJ,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,kCAAkC;QAClC,sCAAsC;QACtC,kCAAkC;QAClC,eAAe;QACf,IAAI;QACJ,OAAO,CACL,oBAAC,UAAU,IAAC,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IACzD,IAAI,CAAC,KAAK,CAAC,QAAQ,CACT,CACd,CAAC;IACJ,CAAC;CACF"}
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/Text.js CHANGED
@@ -14,7 +14,7 @@ export class Text extends React.Component {
14
14
  propsToStyle() {
15
15
  const style = {};
16
16
  let font = "primaryFont";
17
- if (this.props.font === "primary") {
17
+ if (this.props.font === "primary" || !this.props.font) {
18
18
  if (this.props.weight === "bold") {
19
19
  font = "primaryBoldFont";
20
20
  }
package/dist/Text.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Text.js","sourceRoot":"","sources":["../src/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,IAAI,IAAI,UAAU,EAAC,MAAM,cAAc,CAAC;AAGhD,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,MAAM,OAAO,IAAK,SAAQ,KAAK,CAAC,SAAwB;IAAxD;;QACE,cAAS,GAAG;YACV,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;SACP,CAAC;IA8EJ,CAAC;IA5EC,YAAY;QACV,MAAM,KAAK,GAAQ,EAAE,CAAC;QAEtB,IAAI,IAAI,GAQU,aAAa,CAAC;QAChC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;YACjC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;gBAChC,IAAI,GAAG,iBAAiB,CAAC;aAC1B;iBAAM;gBACL,IAAI,GAAG,aAAa,CAAC;aACtB;SACF;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;YAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;gBAChC,IAAI,GAAG,mBAAmB,CAAC;aAC5B;iBAAM;gBACL,IAAI,GAAG,eAAe,CAAC;aACxB;SACF;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;YACvC,IAAI,GAAG,YAAY,CAAC;SACrB;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YACtC,IAAI,GAAG,WAAW,CAAC;SACpB;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;YACvC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;gBAChC,IAAI,GAAG,gBAAgB,CAAC;aACzB;iBAAM;gBACL,IAAI,GAAG,YAAY,CAAC;aACrB;SACF;QAED,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEvC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACpB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;SACpC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACpB,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC/C;aAAM;YACL,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;SACtC;QACD,gDAAgD;QAChD,8DAA8D;QAC9D,6BAA6B;QAC7B,IAAI;QACJ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM;QACJ,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC5B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;SAClC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC5B,KAAK,GAAG,CAAC,CAAC;SACX;QACD,MAAM,KAAK,GAAG,CACZ,oBAAC,UAAU,IAAC,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IACzD,IAAI,CAAC,KAAK,CAAC,QAAQ,CACT,CACd,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAC1B,OAAO,KAAK,CAAC;SACd;aAAM;YACL,OAAO,CACL,oBAAC,SAAS,IAAC,WAAW,QAAC,SAAS,EAAE,EAAC,kBAAkB,EAAE,WAAW,EAAC,IAChE,KAAK,CACI,CACb,CAAC;SACH;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"Text.js","sourceRoot":"","sources":["../src/Text.tsx"],"names":[],"mappings":"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"}
package/dist/Unifier.d.ts CHANGED
@@ -1,17 +1,22 @@
1
1
  import { PermissionKind, UnifiedTheme } from "./Common";
2
2
  export declare type PlatformOS = "ios" | "android" | "web";
3
+ declare type Luminance = "light" | "lighter" | "dark" | "darker";
4
+ export declare function changeColorLuminance(hex: string, luminanceChange: Luminance): string;
3
5
  declare class UnifierClass {
4
6
  private _theme?;
5
7
  private _web;
6
8
  private _dev;
7
9
  get web(): boolean;
8
10
  get dev(): boolean;
11
+ private get fontMap();
12
+ private calculateLuminances;
9
13
  setTheme(theme: Partial<UnifiedTheme>): void;
10
14
  get theme(): UnifiedTheme;
11
15
  constructor();
12
16
  navigation: {
13
17
  dismissOverlay: () => void;
14
18
  };
19
+ loadFonts: () => Promise<void>;
15
20
  utils: {
16
21
  dismissKeyboard: () => void;
17
22
  dimensions: () => {
@@ -19,7 +24,7 @@ declare class UnifierClass {
19
24
  height: number;
20
25
  };
21
26
  copyToClipboard: (text: string) => void;
22
- orientationChange: (callback: (orentation: "portrait" | "landscape") => void) => void;
27
+ orientationChange: (callback: (orientation: "portrait" | "landscape") => void) => void;
23
28
  requestPermissions: (_perm: PermissionKind) => Promise<import("./Common").PermissionStatus>;
24
29
  makePurchase: () => void;
25
30
  PaymentService: () => void;
package/dist/Unifier.js CHANGED
@@ -1,9 +1,13 @@
1
1
  /* eslint-disable @typescript-eslint/no-unused-vars */
2
2
  /* eslint-disable @typescript-eslint/no-empty-function */
3
3
  import AsyncStorage from "@react-native-async-storage/async-storage";
4
+ import * as Font from "expo-font";
4
5
  import { Clipboard, Dimensions, Keyboard, Linking, Platform, Vibration } from "react-native";
5
6
  import ReactNativeHapticFeedback from "react-native-haptic-feedback";
6
7
  import { requestPermissions } from "./Permissions";
8
+ function capitalize(string) {
9
+ return string.charAt(0).toUpperCase() + string.slice(1);
10
+ }
7
11
  const DEFAULT_FONT = "Cochin";
8
12
  const DEFAULT_BOLD_FONT = "Cochin";
9
13
  const DefaultTheme = {
@@ -75,6 +79,54 @@ const DefaultTheme = {
75
79
  buttonFont: DEFAULT_FONT,
76
80
  titleFont: DEFAULT_FONT,
77
81
  };
82
+ const fontKeys = [
83
+ "primaryFont",
84
+ "primaryBoldFont",
85
+ "secondaryFont",
86
+ "secondaryBoldFont",
87
+ "buttonFont",
88
+ "accentFont",
89
+ "accentBoldFont",
90
+ "titleFont",
91
+ ];
92
+ const luminances = ["lighter", "light", "dark", "darker"];
93
+ // Changes a color luminance
94
+ export function changeColorLuminance(hex, luminanceChange) {
95
+ // Validate hex string, strip "#" if present.
96
+ hex = String(hex).replace(/[^0-9a-f]/gi, "");
97
+ if (hex.length === 3) {
98
+ hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
99
+ }
100
+ else if (hex.length !== 6) {
101
+ throw new Error(`Invalid color hex: ${hex}`);
102
+ }
103
+ let luminance;
104
+ switch (luminanceChange) {
105
+ case "light":
106
+ luminance = -0.2;
107
+ break;
108
+ case "lighter":
109
+ luminance = -0.33;
110
+ break;
111
+ case "dark":
112
+ luminance = 0.2;
113
+ break;
114
+ case "darker":
115
+ luminance = 0.33;
116
+ break;
117
+ default:
118
+ throw new Error(`Cannot change luminance to ${luminanceChange}`);
119
+ }
120
+ // Convert to decimal and change luminosity
121
+ let rgb = "#";
122
+ for (let i = 0; i < 3; i++) {
123
+ const decimal = parseInt(hex.substr(i * 2, 2), 16);
124
+ const appliedLuminance = Math.round(Math.min(Math.max(0, decimal + decimal * luminance), 255)).toString(16);
125
+ // 0 pad, if necessary.
126
+ rgb += `00${appliedLuminance}`.substr(appliedLuminance.length);
127
+ }
128
+ return rgb;
129
+ }
78
130
  class UnifierClass {
79
131
  constructor() {
80
132
  this._web = false;
@@ -84,6 +136,14 @@ class UnifierClass {
84
136
  console.warn("Dismiss overlay not supported.");
85
137
  },
86
138
  };
139
+ this.loadFonts = async () => {
140
+ try {
141
+ await Font.loadAsync(this.fontMap);
142
+ }
143
+ catch (err) {
144
+ console.error(`[unifier] Fonts failed to load: ${err}`);
145
+ }
146
+ };
87
147
  // tracking: Tracking,
88
148
  this.utils = {
89
149
  dismissKeyboard: () => {
@@ -181,7 +241,35 @@ class UnifierClass {
181
241
  get dev() {
182
242
  return this._dev;
183
243
  }
244
+ get fontMap() {
245
+ const fontMap = {};
246
+ for (const key of fontKeys) {
247
+ if (typeof this.theme[key] === "string") {
248
+ fontMap[key] = key;
249
+ }
250
+ else {
251
+ fontMap[this.theme[key].name] = this.theme[key].source;
252
+ }
253
+ }
254
+ return fontMap;
255
+ }
256
+ // If the theme only has e.g. "primary" set, calculate the primaryLighter, primaryLight, etc based on that color.
257
+ calculateLuminances(theme, color) {
258
+ if (!theme[color]) {
259
+ return;
260
+ }
261
+ for (const luminance of luminances) {
262
+ const capitalized = capitalize(luminance);
263
+ if (!theme[`${color}${capitalized}`] && theme[color]) {
264
+ theme[`${color}${capitalized}`] = changeColorLuminance(theme[color], luminance);
265
+ }
266
+ }
267
+ }
184
268
  setTheme(theme) {
269
+ Unifier.calculateLuminances(theme, "primary");
270
+ Unifier.calculateLuminances(theme, "secondary");
271
+ Unifier.calculateLuminances(theme, "accent");
272
+ Unifier.calculateLuminances(theme, "tertiary");
185
273
  this._theme = theme;
186
274
  }
187
275
  get theme() {
@@ -1 +1 @@
1
- {"version":3,"file":"Unifier.js","sourceRoot":"","sources":["../src/Unifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Unifier.js","sourceRoot":"","sources":["../src/Unifier.ts"],"names":[],"mappings":"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"}
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,14 +1,15 @@
1
1
  {
2
2
  "name": "ferns-ui",
3
- "version": "0.3.1",
3
+ "version": "0.4.2",
4
4
  "main": "dist/index.js",
5
5
  "license": "Apache-2.0",
6
6
  "scripts": {
7
- "local": "tsc-watch --onSuccess \"cp -a dist/* ../totum/node_modules/react-unifier/dist\"",
7
+ "local": "tsc-watch --onSuccess \"cp -a dist/* ../flourish/node_modules/ferns-ui/dist\"",
8
8
  "lint": "eslint \"src/**/*.ts*\"",
9
9
  "lintfix": "eslint --fix \"src/**/*.ts*\"",
10
10
  "build": "tsc",
11
- "dev": "tsc -w"
11
+ "dev": "tsc -w",
12
+ "deps": "node checkDeps.js"
12
13
  },
13
14
  "babel": {
14
15
  "presets": [
@@ -119,8 +120,8 @@
119
120
  "tsc-watch": "^5.0.3"
120
121
  },
121
122
  "devDependencies": {
122
- "@expo/vector-icons": "^13.0.0",
123
- "@react-native-async-storage/async-storage": "^1.17.4",
123
+ "@expo/vector-icons": "^12.0.0",
124
+ "@react-native-async-storage/async-storage": "^1.15.0",
124
125
  "@react-native-community/blur": "^3.6.0",
125
126
  "@react-native-community/datetimepicker": "^5.1.0",
126
127
  "@react-native-picker/picker": "^2.2.1",
@@ -142,7 +143,7 @@
142
143
  "eslint-plugin-react-hooks": "^4.5.0",
143
144
  "eslint-plugin-react-native": "^4.0.0",
144
145
  "eslint-plugin-simple-import-sort": "^7.0.0",
145
- "expo-font": "^10.1.0",
146
+ "expo-font": "^10.0.5",
146
147
  "lodash": "^4.17.21",
147
148
  "mixpanel-browser": "^2.38.0",
148
149
  "moment-timezone": "^0.5.34",
@@ -153,7 +154,7 @@
153
154
  "react-dev-utils": "^11.0.4",
154
155
  "react-dom": "17.0.2",
155
156
  "react-native": "^0.64.3",
156
- "react-native-gesture-handler": "^1.6.1",
157
+ "react-native-gesture-handler": "^2.1.0",
157
158
  "react-native-haptic-feedback": "^1.10.0",
158
159
  "react-native-modalize": "^2.0.12",
159
160
  "react-native-navigation": "^6.12.0",
@@ -167,13 +168,13 @@
167
168
  },
168
169
  "peerDependencies": {
169
170
  "@expo/vector-icons": "^12.0.0",
170
- "@react-native-async-storage/async-storage": "^1.17.3",
171
+ "@react-native-async-storage/async-storage": "^1.15.0",
171
172
  "@react-native-community/blur": "^3.6.0",
172
- "@react-native-community/datetimepicker": "^4.0.0",
173
+ "@react-native-community/datetimepicker": "^5.1.0",
173
174
  "@react-native-picker/picker": "^2.2.1",
174
- "@sentry/browser": "^5.17.0",
175
- "@sentry/react": "^5.20.1",
176
- "@sentry/react-native": "^1.7.1",
175
+ "@sentry/browser": "^6.19.7",
176
+ "@sentry/react": "^6.19.7",
177
+ "@sentry/react-native": "^3.4.2",
177
178
  "expo-font": "^10.0.5",
178
179
  "lodash": "^4.17.21",
179
180
  "mixpanel-browser": "^2.38.0",
@@ -184,7 +185,7 @@
184
185
  "react-dev-utils": "^11.0.4",
185
186
  "react-dom": "17.0.2",
186
187
  "react-native": "^0.64.3",
187
- "react-native-gesture-handler": "^1.6.1",
188
+ "react-native-gesture-handler": "^2.1.0",
188
189
  "react-native-haptic-feedback": "^1.10.0",
189
190
  "react-native-modalize": "^2.0.12",
190
191
  "react-native-navigation": "^6.12.0",
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/Button.tsx CHANGED
@@ -38,11 +38,11 @@ export class Button extends React.Component<ButtonProps, ButtonState> {
38
38
  lg: 48,
39
39
  };
40
40
 
41
- getBackgroundColor(color: string) {
41
+ getBackgroundColor(color: string): string {
42
42
  if (this.props.type === "ghost" || this.props.type === "outline") {
43
43
  return "transparent";
44
44
  } else {
45
- return Unifier.theme[color as keyof UnifiedTheme];
45
+ return Unifier.theme[color as keyof UnifiedTheme] as string;
46
46
  }
47
47
  }
48
48
 
@@ -120,6 +120,7 @@ export class Button extends React.Component<ButtonProps, ButtonState> {
120
120
  {Boolean(this.props.text) && (
121
121
  <Text
122
122
  color={this.getTextColor(color as Color)}
123
+ font="button"
123
124
  inline={this.props.inline}
124
125
  size={this.props.size}
125
126
  skipLinking
package/src/Common.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import {FontSource} from "expo-font";
1
2
  import {SyntheticEvent} from "react";
2
3
 
3
4
  import {SelectListOptions} from "./SelectList";
@@ -776,7 +777,7 @@ export interface SpinnerProps {
776
777
  }
777
778
 
778
779
  export interface MaskProps {
779
- children?: React.ReactNode;
780
+ children?: React.ReactElement;
780
781
  shape?: "circle" | "rounded" | "square";
781
782
  height?: number | string;
782
783
  width?: number | string;
package/src/Heading.tsx CHANGED
@@ -18,7 +18,7 @@ export class Heading extends React.Component<HeadingProps, {}> {
18
18
  // if (this.props.bold) {
19
19
  // font += "Bold";
20
20
  // }
21
- style.fontFamily = Unifier.theme.primaryBoldFont;
21
+ style.fontFamily = Unifier.theme.titleFont;
22
22
 
23
23
  style.fontSize = this.fontSizes[this.props.size || "md"];
24
24
  if (this.props.align) {
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/Text.tsx CHANGED
@@ -24,7 +24,7 @@ export class Text extends React.Component<TextProps, {}> {
24
24
  | "accentFont"
25
25
  | "accentBoldFont"
26
26
  | "titleFont" = "primaryFont";
27
- if (this.props.font === "primary") {
27
+ if (this.props.font === "primary" || !this.props.font) {
28
28
  if (this.props.weight === "bold") {
29
29
  font = "primaryBoldFont";
30
30
  } else {
package/src/Unifier.ts CHANGED
@@ -2,12 +2,18 @@
2
2
  /* eslint-disable @typescript-eslint/no-empty-function */
3
3
 
4
4
  import AsyncStorage from "@react-native-async-storage/async-storage";
5
+ import * as Font from "expo-font";
6
+ import {FontSource} from "expo-font";
5
7
  import {Clipboard, Dimensions, Keyboard, Linking, Platform, Vibration} from "react-native";
6
8
  import ReactNativeHapticFeedback from "react-native-haptic-feedback";
7
9
 
8
10
  import {PermissionKind, UnifiedTheme} from "./Common";
9
11
  import {requestPermissions} from "./Permissions";
10
12
 
13
+ function capitalize(string: string) {
14
+ return string.charAt(0).toUpperCase() + string.slice(1);
15
+ }
16
+
11
17
  const DEFAULT_FONT = "Cochin";
12
18
  const DEFAULT_BOLD_FONT = "Cochin";
13
19
 
@@ -92,6 +98,61 @@ const DefaultTheme: UnifiedTheme = {
92
98
 
93
99
  export type PlatformOS = "ios" | "android" | "web";
94
100
 
101
+ const fontKeys = [
102
+ "primaryFont",
103
+ "primaryBoldFont",
104
+ "secondaryFont",
105
+ "secondaryBoldFont",
106
+ "buttonFont",
107
+ "accentFont",
108
+ "accentBoldFont",
109
+ "titleFont",
110
+ ];
111
+
112
+ type Luminance = "light" | "lighter" | "dark" | "darker";
113
+ const luminances: Luminance[] = ["lighter", "light", "dark", "darker"];
114
+
115
+ // Changes a color luminance
116
+ export function changeColorLuminance(hex: string, luminanceChange: Luminance) {
117
+ // Validate hex string, strip "#" if present.
118
+ hex = String(hex).replace(/[^0-9a-f]/gi, "");
119
+ if (hex.length === 3) {
120
+ hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
121
+ } else if (hex.length !== 6) {
122
+ throw new Error(`Invalid color hex: ${hex}`);
123
+ }
124
+ let luminance;
125
+ switch (luminanceChange) {
126
+ case "light":
127
+ luminance = -0.2;
128
+ break;
129
+ case "lighter":
130
+ luminance = -0.33;
131
+ break;
132
+ case "dark":
133
+ luminance = 0.2;
134
+ break;
135
+ case "darker":
136
+ luminance = 0.33;
137
+ break;
138
+ default:
139
+ throw new Error(`Cannot change luminance to ${luminanceChange}`);
140
+ }
141
+
142
+ // Convert to decimal and change luminosity
143
+ let rgb = "#";
144
+ for (let i = 0; i < 3; i++) {
145
+ const decimal = parseInt(hex.substr(i * 2, 2), 16);
146
+ const appliedLuminance = Math.round(
147
+ Math.min(Math.max(0, decimal + decimal * luminance), 255)
148
+ ).toString(16);
149
+ // 0 pad, if necessary.
150
+ rgb += `00${appliedLuminance}`.substr(appliedLuminance.length);
151
+ }
152
+
153
+ return rgb;
154
+ }
155
+
95
156
  class UnifierClass {
96
157
  private _theme?: Partial<UnifiedTheme>;
97
158
 
@@ -107,7 +168,39 @@ class UnifierClass {
107
168
  return this._dev;
108
169
  }
109
170
 
171
+ private get fontMap() {
172
+ const fontMap: {[id: string]: FontSource} = {};
173
+ for (const key of fontKeys) {
174
+ if (typeof this.theme[key] === "string") {
175
+ fontMap[key] = key;
176
+ } else {
177
+ fontMap[this.theme[key].name] = this.theme[key].source;
178
+ }
179
+ }
180
+ return fontMap;
181
+ }
182
+
183
+ // If the theme only has e.g. "primary" set, calculate the primaryLighter, primaryLight, etc based on that color.
184
+ private calculateLuminances(
185
+ theme: Partial<UnifiedTheme>,
186
+ color: "primary" | "secondary" | "accent" | "tertiary"
187
+ ) {
188
+ if (!theme[color]) {
189
+ return;
190
+ }
191
+ for (const luminance of luminances) {
192
+ const capitalized = capitalize(luminance);
193
+ if (!theme[`${color}${capitalized}`] && theme[color]) {
194
+ theme[`${color}${capitalized}`] = changeColorLuminance(theme[color] as string, luminance);
195
+ }
196
+ }
197
+ }
198
+
110
199
  setTheme(theme: Partial<UnifiedTheme>) {
200
+ Unifier.calculateLuminances(theme, "primary");
201
+ Unifier.calculateLuminances(theme, "secondary");
202
+ Unifier.calculateLuminances(theme, "accent");
203
+ Unifier.calculateLuminances(theme, "tertiary");
111
204
  this._theme = theme;
112
205
  }
113
206
 
@@ -169,6 +262,14 @@ class UnifierClass {
169
262
  },
170
263
  };
171
264
 
265
+ loadFonts = async () => {
266
+ try {
267
+ await Font.loadAsync(this.fontMap);
268
+ } catch (err) {
269
+ console.error(`[unifier] Fonts failed to load: ${err}`);
270
+ }
271
+ };
272
+
172
273
  // tracking: Tracking,
173
274
  utils = {
174
275
  dismissKeyboard: () => {
@@ -181,7 +282,7 @@ class UnifierClass {
181
282
  copyToClipboard: (text: string) => {
182
283
  Clipboard.setString(text);
183
284
  },
184
- orientationChange: (callback: (orentation: "portrait" | "landscape") => void) => {
285
+ orientationChange: (callback: (orientation: "portrait" | "landscape") => void) => {
185
286
  Dimensions.addEventListener("change", () => {
186
287
  const screen = Dimensions.get("screen");
187
288
  const isPortrait = screen.width < screen.height;
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";