@ledgerhq/native-ui 0.39.0-nightly.1 → 0.39.0-nightly.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/TabSelector/index.tsx"],"names":[],"mappings":";AA8BA,KAAK,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI;IACxC,MAAM,EAAE;QAAE,EAAE,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC3C,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,EACpD,MAAM,EACN,UAAU,EACV,QAAQ,EACR,aAAqB,GACtB,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAyEnC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Form/TabSelector/index.tsx"],"names":[],"mappings":";AA8BA,KAAK,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI;IACxC,MAAM,EAAE;QAAE,EAAE,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC3C,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,EACpD,MAAM,EACN,UAAU,EACV,QAAQ,EACR,aAAqB,GACtB,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CA0EnC"}
@@ -66,7 +66,7 @@ export default function TabSelector({ labels, initialTab, onToggle, filledVarian
66
66
  labels.map((label, index) => (React.createElement(Pressable, { hitSlop: 6, key: label.id, onPress: () => handlePress(label.id, index), style: ({ pressed }) => ({
67
67
  opacity: pressed && selectedIndex !== index ? 0.5 : 1,
68
68
  flex: 1,
69
- }) },
69
+ }), testID: `tab-selector-${label.id}` },
70
70
  React.createElement(Tab, { "$radius": tabRadius },
71
71
  React.createElement(Text, { fontSize: 14, fontWeight: "semiBold", flexShrink: 1, numberOfLines: 1 }, label.value))))))));
72
72
  }
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ export type Network = {
3
+ name: string;
4
+ id: string;
5
+ ticker: string;
6
+ leftElement?: React.ReactNode;
7
+ rightElement?: React.ReactNode;
8
+ };
9
+ type NetworkItemProps = Network & {
10
+ onClick: () => void;
11
+ };
12
+ export declare const NetworkItem: ({ name, onClick, id, ticker, leftElement, rightElement, }: NetworkItemProps) => React.JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=NetworkItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkItem.d.ts","sourceRoot":"","sources":["../../../../src/pre-ldls/components/NetworkItem/NetworkItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAChC,CAAC;AAEF,KAAK,gBAAgB,GAAG,OAAO,GAAG;IAChC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAiCF,eAAO,MAAM,WAAW,8DAOrB,gBAAgB,sBA4BlB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import React from "react";
2
+ import { Pressable, View } from "react-native";
3
+ import styled, { useTheme } from "styled-components/native";
4
+ import { useTokens } from "../../libs";
5
+ import Text from "../../../components/Text";
6
+ import { CryptoIcon } from "../CryptoIcon/CryptoIcon";
7
+ const Wrapper = styled(Pressable) `
8
+ flex-direction: row;
9
+ padding: ${({ tokens }) => tokens["spacing-xxs"]}px;
10
+ border-radius: ${({ tokens }) => tokens["radius-s"]}px;
11
+ align-items: center;
12
+ width: 100%;
13
+ `;
14
+ const InfoWrapper = styled(View) `
15
+ flex-direction: column;
16
+ justify-content: center;
17
+ margin-left: ${({ tokens }) => tokens["margin-s"]}px;
18
+ flex: 1;
19
+ `;
20
+ const LeftElementWrapper = styled(View) `
21
+ flex-direction: row;
22
+ align-items: center;
23
+ gap: 4px;
24
+ `;
25
+ const TOKEN_KEYS = [
26
+ "spacing-xxs",
27
+ "margin-s",
28
+ "radius-s",
29
+ "colors-content-default-default",
30
+ "colors-content-subdued-default-default",
31
+ "colors-surface-transparent-hover",
32
+ "colors-surface-transparent-pressed",
33
+ ];
34
+ export const NetworkItem = ({ name, onClick, id, ticker, leftElement, rightElement, }) => {
35
+ const theme = useTheme();
36
+ const colorType = theme.colors.type === "dark" ? "dark" : "light";
37
+ const tokens = useTokens(colorType, [...TOKEN_KEYS]);
38
+ return (React.createElement(Wrapper, { tokens: tokens, onPress: onClick, style: ({ pressed }) => ({
39
+ opacity: pressed ? 0.7 : 1,
40
+ }) },
41
+ React.createElement(CryptoIcon, { size: "48px", ledgerId: id, ticker: ticker }),
42
+ React.createElement(InfoWrapper, { tokens: tokens },
43
+ React.createElement(Text, { variant: "largeLineHeight", fontWeight: "semiBold", color: String(tokens["colors-content-default-default"]) }, name),
44
+ React.createElement(LeftElementWrapper, null, leftElement)),
45
+ rightElement));
46
+ };
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { NetworkItem } from "./NetworkItem";
3
+ declare const meta: Meta<typeof NetworkItem>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof NetworkItem>;
6
+ export declare const Default: Story;
7
+ export declare const TestNetworkItem: Story;
8
+ export declare const NetworkItemWithLeftElement: Story;
9
+ export declare const NetworkItemWithRightElement: Story;
10
+ //# sourceMappingURL=NetworkItem.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkItem.stories.d.ts","sourceRoot":"","sources":["../../../../src/pre-ldls/components/NetworkItem/NetworkItem.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAUlC,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AAE1C,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,eAAe,EAAE,KAAU,CAAC;AAEzC,eAAO,MAAM,0BAA0B,EAAE,KAOxC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,KAOzC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { NetworkItem } from "./NetworkItem";
2
+ import { createRightElement, leftElement } from "../sharedStoryBook";
3
+ const meta = {
4
+ component: NetworkItem,
5
+ title: "PreLdls/Components/NetworkItem",
6
+ tags: ["autodocs"],
7
+ args: {
8
+ name: "Bitcoin",
9
+ id: "bitcoin",
10
+ ticker: "btc",
11
+ onClick: () => console.log("NetworkItem clicked"),
12
+ },
13
+ };
14
+ export default meta;
15
+ export const Default = {};
16
+ export const TestNetworkItem = {};
17
+ export const NetworkItemWithLeftElement = {
18
+ args: {
19
+ name: "Bitcoin",
20
+ id: "bitcoin",
21
+ ticker: "btc",
22
+ leftElement,
23
+ },
24
+ };
25
+ export const NetworkItemWithRightElement = {
26
+ args: {
27
+ name: "Bitcoin",
28
+ id: "bitcoin",
29
+ ticker: "btc",
30
+ rightElement: createRightElement(true),
31
+ },
32
+ };
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import { Network } from "../NetworkItem/NetworkItem";
3
+ export declare const NetworkList: ({ networks, onClick, onVisibleItemsScrollEnd, scrollToTop, hasNextPage, }: {
4
+ networks: Network[];
5
+ onClick: (networkId: string) => void;
6
+ onVisibleItemsScrollEnd?: (() => void) | undefined;
7
+ scrollToTop?: boolean | undefined;
8
+ hasNextPage?: boolean | undefined;
9
+ }) => React.JSX.Element;
10
+ //# sourceMappingURL=NetworkList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkList.d.ts","sourceRoot":"","sources":["../../../../src/pre-ldls/components/NetwrokList/NetworkList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAe,MAAM,4BAA4B,CAAC;AAElE,eAAO,MAAM,WAAW;cAOZ,OAAO,EAAE;yBACE,MAAM,KAAK,IAAI;qCACJ,IAAI;;;uBAuCrC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import React, { useCallback, useEffect, useRef } from "react";
2
+ import { FlashList } from "@shopify/flash-list";
3
+ import { NetworkItem } from "../NetworkItem/NetworkItem";
4
+ export const NetworkList = ({ networks, onClick, onVisibleItemsScrollEnd, scrollToTop, hasNextPage, }) => {
5
+ const flashListRef = useRef(null);
6
+ const renderNetworkItem = useCallback(({ item }) => React.createElement(NetworkItem, { ...item, onClick: () => onClick(item.id) }), [onClick]);
7
+ const keyExtractor = useCallback((item, index) => `${item.id}-${index}`, []);
8
+ useEffect(() => {
9
+ if (scrollToTop && flashListRef.current) {
10
+ flashListRef.current.scrollToOffset({ offset: 0, animated: true });
11
+ }
12
+ }, [scrollToTop]);
13
+ const handleEndReached = useCallback(() => {
14
+ if (hasNextPage && onVisibleItemsScrollEnd) {
15
+ onVisibleItemsScrollEnd();
16
+ }
17
+ }, [hasNextPage, onVisibleItemsScrollEnd]);
18
+ const flashListProps = {
19
+ ref: flashListRef,
20
+ data: networks,
21
+ renderItem: renderNetworkItem,
22
+ keyExtractor,
23
+ estimatedItemSize: 72,
24
+ style: { flex: 1, width: "100%" },
25
+ ...(hasNextPage && {
26
+ onEndReached: handleEndReached,
27
+ onEndReachedThreshold: 0.1,
28
+ }),
29
+ };
30
+ return React.createElement(FlashList, { ...flashListProps });
31
+ };
@@ -0,0 +1,8 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { NetworkList } from "./NetworkList";
3
+ declare const meta: Meta<typeof NetworkList>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof NetworkList>;
6
+ export declare const Default: Story;
7
+ export declare const TestNetworkClick: Story;
8
+ //# sourceMappingURL=NetwrokList.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetwrokList.stories.d.ts","sourceRoot":"","sources":["../../../../src/pre-ldls/components/NetwrokList/NetwrokList.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAkBlC,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AAE1C,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,gBAAgB,EAAE,KAQ9B,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { NetworkList } from "./NetworkList";
2
+ import React from "react";
3
+ import { View } from "react-native";
4
+ const meta = {
5
+ component: NetworkList,
6
+ title: "PreLdls/Components/NetworkList",
7
+ tags: ["autodocs"],
8
+ args: {
9
+ networks: Array.from({ length: 50 }, (_, i) => ({
10
+ name: `Bitcoin ${i}`,
11
+ id: `bitcoin`,
12
+ ticker: "btc",
13
+ })),
14
+ },
15
+ decorators: [
16
+ (Story) => (React.createElement(View, { style: { height: 600, width: "100%" } },
17
+ React.createElement(Story, null))),
18
+ ],
19
+ };
20
+ export default meta;
21
+ export const Default = {};
22
+ export const TestNetworkClick = {
23
+ args: {
24
+ networks: Array.from({ length: 3 }, (_, i) => ({
25
+ name: `Bitcoin ${i}`,
26
+ id: `bitcoin`,
27
+ ticker: "btc",
28
+ })),
29
+ },
30
+ };
@@ -1,4 +1,7 @@
1
1
  export * from "./Input/Input";
2
2
  export * from "./AssetItem/AssetItem";
3
3
  export * from "./AssetTypeList/AssetList";
4
+ export * from "./NetworkItem/NetworkItem";
5
+ export * from "./NetwrokList/NetworkList";
6
+ export * from "./Tag/Tag";
4
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pre-ldls/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pre-ldls/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,WAAW,CAAC"}
@@ -1,3 +1,6 @@
1
1
  export * from "./Input/Input";
2
2
  export * from "./AssetItem/AssetItem";
3
3
  export * from "./AssetTypeList/AssetList";
4
+ export * from "./NetworkItem/NetworkItem";
5
+ export * from "./NetwrokList/NetworkList";
6
+ export * from "./Tag/Tag";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/native-ui",
3
- "version": "0.39.0-nightly.1",
3
+ "version": "0.39.0-nightly.2",
4
4
  "description": "Ledger Live - Mobile UI",
5
5
  "repository": {
6
6
  "type": "git",
@@ -42,7 +42,7 @@
42
42
  "rn-range-slider": "2.1.1",
43
43
  "styled-system": "^5.1.5",
44
44
  "@ledgerhq/crypto-icons-ui": "^1.16.0-nightly.0",
45
- "@ledgerhq/icons-ui": "^0.12.0",
45
+ "@ledgerhq/icons-ui": "^0.13.0-nightly.0",
46
46
  "@ledgerhq/ui-shared": "^0.3.0"
47
47
  },
48
48
  "peerDependencies": {