ferns-ui 1.11.0 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/Common.d.ts CHANGED
@@ -555,7 +555,7 @@ export interface HeadingProps {
555
555
  children?: React.ReactNode;
556
556
  color?: TextColor;
557
557
  overflow?: "normal" | "breakWord";
558
- size?: "sm" | "md" | "lg" | "xl";
558
+ size?: "sm" | "md" | "lg" | "xl" | "2xl";
559
559
  truncate?: boolean;
560
560
  testID?: string;
561
561
  }
package/dist/Heading.js CHANGED
@@ -7,12 +7,14 @@ const fontSizeAndWeightWeb = {
7
7
  md: { size: 18, weight: "bold" },
8
8
  lg: { size: 24, weight: "bold" },
9
9
  xl: { size: 32, weight: "bold" },
10
+ "2xl": { size: 48, weight: "bold" },
10
11
  };
11
12
  const fontSizeAndWeighMobile = {
12
13
  sm: { size: 14, weight: "semibold" },
13
14
  md: { size: 16, weight: "bold" },
14
15
  lg: { size: 20, weight: "bold" },
15
16
  xl: { size: 28, weight: "bold" },
17
+ "2xl": { size: 32, weight: "bold" },
16
18
  };
17
19
  const fontSizes = Platform.OS === "web" ? fontSizeAndWeightWeb : fontSizeAndWeighMobile;
18
20
  export const Heading = ({ align, children, color = "primary", size, testID, }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Heading.js","sourceRoot":"","sources":["../src/Heading.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,QAAQ,GACT,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,QAAQ,EAAa,IAAI,IAAI,UAAU,EAAY,MAAM,cAAc,CAAC;AAGhF,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AAEjC,MAAM,oBAAoB,GAAG;IAC3B,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAC;IAClC,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC;IAC9B,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC;IAC9B,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC;CAC/B,CAAC;AAEF,MAAM,sBAAsB,GAAG;IAC7B,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAC;IAClC,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC;IAC9B,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC;IAC9B,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC;CAC/B,CAAC;AAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,sBAAsB,CAAC;AAExF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EACtB,KAAK,EACL,QAAQ,EACR,KAAK,GAAG,SAAS,EACjB,IAAI,EACJ,MAAM,GACO,EAAsB,EAAE;IACrC,MAAM,EAAC,KAAK,EAAC,GAAG,QAAQ,EAAE,CAAC;IAE3B,kCAAkC;IAClC,QAAQ,CAAC;QACP,OAAO,EAAE,wBAAwB;QACjC,cAAc,EAAE,oBAAoB;QACpC,kBAAkB,EAAE,wBAAwB;KAC7C,CAAC,CAAC;IAEH,MAAM,KAAK,GAAyB,EAAE,CAAC;IAEvC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,KAAK,CAAC,UAAU,GAAG,kBAAkB,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,UAAU,GAAG,cAAc,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC;IAC9C,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;IAC1B,CAAC;IACD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEhC,MAAM,KAAK,GAAG,CAAC,CAAC;IAChB,OAAO,CACL,oBAAC,UAAU,IAAC,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,IAC3D,QAAQ,CACE,CACd,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"Heading.js","sourceRoot":"","sources":["../src/Heading.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,QAAQ,GACT,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,QAAQ,EAAa,IAAI,IAAI,UAAU,EAAY,MAAM,cAAc,CAAC;AAGhF,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AAEjC,MAAM,oBAAoB,GAAG;IAC3B,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAC;IAClC,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC;IAC9B,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC;IAC9B,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC;IAC9B,KAAK,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC;CAClC,CAAC;AAEF,MAAM,sBAAsB,GAAG;IAC7B,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAC;IAClC,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC;IAC9B,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC;IAC9B,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC;IAC9B,KAAK,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC;CAClC,CAAC;AAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,sBAAsB,CAAC;AAExF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EACtB,KAAK,EACL,QAAQ,EACR,KAAK,GAAG,SAAS,EACjB,IAAI,EACJ,MAAM,GACO,EAAsB,EAAE;IACrC,MAAM,EAAC,KAAK,EAAC,GAAG,QAAQ,EAAE,CAAC;IAE3B,kCAAkC;IAClC,QAAQ,CAAC;QACP,OAAO,EAAE,wBAAwB;QACjC,cAAc,EAAE,oBAAoB;QACpC,kBAAkB,EAAE,wBAAwB;KAC7C,CAAC,CAAC;IAEH,MAAM,KAAK,GAAyB,EAAE,CAAC;IAEvC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,KAAK,CAAC,UAAU,GAAG,kBAAkB,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,UAAU,GAAG,cAAc,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC;IAC9C,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;IAC1B,CAAC;IACD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEhC,MAAM,KAAK,GAAG,CAAC,CAAC;IAChB,OAAO,CACL,oBAAC,UAAU,IAAC,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,IAC3D,QAAQ,CACE,CACd,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import React from "react";
2
+ export declare const MarkdownView: React.FC<{
3
+ children: React.ReactNode;
4
+ inverted?: boolean;
5
+ }>;
@@ -0,0 +1,44 @@
1
+ import { Nunito_400Regular, Nunito_500Medium, Nunito_700Bold, useFonts as useTextFonts, } from "@expo-google-fonts/nunito";
2
+ import { TitilliumWeb_600SemiBold, TitilliumWeb_700Bold, useFonts as useHeadingFonts, } from "@expo-google-fonts/titillium-web";
3
+ import React from "react";
4
+ import { Platform } from "react-native";
5
+ import Markdown from "react-native-markdown-display";
6
+ import { useTheme } from "./Theme";
7
+ // Takes markdown and renders it with our theme. We should open source this component.
8
+ export const MarkdownView = ({ children, inverted, }) => {
9
+ const { theme } = useTheme();
10
+ const color = { color: inverted ? theme.text.inverted : theme.text.primary };
11
+ // Match Heading font sizes to Heading component
12
+ // Web sizes (see src/Heading.tsx): sm:16, md:18, lg:24, xl:32
13
+ // Mobile sizes: sm:14, md:16, lg:20, xl:28
14
+ const isWeb = Platform.OS === "web";
15
+ const sizes = {
16
+ sm: isWeb ? 16 : 14,
17
+ md: isWeb ? 18 : 16,
18
+ lg: isWeb ? 24 : 20,
19
+ xl: isWeb ? 32 : 28,
20
+ };
21
+ // Load fonts similar to Heading/Text components so fontFamily names resolve
22
+ useHeadingFonts({
23
+ heading: TitilliumWeb_600SemiBold,
24
+ "heading-bold": TitilliumWeb_700Bold,
25
+ "heading-semibold": TitilliumWeb_600SemiBold,
26
+ });
27
+ useTextFonts({
28
+ text: Nunito_400Regular,
29
+ "text-regular": Nunito_400Regular,
30
+ "text-medium": Nunito_500Medium,
31
+ "text-bold": Nunito_700Bold,
32
+ });
33
+ return (React.createElement(Markdown, { style: {
34
+ body: Object.assign({ fontFamily: "text" }, color),
35
+ heading1: Object.assign({ fontFamily: "heading-bold", fontSize: sizes.xl }, color),
36
+ heading2: Object.assign({ fontFamily: "heading-bold", fontSize: sizes.lg }, color),
37
+ heading3: Object.assign({ fontFamily: "heading-bold", fontSize: sizes.md }, color),
38
+ heading4: Object.assign({ fontFamily: "heading-semibold", fontSize: sizes.sm }, color),
39
+ // h5/h6 map to small as well for consistency, slightly smaller visually handled by weight
40
+ heading5: Object.assign({ fontFamily: "heading-semibold", fontSize: sizes.sm }, color),
41
+ heading6: Object.assign({ fontFamily: "heading-semibold", fontSize: sizes.sm }, color),
42
+ } }, children));
43
+ };
44
+ //# sourceMappingURL=MarkdownView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownView.js","sourceRoot":"","sources":["../src/MarkdownView.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,QAAQ,IAAI,YAAY,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,QAAQ,IAAI,eAAe,GAC5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,QAAQ,EAAC,MAAM,cAAc,CAAC;AACtC,OAAO,QAAQ,MAAM,+BAA+B,CAAC;AAErD,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AAEjC,sFAAsF;AACtF,MAAM,CAAC,MAAM,YAAY,GAA8D,CAAC,EACtF,QAAQ,EACR,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,EAAC,KAAK,EAAC,GAAG,QAAQ,EAAE,CAAC;IAE3B,MAAM,KAAK,GAAG,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAC,CAAC;IAE3E,gDAAgD;IAChD,8DAA8D;IAC9D,2CAA2C;IAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC;IACpC,MAAM,KAAK,GAAG;QACZ,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACnB,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACnB,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACnB,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;KACX,CAAC;IAEX,4EAA4E;IAC5E,eAAe,CAAC;QACd,OAAO,EAAE,wBAAwB;QACjC,cAAc,EAAE,oBAAoB;QACpC,kBAAkB,EAAE,wBAAwB;KAC7C,CAAC,CAAC;IACH,YAAY,CAAC;QACX,IAAI,EAAE,iBAAiB;QACvB,cAAc,EAAE,iBAAiB;QACjC,aAAa,EAAE,gBAAgB;QAC/B,WAAW,EAAE,cAAc;KAC5B,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,QAAQ,IACP,KAAK,EAAE;YACL,IAAI,kBAAG,UAAU,EAAE,MAAM,IAAK,KAAK,CAAC;YACpC,QAAQ,kBAAG,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,IAAK,KAAK,CAAC;YACpE,QAAQ,kBAAG,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,IAAK,KAAK,CAAC;YACpE,QAAQ,kBAAG,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,IAAK,KAAK,CAAC;YACpE,QAAQ,kBAAG,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,IAAK,KAAK,CAAC;YACxE,0FAA0F;YAC1F,QAAQ,kBAAG,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,IAAK,KAAK,CAAC;YACxE,QAAQ,kBAAG,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,IAAK,KAAK,CAAC;SACzE,IAEA,QAAQ,CACA,CACZ,CAAC;AACJ,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -79,6 +79,7 @@ export * from "./TextField";
79
79
  export * from "./Theme";
80
80
  export * from "./Toast";
81
81
  export * from "./Tooltip";
82
+ export * from "./MarkdownView";
82
83
  export * from "./UnifiedAddressAutoComplete";
83
84
  export * from "./Unifier";
84
85
  export * from "./useStoredState";
package/dist/index.js CHANGED
@@ -79,6 +79,7 @@ export * from "./TextField";
79
79
  export * from "./Theme";
80
80
  export * from "./Toast";
81
81
  export * from "./Tooltip";
82
+ export * from "./MarkdownView";
82
83
  export * from "./UnifiedAddressAutoComplete";
83
84
  export * from "./Unifier";
84
85
  export * from "./useStoredState";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ferns-ui",
3
- "version": "1.11.0",
3
+ "version": "1.12.0",
4
4
  "main": "dist/index.js",
5
5
  "license": "Apache-2.0",
6
6
  "scripts": {
@@ -41,52 +41,6 @@
41
41
  "trailingComma": "es5",
42
42
  "useTabs": false
43
43
  },
44
- "eslintConfig": {
45
- "extends": [
46
- "plugin:ferns/recommended",
47
- "plugin:react-native-a11y/all"
48
- ],
49
- "parser": "@typescript-eslint/parser",
50
- "parserOptions": {
51
- "project": "./tsconfig.json",
52
- "tsconfigRootDir": "./"
53
- },
54
- "plugins": [
55
- "ban"
56
- ],
57
- "rules": {
58
- "@typescript-eslint/explicit-function-return-type": "off",
59
- "react-native-a11y/has-valid-accessibility-descriptors": "off",
60
- "@typescript-eslint/consistent-type-definitions": [
61
- "error",
62
- "interface"
63
- ],
64
- "ban/ban": [
65
- "error",
66
- {
67
- "name": [
68
- "dayjs",
69
- "*"
70
- ],
71
- "message": "Use Luxon."
72
- },
73
- {
74
- "name": [
75
- "moment",
76
- "*"
77
- ],
78
- "message": "Use Luxon"
79
- },
80
- {
81
- "name": [
82
- "React",
83
- "FC"
84
- ],
85
- "message": "Use FC imported directly from React instead of React.FC"
86
- }
87
- ]
88
- }
89
- },
90
44
  "files": [
91
45
  "dist/**/*",
92
46
  "src/**/*"
package/src/Common.ts CHANGED
@@ -738,7 +738,7 @@ export interface HeadingProps {
738
738
  children?: React.ReactNode;
739
739
  color?: TextColor;
740
740
  overflow?: "normal" | "breakWord"; // default "breakWord"
741
- size?: "sm" | "md" | "lg" | "xl"; // default "sm"
741
+ size?: "sm" | "md" | "lg" | "xl" | "2xl"; // default "sm"
742
742
  truncate?: boolean; // default false
743
743
  testID?: string;
744
744
  }
package/src/Heading.tsx CHANGED
@@ -14,6 +14,7 @@ const fontSizeAndWeightWeb = {
14
14
  md: {size: 18, weight: "bold"},
15
15
  lg: {size: 24, weight: "bold"},
16
16
  xl: {size: 32, weight: "bold"},
17
+ "2xl": {size: 48, weight: "bold"},
17
18
  };
18
19
 
19
20
  const fontSizeAndWeighMobile = {
@@ -21,6 +22,7 @@ const fontSizeAndWeighMobile = {
21
22
  md: {size: 16, weight: "bold"},
22
23
  lg: {size: 20, weight: "bold"},
23
24
  xl: {size: 28, weight: "bold"},
25
+ "2xl": {size: 32, weight: "bold"},
24
26
  };
25
27
 
26
28
  const fontSizes = Platform.OS === "web" ? fontSizeAndWeightWeb : fontSizeAndWeighMobile;
@@ -0,0 +1,67 @@
1
+ import {
2
+ Nunito_400Regular,
3
+ Nunito_500Medium,
4
+ Nunito_700Bold,
5
+ useFonts as useTextFonts,
6
+ } from "@expo-google-fonts/nunito";
7
+ import {
8
+ TitilliumWeb_600SemiBold,
9
+ TitilliumWeb_700Bold,
10
+ useFonts as useHeadingFonts,
11
+ } from "@expo-google-fonts/titillium-web";
12
+ import React from "react";
13
+ import {Platform} from "react-native";
14
+ import Markdown from "react-native-markdown-display";
15
+
16
+ import {useTheme} from "./Theme";
17
+
18
+ // Takes markdown and renders it with our theme. We should open source this component.
19
+ export const MarkdownView: React.FC<{children: React.ReactNode; inverted?: boolean}> = ({
20
+ children,
21
+ inverted,
22
+ }) => {
23
+ const {theme} = useTheme();
24
+
25
+ const color = {color: inverted ? theme.text.inverted : theme.text.primary};
26
+
27
+ // Match Heading font sizes to Heading component
28
+ // Web sizes (see src/Heading.tsx): sm:16, md:18, lg:24, xl:32
29
+ // Mobile sizes: sm:14, md:16, lg:20, xl:28
30
+ const isWeb = Platform.OS === "web";
31
+ const sizes = {
32
+ sm: isWeb ? 16 : 14,
33
+ md: isWeb ? 18 : 16,
34
+ lg: isWeb ? 24 : 20,
35
+ xl: isWeb ? 32 : 28,
36
+ } as const;
37
+
38
+ // Load fonts similar to Heading/Text components so fontFamily names resolve
39
+ useHeadingFonts({
40
+ heading: TitilliumWeb_600SemiBold,
41
+ "heading-bold": TitilliumWeb_700Bold,
42
+ "heading-semibold": TitilliumWeb_600SemiBold,
43
+ });
44
+ useTextFonts({
45
+ text: Nunito_400Regular,
46
+ "text-regular": Nunito_400Regular,
47
+ "text-medium": Nunito_500Medium,
48
+ "text-bold": Nunito_700Bold,
49
+ });
50
+
51
+ return (
52
+ <Markdown
53
+ style={{
54
+ body: {fontFamily: "text", ...color},
55
+ heading1: {fontFamily: "heading-bold", fontSize: sizes.xl, ...color},
56
+ heading2: {fontFamily: "heading-bold", fontSize: sizes.lg, ...color},
57
+ heading3: {fontFamily: "heading-bold", fontSize: sizes.md, ...color},
58
+ heading4: {fontFamily: "heading-semibold", fontSize: sizes.sm, ...color},
59
+ // h5/h6 map to small as well for consistency, slightly smaller visually handled by weight
60
+ heading5: {fontFamily: "heading-semibold", fontSize: sizes.sm, ...color},
61
+ heading6: {fontFamily: "heading-semibold", fontSize: sizes.sm, ...color},
62
+ }}
63
+ >
64
+ {children}
65
+ </Markdown>
66
+ );
67
+ };
package/src/index.tsx CHANGED
@@ -79,6 +79,7 @@ export * from "./TextField";
79
79
  export * from "./Theme";
80
80
  export * from "./Toast";
81
81
  export * from "./Tooltip";
82
+ export * from "./MarkdownView";
82
83
  export * from "./UnifiedAddressAutoComplete";
83
84
  export * from "./Unifier";
84
85
  export * from "./useStoredState";