@ledgerhq/lumen-ui-rnative 0.0.53 → 0.0.54

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.
Files changed (108) hide show
  1. package/.storybook/docs/getting-started/setup.mdx +4 -6
  2. package/.storybook/docs/style-system/useTheme.mdx +0 -15
  3. package/dist/package.json +2 -2
  4. package/dist/src/lib/Components/Subheader/Subheader.d.ts +70 -0
  5. package/dist/src/lib/Components/Subheader/Subheader.d.ts.map +1 -0
  6. package/dist/src/lib/Components/Subheader/Subheader.js +161 -0
  7. package/dist/src/lib/Components/Subheader/Subheader.stories.d.ts +10 -0
  8. package/dist/src/lib/Components/Subheader/Subheader.stories.d.ts.map +1 -0
  9. package/dist/src/lib/Components/Subheader/Subheader.stories.js +34 -0
  10. package/dist/src/lib/Components/Subheader/index.d.ts +3 -0
  11. package/dist/src/lib/Components/Subheader/index.d.ts.map +1 -0
  12. package/dist/src/lib/Components/Subheader/index.js +2 -0
  13. package/dist/src/lib/Components/Subheader/types.d.ts +67 -0
  14. package/dist/src/lib/Components/Subheader/types.d.ts.map +1 -0
  15. package/dist/src/lib/Components/ThemeProvider/ThemeProvider.d.ts +1 -1
  16. package/dist/src/lib/Components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  17. package/dist/src/lib/Components/ThemeProvider/index.d.ts +1 -1
  18. package/dist/src/lib/Components/ThemeProvider/index.d.ts.map +1 -1
  19. package/dist/src/lib/Components/ThemeProvider/index.js +1 -1
  20. package/dist/src/lib/Components/ThemeProvider/{ThemeProvider.types.d.ts → types.d.ts} +1 -1
  21. package/dist/src/lib/Components/ThemeProvider/types.d.ts.map +1 -0
  22. package/dist/src/lib/Components/ThemeProvider/types.js +1 -0
  23. package/dist/src/lib/Components/index.d.ts +1 -0
  24. package/dist/src/lib/Components/index.d.ts.map +1 -1
  25. package/dist/src/lib/Components/index.js +1 -0
  26. package/dist/src/lib/Symbols/Icons/Asterisk.d.ts +33 -0
  27. package/dist/src/lib/Symbols/Icons/Asterisk.d.ts.map +1 -0
  28. package/dist/src/lib/Symbols/Icons/Asterisk.js +34 -0
  29. package/dist/src/lib/Symbols/Icons/Bell.js +1 -1
  30. package/dist/src/lib/Symbols/Icons/BellFill.d.ts +33 -0
  31. package/dist/src/lib/Symbols/Icons/BellFill.d.ts.map +1 -0
  32. package/dist/src/lib/Symbols/Icons/BellFill.js +34 -0
  33. package/dist/src/lib/Symbols/Icons/BellNotification.js +1 -1
  34. package/dist/src/lib/Symbols/Icons/CreditCardFill.d.ts +33 -0
  35. package/dist/src/lib/Symbols/Icons/CreditCardFill.d.ts.map +1 -0
  36. package/dist/src/lib/Symbols/Icons/CreditCardFill.js +34 -0
  37. package/dist/src/lib/Symbols/Icons/Delete.js +1 -1
  38. package/dist/src/lib/Symbols/Icons/Exchange.js +1 -1
  39. package/dist/src/lib/Symbols/Icons/ExchangeFill.d.ts +33 -0
  40. package/dist/src/lib/Symbols/Icons/ExchangeFill.d.ts.map +1 -0
  41. package/dist/src/lib/Symbols/Icons/ExchangeFill.js +34 -0
  42. package/dist/src/lib/Symbols/Icons/ExpandLeft.d.ts +33 -0
  43. package/dist/src/lib/Symbols/Icons/ExpandLeft.d.ts.map +1 -0
  44. package/dist/src/lib/Symbols/Icons/ExpandLeft.js +34 -0
  45. package/dist/src/lib/Symbols/Icons/ExpandRight.d.ts +33 -0
  46. package/dist/src/lib/Symbols/Icons/ExpandRight.d.ts.map +1 -0
  47. package/dist/src/lib/Symbols/Icons/ExpandRight.js +34 -0
  48. package/dist/src/lib/Symbols/Icons/Home.js +1 -1
  49. package/dist/src/lib/Symbols/Icons/HomeFill.d.ts +33 -0
  50. package/dist/src/lib/Symbols/Icons/HomeFill.d.ts.map +1 -0
  51. package/dist/src/lib/Symbols/Icons/HomeFill.js +34 -0
  52. package/dist/src/lib/Symbols/Icons/LifeRingFill.d.ts +33 -0
  53. package/dist/src/lib/Symbols/Icons/LifeRingFill.d.ts.map +1 -0
  54. package/dist/src/lib/Symbols/Icons/LifeRingFill.js +34 -0
  55. package/dist/src/lib/Symbols/Icons/P2p.js +1 -1
  56. package/dist/src/lib/Symbols/Icons/Signature.js +1 -1
  57. package/dist/src/lib/Symbols/Icons/Spacerocket.js +1 -1
  58. package/dist/src/lib/Symbols/Icons/Tools.js +1 -1
  59. package/dist/src/lib/Symbols/Icons/TransferVertical.js +1 -1
  60. package/dist/src/lib/Symbols/Icons/Trash.js +1 -1
  61. package/dist/src/lib/Symbols/Icons/WarningFill.js +1 -1
  62. package/dist/src/lib/Symbols/index.d.ts +8 -0
  63. package/dist/src/lib/Symbols/index.d.ts.map +1 -1
  64. package/dist/src/lib/Symbols/index.js +8 -0
  65. package/dist/src/styles/provider/LumenStyleSheetProvider.d.ts +0 -2
  66. package/dist/src/styles/provider/LumenStyleSheetProvider.d.ts.map +1 -1
  67. package/dist/src/styles/provider/LumenStyleSheetProvider.js +9 -30
  68. package/dist/src/styles/provider/types.d.ts +4 -0
  69. package/dist/src/styles/provider/types.d.ts.map +1 -1
  70. package/dist/src/styles/provider/types.js +4 -1
  71. package/package.json +2 -2
  72. package/src/lib/Components/Subheader/Subheader.mdx +517 -0
  73. package/src/lib/Components/Subheader/Subheader.stories.tsx +111 -0
  74. package/src/lib/Components/Subheader/Subheader.test.tsx +195 -0
  75. package/src/lib/Components/Subheader/Subheader.tsx +261 -0
  76. package/src/lib/Components/Subheader/index.ts +11 -0
  77. package/src/lib/Components/Subheader/types.ts +76 -0
  78. package/src/lib/Components/ThemeProvider/ThemeProvider.tsx +1 -1
  79. package/src/lib/Components/ThemeProvider/index.ts +1 -1
  80. package/src/lib/Components/index.ts +1 -0
  81. package/src/lib/Symbols/Icons/Asterisk.tsx +45 -0
  82. package/src/lib/Symbols/Icons/Bell.tsx +1 -1
  83. package/src/lib/Symbols/Icons/BellFill.tsx +42 -0
  84. package/src/lib/Symbols/Icons/BellNotification.tsx +1 -1
  85. package/src/lib/Symbols/Icons/CreditCardFill.tsx +42 -0
  86. package/src/lib/Symbols/Icons/Delete.tsx +1 -1
  87. package/src/lib/Symbols/Icons/Exchange.tsx +1 -1
  88. package/src/lib/Symbols/Icons/ExchangeFill.tsx +53 -0
  89. package/src/lib/Symbols/Icons/ExpandLeft.tsx +45 -0
  90. package/src/lib/Symbols/Icons/ExpandRight.tsx +45 -0
  91. package/src/lib/Symbols/Icons/Home.tsx +1 -1
  92. package/src/lib/Symbols/Icons/HomeFill.tsx +42 -0
  93. package/src/lib/Symbols/Icons/LifeRingFill.tsx +42 -0
  94. package/src/lib/Symbols/Icons/P2p.tsx +1 -1
  95. package/src/lib/Symbols/Icons/Signature.tsx +1 -1
  96. package/src/lib/Symbols/Icons/Spacerocket.tsx +1 -1
  97. package/src/lib/Symbols/Icons/Tools.tsx +1 -1
  98. package/src/lib/Symbols/Icons/TransferVertical.tsx +1 -1
  99. package/src/lib/Symbols/Icons/Trash.tsx +1 -1
  100. package/src/lib/Symbols/Icons/WarningFill.tsx +1 -1
  101. package/src/lib/Symbols/index.ts +8 -0
  102. package/src/styles/hooks/useStyleSheet.test.tsx +90 -47
  103. package/src/styles/provider/LumenStyleSheetProvider.test.tsx +24 -24
  104. package/src/styles/provider/LumenStyleSheetProvider.tsx +8 -38
  105. package/src/styles/provider/types.ts +5 -0
  106. package/dist/src/lib/Components/ThemeProvider/ThemeProvider.types.d.ts.map +0 -1
  107. /package/dist/src/lib/Components/{ThemeProvider/ThemeProvider.types.js → Subheader/types.js} +0 -0
  108. /package/src/lib/Components/ThemeProvider/{ThemeProvider.types.ts → types.ts} +0 -0
@@ -76,24 +76,22 @@ If not provided, the theme will follow the device settings.
76
76
  </ThemeProvider>
77
77
  ```
78
78
 
79
- If the ThemeProvider is uncontrolled, you can use the [`useTheme`](/?path=/docs/style-system-usetheme--docs) hook to control theme mode at runtime:
79
+ The ThemeProvider's colorScheme is controlled; you can use the [`useTheme`](/?path=/docs/style-system-usetheme--docs) hook to get the theme mode at runtime:
80
80
 
81
81
  ```tsx
82
82
  import { useTheme } from '@ledgerhq/lumen-ui-rnative/styles';
83
83
 
84
84
  const ThemeToggle = () => {
85
- const { colorScheme, toggleColorScheme, setColorScheme } = useTheme();
85
+ const { colorScheme } = useTheme();
86
86
 
87
87
  return (
88
- <Button onPress={toggleColorScheme}>
88
+ <View>
89
89
  Current: {colorScheme}
90
- </Button>
90
+ </View>
91
91
  );
92
92
  };
93
93
  ```
94
94
 
95
- When the colorScheme changes, `Appearance.setColorScheme` is automatically called to update the system theme.
96
-
97
95
 
98
96
  ## Internationalization
99
97
 
@@ -24,18 +24,3 @@ const MyComponent = () => {
24
24
  };
25
25
  ```
26
26
 
27
- ### Theme Toggle Example
28
-
29
- ```tsx
30
- import { useTheme } from '@ledgerhq/lumen-ui-rnative/styles';
31
-
32
- const ThemeToggle = () => {
33
- const { colorScheme, toggleColorScheme } = useTheme();
34
-
35
- return (
36
- <Button onPress={toggleColorScheme}>
37
- Current: {colorScheme}
38
- </Button>
39
- );
40
- };
41
- ```
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/lumen-ui-rnative",
3
- "version": "0.0.52",
3
+ "version": "0.0.53",
4
4
  "license": "Apache-2.0",
5
5
  "keywords": [
6
6
  "react-native",
@@ -33,7 +33,7 @@
33
33
  },
34
34
  "peerDependencies": {
35
35
  "@gorhom/bottom-sheet": "^5.0.0",
36
- "@ledgerhq/lumen-design-core": "0.0.40",
36
+ "@ledgerhq/lumen-design-core": "0.0.41",
37
37
  "react": "~18.3.1",
38
38
  "react-native": "~0.77.3",
39
39
  "react-native-reanimated": "^3.0.0",
@@ -0,0 +1,70 @@
1
+ import { SubheaderActionProps, SubheaderCountProps, SubheaderDescriptionProps, SubheaderInfoProps, SubheaderProps, SubheaderRowProps, SubheaderTitleProps } from './types';
2
+ /**
3
+ * Title component for the Subheader. Displays the main heading.
4
+ */
5
+ export declare const SubheaderTitle: ({ children }: SubheaderTitleProps) => import("react/jsx-runtime").JSX.Element;
6
+ /**
7
+ * Row component for the Subheader. Layout container to horizontally align title, count, hint, and action.
8
+ * Can optionally be interactive with an onPress handler.
9
+ */
10
+ export declare const SubheaderRow: ({ children, onPress, lx, style, ...props }: SubheaderRowProps) => import("react/jsx-runtime").JSX.Element;
11
+ /**
12
+ * Count component for the Subheader. Displays a formatted number.
13
+ */
14
+ export declare const SubheaderCount: ({ value, format }: SubheaderCountProps) => import("react/jsx-runtime").JSX.Element;
15
+ /**
16
+ * Info component for the Subheader. Displays an information icon that can be wrapped in a Tooltip or BottomSheet.
17
+ */
18
+ export declare const SubheaderInfo: ({ iconType, style, ...props }: SubheaderInfoProps) => import("react/jsx-runtime").JSX.Element;
19
+ /**
20
+ * ShowMore component for the Subheader. Displays a static chevron right icon to indicate expandable content.
21
+ * Position this after SubheaderCount and before other elements.
22
+ */
23
+ export declare const SubheaderShowMore: () => import("react/jsx-runtime").JSX.Element;
24
+ /**
25
+ * Description component for the Subheader. Displays descriptive text below the title row.
26
+ */
27
+ export declare const SubheaderDescription: ({ children, }: SubheaderDescriptionProps) => import("react/jsx-runtime").JSX.Element;
28
+ /**
29
+ * Action component for the Subheader. Displays an interactive text button.
30
+ * Automatically positions itself at the end of the row using marginLeft: 'auto'.
31
+ */
32
+ export declare const SubheaderAction: ({ children, onPress, }: SubheaderActionProps) => import("react/jsx-runtime").JSX.Element;
33
+ /**
34
+ * A subheader component for displaying section titles with optional count, hints, descriptions, and action elements.
35
+ * Uses a composable API where you explicitly nest sub-components to define the layout.
36
+ *
37
+ * @example
38
+ * // Simple subheader without row
39
+ * <Subheader>
40
+ * <SubheaderTitle>Section Title</SubheaderTitle>
41
+ * <SubheaderDescription>Description text</SubheaderDescription>
42
+ * </Subheader>
43
+ *
44
+ * @example
45
+ * // Subheader with row for horizontal layout
46
+ * <Subheader>
47
+ * <SubheaderRow>
48
+ * <SubheaderTitle>Section Title</SubheaderTitle>
49
+ * <SubheaderCount value={30} />
50
+ * <Tooltip>
51
+ * <TooltipTrigger>
52
+ * <SubheaderInfo />
53
+ * </TooltipTrigger>
54
+ * <TooltipContent content={<Text>Additional information</Text>} />
55
+ * </Tooltip>
56
+ * </SubheaderRow>
57
+ * <SubheaderDescription>Description text</SubheaderDescription>
58
+ * </Subheader>
59
+ *
60
+ * @example
61
+ * // Interactive row with action
62
+ * <Subheader>
63
+ * <SubheaderRow onPress={handleClick}>
64
+ * <SubheaderTitle>Accounts</SubheaderTitle>
65
+ * <SubheaderCount value={12} />
66
+ * </SubheaderRow>
67
+ * </Subheader>
68
+ */
69
+ export declare const Subheader: ({ lx, style, children, ...props }: SubheaderProps) => import("react/jsx-runtime").JSX.Element;
70
+ //# sourceMappingURL=Subheader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Subheader.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/Subheader/Subheader.tsx"],"names":[],"mappings":"AAKA,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,cAAc,mBAAmB,4CAmB/D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,4CAM1B,iBAAiB,4CA8BnB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,mBAAmB,mBAAmB,4CAiBpE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,+BAI3B,kBAAkB,4CAWpB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,+CAoB7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,eAElC,yBAAyB,4CAc3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,wBAG7B,oBAAoB,4CAuBtB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,SAAS,GAAI,mCAKvB,cAAc,4CAiBhB,CAAC"}
@@ -0,0 +1,161 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { StyleSheet, View } from 'react-native';
3
+ import { useStyleSheet } from '../../../styles';
4
+ import { ChevronRight, Information } from '../../Symbols';
5
+ import { InteractiveIcon } from '../InteractiveIcon';
6
+ import { Box, Pressable, Text } from '../Utility';
7
+ /**
8
+ * Title component for the Subheader. Displays the main heading.
9
+ */
10
+ export const SubheaderTitle = ({ children }) => {
11
+ const styles = useStyleSheet((t) => ({
12
+ title: StyleSheet.flatten([
13
+ t.typographies.heading4SemiBold,
14
+ {
15
+ flexShrink: 1,
16
+ color: t.colors.text.base,
17
+ },
18
+ ]),
19
+ }), []);
20
+ return (_jsx(Text, { style: styles.title, numberOfLines: 1, ellipsizeMode: 'tail', children: children }));
21
+ };
22
+ /**
23
+ * Row component for the Subheader. Layout container to horizontally align title, count, hint, and action.
24
+ * Can optionally be interactive with an onPress handler.
25
+ */
26
+ export const SubheaderRow = ({ children, onPress, lx = {}, style, ...props }) => {
27
+ const styles = useStyleSheet((t) => ({
28
+ container: StyleSheet.flatten([
29
+ {
30
+ width: '100%',
31
+ flexDirection: 'row',
32
+ alignItems: 'center',
33
+ gap: t.spacings.s4,
34
+ },
35
+ ]),
36
+ }), []);
37
+ const mergedStyle = StyleSheet.flatten([styles.container, style]);
38
+ if (onPress) {
39
+ return (_jsx(Pressable, { lx: lx, style: mergedStyle, onPress: onPress, ...props, children: children }));
40
+ }
41
+ return (_jsx(Box, { lx: lx, style: mergedStyle, ...props, children: children }));
42
+ };
43
+ /**
44
+ * Count component for the Subheader. Displays a formatted number.
45
+ */
46
+ export const SubheaderCount = ({ value, format }) => {
47
+ const formatted = format ? format(value) : `(${value})`;
48
+ const styles = useStyleSheet((t) => ({
49
+ count: StyleSheet.flatten([
50
+ t.typographies.body2,
51
+ {
52
+ flexShrink: 0,
53
+ color: t.colors.text.muted,
54
+ },
55
+ ]),
56
+ }), []);
57
+ return _jsx(Text, { style: styles.count, children: formatted });
58
+ };
59
+ /**
60
+ * Info component for the Subheader. Displays an information icon that can be wrapped in a Tooltip or BottomSheet.
61
+ */
62
+ export const SubheaderInfo = ({ iconType = 'stroked', style, ...props }) => {
63
+ return (_jsx(InteractiveIcon, { iconType: iconType, accessibilityLabel: 'More information', style: style, ...props, children: _jsx(Information, { size: 16 }) }));
64
+ };
65
+ /**
66
+ * ShowMore component for the Subheader. Displays a static chevron right icon to indicate expandable content.
67
+ * Position this after SubheaderCount and before other elements.
68
+ */
69
+ export const SubheaderShowMore = () => {
70
+ const styles = useStyleSheet((t) => ({
71
+ container: {
72
+ flexShrink: 0,
73
+ justifyContent: 'center',
74
+ alignItems: 'center',
75
+ },
76
+ icon: {
77
+ color: t.colors.text.muted,
78
+ },
79
+ }), []);
80
+ return (_jsx(View, { style: styles.container, children: _jsx(ChevronRight, { size: 16, style: styles.icon }) }));
81
+ };
82
+ /**
83
+ * Description component for the Subheader. Displays descriptive text below the title row.
84
+ */
85
+ export const SubheaderDescription = ({ children, }) => {
86
+ const styles = useStyleSheet((t) => ({
87
+ description: StyleSheet.flatten([
88
+ t.typographies.body3,
89
+ {
90
+ color: t.colors.text.muted,
91
+ },
92
+ ]),
93
+ }), []);
94
+ return _jsx(Text, { style: styles.description, children: children });
95
+ };
96
+ /**
97
+ * Action component for the Subheader. Displays an interactive text button.
98
+ * Automatically positions itself at the end of the row using marginLeft: 'auto'.
99
+ */
100
+ export const SubheaderAction = ({ children, onPress, }) => {
101
+ const styles = useStyleSheet((t) => ({
102
+ container: {
103
+ flexShrink: 0,
104
+ marginLeft: 'auto',
105
+ paddingLeft: t.spacings.s8,
106
+ },
107
+ text: StyleSheet.flatten([
108
+ t.typographies.body2,
109
+ {
110
+ color: t.colors.text.interactive,
111
+ },
112
+ ]),
113
+ }), []);
114
+ return (_jsx(Pressable, { onPress: onPress, style: styles.container, children: _jsx(Text, { style: styles.text, children: children }) }));
115
+ };
116
+ /**
117
+ * A subheader component for displaying section titles with optional count, hints, descriptions, and action elements.
118
+ * Uses a composable API where you explicitly nest sub-components to define the layout.
119
+ *
120
+ * @example
121
+ * // Simple subheader without row
122
+ * <Subheader>
123
+ * <SubheaderTitle>Section Title</SubheaderTitle>
124
+ * <SubheaderDescription>Description text</SubheaderDescription>
125
+ * </Subheader>
126
+ *
127
+ * @example
128
+ * // Subheader with row for horizontal layout
129
+ * <Subheader>
130
+ * <SubheaderRow>
131
+ * <SubheaderTitle>Section Title</SubheaderTitle>
132
+ * <SubheaderCount value={30} />
133
+ * <Tooltip>
134
+ * <TooltipTrigger>
135
+ * <SubheaderInfo />
136
+ * </TooltipTrigger>
137
+ * <TooltipContent content={<Text>Additional information</Text>} />
138
+ * </Tooltip>
139
+ * </SubheaderRow>
140
+ * <SubheaderDescription>Description text</SubheaderDescription>
141
+ * </Subheader>
142
+ *
143
+ * @example
144
+ * // Interactive row with action
145
+ * <Subheader>
146
+ * <SubheaderRow onPress={handleClick}>
147
+ * <SubheaderTitle>Accounts</SubheaderTitle>
148
+ * <SubheaderCount value={12} />
149
+ * </SubheaderRow>
150
+ * </Subheader>
151
+ */
152
+ export const Subheader = ({ lx = {}, style, children, ...props }) => {
153
+ const styles = useStyleSheet((t) => ({
154
+ container: {
155
+ width: '100%',
156
+ flexDirection: 'column',
157
+ gap: t.spacings.s4,
158
+ },
159
+ }), []);
160
+ return (_jsx(Box, { lx: lx, style: [styles.container, style], ...props, children: children }));
161
+ };
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-native';
2
+ import { Subheader } from './Subheader';
3
+ declare const meta: Meta<typeof Subheader>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Subheader>;
6
+ export declare const Base: Story;
7
+ export declare const InteractiveRow: Story;
8
+ export declare const WithInfoIcon: Story;
9
+ export declare const WithAction: Story;
10
+ //# sourceMappingURL=Subheader.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Subheader.stories.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/Subheader/Subheader.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAI9D,OAAO,EACL,SAAS,EAQV,MAAM,aAAa,CAAC;AAQrB,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,SAAS,CAmBhC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,CAAC;AAExC,eAAO,MAAM,IAAI,EAAE,KAYlB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAc5B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAmB1B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAcxB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { View, Text } from 'react-native';
3
+ import { Tooltip, TooltipTrigger, TooltipContent } from '../Tooltip';
4
+ import { Subheader, SubheaderRow, SubheaderTitle, SubheaderCount, SubheaderInfo, SubheaderShowMore, SubheaderDescription, SubheaderAction, } from './Subheader';
5
+ const Container = ({ children }) => (_jsx(View, { style: { padding: 8, backgroundColor: '#ffffff', width: '100%' }, children: children }));
6
+ const meta = {
7
+ component: Subheader,
8
+ title: 'Communication/Subheader',
9
+ subcomponents: {
10
+ SubheaderRow,
11
+ SubheaderTitle,
12
+ SubheaderDescription,
13
+ SubheaderCount,
14
+ SubheaderInfo,
15
+ SubheaderShowMore,
16
+ SubheaderAction,
17
+ },
18
+ decorators: [
19
+ (Story) => (_jsx(Container, { children: _jsx(Story, {}) })),
20
+ ],
21
+ };
22
+ export default meta;
23
+ export const Base = {
24
+ render: () => (_jsxs(Subheader, { children: [_jsx(SubheaderRow, { children: _jsx(SubheaderTitle, { children: "Section Title" }) }), _jsx(SubheaderDescription, { children: "This is a detailed description that provides additional context about this section." })] })),
25
+ };
26
+ export const InteractiveRow = {
27
+ render: () => (_jsxs(Subheader, { children: [_jsxs(SubheaderRow, { onPress: () => console.log('Row clicked'), children: [_jsx(SubheaderTitle, { children: "Accounts" }), _jsx(SubheaderCount, { value: 5 }), _jsx(SubheaderShowMore, {})] }), _jsx(SubheaderDescription, { children: "Interactive rows always include the chevron to indicate they lead to more content" })] })),
28
+ };
29
+ export const WithInfoIcon = {
30
+ render: () => (_jsxs(Subheader, { children: [_jsxs(SubheaderRow, { children: [_jsx(SubheaderTitle, { children: "Section with Info" }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { children: _jsx(SubheaderInfo, {}) }), _jsx(TooltipContent, { content: _jsx(Text, { children: "Additional information about this section" }) })] })] }), _jsx(SubheaderDescription, { children: "Use the info icon to provide contextual help or additional details" })] })),
31
+ };
32
+ export const WithAction = {
33
+ render: () => (_jsxs(Subheader, { children: [_jsxs(SubheaderRow, { children: [_jsx(SubheaderTitle, { children: "Recent Activity" }), _jsx(SubheaderAction, { onPress: () => console.log('View all'), children: "View all" })] }), _jsx(SubheaderDescription, { children: "Use actions for quick access to related functionality" })] })),
34
+ };
@@ -0,0 +1,3 @@
1
+ export { Subheader, SubheaderRow, SubheaderTitle, SubheaderCount, SubheaderInfo, SubheaderShowMore, SubheaderDescription, SubheaderAction, } from './Subheader';
2
+ export * from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/Subheader/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Subheader, SubheaderRow, SubheaderTitle, SubheaderCount, SubheaderInfo, SubheaderShowMore, SubheaderDescription, SubheaderAction, } from './Subheader';
2
+ export * from './types';
@@ -0,0 +1,67 @@
1
+ import { ViewProps } from 'react-native';
2
+ import { LumenViewStyle } from '../../../styles/types/lx.types';
3
+ export type SubheaderProps = {
4
+ /**
5
+ * The children of the subheader, which should include SubheaderRow, SubheaderTitle, SubheaderDescription, etc.
6
+ */
7
+ children?: React.ReactNode;
8
+ /**
9
+ * Style props using design tokens
10
+ */
11
+ lx?: LumenViewStyle;
12
+ } & Omit<ViewProps, 'children'>;
13
+ export type SubheaderRowProps = {
14
+ /**
15
+ * The children of the subheader row.
16
+ */
17
+ children: React.ReactNode;
18
+ /**
19
+ * Optional press handler to make the row interactive.
20
+ */
21
+ onPress?: () => void;
22
+ /**
23
+ * Style props using design tokens
24
+ */
25
+ lx?: LumenViewStyle;
26
+ } & Omit<ViewProps, 'children'>;
27
+ export type SubheaderTitleProps = {
28
+ /**
29
+ * The title text of the subheader.
30
+ */
31
+ children: string;
32
+ };
33
+ export type SubheaderCountProps = {
34
+ /**
35
+ * The count value to display.
36
+ */
37
+ value: number;
38
+ /**
39
+ * Optional formatter function to customize the display.
40
+ * Defaults to (n) => `(${n})`
41
+ */
42
+ format?: (value: number) => string;
43
+ };
44
+ export type SubheaderInfoProps = Omit<React.ComponentProps<typeof import('../InteractiveIcon').InteractiveIcon>, 'children' | 'iconType'> & {
45
+ /**
46
+ * The visual style of the icon button.
47
+ * Defaults to 'stroked'.
48
+ */
49
+ iconType?: 'filled' | 'stroked';
50
+ };
51
+ export type SubheaderDescriptionProps = {
52
+ /**
53
+ * The description text to display below the title row.
54
+ */
55
+ children: React.ReactNode;
56
+ };
57
+ export type SubheaderActionProps = {
58
+ /**
59
+ * The action text to display.
60
+ */
61
+ children: React.ReactNode;
62
+ /**
63
+ * Press handler for the action.
64
+ */
65
+ onPress: () => void;
66
+ };
67
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/Subheader/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;OAEG;IACH,EAAE,CAAC,EAAE,cAAc,CAAC;CACrB,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAEhC,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;OAEG;IACH,EAAE,CAAC,EAAE,cAAc,CAAC;CACrB,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAEhC,MAAM,MAAM,mBAAmB,GAAG;IAChC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,KAAK,CAAC,cAAc,CAAC,cAAc,oBAAoB,EAAE,eAAe,CAAC,EACzE,UAAU,GAAG,UAAU,CACxB,GAAG;IACF;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { FC } from 'react';
2
- import { ThemeProviderProps } from './ThemeProvider.types';
2
+ import { ThemeProviderProps } from './types';
3
3
  declare const ThemeProvider: FC<ThemeProviderProps>;
4
4
  export { ThemeProvider };
5
5
  //# sourceMappingURL=ThemeProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/ThemeProvider/ThemeProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAO3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAI3D,QAAA,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAiBzC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/ThemeProvider/ThemeProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAO3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAI7C,QAAA,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAiBzC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export * from './ThemeProvider';
2
- export * from './ThemeProvider.types';
2
+ export * from './types';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/ThemeProvider/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/ThemeProvider/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC"}
@@ -1,2 +1,2 @@
1
1
  export * from './ThemeProvider';
2
- export * from './ThemeProvider.types';
2
+ export * from './types';
@@ -18,4 +18,4 @@ export type ThemeProviderProps = PropsWithChildren & {
18
18
  */
19
19
  themes: LumenThemes;
20
20
  };
21
- //# sourceMappingURL=ThemeProvider.types.d.ts.map
21
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Components/ThemeProvider/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG;IACnD;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;;;OAIG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -13,6 +13,7 @@ export * from './ListItem';
13
13
  export * from './SearchInput';
14
14
  export * from './Select';
15
15
  export * from './Spot';
16
+ export * from './Subheader';
16
17
  export * from './Switch';
17
18
  export * from './Tag';
18
19
  export * from './Utility';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/Components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/Components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC"}
@@ -13,6 +13,7 @@ export * from './ListItem';
13
13
  export * from './SearchInput';
14
14
  export * from './Select';
15
15
  export * from './Spot';
16
+ export * from './Subheader';
16
17
  export * from './Switch';
17
18
  export * from './Tag';
18
19
  export * from './Utility';
@@ -0,0 +1,33 @@
1
+ import Svg from 'react-native-svg';
2
+ /**
3
+ * Asterisk icon component for React Native.
4
+ *
5
+ * This icon component is automatically generated from SVG files and uses the createIcon utility
6
+ * to create a consistent icon interface. It supports all standard SVG props (from react-native-svg)
7
+ * and additional size variants defined in the Icon component.
8
+ *
9
+ * @component
10
+ * @param {16 | 20 | 24 | 40 | 48 | 56} [size=24] - The size of the icon in pixels.
11
+ * @param {string} [color] - The color of the icon.
12
+ * @param {SVGProps} [...props] - All standard SVG element props (from react-native-svg).
13
+ *
14
+ * @example
15
+ * // Basic usage with default size (24px)
16
+ * import { Asterisk } from '@ledgerhq/lumen-ui-rnative/symbols';
17
+ *
18
+ * <Asterisk />
19
+ *
20
+ * @example
21
+ * // With custom size and style
22
+ * <Asterisk size={40} color="warning" lx={{ marginTop: 's4' }} />
23
+ *
24
+ * @example
25
+ * // Used within a Button component
26
+ * import { Button } from '@ledgerhq/lumen-ui-rnative';
27
+ *
28
+ * <Button icon={Asterisk} size="md">
29
+ * Click me
30
+ * </Button>
31
+ */
32
+ export declare const Asterisk: import("react").ForwardRefExoticComponent<Omit<import("../../Components/Icon").IconProps, "children"> & import("react").RefAttributes<Svg>>;
33
+ //# sourceMappingURL=Asterisk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Asterisk.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Symbols/Icons/Asterisk.tsx"],"names":[],"mappings":"AAAA,OAAO,GAAa,MAAM,kBAAkB,CAAC;AAG7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,QAAQ,6IAWpB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import Svg, { Path } from 'react-native-svg';
3
+ import createIcon from '../../Components/Icon/createIcon';
4
+ /**
5
+ * Asterisk icon component for React Native.
6
+ *
7
+ * This icon component is automatically generated from SVG files and uses the createIcon utility
8
+ * to create a consistent icon interface. It supports all standard SVG props (from react-native-svg)
9
+ * and additional size variants defined in the Icon component.
10
+ *
11
+ * @component
12
+ * @param {16 | 20 | 24 | 40 | 48 | 56} [size=24] - The size of the icon in pixels.
13
+ * @param {string} [color] - The color of the icon.
14
+ * @param {SVGProps} [...props] - All standard SVG element props (from react-native-svg).
15
+ *
16
+ * @example
17
+ * // Basic usage with default size (24px)
18
+ * import { Asterisk } from '@ledgerhq/lumen-ui-rnative/symbols';
19
+ *
20
+ * <Asterisk />
21
+ *
22
+ * @example
23
+ * // With custom size and style
24
+ * <Asterisk size={40} color="warning" lx={{ marginTop: 's4' }} />
25
+ *
26
+ * @example
27
+ * // Used within a Button component
28
+ * import { Button } from '@ledgerhq/lumen-ui-rnative';
29
+ *
30
+ * <Button icon={Asterisk} size="md">
31
+ * Click me
32
+ * </Button>
33
+ */
34
+ export const Asterisk = createIcon('Asterisk', _jsx(Svg, { width: 24, height: 24, fill: 'currentColor', viewBox: '0 0 16 16', children: _jsx(Path, { stroke: 'currentColor', strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 1.3, d: 'M2 7.99h12m-9 4.974 6-9.948m0 10L5 3.067' }) }));
@@ -31,4 +31,4 @@ import createIcon from '../../Components/Icon/createIcon';
31
31
  * Click me
32
32
  * </Button>
33
33
  */
34
- export const Bell = createIcon('Bell', _jsx(Svg, { width: 24, height: 24, fill: 'currentColor', viewBox: '0 0 16 16', children: _jsx(Path, { stroke: 'currentColor', strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 1.3, d: 'M6 12v.167c0 1.1.893 2 2 2 1.1 0 2-.9 2-2V12m2-2.833 1.133 1.133c.12.12.194.293.194.467v.553c0 .367-.3.667-.667.667H3.327a.664.664 0 0 1-.667-.667v-.56a.66.66 0 0 1 .193-.473l1.134-1.14V6.313c0-2.213 1.786-4 4-4 2.206 0 4 1.787 4 4z' }) }));
34
+ export const Bell = createIcon('Bell', _jsx(Svg, { width: 24, height: 24, fill: 'currentColor', viewBox: '0 0 16 16', children: _jsx(Path, { stroke: 'currentColor', strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 1.3, d: 'M6 11.427v.74c0 1.1.893 2 2 2 1.1 0 2-.9 2-2v-.727m2-2.273 1.133 1.133c.12.12.194.293.194.467v-.007c0 .367-.3.667-.667.667H3.327a.664.664 0 0 1-.667-.667.66.66 0 0 1 .193-.473l1.134-1.14V6.313c0-2.213 1.786-4 4-4 2.206 0 4 1.787 4 4z' }) }));
@@ -0,0 +1,33 @@
1
+ import Svg from 'react-native-svg';
2
+ /**
3
+ * BellFill icon component for React Native.
4
+ *
5
+ * This icon component is automatically generated from SVG files and uses the createIcon utility
6
+ * to create a consistent icon interface. It supports all standard SVG props (from react-native-svg)
7
+ * and additional size variants defined in the Icon component.
8
+ *
9
+ * @component
10
+ * @param {16 | 20 | 24 | 40 | 48 | 56} [size=24] - The size of the icon in pixels.
11
+ * @param {string} [color] - The color of the icon.
12
+ * @param {SVGProps} [...props] - All standard SVG element props (from react-native-svg).
13
+ *
14
+ * @example
15
+ * // Basic usage with default size (24px)
16
+ * import { BellFill } from '@ledgerhq/lumen-ui-rnative/symbols';
17
+ *
18
+ * <BellFill />
19
+ *
20
+ * @example
21
+ * // With custom size and style
22
+ * <BellFill size={40} color="warning" lx={{ marginTop: 's4' }} />
23
+ *
24
+ * @example
25
+ * // Used within a Button component
26
+ * import { Button } from '@ledgerhq/lumen-ui-rnative';
27
+ *
28
+ * <Button icon={BellFill} size="md">
29
+ * Click me
30
+ * </Button>
31
+ */
32
+ export declare const BellFill: import("react").ForwardRefExoticComponent<Omit<import("../../Components/Icon").IconProps, "children"> & import("react").RefAttributes<Svg>>;
33
+ //# sourceMappingURL=BellFill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BellFill.d.ts","sourceRoot":"","sources":["../../../../../src/lib/Symbols/Icons/BellFill.tsx"],"names":[],"mappings":"AAAA,OAAO,GAAa,MAAM,kBAAkB,CAAC;AAG7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,QAAQ,6IAQpB,CAAC"}